Documente Academic
Documente Profesional
Documente Cultură
54
Arhitectura Calculatoarelor
55
RF
Fanionul reluare 16
(Resume Flag)
VM
Fanionul modului 17
virtual 8086
(Virtual 8086
Mode)
Fanionul alinierii 18
AC
(Alignment
Check)
VIF
Fanionul
19
20
ntreruperii
Virtuale
(Virtual Interrupt
Flag)
VIP
Fanionul
ntreruperii
Virtuale amnate
(Virtual Interrupt
Pending flag)
Arhitectura Calculatoarelor
ID
Fanionul
identificrii
(IDentification
flag)
56
21
Arhitectura Calculatoarelor
57
Arhitectura Calculatoarelor
58
Arhitectura Calculatoarelor
59
Arhitectura Calculatoarelor
60
6 Gestionarea memoriei
6.1 Memoria virtual
Vom trece pe scurt n revist cteva dintre principiile mai importante care caracterizeaz evoluia
microprocesoarelor.
Un prim principiu pornete de la segmentarea memoriei microcalculatorului n subdiviziuni logice, aa
cum procedeaz Intel 8086.
Exist deci dou modaliti principial diferite de a trata memoria:
- Adresarea liniar, care presupune accesul n memorie n mod continuu de la adresa 0 la adresa 2n-1,
unde "n" este numrul de bii ai unei adrese (sau, fizic, numrul de linii ai magistralei de adrese).
- Adresarea segmentat, n care memoria este divizat logic n poriuni numite segmente, n interiorul
crora adresarea este liniar. Orice localizare n memorie se face relativ la baza segmentului iar fixarea
fizic a bazei unui segment este transparent utilizatorului. Am prezentat deja, pentru 8086,
mecanismul segmentelor de dimesiune fix, noiunea de adres logic precum i translatarea ei n
adres fizic.
O generalizare interesant este aceea de a forma segmente de dimensiuni variabile. Aceasta
permite o mai bun adaptare a subdiviziunilor logice ale memoriei la dimensiunile programelor sau ale
structurilor de date.
Un alt concept este acela al formrii unei memorii virtuale.
Conceptul de memorie virtual se bazeaz pe ideea separrii memoriei logice a utilizatorului de
cea fizic i extinderea memoriei logice prin stocare imaginii sale pe hard disc (fiierul pagefile.sys) .
Fiecare program la execuie, nu este obligatoriu s fie stocat ntreg n memoria RAM, ci doar o
secven de cod i date, executate la un moment dat. Apare, n mod firesc, ideea de a extinde spaiul
de memorie logic, care poate fi realizat cu mult mai mare dect memoria fizic. Acesta este principiul
de baz al organizrii memoriei virtuale.
Legat de conceptul memoriei virtuale apare mecanismul de gestionare a memoriei. El const n
translatarea adreselor virtuale (folosite de programator) n adrese fizice identificabile n structura
fizic, concret, a microcalculatorului.
Un alt concept este acela de multiprocesare (concuren, multiprogramare, "multitasking") care se
refer la capacitatea calculatorului de a executa mai multe procese ("task-uri") simultan aceasta se
realizeaz prin comutarea, secvenial, de la o secven de instruciuni a unui proces (task) la alt
secven aparinnd altui proces i aa mai departe, apoi se comut din nou la prima secven etc. Tot
acest mecanism este transparent utilizatorului care are impresia desfaurrii simultane a mai multor
procese (aceasta poate nsemna, eventual, mai muli utilizatori, sau un singur utilizator care are nevoie
de mai multe procese simultan). Ideea nu trebuie s surprind: este firesc ca ntr-un sistem cu o
memorie virtual de mari dimensiuni (la Pentium ajunge la 64TB), organizat logic ntr-o multitudine
de segmente, s fie loc pentru mai multe procese.
Precizm c noiunea de proces (task) folosit aici se refer la o secven de aciuni coerente
(eventual organizate ca programe de sine stttoare) care duc la ndeplinirea unui scop, folosind
resursele calculatorului: memorie, timp de procesor, memorie extern etc.
O consecin important a gestionrii memoriei este mecanismul proteciei. Legtura este att de
fireasc nct modul de lucru "virtual" al microprocesoarelor Intel se mai numete i "protejat"
(subliniem c, din motive de compatibilitate, toi membrii familiei Intel au i un mod "real" de
funcionare similar cu funcionarea lui 8086). Protecia are, pentru toate microprocesoarele evoluate,
trei aspecte de baz:
Controlul informaiei (coduri sau diverse tipuri de date);
Izolarea utilizatorilor unul fa de altul (protecia "inter-task");
Izolarea software-ului de sistem de cel de aplicaii (protecia "intra-task").
Se impun aici cteva observaii strict necesare:
- Componentele eseniale ale mecanismului gestionrii memoriei i implicit ale proteciei sunt cele
de segment i proces (task), n accepiunile definiiilor date anterior. De altfel din punctul de vedere al
mecanismului proteciei, segmentul se redefinete ca fiind cea mai mic regiune (logic) de memorie
cu atribute de protecie precizate.
- Cele trei aspecte de baz ale proteciei nu pot fi asigurate satisfactor numai prin mecanismul
gestionrii memoriei. De aceea multe familii de microprocesoare evoluate adaug un mecanism
Arhitectura Calculatoarelor
61
suplimentar: privilegiile multi-nivel. Acesta asigur izolarea software-ului de sistem de cel de aplicaii
prin ierarhizarea pe mai multe nivele de privilegii (patru pentru familia Intel) a programelor (coduri i
date) i a proceselor.
Segmentarea memoriei i multiprocesarea ncurajeaz un procedeu de a rula procese ce au nevoie
de resurse importante de memorie, n memorii fizice cu mult mai reduse. Acest deziderat se realizeaz
prin procedeul denumit interschimbarea locului proceselor ("swapping tasks"), care const n
trimiterea provizorie n memorie a proceselor (sau a unor pri componente dintr-un proces) din
memoria intern n cea extern, dac acel proces (sau acea parte din el) nu este n execuie la un
moment dat. Schimbarea locului ntre memoria intern i cea extern se poate face de cte ori este
necesar pentru a menine continuu n memoria intern doar strictul necesar bunei desfaurri a unei
aciuni.
Un mecanism folosit practic de toate calculatoarele actuale este paginarea, ceea ce semnific
implementarea memoriei virtuale bazat pe blocuri de mrime fix numite pagini. Multiprocesarea
precum i procedeul de interschimbarea locului proceselor se poate realiza cu pagini n loc de
segmente. Familia Intel combin segmentarea memoriei cu paginarea.
Localizarea unei informaii n memorie devine un mecanism complicat: ntre adresa virtual i
adresa fizic se interpune un nou tip de adrese: adrese liniare; acestea, la rndul lor, sunt translatate
prin mecanismul paginrii n adrese fizice.
Microprocesoarele evoluate care folosesc mecanisme complicate de localizare a informaiei n
memorie (ca n cazul descris anterior: adres virtualadres liniaradres fizic) au nevoie i de
procedee prin care s minimizeze timpul necesar unei referiri n memorie. De regul, metoda folosit
este aceea a elementelor de structur ascunse ("cache"). Astfel Intel folosete regitri cache care
prelungesc, transparent pentru utilizator, informaia din regitrile segment, astfel nct s aib
disponibile iriformaiile necesare formrii segmentelor n memorie i atributele lor de protecie.
Microprocesorul PentiumIV folosete n plus o memorie asociativ cache TLB ("translation
lookaside buffer") care conine adresele celor mai folosite pagini i diminueaz considerabil timpul
afectat mecanismului paginrii.
Modul protejat Protected Mode, mai precis Protected Virtual Address Mode (modul protejat
de adresare a memoriei virtuale), este modul de funcionare de baz a microprocesoarelor pe 32 bii.
n acest mod microprocesoarele pot adresa pn la 64 Tbyte memorie virtual, care cu ajutorul
mecanismului paginrii poate fi translatat n 64 GByte (Pentium IV) memorie fizic. Cu apariia
microprocesoarelor pe 64 bii volumul memoriei virtuale a fost extins pn la 2 64 Byte. Practic n
primele microprocesoare pe 64 bii lungimea adresei virtuale a fost limitat pn la 48 bii, iar adresa
fizic 52bii.
Modul virtual 8086 Virtual 8086 Mode sau V86 este o stare a modului protejat, n care
microprocesorul funcioneaz ca 8086 avnd posibilitatea de a folosi adrese i operanzi pe 32 bii.
Modul protejat este destinat s asigure executarea a mai multe procese (sarcini) simultan, ce
presupune protecia resurselor unei sarcini de la aciunea alteia (ca procese presupunem aplicaiile,
sarcinile sistemului operaional).
Principala resurs protejat este memoria, n care se pstreaz codurile, datele i diferite tabeluri
de sistem (de exemplu, tabelul ntreruperilor), accesul la care se petrece printr-o varietate de moduri de
adresare (24 moduri). E necesar de protejat i dispozitivele utilizate n comun, accesarea la care se
petrece cu ajutorul instruciunilor de intrare/ieire i ntreruperi.
Memoria logic poate fi tratat ca un segment sau o mulime de segmente de dimensiuni
variabile (n mod real - dimensiuni fixe). Exceptnd segmentarea, n modul protejat este posibil
(folosind mecanismul paginrii) divizarea logic a memoriei pe pagini de dimensiuni fixe de 4Kbyte
(2MB, 4MB), fiind posibil poziionarea lor n orice zon a memoriei fizice.
Referitor la memorie deosebim 3 spaii de adresare: logic, linear i fizic. Combinnd
segmentare i paginarea deosebim dou modele de memorie:
n modelul segmentat al memoriei, aplicaia folosete cteva segmente de memorie (cod, date,
stiv). n acest model aplicaia opereaz cu adrese logice.
n modelul plat al memoriei, aplicaiei i se atribuie un singur segment. n acest model aplicaia
opereaz cu adrese lineare. Modelul plat de memorie este mai simplu i mai practic n utilizare i
este folosit de sistemele de operare moderne.
Arhitectura Calculatoarelor
62
Segmentarea este un mod logic de organizare a memoriei la nivel practic. Paginarea este folosit la
nivel de sistem pentru gestionarea memoriei fizice. Segmentele i paginile pot fi ndeprtate din
memoria operativ (RAM) n memoria extern (hard disk), i la necesitate, s fie ncrcate din nou n
memoria operativ. n aa mod se realizeaz memoria virtual.
6.2 Memoria virtual pentru microprocesoarele pe 32 bii
Vom detalia aici principiul gestionrii memoriei, folosind pentru exemplificare componenta
familiei Intel - microprocesorul PentiumIV, ce combin segmentarea memoriei cu paginarea.
Adresa virtual, ca i adresa logic, are pentru utilizator dou pri componente:
adresa efectiv (sau offsetul dresei virtuale);
selectorul, care nlocuiete adresa segment.
Adresa efectiv este adresa n interiorul segmentului i utilizatorul trebuie s o conceap ca fiind
relativ la baza unui segment predefinit. Adresa efectiv este precizat de modul de adresare aferent
instruciunii care o utilizeaz.
Selectorul se afl, ca i n cazul adreselor logice, tot ntr-un registru segment. Noutatea const n
faptul c definirea segmentului asociat unui selector nu se mai face direct (ca n cazul
microprocesorului Intel 8086) ci prin mecanismul adresrii indirecte.
Microprocesorul are urmtoarele particulariti:
- Adresa virtual este o adres pe 48 de bii:
AV adr48
- Adresa efectiv este o adres pe 32 bii:
AE adr32
Aceasta impune dimensiunea maxim a unui segment la 232 B = 4 GB.
Se folosete un concept nou: cuanta de informaie ntr-un segment poate fi octetul (ca la
predecesorii familiei) sau "pagina" definit ca fiind o subdiviziune logic de dimensiuni fixe (4kB) a
memoriei virtuale. Mecanismul paginrii va fi detaliat ntr-un subcapitol ulterior.
Selectorul are 16 bii i este compus din trei entiti informaionale:
un cmp numit INDEX pe 13 bii;
un "indicator de tabel" (TI) care ocup 1 bit;
un cmp de 2 bii denumit "nivelul de privilegiu cerut" (RPL). Deci:
SELECTOR = INDEX TI RPL
Figura 6.1 prezint: a) configuraia adresei virtuale i b) configuraia selectorului pentru
microprocesorul Intel PentiumIV.
47
31
0
SELECTOR
AE
15
(offset)
3
1
INDEX
TI RPL
Figura 6.1
Dintre cele trei cmpuri enumerate mai sus, numai primele dou folosesc pentru definirea unui
segment n memorie (RPL este utilizat de mecanismul privilegiilor multi-nivel i nu va fi explicat n
acest capitol). Cei 14 bii pe care i ocup INDEX i TI conduc la posibilitatea de a forma n memorie
un maximum de 214 segmente = 16k segmente.
Rezult o prim concluzie important: dimensiunea memoriei virtuale pe care o poate adresa Intel
PentiumIV este dat de numrul maxim de segmente, fiecare presupus la dimensiunea maxim:
214 segmente * 232 B/segment =246 B= 64 TB
Arhitectura Calculatoarelor
63
Arhitectura Calculatoarelor
64
7
ATRIBUTE
6
5 P DPL
S EC RA
4
3
2
1
0
Figura 6.4
Arhitectura Calculatoarelor
65
Octeii 0, 1 i nibble-ul inferior ai octetului 6, conin 20 bii din LIMITA segmentului selectat.
Octeii 2, 3, 4 i 7 conin 32 bii din BAZA (adresa fizic a bazei) segmentului selectat.
Octetul 5 i nibble-ul superior ai octetului 6, este cmpul ATRIBUTE, cu diverse informaii
despre segment pe care le vom detalia n continuare.
n ceea ce privete cmpul ATRIBUTE, notm urmtoarele semnificaii (ncepnd cu octetul 5);
Bitul 7, notat cu P, are rolul de a indica dac segmentul este "prezent" n memoria fizic (P = 1)
sau nu (P = 0).
Biii 6 i 5 formeaz "Nivelul de privilegiu al descriptorului" (DPL) i este folosit n mecanismul
proteciei multi-nivel.
Bitul 4, notat cu S, este folosit, aa cum artam deja, pentru a distinge ntre segmentele normale
de lucru (S=1) sau segmentele speciale de sistem (S=0).
n acest ultim caz, configuraia nibble-ului inferior este 0010 (informaie prezentat succint cu
codificarea tip = 2) care indic faptul c descriptorul definete n spaiul adreselor globale o LDT.
Pentru segmentele obinuite, semnificaia biilor inferiori este:
Bitul 3, notat cu E, indic un segment executabil (E=1), adic un segment de program, sau un
segment pentru date (E = 0).
n funcie de aceast ultim clasificare, urmtorii trei bii au semnificaii diferite:
a) Pentru segmentele de program:
Bitul 2, notat cu C, este folosit de mecanismul proteciei multi-nivel pentru a introduce o
excepie n modul de acces al acestui tip de segment.
Bitul 1, notat cu R, indic, pentru R = 1 c segmentul poate fi i citit nu numai executat.
Bitul 0, notat cu A, semnific "accesat". Ne vom opri puin mai n detaliu asupra acestui bit,
deoarece microprocesoarele Intel l folosesc n cadrul unui procedeu cu o aplicabilitate mult mai
general.
Procedeul poart numele de Strategia "LRU- Least Recently Used " ("cel mai puin utilizat") i
ajut sistemul de operare s decid ce segment este mai puin utilizat pentru a fi trimis n memoria
extern a calculatorului, n ateptare. Astfel A este setat ori de cte ori se face referire la descriptorul
care l conine; periodic A este resetat de sistemul de operare, orice resetare efectiv incrementnd un
contor. Segmentul al crui contor asociat este minim va fi ales ca "victim" pentru a atepta n
memoria extern.
b) Pentru segmentele de date:
Bitul 2, notat acum cu ED (prescurtarea de la "expanded down"), indic dac segmentul de date
este folosit ca stiv.
- pentru ED= 0 - segment de date;
- pentru ED=1 - stiv.
Bitul 1, notat acum cu W, indic, pentru W = 1, dac segmentul de date poate fi i "nscris" nu
numai citit.
Bitul 0, notat cu A, are aceeai semnificaie ca i pentru segmentele de program, fiind folosit n
cadrul "Strategiei LRU".
Se impun cteva observaii:
Dimensiunea adresei fizice a bazei segmentului indic o locaie n harta memoriei fizice de 4
GB.
Cmpul LIMITA indic o dimensiune maxim de 220 = l M cuante de informaie. Numai c
aceast cuant poate fi octetul sau pagina (n dimensiune fix de 4 kB).
Acest tip de organizare a memoriei este indicat de bitul 7 al octetului 6, bit notat cu G ("granularitate").
Pentru G = 1, Pentium folosete mecanismul paginrii. Se observ c n cazul granularitii pe octet
segmentele au maximum 1 MB, iar n cazul granularitii pe pagin, segmentele ating dimensiunea
maxim de 4 GB.
Ceilali trei bii din octetul 6 au urmtoarele semnificaii:
Bitul 6, notat cu D/B (D pentru date i B pentru coduri), indic pentru D/B = 1 c se lucreaz cu
operanzi pe 32 de bii, cu toate modurile de adresare care i sunt caracteristice. Pentru D/B = 0,
se lucreaz cu operanzi pe 16 bii i cu segmente de maximum 64 kB.
Arhitectura Calculatoarelor
66
Arhitectura Calculatoarelor
67
instruciunilor privilegiate. Orice violare a proteciei provoac apariia excepiilor speciale care sunt
prelucrate de nucleul SO.
Arhitectura Calculatoarelor
68
15
SELECTOR
31
0
AE
INDEX
TI=0
7 Tabela
Segment
descriptori
AF
LIMITA
selectat
Descriptor
de segment
BAZA
+
Baza tabelei de
descriptori
31
BAZA_GDT
:
0 31
LIMITA_GDT
GDTR
Figura 6.6
Arhitectura Calculatoarelor
69
Registre cache
0
CS
SS
DS
ES
FS
GS
ATRIBUTE
BAZA seg.selectat
LIMITA
LDTR
ATRIBUTE
BAZA LDTR
LIMITA LDTR
Figura 6.7
Regitrii segment pot ncrca un selector de 16 bii. Partea invizibil cuprinde 32 de bii pentru
adresa bazei segmentului selectat, 32 de bii pentru dimensionarea segmentului (din care se folosesc
numai 20 de bii) i un cmp pentru diversele atribute ale segmentului (prezent, nivelul de privilegiu,
accesat, granularitate etc).
Din motive uor de neles, GDTR nu are poriune ascuns. El este n ntregime vizibil i ncrcarea sa
se face tot cu o instruciune privilegiat: LGDT
Pentru LDTR situaia este puin diferit. Aici partea "invizibil" conine numai adresa bazei i
dimensiunea tabelei de descriptori locali care este vizat n memorie. n partea sa "vizibil" exist un
selector care are obligatoriu TI = 0. ncrcarea acestui registru se face cu o instruciune privilegiat:
LLDT.
Mai subliniem c nu am considerat dect regitrii care iau parte la mecanismul gestionrii
memoriei, dei principiul regitrilor cache are o aplicabilitate mai larg.
6.7 Paginarea
Paginarea este procedeul de realizare n memorie a unor blocuri fixe numite pagini, care pot fi
utilizate n mecanismul interschimbrii proceselor (transferul blocurilor ntre memoria intern i cea
extern).
Tehnica paginrii este larg folosit i este aplicat de unitatea de gestionare a memoriei (Memory
Management Unit, MMU). Paginarea utilizeaz directorul i tabele de descriptori a paginilor
structuri de date n memoria fizic (operativ). Unitatea MMU divizeaz adresa linear n pagini
virtuale de o mrime fix (4KB, 4MB, 2MB). Pe pagini similare este divizat i spaiul adreselor fizice.
Avantajele paginrii pot fi rezumate astfel:
Un obiect n memorie nu trebuie s fie continuu: pagina poate constitui o nou "cuant" de
informaie.
Arhitectura Calculatoarelor
70
Arhitectura Calculatoarelor
71
Figura 6.8
Figura 6.9 Structura elementelor paginrii pe 32 bii: a elementul din director (PDE),
b elementul tabelei de pagini (PTE)
Detalierea cmpurilor (figura 6.9) dintr-un element (fie din director, fie dintr-o tabel a paginilor) este
urmtoarea, ncepnd cu cei mai semnificativi bii:
a) Biii 12 31 constituie cei mai semnificativi 20 de bii ai adresei fizice a bazei unei tabele a
paginilor i respectiv a unei pagini propriu-zise.
b) Biii 911 sunt rezervai sistemului de operare. Se pot utiliza, de pild, n "strategia LRU (Least
Recently Used) pentru a determina timpul ct o pagin rmne "activ" n memona intern.
c) Biii 7 i 8 sunt rezervai pentru compatibilitate cu descendenii familiei Intel. n cazul de fa ei
sunt obligatoriu 0.
d) Bitul 6 notat cu D ("dirty") indic, numai n cazul tabelelor paginilor, pentru D = 1, dac a avut
loc o scriere n pagina selectat. Acest bit nu este definit pentru elementele din director.
e) Bitul 5 notat cu A ("accesat") indic, pentru A = 1, un acces de orice fel (scriere/citire) n pagin.
f) Biii 3 i 4 sunt folosii numai de Intel 486 n adresarea memoriei cache de pe cip (PCD -"page
cache disable" i PWT - "page write through").
g) Biii 1 i 2 sunt utilizai n mecanismul proteciei paginilor (R/W, U/S-User/Supervisor).
h) Bitul 0 notat cu P ("prezent") indic:
1) Pentru P = 1 - pagina este prezent n memoria intern, deci elementul poate fi folosit pentru
translatarea adresei liniare n adres fizic.
2) Pentru P = 0 - pagina este n memoria extern; n acest caz tot restul informaiei din element
este irelevant.
Arhitectura Calculatoarelor
72
Mecanismul paginrii permite i alte dou observaii interesante, care reflect aplicarea unor
principii mai generale:
a) Structura cu dou nivele de adresare indirect cu memoria pare greoaie i consum mult timp.
Ea este ns absolut necesar. ntr-adevr, s ne imaginm un singur nivel de adresare indirect. n
acest caz, n memoria fizic ncap 1M pagini, de cte 4 kB. Tabela de adresare ar trebui s conin
1M elemente de cte 4 B = 4 MB. Structura coerent cu director i tabele ale paginilor de cte 4
kB fiecare (exact ca i paginile propriu-zise) rezolv elegant aceast problem.
Figura 6.10
b) Problema timpului necesar pentru accesul ntr-o pagin din memorie se rezolv folosind
principiul general al memoriei asociative cache. Pentru a elimina strile suplimentare impuse de
mecanismul paginrii, unitatea care se ocup de aceasta conine o astfel de memorie, adresabil prin
coninut, denumit TLB ("translation lookaside buffer"). Principiul este prezentat n figura 6.10.
Memoria conine cele mai frecvent utilizate 32 de elemente din director i tabelele paginilor. De cte
ori este necesar accesul ntr-o pagin, se verific nti TLB. Dac aici se gsete elementul vizat (ceea
ce se numete "cache hit"), translatarea se face citind adresa corespunztoare din TLB, fr timpii
adiionali de calcul i cutare n tabele succesive. Reactualizarea TLB se face ori de cte ori nu se
gasete elementul cerut ("cache miss"). Evident TLB este complet rennoit cnd CR3 este ncrcat cu o
nou adres de baz a directotiilui. Intel ne asigur c n 98% dintre referinele n memorie,
mecanismul de translatare este nlocuit cu simpla citire a adresei din TLB.