Массив оптимизации кэш-памяти Transpose: C

typedef int array[2][2];

void transpose(array dst, array src) {
    int i, j;
    for (j = 0; j < 2; j++) {
        for (i = 0; i < 2; i++) {
            dst[i][j] = src[j][i];
        }
    }
}

Массив src начинается с адреса 0, а массив dst начинается с адреса 0x10.

Кэш данных L1, прямое отображение, запись-распределение, размер блока 8 байт.

общий размер кэша составляет 16 байтов данных.

Что такое попадание или промах в каждой записи массива src и dst?

Ответ:

src: 
[0][0] -> miss,
[0][1] -> miss,
[1][0] -> miss,
[1][1] -> hit

dst:
[0][0] -> miss,
[0][1] -> miss,
[1][0] -> miss,
[1][1] -> miss

Если общий размер кэша составляет 32 байта данных, ответ:

src: 
[0][0] -> miss,
[0][1] -> hit,
[1][0] -> miss,
[1][1] -> hit

dst:
[0][0] -> miss,
[0][1] -> hit,
[1][0] -> miss,
[1][1] -> hit

Я не уверен в обоих результатах. Я неЯ действительно не понимаю концепцию с массивами и кэшированием.

Ответы на вопрос(1)

Ваш ответ на вопрос