Sunteți pe pagina 1din 19

Arhitectura Calculatoarelor

54

5 Modelul program ale microprocesoarelor de ultima generaie x86


Fiecare program la execuie obine anumite resurse ale microprocesorului. Aceste resurse sunt
necesare pentru executarea i pstrarea n memorie a instruciunilor i datelor programului, a
informaiei despre starea curent a programului i a microprocesorului. Totalitatea acestor resurse
reprezint modelul program al microprocesorului. La nceput vom prezenta modelul program al
microprocesoarelor Intel pe 32 bii, apoi microprocesoarele cu extensii pe 64 bii (AMDx86-64 i Intel
EM64T). Arhitectura IA-64 (procesoarele Itanium) nu este folosit n calculatoarele personale i nu se
studiaz n cazul dat.
Schema, prezentat n figura 5.1, reprezint modelul program al microprocesoarelor Intel pe 32 bii
(Intel Architecture (IA)-32).
Pentru fiecare grup de regitri, n paranteze, se indic ncepnd de la care model a aprut grupul dat
de regitri n modelul program al microprocesoarelor Intel. Dac nu este indicat, grupul dat de regitri
a fost prezent n microprocesoarele i386 i i486.
n modelul program al microprocesorului Intel intr:
Harta memoriei fizice (Pentium IV 236 1 B);
Setul de regitri generali;
Setul de regitri de segment;
Setul de regitri de stare i control;
Setul de regitri ai unitii de calcul n virgul mobil (coprocesorului);
Setul de regitri destinate extensiilor MMX, reflectai pe registrii coprocesorului (Pentium
MMX);
Setul de regitri destinate extensiilor MMX n virgul mobil (Pentium III);
Stiva. Structur de memorie, accesul la care se petrece cu instruciuni speciale (PUSH, POP).
Setul de regitri
Modelul program include cteva grupe de regitri folosite de programe:
Regitrii generali eax/ax/ah/al, ebx/bx/bh/bl, edx/dx/dh/dl, c/cx/ch/cl, ebp/bp, esi/si, edi/di,
esp/sp. Aceti regitri conin, de regul, operanzi i/sau rezultate aferente instruciunilor de
transfer i prelucrare a datelor;
Regitrii segment cs, ds, ss, es, fs, gs. Aceti regitri sunt folosite pentru crearea diviziunilor
logice n memorie numite segmente;
Regitrii coprocesorului st(0), st(l), st(2), st(3), st(4), st(5), st(6), st(7). Sunt folosii n calcule n
virgul mobil;
Regitrii extensiilor MMX (date mpachetate, ntregi) mmx0, mmx1, mmx2, mmx, mmx4,
mmx5, mmx6, mmx7;
Regitri extensiilor XMM (date mpachetate, n virgul mobil) mm0, mm1, mm2, mm,
mm4, mm5, mm6, mm7;
Regitri de stare i control conin informaia despre starea microprocesorului, programului n
execuie;
Registrul de fanioane eflags/flags;
Registrul indicator de instruciuni;
Regitrii de sistem dedicate controlului modurilor de funcionare microprocesorului.
Conponena setului regitrilor de sistem difer la diferite microprocesoare i din aceast cauz nu
sunt concretizai n figura 5.1.
Registrii notai n figur, de exemplu al, ah, ax , indic regitri pe 8 i 16 bii ale registrului extins
eax pe 32 bii (prefix e (Extended)).
Grupele de regitri de uz general, segment, registrul indicator de instruciuni, registrul de fanioane
ale Pentium IV au destinaii identice cu regitrii respectivi ale i8086, difernd numai prin lungimea lor.
Grupul de regitri segment a fost extins cu doi regitri de date gs i fs.
n registrul de fanioane au fost introdui indicatori noi (tabelul 5.1).

Arhitectura Calculatoarelor

55

Figura 5.1 Modelul program IA-32


Tabelul 5.1

RF

Fanionul reluare 16
(Resume Flag)

Se folosete la prelucrarea ntreruperilor provenite de la


registrul de reglare

VM

Fanionul modului 17
virtual 8086
(Virtual 8086
Mode)
Fanionul alinierii 18

Indicatorul funcionrii microprocesorului n mod virtual 8086:

AC

1 microprocesorul funcioneaz n modul virtual 8086


0 microprocesorul funcioneaz n modul real
Destinat controlului alinierii la adresarea memoriei

(Alignment
Check)

VIF

Fanionul

19

n modul virtual este analogic fanionului if. Fanionul vif se


folosete mpreun cu fanionul vip. A fost introdus n Pentium.

20

Se seteaz n 1 pentru indicarea ntreruperii amnate. Se


folosete n modul V mpreun cu fanionul vif. Introdus la
Pentium.

ntreruperii
Virtuale
(Virtual Interrupt
Flag)

VIP

Fanionul
ntreruperii
Virtuale amnate
(Virtual Interrupt
Pending flag)

Arhitectura Calculatoarelor

ID

Fanionul
identificrii
(IDentification
flag)

56
21

Indic susinerea instruciunii cpuid.

Modelul program ale microprocesoarelor 86-64


Extensiile 86-64 i 64 sunt destinate pentru majorarea spaiului de memorie adresabil:
regitrii pe 64 bii permit adresarea pn la 2 64=18,4 x 1018 Byte. Acest spaiu este limita de adresare a
microprocesoarelor pe 64 bii, dar practic sunt folosii numai 48 de bii, cei mai puin semnificativi.
Microprocesoarele ofer un sistem de privilegii pe 4 nivele destinat proteciei memoriei, spaiului
de intrare/ieire i ntreruperilor, i un mecanism destinat comutrii sarcinilor pentru sistemele de
operare multitask. Setul de instruciuni conine toate instruciunile microprocesoarelor precedente x86
i este extins cu noi instruciuni. Cu extensia setului de instruciuni se extinde i setul de regitri
arhitecturali (MMX, XMM, noi regitri de uz general pe 64 bii).
Microprocesoarele funcioneaz n diferite moduri, ce determin mecanismele de protecie i de
adresare a memoriei: modul real 8086 (pe 16 bii), modul virtual 8086 (V8086), modul protejat pe 32
bii (inclusiv protejat pe 16 bii). Modul de funcionare a microprocesorului este impus de sistemul de
operare n conformitate cu modul definit de aplicaii (task-uri). n microprocesoarele pe 64 bii au fost
introduse noi moduri de funcionare, ntre care sunt moduri de compatibilitate cu sistemele
operaionale i aplicaii pe 32 bii. Modurile noi introduse sunt folosite numai de sistemele de operare
pe 64 bii.
Modurile de funcionare a microprocesoarelor
Microprocesoarele pe 32 bii pot funciona n unul din urmtoarele moduri:
Modul de adresare real (real address mode), sau modul real (real mode), compatibil cu modul
8086. n acest mod este posibil adresarea pn la 1 MByte de memorie fizic.
Modul virtual protejat de adresare (protected virtual address mode), sau modul protejat
(protected mode). n acest mod microprocesorul conecteaz mecanismele de segmentare i
paginare. Mecanismul segmentrii permite accesarea la un spaiu de memorie virtual pn la 64
TByte. Practic este folosit numai mecanismul paginrii care asigur accesul fiecrei sarcini (task)
la 4 GByte memorie virtual. Implicit, adresele i operanzii sunt pe 32 bii. n modul protejat
microprocesorul poate executa instruciuni, inaccesibile n modul real, un ir de instruciuni de
transfer a controlului, prelucrare a ntreruperilor sunt executate n mod diferit de modul real.
Modul virtual 8086 (Virtual 8086 Mode, V86) este un mod deosebit al modului protejat, n care
microprocesorul funcioneaz ca 8086 (adresele i datele pe 16 bii). Pe un microprocesor, n
acest mod, pot fi executate n paralel cteva sarcini cu resurse izolate. Totodat adresarea
spaiului fizic de memorie este gestionat de mecanismele de segmentare i paginare. ncercrile
de a executa instruciuni nepermise, ieirea dup limitele spaiului de memorie i a spaiului de
intrare/ieire permis sunt controlate de sistemul de protecie. Mai efectiv este modul virtual
extins 8086 (Enhanced Virtual 8086 Mode, EV86) n care virtualizarea ntreruperilor este
optimizat.
n modul de gestiune a sistemului (System Management Mode, SMM) microprocesorul
acceseaz un spaiu de memorie izolat de alte moduri. Acest mod este folosit n scopuri de
control i reglare. De exemplu, invizibil sunt executate funciile de control asupra alimentrii, se
emuleaz adresrile la dispozitive inexistente (emularea tastaturii i mouse-lui PS/2 pentru
USB).
Pentru microprocesoarele 86-64 modurile enunate sunt grupate i grupa are denumire legacy mode,
dar a mai fost introdus un nou mod long mode cu dou submoduri:
Modul pe 64 bii (64-bit mode) acest mod susine adresarea virtual pe 64 bii i extensiile
regitrilor pe 64 bii. n acest mod este folosit numai modelul plat de memorie (un segment
comun pentru cod, date i stiv). Implicit adresa este pe 64 bii, a operanzilor 32 bii, dar cu
prefixul (REX) pot fi definii operanzi pe 64 bii. A fost introdus un nou mod de adresare
relativ la indicatorul de instruciuni. Acest mod este folosit de sistemele de operare (SO) pe 64
bii la lansarea aplicaiilor pe 64 bii este setat de SO pentru segmentul de cod a unei sarcini;
Modul de compatibilitate (compatibility mode) permite SO s execute aplicaii pe 32 i 16 bii.

