Performance Analysis of Cache Replacement Policies

 

 

Abstract

Here, we present the results of a study aimed to compare performance of different cache replacement policies such as Random, Round-Robin, LRU (Least Recently Used) and PLRU (Pseudo-LRU). As a measure of performance we use functional cache miss ratios and related statistics. Data is collected using a modified version of the SimpleScalar toolset (http://www.simplescalar.org/) driven by selected benchmarks from the SPEC CPU2000 (http://www.spec.org/osg/cpu2000/) and MiBench (http://www.eecs.umich.edu/mibench/) suites.


Contents

Top of page


Methodology

All data have been collected with simulators sim-cache and sim-cheetah from the Alpha version of the Simplescalar toolset, version 3.0b. We have implemented the following changes in the simulators. An additional command option allows printing various statistics every N executed instructions, where N is the user specified number of instructions (-logfile stats.txt –perinst N). We have adapted command options to allow user to specify the number of instructions to be skipped in simulation (-fastfwd 500M) and the number of instructions to be simulated (–max:inst 500M). Finally, the sim-cache simulator has been modified to support pseudo-LRU replacement policies, tree-based PLRU, PLRU-T, and MRU-based PLRU, PLRU-M, as well as other sub-optimal techniques. In all simulations we skipped first 500 million instructions and simulated the execution of the next 500 million instructions. 
Data are collected for first level data cache memory (L1D) and second level unified cache memory (L2U). In our simulations we have used reference input set for all SPEC CPU2000 benchmarks and large input set for MiBench benchmarks. All L1D and L2U cache configurations has 32B blocks. 

Top of page


Benchmarks Simulated

We have collected data for selected benchmarks from SPEC CPU2000 and MiBench suits. The following tables give the list of all applications from the SPEC CPU2000 and MiBench suits and whether we have simulated them or not (on October 10).

SPEC CPU2000

Benchmark

Language

Type

Category

L1D

L2U

 

 

 

 

 

 

164.gzip

C

Integer

Compression

No

No

175.vpr

C

Integer

FPGA Circuit Placement and Routing

Yes

Yes

176.gcc

C

Integer

C Compiler

Yes

Yes

181.mcf

C

Integer

Combinatorial Optimization

No

No

186.crafty

C

Integer

Game Playing: Chess

Yes

No

197.parser

C

Integer

Word processing

Yes

Yes

252.eon

C++

Integer

Computer Visualization

Yes

Yes

253.perlbmk

C

Integer

PERL Programming Language

Yes

Yes

254.gap

C

Integer

Group Theory, Interpreter

No

No

255.vortex

C

Integer

Object-oriented Database

Yes

Yes

256.bzip2

C

Integer

Compression

No

No

300.twolf

C

Integer

Place and Route Simulator (CAE)

Yes

Yes

 

 

 

 

 

 

168.wupwise

Fortran77

Floating-Point

Physics, Quantum Chromodynamics

No

No

171.swim

Fortran77

Floating-Point

Shallow Water Modeling

No

No

172.mgrid

Fortran77

Floating-Point

Multi-grid Solver: 3D Potential Field

Yes

Yes

173.applu

Fortran77

Floating-Point

Parabolic/Elliptic Partial Diff. Eqns

No

No

177.mesa

C

Floating-Point

3-D Graphics Library

No

No

178.galgel

Fortran90

Floating-Point

Computational Fluid Dynamics

No

No

179.art

C

Floating-Point

Image Recognition / Neural Nets

Yes

No

183.equake

C

Floating-Point

Seismic Wave Propagation

Yes

No

187.facerec

Fortran90

Floating-Point

Image Processing: Face Recognition

No

No

188.ammp

C

Floating-Point

Computational Chemistry

Yes

No

189.lucas

Fortran90

Floating-Point

Number Theory / Primality Testing

No

No

191.fma3d

Fortran90

Floating-Point

Finite-Element Crash Simulation

Yes

No

200.sixtrack

Fortran77

Floating-Point

High Energy Nuclear Physics Accelerator Design

No

Yes

301.apsi

Fortran77

Floating-Point

Meteorology: Pollutant Distribution

Yes

Yes

 

MiBench

Benchmark

Language

Type

Category

L1D

Automotive

 

 

 

 

basicmath

C

Integer

Simple Math calculations

 

bitcount

C

Integer

Bit manipulation

 

qsort

C

Integer

Quick sort of strings

 

susan

C

Integer

Image recognition

 

Consumer

 

 

 

 

jpeg enc.

C

Integer

Image compression

 

jpeg dec.

C

Integer

Image decompression

 

lame

C

Integer 
(some Floating-Point)

MP3 encoder

 

mad

C

Integer

MPEG audio decoder

 

tiff2bw

C

Integer

Convert a color TIFF to black-white image

 

tiff2rgba

C

Integer

Convert a color TIFF to RGB color image

 

 

 

 

 

 

Office

 

 

 

 

ghostscript 

C

Integer

Postscript language interpreter

 

ispell

C

Integer

Spell checker

 

rsynth

C

Integer 
(some Floating-Point)

Text-to-speech synthesis

 

sphinx

C

Integer

Speech decoder

 

stringsearch

C

Integer

Search words

 

 

 

 

 

 

Network

 

 

 

 

dijkstra

C

Integer

Shortest path problem

 

patricia

C

Integer

Routing using reduced trees

 

 

 

 

 

 

Security

 

 

 

 

blowfish enc

C

Integer

Block encryption

 

blowfish dec

C

Integer

Block decryption

 

pgp

C

Integer

PGP public key encryption

 

rijandel

C

Integer

Block encryption/decryption

 

sha

C

Integer

Exchange of cryptographic keys

 

 

 

 

 

 

Telecomm

 

 

 

 

CRC32

C

Integer

Cyclic Redundancy Check

 

FFT

C

Integer
(some Floating-Point)

Fast Fourier Transform

 

IFFT

C

Integer
(some Floating-Point)

Inverse FFT

 

ADPCM enc.

C

Integer

Adaptive Pulse Code Modulation encoder

 

ADPCM dec.

C

Integer

Adaptive Pulse Code Modulation decoder

 

GSM enc.

C

Integer

Voice Encoding

 

GSM dec.

C

Integer

Voice Decoding

 

 

Top of page


Miss Ratio Tables

L1D Miss Ratio Tables for Selected SPEC CPU2000 Integer Benchmarks

Benchmark

Input

Table

 

 

 

175.vpr

 

175.vpr.l1d.tab

176.gcc

 scilab.c

176.gcc.l1d.tab

186.crafty

 

186.crafty.l1d.tab

197.parser

 

197.parser.l1d.tab

252.eon

 

252.eon.l1d.tab

253.perlbmk

 

253.perlbmk.l1d.tab

255.vortex

 

255.vortex.l1d.tab

300.twolf

 

300.twolf.l1d.tab

 

L1D Miss Ratio Tables for selected SPEC CPU2000 Floating-Point Benchmarks

Benchmark

Input

Table

172.mgrid

 

172.mgrid.l1d.tab

183.equake

 

183.equake.l1d.tab

188.ammp

 

188.ammp.l1d.tab

191.fma3d

 

191.fma3d.l1d.tab

200.sixtrack

 

200.sixtrack.l1d.tab

301.apsi

 

301.apsi.l1d.tab

 

 

Top of page


Related Work


Publications

  • H. Al-Zoubi, Aleksandar Milenkovic, Milena Milenkovic, “Performance Evaluation of Cache Replacement Policies for the SPEC CPU2000 Benchmark Suite,” in the Proceedings of the 42nd ACM Southeast Conference, April 2-3, 2004, Huntsville, AL, pp. 267-272.
    [pdf]

Top of page


Disclaimer

Data in this directory is correct to the best of our knowledge. However, we provide it, *AS IS* without an expressed or implied warranty, and we accept no responsibility for the consequences of the use or misuse of this data.

Top of page


Revision History

  • October 2002: Version 0.1 --First pre-release

Top of page


Acknowledgements

  • This work was in part supported by UAH research Mini-grant.
  • Special thanks to Mr. Dennis Hite for his help in administering the machines.

Top of page