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.Optymalizacja pamięci podręcznej Transpozycja macierzy: C
Pamięć podręczna danych L1, bezpośrednia mapa, przypisanie przydziału do zapisu, rozmiar bloku 8 bajtów.
Łączny rozmiar pamięci podręcznej wynosi 16 bajtów danych.
Co jest hitem na każdym wpisie tablicy src i dst?
Odpowiedź brzmi:
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 bufor powierzchnia wynosi 32 bajtów 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
jestem pewien obu wyników. Naprawdę nie rozumiem pojęcia z tablicami i buforowaniem.