Sunteți pe pagina 1din 9

Platform de e-learning i curricul e-content

pentru nvmntul superior tehnic


Programare n limbaj de asamblare

7. Arhitectura calculatoarelor i a memoriei.

Arhitectura calculatoarelor
Termenul arhitectura calculatoarelor este adesea utilizat cu semnificaia, simpl, de
organizarea i proiectarea calculatoarelor. n practic ntr-un sistem de calcul exist mai multe
arhitecturi distincte, fiecare fiind definit de o legtur ntre diferitele niveluri ale sistemului.
Figura prezint o schem abstract a unui sistem de calcul, unde cele mai simple operaii i
funcii sunt plasate n partea inferioar, iar cele mai complexe operaii, dependente de utilizator,
ocup nivelurile superioare. Fiecare nivel folosete funciile furnizate de nivelul anterior (cel
ierarhic inferior).
Lumea exterioar

Arhitectura
sistemului
Arhitectura limbaj

Program aplicaie
Limbaje de nivel nalt
Control
execuie

Control
I/O

Setul de instruciuni de baz


Interpretare i execuie
Microcod
Registre
ALU

Procesor I/O
Memorie

Controllere

de programare
Arhitectur
sistem operare
Arhitectur
set instruciuni
Arhitectura
microcod
Arhitectura
nivel poart

Arhitecturi ale unui sistem de calcul


O arhitectur este, deci, legtura sau interfaa ntre dou astfel de module funcionale. Ea
poate fi definit ca vederea funcional a sistemului sub o interfa (nivel) pentru un utilizator
care se situeaz deasupra interfeei (nivelului). Proiectanii care utilizeaz interfaa (nivelul)
arhitectural nu sunt, n general, preocupai de detaliile sistemului inferioare nivelului arhitecturii
sistemului, sau de orice arhitecturi la niveluri inferioare. Ei sunt preocupai de funcionarea
sistemului la nivelul interfeei imediat sub nivelul utilizator.
Arhitectura global este interfaa ntre ntregul sistem de calcul i lumea exterioar;
aceasta este denumit arhitectura sistemului. Undeva, mai jos, este interfaa ntre programul de
aplicaie i limbajul de programare de nivel nalt (presupunnd c aplicaia este scris ntr-un
limbaj de nivel nalt). Aceast limitare definete arhitectura limbajului de programare.
Programatorul este plasat la acest nivel. n continuare, este interfaa ntre limbajul de programare
i diferite funcii de administrare a resurselor, n timpul execuiei, care sunt furnizate de ctre
sistemul de operare. Acest nivel este definit ca arhitectura sistemului de operare.
Urmtoarea interfa este deosebit de important, deoarece n calculatoarele
convenionale ea definete limita dintre hardware i software. Este nivelul elementar, la care
instruciunile recunoscute de calculator sunt decodificate i executate. Acesta este nivelul

arhitecturii setului de instruciuni. Celelalte dou niveluri inferioare de arhitecturi (arhitectura


microcod i arhitectura la nivel de pori) definesc mai n detaliu alte funcii primitive, dar care nu
sunt interesante pentru cei mai muli dintre programatori.
n general, ns, termenul de arhitectura calculatorului definete grania dintre hard i
soft. Arhitectura calculatorului este nivelul sistemului de calcul ce este vzut de un programator
n limbaj de asamblare sau de unul care scrie un compilator.
O separare pe vertical a componentelor din figura urmtoare permite definirea de
sisteme multiprocesor sau distribuite; aceast mprire se poate spune c definete arhitectura
configuraiei.
arhitectura
Programe

Programe

Programe

aplicaie
Limbaje
nivel nalt

aplicaie
Limbaje
nivel nalt

aplicaie
Limbaje
nivel nalt

Control
execuie

Control
execuie

Set
instruciuni

Set
instruciuni

Set
instruciuni

Microcod

Pori

Microcod

Pori

Microcod

Pori

CPU1

CPU2

Procesor I/O

Control
I/O

sistem
arhitectura
limbaj
arhitectura
sistem operare
arhitectura
set instruciuni
arhitectura
microcod
arhitectura
nivel poart

