Sunteți pe pagina 1din 16

1

TEHNICI DE ADRESARE A MEMORIEI





Generaliti privind adresarea memoriei

S-a artat c unitatea de memorie n calculatoarele contemporane se realizeaz cu ajutorul
modulelor integrate. Legtur dintre CPU i memoria principal se realizeaz prin trei magistrale:
magistrala de adrese ADRBUS;
magistrala de date DATA BUS;
magistrala de control CONTROL BUS.


Magistrala de adrese este unidirecional, cea de date este bidirecional, iar cea de control conine
linii de comand, dar i linii informaie de stare. Memoria este organizata pe locaii:

0 B
m-1
B
1
B
0

1

k-1
k
k+1

2
n
- 1
O locaie are m ranguri notate B
m-1
, B
1
, B
0
.

Citirea i scrierea memoriei se face paralel, deci, se scrie sau se citete un cuvnt pe m bii.
Adresarea memoriei se face prin magistrala de adrese (ADRBUS) i se presupune c aceast
magistral are n linii. Pentru fiecare combinaie de bii ai acestei magistrale se definete o anumit
adres. Deci, legtura ntre coninutul magistralei i o anumit locaie se face printr-un proces de
decodificare. Dac magistrala de adrese are n linii atunci mulimea adreselor este 2
n
.
A = {0,1,...2
n
-1}
unde: A = spaiul adreselor



2

Pe de alt parte, dndu-se o geometrie a memoriei rezult mulimea locaiilor fizice n care sunt
memorate cuvinte care conin m bii.

Definiie: Mulimea tuturor locaiilor fizice definite de o geometrie a memoriei se numete spaiul
memoriei M.

Legtura ntre spaiul adreselor i spaiul memoriei este dat de o funcie de translatare definit
astfel: f
T
: A M.

Conform celor discutate, aceast funcie corespunde unei funcii de decodificare. n cazul
sistemelor simple (microcalculatoarele) cele 2 mulimi vor fi identice M = A i astfel f este foarte
simpl.

Atunci cnd limea cuvntului memorie nu este suficient pentru reprezentarea datei, atunci se vor
utiliza mai multe locaii consecutive. Dac de exemplu, o dat se reprezint pe dou cuvinte n
memorie (UIA), atunci pentru a reprezenta data, se va folosi prima locaie pentru reprezentarea
cuvntului mai puin semnificativ (de la adresa j), iar locaia urmtoare (adresa j+1) pentru cuvntul
mai semnificativ.

Procesoarele moderne au faciliti de gestiune a memoriei. Operaiile de gestiune se refer la
implementarea memoriei virtuale, protecia memoriei etc.

Unitatea de gestiune a memoriei (Memory Management Unit - MMU) poate fi ncorporat n
unitatea de control din CPU sau poate fi extern unitii de control. n particular, n cazul
microprocesoarelor pot fi ncorporate n microprocesoare sau sunt livrate ca un modul separat -
modulul MMU).

Pentru implementarea conceptului de memorie virtual se folosete urmtoarea schem de
principiu:


AL reprezint adresa logic care este generat de CPU prin citirea instruciunii curente. Prin
prelucrarea adresei logice n MMU rezult adresa fizic. MMU realizeaz o alta funcie de
translatare f
T
*
: AL AE. f
T
*
realizeaz translatarea ntre adresele logice (virtuale) i cele fizice
(reale). Dac adresa logic nu are corespondent fizic n memoria principal, atunci se genereaz
comenzile de transfer (CT) pentru transferul ntre memoria extern i memoria principal.

Realizarea practic a conceptului de memorie virtual se bazeaz pe transferul n blocuri ntre
memoria extern i memoria principal. Cea mai rspndit metod de implementare este metoda
segmentrii memoriei.

S-a artat c fiecare instruciune la nivel cod maina este format din 2 cmpuri mari:





3
OPCODE ADRES

n l

L


In cmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea
anumitor calcule se determin adresa efectiv sau adresa fizic. n cazul adresei efective:
AE = f(AL)
unde:
AL - adresa logica;
AE - adresa efectiv

Pe lng aceste elemente constitutive din cmpul de adres, care formeaz adresa logic, pot
interveni i alte elemente care sunt memorate n registrele din CPU sau memorie.

La calculatoarele moderne rareori adresa efectiv coincide cu adresa logic. Din contr, n structura
modern aceast funcie este din ce n ce mai complex. Scopul este de a asigura o mare
flexibilitate n programare, precum i de a scurta lungimea programelor. Se are n vedere i
scurtarea lungimii instruciunilor, aceasta n condiiile n care volumul total al memoriei adresate
(deci spaiul memoriei) este din ce n ce mai mare.

S-a artat c un ciclu instruciune este format din 2 faze mari. Fiecare faz este mprit n subfaze
ca n figur.

Fetch Execute

Fetch AE Fetch Data Execute


Faza a doua (AE) este importat n studiul de fa n care are loc calculul adreselor efective pentru
operand (deci determinarea lui AE).

I. Adresare tip operand presupus

Exist situaia n care operandul este subneles ca parte integrant din OPCODE, deci nu trebuie s
apar n mod explicit n instruciune (nici ca valoare, nici ca adres).

De exemplu:
instruciunea de incrementare - valoarea de incrementare 1 este subneles, deci dac se
execut instruciunea de incrementare are loc creterea acumulatorului cu 1.
instruciunea SHIFT - se presupune c valoarea de deplasare este 1, deci nu este nevoie
s facem alt precizare.

II. Adresare implicit

S-a artat c la instruciunea cu dou sau cu o adres n realizarea operaiilor intervine un registru
special din CPU, anume acumulatorul. Acesta intervine prin nsi construcia calculatorului. Nu
este necesar sa se dea explicit.



4
OPCODE ADR1 ADR2 ACC (ADR1)*(ADR2)

OPCODE ADR ACC (ADR)*(ACC)

Mai mult la CPU moderne pot fi desemnate anumite registre generale care s memoreze o adres de
operand. Aceste registre generale se numesc DATA COUNTER. La proiectarea CPU se ine seama
de mecanismul adresrii implicite astfel: operandul se citete din memorie de la adresa dat de Data
Counter, adic acest registru este pe post de numrtor avnd faciliti de incrementare sau
decrementare. n acest fel el permite adresarea pentru un bloc de date. Rezult c se distinge
adresarea implicita prin DC prin autoincrementare sau autodecrementare. Suplimentar trebuie s se
prevad acea operaie de ncrcare (LOAD adresa) a adresei de nceput a blocului de date.

Se disting dou variante de realizare a operaiei de citire a operandului:
nainte de incrementare/decrementare; incrementare/decrementare post-operaie;
dup incrementare/decrementare - incrementare/decrementare pre-operaie.

Este o adresare implicit cu incrementare post-operaie.
Pas I - are loc adresarea locaiei A212, unde face CLEAR (se cur)
Pas II - DC-ul se incrementeaz cptnd valoarea A213.


Adresare implicit cu incrementare post-operaie


5

Este o adresare implicit cu decrementare pre-operaie.
Pas I - modificarea coninutului DC prin decrementare, se trece la adresa BE23
Pas II - are loc CLEAR la adresa BE23.

Observaie: Exist CPU la care se pot defini simultan mai multe DC deci se pot baleia simultan mai
multe blocuri de date.

III. Adresarea imediat

Acest mecanism de adresare ncalc principiul general de adresare; operandul nu se memoreaz
separat de instruciune, ci face parte integrant chiar din instruciune. Acest operand se numete
dat imediat.

OPCODE ID OPERAND

Avnd n vedere c n formatul instruciune intervine i cmpul de OPCODE rezult c lungimea
operandului va fi mai scurt dect a operandului standard din calculator, dar principalul avantaj al
datei imediate este c aceasta devine disponibil dup realizarea fazei fetch instruciune, faza
fetch data nu mai este necesar. Fiecare fetch presupune un ciclu de citire a memoriei, care este
consumator de timp, dar cum adresarea imediat ofer operandul odat cu instruciunea execuia
este mult mai rapid.

n cazul minicalculatorului cu cuvinte pe 16 bii, data imediat nsoete OPCODE-ul sub forma
unui cuvnt de 16 bii (mai nti apare OPCODE-ul i apoi data imediat).

Adresare implicit cu decrementare pre-operaie


6


8 bii 16 bii



OPCODE Instruciune OPCODE Instruciune
Data imediat Data imediat


M. O. M. O.


IV. Adresare direct

Adresarea direct reprezint cel mai natural mod de adresare a memoriei la care adresa logic
coincide cu adresa efectiv.

Distingem urmtoarele subclase de adresare direct:
1. adresare direct cu referire la registru;
2. adresare direct cu referire la memorie;
3. adresare direct cu referire la un dispozitiv de intrare-ieire;
4. adresare direct combinat.

1. Adresare direct cu referire la registru

S-a artat c toate procesoarele moderne conin un numr de registre generale cu acces foarte rapid
a cror reuniune formeaz memoria local. n aceste registre se introduc datele curente pentru
prelucrare. ntruct numrul registrelor este mic, i adresa de registru este mic (mare avantaj).

Pe de alt parte i accesul la date este mult mai rapid ntruct nu se declaneaz un ciclu de citire a
memoriei. Citirea registrelor din memora local se face foarte rapid, cci acestea sunt componente
ale CPU.

2. Adresare cu referire la memorie

Adresare direct cu referire la registru


7

n acest caz operandul (data) se afl n memoria principal, n zona de date. Adresarea memoriei
principale se face prin intermediul registrului MAR (registrul de adresare a memoriei). Dac
memoria are 2
n
locaii atunci cmpul de adres trebuie s aib n bii.

ntruct memoriile contemporane devin tot mai mari, rezult c numrul de ranguri folosite pentru
adresare crete, deci instruciunile cu adresare la memorie, necesit un numr mare de bii (lungime
mare).


Execuia unei astfel de instruciuni, presupune transferul din cmpul de adres, al adresei logice, n
registrul MAR, declanarea unui ciclu de citire a memoriei i extragerea din locaia adresat a
operandului.

n cazul microcalculatoarelor pe 8 bii o astfel de instruciune este dispus pe 3 octei:
primul octet reprezint OPCODE;
al doilea octet reprezint jumtatea inferioar a adresei;
al treilea octet reprezint jumtatea superioar a adresei.

ROM


OPCODE
ADR INF
ADR SUP



Dup citirea primului octet (opcode) unitatea de control decodific instruciunea n urma creia tie
c este o instruciune pe trei octei cu adresare direct la memorie.

3. Adresare cu referire la dispozitivele de intrare-ieire
S-a artat c aceasta categorie de instruciuni este foarte diversificat i ar trebui s conin
cmpurile:

OPECODE ID Adres canal Adres periferic


Adresare direct cu referire la memorie


8
4. Adresare combinat

De multe ori unul dintre operanzi se afl n memorie, iar al doilea ntr-un registru general i deci,
instruciunea trebuie s conin adresele celor doi operanzi. Rezult c este o combinaie a cazurilor
1 i 2. Dac ar fi o instruciune cu 2 adrese n care ambii operanzi se afla n memorie, s-ar obine o
instruciune foarte lung (neconvenabil).

V. Adresare paginat

Adresarea paginat este o variant de adresare direct. A aprut din necesitatea de a scurta
lungimea instruciunilor. S-a artat ca n cazul adresrii memoriei, cmpul de adres este lung (cu
ct volumul memoriei este mai mare cu att i cmpul de adres este mai lung).

S-au cutat metode prin care s se poat scurta lungimea cmpului de adres. O variant eficient
const n divizarea ntregului spaiu de memorie n pagini de memorie. Aceast divizare este
conceptual i ajut la simplificarea adresrii memoriei.

Fiecare pagin are un numr fix de locaii, iar numrul de pagini este dependent de volumul global
al memoriei i de mrimea unei pagini. Mrimea unei pagini este corelat cu lungimea cmpului de
adresa din instruciune. n cazul n care cmpul de adres al instruciunii are K bii atunci se
recomand ca mrimea unei pagini s fie 2
k
locaii.


Organizarea paginat a memoriei este utilizat i la memorii virtuale. Paginile pot fi plasate la
adrese fixe n cazul paginii fixe sau la adrese mobile

n cazul paginii dinamice.

Exemplu: se consider o instruciune la care cmpul de adresa are 8 bii. Atunci o pagin va conine
256 locaii.

1. Adresare direct la pagin zero

Se utilizeaz cmpul de adres pe 8 bii (in general k bii) al instruciunii pentru adresarea celor 256
de locaii numai din pagina zero. Locaia selectat este citit i operandul transferat n ALU.


Exemplu de organizare paginat a memorie


9
Avantajul adresrii la pagin zero este lungimea mic a instruciunii. n loc s se foloseasc 16 bii
pentru adres (n general numrul n de bii) pentru adresa se folosesc numai 8 bii (n general k bii
unde n > k).


Dezavantajul l reprezint accesul numai n pagina zero, neexistnd posibiliti de acces la alte
pagini.

2. Adresare la pagin curent

Pentru a nltura neajunsurile semnalate la metoda anterioar n vederea posibilitii de adresare a
tuturor paginilor se utilizeaz un mecanism combinat care mbin o component din instruciune i
anume adresa logic cu o component dintr-un registru al CPU i anume din PC. Se presupune c
adresa este format din n bii pentru o adresa un volum de 2
n
locaii. Atunci memoria este
organizata n pagini de 2
k
locaii, existnd 2
n-k
pagini. Partea mai puin semnificativ a adresei
format din k bii permite adresarea la o locaie din cadrul unei pagini, iar partea mai semnificativ
care conine n-k bii asigur determinarea paginii. Atunci n-k bii se preiau din cei mai semnificativi
n-k bii ai PC. Combinarea celor 2 elemente se face prin concatenare. Adresa astfel constituit se
depune n registrul MAR, care este de n bii asigurndu-se citirea locaiei dorite (o anumit pagin,
o anumit locaie).


Adresare direct la pagin zero


10

Din modul de formare al adresei pentru dat rezult c datele cerute de o anumita instruciune
trebuie s fie n vecintatea instruciunii. Aceasta vecintate se materializeaz n conservarea
aceleiai pagini. Deci, la scrierea programului n cazul folosirii acestei tehnici de adresare,
programatorul va plasa datele n aceeai pagin a memoriei, cci adresa de pagin se preia din
numrtorul de program. Cnd se executa instruciunea curenta PC are o anumita valoare din care
cei mai semnificativi (n-k) bii sunt preluai i pentru formarea adresei pentru pagina n care se afla
operandul.

Pot rezulta situaii critice la frontiera ntre pagini. Se tie c dup fetch instruciune se d comanda
de incrementare a PC. Dac ntmpltor instruciunea curent s-a aflat la adresa 01FF (k=2,
n - k = 2), atunci dup incrementare 01FF + 1 = 0200 i deci adresa de pagin nu mai este 01, ci 02.

3. Adresare paginat relativ

Noiunea de pagin curent expus anterior este nlocuit n acest caz cu noiunea de pagin
relativ. Pagina relativ este dinamic n spaiul memoriei. Se numete relativ pentru c este
centrat n jurul valorii curente a PC. Rezult c n aceasta tehnic de adresare intervine PC-ul cu
toate rangurile sale. n instruciune apare o componenta a adresei (adresa logic) care se numete
deplasament.

Deplasamentul reprezint cu ct se face deplasarea n raport cu valoarea curent a PC-ului.
Deplasamentul poate fi un numr binar pozitiv sau un numr binar cu semn. Adresa efectiv se
determin prin nsumarea coninutului PC-ului cu deplasamentul, iar rezultatul se nscrie n MAR.
Dac deplasamentul este pozitiv atunci pagina relativ are ca baz adresa din PC, iar vrful la
valoarea PC + D
max
, unde D
max
valoarea maxima a deplasamentului. Dac deplasamentul este
numr binar cu semn atunci pagina relativ este centrat n jurul locaiei cu adresa data de PC.

Adresare la pagin curent
(J+1)*2
k
-1


11


PC-ul are n ranguri, iar deplasamentul coninut de instruciune are k ranguri (k<n); suma se face pe
n ranguri.


Exemplu: Se consider o instruciune care s-a adus n RI (registru de instruciune) care are un
OPCODE, un identificator, i un deplasament = 2A, adresa este scris n cifre hexa, PC = 1A00. Se
face suma ntre PC i deplasament rezultnd adresa efectiva.

VI. Adresarea bazat

Este asemntoare ca mecanism, cu adresarea paginat relativ numai c n locul PC-ului, s-a
folosit coninutul unui alt registru sau al mai multor registre numite registre de baz, care fac parte
din grupul registrelor generale din procesor.

Tipuri de pagini

Adresare la pagin relativ


12

n acest fel se elimin dependena ntre poziia datei i a programului. Registrul de baz are o
lungime egal cu cea a registrului MAR, iar n instruciune la cmpul de adres apare
deplasamentul care poate fi un numr binar pozitiv sau un numr binar cu semn. Lungimea
deplasamentului este mai mic dect cea a registrului MAR. Valoarea deplasamentului precizeaz
lrgimea ferestrei, deci cu ct numrul de ranguri din cmpul de adres este mai mare, cu att se
definete o fereastr mai larg sau o pagin mai mare.

Calculul adresei efective se face prin nsumarea coninutului registrului de baz cu cel al
deplasamentului. Cum de regul exist mai multe registre de baz, n instruciune va trebui s apar
un cmp special desemnator al registrului de baz desemnat cmpul B.

Dac de exemplu exist 8 registre de baz numerotate 0 ... 7, atunci cmpul B va avea limea 3. La
unele arhitecturi de calculatoare se adopt convenia c dac cmpul B = 0 atunci adresa efectiva va
fi dat numai de deplasament.



Adresare bazat


13
ncrcarea unor valori iniiale n registrul de baza ca i modificarea acestora pe parcursul execuiei
programului se face prin mijloace software.

Definiie: Aceast tehnic de adresare se numete adresare prin baz i deplasament.

Coninutul registrului de baza desemnat conine fie centrul paginii n care se afl data, fie nceputul
paginii n care se afl data.

Cum se pot utiliza mai multe registre de baz rezult c se definesc simultan mai multe pagini
curente pentru date. La definirea acestor pagini se vor evita suprapunerile de adres.


VII. Adresarea indexat

Adresarea indexat este o variant de adresare bazat. La aceasta, registrele de baz sunt nlocuite
de registrele de indexare. Aceste registre fac parte din grupul registrelor generale a unui procesor.
Mecanismul de calcul al adresei efective este asemntor cu cel de la adresarea bazat: se face suma
ntre coninutul registrelor de indexare i adresa logic din instruciune.

Definiie. Coninutul registrului de indexare se numete index.

Particularitatea registrelor de indexare const n posibilitatea de a efectua o serie de operaii directe
asupra acestora ca de exemplu: incrementare, decrementare, ncrcare paralela, adunare, scdere.

Registrele de indexare sunt frecvent folosite n programare n special pentru definirea ciclurilor. Se
pot defini simultan mai muli indexi, permitandu-se astfel declararea mai multor cicluri deci,
ciclurile ncuibate.

In cmpul X se introduce adresa registrului de indexare. Daca sunt s ranguri atunci pot sa existe 2
s

