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.