Arhitectura Calculatoarelor

57

Pentru aplicaii microprocesorul reprezint un microprocesor pe 32 bii cu toate atributele


modului protejat, cu mecanismele de segmentare i paginare. Proprietile pe 64 bii sunt folosite
numai de SO ce se reflecteaz n procedurile de translatare a adreselor, de prelucrare a
excepiilor i ntreruperilor. Modul este setat de SO pentru segmentul de cod ale unei sarcini
concrete.
SO pe 32 bii folosesc microprocesoarele 86-64 numai n modul legacy mode (ca un
microprocesor IA-32).
Regitri de arhitectur i tipuri de date
Operanzii folosii de microprocesoare opereaz cu date de diferite tipuri:
Numere ntregi (cu sau fr semn) mrime de Byte, cuvnt (16 bii), cuvnt dublu (DWord, 32
bii), cuvnt din 4 Byte (QWord, 64 bii), cuvnt din10 Byte (TB, 80 bii) i cuvnt din 16 Byte
(DQWord, 128 bii);
Bii, cmpuri de bii, iruri de bii;
Numere n virgul mobil (FP) mrime 32, 64, 80 bii.
Posibilitatea de a folosi operanzi lungi (64 i 128 bii) a aprut n microprocesoarele cu extensiile
MMX i XMM. Maximal de rapid microprocesorul proceseaz datele ce se afl n regitrii si interni.
Componena regitrilor la care au acces aplicaiile este prezentat n figura 5.2.
Notaiile regitrilor pe 64 bii ncep cu litera R.
Microprocesoarele includ un set de regitri de sistem ce nu sunt folosite de aplicaii (n figur nu
sunt prezentai). La ei se refer regitrii de adrese de sistem, regitrii de control, regitrii pentru reglri
i testri. Un ir din aceti regitri sunt specifici (Model-Specific Registers, MSR), ce sunt destinate
controlului reglrilor, monitorizrii productivitii, controlului efectuat de microprocesor, gestionarea
memoriei cache .a. Componena lor difer la diferite microprocesoare, accesul este privilegiat.

Figura 5.2 Regitrii microprocesoarelor 86-64


Regitrii de uz general
Structura i destinaia regitrilor pe 32 bii este analogic IA-32. Au fost adugate 8 regitri de uz
general (R8...R15), adresarea a fost unificat: adresarea la fiecare din 16 regitri se petrece ca la un
registru pe 64-, 32-, 16- sau 8 bii (se folosesc numai biii inferiori).
RIP, n varianta pe 64 bii, poate fi utilizat la adresarea relativ a datelor.
Regitrii FPU
Regitrile blocului FPU sunt destinai executrii operaiilor aritmetice, calcului principalelor
funcii matematice (trigonometrice, exponente, logaritmi) .a. n diferite generaii de microprocesoare
acest bloc era numit FPU (Floating Point Unit- unitatea de prelucrare n virgul mobil) , NPX
(Numeric Processor extension extensie numeric a procesorului) sau coprocesor. Coprocesorul
prelucreaz 7 tipuri de date: numere ntregi pe 16, 32, 64 bii; numere n virgul mobil pe 32, 64, 80
bii (format FP) i 18 numere n cod binar-zecimal (BCD). Aplicarea coprocesorului accelereaz

Arhitectura Calculatoarelor

58

considerabil viteza de calcul.


Blocul MMX i extensiile 3DNow!
Tehnologia MMX este orientat aplicaiilor multimedia, grafica 2D/3D i comunicaiilor. Avantajul
principal al MMX const n prelucrarea concomitent a unui ir de date cu o instruciune conform
tehnologiei SIMD (Single Instruction Multiple Data). Tehnologia MMX prelucreaz noi tipuri de
date mpachetate n regitri pe 64 bii: 8 Byte, 4 cuvinte, 2 cuvinte duble, cuvnt pe 64 bii. Aceste date
sunt prelucrate n regitrile MMX0-MMX7, care reprezint 64 bii inferiori ai regitrilor FPU pe 80
bii.
Tehnologia 3DNow!
Tehnologia 3DNow! (21 instruciuni) a fost implementat de firma AMD n microprocesoarele
sale K6-2, pentru extinderea capacitilor blocului MMX. Aceast tehnologie prelucreaz date n
format FP 2 cuvinte pe 32 bii cu o precizie unitar i date mpachetate (8 Byte, 4 cuvinte, 2 cuvinte
duble, cuvnt pe 64 bii). n microprocesoarele Athlon setul de instruciuni a fost extins cu 24
instruciuni. Setul extins este notat - 3DNow!E. Noile instruciuni sunt destinate procesoarelor DSP (12
instruciuni), ce prelucreaz date n format FP, sa extins setul de instruciuni MMX (12 instruciuni
numere ntregi), extins gestiunea memoriei cache (7 instruciuni destinate accelerrii transferului de
date). Unele instruciuni coincid cu instruciunile din setul SSE. Setul 3DNow! Professional (72
instruciuni), introdus n microprocesoarele Sempron, este compatibil cu setul SSE i este notat
3DNow!P.
n microprocesoarele Intel extensiile 3DNow! nu sunt utilizate.
Blocul XMM i extensiile SSE
Extensiile SSE (Streaming SIMD Extensions) sunt destinate accelerrii prelucrrii fluxurilor mari
de date n virgul mobil (FP) i numere ntregi. Extensiile fluxurilor de date sunt realizate pe baza
regitrilor blocului XMM (8 regitri pe 128 bii la microprocesoarele pe 32 bii, 16 - la
microprocesoarele x86-64).
Regitrii XMM prelucreaz urmtoarele tipuri de date:
4 numere n virgul mobil cu precizie unitar (32 bii);
2 numere n virgul mobil cu precizie dubl (64 bii);
Numere ntregi: 16 Byte, 8 cuvinte, 4 cuvinte duble sau 2 cuvinte pe 64bii (numai n SSE2)
n procesoarele Pentium III este aplicat setul SSE, n Pentium 4 SSE2 destinat pentru prelucrarea
datelor n grafica 3D, codificarea/decodificarea video, cifrarea datelor. Apoi a fost aplicat i extensia
SSE3, iar n procesaorele moderne i SSE4.2. Blocul XMM i seturile SSE1, SSE2, SSE3 sunt aplicate
i n microprocesoarele AMD.
Setul de instruciuni
Setul de instruciuni ale microprocesoarelor x86 moderne, conine toate instruciunile ale
microprocesoarelor din generaiile precedente. Instruciunile pot fi divizate n instruciuni de uz
general, ce sunt folosite de diferite aplicaii i de sistem, ce sunt folosite de sistemul operaional pentru
crearea mediului de funcionare a aplicaiilor. n figura 5.3 sunt prezentate grupele de instruciuni ale
microprocesoarelor x86 n ordinea apariiei lor n microprocesoarele din diferite generaii i modele.
Instruciunile de uz general - instruciuni x86 pentru prelucrarea numerelor ntregi i sunt aplicate
practic de toate programele. Instruciunile modurilor pe 64 bii (long mode instructions) au aprut n
microprocesoarele pe 64 bii i sunt accesibile numai n modurile respective.
Instruciunile n virgul mobil x86 funcioneaz cu blocul FPU i prelucreaz date n virgul mobil:
80 bii precizie extins, 64 precizie dubl, 32 precizie unitar. Suplimentar susin formatul BCD.
Media instruciuni pe 64 bii prelucreaz datele ce se afl n regitrii MMX pe 64 bii. Ei opereaz
cu date ntregi i n virgul mobil, sunt destinate media aplicaiilor ce prelucreaz blocuri de date. Au
aprut cu implementarea regitrilor MMX, setul a fost extins cu instruciuni AMD Extension toMMX

Arhitectura Calculatoarelor

59

Figura 5.3 Setul de instruciuni ale microprocesoarelor x86


i parial cu instruciuni SSE, introduse de Intel. Instruciuni n virgul mobil au aprut n 3DNow!,
setul a fost extins cu instruciuni AMD Extensions to 3DNow! Instructions.
Media instruciuni pe 128 bii prelucreaz datele ce se afl n regitrii XMM pe 128 bii. Aceste
instruciuni opereaz cu date ntregi i n virgul mobil, sunt destinate media aplicaiilor ce
prelucreaz mari blocuri de date. n setul SSE sunt definite instruciuni n virgul mobil cu precizie
unitar (32 bii), n SSE2 au fost introduse instruciuni n virgul mobil cu precizie dubl (64 bii), n
SSE3 introduse 13 instruciuni (la setul din 144 instruciuni din SSE i SSE2). Un ir de instruciuni
reprezint puni ntre grupele de instruciuni susnumite. Ele asigur transferuri de date ntre blocurile
MMX, XMM i regitri de uz general. Un ir de instruciuni pot fi executate i n blocul MMX (i
FPU) i n blocul XMM.

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

Subliniem c pentru Intel PentiumIV o adres fizic are 36 bii:


AF=adr36,
ceea ce nseamna c harta memoriei fizice are 236 B = 64 GB. Afirmaia fcut anterior cu privire la
faptul c memoria virtual ntrece cu mult memoria fizic (intern) i gsete, deci, o prim
justificare.
Memoria virtual este divizat logic n dou jumti:
Pentru TI = 0 se definete "spaiul adreselor globale" folosit de ntregul sistem i "mprit" de
toate procesele pentru a nu fi nevoie s se multiplice procedurile generale pentru fiecare proces
n parte. Aici se afl sistemul de operare, librriile de proceduri, suportul pentru compilatoare
etc.
Pentru TI = 1 se definete "spaiul adreselor locale" care cuprinde segmentele de program i de
date pentru fiecare proces n parte.
n fiecare dintre cele dou zone adresabile de ctre un utilizator se pot forma 213 segmente = 8k
segmente.
Cmpul INDEX folosete pentru identificarea propriu-zis a unui segment. El acioneaz ca un
deplasament ntr-o tabel localizat n memorie numit tabel de descriptori. Fiecare descriptor
conine, ntre altele, adresa fzic a bazei unui segment precum i dimensiunea sa. Se observ deci c
se utilizeaz adresarea indirect cu memoria pentru identificarea unui segfment.
6.3 Generarea adresei fizice
Translatarea adresei logice n fizic pentru procesoarele pe 32 bii este ilustrat n figura 6.2.
Blocul segmentrii translateaz spaiul logic de adresare n spaiu linear de adrese pe 32 bii. Adresa
linear se formeaz prin adunarea adresei de baz a segmentului i adresei efective. Adresa de baz a
segmentului n mod real se obine prin deplasarea la stng cu patru poziii binare a valorii din
registrul de segment (ca n 8086). n mod protejat adresa de baz se ncarc din descriptor, ce se afl
ntr-un tabel de descriptori, selectat de selectorul ce se afl n registrul de segment utilizat.

Figura 6.2 Generarea adresei fizice n microprocesoarele pe 32 bii: n mod protejat,


b n mod V86, c n mod real
Adresa fizic este format dup translatarea adresei lineare cu ajutorul unitii de paginare. Adresa
se plaseaz pe magistrala extern a procesorului. Cnd unitatea de paginare este deconectat adresa
fizic coincide cu cea linear. Unitatea de paginare activat translateaz adresa linear n cea fizic ce
localizeaz pagini de 4 KByte (2 sau 4 MB). Unitate de paginare poate fi activat numai n modul
protejat.
n modul pe 64 bii segmentarea nu se folosete (figura 6.3, a): aplicaiile opereaz cu adrese
virtuale lineare. n microprocesoare cu extensii pe 64 bii mecanismul segmentrii este utilizat numai
n modul de compatibilitate (figura 6.3, b). Prile superioare ale acestor adrese trebuie s fie egale cu
zero, n caz contrar mecanismul proteciei va fixa excepie. Din regitrii de segment procesorul
utilizeaz numai regitrii CS, FS i GS. n descriptorul indicat de CS sunt utilizate numai atributele:
indicatorul modului pe 64 bii, implicit mrimea operandului i nivelul de privilegii.
Regitrii FS i GS sunt utilizai n noul mod de adresare: adresa de baz din descriptorul de
segment poate fi utilizat ca deplasament la calculul adresei (efective, virtuale i lineare acum noiuni
identice). Unitatea de paginare permite utilizarea adresei fizice cu o lungime diferit de lungimea
adresei lineare.

Arhitectura Calculatoarelor

64

Figura 6.3 Generarea adresei fizice n microprocesoarele cu extensii pe 64 bii:


n mod pe 64 bii, b n mod de compatibilitate
n microprocesoarele cu extensii pe 64 bii, adresa linear este limitat la 48 bii, iar adresa fizic
pn la 52 bii.
6.4 Descriptori i tabele de descriptori
Descriptorul constituie elementul de baz n definirea infomiaiilor legate de segmentarea i
gestionarea memoriei virtuale precum i de mecanismul proteciilor proceselor. Descriptorii sunt
folosii pentru o coeren maxim n descrierea celor mai diferite entiti informaionale. Astfel, exist
urmtoarcle tipuri de descriptori:
a) Descriptorii segmentelor care permit identificarea segmentelor uzuale de lucru (de programe
i/sau de date).
b) Descriptorii speciali de control care sunt, la rndul lor, de mai multe feluri:
1) Descriptorii segmentelor de sistem, segmente care sunt folosite de microprocesor n
mecanismul gestionrii memoriei.
2) Descriptorii "segmentelor de stare a proceselor" prin care se poate implementa mecanismul
multiprocesrii.
3) Descriptorii "porilor" (Gate) folosii n mai multe tipuri de aciuni:
protecia multi-nivel, multiprocesarea, rspunsul la cererile de ntreruperi.
Pentru familia de microprocesoare Intel, forma general a unui descriptor este reprezintat n
Figura 6.4 Indiferent de tip, un descriptor are 8B (numerotai n figur de la 0 la 7), fiecare octet avnd
semnificaii precizate.
Cei 8B ai descriptorului au urmtoarele semnificaii:
7

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

