Sunteți pe pagina 1din 31

ARHITECTURA CALCULATOARELOR

Formularea arhitectura calculatoarelor este adesea utilizată


cu semnificaţia simplă de organizare şi proiectare a
calculatoarelor. Într-un sistem de calcul se cunosc mai multe
arhitecturi, fiecare definită de o legătură între diferite niveluri ale
sistemului.
ARHITECTURA CALCULATOARELOR
ARHITECTURA CALCULATOARELOR
O arhitectură este legătura sau interfaţa între astfel de modul de
funcţionare.
Arhitectura de sistem(globală) este interfaţa între întregul sistem de
calcul şi lumea exterioară.
Arhitectura de limbaj de programare este interfaţa între programul
de aplicaţie şi limbajul de programare de nivel înalt. La acest nivel este plasat
programatorul.
Arhitectura sistemului de operare reprezintă interfaţa între limbajul
de programare şi diferite funcţii de administrare a resurselor în timpul execuţiei
care sunt furnizate de către sistemul de operare.
Arhitectura de set de instrucţiuni este interfaţa deosebit de
importantă, deoarece în calculatoare ea defineşte limita dintre hardware şi
software. Acesta este nivelul elementar la care instrucţiunile recunoscute de
calculator sunt decodificate şi executate.
ARHITECTURA CALCULATOARELOR

Celelalte două niveluri de arhitectură (microcod şi la


nivel de port) definesc mai multe funcţii primitive, dar care
nu-s interesante pentru mulţi dintre programatori.
În general formularea arhitectura calculatorului
defineşte graniţa dintre software şi hardware. Deci arhitectura
calculatorului este nivelul sistemului de calcul care este văzut
de un programator în limbaj de asamblare sau de unul care
scrie un compilator.
Funcţiile de bază ale unui
calculator
Calculatorul reprezintă un ansamblu de echipamente şi
produse program pentru prelucrarea automată a datelor conform
cerinţelor utilizatorilor. Un computer îndeplineşte următoarele
funcţii de bază:
o de memorare a informaţiei,
o de intrare a informaţiilor în memoria calculatorului,
o de comandă – dirijarea cu funcţionarea tuturor componentelor şi
a calculatorului în ansamblu,
o de executare a operaţiilor aritmetice şi logice asupra datelor,
o de ieşire a informaţiilor, asigurând redarea informaţiilor în formă
necesară.
Realizarea funcțiilor
Pentru a realiza aceste funcţii orice computer conţine
următoarele unităţi funcţionale de bază:
▪ unităţi de memorie;
▪ unităţi de comandă;
▪ unităţi aritmetico-logice;
▪ unităţi de intrare-ieşire a informaţiilor.
Arhitectura calculatoarelor
Funcţiile şi interacţiunea acestor componente
formează arhitectura generală a calculatoarelor cu program
memorat. Pentru prima dată informaţiile referitoare la
arhitectura calculatoarelor universale cu program memorat au
fost sistematizate şi publicate de John von Neumann, J.
Manchly şi J. Eckert în 1946, ulterior arhitectura dată
devenind cunoscută ca „arhitectura von Neumann”.
Arhitectura von Neumann
Caracteristicile principale ale calculatorului
cu program memorat
John von Neumann a stabilit 5 caracteristici principale ale calculatorului cu
program memorat ce trebuie să posede:
❖ un mediu de intrare, prin intermediul căruia să se poată introduce un număr
nelimitat de operanzi şi instrucţiuni;
❖ o memorie, din care să se citească instrucţiunile şi operanzii şi în care să se
poată memora rezultatele (memoria internă şi externă);
❖ o secţiune de calcul, capabilă să efectueze operaţii aritmetice şi logice,
asupra operanzilor din memorie;
❖ un mediu de ieşire, prin intermediul căruia un număr nelimitat de rezultate
să poată fi obţinute de către utilizator;
❖ o unitate de comandă, capabilă să interpreteze instrucţiunile din memorie şi
capabilă să selecteze diferite moduri de desfăşurare a activităţii
calculatorului pe baza rezultatelor calculelor.
*
Unitatea de comandă şi unitatea de calcul formează unitatea
centrală de prelucrare sau procesorul.
Memoria internă este plasată în cadrul unităţii de
sistem, are o viteză de lucru mai mare, dar o capacitate de
memorare mai mică comparativ cu memoria externă.
Procesorul împreună cu memoria internă formează
unitatea centrală a calculatorului.
Unităţile de memorie externă cu dispozitivele de intrare-
ieşire sunt denumite echipamente periferice.
Schimbul de informaţii între componentele unităţii
centrale şi perifericele unui computer se efectuează prin
intermediul unităţilor de schimburi multiple, numite şi canale
de intrare-ieşire.
Funcționarea unui calculator
Calculatorul funcţionează în felul următor:
Datele destinate prelucrării şi programul respectiv în formă binară se
introduc în memoria internă a calculatorului prin intermediul unităţilor de
intrare şi a canalelor de intrare-ieşire a datelor.
Datele se înscriu în celule de memorie identificabile prin adresele lor.
La lansarea programului de prelucrare, care constă din instrucţiuni,
unitatea de comandă accesează prima instrucţiune din program după adresa
celulei respective.
Unitatea de comandă interpretează conţinutul instrucţiunii şi emite
comenzile necesare către alte unităţi.
Instrucţiunile programului sunt accesate şi executate una după alta
până la executarea instrucţiunii de terminare a programului.
Arhitectura memoriei
Una dintre cele mai importante caracteristici ale
arhitecturii unui calculator este modul de organizare a
memoriei şi modul în care informaţia din memorie este
accesată.
Memoria principală este organizată ca un set de locaţii
de memorare, numerotate consecutiv, începând de la 0.
Numerele asociate locaţiilor fizice reprezintă adresa fizică, iar
mulţimea totală a adreselor fizice constituie spaţiul de adrese
fizice. Adresa logică este utilizată într-o instrucţiune de către
programator. Adresele care pot fi utilizate de un program
constituie spaţiul de adrese logice. Organizarea acestui spaţiu
defineşte arhitectura memoriei.
Memoria liniară
Cea mai obişnuită organizare a spaţiului de adrese logice şi
cea mai obişnuită arhitectură pentru memorie care reprezintă un
spaţiu liniar, continuu de adrese.
Adresele pornesc de la 0 şi continuă, în mod liniar, fără goluri sau
întreruperi, până la limita superioară.
Un program, adesea constând din mai multe proceduri, şi datele
sale sunt toate plasate în acest spaţiu de adrese, unic.
Spaţiul de adrese logice al unei memorii liniare are aceeaşi
organizare de bază ca memoria fizică.
Memoria segmentată
Memoria segmentată este o altă formă de organizare a
memoriei. Motivaţia acesteia o reprezintă faptul că programele
nu sunt scrise ca o secvenţă liniară de instrucţiuni şi date, ci mai
degrabă ca secvenţe de cod şi secvenţe de date.
De exemplu, poate exista o secţiune principală de cod şi
mai multe proceduri separate. Aceste module de cod şi date pot
avea diferite dimensiuni.
Memoria segmentată

