Sunteți pe pagina 1din 23

Organizarea i accesarea regitrilor

Cele mai vizibile i accesibile componente ale unui microprocesor, din punctul de vedere al unui programator, sunt regitrii acestuia. Pentru a putea prelucra instruciunile unui program procesorul trebuie s conin un tip de memorie n care s aduc instruciunile i datele din memoria principal. Acest tip de memorie poart denumirea de regitrii microprocesorului. Acetia sunt formai din 8, 16, 32 sau 64 de bii i sunt ntrebuinai la diferite operaii. Fiecare registru este specializat, adic folosit de procesor ntr-un scop bine determinat. Registrele sunt mprite n dou mari categorii: registre de uz general i registre speciale. Registrele de uz general sunt folosite pentru a memora variabilele locale ct i rezultatele intermediare ale calculelor. n continuare vom discuta despre procesoarele 8088/8086, 80188/80186, 80286, i 80386/80486/80586/Pentium, precum i despre procesoarele de tip RISC, specificnd n fiecare context despre care tip de microprocesor este vorba. n istoria familiei de microprocesoare Intel, fiecare generaie de microprocesoare a motenit structura celei dinainte mbuntind-o. De exemplu familiile de microprocesoare Intel 8088/8086, 80188/80186, 80286 au avut regitrii de 8-16 bii iar familiile de microprocesoare Intel 80386/80486/80586/Pentium au avut sau au regitrii extini de pn la 32 de bii. Mai jos este prezentat structura general a unui calculator mpreun cu legturile
PROCESOR Hard disc Imprimant

UAL

R1 R2 R3

Memorie

circuit de comand

Rn-1 PC

Controlor de memorie

Controlor de disc

Controlor de imprimant

BUS

interne i externe ale microprocesorului. Proiectanii microprocesoarelor Intel au clasificat regitrii n trei categorii: regitrii de 1

uz general care sunt folosii pentru a memora variabilele locale ct i rezultatele intermediare ale calculelor, regitrii segment cu ajutorul crora se pot accesa blocuri de memorie principal numite segmente, i doi regitrii speciali.

regitrii de uz general la 8086 Regitrii de uz general Procesoarele 8086 au urmtorii 8 regitrii de uz general de 16 bii: ax, bx, cx, dx, si, di, bp i sp. Fiecare dintre ei pot fi folosii pentru orice operaie posibil, dar sunt folosii de ctre programatori n urmtoarele scopuri: -

AX (Accumulator Register) este registrul acumulator BX

i este principalul registru

aritmetic, n el fcndu-se majoritatea calculelor aritmetice i logice. (Base Register) este folosit la memorarea adreselor de memorie (accesarea indirect a memoriei).
-

CX (Count Register) joac rol de contor n bucle, adic contorizeaz numrul de iteraii a unei instruciuni de ciclare LOOP sau specific numrul de caractere dintr-un ir.

DX (Data Register) are dou ntrebuinri speciale: se folosete la mprire i nmulire i mpreun cu AX conine produsul, respectiv dempritul pe 16 de bii i se mai folosete la memorarea adreselor de I/O atunci cnd se acceseaz date de pe magistrala de I/O.

SI i DI (Source Index i Destination Index) sunt folosii la fel ca registrul BX pentru accesarea indirect a memoriei i mai sunt folosii mpreun la prelucrarea irurilor, cu SI specificnd irul surs i DI irul destinaie.

BP (Base Pointer)este indicator de baz n cadrul local de stiv adic este folosit pentru accesarea parametrilor i a variabilelor locale dintr-o procedur. SP (Stack Pointer) indicator de stiv, conine adresa de memorie a stivei programului n curs de execuie. Acest registru nu trebuie ntrebuinat n alte scopuri.

