Documente Academic
Documente Profesional
Documente Cultură
aplicaţii
Curs
Editura ....
Constanţa – 2008
Cuprins
2
Arhitectura microprocesoarelor – principii şi aplicaţii
A.2. Memoria
Este o secvenţă de locaţii pentru stocarea informaţiei. Fiecare locaţie este definită prin două
entităţi informaţionale:
• Conţinutul, reprezentat de o înşiruire de cifre binare 0 sau 1 ("biţi");
- numere
- coduri etc.
Numărul de cifre binare conţinute într-o locaţie depinde de modul în care microprocesorul
organizează informaţia în memorie; mărimea unei locaţii va fi denumită formatul memoriei,
exprimat în număr de biţi (de regulă 8, 16, 32 sau 64 biţi).
• Adresa, reprezentând numărul de ordine al locaţiei, care permite identificarea sa în cadrul
secvenţei de locaţii (există o corespondenţă biunivocă între fiecare locaţie de memorie şi adresa
sa).
Noţiuni aferente:
4
Arhitectura microprocesoarelor – principii şi aplicaţii
Structura fizică a memoriei unui microcalculator este formată din unul sau mai multe
cipuri, cu capacităţi diverse; capacitatea totală de stocare a informaţiei pe care o realizează fizic
cipurile de memorie într-un microcalculator este definită ca "memorie internă". Aceasta nu
acoperă, în mod necesar, harta memoriei aferentă microprocesorului respectiv.
Observaţii:
• Fiecare instrucţiune este asociată în mod biunivoc cu un şir de cifre binare; deoarece
acestea "codifică" instrucţiunile, vor fi denumite coduri.
• O instrucţiune reprezintă cea mai simplă acţiune, cu rezultat bine precizat, din activitatea
unui microcalculator a cărui unitate centrală de prelucrare a informaţiei este un microprocesor
anume.
• Un microprocesor concret poate "recunoaşte" şi executa numai codurile corespunzătoare
instrucţiunilor pentru care a fost construit; totalitatea instrucţiunilor pe care un microprocesor le
poate recunoaşte şi executa alcătuieşte setul de instrucţiuni al microprocesorului respectiv.
• Înşiruirea instrucţiunilor în memoria de program nu este haotică ci sub formă de
programe, noţiune definită ca fiind o secvenţă de coduri de instrucţiuni organizate în mod logic
şi coerent după un anumit algoritm, astfel încât întregul microcalculator să execute o sarcină
prestabilită. Noţiunea de "sarcină" (task) nu trebuie confundată cu cea de program: sarcina
unui microcalculator corespunde unei alocări dinamice a resurselor hardware şi software; există
sarcini pentru a căror îndeplinire sunt necesare mai multe programe.
În schema bloc funcţională propusă (Fig.1.1), memoria nu are nici un control asupra
semnificaţiei informaţiei pe care o conţine.
- Porturile sunt în esenţă tot locaţii de memorare a informaţiei, adresabile; informaţia care
se foloseşte uzual aici este alcătuită din operanzi/rezultate (date).
- Există o "hartă a porturilor" care poate sau nu să facă parte din harta memoriei.
Singura deosebire esenţială faţă de locaţiile de memorie este legătura fizică pe care porturile
o asigură cu exteriorul; pentru microprocesor, de multe ori, această legătură fizică este
transparentă şi nesemnificativă.
"Magistrală": un set de conexiuni fizice între blocuri prin care informaţia care circulă are o
semnificaţie prestabilită. Sistemele la care ne referim au o magistrală unică, ce le caracterizează;
din punct de vedere funcţional, există trei componente ale acestei magistrale:
1. Magistrala de date, bidirecţională, permite circulaţia datelor (operanzi/rezultate), a
instrucţiunilor şi chiar a adreselor.
2. Magistrala de adrese, unidirecţională, permite microprocesorului să localizeze
informaţia în Memorie sau în Dispozitivele de intrare/ieşire; deci pe această magistrală circulă
numai adrese.
3. Magistrala de control permite circulaţia, bidirecţională, a semnalelor de comandă şi
control de la/la microprocesor, în calitatea sa de Unitate centrală.
Deosebirile între ultimele două: resurse (memorie internă şi externă, echipamente periferice)
şi performanţe (viteză de prelucrare, cost, număr de componente, gabarit).
Definiţia microprocesorului ca Unitate centrală de prelucrare; am presupus
implicit că sistemul din care face parte este un micro(mini)calculator, deci un sistem de calcul.
Putem extinde însă noţiunea şi asupra sistemelor de comandă şi control ( de tip "controler"),
ceea ce măreşte aria de cuprindere a noţiunii de microprocesor.
informaţie, octetul. Pentru fiecare instrucţiune există un număr prestabilit de octeţi cu care e
codificată (de pildă, pentru Intel 8086, este între 1 şi 6 octeţi).
b) Reprezentarea numerelor
1) Reprezentarea întregilor fără semn în "binar natural"
Este reprezentarea uzuală, "naturală" a numerelor binare.
Tabel 1.I.
1.2 Tipul reprezentării +5 -5
"mărime şi semn" 00000101 10000101
"complement faţă de 1" 00000101 11111010
"complement faţă de 2" 00000101 11111011
+1 00000001 0000000000000001
- 1 11111111 1111111111111111
2-1 M 20 .
Un exemplu:
b31......b 24b23.......................b 0 ,
în care: - b31 b24 reprezintă exponentul, având semnul în poziţia b31.
- b23 b0 reprezintă mantisa cu semnul la b23.
Plaja numerelor reprezentabile în acest fel: M * 2 ±128
9
Arhitectura microprocesoarelor – principii şi aplicaţii
Tabel 1.III
Tabel1 IV
Tabel. V
1. Neterminali
r un registru oarecare;
r8 un registru de 8 biţi;
r16 un registru de 16 biţi;
ri , rj registre individualizate, diferite;
2. Terminali
Operatori
atribuire;
concatenare;
not complementare (negaţie);
operaţia logică SAU;
operaţia logică ŞI;
operaţia logică SAU EXCLUSIV;
+ adunare;
- scădere;
înmulţire;
DIV împărţire între numere întregi;
MOD restul împărţirii între numere întregi;
4. Alte simboluri:
[ ] încadrează elemente de sintaxă opţionale;
| delimitează elemente de sintaxă alternative.
RD – registru de date:
- registru fizic
- bidirecţional
- dimensiunea este dată de marimea magistralei de date
RA – registru de adrese
- registru fizic
- unidirecţional
- dimensiunea este dată de capacitatea hărţii memoriei
Registrele generale sunt utilizate pentru păstrarea temporară a datelor în vederea efectuării de
operaţii aritmetico-logice; pot fi utilizate şi pentru adresarea memoriei şi a porturilor de
intrare/ieşire. Este zona de memorie cea mai rapid accesibilă.
13
Arhitectura microprocesoarelor – principii şi aplicaţii
Unitatea aritmetică de procesare (Figura 2.3) are rolul de a executa instrucţiunile transmise
pe magistrală. Componentele principale ale sale sunt: registre generale, registre pentru
memorarea operanzilor, unitatea aritmetico-logică şi registrul indicator de stare şi control.
Pentru ca microprocesorul să poată citi codul instrucţiunii următoare trebuie să genereze o
adresă care va fi păstrată în memorie până când din celula selectată pe baza adresei va putea fi
citită data cerută.
Unitatea aritmetică şi logică (UAL) este circuitul care prelucrează informaţia cu ajutorul
operaţiilor aritmetice şi logice (*,+ ŞI, SAU, SAU EXCLUSIV, etc.). Deoarece UAL este un
circuit combinaţional, rezultă necesitatea unor registre de memorare temporară pentru cei doi
operanzi din interfaţare, precum şi pentru rezultatul de la ieşirea acestuia. Cuvântul rezultat în
urma prelucrării este de obicei încărcat în registrul acumulator. Comenzile necesare încărcării
operanzilor, execuţiei operaţiei în UAL, încărcării rezultatului operaţiei sunt date de către
unitatea de control şi sincronizare a microprocesorului prin magistrala internă de control.
14
Arhitectura microprocesoarelor – principii şi aplicaţii
Deplasarea biţilor la stânga, prin carry (C) este prezentată în figura de mai jos. În primul caz
se introduce 0 în spaţiul rămas liber, valoarea flagului C nu este parte a rezultatului, dar flagul C
recepţionează o copie a bitului care a fost deplasat de la un capăt la altul. În al doilea caz se
introduce valoarea aflată în C la acel moment la bitul rămas liber.
Fig2.4 Deplasarea la stânga prin carry (C) a) valoarea indicatorului C nu este parte a rezultatului
b) valoarea indicatorului C este parte a rezultatului
Să se realizeze adunarea între două date din memoria de date iar rezultatul se va
înregistra în registrul acumulator
În tabelul 2.1 este prezentă influenţa instrucţiunilor asupra semnalelor de comandă pentru
blocurile UCP
Tabelul 2.I. Semnalele de selecţie generate în timpul efectuării fiecărui pas pentru execuţia adunarii
prezentaţi în exemplul de mai sus
19
Arhitectura microprocesoarelor – principii şi aplicaţii
Una dintre cele două intrari în ALU este întotdeauna conectată la un registru de uz general,
denumit acumulator, care deci va furniza unul dintre operanzii oricărei operaţii aritmetice sau
logice. În acumulator se va transfera rezultatul operaţiei efectuate în ALU. Astfel, operandul
aflat iniţial în acumulator se va pierde. Unele operaţiile specifice se pot efectua direct cu
conţinutul acumulatorului (Fig 2.10a). Pentru memorarea temporară a operanzilor (în cazul
efectuării operaţiilor care necesită doi operanzi), se prevede un registru de date temporar ( Fig.
2.10b)
3. DEZVOLTAREA FUNCŢIONALĂ A
MICROPROCESORULUI PE 16 BITI DE UZ GENERAL, CISC
20
Arhitectura microprocesoarelor – principii şi aplicaţii
În cazul în care se doreşte folosirea registrelor pe 32 de biţi (Fig. 3.3), denumirea lor va fi
precedată de litera E (de la "extended").
Caracteristicile rezultatului unei operaţii sunt semnalate într-un registru special denumit
registrul de stare (Fanioane).
AS este adresa de segment iar AE este adresa efectivă, indicând poziţia în interiorul unui
segment, adică deplasamentul faţă de baza segmentului.
Adresa segment nu coincide cu adresa bazei segmentului, aceasta este obţinută prin
deplasarea cu 4 biţi spre stânga a adresei de segment.
În cele mai multe cazuri se specifică numai adresa efectivă, dar sunt cazuri speciale în care se
foloseşte adresa fizică, prin specificarea şi a adresei de segment (Fig. 3.6).
AF = AS 0000 + AE
AF = AS 0H + AE
Adresa fizică se obţine din două adrese logice (bază si offset), ceea ce face necesară o
operaţie suplimentară de adunare pe 16 biţi şi implicit o unitate aritmetică destinată calculului
adresei.
AS impune:
- numărul de segmente realizabile simultan;
- tipurile de segmente;
- contribuie la stabilirea poziţiei absolute a segmentelor;
25
Arhitectura microprocesoarelor – principii şi aplicaţii
AE impune:
- dimensiunea segmentelor
Tabelul 3.1. Modul de calcul a adresei fizice implicite şi modificate utilizând registre implicite şi
redirecţionate
Destinaţia AF implicită AF modificată
Program (CS) 0H + (IP) NU
stiva primară (SS) 0H + (SP) NU
stiva alternativă (SS) 0H + (BP) (CS) 0H + (BP)
(DS) 0H + (BP)
(ES) 0H + (BP)
Date (DS) 0H + AE (CS) 0H + AE
(SS) 0H + AE
(ES) 0H + AE
în care: AE = (BX) | (SI) | (DI) | adr
AF adr24
AF AE = (PC) | (Ai)i=0..6 | (USP) | (SSP) | (Di)i=0..7 | adr24
- timp de acces
- ocuparea hărţii memoriei
- modularizare
4. Se ştie că microprocesoarele Intel x86 funcţionând în modul real pot forma în memorie
segmente cu utilizări implicite. Anumite segmente îşi pot schimba utilizarea implicită folosind
“un prefix de redirecţionare”. În aceste condiţii, ce tipuri de informaţii poate conţine segmentul
format cu adresa segment în registrul CS ?
5. Se ştie că microprocesoarele Intel x86 funcţionând în modul real pot forma în memorie
segmente cu utilizări implicite. Anumite segmente îşi pot schimba utilizarea implicită folosind
“un prefix de redirecţionare”. În aceste condiţii, ce tipuri de informaţii poate conţine segmentul
format cu adresa segment în registrul SS ?
6. Se ştie că microprocesoarele Intel x86 funcţionând în modul real pot forma în memorie
segmente cu utilizări implicite. Anumite segmente îşi pot schimba utilizarea implicită folosind
“un prefix de redirecţionare”. În aceste condiţii, ce tipuri de informaţii poate conţine segmentul
format cu adresa segment în registrul ES ?
Procesoare din categoria D: au toate caracteristicile celor din categoria precedentă şi, în plus:
for to do
begin
end
Definim din acest moment ca registre atribute de arhitectură ale unui microprocesor
registrele care iau parte la transferuri de date.
În etapa de execuţie a unui program se face referire la diversele celule de memorie RAM,
ROM sau la registrele microprocesorului. Aceste referiri la locaţii de memorie implică operaţia
de adresare. Modul de adresare este indicat prin codul operaţiei ce se execută şi implică
obţinerea adresei cu care se va opera în instrucţiunea repectivă. În funcţie de tipul
microprocesorului, se implementează prin setul de instrucţiuni unul dintre modurile de adresare.
Performanţele microprocesorului sunt date şi de paleta de moduri de adresare ale acestuia. Cu
cât un microprocesor are mai multe posibilităţi de adresare cu atât posibilităţile programatorului
de a realiza programe mai eficiente, compacte, performante sunt mai multe.
2. Adresare imediată:
se specifică, imediat după codul instrucţiunii, informaţia vizată.
29
Arhitectura microprocesoarelor – principii şi aplicaţii
data8 = ((PC) + 1)
sau
data16 = ((PC) + 2) ((PC) + 1)
Fig4.1 Exemplu de adresare imediată, PC este pe 16 biti. Informaţia este stocată pe 1 sau 2 octeţi
Avantajul adresării absolute faţă de adresarea imediată rezultă din modul de obţinere a datei
utilizate la execuţia instrucţiunii. La adresarea imediată, structura fixă a instrucţiunii implică
utilizarea unei valori constante a operandului iar la adresarea absolută, dacă se modifică
conţinutul celulei de memorie a cărei adresă este conţinută în instrucţiune, instrucţiunea va
utiliza la execuţie data de la adresa respectivă, care poate diferi pe parcursul execuţiei
programului.
30
Arhitectura microprocesoarelor – principii şi aplicaţii
4. Adresare scurtă:
în formatul instrucţiunii se găseţte o parte din adresa completă a informaţiei uzuale, cealaltă
parte este implicită.
Fig4.3 Exemplu de adresare scurtă,organizarea memoriei este liniar. Este utilizată o jumătate
de adresă a informaţiei, cealaltă este 0
5. Adresare relativă:
în formatul instrucţiunii curente se găseşte adresa relativă a informaţiei utilizate.
Fig4.4 Exemplu de adresare relativă, memoria este organizată liniar, deplasamentul este de ±128 octeţi
faţă de poziţia instrucţiunii curente
6.Adresare indirectă
adrese indirecte=pointeri
7. Adresare indexată
1. Adresarea relativă:
(IP) adr32l
(CS) adr32h
1. Adresarea imediată:
AF = [(CS)0H+(IP)+2 ] (CS)0H+(IP)+1
2. Adresarea directă:
AF = (DS)0H + adr8|adr16 ,
sau:
AF = (DS)0H + [((CS)0H+(IP)+2)]((CS)0H+(IP)+1)
3. Adresarea indexată:
35
Arhitectura microprocesoarelor – principii şi aplicaţii
4. Adresarea indirectă-implicită:
AF = (DS)0H +(SI)|(DI)
6. Adresarea în stivă:
6.1. Adresare în stivă directă:
7. Adresarea în registru:
pe 8 biţi: AF = AL | AH | BL | BH | CL | CH | DL | DH
pe 16 biţi: AF = AX | BX | CX | DX | SP | BP | SI | DI
36
Arhitectura microprocesoarelor – principii şi aplicaţii
"Octet pentru modul de adresare" (face parte din formatul instrucţiunii, poziţia sa fiind
imediat
după codul propriu-zis). Notăm cu b7b6b5b4b3b2b1b0:
b7b6: "mod"
b5b4b3: "reg"
b2b1b0: "r/m"
"w" un bit din codul propriu-zis al instrucţiunii
1. În registre de date:
AF = Dn, cu n = 0,...,7
ceea ce este echivalent cu:
data = (Dn)
2. În registre de adrese:
Adresarea absolută:
Adresarea relativă:
Adresarea imediată:
12. Adresare imediată propriu-zisă:
AF = SR,
AF = USP,
AF = SSP,
sau AF = PC.
(d)(s)
• Repeat
((R1,R2)) ((R3,R4))
(R1,R2) (R1,R2) + 1
(R3,R4) (R3,R4) + 1
(R5,R6) (R5,R6) - 1
Until (R5,R6) = 0H
• Repeat
(A) - ((R3,R4))
(R3,R4) (R3,R4) + 1
(R5,R6) (R5,R6) - 1
Until (R5,R6) = 0H (A) = ((R3,R4))
Teste:
A - testează un fanion
B - testează o combinaţie logică de fanioane
C - testează un bit oarecare dintr-un operand oarecare
D - testează linii de intrare „serie”
Salturi:
- după cum urmează sau nu unor teste:
- necondiţionate
- condiţionate
- după modul de adresare
- după cum memorează sau nu valoarea curentă a numărătorului de program:
- salturi propriu-zise
- apelurile de subprograme
40
Arhitectura microprocesoarelor – principii şi aplicaţii
• adresarea absolută:
(PC) adr,
în care adr face parte din formatul instrucţiunii;
• adresarea relativă:
(PC) (PC) + disp8 | disp16 ,
în care disp8 sau disp16 fac parte din formatul instrucţiunii;
(ri) (ri) – 1
if (ri) ≠0H then (PC) (PC) + disp8 | disp16
1. Pentru un procesor compatibil Intel x86, instrucţiunea CBW foloseşte implicit registrele:
a) CX şi AX;
b) DX şi AX;
c) DS şi DX;
d) AL şi AH.
2. Câţi octeţi are adresa folosită explicit în formatul instrucţiunii de către apelurile de
subprograme cu adresare directă inter-segment, pentru microprocesoarele Intel x86 funcţionând
în modul real? Ce reprezintă această adresă?
6. Câţi octeţi are adresa folosită explicit în formatul instrucţiunii de către apelurile de
subprograme cu adresare directă inter-segment, pentru microprocesoarele Intel x86 funcţionând
în modul real? Ce reprezintă această adresă?
7. Fie un microprocesor de uz general care poate utiliza adresarea indexată. Memoria este
organizată liniar şi este formatată pe octeţi. Numărătorul de program este notat PC. Presupunem
o operaţie de transfer în memorie cu adresare indexată pentru sursă folosind un registru index
notat IX; destinaţia este acumulatorul microprocesorului notat cu A. Ştiind că deplasamentul se
găseşte în memoria de program imediat după codul instrucţiunii curente, descrierea formală a
semanticii instrucţiunii este:
Câte elemente are în acest caz şirul (tabloul) din memorie construit prin tehnica adresării
indexate?
9. Descrieţi acţiunile unui procesor CISC care foloseşte stiva primară. Veţi folosi descrierea
formală a semanticii presupunând un microprocesor de uz general care organizează liniar
memoria formatată pe octeţi, cu adrese fizice de 16 biţi.
Set de registre de lucru – setul de registre utilizate într-un microprocesor, registre fizice sau
logice
Fig5.1 a) setul simplu de registre b) mai multe seturi de registre logice (fiecare set este set de lucru pentru
un program) c) seturi de registre logice parţial suprapuse (trecerea de la un subset la altul se face
cu pointer). Suprapunerile parţiale se numesc ferestre de registre
Fig5.2 Mai multe seturi de registre logice pentru multiprocesare (mai multe seturi de registre fizice).
Trecerea de la un set fizic la altul se face cu un pointer.
Fiecare proces are alocată o fereastră de registre constând în 3 seturi distincte: cu parametri de
intrare, cu parametri locali şi de ieşire.
45
Arhitectura microprocesoarelor – principii şi aplicaţii
Registrele cu parametri locali R16 - R25 sunt utilizaţi pentru memorarea scalarilor locali a-i
procesului curent. Registrele cu parametri globali R0 - R9 conţin variabile globale ale proceselor
soft. Aceştia sunt comuni tuturor proceselor şi nu se salvează/restaurează niciodată.
Fig5.4 Reprezentarea a 138 de registre fizice în care se definesc 8 subseturi logice. Fiecare subset logic
poate fi set de lucru.
46
Arhitectura microprocesoarelor – principii şi aplicaţii
Programele RISC pot conţine mai multe CALL-uri decât cele convenţionale, în principal
pentru că instrucţiunile complexe implementate în procesoarele CISC vor fi subrutine în cazul
procesoarelor RISC. Din acest motiv procedura CALL / RET este mai rapidă în procesarea
RISC. Modelul utilizării registrelor în fereastre îndeplineşte acest deziderat prin reducerea
traficului de date cu memoria sistem.
Principiul de lucru constă în faptul că fiecare instructiune CALL alocă o nouă fereastră de
registre pentru a fi utilizată de procedura apelată, în timp ce o instructiune RET va restaura
vechea fereastră de registre. Registrele cu parametrii locali R16 - R25 sunt utilizaţi pentru
memorarea scalarilor locali ai procesului curent. O instrucţiune CALL determină ca registrele de
intrare din procesul master apelant să devină registre cu parametri de ieşire în procesul slave
apelat. Odată cu schimbarea ferestrelor, o instrucţiune CALL memorează registrul PC într-un
anumit registru al noii ferestre. O instrucţiune RET determină o acţiune reciprocă, adică
registrele cu parametri de ieşire ai procesului curent vor deveni registre de intrare pentru
procesul master în care se revine. Se observă că aceste comutări de ferestre au scop principal
eliminarea stivei şi deci a timpului consumat cu accesarea acesteia.
Translatarea între registrele logice si cele fizice pentru familia Berkeley RISC:
etc.
- Instrucţiuni aritmetico-logice
ds1s2
- în registru: AF = rn
- directă (absolută) - de regulă într-o porţiune a hărţii memoriei: AF=adr
- indirectă prin registru: AF = (rn)
- relativă la bază, directă: AF = (rn) + adr
- relativă la bază cu registru index: AF = (ri) + (rj)
- relativă (la PC): AF = (PC) + disp.
Sistemele RISC au memorii cache interne şi externe cu spaţii în general separate pentru
instrucţiuni şi date (arhitecturi Harvard de memorie) şi structuri de tip DWB (Data Write Buffer)
cu rol de gestionare a scrierii efective a datelor în memoria sistem, prin degrevarea totală a
procesorului propriu - zis. Realizarea operaţiilor microprocesorului are loc în mod secvenţial-
repetitiv.
48
Arhitectura microprocesoarelor – principii şi aplicaţii
Fig5.5
a) Formatul unei instrucţiuni pentru microprocesoarele Intel i386/i486 (între 1 şi 15 octeţi).
b) Formatul unei instrucţiuni pentru microprocesorul RISC Intel i860 (4 octeţi, indiferent de
instrucţiune).
rezultat 0
for i = 1 to 32 do
if inmultitor(i) = 1
rezultat rezultat + deinmultit
end_if
49
Arhitectura microprocesoarelor – principii şi aplicaţii
deinmultit deinmultit * 2
end_for
p4p3p2p1 d2d1*i2i1
Fig5.8 Exemplu de execuţie a instrucţiunilor în paralel, în fiecare moment de timp cinci instrucţiuni se află
în diverse etape de execuţie.
Avantajele RISC
Dezavantajele RISC
52
Arhitectura microprocesoarelor – principii şi aplicaţii
1. Numărul redus de instrucţiuni; rezultă că programele RISC sunt mai lungi decât cele CISC
(în medie cu 30%).
2. Numărul mare de registre interne:
- timp de acces mai mare;
- utilizarea registrelor “pointer” pentru ferestre complică selecţia unui registru la
decodare;
- spaţiu mare pe cip;
- tehnici complicate de gestionare a ferestrelor;
- compilatoarele avansate folosesc mai eficient seturi reduse de registre;
- salvarea registrelor în contextul multiprocesării (la trecerea de la un proces la altul)
presupune timp mai îndelungat pentru stocare şi recuperare în/din memorie.
3. Unitatea de control a microprocesorului realizată “cablat” este mai puţin flexibilă şi mult
mai greu de modificat.
4. Formatul redus al instrucţiunilor face imposibilă adresarea directă a unei hărţi de memorie
mare (de pildă, adrese fizice sau logice de 32 biţi).
5. Alternativa utilizării memoriei “cache” (în loc de set mare de registre):
- memoria “cache” face parte din harta memoriei;
- mărime minimă 4 kB;
- cuanta de informaţie este pagina;
- accesul este mai încet decât în registrele interne;
- încărcarea memoriei cache presupune strategii complexe;
- este, în general, invizibilă utilizatorului (nu e atribut de arhitectură).
3. Fie un microprocesor RISC ale cărui registre logice sunt folosite pentru o secvenţă de
instrucţiuni conform figurii de mai jos. Considerând că setul de lucru de registre fizice cuprinde
3 registre (R1, R2, R3) să se propună corespondenţa optimă între registrele logice şi cele fizice
pentru translaţia corectă a setului de registre logice.
53
Arhitectura microprocesoarelor – principii şi aplicaţii
4. Fie un microprocesor RISC ale cărui instrucţiuni durează toate 6 stări: „fetch”, decodifică,
citeşte primul operand, citeşte al doilea operand, prelucrează, scrie rezultat.
Unitatea de control este realizată folosind tehnica “pipe-line”. Să se analizeze desfăşurarea în
timp a secvenţei următoare şi să se propună măsurile necesare funcţionării corecte a
microprocesorului şi optimizarea acestor măsuri, dacă este posibil:
SUB r1, r2, r3;
JMP et;
…
et: ADD r4, r5, r6;
ADD r7, r8, r4;
5. Fie un microprocesor RISC ale cărui instrucţiuni durează toate 6 stări: „fetch”, decodifică,
citeşte primul operand, citeşte al doilea operand, prelucrează, scrie rezultat.
Unitatea de control este realizată folosind tehnica “pipe-line”. Să se analizeze desfăşurarea în
timp a secvenţei următoare şi să se propună măsurile necesare funcţionării corecte a
microprocesorului şi optimizarea acestor măsuri, dacă este posibil:
ADD r4, r5, r6;
LOAD r7, mem;
SUB r1, r4, r7;
6. Fie un microprocesor RISC ale cărui registre logice sunt folosite pentru o secvenţă de
instrucţiuni conform figurii de mai jos. Considerând că setul de lucru de registre fizice cuprinde
3 registre (R1, R2, R3) să se propună corespondenţa optimă între registrele logice şi cele fizice
pentru translaţia corectă a setului de registre logice.
7. Fie un microprocesor RISC ale cărui registre logice sunt folosite pentru o secvenţă de
instrucţiuni conform figurii de mai jos. Considerând că setul de lucru de registre fizice cuprinde
4 registre (R1, R2, R3, R4) să se propună corespondenţa optimă între registrele logice şi cele
fizice pentru translaţia corectă a setului de registre logice.
54
Arhitectura microprocesoarelor – principii şi aplicaţii
8. Fie un microprocesor RISC ale cărui registre logice sunt folosite pentru o secvenţă de
instrucţiuni conform figurii de mai jos. Considerând că setul de lucru de registre fizice cuprinde
4 registre (R1, R2, R3, R4) să se propună corespondenţa optimă între registrele logice şi cele
fizice pentru translaţia corectă a setului de registre logice.
9. Comparaţie privind transferul de parametri între programul apelant şi cel apelat în cazul
microprocesoarelor CISC şi RISC.
6. Strategii de intrare/ieşire
Accesarea porturilor:
IN d, port
OUT port, d
a) Ca locaţii de memorie
Trebuie remarcat că, spre deosebire de memorii, unde la o adresă se va găsi o singură celulă
de memorie, aceeaşi şi pentru operaţiile de scriere şi pentru cele de citire, la operaţiile cu porturi,
este permis, şi se şi întâlnesc situaţii în care o aceeaşi adresă este utilizată pentru două interfeţe
diferite, una de intrare şi alta de ieşire. Aceasta deoarece pot exista porturi doar de intrare, şi
altele doar de ieşire, deci cu flux unic al datelor, doar de la sau doar spre microprocesor.
Tehnici
A. Sincrone cu programul curent
B. Asincrone cu programul în curs de desfăşurare
Exemplu:
Dezavantaje:
Interogarea consumă timp
Se pierd posibile cereri de comunicare cu perifericele
B. Întreruperi
57
Arhitectura microprocesoarelor – principii şi aplicaţii
Cerere de întrerupere: semnal trimis unui terminal dedicat al microprocesorului prin care un
periferic (prin intermediul unui port) cere acces la resursele sistemului.
Exemplu:
Fie un microprocessor CISC, organizarea memoriei liniară, memoria formatată pe octeţi iar
adresa fizică are 2 octeţi.
Răspunsul la o cerere de întrerupere:
1. (SP) (SP) - 2
((SP) + 1) ((SP)) (F)
2. (SP) (SP) - 2
((SP) + 1) ((SP)) (PC)
3. for i = 1 to n do //În care n este numărul total de registre implicate.
(SP) (SP) - 2
((SP) + 1) ((SP)) (r16i),
4. IF 0
5. (PC) adr
6. la revenirea în programul curent se recuperează din stivă toate informaţiile
b) Întreruperi nemascabile:
este formulată pe un terminal specializat (“NMI”)
nu poate fi invalidată de către utilizator
ca prioritate, urmează după cererea de acces direct la memorie
aşteaptă terminarea instrucţiunii curente
urmează algoritmul general de răspuns la o cerere de întrerupere
rutina de deservire a întreruperii are o adresă prestabilită
c) Întreruperi mascabile:
este formulată pe un terminal specializat (“INT”)
poate fi invalidată de către utilizator (fanion / fanioane de validare a întreruperilor)
ca prioritate, urmează după întreruperile nemascabile
aşteaptă terminarea instrucţiunii curente
urmează algoritmul general de răspuns la o cerere de întrerupere
rutina de deservire a întreruperii are o adresă care depinde de “modul de răspuns”
prestabilit:
“modul 0” – perifericul stabileşte adresa dar şi instrucţiunea de apel a rutinei de
deservire a întreruperii
“modul 1” – adresa rutinei de deservire a întreruperii este prestabilită
“modul 2” – întreruperi vectorizate
59
Arhitectura microprocesoarelor – principii şi aplicaţii
Întreruperi vectorizate
Un periferic emite un cod numit “tip”, indirect, un vector de întrerupere dintr-o mulţime de
vectori posibili, alegând astfel o rutină de deservire din mai multe rutine potenţiale.
Probleme:
1. Mărimea vectorului de întrerupere dată de tipul microprocesorului şi de felul cum
lucrează
2. Dimensiunea informaţiei furnizată de periferic (“tip”)
3. Mărimea tabelei cu vectori de întrerupere
4. Localizarea tabelei cu vectori de întrerupere în harta memoriei
Exemplu:
Fie un microprocesor CISC, cu organizarea liniară a memoriei, memoria organizată pe octeţi,
acesta trebuie să răspundă la cererile de întrerupere primate de la un port care poate transmite
coduri pe 7 biţi. Poziţia tabelei de întrerupere este la dispoziţia utilizatorului.
Fig 6.4 Schema simplificată a deservirii unei rutine utilizând întreruperi vectorizate
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (IP)
(IP) (00011H) (00010H).
Instrucţiune pentru revenirea din întreruperi
IRET ; (IP) ((SS) 0H + (SP) +1) ((SS) 0H + (SP))
(SP) (SP) + 2
(CS) ((SS) 0H + (SP) +1) ((SS) 0H + (SP))
(SP) (SP) + 2
(F) ((SS) 0H + (SP) +1) ((SS) 0H + (SP))
(SP) (SP) + 2.
scrie în stivă
citeşte din porturi
scrie în porturi
Exemplu
Magistala de date internă şi externă pe 8 biţi
Registre generale pe 8 biţi concatenabile cîte două: R1, R2, R3, R4, R5, R6 (Fig.7.1)
Acumulator pe 8 biţi A
Registru de fanioane F pe 8 biţi
Numărător de program PC
Indicator de stivă SP
Registru index IX
Fig 7.2 Unitatea logico-aritmetică. Modificarea registrului de fanioane în timpul realizării operaţiilor
Fig 7.3 Exemplificarea modului de lucru în pipeline pentru instrucţiunile prezentate mai sus
(A) (adr)
M1: T1: (RA) (PC)
(RD) "Stare µP"
MREAD
T2: (PC) (PC) + 1, (RD) ((RA))
T3: (RI) (RD)
T4: decodificarea octetului de cod din (RI)
M2: T1: (RA) (PC)
MREAD
T2: (PC) (PC) + 1, (RD) ((RA))
T3: (AUX2) (RD)
M3: T1: (RA) (PC)
MREAD
T2: (PC) (PC) + 1, (RD) ((RA))
66
Arhitectura microprocesoarelor – principii şi aplicaţii
(PC) adr
M1: T1: (RA) (PC) ...., T2: ....,T3: ....,T4: ....
Etapele de procesare a unei instrucţiuni în pipeline sunt detaliate în Fig. 7.6. Se observă că
unele implementări combină decodificarea şi aducerea instrucţiunii din memorie, finalizând mai
repede cu patru etape. Scopul pipeline-ului este de a realiza o instrucţinue într-un ciclu de
execuţie de instrucţini, aceasta nu se poate realiza dar se poate finaliza într-un ciclu.
Fig 7.6 Diagrama stărilor de execuţie a instrucţiunilor în pipeline pentru microprocesoarele RISC
Unitatea de control se poate lucra în pipeline, când sunt utilizate instrucţiunile de salt. O
instrucţiune de salt indică o întrerupere în fluxul normal al programului. Problema apare datorită
faptului că execuţia instrucţiunii de salt se termină mai târziu, abia când instrucţiunea a calculat
adresa finală de destinaţie. Dar între timp în coada de instrucţiuni au intrat deja instrucţiuni,
toate cele care urmau imediat. Evident, acestea nu trebuie executate (sau vor fi executate dacă
saltul este condiţionat de o condiţie care este falsă). Efectul lor este catastrofal asupra
performanţei şi sunt extrem de greu de reparat, fără a pierde toate avantajele unui pipeline.
Astfel de dependenţe se numesc „dependenţe de control“, deoarece sunt produse de modificări în
„controlul“ (ordinea de execuţie) programului.
De exemplu, într-un proces normal JMP poate fi luată iar instrucţiunea AND următoare poate
fi executată (Fig 7.7). Într-un proces pipeline este necesar să se introducă NOP după JMP pentru
a nu avea rezultate greşite. Până în starea 5 de pipeline este necesar să se introducă NOP pentru
că instrucţiunea JMP nu este procesată de la ciclul n până la ciclul n+4. Acesta se întâmplă când
IP dă adresa de salt (Fig 7.9).
69
Arhitectura microprocesoarelor – principii şi aplicaţii
Fig 7.9 Introducerea de NOP după JMP pentru a preveni blocarea unităţii de control
70
Arhitectura microprocesoarelor – principii şi aplicaţii
Fig 7.11 Se prezintă schematic imposibilitatea folosirii în pipeline a 2 instrucţini care utilizează acelaşi
registru şi care sunt executate în mai multe cicluri
Soluţia salvatoare este de a se introduce un număr de instrucţini NOP egal cu numarul de cicli
necesari execuţiei instrucţiunii ADD.
(R1,R2)←(adr+1)adr)
4. Descrieţi acţiunile unui procesor CISC care folosesc stiva primară. Veţi folosi descrierea
formală a semanticii presupunând un microprocesor de uz general care organizează liniar
memoria formatată pe octeţi, cu adrese fizice de 16 biţi.
5. Fie un microprocesor RISC ale cărui instrucţiuni durează toate 6 stări: „fetch”, decodifică,
citeşte primul operand, citeşte al doilea operand, prelucrează, scrie rezultat, ultimele 4 stări
putând fi folosite pentru accesarea memoriei.
Unitatea de control este realizată folosind tehnica “pipe-line”. Să se analizeze desfăşurarea în
timp a secvenţei următoare şi să se propună măsurile necesare funcţionării corecte a
microprocesorului şi optimizarea acestor măsuri, dacă este posibil:
9.Fie un microprocesor RISC ale cărui instrucţiuni durează toate 6 stări: „fetch”, decodifică,
citeşte primul operand, citeşte al doilea operand, prelucrează, scrie rezultat.
Unitatea de control este realizată folosind tehnica “pipe-line”. Să se analizeze desfăşurarea în
timp a secvenţei următoare şi să se propună măsurile necesare funcţionării corecte a
microprocesorului şi optimizarea acestor măsuri, dacă este posibil:
74
Arhitectura microprocesoarelor – principii şi aplicaţii
8. O PRIVIRE DE ANSAMBLU
ASUPRA UNEI ARHITECTURI CONCRETE:
INTEL x86 ÎN MODUL REAL
Procesorul Intel x86 conţine două unităţi funcţionale autonome: unitatea de execuţie (EU
– Execution Unit) şi unitatea de interfaţare a magistralei (BIU – Bus Interface Unit).
- CS – adresare instrucţiuni
- DS – adresare date
- SS – adresare stivă
- ES – adresare date pentru instrucţiuni pe şiruri
Registrul de stare program PSW: - conţine indicatori de condiţie a căror stare se modifică în
urma execuţiei unor instrucţiuni. Aceşti indicatori se pot utiliza pentru instrucţiunile de salt
condiţionat sau pentru a determina un anumit regim de execuţie a unui program.
- O – Overflow – depăşire capacitate (generat în urma unor operaţii aritmetice)
- D – direcţie – determină direcţia de deplasare la adresarea pe şiruri
- I – mască de întrerupere – dacă este setat (I=1) atunci validează întreruperile mascabile,
în caz contrar le blochează
- T – trasare – dacă este setat (T=1) atunci se va genera o întrerupere după execuţia
fiecarei instrucţiuni; se utilizeaza pentru depanarea programelor prin trasare.
- S – semn – indică semnul rezultatului unei operaţii aritmetice (0- rezultat pozitiv, 1-
rezultat negativ)
- Z – zero – indică un rezultat nul
- A – auxiliary – transport auxiliar
- C – Carry – transport de la nivelul cel mai semnificativ
AS impune:
- numărul de segmente realizabile simultan;
- tipurile de segmente;
- contribuie la stabilirea poziţiei absolute a segmentelor;
- poziţia relativă a segmentelor.
AE impune:
- dimensiunea segmentelor
Tabel 8.1 Tipurile de registre segment posibil a fi utilizate pentru realizarea diverselor funcţii de
adresare a memoriei
Funcţia realizată prin Adresa segment Adresa segment
Adresa efectivă
adresarea memoriei implicită alternativă
„fetch” CS nu există IP
operaţii în stivă SS nu există SP
77
Arhitectura microprocesoarelor – principii şi aplicaţii
a. Moduri de adresare
80
Arhitectura microprocesoarelor – principii şi aplicaţii
(SP)¬(SP)+2
83
Arhitectura microprocesoarelor – principii şi aplicaţii
84
Arhitectura microprocesoarelor – principii şi aplicaţii
2. Localizarea datelor în interiorul unui segment de stivă pentru un procesor compatibil Intel x86
se face prin registrul:
a) BP;
b) SP;
c) SI;
d) SS.
4. Se ştie că microprocesoarele Intel x86 funcţionând în modul real pot forma în memorie
segmente cu utilizări implicite. Anumite segmente îşi pot schimba utilizarea implicită folosind
“un prefix de redirecţionare”. În aceste condiţii, ce tipuri de informaţii poate conţine segmentul
format cu adresa segment în registrul ES ?
9. Se ştie că microprocesoarele Intel x86 funcţionând în modul real pot forma în memorie
segmente cu utilizări implicite. Anumite segmente îşi pot schimba utilizarea implicită folosind
“un prefix de redirecţionare”. În aceste condiţii, ce tipuri de informaţii poate conţine segmentul
format cu adresa segment în registrul SS ?
10. Descrieţi mecanismele folosite de microprocesoarele Intel x86 funcţionând în modul real
pentru a schimba utilizarea implicită a segmentelor din memorie.
Bibliografie