Indirizzabile byte vs indirizzabile Word

Sto cercando di capire la differenza tra indirizzamento byte e indirizzamento parola.

Ununità di memoria cache set associativa a 4 vie con una capacità di 16 KB viene costruita utilizzando una dimensione di blocco di 8 parole. La lunghezza della parola è di 32 bit. La dimensione dello spazio degli indirizzi fisici è di 4 GB.

Numero di set nella cache $ = (16 * 1024) / (4 * 8 * 4) = 2 ^ 7 $

Se viene utilizzato lindirizzamento di parole:

Offset blocco $ = 3 \ bits $

Poiché PAS è $ 4 \ GB $ , il numero totale di indirizzi = $ 2 ^ {32} / 2 ^ 2 = 2 ^ {30} $

Quindi, bit di indirizzo totali $ = 30 \ bits $

Struttura dellindirizzo:

Bit del tag: $ 20 \ bits $
Imposta i bit: $ 7 \ bits $
Bit offset di blocco: $ 3 \ bits $

Ora, supponiamo che la CPU voglia accedere al 3 ° byte di una parola particolare.

  1. Il controller della cache utilizzerà il campo set $ 7 \ bits $ per indicizzare in un set e quindi confrontando il campo tag $ 20 \ bits $ più alto con tutti i $ 4 $ blocchi nel set. Se viene trovata una corrispondenza, si verifica un riscontro nella cache e loffset del blocco $ 3 \ bits $ inferiore per mettere una delle parole fuori dal $ 8 $ parole in uno dei registri di uso generale. La CPU quindi estrae il terzo byte dalla parola ed esegue loperazione.
  2. Se i tag non hanno corrispondenza, si verifica un errore di cache, viene inviato un segnale di lettura della memoria e, a causa della località spaziale di riferimento, un blocco contenente il parola viene trasferita nella cache.

Se la CPU è indirizzabile a byte:

Bit di indirizzo totali $ = 32 $

Struttura indirizzo: bit di tag: $ 20 \ bits $
Imposta bit: $ 7 \ bits $
Bit offset di blocco: $ 5 \ bits $

Se la CPU vuole accedere al terzo byte di un parola:

  1. Come nel passaggio 1 della parola indirizzabile, ma la CPU ora può indirizzare direttamente il 3 ° byte della parola, utilizzando il $ 2 \ bit $ offset di byte. Tuttavia, sono confuso su come ciò potrebbe accadere. Poiché la dimensione del registro della CPU ha una larghezza di 1 parola, simile allindirizzamento della parola, una parola delle 8 parole nel blocco verrà trasferita al registro. Ma come farebbe il passaggio di “estrazione di byte” qui è più semplice? E perché lo chiamiamo indirizzamento di byte se stiamo ancora indirizzando effettivamente una parola?
  2. Come nel passaggio 2 dellindirizzamento di parole. Il blocco di dati verrà trasferito dalla memoria alla cache in caso di cache mancante.

Inoltre, questa risposta dice che la memoria fisica è sempre byte indirizzabile. Ora, qual è la differenza tra indirizzabilità della memoria e indirizzabilità dellarchitettura della CPU?

Risposta

Indirizzamento parola significa che il numero di righe nel bus indirizzi nel processore è inferiore al numero di bit nella parola stessa.

Diciamo di avere una parola di 4 byte. (spazio indirizzo a 32 bit)

Se questa macchina è un indirizzo byteab le, il bus degli indirizzi della CPU avrà 32 linee, che le consentono di accedere a ogni byte in memoria.

Se questa macchina è indirizzabile a parole, il bus degli indirizzi della CPU avrà 30 linee ( $ 32 – log_ {2} 4 = 30 $ ), che gli consente di accedere alla memoria SOLO in parole / blocchi di 4 byte e anche quello da indirizzi che sono un multiplo della dimensione della parola.

Ora, se chiedi alla CPU di recuperare un byte da un particolare indirizzo, prima lascerà cadere i 2 bit meno significativi (per drop intendo sovrascriverli con 0 “) dellindirizzo, prendi una parola dallindirizzo risultante e restituisce un byte utilizzando i 2 bit meno significativi come offset allinterno della parola recuperata.

Ciò fa aumentare il tempo di accesso alla memoria, poiché la CPU deve dedicare più tempo alla modifica dellindirizzo e allelaborazione la parola recuperata. Ma aiuta anche a ridurre il costo dellhardware poiché la complessità dei circuiti è ridotta a causa della riduzione delle linee del bus di indirizzo.

Tuttavia, questo sovraccarico non si verifica mai in una macchina indirizzabile a byte, quindi “byte estrarre “è più facile.

Commenti

  • Capisco cosa stai dicendo ‘. Ma cosa ‘ accadrà in caso di indirizzamento di byte? Supponiamo che la CPU necessiti del 3 ° byte della parola. Invierà lindirizzo a 32 bit con i 2 bit significativi almeno impostati su 10, giusto t?Ma allora come memorizzerà il byte dato che utilizza un registro di 1 parola di larghezza? Hai vinto ‘ t la CPU in questo caso recupera anche la parola dalla cache e la memorizza nel ‘ registro?
  • Per la prima domanda: le CPU con indirizzamento byte hanno istruzioni di scrittura separate in base alla dimensione dei dati da scrivere. Uno per un byte, uno per un doppio byte, uno per un quad byte, uno per una parola, ecc. (In realtà ogni CPU ha istruzioni di scrittura separate ciascuna per le varie dimensioni supportate di dati da scrivere) Per quanto riguarda la scrittura di byte, il il byte da scrivere viene solitamente memorizzato negli 8 LSB del registro, quindi viene eseguita listruzione di scrittura per un byte. Questo fa sì che SOLO gli 8 bit LSB del registro vengano caricati sul bus dati e solo un byte allindirizzo in memoria viene modificato.
  • Non lho fatto ‘ t capire la tua seconda domanda. Potresti approfondire.
  • Suppongo che la stessa cosa accada per la lettura di un byte in una macchina indirizzabile a byte, giusto? Ad esempio, lascia che ‘ dica che ‘ è un array di caratteri char arr[10] e la CPU vuole leggere il terzo carattere, ad esempio arr[2]. Quindi, dopo aver effettuato laccesso al byte utilizzando lindirizzo a 32 bit, lo memorizzerà negli 8 LSB del registro. Ma nel caso della parola indirizzabile, la CPU calcolerà prima lindirizzo della parola a cui appartiene il 3 ° byte (cioè sovrascriverà i 2 LSB con 0) e recupererà la parola in essa ‘ registro di s. Dopodiché utilizzerà loffset di byte per ottenere il byte richiesto. È corretto?
  • Molte grazie. Ti chiedo di mettere tutti questi insieme nella risposta originale in modo che possa aiutare qualsiasi lettore futuro.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *