The Calibrator is a by-product of our work on Main-Memory Databases within the MonetDB project.
The Calibrator is freely available for download and usage, but we kindly ask all users to include a reference to the Calibrator's home page (http://www.cwi.nl/~manegold/Calibrator/) whenever they refer to the Calibrator or publish calibration results.
To compile the Calibrator on a Windows-System ('95, '98, 2000, NT),
AIX | 103 KB | executable (RISC System/6000 V3.1) or obj module not stripped |
IRIX | 62 KB | ELF 32-bit MSB mips-1 executable, MIPS R3000_BE, version 1, dynamically linked (uses shared libs), not stripped |
IRIX64 | 57 KB | ELF 32-bit N32 MSB mips-4 executable, MIPS R3000_BE, version 1, dynamically linked (uses shared libs), stripped |
Linux (i386) | 38 KB | ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), not stripped |
OSF1 | 65 KB | COFF format alpha executable paged dynamically linked not stripped - version 3.11-10 |
SunOS | 60 KB | ELF 32-bit MSB executable, SPARC, version 1, dynamically linked (uses shared libs), not stripped |
Win32 | 48 KB | MS Windows PE 32-bit Intel 80386 console executable not relocatable |
Calibrator v0.9e (by Stefan.Manegold@cwi.nl, http://www.cwi.nl/~manegold/) CPU loop + L1 access: 3.00 ns = 3 cy ( delay: 100.17 ns = 100 cy ) caches: level size linesize miss-latency replace-time 1 64 KB 64 bytes 8.42 ns = 8 cy 17.11 ns = 17 cy 2 320 KB 64 bytes 155.75 ns = 156 cy 146.38 ns = 146 cy TLBs: level #entries pagesize miss-latency 1 24 4 KB 5.14 ns = 5 cy 2 320 4 KB 25.06 ns = 25 cyThe "replace-time" is the penalty for a cache-miss on a busy bus, i.e., when each miss is immediately followed by the next one. The "miss-latency" is the penalty for a cache-miss on an idle bus, i.e., when there is a delay of ~100 cycles between two subsequent cache misses without any other bus traffic. On a PentiumIII and on the first Athlons, both values are equal. On the Thunderbird, for an L1 miss, "replace-time" it about twice as high as "miss-latency", probably due to the extended traffic caused by the exclusive L2 cache.
The main memory access latency is then just the sum of the miss-latencies of all cache levels.
Running
gnuplot [filename].cache-replace-time.gp
gnuplot [filename].cache-miss-latency.gp
gnuplot [filename].TLB-miss-latency.gp
creates the respective files with the plots. By default, these
gnuplot scripts generate PostScript files
[filename].cache-replace-time.ps
[filename].cache-miss-latency.ps
[filename].TLB-miss-latency.ps.
By commenting-out the terminal settings for PostScript and
un-commenting those for GIF in the .gp files, GIF files
[filename].cache-replace-time.gif
[filename].cache-miss-latency.gif
[filename].TLB-miss-latency.gif
can be created instead.
For Win32 users, there is
gnuplot for windows.
Mode of operation:
Unzip the file, and put the directory where
the wgnuplot.exe file is in your PATH.
To view the plots you produced with the Calibrator interactively,
rather than produce postscript output, uncomment the first two lines
the .gp files:
edit MYMACHINE.cache-replace-time.gp :
place # in front of: set term ...
place # in front of: set output ...
(similarly for MYMACHINE.cache-miss-latency.gp and MYMACHINE.TLB-miss-latency.gp ).
Then you can invoke gnuplot:
c:> wgnuplot
Inside the gnuplot prompt, you go to the directory where your
calibortor files are:
gnuplot> cd "c:\calibrator"
(note the double quotes).
Then load the command file to produce the plots:
gnuplot> load "MYMACHINE.cache-replace-time.gp"
Thanks to Kai Schmerer of ZDNet.de for providing me with some first result for a Pentium 4/1500 with Rambus as well as for an Athlon/1000 with DDR-SDRAM.
Of course, the same holds for anyone having (access to) a Pentium 4. I'd really like to know how the Pentium 4's caches compare to those of a PentiumIII or Athlon...
Stefan Manegold (Stefan.Manegold@cwi.nl)