SISTEM DISTRIBUIT
Arhitectura configuraiei
Arhitectura memoriei
Una dintre cele mai importante caracteristici ale arhitecturii unui calculator este modul de
organizare al memoriei i modul n care se obine acces la informaia din memorie.
Memoria principal este organizat ca un set de locaii de memorare, numerotate consecutiv,
ncepnd de la 0. Numerele asociate locaiilor fizice reprezint adresa fizic, iar mulimea total
a adreselor fizice constituie spaiul de adrese fizice.
O adres logic este o adres utilizat de ctre programator ntr-o instruciune. Adresele
ce pot fi utilizate de un program constituie spaiul de adrese logice. Organizarea acestui spaiu
definete arhitectura memoriei.
Organizarea spaiului de adrese fizice este determinat de tehnologia utilizat pentru
memorie i de costul ei, dar spaiul de adrese logice nu este condiionat de nici una dintre aceste
consideraii. Din contr, organizarea memoriei logice este determinat de structura programelor
ce vor rula n memorie. Iniial, spaiul de adrese logice era identic cu spaiul de adrese fizice.
Memoria liniar
Este cea mai obinuit organizare a spaiului de adrese logice, cea mai obinuit arhitectur

pentru memorie: un spaiu liniar, continuu de adrese. Adresele pornesc de la zero i se succed, ntrun mod liniar, fr goluri sau ntreruperi, pn la limita superioar, impus de numrul total de bii
dintr-o adres logic. Un program, adesea constnd din mai multe proceduri, i datele sale sunt
plasate n acest spaiu de adres unic. Spaiul de adrese logice al unei memorii liniare are, astfel,
aceeai organizare ca memoria fizic.
Astfel, pentru o memorie cu 16 linii de adres pot fi generate 65535 de adrese distincte. O
astfel de adres generat de un program este utilizat direct de hardware-ul memoriei pentru a
plasa data. Iat ce se ntmpl n cazul a dou programe, avnd codurile plasate la adrese diferite
de memorie i care nu se suprapun; s presupunem c unul dintre cele dou programe (B) face o
operaie ntr-o locaie n afara codului. n figur se prezint ce se poate ntmpla n acest caz:
vulnerabilitatea memoriei nemapate.
memoria fizic
65535
partiie program B

65535
program

suprascriere

B
0
spaiul total de adres B
spaiul total de adres A

partiie program A
0

65535
eroare de
adresare
program A
0
Vulnerabilitatea memoriei 'nemapate'
Maparea memoriei liniare
Maparea este, n esen, procesul de translatare a adreselor logice n adrese fizice. n
exemplul anterior adresele logice sunt echivalate cu adresele fizice; dar prin exploatarea
maprii, o adres logic poate fi atribuit la o adres fizic arbitrar. Deci maparea este un
mecanism pentru realocarea spaiului de adrese logice peste spaiul de adrese fizice.
n figura urmtoare se prezint o operaie de mapare foarte simpl. ntregul spaiu de
adrese logice ale unui program (locaiile 0-65535, n acest caz) este mapat (suprapus) peste
locaiile fizice 30000-95535. Astfel, o referin a unui program la locaia 50000, va prelua datele,
efectiv de la locaia fizic 80000 (30000+50000).

1000000

spaiu de
adrese logice

logica de
mapare

95535
spaiu

65535
80000

de adrese
fizice

50000

O schem simpl de mapare

30000

Aceast operaie este foarte util n sistemele multiprogram (sau multitask), pentru care
a fost dezvoltat maparea. Astfel, fiecare program are propriul su spaiu logic de adrese, care
este complet independent de spaiul oricrui alt program. Ca atare, mai multe programe pot
0 fizic fr posibilitatea de a interfera ntre ele. Procesul de mapare potrivete
partaja memoria
(suprapune) tot spaiul de adrese logice ntr-o zon de memorie0 fizic, dar procesul este
transparent pentru program. Iat, de exemplu, cum se realizeaz maparea mai multor programe.
Maparea bazat pe pagini
n locul maprii ntregului spaiu logic de adrese ca o unitate, ca n figura de mai jos,
mecanisme mai avansate de translaie a adresei mapeaz pagini de dimensiune fix, mai mici,
ale spaiului de adrese logice, n pagini de memorie fizic. Astfel, un program mare nu trebuie s
fie realocat ntr-o zon (poriune) continu de memorie, care poate fi greu gsit ntr-un cadru cu
programe multiple, dect, mai degrab, n mai multe seciuni de memorie, mai mici, care sunt
mult mai uor de gsit, disponibile. Sunt mai uor de gsit 20 de pagini de 1 Ko, dect un bloc de
20 Ko.
funcia
65535 program
0
trei
spaii de
adrese
logice

300000

program 215535
spaiu

neutilizat

131071
program 150000

65535 program
0

neutilizat

65535 program
0

mapare

de

program 65535

B
0

de
adres
fizic

Un cadru de mapare multiprogram


Drepturi de acces, bazate pe pagini
Mecanismul de paginare poate furniza baza pentru protecia memoriei ntr-un spaiu logic
de adrese. Fiecare pagin poate avea asociate atribute (denumite i drepturi de acces) care indic
modul n care se poate obine acces la pagin. Aceste atribute pot permite numai citire, citire /
scriere sau pot mpiedica orice acces.
spaiu de
adrese logice

unitate
mapare

65535

X
R
WR

spaiu de
adrese
fizice

R
R = acces citire pagin
WR = acces scriere / citire pagin
X = acces interzis la pagin
Protecia bazat pe pagini
0
Memoria virtual
Spaiul de adrese logice este mult mai mare dect memoria fizic. Memoria virtual este
un mecanism pentru a extinde limitele memoriei fizice. ntr-un sistem cu memorie virtual,
aceasta apare utilizatorului ca i cum ntregul spaiu logic de adrese este disponibil pentru
memorare. Dar, de fapt, doar cteva pagini din spaiul logic de adrese sunt mapate peste spaiul
fizic la un moment dat. Alte pagini nu sunt prezente n memoria principal; n schimb, informaia
din aceste pagini este memorat ntr-o memorie secundar, cum ar fi discul, al crei cost pe bit
este mult mai economic.
Ori de cte ori se obine acces la o pagin care lipsete, softul sistemului de operare
ncarc pagina respectiv de pe disc i memoreaz pe disc o alt pagin, la care nu s-a fcut
recent referire. Utilizatorul are impresia unei memorii fizice uriae, dar mai lente.
Memoria segmentat
O alt form de organizare a memoriei logice este memoria segmentat. Motivaia acesteia o
reprezint faptul c programele nu sunt scrise ca o secven liniar de instruciuni i date, ci mai
degrab ca buci (secvene) de cod i buci de date. De exemplu, poate exista o seciune principal

de cod i mai multe proceduri separate. Aceste module de cod i date pot fi de diferite dimensiuni.
Spaiul logic de adrese este desprit n mai multe spaii liniare de adrese, fiecare avnd o anumit
dimensiune. Fiecare dintre aceste spaii de adrese liniare este denumit segment. Fiecare element dintrun segment este accesibil printr-o adres cu dou componente:
selectorul segmentului, care specific adresa de nceput a segmentului;
deplasamentul, care specific adresa relativ, fa de baza segmentului, a elementului
selectat.
Fiecare segment poate fi asociat unui modul de date sau de program. Astfel, programul
poate avea procedura principal ntr-un segment, celelalte proceduri n segmente distincte, i
fiecare structur important de date n segmentul su. Astfel, structura adreselor logice reflect
organizarea logic a programului.
Mecanismele de protecie pentru memoria liniar sunt bazate, de obicei, pe pagini de lungime
fix, a cror dimensiune este determinat pe criterii hardware i nu au vreo relaie cu structura
logic a programului.
Problema descompunerii spaiului de adrese logice n pagini este c mecanismul de
protecie nu poate proteja cu exactitate modulul de program. Dimensiunea paginii este
determinat din raiuni hardware, deci nu are legtur cu structura logic a programelor. n
schimb, ntruct fiecare segment are o anumit lungime, este uor s-l protejm de alte programe.
Mecanismele de memorie virtual pot fi implementate i pentru arhitecturi segmentate. n acest
caz, segmentul este unitatea de memorie ce se interschimb (swapping) la i de la memoria
extern.
Maparea memoriei segmentate
Maparea, n acest caz, este implementat printr-o tabel de segment, care pstreaz un
descriptor pentru fiecare segment. Descriptorul conine adresa de nceput a segmentului i
lungimea acestuia. Componenta selectorului de segment a unei adrese logice este utilizat ca un
index pentru a selecta descriptorul n tabela (descriptorilor) de segment. Apoi deplasamentul este
adunat la adresa de start a segmentului, furnizat de descriptor, pentru a calcula adresa fizic a
operandului referit. Deplasamentul este verificat hardware, pentru a exista sigurana c referina nu
depete lungimea segmentului.

