tlb - TLB size and latency benchmark
tlb [ -L <line size> ] [ -M <len> ] [ -W <warmups> ] [ -N <repetitions>
tlb tries to determine the size, in pages, of the TLB. The largest
amount of memory it will examine is len bytes.
tlb compares the memory latency for two different pointer chains. The
two chains occupy the same amount of cache space, but they stress the
memory subsystem differently. The first chain accesses one word per
page, while the second chain randomly jumps through all the lines on a
page before jumping to the next page. When all of the pointers reside
in the cache (which is the usual case), and all of the pages for the
first chain reside in the TLB, then the average memory latencies should
be identical. Assuming there is a fixed size TLB, then at some point
the number of pages accessed by the first page will be larger than the
TLB. At this point the average latency for each memory access for the
first chain will be a cache hit plus some fraction of a TLB miss.
Once the TLB boundary is located tlb reports the TLB miss latency as
the TLB latency for twice as many pages as the TLB can hold.
tlb is an experimental benchmark, but it seems to work well on most
systems. However, if a processor has a TLB hierarchy tlb only finds
the top level TLB.
lmbench(8), line(8), cache(8), par_mem(8).
Carl Staelin and Larry McVoy
Comments, suggestions, and bug reports are always welcome.
(c)2000 Carl Staelin and Larry McVoy$Date$