Octet adresabil vs Adresabil Word

Încerc să înțeleg diferența dintre adresarea octetului și adresarea cuvântului.

O unitate de memorie cache asociativă cu 4 căi cu o capacitate de 16 KB este construită folosind o dimensiune de bloc de 8 cuvinte. Lungimea cuvântului este de 32 de biți. Dimensiunea spațiului de adrese fizice este de 4 GB.

Număr de seturi în memoria cache $ = (16 * 1024) / (4 * 8 * 4) = 2 ^ 7 $

Dacă se utilizează adresarea cuvintelor:

Offset bloc $ = 3 \ bits $

Deoarece PAS este $ 4 \ GB $ , numărul total de adrese = $ 2 ^ {32} / 2 ^ 2 = 2 ^ {30} $

Deci, numărul total de biți de adresă $ = 30 \ biți $

Structura adresei:

Biți de etichetă: $ 20 \ biți $
Setați biți: $ 7 \ biți $
Blocați biții offset: $ 3 \ biți $

Acum, să presupunem că CPU vrea să acceseze Al 3-lea octet al unui anumit cuvânt.

  1. Controlerul cache va utiliza $ 7 \ bits $ set-field pentru a indexa într-un set și apoi compararea $ 20 \ biți $ mai mare cu toate $ 4 $ blocuri în set. Dacă se găsește o potrivire, atunci apare lovitura cache și decalajul de bloc inferior $ 3 \ biți $ pentru a scoate unul dintre cuvinte din $ 8 $ cuvinte într-unul din registrul cu scop general. Procesorul extrage apoi cel de-al treilea octet din cuvânt și efectuează operația.
  2. Dacă etichetele sunt de neegalat, atunci apare lipsa memoriei cache, se trimite un semnal citit de memorie și datorită localității spațiale de referință, un bloc care conține cuvântul este transferat în memoria cache.

Dacă CPU-ul este adresabil pe octeți:

Numărul total de biți de adresă $ = 32 $

Structura adresei: Etichetă biți: $ 20 \ biți $
Set biți: $ 7 \ biți $
Blocați biții offset: $ 5 \ biți $

Dacă CPU dorește să acceseze al treilea octet al unui word:

  1. La fel ca la Pasul 1 al cuvântului adresabil, dar acum CPU poate adresa direct al treilea octet al cuvântului, utilizând $ 2 \ inferior biți $ offset de octeți. Cu toate acestea, sunt confuz cum se va întâmpla acest lucru. Deoarece dimensiunea registrului CPU are o lățime de 1 cuvânt, similar cu adresa cuvântului, un cuvânt din cele 8 cuvinte din bloc va fi transferat în registru. Dar cum ar fi pasul „extragerea octetului” este mai ușor aici? Și de ce îl numim adresarea octetului dacă totuși ne adresăm efectiv unui cuvânt?
  2. La fel ca la pasul 2 al adresării cuvintelor. Blocul de date va fi transferat de la memorie la cache în caz de pierdere a memoriei cache.

De asemenea, acest răspuns spune că memoria fizică este întotdeauna octet acum, care este diferența dintre adresabilitatea memoriei și adresabilitatea arhitecturii CPU?

Răspuns

Adresare Word înseamnă că, numărul de linii din magistrala de adrese din procesor este mai mic decât numărul de biți din cuvântul în sine.

Să spunem că avem un cuvânt de 4 octeți. (spațiu de adresă pe 32 de biți)

Dacă această mașină este adresă de octeți le, atunci magistrala de adrese a procesorului va avea 32 de linii, ceea ce îi permite să acceseze fiecare octet din memorie.

Dacă această mașină este adresabilă cu cuvânt, atunci magistrala de adresă a procesorului va avea 30 de linii ( $ 32 – log_ {2} 4 = 30 $ ), care îi permite să acceseze memoria NUMAI în cuvinte / bucăți de 4 octeți și asta și din adrese care sunt multiple ale dimensiunii cuvintelor.

Acum, dacă cereți procesorului să aducă un octet de la o anumită adresă, acesta va renunța mai întâi la cei 2 biți cel mai puțin semnificativi (prin drop, adică le suprascrieți cu 0 „s) ale adresei, preluați un cuvânt de la adresa rezultată și returnează un octet folosind cei 2 biți cel mai puțin semnificativi ca un offset în cuvântul preluat.

Acest lucru determină creșterea timpului de acces la memorie, deoarece CPU trebuie să petreacă mai mult timp modificând adresa și procesând cuvântul preluat. Dar, de asemenea, ajută la reducerea costurilor hardware, deoarece complexitatea circuitelor este redusă datorită reducerii liniilor magistralei de adresă. extragerea „este mai ușoară.

Comentarii

  • Înțeleg ce spuneți ‘. Dar ce ‘ se va întâmpla în caz de adresare de octeți? Să presupunem că CPU are nevoie de al treilea octet al cuvântului. Va trimite adresa de 32 de biți cu cel puțin 2 biți semnificativi setată la 10, dreapta nu?Dar cum va stoca octetul, având în vedere că folosește registrul cu lățimea de 1 cuvânt? Nu ați câștigat ‘ t în acest caz, de asemenea, preluați cuvântul din cache și stocați-l în registrul ‘?
  • Pentru dvs. prima întrebare: CPU-urile de adresare a octeților au instrucțiuni de scriere separate, bazate pe dimensiunea datelor de scris. Unul pentru un octet, unul pentru un octet dublu, unul pentru un octet quad, unul pentru un cuvânt etc. octetul care trebuie scris este de obicei stocat în cele 8 LSB-uri ale registrului, apoi se execută instrucțiunea de scriere pentru un octet. Acest lucru face ca NUMAI cei 8 biți LSB ai registrului să fie încărcați pe magistrala de date și doar un octet la adresa din memorie este modificat.
  • Nu nu înțeleg a doua întrebare. Ați putea detalia.
  • Presupun că același lucru se întâmplă și pentru citirea unui octet într-o mașină adresabilă de octeți, nu? De exemplu, să ‘ s spunem că există ‘ o matrice de caractere char arr[10] și CPU vrea să citească al treilea caracter, adică arr[2]. Apoi, după accesarea octetului utilizând adresa pe 32 de biți, îl va stoca în cele 8 LSB-uri ale registrului. Dar în cazul cuvântului adresabil, CPU va calcula mai întâi adresa cuvântului căruia îi aparține al treilea octet (adică suprascrie cele 2 LSB-uri cu 0) și va prelua cuvântul din acesta ‘ registru. După aceea va folosi offsetul de octeți pentru a obține octetul necesar. Este corect?
  • Multe mulțumiri. V-aș ruga să puneți toate acestea împreună în răspunsul original, astfel încât să poată ajuta orice viitor cititor.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *