Sunteți pe pagina 1din 87

Arhitectura microprocesoarelor – principii şi

aplicaţii

Curs

Editura ....
Constanţa – 2008

Cuprins
2
Arhitectura microprocesoarelor – principii şi aplicaţii

1. Structura unui microcalculator. Definiţii


1.1. Componentele funcţionale ale unui microcalculator
1.2. Definiţii; microprocesoare CISC şi RISC
1.3. Reprezentarea informaţiei în sistemele digitale
1.4. Convenţii pentru notaţii
2. Structura unui nucleu de microprocesor de uz general, CISC
2.1. Pasul 1 de detaliere: registrul de date şi registrul de adrese
2.2. Pasul 2 de detaliere: registrele generale
2.3. Pasul 3 de detaliere: unitatea aritmetică de procesare
2.4. Pasul 4 de detaliere: unitatea de control al adresării memoriei
2.5. Pasul 5 de detaliere: unitatea de control al microprocesorului
3. Dezvoltarea funcţională a microprocesoarelor de uz general CISC
3.1. Organizarea funcţională a unui microprocesor pe 16 sau 32 biţi tipic
3.2. Structura registrelor
3.3. Organizarea memoriei microcalculatorului
4. Principiile de bază ale unei arhitecturi tipice CISC
4.1. Transferuri de date
4.2. Tehnici de adresare
4.3. Tipuri de instrucţiuni
4.4. Exemple de tehnici de adresare pentru diverse microprocesoare
5. Principiile de bază ale unei arhitecturi tipice RISC
5.1. Setul de registre
5.2. Setul de instrucţiuni şi tehnicile de adresare
5.3. Unitatea de control al microprocesorului
5.4. Caracteristici RISC la nivelul software
6. Strategii de intrare/ieşire
6.1. Spaţiul dispozitivelor de intrare/ieşire
6.2. Tehnici de intrare/ieşire uzuale
6.3. Întreruperi caracteristice microprocesoarelor de uz general
6.4. Tipuri de întreruperi pentru microprocesoare Intel x86 în modul real
7. Dimensiunea temporală a arhitecturii µPUG
7.1. Desfăşurarea în timp a instrucţiunilor pentru un microprocesor CISC
7.2. Creşterea vitezei de execuţie pentru microprocesoarele CISC evoluate
7.3. Desfăşurarea în timp a instrucţiunilor pentru microprocesoarele RISC
8. O privire de ansamblu asupra unei arhitecturi concrete: Intel x86 în modul real
8.1. Structura bloc funcţională
8.2. Utilizarea registrelor
8.3. Organizarea memoriei
8.4. Spaţiul porturilor
8.5. Moduri de adresare
1.1 Bibliografie

1. STRUCTURA UNUI MICROCALCULATOR. DEFINIŢII


3
Arhitectura microprocesoarelor – principii şi aplicaţii

1.1. Componentele funcţionale ale unui microcalculator

Structura unui sistem pe bază de microprocesor include următoarele componente:


microprocesor, memorie de instrucţiuni, memorie de date, circuite de interfaţă.
Microcalculatorul, structurat ca o maşină “VON NEUMANN”, este un sistem programabil de
prelucrarea informaţiei care are două componente inseparabile şi definitorii: hardware şi
software.
Arhitectura Von Neumann conţine o singură memorie şi o singură magistrală pentru
transferul datelor din şi dinspre unitatea centrală de procesare (CPU).

Fig1.1 Arhitectura generală a microprocesoarelor

A. Componenta hardware:blocurile funcţionale

A.1. Unitatea centrală de prelucrare (UCP)


UCP are două funcţii esenţiale:
• prelucrarea datelor;
• controlul activităţii întregului microcalculator.
O Unitate centrală de prelucrarea informaţiei, având funcţiile enunţate mai sus, care
coordonează un sistem structurat funcţional ca în figură şi care, fizic, se prezintă sub forma unui
singur cip se numeşte MICROPROCESOR (µP).

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

- "Harta memoriei": totalitatea locaţiilor de memorie pe care le poate adresa un


microprocesor.
- "Pagini" şi/sau "segmente": subdiviziuni logice ale hărţii memoriei, ale căror
dimensiuni, fixe sau dinamice, sunt specifice modului în care un microprocesor anume
organizează memoria.

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.

Semnificaţia conţinutului memoriei microcalculatorului → două zone:


- Memoria de date conţine operanzi şi/sau rezultate; fizic, această porţiune de memorie
este de tip RAM (cu scriere/citire).
- Memoria de program care conţine instrucţiuni; de regulă, (dar nu obligatoriu) această
zonă este o memorie de tip ROM (memorie din care se poate doar citi).

Instrucţiunea: informaţia codificată (binar) prin care se impune microprocesorului


desfăşurarea unei acţiuni specifice.

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.

Semnificaţia conţinutului locaţiilor de memorie este conferită de programator în


concordanţă cu funcţiile specifice realizate de microprocesor:
- numere binare atunci când ne referim la date (operanzi/rezultate);
- coduri când ne referim la instrucţiuni.

Î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.

A.3. DISPOZITIVELE DE INTRARE/IEŞIRE (I/O)


Sunt circuitele prin care se realizează legătura între microcalculator şi lumea exterioară. O
unitate elementară de conversaţie cu exteriorul poartă numele de "port de intrare/ieşire".
Între porturi şi locaţiile din Memorie există nişte similitudini:
5
Arhitectura microprocesoarelor – principii şi aplicaţii

- 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ă.

B. Componenta software: o serie de programe organizate în moduri specifice;

Două categorii de software:

B.1. SISTEMUL DE OPERARE: totalitatea programelor care permit utilizatorului accesul


complet la resursele sistemului (exemple: MS-DOS, UNIX etc.). Poate fi: rezident (permanent în
memoria internă) sau încărcabil dintr-o memorie externă (operaţie denumită "bootstrap").

B.2. SOFTWARE-UL UTILIZATORULUI, alcătuit din totalitatea programelor folosite pentru


îndeplinirea unor sarcini specifice.
Caracteristicile arhitecturii “Von Neumann”:
 Microprocesorul constituie Unitatea centrală de prelucrare a unui sistem având schema
bloc funcţională din figură. El concentrează şi funcţia de prelucrare şi pe cea de comandă.
 Toate celelalte componente ale sistemului nu au putere de decizie. Memoria nu
controlează şi nici nu e necesar să controleze semnificaţia informaţiei pe care o deţine şi
modul în care este organizată logic.
 Legătura dintre blocuri este asigurată de o magistrală unică cu trei componente
funcţionale; pe magistrala de date circulă toate tipurile de informaţii.
 Funcţionarea sistemului se face pe baza unor programe alcătuite din secvenţe de
instrucţiuni. Acestea sunt citite din memorie de către microprocesor, recunoscute şi apoi
executate.

Arhitectură: totalitatea atributelor sistemului (în cazul de faţă, microprocesorul) care


sunt disponibile ("vizibile") utilizatorului (ca, de pildă: registrele, modurile de adresare,
tipurile de transferuri de date, modul de organizare logică a memoriei, tehnicile de
intrare/ieşire, setul de instrucţiuni etc).

1.2. Microprocesoare CISC şi RISC. Definiţii

 Microprocesor, microcalculator, minicalculator

Asemănări: caracteristicile globale ale atributelor de arhitectură;


6
Arhitectura microprocesoarelor – principii şi aplicaţii

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.

 Noţiunea de "logică programată". Sistemele cu logică programată nu înseamnă, în


mod automat, sisteme cu microprocesor. Microprocesorul poate constitui una dintre modalităţile
de proiectare a sistemelor cu logică programată. Nu se va face confuzia "sistem cu logică
programată cu microprocesor"  "sistem microprogramat".

C. Clasificări ale noţiunii de microprocesor:

a) După lăţimea magistralei de date: microprocesoare pe 8, 16, 32 sau pe 64 de biţi.


b) După tipul de sarcini eficient realizabile:
• microprocesoare de uz general (µPUG), nespecializate;
• microprocesoare specializate, ca de pildă:
- procesoare de intrare/ieşire, pentru conversaţii complexe între microcalculator şi
lumea exterioară; exemplu: Intel 8089;
- coprocesoare aritmetice, specializate pentru funcţii aritmetice de utilitate generală
(exponenţiale, trigonometrice etc); exemplu: Intel 80387;
- procesoare digitale de semnal, specializate pentru algoritmii specifici prelucrării
semnalelor (FFT, produse de corelaţie, filtre digitale, calcul matriceal etc.); exemplu:
Texas Instruments TMS 320.

c) După principiile de bază ale arhitecturii care guvernează funcţionarea:


• procesoare cu set complex de instrucţiuni (CISC) numite microprocesoare "standard"
sau simplu "microprocesoare";
• procesoare cu set redus de instrucţiuni (RISC).

1.3. Reprezentarea informaţiei în sistemele digitale

Informaţia în sistemele digitale este transmisă pe:


- bit (prescurtat b) pentru o cifră binară 0 sau 1;
- nibble (prescurtat n) pentru o înşiruire de 4 biţi;
- byte sau octet (prescurtat B) pentru o înşiruire de 8 biţi;
- cuvânt sau word (prescurtat w) pentru o înşiruire de 2 octeţi;
- cuvânt dublu sau double word (prescurtat dw) pentru o înşiruire de 4 octeţi;
- prefixele: • k pentru 210  103 ;
• M pentru 220  106 ;
• G pentru 230  109 ;
• T pentru 240  1012 .

1.3.1. Reprezentarea internă


a) Reprezentarea programelor
Fiecare instrucţiune este reprezentată în memorie de un cod binar. Formatul instrucţiunilor,
adică totalitatea cifrelor binare necesare pentru codificare, are, de regulă, drept cuantă de
7
Arhitectura microprocesoarelor – principii şi aplicaţii

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.

număr binar cu 8 cifre = cu bi  {0, 1}

număr binar cu 8 cifre = b7b6b5b4b3b2b1b0


b0 : lsb
b7 : msb

2) Reprezentarea întregilor cu semn în "binar natural"


Semnul numărului este reprezentat de msb cu următoarea convenţie:
msb = 0 semnifică număr pozitiv;
msb = 1 semnifică număr negativ.
Pentru un număr fără semn cu 8 biţi, plaja numerelor reprezentabile acoperă 256 de poziţii,
între 0 şi 255, în zecimal.
Pentru un număr cu semn, plaja numerelor reprezentabile acoperă tot 256 de poziţii, dar în
intervalul -128  +127, presupunând 0 număr pozitiv.
2.a. Convenţii de reprezentare:

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

Regulile de reprezentare în aceste trei convenţii:


-numerele pozitive se reprezintă identic.
-în "mărime şi semn", numerele negative diferă de cele pozitive numai prin bitul de semn.
-în "complement faţă de 1", mărimea numărului negativ se obţine din reprezentarea
precedentă prin complementare bit cu bit; convenţia pentru bitul de semn se păstrează.
-în "complement faţă de 2", mărimea numărului negativ se obţine din reprezentarea
precedentă prin adunarea unei cifre binare 1 la lsb.
2.b. "Fanioane"
 "Transportul" care apare între rangul unui număr binar şi cel imediat superior în
operaţiile aritmetice (la scădere, îl vom numi "împrumut"): C (de la "carry").
 "Depăşirea": O (de la "overflow"). După cum numărul are semn sau nu, se poate scrie
că:

O = Cmsb SAU Cmsb-1  msb

Tabel1.II.Extinderea numerelor cu semn reprezentate în complement faţă de 2, de la 8 la 16 biţ.


Reprezentare cu 8 biţi Reprezentare cu 16 biţi
8
Arhitectura microprocesoarelor – principii şi aplicaţii

+1 00000001 0000000000000001
- 1 11111111 1111111111111111

Regulile de "extindere a numerelor cu semn, în complement faţă de 2":


- Bitul de semn rămâne pe poziţia cea mai semnificativă.
- Partea care reprezintă mărimea numărului va ocupa poziţiile cele mai puţin semnificative
ale numărului extins.
- Restul poziţiilor din numărul extins se completează cu cifre binare identice cu cea care
reprezintă semnul (0 pentru numere pozitive şi 1 pentru numere negative).
3) Reprezentarea întregilor în "zecimal codificat binar" (ZCB)
Se reprezintă fiecare cifră zecimală separat, în binar natural, cu un nibble.
Microprocesoarele folosesc două tipuri de reprezentări ZCB:
- Reprezentarea "ZCB împachetat" în care fiecare octet din memorie cuprinde câte două
cifre zecimale, una pe nibble-ul mai puţin semnificativ şi cealaltă pe nibble-ul superior. Plaja de
numere zecimale acoperită de o reprezentare cu 8 biţi se micşorează de la 256 la 100 de numere:
0  99.
- Reprezentarea "ZCB neîmpachetat" în care fiecare octet cuprinde o singură cifră
zecimală pe nibble-ul mai puţin semnificativ. Restul cifrelor binare se completează cu 0.
4) Reprezentarea numerelor cu zecimale "cu virgulă fixă"
Se foloseşte principiul de a aloca un număr fix, prestabilit, de cifre binare pentru a reprezenta
partea întreagă şi respectiv partea zecimală a unui număr.
Se poate folosi fie reprezentarea în binar natural fie în ZCB. Pentru partea întreagă se
foloseşte regula de reprezentare a numerelor întregi cu semn, iar pentru partea zecimală regula
de reprezentare a întregilor fără semn. (Apar: "trunchierea" sau "rotunjirea" numărului).
Modul de reprezentare foloseşte următoarele convenţii:
• Se rezervă un şir de biţi cu care se exprimă numărul total de cifre ale numărului care
urmează să fie reprezentat.
• Se rezervă, apoi, un şir de biţi în care se înscrie numărul de zecimale cu care se va
reprezenta numărul.
• Urmează reprezentarea propriu-zisă a numărului înşiruind reprezentările pentru partea
întreagă şi cea zecimală fără o altă delimitare explicită între ele.

Un exemplu în ZCB împachetat:

0000 0100 0010 0000 1001 0110 0001 0101 ....


numărul reprezentat este + 96.15 .

5) Reprezentarea numerelor cu zecimale "cu virgulă mobilă"; reprezentare normalizată.

Două entităţi informaţionale: "mantisa" M şi "exponentul" EXP:

număr binar = M * 2 EXP

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

6)Formatul datelor pentru coprocesoare aritmetice

Tabel 1.III

Tabel1 IV

Tabel. V

c) Reprezentarea datelor alfanumerice


Vom înţelege prin "date alfanumerice" sau "caractere" oricare dintre semnele care pot fi
tipărite de la tastatura unui calculator.
"Seturi de caractere": grupuri minime de simboluri considerate suficiente pentru a asigura o
editare cât mai completă a unui text.
Pentru fiecare caracter se va folosi o reprezentare binară, un cod, cu care caracterul (dintr-un
set prestabilit) este în relaţie biunivocă.
Standardul "ASCII" ( de la "American Standard Code for Information Interchange") cu care
se codifică următorul set de caractere:
10
Arhitectura microprocesoarelor – principii şi aplicaţii

- 26 de litere mari ale alfabetului latin;


- 26 de litere minuscule corespunzătoare;
- 10 simboluri numerice: 0  9;
- 20 de simboluri speciale adiţionale: +, -, (, ), [, ], {, }, * , # , $ etc.

Codificare cu 7 biţi : msb : "bit de paritate". Convenţia folosită este următoarea:


msb = 0 dacă codul are un număr par de cifre binare 1;
msb = 1 dacă codul are un număr impar de cifre binare 1;
De exemplu: A = 01000001;
B = 01000010;
C = 11000011 etc.
Bitul de paritate  fanion dedicat (P).

1.3.2 Reprezentarea externă


Reprezentarea externă se referă la modul în care informaţia prelucrată de un microcalculator
apare utilizatorului (programatorului).
a) Pentru codurile instrucţiunilor se vor folosi abrevierile sugestive pe care, de regulă,
fabricantul le impune şi pe care limbajul de asamblare le foloseşte ca atare: "mnemonice".
b) Pentru numere se utilizează mai multe tipuri de reprezentări:
• Reprezentarea binară, imagine fidelă a conţinutului locaţiilor de stocare a informaţiilor.
• Reprezentarea octală, care transformă numerele binare în baza de numeraţie 8.
• Reprezentarea hexazecimală : un simbol reprezentând o cifră în baza de numeraţie 16
înlocuieşte 4 cifre binare. Caracterele folosite sunt cifrele zecimale 0  9 şi literele A  F. Vom
folosi convenţia de a utiliza litera H ca sufix pentru numerele reprezentate în hexazecimal (de
pildă 1199H).
c) Pentru caractere se vor folosi chiar simbolurile cu care ele sunt individualizate.
Programele utilitare folosite pentru examinarea conţinutului locaţiilor de stocare a informaţiilor
fac conversia ASCII  simbol caracter dacă programatorul stabileşte că semnificaţia
informaţiei vizate impune această conversie.

1.3.3. Convenţii pentru notaţii

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;

mem o locaţie de memorie oarecare (sau mai multe locaţii succesive);


mem8 o locaţie de memorie de un octet;
mem16 o locaţie de memorie de 16 biţi (pot fi două locaţii succesive dacă formatul este
octetul);
mem32 o locaţie de memorie de 32 de biţi (pot fi patru locaţii succesive dacă formatul
este octetul);
memi o locaţie de memorie individualizată (în scopul de a o deosebi de alte locaţii de
memorie);

adr o adresă oarecare;


adr8 o adresă pe 8 biţi;
11
Arhitectura microprocesoarelor – principii şi aplicaţii

adr16 o adresă pe 16 biţi;


adr24 o adresă pe 24 de biţi;
adri o adresă individualizată (în scopul de a o deosebi de alte adrese);

(r) conţinutul unui registru oarecare;


(ri, rj) conţinutul a două registre concatenate;
(r)l conţinutul jumătăţii inferioare (mai puţin semnificativă) a unui registru;
(r)h conţinutul jumătăţii superioare (mai semnificativă) a unui registru;
((r)) conţinutul unei locaţii de memorie a cărei adresă se află într-un registru (adresare
indirectă);
(mem) conţinutul unei locaţii de memorie oarecare;
adrl jumătatea inferioară a unei adrese;
adrh jumătatea superioară a unei adrese;
data un operand oarecare;
data8 un operand de 8 biţi;
data16 un operand de 16 biţi;
disp8 un deplasament pe 8 biţi;
disp16 un deplasament pe 16 biţi;
port un port de intrare/ieşire oarecare;

2. Terminali

R1, R2, A, AX, BP, A6, Dn, An nume de registre;


(R1) conţinutul registrului R1;
(R1, R2) conţinutul perechii de registre R1 şi R2;
((R1)) conţinutul locaţiei de memorie a cărei adresă se află în
registrul R1;
MEM, MEM1 nume de locaţii de memorie;
ADR, ADRn nume de adrese;

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.

2. STRUCTURA UNUI NUCLEU DE MICROPROCESOR DE UZ


GENERAL, CISC
12
Arhitectura microprocesoarelor – principii şi aplicaţii

Un microprocesor are două funcţii de baza: de comandă şi de prelucrare.

2.1. Pasul 1 de detaliere: registrul de date şi registrul de adrese

Memoria interna a sistemului microcalculator reprezintă o parte componenta esenţială a


acestuia. Ea este utilizată pentru memorarea programelor executate de către microprocesor, şi
pentru vehicularea datelor şi rezultatelor diferitelor operaţii efectuate. Denumită memorie
principala a sistemului, capacitatea sa depinde de tipul microprocesorului utilizat. Transferul
datelor între componentele sistemului se realizează prin magistrala de date care interconectează
aceste componente (Fig. 2.1). Magistralele sunt grupuri de interconexiuni cu functii similare
care leagă diverse secţiuni ale unui sistem microprocesor.

Fig2.1 Modul de comunicare a blocurilor component ale unui microprocessor

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

2.2. Pasul 2 de detaliere: registrele generale

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

Fig2.2 Semnale de comandă şi selecţie a registrelor generale

Selectarea registrului de uz general desemnat de o instrucţiune este facută prin secţiunea de


control ( Fig.2.2 ).
Numărul şi dimensiunea registrelor generale constituie un criteriu de performanţă.

2.3. Pasul 3 de detaliere: unitatea aritmetică de procesare

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

Fig2.3 Unitatea aritmetică de procesare, semnale de comandă şi selecţie utilizate

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

2.4.Pasul 4 de detaliere: unitatea de control a adresării memoriei

- funcţia este de a furniza adresele fizice pentru memorie

- furnizarea adreselor fizice pentru instrucţiuni: - adresa instrucţiunii

următoare dintr-o secvenţă; adresa fizică a unei instrucţiuni de salt


15
Arhitectura microprocesoarelor – principii şi aplicaţii

- furnizarea adreselor fizice pentru date

Fig2.5 Arhitectura unităţii de control a adresării memoriei

Organizarea liniară a memoriei

Unitatea de memorie are o organizare liniară, constând în celule de stocare a informaţiei, al


căror conţinut poate fi manipulat prin specificarea adresei celulei date. Adresa ia valori cuprinse
între 0-2m-1 , unde m este numãrul de ranguri binare ale registrului de adrese.

- adresa fizică este atribut de arhitectură

PC (Program Counter) - registrul special care păstrează adresa următoarei instrucţiuni


- funcţia de bază este de a parcurge tabloul de adrese în mod crescător

(PC) AF instrucţiune curentă

RI - registru de păstrare a instrucţiunii curente


16
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig2.6 Organizarea liniară a memoriei


      
Stiva

- zonă speciala a memoriei, în care se stochează informaţia pe perioada execuţiei unei


subrutine, sau tratării unei întreruperi. Se pot folosi instrucţiunile complementare PUSH
rs şi POP rd.
- SP - stack pointer - registrul indicator de adresă al stivei programului

(SP) AF bază stivă

(SP) AF a vârfului stivei curente

Fig2.7 Modul de lucru cu stiva

- IX – registre index în care se înregistrează adresa fizică a bazei unui tablou

(IX) AF bază tablou


- elementele tabloului sunt accesate în interiorul tabloului prin adresa relativa (disp)
17
Arhitectura microprocesoarelor – principii şi aplicaţii

AF element din tablou (IX) + disp

2.5.Pasul 5 de detaliere: unitatea de control al microprocesorului

O funcţie importantă a unităţii de control este aceea de a decodifica şi executa instrucţiunile


programului pe baza căruia funcţionează întregul sistem.

Funcţiile Unităţii de Control al Microprocesorului sunt:


- desfaşurarea „în spaţiu”;
- desfaşurarea în timp.

Fig2.8 Formatul instrucţiunilor

Desfăşurarea în timp poate fi:


- cicluri maşină – intervalul corespunzător efectuării unei operaţii de bază;
- stări = perioada de tact a microprocesorului;

Exemplu: Fie un microprocesor CISC cu următoarele caracteristici:


- organizarea memoriei este liniră;
- memoria de date este reprezentată pe 1 octet;
- adresa fizică este pe 2 octeţi;
- registrele generale sunt pe 1 octet;

Să se realizeze adunarea între două date din memoria de date iar rezultatul se va
înregistra în registrul acumulator

(A)  ((R1)  (R2)) + ((R3)  (R4))

1. 1.1. (RA)  (PC)


READ
1.2. (PC)  (PC) + 1
1.3. (RD)  ((RA))
1.4. (RI)  (RD)
1.5. decodificare
18
Arhitectura microprocesoarelor – principii şi aplicaţii

2. 2.1. (RA)  (R1)  (R2)


READ
2.2. (RD)  ((RA))
2.3. (A)  (RD)

3. 3.1. (RA)  (R3)  (R4)


READ
3.2. (RD)  ((RA))
3.3. (A)  (RD) + (A)

În tabelul 2.1 este prezentă influenţa instrucţiunilor asupra semnalelor de comandă pentru
blocurile UCP

2.6. Semnale de comandă pentru blocurile Unităţii Centrale de Procesare

Fig2.9 Semnale de selecţie generate de unitatea de control şi sincronizare

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

2.7. Transmiterea datelor la Unitatea Logico - Aritmetică

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)

Fig2.10 Unitatea logico-aritmetică

3. DEZVOLTAREA FUNCŢIONALĂ A
MICROPROCESORULUI PE 16 BITI DE UZ GENERAL, CISC
20
Arhitectura microprocesoarelor – principii şi aplicaţii

3.1. Organizarea funcţională a unui microprocesor 16UG tipic


Noile atribute ale acestui tip de microprocesor:
1) mai multe procesoare care lucreaza în paralel, cu funcţii distincte;
2) coada fluxului de instrucţiuni
3) versatilitatea funcţiilor registrelor: „registre multifuncţionale”:
4) registre dedicate registre multifuncţionale
a. funcţii implicite
b. funcţii alternative
5) unitate de calcul al adreselor
6) structurarea logică a memoriei

Fig3.1 Arhitectura microprocesorului de tip CISC


Unitatea de Execuţie
- prelucreaza operanzii;
- conţine registrele generale şi ALU;
- acceptă informaţiile aferente instrucţiunilor deja aduse de către UIM;
21
Arhitectura microprocesoarelor – principii şi aplicaţii

- primeşte operanzii de la UIM;


- trimite rezultatele la UIM;
- conţine unitatea de control al microprocesorului.

Unitatea de Interfaţă cu Magistrala


- furnizează (calculează) adrese pentru instrucţiuni şi date;
- aduce instrucţiuni din memoria de program şi le stochează într-o memorie specială de tip
RAM numită coada fluxului de instrucţiuni;
- întrerupe umplerea cozii de instrucţiuni când se impune aducerea operanzilor sau
trimiterea rezultatelor;
- realizează structurarea logică a memoriei (de pildă: organizarea segmentată a memoriei).

3.2. Structura registrelor

3.2.1. Microprocesoare Intel în Mod Real

Există patru grupuri de registre pe 16 biţi (Fig. 3.2).


- Primul grup are rol de registre generale, acestea pot fi accesate şi pe jumătăţi;
- Al doilea grup sunt registre fizice pe 16 biţi atribuite de arhitectură, nu pot fi accesate şi
pe jumătăţi;
- Grupul al treilea de registre sunt dedicate, registrul de fanioane (F) poate fi accesat şi pe
bit;
- Al patrulea grup sunt atribuite de arhitectură, permit crearea unor subdiviziuni logice
numite segmente.

Fig3.2 Registre generale


22
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").

Fig3.3 Registre generale extinse

Caracteristicile rezultatului unei operaţii sunt semnalate într-un registru special denumit
registrul de stare (Fanioane).

Fig3.4 Registrul de stare (Fanioane)


3.2.2. Microprocesoarele Motorola

Reprezentarea celor patru grupe de registre pe 32 de biţi, ale microprocesoarele Motorala


(Fig.3.5):
I. registre de date;
II. registre de adrese;
III. registre dedicate;
IV. registre dedicate.
23
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig3.5 Harta memoriei a microprocesoarele Motorola

Concluzii ale microprocesoarele CISC


1. au un set de registre limitat care îndeplinesc funcţii diverse;
2. dimensiunea registrelor este dată de dimensiunea operanzilor uzuali de lucru sau a
adreselor;
3. au câteva registre dedicate şi mai multe multifuncţionale;
4. la microprocesoarele INTEL sunt registre utilizate pentru segmentarea memoriei iar la
Motorola sunt registre utilizate pentru realizarea a două nivele de protecţie.
3.3. Organizarea memoriei microcalculatorului

- dimensiunea hărţii memoriei


- formatul memoriei
- convenţiile de stocare în memorie a datelor care ocupă mai mult de o locaţie
- structurarea logică a memoriei

3.3.1. Microprocesoarele Intel în Modul Real

Pentru a modulariza blocurile de memorie folosite de diverse task-uri şi pentru a nu se


specifica pe tot parcursul unui program o adresa logică de 32 de biţi, arhitectura procesoarelor
Intel foloseşte procedeul segmentării. Spaţiul de memorie este împărţit în blocuri de maxim 64
KB în Modul Real (respectiv 1020 =1Mo sau 4 Go în Modul Protejat), blocuri numite segmente.
Aceasta permite ca în Modul Real specificarea unei adrese de memorie să se facă prin numai 16
biţi, consideraţi ca fiind poziţia locaţiei respective de memorie faţă de baza segmentului în care
se află. Aceşti 16 biţi formează adresa efectivă sau deplasamentul (offset).

-adresa fizică: AF adresa logică: ALadr32, compusă din:


adresa segment: AS adr16
24
Arhitectura microprocesoarelor – principii şi aplicaţii

adresa efectivă: AE adr16

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).