Regitrii ax, bx, cx, dx pot fi folosii i la jumtate din capacitate, adic pot fi mprii n cte doi regitrii de cte 8 bii: AH, Al, BH, BL, CH, CL, DH, DL (H High byte, L Low byte). Regitrii de segment Procesorul 8086 are patru regitrii de segment: cs (Code Segment), ds(Data Segment), es(Extra Segment), i ss(Stack Segment). Acetia au dimensiunea de 16 bii i sunt folosii pentru selectarea blocurilor( segmentelor) de memorie din memoria principal. De exemplu CS registru segment de program i conine adresa nceputului blocului (segmentului) de memorie ce conine programul principal. DS registru segment de date i conine adresa variabilelor globale ale programului. ES registru segment suplimentar de date i este folosit n cazul n care nu se pot modifica ceilali regitrii. SS registru segment de stiv i conine adresa de baz (nceput) a stivei. Stiva este o parte din memorie n care procesorul memoreaz adresa de ntoarcere dintr-o procedur (subrutin), parametrii procedurilor i variabile locale. Nu este indicat s se modifice la ntmplare coninutul regitrilor segment deoarece acetia conin adresele segmentelor de memorie folosite n program. Regitrii speciali Exist doi regitrii speciali: instruction pointer (ip) registru pe 16 bii care conine adresa instruciunii curente. Registrul fanion (flags register) are 16 bii i este un colector de informaii de un bit ce reprezint strile procesorului. La descrierea instruciunilor microprocesorului se va specifica la fiecare instruciune care bit este afectat i n ce mod. Programatorul nu are acces la aceti regitrii, ei pot fi modificai automat de ctre microprocesor. 3

Registrul fanion (flags register) Familiile de microprocesoare Intel 80386/80486/80586/Pentium au urmtoarele modificri fa de microprocesorul 8086: (a) regitrii extini pn la 32 de bii astfel: regitrii ax, bx, cx, dx, si, di, bp, sp, flags i ip extini la 32 bii. Aceste noi versiuni sunt denumite eax, ebx, ecx, edx, esi, edi, ebp, esp, flags, i eip. (b) n plus doi regitrii de segment de 16 bii fiecare: FS i GS care mpreun cu ceilali patru regitrii de segment permite programatorului s poat accesa ase segmente de memorie deodat.

regitrii microprocesorului 80386

regitrii microprocesorului Pentium I

Memoria Principal RAM


Memoria este acea parte a unui calculator n care pot fi pstrate programele i datele pe o perioad mai scurt sau mai lung de timp. Memoria n care sunt pstrate programele nainte de execuie se numete RAM (Random Access Memory), memorie cu acces aleator. Acest tip de memorie se mai numete i memorie principal. Fr o memorie din care procesoarele s poat citi i n care s poat scrie informaii nu ar putea fi proiectat nici un calculator numeric cu program memorat. Unitatea elementar a memoriei este bitul. Un bit poate conine valoarea 0 sau 1. Informaia numeric poate fi pstrat fcnd distincie ntre dou valori diferite ale unei mrimi fizice continue, cum ar fi tensiunea sau curentul. Cu ct numrul de valori distincte

este mai mare, cu att nivelul de separaie ntre dou valori consecutive este mai redus, i memoria este mai puin sigur. n acest capitol vom vorbi despre memoria principal (RAM). Adrese de memorie Memoriile sunt alctuite din grupuri de bii care se numesc celule sau locaii de memorie. Acestea pot pstra, fiecare o parte a informaiei . Fiecare celul are un numr numit adres, prin care programele se pot referi la ea. O memorie cu n celule, are adresele cuprinse ntre 0 i n-1. Toate celulele unei memorii pot conine acelai numr de bii. Dac o celul poate conine k bii, ea poate memora oricare dintre cele 2k combinaii diferite. n figura urmtoare sunt prezentate trei organizri diferite pentru o memorie de 96 de bii. Celulele de memorie adiacente au adrese consecutive.

Celule de memorie

Adrese de memorie

Trei moduri de organizare pentru o memorie de 96 de bii. Dac o adres are m bii atunci numrul maxim de celule adresabile este 2m. De exemplu, o adres folosit pentru a referi memoria din figura a are nevoie de cel puin 4 bii ca s poat exprima toate numerele de la 0 la 11. Pentru figura b i c este suficient o adres de 3 bii. Numrul de bii din adres determin numrul maxim de celule adresabile direct n

