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

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
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
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education