AC03ro

download AC03ro

of 19

description

Arhitectura Calculatoarelor partea 3

Transcript of AC03ro

5

72 Arhitectura Calculatoarelor 5 Modelul program ale microprocesoarelor de ultima generaie x86Fiecare 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 registre, n paranteze, se indic ncepnd de la care model a aprut grupul dat de registre n modelul program al microprocesoarelor Intel. Dac nu este indicat, grupul dat de registre 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 registre generali; Setul de registre de segment; Setul de registre de stare i control; Setul de registre ai unitii de calcul n virgul mobil (coprocesorului); Setul de registre destinate extensiilor MMX, reflectai pe registrii coprocesorului (Pentium MMX); Setul de registre destinate extensiilor MMX n virgul mobil (Pentium III); Stiva. Structur de memorie, accesul la care se petrece cu instruciuni speciale (PUSH, POP).

Setul de registreModelul program include cteva grupe de registre folosite de programe: Registre 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. Aceste registre conin, de regul, operanzi i/sau rezultate aferente instruciunilor de transfer i prelucrare a datelor; Registre segment cs, ds, ss, es, fs, gs. Aceste registre sunt folosite pentru crearea diviziunilor logice n memorie numite segmente; Registre coprocesorului st(0), st(l), st(2), st(3), st(4), st(5), st(6), st(7). Sunt folosii n calcule n virgul mobil; Registre extensiilor MMX (date mpachetate, ntregi) mmx0, mmx1, mmx2, mmx, mmx4, mmx5, mmx6, mmx7; Registre extensiilor XMM (date mpachetate, n virgul mobil) mm0, mm1, mm2, mm, mm4, mm5, mm6, mm7; Registre de stare i control conin informaia despre starea microprocesorului, programului n execuie; Registrul de fanioane eflags/flags; Registrul indicator de instruciuni; Registre de sistem dedicate controlului modurilor de funcionare microprocesorului.Conponena setului registrelor 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 registre pe 8 i 16 bii ale registrului extins eax pe 32 bii (prefix e (Extended)).Grupele de registre de uz general, segment, registrul indicator de instruciuni, registrul de fanioane ale Pentium IV au destinaii identice cu registrele respective ale i8086, difernd numai prin lungimea lor.Grupul de registre segment a fost extins cu dou registre de date gs i fs.n registrul de fanioane au fost introdui indicatori noi (tabelul 5.1).

Figura 5.1 Modelul program IA-32Tabelul 5.1

Modelul program ale microprocesoarelor 86-64Extensiile 86-64 i 64 sunt destinate pentru majorarea spaiului de memorie adresabil: registrele pe 64 bii permit adresarea pn la 264=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 registre arhitecturali (MMX, XMM, noi registre 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 microprocesoarelorMicroprocesoarele 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 registrelor 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. 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).Registre de arhitectur i tipuri de dateOperanzii 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 registrele sale interne. Componena registrelor la care au acces aplicaiile este prezentat n figura 5.2.Notaiile registrelor pe 64 bii ncep cu litera R. Microprocesoarele includ un set de registre de sistem ce nu sunt folosite de aplicaii (n figur nu sunt prezentai). La ei se refer registrele de adrese de sistem, registrele de control, registrele pentru reglri i testri. Un ir din aceste registre sunt specifice (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 Registrele microprocesoarelor 86-64

Registrele de uz generalStructura i destinaia registrelor pe 32 bii este analogic IA-32. Au fost adugate 8 registre de uz general (R8...R15), adresarea a fost unificat: adresarea la fiecare din 16 registre 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.

Registre FPURegistrele 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 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 registre pe 64 bii: 8 Byte, 4 cuvinte, 2 cuvinte duble, cuvnt pe 64 bii. Aceste date sunt prelucrate n registrele MMX0-MMX7, care reprezint 64 bii inferiori ai registrelor 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 SSEExtensiile SSE (Streaming SIMD Extensions) sunt destinate accelerrii prelucrrii fluxurilor mari de date n virgul mobil (FP). Extensiile fluxurilor de date sunt realizate pe baza registrelor blocului XMM (8 registre pe 128 bii la microprocesoarele pe 32 bii, 16 - la microprocesoarele x86-64).Registrele 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 instruciuniSetul 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 registrele MMX pe 64 bii. Ele opereaz cu date ntregi i n virgul mobil, sunt destinate media aplicaiilor ce prelucreaz blocuri de date. Au aprut cu implementarea registrelor MMX, setul a fost extins cu instruciuni AMD Extension toMMX

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 registrele 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 registre de uz general. Un ir de instruciuni pot fi executate i n blocul MMX (i FPU) i n blocul XMM.

6 Gestionarea memoriei6.1 Memoria virtualVom 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 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 registre cache care prelungesc, transparent pentru utilizator, informaia din registrele 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 264 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.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 biiVom 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 adr32Aceasta 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 RPLFigura 6.1 prezint: a) configuraia adresei virtuale i b) configuraia selectorului pentru microprocesorul Intel PentiumIV.

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 TBSubliniem 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 fiziceTranslatarea 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 realAdresa 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 registrele de segment procesorul utilizeaz numai registrele 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. Registrele 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.

Figura 6.3 Generarea adresei fizice n microprocesoarele cu extensii pe 64 bii: n mod pe 64 bii, b n mod de compatibilitaten 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 descriptoriDescriptorul 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:

Figura 6.4

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. 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 registrele LGDT, LLDT i LIDT sunt privilegiate (nivelul 0).

Sistemul de privilegiiSistemul 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 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 virtualeMecanismul 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 LIMITAMecanismul 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).

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 Registre "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 registrele segment i dect schimbarea procesului activ (deci schimbarea selectorului din LDTR) s-a recurs la folosirea unor registre ascunse ("cache").Figura 6.7 prezint registrele cache ale microprocesorului.Se observ c registrele 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 aceste registre 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).

Figura 6.7

Registrele 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: LGDTPentru 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 registrele care iau parte la mecanismul gestionrii memoriei, dei principiul registrelor cache are o aplicabilitate mai larg.

6.7 PaginareaPaginarea 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. 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 registrele de control ale 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.

Figura 6.8

Adresa liniar cuprinde trei entiti informaionale:AL=Directory Table Offsetn 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.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.

13