Quiz 6

Assume the following 10-bit address sequence generated by the microprocessor: The cache uses 4 bytes per block. Assume a 2-way set associative cache design that uses the LRU algorithm (with a cache that can hold a total of 4 blocks). Assume that the cache is initially empty. Determine which memory accesses will result with a miss. TAG, SET, BYTE OFFSET fields in the table below are given for you to work on the answer. (4 wrong answers will cancel 1 right answer). (8pts)

int i;

int a[1024*1024];

int x=0;

for(i=0;i<1024;i++)

{

x+=a[i]+a[1024*i];

}

Consider the code snippet in code above. Suppose that it is executed on a system with a 2-way set

associative 16KB data cache with 32-byte blocks, 32-bit words, and an LRU replacement policy.

Assume that int is word-sized. Also assume that the address of a is 0x0, that i and x are in registers, and

that the cache is initially empty. How many data cache misses are there? How many hits are there?

The number of sets in the cache = (16 * 210) /(2*32) = 256

Since a word size is 4 bytes, int is word sized and the size of a cache block is 32 bytes, the number of

ints that would fit in a cache block is 8.

Therefore all the ints in a from a[0] to a[1023] map to the one of the cache lines of the sets 0 to 127,

while all the ints in a from a[1024] to a[1024*2 -1] map to the sets 128 to 255. Similarly the array

elements a[1024*2] to a[1024*3-1] map to cache lines of sets 0 to 127, a[1024*3] to a[1024*4 – 1] map

to cache lines 128 to 255 and so on.

In the loop, every time a[i] is accessed for i being a multiple of 8 would be a miss. There the number of

misses due to a[i] accesses inside the loop is 1024/8 = 128. The number of hits is 512.

Now all accesses to a[1024*i] within the loop are misses. This is because map alternately to sets 0 and

128 consecutively where there are cold misses the first time they are referenced.

The total number of misses = 1024 + 128 = 1062

The total number of hits = 512.

Consider the following cache:

·  block size: 64 Bytes

·  4-way set associative

·  256 blocks

·  Write Back with Dirty Bit

·  Valid Bit

·  Random Replacement strategy: A new block is always written to a random block position in the corresponding set.

·  32-bit address

·  32bit data

a) How many Tag comparisons are done for a cache access in a set? (4 points)

Solution: 4

b) Find the number of tag, index and offset bits. (4 points)

Solution: Offset: 6 Index: 6 Tag: 20

c) Find the total size of cache. Show your work. (4 points)

Solution: 64*4*(20+1+1+32)

d) How is the set number calculated for this cache configuration? (3 points)

Solution: Set number = block number modulo 64