registre de indexare. In cmpul ID (identificare) apar combinaii care identific o anumit tehnic
de adresare.




14

Exemplu de utilizarea adresrii indexate: Se cere transferul unui bloc de date cu K componente din
zona adreselor M
1
... M
k
n zona R
1
...R
k
. In mod normal ar trebui scrise k instruciuni de transfer de
tipul MOV. Programarea se poate simplifica daca se folosete adresarea indexata.

In instruciune n cmpul de adresa apar constantele R
1
i M
1
, iar asupra registrului de indexare se
pot efectua operaii de incrementare. In registrul de indexare R
x
se introduce mrimea K. Asupra lui
R
x
se pot efectua decrementri. Atunci cnd valoarea indexului devine zero procesul transferrii
blocului de date s-a ncheiat i deci se oprete execuia transferului.


Adresare indexat


15
VIII. Adresarea indirect

Adresarea indirect este o tehnic de adresare modern care permite scurtarea lungimii programelor
i introduce o flexibilitate n scrierea programelor complexe.

La adresarea indirecta adresa logic din instruciune nu reprezint adresa efectiva a operandului ci a
unui noi instruciuni. Deci, se va citi locaia din memorie de la adresa specificata n instruciune, iar
data citit va fi interpretat ca o noua instruciune.


n cazul microcalculatoarelor adresrile indirecte se aplic frecvent sub forma adresrii implicite
prin intermediul unor registre generale din CPU. Astfel la microprocesorul INTEL I8080 perechea
registrului HL, fiecare de 8 bii, este folosit ca adres logic pentru accesarea memoriei operative
de unde se extrage operandul. Fie de exemplu instruciunea ADD M (care presupune adunarea
dintre ACC i coninutul locaiei de memorie a crei adresa este specificat implicit prin coninutul
perechii de registre HL.

ACC (ACC) + Mem ((H)(L))

IX. Adresare pentru un bloc de date

S-a artat c un calculator opereaz i cu cmpuri de lungime variabil (blocuri de date). Pentru
adresarea acestora se pot folosi variantele:
1. Se d adresa de nceput i adresa de sfrit de bloc;
2. Se d adresa de nceput i lungimea cmpului;
3. Se da adresa de nceput i se folosete un delimitator de bloc adic o combinaie particulara de
bii care este folosit doar pentru identificarea sfritului blocului. Aceast metod nu se
recomand pentru c se folosete o parte din memoria pentru memorarea delimitatorului.


Adresare indirect


16
X. Tehnici de adresare combinate

Majoritatea calculatoarelor i microcalculatoarelor folosesc diverse combinaii ale tehnicilor de
adresare prezentate anterior pentru a valorifica avantajele fiecruia.

1. Adresare indirect multinivel. Adresarea indirect este efectuat n mai multe cicluri de fiecare
data informaia extrasa din memorie nu este un operand ci o nou instruciune; excepie face
ultima citire. De regula exist o limit de nivele pentru adresare indirect. De exemplu la funcia
FELIX C numrul ciclurilor permise de adresare indirecta = 5.
2. Adresare indirect i indexat. Conform denumirii aceast tehnic de adresare mbin cele dou
tehnici de adresare deja explicate. Dar, la aceasta tehnic combinat se pune problema
momentului n care se face indexarea. Distingem 2 cazuri: cu post-indexare i cu pre-indexare. In
primul caz mai nti se rezolv sistemul de adresare indirecta (care poate fi i multinivel) i n
final se aduna valoarea indexului (din registrul de indexare specificat n instruciune) rezultnd
adresa efectiv a operandului. In cazul 2 mai nti se aplic mecanismul folosit la adresarea
indexat adic se adun adresa logic cu coninutul registrului de indexare rezultnd adresa unde
se afl pointerul. Se extrage pointerul, se face o noua adresare, se extrage operandul.
3. Adresare bazata cu indexare. Mecanismul de calcul al adresei efective este urmtorul:



Adresare bazat-indexat (bazat cu indexare)

S-ar putea să vă placă și