memorie i nu depinde de numrul de bii ai celulei. Att o memorie cu 212 celule de cte 8 bii fiecare, ct i o memorie cu 212 celule de cte 64 de bii fiecare, necesit adrese pe 12 bii. Celula de memorie este cea mai mic unitate de memorie adresabil. Toi productorii de calculatoare au adoptat standardul celulei de 8 bii, adic de un octet (byte). Octeii sunt grupai n cuvinte de cte 32 sau 64 de bii. Un calculator cu un cuvnt de 32 de bii are 4 octei/cuvnt, iar unul cu un cuvnt de 64 de bii are 8 octei/cuvnt. Importana cuvntului provine din faptul c majoritatea instruciunilor opereaz cu cuvinte ntregi, de exemplu adun dou cuvinte. Astfel, o main pe 32 respectiv 64 de bii va avea registre de 32 respectiv 64 de bii i instruciuni pentru prelucrarea cuvintelor de 32 respectiv 64 de bii. n urmtoarele dou figuri sunt prezentate tipurile de date ce pot fi reprezentate n memorie (a) precum i aranjarea lor n memorie (b).

(a)

(b) Tipuri i capsule de memorie ncepnd din anii 90 memoria primar este fabricat ca un singur cip (circuit integrat) care aveau o capacitate cuprins ntre 1K i 1Mb care puteau fi nfipte ntr-unul din soclurile de memorie ale plcii de baz a calculatorului. n prezent se folosete o alt variant. Un grup de cipuri, de obicei 8 sau 16, sunt cablate pe o plac de dimensiuni reduse i vndute ca o singur unitate. Aceast unitate se numete SIMM (Single Inline Memory Module) sau DIMM (Dual Inline Memory Module), n funcie de cum este plasat seria de conectori pe o singur parte sau pe ambele pri ale plcii.

Cipuri de memorie conectori

Fig 4.2 Un modul de memorie cu o singur serie de conectori (SIMM) cu capacitatea de 32Mb. Dou cipuri controleaz SIMM-ul. Memoriile pot avea o capacitate de 32Mb, 64Mb sau 128Mb, 256 Mb, . O alt caracteristic a memoriei primare este viteza de lucru, care poate fi de 60ns, 70ns sau de 80ns.

Organizarea fizic i logic a memoriei principale la microprocesoarele 80x86


CPU este conectat la memoria principal prin magistrala de adrese i date. Pentru a accesa un element de memorie procesorul transmite pe magistrala de adrese adresa elementului de memorie specificat. Memoria principal poate fi vzut ca un tablou de octei. Folosind sintaxa Pascal avem: Memory : array [0..MaxRAM] of byte; Unde MaxRAM reprezint numrul maxim de octei de memorie principal care pot fi accesai prin intermediul magistralei de adrese. Scrierea n memorie este echivalent cu Memory [address] := Value_to_Write; Citirea unui element de memorie este echivalent cu Value_Read := Memory [address]; Cu o singur linie pe magistrala de adrese, procesorul poate crea exact dou adrese unice: 0 i 1. Cu un numr de n linii de adres pe magistral, un procesor poate cerea, i deci accesa , 2n adrese unice. Deci numrul linii de adrese de pe magistrala de adrese determin numrul maxim de celule de memorie adresabile i de locaii de I/O. De exemplu, un procesor cu 20 de linii de adres poate accesa pn la 1,048,576 (sau 220) de locaii de memorie. n continuare este prezentat un tabel cu numele procesorului, dimensiunea magistralei de adrese i cantitatea maxim de memorie adresabil.

Procesor

Mrime registre interne

Lime magistral date 8 bii 16 bii 16 bii 16 bii 32 bii 64 bii 64 bii 64 bii

Lrgime magistral adrese 20 bii 20 bii 24 bii 32 bii 32 bii 32 bii 32 bii 36 bii

Max memorie adresabil

Numr de tranzistoare

8088 8086 286 386 SX 486 Pentium I Pentium III Pentium IV

16 bii 16 bii 16 bii 32 bii 32 bii 32 bii 32 bii-128 bii 32 bii-128 bii

220= 1 048 576=1 Mb 2 = 1 048 576=1 Mb 2 = 16 777 216=16 Mb 2 =4 204 976 206=4 Gb 2 =4 204 976 206=4 Gb 232=4 204 976 206=4 Gb 2 =4 204 976 206=4 Gb 236=32 Gb
32 32 32 24 20

29 000 29 000 134 000 257 000 1 600 000 3 100 000 5 500 000 >10 000 000

n mod real nu toat memoria disponibil este folosit pentru instruciunile i datele programelor. O anumit parte din memorie este folosit n alte scopuri. Pentru a scrie n memorie, Memory [125] := 0, CPU plaseaz valoarea 0 pe magistrala de date, adresa 125 pe magistrale de adrese i activeaz linia de scriere n memorie (write) din magistrala de comenzi.

Scrierea unei date n memoria principal

Pentru a citi din memorie, CPU:=Memory [125] , CPU plaseaz valoarea adresei, adic 125 pe magistrale de adrese i activeaz linia de citire din memorie (read) din magistrala de comenzi dup care citete data pus pe magistrala de date.

10

citirea unei date din memoria principal Moduri de organizare a memoriei Una dintre cele mai importante caracteristici ale memoriei este modul de organizare al ei i implicit modul de accesare a informaiei din memorie. Aa cum am vzut, memoria este organizat ca un set de locaii (celule) de memorare numerotate consecutiv ncepnd de la 0. Adresa fizic a unei locaii de memorie este reprezentat printr-un numr asociat locaiei respective, iar mulimea total a adreselor fizice reprezint spaiul de adrese fizice al memoriei care este limitat de dimensiunea magistralei de adrese. Prin urmare trebuie fcut observaia c numrul de cuvinte adresabile depinde numai de numrul de bii de adres i nu de numrul de cuvinte disponibile n memoria respectiv. O adres logic este o adres utilizat ntr-o instruciune dintr-un program iar mulimea total a acestora reprezint spaiul adreselor logice. Organizarea acestui spaiu definete arhitectura memoriei principale i este de o importan major pentru orice programator. Organizarea spaiului de adrese fizice este determinat de tehnologia utilizat pentru fabricarea memoriei. Organizarea spaiului de adrese logice este determinat de sistemul de operare i de structura programelor ce vor rula n memorie. La primele calculatoare spaiul de adrese logice era identic cu spaiul de adrese fizice. Memoria liniar sau modul real de organizare al memoriei In cazul primelor calculatoare memoria era organizat ntr-un spaiu liniar i continuu de adrese care porneau de la 0 i se continuau fr ntreruperi pn la limita superioar impus 11

de magistrala de adrese (numrul total de bii dintr-o adres logic). n acest caz spaiul de adrese logice coincidea cu spaiul de adrese fizice. Dezavantajul unui astfel de memorii era c dac dou programe care aveau codurile plasate la adrese diferite fceau din greeal un acces la partiia celuilalt (eroare de adresare) (vezi figura de mai jos), rezultatele erau catastrofale.

655335

Memorie fizic

655335
Partiie program A

Program A

333333
Eroare de adresare

Partiie program B

Program B

0 0

Maparea memoriei liniare Maparea este procesul prin care adresele logice pot fi translatate n adrese fizice, adic este un mecanism de realocare a spaiului de adrese logice peste spaiul de adrese fizice. Acest proces este foarte util n sistemele n care mai multe programe i partajeaz memoria fizic (multitasking), fr a interfera ntre ele. Astfel, fiecare program are propriul spaiu de adrese logice, independent de celelalte programe.

12

Spaiu de adrese fizice

90000
Spaiu de adrese logice

85535
M E C A N I S M M A P A R E

65535
Program A

40000

60000 50000

Program B

0 Exemplu de mapare

10000

Memoria segmentat Segmentarea memoriei este un mecanism de management al memoriei care permite programatorilor s-i partiioneze programele n module care pot opera independent unul de cellalt i care pot crete sau descrete n dimensiune. n acest mod memoria este divizat logic n mai multe buci numite segmente de memorie. n fiecare segment adresarea componentelor sale (cuvinte de memorie) este liniar. O adres de memorie este compus n acest caz din selectorul segmentului de memorie i deplasamentul (offset-ul) din cadrul segmentului respectiv, i are forma : Selector_ segment:offset. Avantajul acestei organizri a memoriei este acela c programele pot fi ncrcate n memorie n segmente astfel nct s reflecte structura logic a lor (programelor). Astfel un segment poate conine codul programului principal, altul codul unei proceduri, altul codul unui obiect al programului i aa mai departe. Dac ne gndim c noile tendine ale programrii sunt programarea orientat pe obiecte, atunci putem atribui fiecrui segment de memorie un obiect care n cursul execuiei programului poate crete sau descrete n dimensiune.

13

Memorie liniar

Memorie segmentat

65535

Date (variabile) globale Obiectul C date locale Obiectul B date locale Obiectul A date locale Program principal

15535 0

Date (variabile) globale 15000 0 Obiectul C date locale

50000 35000 20000 10000 0

15000 0

Obiectul B date locale 10000 0 Program principal Obiectul A date locale

10000 0

comparaie ntre memoria liniar i cea segmentat Maparea memoriei segmentate n acest caz maparea se face printr-o tabel de segmente care conine cte o intrare numit descriptor de segment (la care se refer selectorul de segment) pentru fiecare segment existent n memorie. Descriptorul de segment conine adresa de nceput a segmentului, lungimea acestuia i drepturile de acces la segmentul respectiv. Drepturile de acces la un segment se refer la posibilitatea unui program de a accesa sau nu segmentul respectiv.
segment deplasament

locaia

Tabela de segmente Descriptor Segment 1 Descriptor Segment 2 Descriptor Segment 3 . : Descriptor Segment n Baza segmentului

segment

Maparea memoriei segmentate

14

Modul de adresare a memoriei segmentate Pn la procesoarele 80386 exclusiv selectorul segmentului i adresa offset-ului erau scrise pe 16 bii. De la 80386 adresa de offset este scris pe 32 de bii. Dimensiune maxim a unui segment este dat de dimensiunea offset-ului, de exemplu pentru un offset de 16 bii avem 216=26210=64Kb/segment, iar pentru un offset de 32 de bii avem 232=22230=4 Gb/segment Memoria virtual (sau modul protejat) Aa cum am vzut la maparea memoriei liniare unui cod de program poate ocupa un spaiu de adrese logice diferite de cele fizice in memoria principal a unui calculator. Ce se ntmpl dac programul face o referire la o adres logic a crei mapare depete spaiul adreselor fizice existent ? Acest lucru ar cauza o eroare i programul nu ar mai putea rula n continuare. Ce se ntmpl dac programul are nevoie de mai mult memorie fizic dect cea existent ? La nceputul calculatoarelor soluia la problemele enunate era ca programatorul s foloseasc memorii secundare de tipul hard discului. Programul trebuia mprit de programator n mai multe componente care ncpeau n memoria RAM, numite faze (overlays). Programatorul trebuia s mpart programul in faze, s stabileasc locul din memoria secundar (hard disc) unde s fie pstrat fiecare faz i, n mare, s gestioneze tot procesul de

15

lucru cu fazele. Evident c aceast gestionare a memoriei implica din partea programatorilor o munc foarte mare. n 1961 un grup de cercettori din Manchester, Angila, a propus o metod automat de nlocuire a fazelor numit astzi memorie virtual (virtual memory) i care elibera programatorul de munca enorm de gestionare a fazelor. Prin urmare, dac pe o main fr memorie virtual s-ar face un salt la o adres de memorie care nu ar avea corespondent o adres fizic a memoriei RAM, s-ar genera o eroare. Pe o main cu memorie virtual s-ar executa urmtorii pai: 1. Coninutul memoriei principale (faza din RAM) este memorat pe (hard disc). 2. Adresa de memorie cerut este localizat pe hard disc. 3. Cuvintele care se gsesc n aceeai faz cu cuvntul de la adresa de memorie cerut sunt ncrcate n memoria principal. 4. Se schimb corespondena de adrese astfel nct adresele din faza ncrcat n memorie s corespund adreselor de la 0 la memMax. 5. Execuia programului continu.