Spaţiul logic de adrese este despărţit în mai multe spaţii liniare de adrese,
fiecare având o anumită dimensiune. Fiecare dintre aceste spaţii de adrese
liniare este denumit segment. Fiecare element dintr-un segment accesat
printr-o adresă cu două componente:
1. selectorul segmentului, care specifică adresa de început a segmentului;
2. deplasamentul, care specifică adresa relativă, faţă de baza segmentului a
elementului selectat.
Fiecare segment poate fi asociat unui modul de date sau de
program. Programul poate avea o procedură principală într-un segment,
fiecare altă procedură în propriul ei segment şi fiecare structură importantă
de date în segmentul propriu. Astfel, structura adreselor logice reflectă
organizarea logică a programului
ARHITECTURA DE BAZĂ A PROCESOARELOR DIN FAMILIA INTEL
Arhitectura microprocesorului 8086
Componentele microprocesorului
EU (Executive Unit) şi BIU (Basic Input Unit) reprezintă două
componente mari ale microprocesorului.
EU execută instrucţiunile maşină prin intermediul componentei
ALU (Aritmetic and Logic Unit).
BIU este componenta care pregăteşte execuţia fiecărei instrucţiuni
maşină. Această componentă citeşte o instrucţiune din memorie, o decodifică
şi calculează adresa din memorie a unui eventual operand. Configuraţia
rezultată este depusă într-o zonă buffer cu dimensiunea de 6 octeţi(notată
ZT), de unde va fi preluată de EU.
Aceste două componente lucrează în paralel, în sensul că în timp ce
EU execută instrucţiunea curentă, BIU pregăteşte instrucţiunea următoare.
Cele două acţiuni sunt sincronizate, în sensul că cea care termină prima
aşteaptă după cealaltă.
Setul de registre
Din punct de vedere al rolului pe care îl au în execuţia
instrucţiunilor registrele pot fi clasificate în patru grupuri:
❖ registrele generale;
❖ registrele de segment;
❖ registrele index şi de bază;
❖ registrul fanioanelor şi registrul adresei instrucţiunii curente.
Registrele generale EU

Aceste registre sunt utilizate în instrucţiunile aritmetice


şi logice. Majoritatea instrucţiunilor utilizează în acelaşi mod
toate registrele. Există însă instrucţiuni aritmetice pentru care
anumite registre au semnificaţii speciale.
Registrul ax denumit registru acumulator constituie un
registru implicit pentru unele instrucţiuni. Are doi octeţi şi poate
fi accesat ca pereche de două registre de un octet şi anume ah
(octetul superior) şi al (octetul inferior).
Registrul bx - registru de bază. Utilizat pentru păstrarea
adresei de bază a căruiva obiect din memorie. Analogic are doi
octeţi şi poate fi accesat ca pereche de două registre de un octet şi
anume bh (octetul superior) şi bl (octetul inferior).
Registrele generale EU