AFbazei segmentului = AS  0000

AF = AS  0000 + AE
AF = AS  0H + AE

Fig3.6 Operaţiile necesare pentru obţinerea adresei fizice

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 = (CS) | (SS) | (DS) | (ES) [ | (FS) | (GS)]

AE = (SP) | (BP) | (SI) |(DI) | (IP) | (BX) | adr

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

- poziţia relativă a segmentelor.

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

Redefinirea utilizării unui segment:


- redirecţionare
- suprapunere

3.3.2. Microprocesoarele Motorola M680xx

Adresa fizică este reprezentată pe 24 biţi:

AF  adr24
AF  AE = (PC) | (Ai)i=0..6 | (USP) | (SSP) | (Di)i=0..7 | adr24

Organizare liniară a memoriei  Organizare segmentată a memoriei

Memorie organizată liniar - atribut de arhitectură

- timp de acces
- ocuparea hărţii memoriei
- modularizare

Concluzii la modul de organizare a memoriei


1. microprocesoarele CISC (de la generaţia a treia) folosesc adresele fizice pentru a
permite accesul la o memorie cât mai mare;
2. organizarea memoriei este un atribut de arhitectura pentru microprocesoarele bazate pe
arhitectura Von-Newman;
3. formatul memoriei este impus de microprocesor şi poate fi octetul, cuvântul sau dublul
cuvânt;
26
Arhitectura microprocesoarelor – principii şi aplicaţii

4. organizarea memoriei, la microprocesoarele CISC din generaţia a treia, este liniară


(adresa fizică - atribut de arhitectură) sau segmentată (adresa logică - atribut de
arhitectură);

Subiecte pentru verificarea cunoştinţelor

1. Indicatorul de stivă primară pentru un procesor compatibil Intel x86 este:


b) BP;
c) SP;
d) PF;
e) IP.

2. Acumulatorul implicit pe 32 de biţi pentru microprocesorul Intel 8086 este:


a) AX;
b) AL;
c) DX  AX;
d) DX.

3. Pentru un procesor compatibil Intel x86, registrul SI foloseşte:


a) pentru localizarea informaţiilor in stiva hardware;
b) pentru stocarea adreselor efective a elementelor şirului destinaţie;
c) pentru localizarea instrucţiunii curente;
d) pentru stocarea adreselor efective ale elementelor şirului sursă.

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 ?

7. Comparaţie între organizarea liniară şi organizarea segmentată a memoriei. Exemple.


27
Arhitectura microprocesoarelor – principii şi aplicaţii

4. PRINCIPIILE DE BAZĂ ALE UNEI ARHITECTURI TIPICE


CISC

4.1. Transferurile de date

Transferuri de date: deplasări de operanzi şi/sau rezultate în interiorul microprocesorului,


între microprocesor şi celelalte componente ale microcalculatorului, sau între microcalculator şi
lumea exterioară.
Din punctul de vedere al complexităţii transferurilor de date, se poate face următoarea
clasificare a microprocesoarelor de uz general:

 Procesoare din categoria A:


28
Arhitectura microprocesoarelor – principii şi aplicaţii

 Procesoare din categoria B: au toate caracteristicile celor din categoria A şi în plus:

 Procesoare din categoria C: au toate caracteristicile celor din categoria B şi în plus:

 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.

4.2. Tehnici de adresare

Î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.

1. Adresare implicită (în registru):


un registru (pereche de registre) este specificat (specificată) într-unul dintre câmpurile
codului instrucţiunii.
Mod de adresare ce se referă la date

cod cod reg. cod reg.


semantică destinaţie sursă

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)

Mod de adresare care se referă numai la date mai ales constante

Fig4.1 Exemplu de adresare imediată, PC este pe 16 biti. Informaţia este stocată pe 1 sau 2 octeţi

3. Adresare absolută (extinsă, directă):


instrucţiunea conţine adresa la care se găseşte operandul necesar pentru implementarea
instrucţiunii respective.

data = (adrh  adrl)


unde adrl = ((PC) + 1) şi adrh = ((PC) +2)

Mod de adresare utilizat pentru orice tip de informaţie

Fig4.2 Exemplu de adresare absolută aplicat pe o memorie organizată liniar

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ă.

data = (adrh  adrl)

adrl = ((PC) + 1) şi adrh = 00H

Mod de adresare utilizat pentru utilizat pentru date şi instrucţiuni

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.

data = ((PC) ± disp8 | disp16)

Mod de adresare utilizat la implementarea instrucţiunilor de salt relativ în


program.
31
Arhitectura microprocesoarelor – principii şi aplicaţii

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ă

6.a. Adresare indirectă prin registru:


mod scurt de adresare, în codul instrucţiunii curente se indică un registru ce conţine adresa
completă a informaţiei vizate.

data = ((ri)  (rj)) | ((r16))

Se specifică în instrucţiune registrul în care se găseşte adresa

Mod de adresare care se referă la date şi instrucţiuni

Fig4.5 Exemplu de mod de adresare indirectă prin registru

6.b. Adresare indirectă cu memoria:


instrucţiunea conţine în cuvântul de instrucţiune, ca operand, o adresa la care se va gasi, în
memorie, adresa efectivă unde este localizată data cu care va opera instrucţiunea la execuţia sa.

data = (adr2) = ((adr1))


32
Arhitectura microprocesoarelor – principii şi aplicaţii

adrese indirecte=pointeri

Mod de adresare care se referă la date şi instrucţiuni

Fig4.6 Exemplu de mod de adresare indirectă cu memoria

7. Adresare indexată

7.a. Adresare cu pre-indexare:


în formatul instrucţiunii curente se află poziţia relativă (deplasamentul) unei date dintr-un şir sau
tablou. Mărimea deplasamentului, care este pozitiv, indică marimea tabloului.

data = ((IX) +disp8) = ('BAZA' +disp8)


sau
data = ((IX) +disp16) = ('BAZA' +disp16)
Mod de adresare utilizat pentru date
33
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig4.7 Exemplu de mod de adresare cu pre-indexare

7.b. Adresare cu post-indexare:


în formatul instrucţiunii curente se găseşte adresa completă a deplasamentului unei date într-un
tablou de date predefenit.

data = ((IX) +(adr)) = ('BAZA' +(adr))

data = ((IX) +(adr+1)(adr)) = ('BAZA' +(adr+1)(adr))

Mod de adresare utilizat pentru date


34
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig4.8 Exemplu de mod de adresare cu post-indexare

4.3. Tehnici de adresare tipice microprocesoarelor CISC

4.3.1. Tehnici de adresare pentru Intel x86 în Modul Real

a) Adresarea memoriei de program:

1. Adresarea relativă:

(IP) (IP) + disp8|disp16

2. Adresarea directă (“salturile inter-segment”):

(IP) adr32l
(CS) adr32h

b) Adresarea memoriei de date (operanzi/rezultate):

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

AF = (DS)0H + (SI)|(DI) + disp8|disp16


adică: AF = (DS)0H + (SI)|(DI) + [((CS)0H+(IP)+2) ]((CS)0H+(IP)+1)

4. Adresarea indirectă-implicită:

AF = (DS)0H +(SI)|(DI)

5. Adresarea relativă la bază:


5.1. Adresare relativă la bază directă:
combinaţie dintre adresarea directă şi indirectă prin registru

AF = (DS)0H + (BX) + adr8|adr16

cu: adr8 = ((CS)0H+(IP)+1)


sau: adr16 = ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)

5.2. Adresare relativă la bază indexată:


combinaţie dintre adresarea indexată şi indirectă prin registru

AF = (DS)0H + (BX) + (SI)|(DI) + disp8|disp16


cu: disp8 = ((CS)0H+(IP)+1)
sau: disp16 = ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)

5.3. Adresare relativă la bază implicită:


combinaţie dintre două adresări indirecte cu registru

AF = (DS)0H + (BX) + (SI)|(DI)

6. Adresarea în stivă:
6.1. Adresare în stivă directă:

AF = (SS)0H + (BP) + adr8|adr16


cu: adr8 = ((CS)0H+(IP)+1)
sau: adr16 = ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)

6.2. Adresare în stivă indexată:

AF = (SS)0H + (BP) + (SI)|(DI) + disp8|disp16


cu: disp8 = ((CS)0H+(IP)+1)
sau: disp16 = ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)

6.3. Adresare în stivă implicită:

AF = (SS)0H + (BP) + (SI)|(DI)

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

pe 32 biţi: AF = EAX | EBX | ECX | EDX | ESP | EBP | ESI | EDI

O instrucţiune este compusă din (la microprocesoarelor Intel) :


- o zonă de un octet care conţine codul operaţiei care trebuie efectuată;
- o zonă de un octet care conţine informaţii privind modul de adresare (MOD r/m);
- o zonă de cel mult patru octeţi care conţine datele implicate în instrucţiune sau adresa acestor
date (OFFSET).

"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

Tabel 4.1. Codificarea modurilor de adresare

4.3.2. Tehnici de adresare pentru Motorola 680xx

 Adresarea în registru („directă în registru”):

1. În registre de date:

AF = Dn, cu n = 0,...,7
ceea ce este echivalent cu:
data = (Dn)

2. În registre de adrese:

AF = An cu n = 0,...,6, ceea ce este echivalent cu data = (An).

 Adresarea absolută:

3. Adresare absolută scurtă:

AF  adr16 = ((PC) + 1).

4. Adresare absolută lungă:


37
Arhitectura microprocesoarelor – principii şi aplicaţii

AF  adr32 = ((PC) + 2)  ((PC) + 1).

 Adresarea relativă:

5. Adresare relativă propriu-zisă („cu deplasament”):

AF = (PC) + disp16, în care: disp16 = ((PC) + 1).

