Salta al contenuto
Note per Studenti Esercizio 12 · campi dell'indirizzo per cache a due vie

Esercizio 12campi dell'indirizzo per cache a due vie

In questa pagina 5

Testo (dimensionamento iniziale dei tre esercizi svolti in aula nella lezione del 14 novembre 2016). Indirizzi di 12 bit, parola di 1 byte, cache associativa a due vie. Determinare l'ampiezza dei campi parola, insieme ed etichetta nei tre casi:

  1. cache di 8 byte, blocchi di 2 byte;
  2. cache di 16 byte, blocchi di 2 byte;
  3. cache di 32 byte, blocchi di 4 byte.

Metodo

  1. Campo parola: log⁡2\log_2(parole per blocco). Dipende dal numero di parole nel blocco, non dalla dimensione della parola.
  2. Linee = capacità / dimensione del blocco.
  3. Insiemi = linee / vie ("a due vie" = due linee per insieme, non due insiemi). Campo insieme = log⁡2\log_2(insiemi).
  4. Etichetta = bit dell'indirizzo − insieme − parola.

Se la suddivisione iniziale è sbagliata, tutto il resto dell'esercizio (hit, miss, contenuto della cache) lo è di conseguenza. 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 →.

Caso 1: 8 byte, blocchi di 2 byte

  • Parola: blocco di 2 byte = 2 parole → 1 bit.
  • Linee: 8/2=48/2 = 4; insiemi: 4/2=24/2 = 2 → 1 bit.
  • Etichetta: 12−1−1=12 - 1 - 1 = 10 bit.

Caso 2: 16 byte, blocchi di 2 byte

  • Parola: 1 bit.
  • Linee: 16/2=816/2 = 8; insiemi: 8/2=48/2 = 4 → 2 bit.
  • Etichetta: 12−2−1=12 - 2 - 1 = 9 bit.

Caso 3: 32 byte, blocchi di 4 byte

  • Parola: 4 parole → 2 bit.
  • Linee: 32/4=832/4 = 8; insiemi: 8/2=48/2 = 4 → 2 bit.
  • Etichetta: 12−2−2=12 - 2 - 2 = 8 bit.

Uso dei campi: un esempio

Nel caso 1, l'indirizzo 0x100 = 0001 0000 00000001\,0000\,0000: parola = bit 0 = 0 (primo byte del blocco), insieme = bit 1 = 0, etichetta = 0001 0000 000001\,0000\,00. In caso di miss si porta in cache l'intero blocco: il byte 0x100 e il successivo 0x101. Se invece il campo parola vale 1, il byte riferito è il secondo del blocco e va portato insieme al precedente.

Versione ripasso

Testo (dimensionamento iniziale dei tre esercizi svolti in aula nella lezione del 14 novembre 2016). Indirizzi di 12 bit, parola di 1 byte, cache associativa a due vie. Determinare l'ampiezza dei campi parola, insieme ed etichetta nei tre casi:

  1. cache di 8 byte, blocchi di 2 byte;
  2. cache di 16 byte, blocchi di 2 byte;
  3. cache di 32 byte, blocchi di 4 byte.

Metodo: parola =log⁡2= \log_2(parole per blocco); linee == capacità/blocco; insiemi == linee/2 (due linee per insieme, non due insiemi); etichetta =12−= 12 - insieme −- parola (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 →).

  1. 8 B, blocchi da 2 B: parola 1 bit; linee 8/2=48/2 = 4, insiemi 22 ⇒\Rightarrow 1 bit; etichetta 12−1−1=1012 - 1 - 1 = 10.
  2. 16 B, blocchi da 2 B: parola 1 bit; linee 8, insiemi 4 ⇒\Rightarrow 2 bit; etichetta 12−2−1=912 - 2 - 1 = 9.
  3. 32 B, blocchi da 4 B: parola 2 bit; linee 8, insiemi 4 ⇒\Rightarrow 2 bit; etichetta 12−2−2=812 - 2 - 2 = 8.

Esempio (caso 1): 0x100 ha parola 0, insieme 0, etichetta 0001 0000 000001\,0000\,00; in caso di miss arriva l'intero blocco (0x100 e 0x101).

Errori comuni: campo parola legato alla dimensione della parola e non al numero di parole nel blocco; due vie scambiate per due insiemi.

Esercizi su questo argomento

Lezioni in cui compare

Teoria collegata