Esercizio 20campi dell'indirizzo e capacità di una cache
In questa pagina 7
Testo (quattro quesiti a risposta multipla di esempi di compitino di Architettura degli Elaboratori, UniPD, a.a. 2008-09 e 2010-11; i temi sono per un corso con architettura MIPS ma i quesiti sulla cache sono indipendenti dall'architettura). Teoria: Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →.
A. Una cache set-associativa a 4 vie da 16 MB è inserita in una gerarchia con una memoria centrale di 256 MB suddivisa in 524 288 blocchi. Il formato degli indirizzi della memoria centrale è:
- a) etichetta 11 bit, set 10 bit, parola 7;
- b) etichetta 7 bit, set 11 bit, parola 10;
- c) etichetta 9 bit, set 10 bit, parola 9;
- d) etichetta 6 bit, set 13 bit, parola 9;
- e) nessuna delle precedenti.
B. Una cache da 256 KB ad associazione diretta lavora con una memoria centrale di 256 MB, indirizzabile al byte. Le locazioni di indirizzi (esadecimali) 533ACFD e 90FAF1F possono essere caricate nella stessa linea se la dimensione del blocco è di: a) 1 KB; b) 128 B; c) 512 B; d) 256 B; e) nessuna delle precedenti.
C. Una cache set-associativa a 4 vie da 8 MB, con linee da 2 KB, è inserita in una gerarchia con una memoria centrale suddivisa in blocchi (indirizzamento al singolo byte). Il formato degli indirizzi è: a) etichetta 10, set 10, parola 11; b) etichetta 10, set 11, parola 10; c) etichetta 9, set 11, parola 10; d) etichetta 11, set 9, parola 11; e) nessuna delle precedenti.
D. Una cache da 256 MB con associazione a gruppi a 256 vie e linee da 8 KB ha il campo etichetta di 12 bit. Qual è la dimensione massima (in byte) di memoria principale che può gestire? a) 32 768 MB; b) 4096 MB; c) 524 288 KB; d) 256 MB; e) nessuna delle precedenti.
Metodo
Per una cache con capacità , linee da byte e vie, con memoria indirizzata al byte:
I bit dell'indirizzo sono . La dimensione del blocco è la dimensione della linea. Vedi Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache → e gli esempi in Esercizio 12 · campi dell'indirizzo per cache a due vie.
A. Memoria da 256 MB in 524 288 blocchi
- Indirizzo: → 28 bit.
- Blocco: B → parola 9 bit.
- Linee: .
- Insiemi: → set 13 bit.
- Etichetta: bit.
Risposta d: etichetta 6, set 13, parola 9.
B. Due indirizzi nella stessa linea (associazione diretta)
Con blocco da byte la linea è nei bit tra il campo parola e l'etichetta. La cache ha byte: la linea è identificata dai bit dell'indirizzo (gli altri bit alti sono l'etichetta). I due indirizzi, in binario su 28 bit:
533ACFD = 0101 0011 0011 1010 1100 1111 1101
90FAF1F = 1001 0000 1111 1010 1111 0001 1111I bit (otto bit) sono uguali nei due indirizzi: 11101011 (EB in esadecimale). Con blocchi da 1 KB () il campo linea è proprio quello (8 bit: linee), perciò i due indirizzi vanno nella stessa linea 235, con etichette diverse (0x14C e 0x243): si scacciano a vicenda. Con blocchi più piccoli il campo linea comprende anche i bit 9…, che nei due indirizzi sono diversi: linee diverse (128 B: linee 1881 e 1886; 512 B: 470 e 471; 256 B: 940 e 943).
Risposta a (1 KB).
C. Cache da 8 MB a 4 vie con linee da 2 KB
- Blocco = linea = 2 KB = → parola 11 bit.
- Memoria: blocchi B B → 31 bit di indirizzo.
- Linee: ; insiemi: → set 10 bit.
- Etichetta: bit.
Risposta a: etichetta 10, set 10, parola 11.
D. Memoria massima gestita da una cache a 256 vie
- Linee: .
- Insiemi: → set 7 bit; parola: → 13 bit.
- Con etichetta di 12 bit l'indirizzo ha bit: memoria massima B MB.
Risposta b.
Verifica
from math import log2
def campi(cache, linea, vie, bit_indirizzo):
linee = cache // linea
insiemi = linee // vie
parola = int(log2(linea))
set_ = int(log2(insiemi))
return bit_indirizzo - set_ - parola, set_, parola # etichetta, set, parola
MB, KB = 2 ** 20, 2 ** 10
blocco = 256 * MB // 524288 # A
print(blocco, campi(16 * MB, blocco, 4, 28)) # 512 (6, 13, 9)
print(campi(8 * MB, 2 * KB, 4, 31)) # C: (10, 10, 11)
linee = 256 * MB // (8 * KB) # D
insiemi = linee // 256
print(12 + int(log2(insiemi)) + 13, "bit ->", 2 ** (12 + int(log2(insiemi)) + 13) // MB, "MB") # 32 bit -> 4096 MB
a, b = 0x533ACFD, 0x90FAF1F # B
for B in (1024, 128, 512, 256):
linee = 256 * KB // B
w = int(log2(B))
print(B, (a >> w) % linee, (b >> w) % linee) # 1024: 235 235 (stessa linea); gli altri: linee diverseErrori comuni
- Dividere la capacità della cache per le vie prima di dividere per la dimensione della linea (o viceversa): si ottengono insiemi dividendo il numero di linee per le vie.
- Usare 32 bit di indirizzo senza ricavarli dalla dimensione della memoria.
- Confondere il blocco di memoria (la memoria è divisa in blocchi) con la linea di cache (che contiene un blocco): hanno la stessa dimensione.
- Nell'associazione diretta cercare la stessa etichetta: due indirizzi nella stessa linea hanno etichette diverse (altrimenti sarebbero nello stesso blocco).
Versione ripasso
Quattro quesiti di esempi di compitino (UniPD, a.a. 2008-09 e 2010-11). Teoria: Memoria cacheBlocchi, linee ed etichette; scomposizione dell'indirizzo; associazione diretta, completamente associativa e associativa a insiemi con calcolo dei campi; politiche di rimpiazzo (LRU, FIFO, casuale); politiche di scrittura (write-through, write-back con bit sporco, write-allocate); dimensione del blocco; cache multilivello e separate; come ridurre i miss; quesiti sui campi dell'indirizzo.Memoria cache →.
Metodo: linee ; insiemi linee; parola ; set insiemi; etichetta bit dell'indirizzo set parola; bit dell'indirizzo (memoria).
- A. 256 MB in 524 288 blocchi: indirizzo 28 bit, blocco B (parola 9); 16 MB/512 B linee, a 4 vie insiemi (set 13); etichetta → d.
- B. Mappatura diretta 256 KB (): due indirizzi stanno nella stessa linea se i bit coincidono; con KB i bit 17…10 sono uguali (linea 235, etichette
14Ce243); con 128/256/512 B le linee differiscono → a. - C. Linea 2 KB (parola 11), memoria (31 bit); linee, 1024 insiemi (set 10); etichetta → a.
- D. linee, 128 insiemi (set 7), parola 13: indirizzo bit → 4096 MB → b.
Errori comuni: insiemi = capacità/vie senza dividere per la linea; bit di indirizzo non ricavati dalla memoria; due indirizzi nella stessa linea hanno etichette diverse.