date
B

65535
54000

date
A

44000
34000

date
progr. principal

27000
20000
0

memoria liniar

procedura
B

spaiu de adrese

procedura
A

logice

programul
principal

memoria segmentat
spaiu de adrese logice
2000
0
0

programul
principal

7000
0

1000
date
0 progr. principal
0

procedura
A

1000
0
0

date
A

7000
0
1153
5
0

procedura
B
date
B

Compararea memoriei liniare cu cea segmentat

adresa logic segmentat


selector
segment

deplasament
locaia

descriptor
segment
segment
tabela
descriptori
segment memoriei segmentate
Maparea

Tipuri de segmente i drepturi de acces


Descriptorul de segment mai conine, pe lng adresa de baz a segmentului i limita sa,
i atribute referitoare la tipul segmentului. Drepturile de acces sunt, deci, asociate, n particular,
fiecrui segment, n ciuda faptului c modulele programului refer acele segmente. Dac un
segment este de tip read-only (numai pentru citire), de exemplu, i menine tipul pentru toate
modulele care fac referire la acesta. Aceast asociere a drepturilor de acces cu segmentele este un
dezavantaj, deoarece putem dori s dm diferitelor module acces la acelai segment, dar cu
diferite drepturi de acces.
Controlul accesului
Un alt dezavantaj al mecanismului de mapare a segmentelor este dificultatea de a limita
accesul unui program la segmentele altui program. Deoarece tabela de segmente conine toi
descriptorii de segment, orice program poate accesa orice segment prin simpla indexare n tabela de
segmente. Soluia este ca fiecare program s aib propriile sale tabele. Dar aceasta nseamn c, ori de
cte ori un segment este realocat n memoria fizic, toate programele partajeaz segmentul vor trebui
s actualizeze descriptorii lor de segment. Pentru a reduce numrul operaiilor de acest gen, fiecare
task vede spaiul de memorie divizat n dou: un spaiu global, care conine serviciile de sistem,
sistemul de operare i un spaiu local asociat fiecrui task.
Memoria virtual i alocarea dinamic a memoriei
Fiecare modul de program are propriul su cadru de acces, cadru n care (de exemplu, 32 de
linii de adres) se pot genera 232 adrese diferite. Deci spaiul total de adrese, cel virtual, este egal cu
dimensiunea maxim a unui segment nmulit cu numrul total de segmente. De exemplu la 386/486
i Pentium: cu o magistral de adrese de 32 de bii i un selector de 16 bii, dintre care 14 sunt utilizai
pentru adresare, rezult un spaiu total de adresare virtual de 64 To. Fiecare descriptor de segment
trebuie s conin un cmp de bii, actualizai hardware, utilizai de sistemul de operare pentru a
implementa memoria virtual:
valid (sau prezent), identific dac segmentul se gsete n acest moment n memorie;
memorie alocata, indic dac s-a asociat memorie cu acest descriptor;
accesat, indic dac segmentul a fost accesat de un program;
modificat, indic dac informaia din segment a fost modificat sau nu de un task.
Sistemul de operare poate utiliza aceti bii:
valid / memorie alocat, pentru a detecta cnd un segment fizic nu este prezent n memorie;
accesat / modificat, pentru a decide care dintre segmentele existente n acest moment ar
trebui interschimbat (swapped) sau pur i simplu, dac n-au fost modificri, scrierea
segmentului nou peste cel vechi (neutilizat curent).
n plus, cteva cmpuri din descriptor pot fi utilizate de sistemul de operare, pentru a memora
alte informaii folositoare despre segment (de exemplu: frecvena de utilizare), care pot fi
utilizate n algoritmul de interschimb.
Cantitatea de memorie alocat unui modul nu trebuie s fie fix la momentul compilrii; ea
se poate modifica dinamic. Mecanismul de alocare dinamic a memoriei face memoria virtual
mult mai eficient prin alocarea segmentelor numai atunci cnd este necesar, mpiedicnd astfel
utilizarea memoriei de ctre segmentele la care nu se face referire.

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