Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Assume that the 2-D integer array you allocated starts at address 0x40000000 in

ID: 3810412 • Letter: A

Question

Assume that the 2-D integer array you allocated starts at address 0x40000000 in memory, the size of an integer is 4 bytes, D-cache block size is 64 bytes and the D-cache is initially empty. As you read the integers in the 2-D array one-by-one, starting with element array[0,0], how many D-cache misses will you see for reading the first 10 integers in case of (to be answered without running pin):

cache2Drows (row-wise ordering) with hit ratio of 0.9911:

cache2Dcols (column-wise ordering) with hit ratio of 0.8748:

Explanation / Answer

Given D-cache block size is = 64 bytes

                Size of integer is = 4 bytes

         Number of integers in one block is = 64/4 =16.

         Given a 2 D array and it is starting with element array[0,0].

a) cache2Drows (row-wise ordering)

              In this case all the 10 integers from array[0,0] to array[0,10] can be

              stored in 1 block.

              As cache is initially empty , this block has to be transfered from

              Main Memory to Cache.

              Hence Number of Misses after reading first 10 integers is = 1.

b) cache2Dcols (column-wise ordering)

        In this case all the 10 integers from array[0,0] to array[0,10] cannot be

        stored in 1 block as it is column-wise ordering.

        In 1st block elements from array[0,0] to array[15,0] this will be one cache miss for array[0,0]

        in the same way for 10 elements number of misses is = 10.