Bitul 5 este 0 pentru compatibilitate cu descendenii familiei Intel.


Bitul 4, notat cu AVL este la dispoziia utilizatorului ("disponibil").
Se degaj cteva concluzii generale despre descriptorii de segment, indiferent de tipul
microprocesorului:
Segmentele de sistem de tip LDT nu pot fi n mod explicit nici citite, nici nscrise, nici executate.
Ele sunt utilizate numai n mecanismul translatrii n spaiul adreselor locale. Pentru a crea o
LDT, sistemul de operare creeaz n GDT un descriptor pentru un segment de date, nscrie
informaiile n segmentul definit cu acest descriptor, apoi schimb tipul descriptorului prin
modificarea biilor corespunztori din ATRIBUTE.
Informaia coninut n descriptor este deosebit de bogat. Astfel:
1. Se precizeaz adresa fizic a bazei segmentului precum i dimensiunea sa. Bitul ED ajut la
interpretarea acestei dimensiuni.
2. Biii P i A ajut sistemul de operare s decid care segmente vor fi meninute n memoria
intern.
3. Se pot distinge segmentele de program, de date i speciale.
4. Biii R i W definesc accesul n segmente, asigurnd o prim protecie.
5. Cmpul DPL i bitul C asigur privilegii suplimentare.
Orice nclcare a unui tip de protecie este semnalat prin verificare "hardware" cu o cerere de
ntrerupere dedicat.
Tabelele de descriptori guverneaz interpretarea adreselor virtuale. Orice translatare a adreselor
virtuale n adrese fizice face apel implicit la aceste tabele. Exist trei categorii de tabele de descriptori:
1. "Tabela descriptorilor globali" (GDT) destinat s conin informaiile pentru o descriere
complet a spaiului adreselor globale. S reinem c exist o singur tabel de acest fel.
2. "Tabelele de descriptori locali" (LDT) conin informaiile din spaiul adreselor locale folosite de
unul sau mai multe procese.
3. Tabela de descriptori de ntrerupere (IDT), folosit n modul protejat, poate conine pn la 256
ntreruperi.
n mod normal, fiecare proces trebuie s aib acces la trei tabele de descriptori care s-i defineasc
spaiul adreselor virtuale ce i este destinat. n acest fel se asigur toate proteciile necesare pentru a nu
depi acest spaiu dar nici pentru a nu fi afectat de alte procese. Cele trei tabele sunt: Tabela
descriptorilor globali (folosit de toate procesele), o Tabel de descriptori locali particular (privat sau
"mprit" cu un grup de procese nrudite) i tabela de descriptori de ntreruperi (accesarea
ntreruperilor cu instruciuni INT, ntreruperi Hard, excepii ale microprocesorului).
Pentru sistemele cele mai simple, n care protecia proceselor nu este necesar, poate fi definit doar
spaiul adreselor globale i deci GDT este suficient.
O tabel poate avea 8k descriptori necesari pentru a defini un maximum de 8k segmente
poteniale. O tabel poate avea un numr predefinit de descriptori chiar dac la un moment dat nu sunt
definite tot attea segmente. Acest lucru este asigurat prin rezervarea spaiului din tabel unor
"descriptori nuli": descriptori pentru care cmpul atribute este 0H, ceea ce semnific faptul c aceti
descriptori nu identific nici-un segment n memoria virtual.
Fiecrui tabel i corespunde un registru al procesorului (GDTR, LDTR i IDTR). Instruciunile ce
ncarc regitriile LGDT, LLDT i LIDT sunt privilegiate (nivelul 0).
Sistemul de privilegii
Sistemul de privilegii pe 4 nivele este destinat gestionrii instruciunilor privilegiate i accesului la
descriptori. Nivelele sunt numerotate 0-3, nivelul zero corespunde accesului nelimitat i este destinat
nucleului sistemului operaional (SO). Nivelul 3, acces minimal i practic este destinat aplicaiilor.
Serviciile oferite proceselor, sarcinilor (tasks) pot avea diferite niveluri de protecie. Transferul
controlului ntre sarcini este gestionat de pori (Gate), ce controleaz regulile de utilizare a nivelelor de
privilegii. Utiliznd porile, sarcinile pot primi acces la serviciile segmentelor din diferite nivele.
Nivelele de privilegii sunt destinate descriptorilor, selectorilor i sarcinilor. n registrul de fanioane
sunt indicatori de privilegii de intrare/ieire, cu ajutorul crora este asigurat controlul accesului la
instruciunile de intrare/ieire i controlul fanionului de ntreruperi.
Descriptorii i privilegiile sunt baza sistemului de protecie: descriptorii determin structura
elementelor de program, iar privilegiile determin posibilitatea de accesare la descriptori i executarea