Registrul cx - registru contor. Se utilizează în


instrucţiunile în care careva acţiuni se execută de mai multe ori.
Are doi octeţi şi poate fi accesat ca pereche de două registre de un
octet şi anume ch (octetul superior) şi cl (octetul inferior).
Registrul dx - registru datelor. Utilizat pentru păstrarea
datelor intermediare. Are doi octeţi şi poate fi accesat ca pereche
de două registre de un octet şi anume dh (octetul superior) şi dl
(octetul inferior). Împreună cu registrul ax se foloseşte în
calculele ale căror rezultate depăşesc dimensiunea de doi octeţi.
***
Microprocesoarele de la 80386 în sus posedă
registre de 32 de biţi şi anume eax, abx, ecx, edx.
Registrele de segment
Un segment de memorie reprezintă o succesiune continuă de octeţi
care are următoarele proprietăţi: începe la o adresă multiplu de 16 octeţi, are
lungimea multiplu de 16 octeţi şi are lungimea de maximum 64 Ko.
Arhitectura 8086 permite existenţa a patru tipuri de segmente:
❖ segment de cod, care conţin instrucţiuni maşină;
❖ segment de date, care conţine date asupra cărora se acţionează în
conformitate cu instrucţiunile;
❖ segment de stivă;
❖ segment suplimentar (extrasegment).
***
Fiecare program este compus din unul sau mai multe
segmente dintre tipurile de mai sus. În fiecare moment al
execuţiei este activ câte un singur segment din fiecare tip.
Registrele cs(Code Segment), ds (Data segment), ss (Stack
Segment) şi es (Extra segment) din BIU reţin adresele de
început ale segmentelor active respectiv de cod, de date, de stivă
şi suplimentar.
Registrele index şi de bază
Registrele di (Destination Index) şi si (Sourse
Index) sunt registrele de index utilizaţi de obicei pentru
accesarea elementelor din şiruri de octeţi sau de
cuvinte, iar registrele sp şi bp sunt registre destinaţi
lucrului cu stiva. O stivă se defineşte ca fiind o zonă de
memorie în care se pot depune succesiv valori,
extragerea făcându-se în ordinea inversă depunerii.
Registrul sp (Stack Pointer) păstrează adresa
curentă a vârfului stivei adică punctează spre
elementul ultim introdus.
Registrul bp (Base Pointer) se utilizează
pentru a permite accesul la informaţia conţinută în stivă
fără a o extrage din stivă punctând spre primul element
introdus în stivă ce indică baza stivei.
Registrul fanioanelor şi registrul
adresei instrucţiunii curente ip
Registrul flags este numit registrul fanioanelor. Are doi
octeţi şi o configuraţie al acestui registru reprezintă un rezumat
sintetic a execuţiei fiecărei instrucţiuni. Din cei 16 biţi sunt
folosiţi numai 9.
Structura registrului fanioanelor
***
*indicator de stare
**indicator de dirijare
***indicator de sistem
Fanioane
cf* (Carry Flag) este fanionul de transport.
cf=1 în cazul în care în cadrul operaţiei s-a făcut transport sau împrumut în
afara domeniului de reprezentare a rezultatului.
cf=0 în absenţa transportului
pf* (Parity Flag) este fanionul de paritate
pf=1 dacă 8 biţi inferiori ai rezultatului conţin un număr par de unităţi
pf=0 în caz contrar
af* (Auxiliary Flag) fanion auxiliar de transport indică valoarea
transportului de la bitul 3 la bitul 4 al rezultatului execuţiei instrucţiunii
af=1 a avut loc transport sau împrumut
af=0 n-a avut loc
Fanioane
zf* (Zero Flag)
zf=1 dacă rezultatul este 0 zf=0 dacă rezultatul este diferit
de 0
sf* (Sign Flag) indică starea bitului cel mai
semnificativ al rezultatului.
sf=1 bitul superior al rezultatului este 1(adică numărul este
negativ)
sf=0 bitul superior al rezultatului este 0
tf*** (Trap Flag) este fanionul de depanare utilizat
pentru controlul execuţiei instrucţiunilor în regim pas cu pas
în scopul depanării programelor.
tf=1 are loc depanarea, adică maşina se opreşte după fiecare
instrucţiune
tf=0 nu are loc depanarea
if*** (Interrupt Flag) este fanionul de întrerupere
if=1 întreruperile sunt acceptate
Fanioane
df** (Direction Flag) este fanionul de dirijare utilizat la prelucrarea şirurilor.
Valoarea acestui fanion determină direcţia prelucrării şirului.
df=1 deplasarea are loc de la sfârşit spre început
df=0 deplasarea are loc de la început spre sfârşit

of* (Overflow Flag) este fanionul pentru depăşire


of=1 dacă în execuţia unei instrucţiuni aritmetice cu semn a apărut o depăşire,
adică s-a obţinut un rezultat care nu poate să fie memorat corect în destinaţia
stabilită de către instrucţiune;
of=0 în caz contrar
 ip!!!!!!!!!!!!!!!

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