Tehnica de gestionare automat a fazelor se numete paginare (paging) iar bucile de program citite de pe disc se numesc pagini. n cazul paginrii programele pot citi sau scrie date la adrese de memorie virtuale chiar dac acestea nu se gsesc n momentul respectiv n RAM. Programatorul nu mai trebuie s gestioneze paginarea, calculatorul comportndu-se ca i cum ar avea destul memorie. Fiecare calculator cu memorie virtual are un dispozitiv care face translatarea de la memoria virtual la memoria fizic. Acest dispozitiv se numete MMU ( Memory Managemernt Unit) (Unitate de gestiune a memoriei) i poate fi localizat nuntrul CPU sau n exteriorul ei. n cazul memoriei virtuale adresa de localizare a unei informaii se numete adres virtual.

Memoria virtual la procesoarele Pentium Procesorul Pentium are un sistem de memorie virtual sofisticat, compus din mecanisme de paginare i segmentare a memoriei virtuale. Prin urmare definiia memoriei virtuale necesit o actualizare. Memoria virtual se definete ca fiind totalitatea hrii 16

memoriei care poate fi format prin concatenarea numrului maxim de segmente , fiecare presupus la dimensiunea sa maxim, pe care un utilizator le poate crea prin folosirea unei adrese virtuale. Adresa virtual este o generalizare a adresei logice . Dimensiunea memoriei virtuale este cu mult mai mare dect dimensiunea memoriei fizice principale, ea fiind compus din toate resursele de memorie ale calculatorului, att interne ct i externe. Un task (proces) este o secven de aciuni coerente care conduc la ndeplinirea unui scop folosindu-se n mod dinamic de resursele calculatorului: CPU, RAM, memorie extern, . Memoria virtual permite folosirea unor concepte avansate cum ar fi multiprocesarea (multitasking). Acest concept se refer la capacitatea calculatorului de a executa mai multe procese simultan (adic comutarea , secvenial, de la o secven de instruciuni a unui proces (task) la alt secven de instruciuni aparinnd altui proces, apoi se comut din nou la primul task, i aa mai departe. Acest mecanism este transparent utilizatorului care are impresia execuiei simultane a mai multor procese. Multiprocesarea poate nsemna: A. Pe un calculator cu un singur procesor (execuia secvenial) a. Mai muli utilizatori simultan pe un calculator fiecare cu procesul lui. b. Un singur utilizator care are nevoie de mai multe procese (programe) simultan. B. Pe un calculator multiprocesor (Execuia in mod real a mai multor procese simultan, n paralel (n acelai timp)). a. Mai muli utilizatori simultan pe un calculator fiecare cu procesul lui. b. Un singur utilizator care are nevoie de mai multe procese (programe) simultan. Un alt concept important este mecanismul de protecie al memorie care const din trei aspecte de baz: controlul informaiei (instruciuni sau diverse tipuri de date); izolarea utilizatorilor unul fa de altul (protecie inter-task); izolarea software-ului de sistem de softul se aplicaii ( protecie intra-task).

17

Mecanismul de protecie al memoriei este compus dintr-un mecanism de protecie al segmentelor i dintr-un mecanism numit privilegiile multi-nivel care asigur izolarea software-ului de sistem de cel de aplicaii prin ierarhizarea pe mai multe niveluri de privilegii a programelor (coduri i date). Aceste mecanisme vor fi descrise n paragraful urmtor. Modul de adresare al memoriei virtuale la procesoarele Pentium Memoria virtual se mparte logic n dou spaii : - Spaiul adreselor globale - folosit pentru date i procese de sistem, incluznd sistemul de operare i alte servicii de sistem care sunt partajate de ctre toate taskurile (programele). - Spaiul adreselor locale cuprinde segmente de program i date pentru fiecare proces n parte. Sistemul de memorie virtual cuprinde dou tabele: LTD (Local Descriptor Table tabela descriptorilor locali) asociat fiecrui program, descriind segmentele locale ale lui (segmentele cu codul, datele , stiva, ). GDT (General Descriptor Table tabela descriptorilor generali) descrie segmentele sistemului de operare. Fiecare program are, deci, o tabel LTD, ns exist o singur copie a tabelei GDT partajat de toate programele de pe calculator. O adres virtual are 48 de bii i este compus din dou componente: adresa efectiv (sau offsetul adresei virtuale) pe 32 de bii; selectorul pe 16 bii, care nlocuiete adresa segment. Bii 13 INDEX 1 2

TI RPL

0=GDT 1=LDT

Nivel de privilegii (0-3)

selector

18

Unul dintre biii selectorului (TI) ne spune dac este vorba de un segment local sau global, adic dac segmentul este LDT sau GDT. Ceilali 13 bii pentru Index plus bitul TI precizeaz numrul intrrii n LDT sau GDT. Prin urmare avem posibilitatea de a forma 214 segmente =16Kb de segmente i deci, dimensiunea memoriei virtuale pe care o pot adresa Intel Pentium este dat de numrul maxim de segmente, fiecare presupus la dimensiunea maxim: 214 segmente * 232B/segment = 246B = 64 Tb. Mai exist 2 bii pentru protecie (RPL). Un selector acioneaz ca un index (intrare sau adres) ntr-un tabel de tip LDT sau GDT. n momentul n care un selector este ncrcat ntr-un registru de segment, descriptorul lui este preluat din LDT sau GDT i memorat in registrele interne ale MMU, pentru a putea fi accesat mai repede. Un descriptor este construit din 8 octei aa cum este prezentat mai jos. 32 de bii Baz 0-15 Baz 24-31
0: Limita este n octei 1: limita este n pagini

Limit
Limi 16-19 P DPL TIP Baz 16-23

0 4

GD0

Tipul i protecia segmentului Nivel de privilegii 0: segmentul nu este n RAM 1: segmentul este n RAM

0: segment de 16 bii 1: segment de 32 bii

descriptor de segment de cod Dup ce sa gsit descriptorul de segment corespunztor selectorului se testeaz dac cmpul P este 0. Dac cmpul P este 0 atunci se cere sistemului de operare s gseasc segmentul n memoria extern. Se testeaz, folosind cmpul G (granularitate) i cmpul LIMIT, dac adresa efectiv (deplasamentul) se ncadreaz n limita segmentului astfel : dac G =0 cmpul LIMIT reprezint dimensiunea exact a segmentului pn la 220=1 Mb. dac G=1 cmpul LIMIT reprezint dimensiunea segmentului n pagini i nu n octei. Dac adresa efectiv (deplasamentul) este corect i segmentul este adus n RAM, procesorul Pentium adun la adresa efectiv cmpul Baz (adresa fizic a bazei segmentului) de 32 de bii din descriptor pentru a forma ceea ce se numete o adres liniar. Acest proces este prezentat n figura de mai jos.

19

Selector

Deplasament

Descriptor Adresa de baz Limita Alte cmpuri . . .

Adres liniar pe 32 de bii

4 Gb

Memoria
Adresa liniar

Adresa virtual selector offset


13A7H 0010F405H
Adresa de baz

32DD000 Tabela de descriptori 0

Explicaia n dou desene a modului de translatare a adresei virtuale n adres liniar

20

Deoarece pentru acest tip de microprocesor adresa fizic este pe 32 de bii, harta memoriei fizice conine 232 bii= 4 Gb. Nivelurile de privilegiu Cmpul RPL din descrierea selectorului reprezint nivelul de privilegiu al segmentului respectiv cuprins ntre (0 3), 0 fiind cel mai privilegiat nivel iar 3 cel mai puin privilegiat. Mecanismele de protecie ale procesorului Pentium se bazeaz pe conceptul de ierarhie de privilegii. Aceste privlegii acionez astfel: un program are dreptul s foloseasc segmente de acelai nivel de privilegiu cu al su sau mai mare. Invers este interzis. Pe nivelul 0 se afl nucleul sistemului de operare care gestionez operaiile de I/O, operaiile cu memoria i alte operaii critice. La nivelul 1 se gsesc serviciile sistemului de operare disponibile utilizatorilor. La nivelul 2 se gsesc biblioteci de proceduri care pot fi partajate de programele aflate n rulare. Pe nivelul 3 se gsesc programele utilizatorilor (programe de aplicaii).
Nivel 1 serviciile sistemului

Nivel 2 Biblioteci partajate

Nucleu 0

Nivel 3 programele utilizatorilor

Protecia la Pentium Memoria intermediar Memoria intermediar se situeaz ntre procesor i RAM. Deoarece procesoarele au o vitez de lucru mai mare dect memoriile RAM, sau dezvoltat tehnici de combinare a unei cantiti mici de memorie rapid cu o cantitate mare de memorie lent, astfel nct s se obin aproape viteza memoriei rapide i capacitatea celei mari. Memoria mic rapid se numete memorie intermediar sau memorie cache. Aceast memorie este format din cipuri de memorie cu vitez de lucru mare i care pstreaz copia ultimelor date accesate de ctre procesor. Astfel, cuvintele de memorie cele mai des utilizate sunt pstrate n memoria 21

intermediar. Atunci cnd UCP are nevoie de un cuvnt, l caut mai nti n memorie intermediar, iar n cazul n care nu l gsete l caut n memoria principal. Astfel timpul mediu de acces la date este redus semnificativ. Instruciunile unui program nu acceseaz memoria absolut la ntmplare. Dac o anumit referire la memorie este la adresa A, atunci este foarte probabil ca urmtoarea referire la memorie s se afle n vecintatea lui A. Acest principiu conform cruia referirile la memorie fcute ntr-un interval scurt de timp tind s foloseasc doar o poriune mic din ntreaga memorie, se numete principiul localitii i formeaz baza tuturor sistemelor de memorie intermediar. El funcioneaz n urmtorul mod: atunci cnd un cuvnt este referit, att el ct i o parte din vecinii si sunt adui din memoria mare i lent (RAM) n memoria intermediar, astfel nct la urmtoarea utilizare s poat fi accesat rapid. Memoria cache este plasat n mod logic ntre UCP i memoria principal, iar din punct de vedere fizic ea poate fi plasat n mai multe locuri.

Procesor (CPU)

Memoria principal

Memoria CACHE

BUS

Plasarea memoriei intermediare. Dac un cuvnt este scris sau citit de k ori ntr-un interval scurt de timp, calculatorul va avea nevoie de 1 referire la memoria lent i k-1 referiri la memoria intermediar (cache). Deci, cu ct k este mai mare cu att performana global este mai bun. Folosind principiul localitii datelor, memoriile principale i cele intermediare sunt mprite n blocuri de memorie de dimensiune fix. Blocurile memoriei intermediare sunt numite linii de memorie intermediar (cache lines). La apariia unei erori ntreaga linie este rencrcat din memoria principal, nu doar cuvntul cutat. De exemplu, cu o linie de 64 de octei, o referire la adresa de memorie 260 va ncrca ntr-o linie de memorie intermediar toi octeii cuprini ntre 256 i 319. Acest mod de funcionare este mult mai eficient dect extragerea cuvintelor individuale, deoarece extragerea a k cuvinte odat se face mai rapid

22

dect extragerea unui cuvnt de k ori. O memorie cache poate avea capaciti cuprinse ntre 32KB i civa megaoctei. O alt caracteristic important este plasarea informaiilor n memoria cache. Astfel exist dou variante: prima este cea cu memorie intermediar unic n care datele i instruciunile folosesc aceeai memorie intermediar, i cealalt variant este cu memorie intermediar divizat, cu instruciunile ntr-o memorie intermediar i datele n alta. Ultima variant se mai numete arhitectur Harvard. Fizic memoria cache poate fi localizat n interiorul cipului UCP (tip L1) i/sau n exteriorul lui (tip L2).

23

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