Arhitectura Calculatoarelor

67

instruciunilor privilegiate. Orice violare a proteciei provoac apariia excepiilor speciale care sunt
prelucrate de nucleul SO.

Figura 6.5 Nivelele de privilegii


Mecanismul memoriei virtuale permite fiecrei sarcini utilizarea spaiului logic de adresare cu
dimensiunea pn la 64 TByte (16 K segmente de 4 GByte). Prezena fiecrui segment n memoria
operativ, la un moment dat, este indicat de un bit n descriptorul segmentului. Segmentul neutilizat
poate fi descrcat din memoria operativ n cea extern (de exemplu, harddisk), fapt ce este notificat n
descriptor. Spaiul eliberat poate fi utilizat pentru restabilirea componentelor altui segment (procesul
swapping) i n descriptor se notific prezena n memorie. Cnd un proces adreseaz segmentul ce nu
este prezent n memorie, procesorul formeaz excepie respectiv i segmentul (pagina) se ncarc n
memoria operativ.
6.5 Translatarea adresei virtuale
Mecanismul de translatare pornete de la cele dou entiti informaionale din adresa virtual
(selector i adresa efectiv):
Selectorul furnizeaz, la rndul su, urmtoarele informaii:
1) Prin intermediul lui TI se identific tipul de tabel.
2) Cmpul INDEX este multiplicat cu 8 (un descriptor are 8B) i se obine poziia relativ fa de
baza tabelei, identificndu-se astfel un descriptor din tabel.
Din descriptor se extrage:
a) Adresa fizic a bazei segmentului ("BAZA") pe 4 octei.
b) Dimensiunea segmentului vizat ("LIMITA") pe 20 de bii.
Adresa efectiv se adun la BAZA obinut indirect cu ajutorul selectorului (aa cum artam mai
sus) obinndu-se astfel adresa fizic (AF) a informaiei din segmentul vizat. Concomitent se
verific dac dimensiunea prestabilit a segmentului nu este depit:
AE LIMITA
Mecanismul translatrii adresei virtuale (TI=1) este dat n Figura 6.6.
Stabilirea bazei tabelei de descriptori depinde de tipul de tabel: n spaiul adreselor globale sau
locale.
n spaiul adreselor globale, GDT are o modalitate mai simpl de definire: fiind unic, baza i
lungimea sa sunt stocate ntr-un registru intern al microprocesorului: "Registrul tabelei de descriptori
globali" (GDTR). Accesul la acest registru este asigurat de instruciuni privilegiate, astfel nct un
utilizator obinuit s nu poat avea acces la redefinirea acestei tabele (reamintim c GDT este folosit
de toate procesele, inclusiv de sistemul de operare).

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

Putem nota urmtoarele observaii:


Orice LDT este privit ca un segment, dar nu unul obinuit, ci un segment de sistem. Fiecare
astfel de segment trebuie s se afle n spaiul adreselor globale, deci descriptorii pentru LDT-uri
se vor afla n GDT.
GDT nu are nevoie de un descriptor special adresa fizic a bazei sale precum i dimensiunea sa
sunt stocate ntr-un registru dedicat.
6.6 Regitri "cache"
Examinnd modul de translatare a adreselor virtuale se poate observa c referinele n memorie,
mai ales n spaiul adreselor locale, implic multe operaii i necesit un timp lung.
Microprocesorul PentiumIV aplic n acest caz o metod de a minimiza timpul de acces n
memorie.
Presupunnd c referinele n memorie se fac mai des dect schimbarea informaiei din regitrii
segment i dect schimbarea procesului activ (deci schimbarea selectorului din LDTR) s-a recurs la
folosirea unor regitri ascuni ("cache").

Arhitectura Calculatoarelor

69

Figura 6.7 prezint regitrii cache ale microprocesorului.


