Cache Memory Caches depend on the locality principle – if you access memory locations near to each other, then you will get better performance because the cache will pull in a bunch of nearby locations every time you access main memory. Assume that multi-dimensional arrays in C are stored in “row major order”, that is, the elements in each row are stored together   Example: int test[3][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }   Would be laid out in memory like: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15   Which of these two programs fragments (a or b) should have better cache performance? You need only answer “a” or “b” – no explanation needed.   // begin fragment a int big[100,1000]; for (i=0, i<100, i++) { for (j=0, j<999, j++) { big[i,j] += big[i,j+1]; } } // end fragment a     // begin fragment b int big[100,1000]; for (j=0, j<999, j++) { for (i=0, i<100, i++) { big[i,j] += big[i,j+1]; } } // end fragment b

Systems Architecture
7th Edition
ISBN:9781305080195
Author:Stephen D. Burd
Publisher:Stephen D. Burd
Chapter3: Data Representation
Section: Chapter Questions
Problem 13RQ: How is an array stored in main memory? How is a linked list stored in main memory? What are their...
icon
Related questions
Question

Cache Memory

Caches depend on the locality principle – if you access memory locations near to each other,

then you will get better performance because the cache will pull in a bunch of nearby locations

every time you access main memory. Assume that multi-dimensional arrays in C are stored in “row major order”, that is, the elements in each row are stored together

 

Example:

int test[3][5] = {

{1, 2, 3, 4, 5},

{6, 7, 8, 9, 10},

{11, 12, 13, 14, 15}

}

 

Would be laid out in memory like:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

Which of these two programs fragments (a or b) should have better cache performance?

You need only answer “a” or “b” – no explanation needed.

 

// begin fragment a

int big[100,1000];

for (i=0, i<100, i++) {

for (j=0, j<999, j++) {

big[i,j] += big[i,j+1];

}

}

// end fragment a

 

 

// begin fragment b

int big[100,1000];

for (j=0, j<999, j++) {

for (i=0, i<100, i++) {

big[i,j] += big[i,j+1];

}

}

// end fragment b

Caches depend on the locality principle – if you access memory locations near to each other,
then you will get better performance because the cache will pull in a bunch of nearby locations
every time you access main memory. Assume that multi-dimensional arrays in C are stored in
"row major order", that is, the elements in each row are stored together
Example:
int test[3][5]
{
{1, 2, 3, 4, 5},
{ 6, 7, 8, 9, 10},
{11, 12, 13, 14, 15}
}
Would be laid out in memory like:
中
1
4
6.
7
10
11
12
13
14
15
Which of these two programs fragments (a or b) should have better cache performance?
You need only answer "a" or “b" – no explanation needed.
-
// begin fragment a
int bigl100,1000];
for (i=0, i<100, i++) {
for (j=0, j<999, it {
big[inl += big[i,j+1];
}
// end fragment a
// begin fragment b
int big[100,1000];
for (j=0, j<999, itt) {
for (i=0, i<100, į++) {
big [iil += big[i,j+1];
}
}
// end fragment b
Transcribed Image Text:Caches depend on the locality principle – if you access memory locations near to each other, then you will get better performance because the cache will pull in a bunch of nearby locations every time you access main memory. Assume that multi-dimensional arrays in C are stored in "row major order", that is, the elements in each row are stored together Example: int test[3][5] { {1, 2, 3, 4, 5}, { 6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} } Would be laid out in memory like: 中 1 4 6. 7 10 11 12 13 14 15 Which of these two programs fragments (a or b) should have better cache performance? You need only answer "a" or “b" – no explanation needed. - // begin fragment a int bigl100,1000]; for (i=0, i<100, i++) { for (j=0, j<999, it { big[inl += big[i,j+1]; } // end fragment a // begin fragment b int big[100,1000]; for (j=0, j<999, itt) { for (i=0, i<100, į++) { big [iil += big[i,j+1]; } } // end fragment b
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Race Condition
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Systems Architecture
Systems Architecture
Computer Science
ISBN:
9781305080195
Author:
Stephen D. Burd
Publisher:
Cengage Learning