6. Adresare relativă cu index şi deplasament:

AF = (PC) + (Xn) + disp8,


în care
Xn = An|Dn şi disp8 = ((PC) + 1)l.

 Adresarea indirectă prin registru are şi ea mai multe variante:

7. Adresare indirectă prin registru „simplă”:

AF=(An) adică: data=((An))

8. Adresare indirectă prin registru cu deplasament:

AF = (An) + disp16 adică: AF = (An) + ((PC) +1).

9. Adresare indirectă prin registru cu deplasament şi bază:

AF = (Xn) + (An) +disp8


adică:
data = ((Dn)|(An) + (An) + ((PC) + 1) l),

10. Adresare indirectă prin registru cu post-incrementare:

AF = (An), (An)  (An) + N,

11. Adresare indirectă prin registru cu pre-decrementare:

(An)  (An) - N, AF = (An),

 Adresarea imediată:
12. Adresare imediată propriu-zisă:

data8 = ((PC) + 1)l,


data16 = ((PC) + 1) şi:
data32 = ((PC) + 2)  ((PC) + 1).

13. Adresare imediată „rapidă”.

14. Adresarea implicită în registre speciale:


38
Arhitectura microprocesoarelor – principii şi aplicaţii

AF = SR,
AF = USP,
AF = SSP,
sau AF = PC.

4.4. Tipuri de instrucţiuni

4.4.1. Instrucţiuni de transfer date

(d)(s)

• PUSH R1R2; (SP)  (SP) - 1


((SP))  (R2)
(SP)  (SP) - 1
((SP))  (R1) .
• POP R1R2; (R1)  ((SP))
(SP)  (SP) + 1
(R2)  ((SP))
(SP)  (SP) + 1

• Repeat
((R1,R2))  ((R3,R4))
(R1,R2)  (R1,R2) + 1
(R3,R4)  (R3,R4) + 1
(R5,R6)  (R5,R6) - 1
Until (R5,R6) = 0H

4.4.2. Instrucţiuni de prelucrări de date

• operaţii monadice: - cu acumulator: (d)  (d) ;


- fără acumulator: (d)  (s) ;

• operaţii diadice: - cu acumulator: (d)  (d)  (s) ;


- fără acumulator: (d)  (s1)  (s2)

• (R1,R2)  (R1,R2) + (R3,R4) [ + (C)]

• (A) - (s) if (A) = (s) then (Z)  1


if (A) > (s) then (C)  0
else (C)  1
39
Arhitectura microprocesoarelor – principii şi aplicaţii

• Repeat
(A) - ((R3,R4))
(R3,R4)  (R3,R4) + 1
(R5,R6)  (R5,R6) - 1
Until (R5,R6) = 0H  (A) = ((R3,R4))

Fig4.9 Rotire la stânga şi rotire la dreapta prin bitul de transport

4.4.3. Instrucţiuni de control al programului

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

- după complexitatea salturilor:


A – salturi cu două posibilităţi
B – salturi cu trei posibilităţi
C – cicluri

Moduri de adresare pentru salturile propriu-zise

• 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;

• adresarea indirectă prin registru:


(PC)  ((ri, rj) + 1)  ((ri, rj)) ,

• adresarea scurtă (în “pagina 0”):


(PC)l  adr8
(PC)h  0H .

Moduri de adresare pentru apeluri de subprograme

CALL adr ; (SP)  (SP) - 1


((SP))  (PC)h
(SP)  (SP) - 1
((SP))  (PC)l
(PC)  adr ,
sau, mai concis:
(SP)  (SP) - 2
((SP) + 1)  (PC)h
((SP))  (PC)l
(PC)  adr .

RET ; (PC)l  ((SP))


(SP)  (SP) + 1
(PC)h  ((SP))
(SP)  (SP) + 1,
sau, mai concis:
(PC)l  ((SP))
(PC)h  ((SP) + 1)
(SP)  (SP) + 2 .
Clasificare după complexitatea salturilor
 if condiţie = true then (PC)  adr
41
Arhitectura microprocesoarelor – principii şi aplicaţii

 if (ri) | (memi) > (rj) | (memj) then


(PC)  adr1
else
if (ri) | (memi) = (rj) | (memj) then
(PC)  adr2
else
(PC)  adr3 .

 (ri)  (ri) – 1
if (ri) ≠0H then (PC)  (PC) + disp8 | disp16

4.4.4. Instrucţiuni de intrare/ieşire


IN d, port; (d) (port)
OUT port, s ; (port) (s)
- d sau s - acumulatorul implicit sau dedicat
- harta porturilor este mult mai mică decât harta memoriei
- moduri de adresare foarte restrictive pentru porturi:
- directa
- indirecta prin registru
Acces rapid la porturi

4.4.5. Instrucţiuni de control al microcalculatorului

 Instrucţiuni care sincronizează microcalculatorul cu anumite stări speciale ale


microprocesorului:
- stare de aşteptare;
- funcţionare pas cu pas;
- acces direct la memorie;
- partajarea resurselor sistemului cu alte procesoare.

 Accesul la anumite fanioane (setare, resetare), în special fanioanele care semnalează


acţiuni specifice (ca de pildă validarea cererilor de întrerupere).

Subiecte pentru verificarea cunoştinţelor

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ă?

3. Ce restricţii există în poziţionarea absolută şi în poziţionarea relativă a segmentelor create în


memoria unui microcalculator realizat cu microprocesoarele Intel x86 funcţionând în modul
real?
42
Arhitectura microprocesoarelor – principii şi aplicaţii

4. Care este deosebirea de principiu dintre “salturile propriu-zise” şi “apelurile de subprograme”


pentru un microprocesor de uz general CISC? Să se exemplifice folosind descrierea formală a
semanticii a unor instrucţiuni tipice.

5. Să se prezinte descrierea formală a mecanismului de calcul al adresei unui vector de


întrerupere pentru microprocesoarele compatibile x86, funcţionând în modul real.

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?

8. Exemple de adresări compuse pentru microprocesoare CISC şi RISC

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.

5. PRINCIPIILE DE BAZĂ ALE UNEI ARHITECTURI TIPICE


RISC

Diferenţa dintre arhitecturile CISC şi RISC nu constă doar în numărul de instrucţiuni


executabile ci şi în structura internă şi modul de funcţionare. Avantajele arhitecturii RISC sunt
mari astfel că au fost aplicate concepţii de tip RISC şi la microprocesoarele cu arhitectură de
bază de tip CISC

Caracteristici definitorii RISC

1. Unitatea de control este realizată prin “logică de tip cablat”


2. Instrucţiunile se desfăşoară într-o singură stare: CPI = 1
43
Arhitectura microprocesoarelor – principii şi aplicaţii

3. Număr mic de instrucţiuni (sub 128)


4.Dimensiunea este fixă pentru formatul tuturor instrucţiunilor (uzual, de dimensiunea
operanzilor tipici)
5. Uniformitatea formatului instrucţiunilor (nu mai mult de 4 tipuri de formate).
6. Numărul mic de moduri de adresare (sub 4)
7. Există un număr mare de “registre generale”, atribute de arhitectură (cel puţin 32)
8. Accesul memoriei se face numai cu instrucţiuni de transferuri simple de date între registre şi
memorie (instrucţiuni tip “LOAD” şi “STORE”); operaţiile de prelucrare a datelor folosesc
numai registrele microprocesorului

5.1. Setul de registre

1. Registrele generale sunt atribute de arhitectură în care se memorează temporar operanzii;


2. La microprocesoarele RISC sunt cel puţin 32 de registre cu dimensiuni de cel puţin 32 biţi;
3. Registrele sunt multifuncţionale şi foarte puţine dedicate, în general nu au funcţii implicite;
4. În cadrul setului de registre fizice se pot defini seturi de registre logice

Set de registre de lucru – setul de registre utilizate într-un microprocesor, registre fizice sau
logice

Avantajele unui set mare de registre generale

1. Mărirea vitezei de procesare prin minimizarea accesului în memorie a operanzilor şi/sau


rezultatelor
2. Realizarea structurilor de date de tip stivă sau coadă “hard” (în interiorul microprocesorului)
3. Transferul parametrilor între programele apelante şi cele apelate direct în interiorul micro-
procesorului
4. Deservirea cererilor de întrerupere şi multiprocesarea pot fi realizate direct în interiorul
microprocesorului
5. Mărirea “factorului de uniformitate” a cipului (număr total de circuite / număr de tipuri de
circuite: registre, UAL, numărătoare etc.)
44
Arhitectura microprocesoarelor – principii şi aplicaţii

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

Poces 1 Proces 2 Proces 3

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.

Registrele microprocesoarelor “Berkeley RISC I şi II”

a) Registrele disponibile pentru o procedură

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

Fig5.3 Modul de definire a parametrilor în proceduri

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ă.

b) Registrele fizice şi ferestrele de registre logice

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.

5.2. Setul de instrucţiuni şi tehnicile de adresare

Setul de instrucţiuni al unui microprocesor RISC este caracterizat de simplitatea formatului şi


de un număr limitat de moduri de adresare. Microprocesorul RISC I deţinea un set de 31
instrucţiuni grupate în 4 categorii: aritmetico-logice, de acces la memorie, de salt / apel subrutine
şi speciale. Deşi are un set redus de instrucţuni procesorul Berkeley RISC I poate sintetiza o
multitudine de instrucţiuni aparent "inexistente" la acest model. Practic nu se "pierd" instrucţiuni
ci doar "opcode"- uri, şi ca o consecinţă, se simplifică substanţial logica de decodificare şi
unitatea de comandă.

Tipuri de instrucţiuni RISC:


