Dubbio sull'annosa questione dei bit di offset
Scusate se pongo una domanda su un argomento più volte discusso, tuttavia ho un dubbio sullo svolgimento di un esercizio. L'esercizio in questione è il primo dell'esercitazione relativa alle cache, che cita :"In una cache direct-mapped con 32 blocchi (da 1 word), quali indirizzi di parole di memoria sono mappati nel blocco 13(decimale)?".
La risposta che è riportata nelle slide è "tutti gli indirizzi di memoria con gli ultimi 5 bit uguali 1101". Da qui sorge il mio dubbio: siccome le parole di memoria sono da 1 byte, per rispondere correttamente alla domanda, non si dovrebbero ignorare i primi due bit dell'indirizzo (al byte), poiché questo (byte) sarà spostato in blocco (di 4 byte) nella cache, nel caso in cui venisse richiesto?
Sotto questa mia ipotesi, la risposta corretta sarebbe "tutti gli indirizzi che hanno i bit [6-2] uguali a 1101".
Grazie in anticipo per la risposta, il fine di tutto ciò è cercare di capire il funzionamento di questi bit di offset.
9 replies
- Re: Dubbio sull'annosa questione dei bit di offsetProvo a risponderti io, prendi tutto ciò con le pinze. Stai lavorando con indirizzi di parole, dove 1 word = 4 byte = 32 bit. In questo caso, siccome hai 1 word non ti serve nessun bit per capire quale word prelevi dal blocco (se fossero state 2 word avresti avuto 1 bit di selezione, 4 word 2 bit di selezione ecc...) e dal momento che lavori con indirizzi di parole (non byte) non hai bisogno dei 2 bit classici per selezionare uno dei 4 byte della singola parola. Quindi, lavori solamente su log2(32) = 5 bit di indice e converti 13 in base 2 su 5 bit dal momento che l'indice è di 5 bit = 01101 per cui tutti gli indirizzi di parola i cui primi 5 bit (da intendersi come LST ovvero meno significativi, ovvero partendo da destra) sono 01101 apparterranno al blocco 13 (decimale) della tua cache a 32 blocchi. Se ti fosse stato chiesto su 64 blocchi avresti convertito 13 su 6 bit [log2(64) = 6] ovvero 001101 e qui cambia perché ovviamente i primi 6 bit di un indirizzo di parola dovranno essere 001101 affinché possa essere mappato nel blocco 13 su una cache con 64 blocchi. Spero sia un po' più chiaro (sperando di aver detto tutto correttamente)
Parent of this post↑ Reply to AUAnonymous User from Anonymous User
Re: Dubbio sull'annosa questione dei bit di offsetAllora... una word è lunga x bit in base all'architettura. Su MIPS una word è di 32 bit essendo una architettura a 32 bit quindi se 8 bit sono un byte... hai 4 byte per una word.. se fosse stata una arch a 64 bit avresti avuto 8 byte ecc
Comunque dal libro:
Since MIPS addresses each byte, word addresses are multiples of 4: there are 4 bytes in a word
Parent of this post↑ Reply to AUAnonymous User from Anonymous User
Re: Dubbio sull'annosa questione dei bit di offsetCiò che ha sollevato il mio ultimo dubbio è stata la frase "parola di memoria", che come affermato nella lezione "T2 ven 25mar2022, 08:30 - 11:30 - sorrenti" (min 1:20:00 per essere precisi), è di 8 bit.Ho risolto comunque il problema con l'incontro di oggi e ringrazio tutti per le risposte.
Parent of this post↑ Reply to AUAnonymous User from Anonymous User
Re: Dubbio sull'annosa questione dei bit di offsetHo risolto comunque il problema con l'incontro di oggi e ringrazio tutti per le risposte.era dunque un errore di formulazione della frase da parte del prof?
Parent of this post↑ Reply to AUAnonymous User from Anonymous User
Re: Dubbio sull'annosa questione dei bit di offsetera fuorviante la domanda riportata sulla slide a parer mio.Parent of this post↑ Reply to AUAnonymous User from Anonymous User
Re: Dubbio sull'annosa questione dei bit di offsetah solo una precisazione:quali indirizzi di parole di memoria sono mappati nel blocco 13?
indirizzi di parola = 32 bit perché gli indirizzi sono su 4byte (1 word / parola) in MIPS
blocco da 1 word = blocco composto da 32 bit per indicare l'indirizzo di parola, non il dato di quell'indirizzo
blocco di 4 word = blocco composto di 128 bit
ecc...
credo si intenda quello altrimenti non lo so
Post by Anonymous User
Re: Dubbio sull'annosa questione dei bit di offsetScusate l’ignoranza, ma io avevo in realtà capito che, anche nel caso di blocchi di una word, vi fossero due bit di offset che identificano, di volta in volta, un singolo byte (come peraltro confermato dalla formula usata nelle slides per calcolare il tag). È così? E, in caso mi sbagliassi, come funzionerebbe il calcolo del tag nel caso in cui il blocco di cache fosse più grande di una word? Il dubbio è che, avendo n bit di offset (che dipende dalla dimensione del blocco in cache) e m bit di indice che si recuperano dall’indirizzo in memoria centrale, il tag risulterebbe 32-(m k). Se questi k bit di offset sono indipendenti dall’indirizzo in memoria centrale, allora il tag non potrebbe essere composto da tutti i bit più significativi che non appartengono all’indice ed alcuni verrebbero esclusi dal computo dell’indirizzo in cache. Non so se il ragionamento fila o se non mi sono spiegato chiaramente, ma nel caso vi prego di farmelo sapere perché sono in difficoltà. :)Grazie mille e scusate la filippica.
Parent of this post↑ Reply to AUAnonymous User from Anonymous User
Re: Dubbio sull'annosa questione dei bit di offset"io avevo in realtà capito che, anche nel caso di blocchi di una word, vi fossero due bit di offset che identificano, di volta in volta, un singolo byte" ma è così solo che devi vedere se stai lavorando con indirizzi di parola (e quindi non ti servono i 2 bit per il byte) o con indirizzi al byte