Transpozycja pamięci optymalizacji pamięci podręcznej: 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];
        }
    }
}

Tablica src zaczyna się od adresu 0, a tablica dst zaczyna się od adresu 0x10.

Pamięć podręczna danych L1, mapa bezpośrednia, przydział zapisu, rozmiar bloku 8 bajtów.

całkowity rozmiar pamięci podręcznej to 16 bajtów danych.

Co to jest hit lub miss przy każdym wpisie tablicy src i dst?

Odpowiedź to:

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

Jeśli całkowity rozmiar pamięci podręcznej wynosi 32 bajty danych, odpowiedź brzmi:

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

Nie jestem pewien obu rezultatów. Nie rozumiem pojęcia z tablicami i buforowaniem.

questionAnswers(1)

yourAnswerToTheQuestion