- Instrucţiuni pentru acces în memorie: LOAD / STORE
LOAD r, mem; rrmem
47
Arhitectura microprocesoarelor – principii şi aplicaţii

STORE mem, r; memr

- Instrucţiuni aritmetico-logice
ds1s2

- Salturi propriu-zise şi apeluri de subprograme


- Instrucţiuni de control al microprocesorului

Tipuri de moduri de adresare pentru RISC:

- î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.

Exemple pentru Intel i860/960


- o adunare pentru întregi cu semn:
adds s1,s2,d; (d) (s1)+ (s2)
- o referinţă în memorie cu adrese în două registre generale:
ldl.l s1(s2), d; (d) ((s2)+ (s1))
- o referinţă în memorie folosind o constantă:
st.s s1, #const(s2); ((s2)+ const) (s1)
- o deplasare stânga cu trei operanzi:
shl s1, s2, d; (d) (s2)* 2(s1)

5.3. Unitatea de control al microprocesorului

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).

Modul de realizare a unei instrucţiuni de înmulţire:

a) pentru un microprocesor CISC :


- timpul de realizare a operaţiei depinde de operanzi ;
- succesiunea de stări este dată de micro-program;
- algoritmul nu este optimizat.

Fig5.6 Operaţia de înmulţire la microprocesoarele CISC

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

b) pentru un microprocesor RISC :


- înmulţirea se poate face într-o singură stare.

p4p3p2p1 d2d1*i2i1

Fig5.7 Operaţia de înmulţire la microprocesoarele RISC

1. Desfăşurarea în timp a instrucţiunilor pentru microprocesoarele RISC

Microprocesoarele RISC au formatul instrucţiunilor de aceeaşi dimensiune. Instrucţiunea se


desfăşurată pe cinci stări (Fig.5.8).
Tehnica de procesare pipeline reprezinta o tehnică de prelucrare paralelă a informaţiei prin
care un proces secvenţial este divizat în subprocese. Subprocesele sunt executate în stări special
dedicate şi care operează în paralel cu celelalte stări. Fiecare stare execută o prelucrare parţială a
informaţiei. Rezultatul obţinut în starea n este transmis în tactul următor spre prelucrarea stării
(n+1). Rezultatul final este obţinut numai după ce informaţia a parcurs toate stările, la ieşirea
ultimei stări.
Caracteristic acestor tehnici este faptul că diversele procese se pot află simultan în diferite
faze de prelucrare în cadrul diverselor stări. Suprapunerea procesărilor este posibilă prin
asocierea unui registru de încarcare (latch) fiecărei stări din pipeline. Registrele produc o
separare între stări astfel încât în fiecare stare să se poată prelucra date.
50
Arhitectura microprocesoarelor – principii şi aplicaţii

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.

5.4. Caracteristici RISC la nivelul software

Optimizarea translatării registrelor logice în registre fizice pentru microprocesoarele


RISC

La microprocesoarele RISC implementarea programelor se face de fabricant.


51
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig5.9 a)diagrama timpilor de utilizare a registrelor logice A, B, C, D, E, F (setul de lucru)


b) “Graful culorilor” utilzat pentru alocarea registrelor fizice R1, R2, R3

Optimizarea prevenirii blocării Unităţii de control

ADD r3, r2, r1


AND r0, r5, r6
JMPZ r0, eticheta
NOP
....
eticheta: SUB r1, r5, r6

AND r0, r5, r6


JMPZ r0, eticheta
ADD r3, r2, r1
....
eticheta: SUB r1, r5, r6

Avantajele RISC

1. Realizarea fizică în structuri VLSI:


- minimizarea ariei cipului dedicată Unităţii de control al microprocesorului (sub 10%);
- mărirea ariei cipului disponibilă pentru registre generale;
- mărirea “factorului de uniformitate” a cipului (număr total de circuite / număr de tipuri
de circuite: registre, UAL, numărătoare etc.);
- posibilitatea utilizării altor tehnologii decât cea a siliciului (ex. GaAs).
2. Mărirea vitezei de procesare:
- prin realizarea Unităţii de control cu logică de tip cablat;
- prin utilizarea unui număr mare de registre interne se reduce traficul cu memoria;
- prin suprapunerea execuţiei instrucţiunilor;
- prin utilizarea tehnicii “întârzierii salturilor” se previne golirea cozii de instrucţiuni.
3. Scăderea costului şi mărirea fiabilităţii:
- timp mai mic pentru proiectarea Unităţii de control;
- timpul global de proiectare şi punere în fabricaţie este considerabil mai mic decât
pentru CISC;
- probabilitate mai mică de a avea erori de proiectare şi uşurinţă de corectare;
- lungimea standard a formatului instrucţiunilor elimină riscul depăşirii limitelor
paginilor de către o instrucţiune. Gestionarea paginilor devine mai uşoară.
4. Suport pentru limbajele de nivel înalt:
- realizarea compilatoarelor este mai simplă (număr mic de opţiuni în alegerea instruc-
ţiunilor);
- creşterea eficienţei prin utilizarea extensivă a operaţiilor de prelucrare în interiorul
microprocesorului;
- tehnica “ferestrelor de registre” uşurează implementarea apelării subrutinelor
(procedurilor).

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ă).

Subiecte pentru verificarea cunoştinţelor

1. Comparaţie între microprocesoarele CISC şi RISC privind organizarea registrelor; noţiunile


de registre fizice şi registre logice; exemple.

2. 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;
AND r7, r8, r9;
SUB r1, r4, r7;
JMPZ r1, et; if then

et: ADD r7, r8, r9;

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

Unitatea de intrare şi unitatea de ieşire formează grupul dispozitivelor de intrare/ieşire ce


asigură instrucţiuni şi date sistemului, care anterior au fost stocate în unitatea de memorie.
55
Arhitectura microprocesoarelor – principii şi aplicaţii

6.1. Spaţiul dispozitivelor de intrare/ieşire

Microprocesorul dispune de un spaţiu larg de intrare/ieşire separat de memorie, precum şi de


instrucţiuni care transferă date între CPU şi echipamente localizate în acest spaţiu. Acestea pot
de asemenea să fie dispuse în zona de memorie, pentru a beneficia de o putere sporită a setului
de instrucţiuni şi a modurilor de adresare şi de operaţii de intrare/iesire.
Porturile I/O pot fi adresate ca locaţii de memorie, ceea ce permite utilizarea instrucţiunilor
de lucru cu memoria, eficiente în privinţa adresării şi vitezei de lucru.

Accesarea porturilor:

a)Ca porturi propriu-zise


- cicluri maşină specifice
- semnale distincte pe magistrala de control: IOR şi IOW

IN d, port
OUT port, d

- d este acumulatorul implicit sau dedicat


- harta porturilor este mult mai mică decât harta memoriei
- moduri de adresare foarte restrictive pentru porturi:
- directă
- indirectă prin registru

 Acces rapid la porturi


 Consumă coduri de instrucţiuni
 Consumă terminale de pe magistrala de control

a) Ca locaţii de memorie

- cicluri maşină de acces în memorie


- semnale pe magistrala de control folosite pentru accesul în memorie: MEMR şi
MEMW

 Extind toate caracteristicile transferurilor de date asupra instrucţiunilor I/O


 Extind utilizarea porturilor şi în cadrul instrucţiunilor de prelucrări de date
 Consumă spaţiu din harta memoriei
 Timp mare de acces (formatul instrucţiunilor, modurile de adresare)

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.

6.2. Tehnici de intrare/ieşire uzuale

Sunt tehnici de sincronizare a microcalculatorului cu echipamentele periferice conectate prin


intermediul porturilor.
56
Arhitectura microprocesoarelor – principii şi aplicaţii

Tehnici
A. Sincrone cu programul curent
B. Asincrone cu programul în curs de desfăşurare

A. Interogarea continuă (tehnica “pooling”)

Acestă tehnică presupune rularea periodică, de către microprocesor, a unui program de


interogare a dispozitivelor de intrare/ieşire, pentru a se detecta momentul în care acestea solicită
sau sunt pregătite pentru un transfer de intrare/ieşire (Fig. 6.1.). Fiecare dispozitiv de
intrare/ieşire conţine un registru de stare. Microprocesorul citeşte periodic starea portului iar în
momentul în care este liber se iniţiază un transfer de informaţii.

Fig 6.1 Schema simplificată a transferului programat ( în pooling)

Exemplu:

Start1: IN AL, PORT1


SHL AL, 1
JNC Start1
OUT PORT1, AX
Start2: IN AL, PORT2
SHL Al, 1
JNC Start2
OUT PORT2, AX
Avantaje:
 Nu implică hardware suplimentar
 Comunicarea cu perifericele se face sincron cu programul curent

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.

Răspuns la o cerere de întrerupere: o secvenţă de acţiuni pe care microprocesorul o


declanşează părăsind programul normal de funcţionare.

Rutină de deservire a unei întreruperi: un program prestabilit, aflat la o adresă prestabilită,


prin care microprocesorul răspunde la o anumită cerere de întrerupere
formulată de un anumit periferic.

Fig 6.2 Schema simplificată a transferului intrare/ieşire cu utilizarea întreruperilor

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

6.3. Întreruperi caracteristice microprocesoarelor de uz general

a) Accesul direct la memorie:


58
Arhitectura microprocesoarelor – principii şi aplicaţii

Transferul intrare/ieşire cu utilizarea întreruperilor se realizează prin trecerea


microprocesorului în regimul de cedare de magistrale. În acest caz este necesar un dispozitiv de
tip controler DMA care gestionează solicitările de acces direct la memorie ale altor dispozitive
intrare/ieşire, arbitrează solicitările simultane pe baza priorităţilor de servire şi lansează o cerere
către microprocesor. Microprocesorul răspunde la solicitare şi îşi suspendă activitatea. DMA-ul
poate fi extern sau intern microprocesorului.

