Author: Robert Hyatt
Date: 07:23:21 11/30/98
Go up one level in this thread
On November 30, 1998 at 03:03:18, Tom Kerrigan wrote: >On November 30, 1998 at 02:07:26, David Blackman wrote: > >>If it fits in 8 bits, use an 8 bit data type. You might want to hide >>it in a typedef in case you have to change the type later on. >>Reducing memory bandwidth and fitting more useful information in cache >>is a big win on modern CPUs. > >No. > >It takes time to divine 8 bits from the 32 bits that most modern CPUs work with. > >With small arrays, using 32 bit elements will be a performance win. How much >depends on how much the arrays are accessed, though... > >-Tom this really depends. I did a *lot* of benchmarking in Crafty, and found that on intel platforms, where memory bandwidth is *very low*, that packing things together is a win... because you are maximizing cache hits, *not* number of instructions. I'd much rather have to do the equivalent of a shift/and to extract 8 bits than to have to wait 20-40 clock cycles for a new word to trickle in from main memory. Best performance hint for current microprocessors (of any type) is to do what you can to minimize memory traffic. If you pack 4 bytes together in a single word (actually you should think 32 byte chunks here since a cache line is 32 bytes and it is filled at one burst) you should try to be sure that these "pieces" are used relatively closely to each other (in time) so that the cache line "pre-fetch" will produce data that is useful. On a Cray, I would use words, because I have essentially infinite memory bandwidth. Took a while to get used to the tiny soda straw between the cpu and memory on the microprocessor machines after using an aquaduct on the Cray for so long. :)
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.