Se observ c regitrii segmentelor, precum i LDTR au "o prelungire" invizibil utilizatorului. Aici se
afl toate informaiile necesare din descriptorul asociat selectorului din registrul respectiv.
Ori cate ori este ncrcat un registru segment "vizibil" cu un selector, se ncarc i cei octei utili
din descriptorul asociat n registru cache respectiv. Aici se afl adresa fizic a bazei segmentului vizat,
dimensiunea sa precum i drepturile de acces. Deci toate informaiile necesare unei referine n
memorie sunt stocate n aceti regitri care reprezint o "memorie" pe cip, foarte rapid adresabil.
Adresa fizic se calculeaz direct prin suma dintre baza segmentului, aflat n registrul cache, i adresa
efectiv din adresa virtual specificat conform modului de adresare. Concomitent se pot face toate
verificrile necesare (dac informaia este n interiorul dimensiunii predefinite a segmentului, dac
segmentul e prezent, ce tip de segment este vizat etc).
SELECTOR
15

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

Mecanismul paginrii i, implicit, ntreaga tehnic de a schimba continuu blocuri fixe de


informaii ntr memoria intern i cea extern nu sunt vizibile utilizatorului.
Paginarea introduce i o nou noiune legat de adrese: adresa liniar. Acest tip de adres rezult n
urma translatrii adresei virtuale i urmeaz, la rndul ei, s fie translatat n adres fizic.
Notm urmtoarele observaii preliminare:
mecanismul paginrii se aplic numai n funcie de bitul de granularitate (G) din descriptorii de
segmente.
adresa virtual, alctuit din selector i adresa efectiv, este translatat n adresa liniar i apoi n
cea fizic. Ca i adresa fizic, adresa liniar (AL) este de 32 de bii.
Dimensiunea maxim a unui segment n memoria virtual se obine numai pentru G = 1, n acest
caz un segment poate avea:
220 pagini * 212 B/pagin = 232 B = 4 GB.
Mecanismul paginrii (pagini pe 4K) are urmtoarele elemente eseniale:
Se utilizeaz dou nivele de adresare indirect cu memoria, astfel nct, pn s se ajung la
pagina propriu-zis, se face o referin ntr-un "director" din care se selecteaz o "tabel a
paginilor".
Toate obiectele din memorie implicate (directorul i tabelele) sunt tratate la rndul lor ca nite
pagini speciale; deci au toate mrimea fix de 4 kB. Se pstreaz astfel principiul coerenei
informaiei n memorie (ca i n cazul segmentelor).
Att directorul ct i tabelele de pagini au structur uniform fiind formate din 1 k "elemente" de
cte 4 octei. Senmificaia informaiei din aceste elemente va fi detaliat n cadrul acestui
subcapitol. Ne limitm s menionm acum c aici se gsete adresa bazei tabelei i respectiv a
paginii selectate.
Orice adres a bazei unei tabele sau a unei pagini este dat pe 20 de bii, acetia constituind
partea mai semnificativ a adresei fizice vizate. Toate blocurile n memorie sunt "aliniate" din 4
kB n 4 kB, deci, automat cei mai puin semnificativi 12 bii ai adreselor fizice ale bazelor sunt 0.
Adresa fizic a bazei directorului se afl ntr-unul din regitrii de control ai microprocesorului
CR3 (Page Directory Physical Base Address) (desigur i aici cei mai puin semnificativi 12 bii ai
adresei sunt 0).
Mai menionm c registrul de control CR2 este i el utilizat n paginare, dar pentru verificarea
corectitudinii procedeului; el conine adresa liniar la care se detecteaz ultima eroare n mecanismul
paginrii (Page Fault Linear Address). Se genereaz un cod de eroare care se ncarc n stiva aferent
procesului activ.
Figura 6.8 prezint modul n care se produce paginarea prin cele dou nivele de adresare indirecta
cu memoria.

Arhitectura Calculatoarelor

71

Figura 6.8

Adresa liniar cuprinde trei entiti informaionale:


AL=Directory Table Offset
n care:
a) Director (Directory) este un cmp de 10 bii. Acetia, concatenai cu 00, formeaz adresa
relativ la baz a elementului vizat din director. Concatenarea cu 00 este normal pentru c un
element are 4 B, deci informaia este "aliniat" din 4B n 4B.
b) Tabela (Table) este un cmp de 10 bii. Tot prin concatenare cu 00 formeaz adresa relativ la
baz a elementului selectat dintr-o tabel a paginilor.
c) Offset este un cmp de 12 bii care localizeaz informaia n pagina selectat. Evident i aceast
adres este relativ la adresa fizic a bazei paginii.
Directorul (4KB) conine 1024 elemente pe 32 bii - PDE (Page Directory Entry) (figura 6.9,a). Tabela
de pagini conine tot 1024 elemente pe 32 bii - (Page Table Entry) (figura 6.9, b) i aceste
elemente conin adresa fizic de baz (Page Frame Address) i atributele paginilor.

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.

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