Fig 6.3 Schema transferului intrare/ieşire prin acces direct la memorie

 are prioritatea maximă


 aşteaptă numai terminarea ciclului maşină curent

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.

Se utilizează adresarea indirectă cu memoria folosind o tabelă cu vectori de întrerupere

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

vector_de_întrerupere = ((I)  tip  0)  ((I)  tip  0 + 1)

1. Vectorul de întrerupere are 2 octeţi


2. tip are 7 biţi
3. Tabela cu vectori de întrerupere 256B
4. Localizarea tabelei este la alegerea utilizatorului

6.4. Tipuri de întreruperi pentru microprocesorul Intel în Modul Real


60
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig 6.5 Modul de utilizare a întreruperilor vectorizate

1. Vectorul de întrerupere are 4 octeţi


2. tip are 8 biţi
3. Tabela cu vectori de întrerupere 1kB
4. Localizarea tabelei este prestabilită

Întreruperi generate automat la detectarea unor evenimente interne:


a) Întreruperi de tip INT
INT [tip] ; (SP)  (SP) - 2
((SS)  0H + (SP) +1)  ((SS)  0H + (SP))  (F)
(IF)  0
(TF)  0
(SP)  (SP) - 2
((SS)  0H + (SP) +1)  ((SS)  0H + (SP))  (CS)
if tip then
(CS)  (4  tip + 3)  (4  tip + 2)
else
(CS)  (0000FH)  (0000EH)
(SP)  (SP) - 2
((SS)  0H + (SP) +1)  ((SS)  0H + (SP))  (IP)
if tip then
(IP)  (4  tip + 1)  (4  tip)
else
(IP)  (0000DH)  (0000CH)
b) împărţire prin zero
INTO ; if (OF) = 1 then
(SP)  (SP) - 2
((SS)  0H + (SP) +1)  ((SS)  0H + (SP))  (F)
(IF)  0
(TF)  0
(SP)  (SP) - 2
((SS)  0H + (SP) +1)  ((SS)  0H + (SP))  (CS)
(CS)  (00013H)  (00012H)
61
Arhitectura microprocesoarelor – principii şi aplicaţii

(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.

Tabel I.6. Tabelul vectorilor de întrerupere


___________________________________________________________________
Tipul Adresa vectorului Funcţia implicită
întreruperii de întrerupere
____________________________________________________________________
0 00H ÷ 03H Cerere de întrerupere generată
de “împărţire la 0”
1 04H ÷ 07H Cerere de întrerupere pentru
funcţionare pas cu pas
2 08H ÷ 0BH Asociat obligatoriu întreruperii
hard nemascabile
3 0CH ÷ 0FH Asociat instrucţiunii INT cu
format minim (un octet)
4 10H ÷ 13H Asociat instrucţiunii INTO
____________________________________________________________________

Subiecte pentru verificarea cunoştinţelor

1. Să se prezinte descrierea formală a semanticii următoarei instrucţiuni a microprocesoarelor


compatibile x86, funcţionând în modul real:
INT 10

2. Un microprocesor de uz general foloseşte întreruperi vectorizate. Presupunem că:


- adresarea memoriei este liniară şi memoria total adresabilă are 1 MB;
- memoria este organizată pe octeţi;
- codul primit de la port (tip) are 12 biţi.
Care este dimensiunea tabelei cu vectori de întrerupere?

3. Un microprocesor de uz general foloseşte întreruperi vectorizate. Presupunem că:


- adresarea memoriei este segmentată şi memoria total adresabilă are 4 GB;
- adresa segment are 2 octeţi şi adresa efectivă are 4 octeţi;
- memoria este organizată pe octeţi;
- codul primit de la port (tip) are 8 biţi.
Care este dimensiunea tabelei cu vectori de întrerupere?

4. Să se prezinte descrierea formală a semanticii următoarei instrucţiuni a microprocesoarelor


compatibile x86, funcţionând în modul real:
INT 16
62
Arhitectura microprocesoarelor – principii şi aplicaţii

5. Să se prezinte descrierea formală a semanticii următoarelor instrucţiuni ale


microprocesoarelor compatibile x86:
POP [BX]
JMP [DI]

7. DIMENSIUNEA TEMPORALĂ A ARHITECTURII


MICROPROCESORULUI UG
7.1. Desfăşurarea în timp a instrucţiunilor pentru un microprocesor CISC

Fiecare instrucţiune are:


mai multe cicluri maşină (M1, M2, M3,....)
Fiecare ciclu maşină are:
mai multe stări (T1, T2, T3, ...)
Câteva tipuri de cicluri maşină
 „fetch” (M1)
 prelucrare date
 citeşte din memorie
 scrie în memorie
 citeşte din stivă
63
Arhitectura microprocesoarelor – principii şi aplicaţii

 scrie în stivă
 citeşte din porturi
 scrie în porturi

Exemplu
Magistala de date internă şi externă pe 8 biţi

Organizare liniară a memoriei


Adrese fizice pe 16 biţi
Memoria oragnizată pe octeţ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

Registru de instrucţiuni RI pe 8 biţi


şi
Registru de date RD
Registru de adrese RA
Registre temporare ATEMP, TEMP, AUX1, AUX2 (Fig.7.2)

Fig 7.1 Modul de concatenare şi multiplexare a registrelor


64
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig 7.2 Unitatea logico-aritmetică. Modificarea registrului de fanioane în timpul realizării operaţiilor

Transferul informaţiei din registrul R1 în registru R2


· (R1)  (R3)
M1: T1: (RA)  (PC)
(RD)  "Stare µP"
MREAD
T2: (PC)  (PC) + 1 , (RD)  ((RA))
T3: (RI)  (RD)
T4: decodificarea octetului de cod din (RI)
(TEMP)  (R3)
T5: (R1)  (TEMP).

Adunarea valorii aflată în registrul R1 cu valoarea din registrul acumulator şi salvarea


rezultatului în acumulator
· (A)  (A) + (R1)
M1: T1: (RA)  (PC)
(RD)  "Stare µP"
MREAD
T2: (PC)  (PC) + 1 , (RD)  ((RA))
T3: (RI)  (RD)
T4: decodificarea octetului de cod din (RI)
(TEMP)  (R1) , (ATEMP)  (A)
M2: T1: nefolosită!
T2: (A)  (ATEMP) + (TEMP)
65
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig 7.3 Exemplificarea modului de lucru în pipeline pentru instrucţiunile prezentate mai sus

Stările de execuţie şi realizare a instrucţiunilor şi ciclii maşină corespunzători în modul pipeline


Exemple

 (A)  (A) + ((R5,R6))


M1: T1: (RA)  (PC)
(RD)  "Stare µP"
MREAD
T2: (PC)  (PC) + 1, (RD)  ((RA))
T3: (RI)  (RD)
T4: decodificarea octetului de cod din (RI)
(ATEMP)  (A)
M2: T1: (RA)  (R5,R6)
MREAD
T2: (RD)  ((RA))
T3: (TEMP)  (RD)
M3: T1: nefolosită
T2: (A)  (ATEMP) + (TEMP)

 (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

T3: (AUX1)  (RD)


M4: T1: (RA)  (AUX1,AUX2)
MREAD
T2: (RD)  ((RA))
T3: (A)  (RD)

 (PC)  adr
M1: T1: (RA)  (PC) ...., T2: ....,T3: ....,T4: ....

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))
T3: (AUX1)  (RD)
M4: T1: (RA)  (AUX1,AUX2)
MREAD
T2: (PC)  (AUX1,AUX2)
T3: (PC)  (PC) + 1

7.2. Creşterea vitezei de execuţie pentru microprocesoarele CISC evoluate


67
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig 7.4 Schema simplificată de prelucrare şi transmitere a instrucţiunilor

Fig 7.5 Diagrama etapelor de procesare şi transmitere a instrucţinilor


68
Arhitectura microprocesoarelor – principii şi aplicaţii

7.3. Conceptele desfăşurării în timp a instrucţiunilor pentru


microprocesoarele RISC

Desfăşurarea în timp a instrucţiunilor pentru microprocesoarele RISC

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

Întârzieri pentru a preveni blocarea unităţii de control din cauza salturilor

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.7 Instrucţiunea JMP în pipeline. Imposibil de realizat

Fig 7.8 Etapele de procesare a instrucţiunii JMP

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.10 Etapele de procesare a instrucţiunii JMP în pipeline

Optimizarea prevenirii blocarii unităţii de control din cauza salturilor

ADD r3, r2, r1


AND r0, r5, r6
JMPZ r0, eticheta
NOP
....
eticheta: SUB r1, r5, r6
AND r0, r5, r6
JMPZ r0, eticheta
ADD r3, r2, r1
....
eticheta: SUB r1, r5, r6

Întârzieri din cauza accesului în memorie

LOAD r1, mem


ADD r3, r2, r1
LOAD r1, mem
NOP
NOP
...
NOP
ADD r3, r2, r1

Întârzieri din cauza dependenţei datelor de utilizare a registrelor


Această problemă intervine dacă instrucţiunea n+1 (sau n+2) cere rezultatul instrucţinii n din
etapa de pipeline precedentă. Următorul exemplu arată aceasta :

ADD r1, r2, r7


AND r6, r1, r3
71
Arhitectura microprocesoarelor – principii şi aplicaţii

Valorile registrelor r2 şi r7 sunt adunate şi rezultatul este memorat în r1. În următoarea


instrucţiune se combină (AND) valorile din r1 şi r3, dar pentru aceasta trebuie ca rezultatul
primei intrucţiuni să fie deja în r1. Dacă se lucrează în pipeline vor fi erori de procesare a
instrucţinilor deoarece ADD nu se execută într-un ciclu maşină.

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.

ADD r1, r2, r7


NOP
NOP
AND r6, r1, r3
72
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig 7.12 Introducerea de NOP-uri după ADD

Subiecte pentru verificarea cunoştinţelor

1. În condiţiile specificate în subcapitolul 7.1, să se propună desfăşurarea în timp a următoarei


instrucţiuni pentru un microprocesor CISC:

(R1,R2)←(adr+1)adr)

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru


oricare instrucţiune codul ocupă un octet.

2. În condiţiile specificate în subcapitolul 7.1, să se propună desfăşurarea în timp a următoarei


instrucţiuni pentru un microprocesor CISC:

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru


oricare instrucţiune codul ocupă un octet.

3. În condiţiile specificate în subcapitolul 7.1, să se propună desfăşurarea în timp a următoarei


instrucţiuni pentru un microprocesor CISC:

(R3, R4)←((PC)+2)↑(( PC)+2)

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru


oricare instrucţiune codul ocupă un octet.
73
Arhitectura microprocesoarelor – principii şi aplicaţii

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:

AND r7, r8, r9;


SUB r1, r2, r7;
JMPZ r1, et; if then

et: ADD r7, r8, r9;

6. În condiţiile specificate în subcapitolul 7.1, să se propună desfăşurarea în timp a următoarei


instrucţiuni pentru un microprocesor CISC:

(R3, R4)←((PC)+2)↑(( PC)+2)

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru


oricare instrucţiune codul ocupă un octet.

7. În condiţiile specificate în subcapitolul 7.1, să se propună desfăşurarea în timp a următoarei


instrucţiuni pentru un microprocesor CISC:

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru


oricare instrucţiune codul ocupă un octet.

8. 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:

LOAD r2, mem;


LOAD r3, mem;
ADD r4, r2, r3;

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

SUB r1, r2, r3;


JMP et;

et: ADD r4, r5, r6;
ADD r7, r8, r4;

10.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;


AND r7, r8, r9;
SUB r1, r4, r7;
JMPZ r1, et; if then

et: ADD r7, r8, r9;

11.În condiţiile specificate în subcapitolul 7.1, să se propună desfăşurarea în timp a următoarei


instrucţiuni pentru un microprocesor CISC:

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru


oricare instrucţiune codul ocupă un octet.

8. O PRIVIRE DE ANSAMBLU
ASUPRA UNEI ARHITECTURI CONCRETE:
INTEL x86 ÎN MODUL REAL

8.1. Structura bloc funcţională


75
Arhitectura microprocesoarelor – principii şi aplicaţii

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).

Fig.8.1 Schema simplificată de prelucrare şi transmitere a instrucţiunilor

- mai multe procesoare care lucreaza în paralel, cu funcţii distincte;


- coada de instrucţiuni

8.2. Utilizarea registrelor

Fig.8.2 Registrele generale, registrele de adresare şi registrele speciale

- AX – pentru operaţii de înmulţire şi împărţire, şi operaţii pe şiruri


- BX – pentru adresare bazată
- CX – pentru contorizare cicluri
- DX – pentru adresare porturi de intrare/ieşire
- SP – pentru adresarea stivei
- BP – pentru adresare bazată
- DI, SI – pentru adresare indexată şi pe şiruri (Di - poantor şir destinaţie; SI poantor şir
sursă)
76
Arhitectura microprocesoarelor – principii şi aplicaţii

- CS – adresare instrucţiuni
- DS – adresare date
- SS – adresare stivă
- ES – adresare date pentru instrucţiuni pe şiruri

- RI – registru de păstrare a instrucţiunii curente


- IP – registru de păstrare a adresei instrucţiunii curente

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

– versatilitatea funcţiilor registrelor: „registre multifuncţionale”:


– registre dedicate registre multifuncţionale – funcţii implicite
– funcţii alternative

8.3. Organizarea memoriei

- Adresa logică (AL), atribut de arhitectură, compusă din:


- adresa segment: AS adr16;
- adresa efectivă: AE adr16.
- Adresa fizică, pe 20 de biţi, care dă localizarea informaţiei în harta memoriei:
AF = AS 0H + AE.
Harta memoriei cuprinde adresele fizice între 0H şi FFFFFH.

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

stocare variabile (cu anumite dată de modul de


DS CS, SS, ES
excepţii) adresare
formarea unui „şir sursă” DS CS, SS, ES SI
formarea unui „şir destinaţie” ES nu există DI
adresare în stivă folosind BP ca dată de modul de
SS CS, DS, ES
bază adresare
dată de modul de
adresare relativă la baza BX DS CS, SS, ES
adresare

Fig.8.3 Organizarea memoriei

8.4. Strategii de intrare/ieşire


78
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig.8.4 Schema simplificată a tabelei vectorilor de întrerupere

1. Vectorul de întrerupere are 4 octeţi


2. tip are 8 biţi
3. Tabela cu vectori de întrerupere 1kB
4. Localizarea tabelei este prestabilită

INT [tip] ; (SP) (SP) – 2

((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (F)


(IF) 0
(TF) 0
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (CS)
if tip then
(CS) (4 tip + 3) (4 tip + 2)
else
(CS) (0000FH) (0000EH)
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (IP)
if tip then
(IP) (4 tip + 1) (4 tip)
else
(IP) (0000DH) (0000CH)

Tabel 8.2 Tabelul vectorilor de întrerupere


___________________________________________________________
Tipul Adresa vectorului Funcţia implicită
întreruperii de întrerupere
____________________________________________________________________
0 00H ÷ 03H Cerere de întrerupere generată
de “împărţire la 0”
1 04H ÷ 07H Cerere de întrerupere pentru
funcţionare pas cu pas
79
Arhitectura microprocesoarelor – principii şi aplicaţii

2 08H ÷ 0BH Asociat obligatoriu întreruperii


hard nemascabile
3 0CH ÷ 0FH Asociat instrucţiunii INT cu
format minim (un octet)
4 10H ÷ 13H Asociat instrucţiunii INTO
____________________________________________________________________

Fig.8.5 Organizarea memoriei, zonele de memorie rezervate porturilor

a. Moduri de adresare
80
Arhitectura microprocesoarelor – principii şi aplicaţii

Fig.8.6 Schema simplificată a modurilor de adresare ale microprocesoarelor Intel x86

b. Performanţele Intel x86 în modul real

 Suprapunerea completă a ciclurilor maşină de „fetch” cu cele de execuţie (bazată pe o


structură internă tip "pipe-line"), ceea ce duce la ocuparea completă a magistralei.
 Folosirea cozii de instrucţiuni.
 Multifuncţionalitatea registrelor.
 Segmentarea logică a memoriei, care încurajează modularizarea programelor,
multiprocesarea şi interschimbarea locului proceselor.
 Folosirea prefixării instrucţiunilor pentru redirecţionarea segmentelor, repetarea unor
primitive etc.
 Utilizarea a mai multe mnemonice echivalente semantic pentru aceeaşi instrucţiune.
 Tehnica întreruperilor vectorizate de tip hardware şi software.
 Suport pentru aplicaţii multiprocesor.

Exemple de instrucţiuni: Intel x86


81
Arhitectura microprocesoarelor – principii şi aplicaţii
82
Arhitectura microprocesoarelor – principii şi aplicaţii

(SP)¬(SP)+2
83
Arhitectura microprocesoarelor – principii şi aplicaţii
84
Arhitectura microprocesoarelor – principii şi aplicaţii

Subiecte pentru verificarea cunoştinţelor

1. Ce restricţii există în poziţionarea absolută şi în poziţionarea relativă a segmentelor create în


memoria unui microcalculator realizat cu microprocesoarele Intel x86 funcţionând în modul
real?

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.

3. Să se prezinte descrierea formală a semanticii următoarelor instrucţiuni ale


microprocesoarelor compatibile x86:
85
Arhitectura microprocesoarelor – principii şi aplicaţii

MOV [BX+DI+10H], 10H


PUSH DI

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 ?

5. Descrieţi mecanismele folosite de microprocesoarele Intel x86 funcţionând în modul real


pentru a schimba utilizarea implicită a segmentelor din memorie.

6. Se dă secvenţa de program scris pentru un procesor compatibil Intel x86:

mov CX, 40h


sub CX, 35h

Indicaţi varianta corectă:


a) ZF = 0, PF = 1 si CX = 5h;
b) ZF = 1, PF = 0 si CX = Bh;
c) ZF = 1, PF = 1 si CX = 5h;
d) ZF = 0, PF = 0 si CX = Bh.
7. 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 ?

8. Se dă secvenţa de program scris pentru un procesor compatibil Intel x86:

mov AX, 11001010b


xchg AX, [0155h]

La adresa 0155H se găseşte valoarea:


a) CAh;
b) Bah;
c) AAh;
d) 155h.

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.

11. Să se prezinte descrierea formală a mecanismului de calcul al adresei unui vector de


întrerupere pentru microprocesoarele compatibile x86, funcţionând în modul real.
86
Arhitectura microprocesoarelor – principii şi aplicaţii

Bibliografie

1.2.1 C. Burileanu, „Arhitectura microprocesoarelor”, ed. Denix, Bucureşti, 1994

C. Burileanu ş.a., „Arhitectura microprocesoarelor – Îndrumar de laborator”, litografia UPB,


ediţia a II-a, 1998

C. Burileanu ş.a., „Microprocesoarele x86 – o abordare software”, editura Grupul pentru


microinformatică, Cluj-Napoca, 1999
87
Arhitectura microprocesoarelor – principii şi aplicaţii

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