Sunteți pe pagina 1din 15

31

Arhitectura microprocesoarelor

OBIECTIVELE unitii de nvare nr. 4


Principalele obiective ale Unitii de nvare nr. 4 sunt: Familiarizarea cu transferurile de date la arhitecturi CISC Tehnici de adresare Tipuri de instruciuni la CISC

4. PRINCIPIILE DE BAZ ALE UNEI ARHITECTURI TIPICE CISC


4.1. Transferurile de date
Transferuri de date: deplasri 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 complexitii transferurilor de date, se poate face urmtoarea clasificare a microprocesoarelor de uz general: Procesoare din categoria A:

(ri ) (A ) (mem) (A ) (port ) (A )


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

(ri ) (rj ) (mem ) (ri ) (port ) (ri )

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

(mem i ) (mem j )

Procesoare din categoria D: au toate caracteristicile celor din categoria precedent i, n plus: for i = 1 to n do begin (mem i ) mem

j j+1
end

32
Arhitectura microprocesoarelor

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 execuie a unui program se face referire la diversele celule de memorie RAM, ROM sau la registrele microprocesorului. Aceste referiri la locaii de memorie implic operaia de adresare. Modul de adresare este indicat prin codul operaiei ce se execut i implic obinerea adresei cu care se va opera n instruciunea repectiv. n funcie de tipul microprocesorului, se implementeaz prin setul de instruciuni unul dintre modurile de adresare. Performanele microprocesorului sunt date i de paleta de moduri de adresare ale acestuia. Cu ct un microprocesor are mai multe posibiliti de adresare cu att posibilitile 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 cmpurile codului instruciunii. Mod de adresare ce se refer la date

cod semantic

cod reg. destinaie

cod reg. surs

2. Adresare imediat: se specific, imediat dup codul instruciunii, informaia vizat. 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. Informaia este stocat pe 1 sau 2 octei

3. Adresare absolut (extins, direct): instruciunea conine adresa la care se gsete operandul necesar pentru implementarea instruciunii respective.

33
Arhitectura microprocesoarelor

unde

data = (adrh adrl) adrl = ((PC) + 1) i adrh = ((PC) +2)

Mod de adresare utilizat pentru orice tip de informaie

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

Avantajul adresrii absolute fa de adresarea imediat rezult din modul de obinere a datei utilizate la execuia instruciunii. La adresarea imediat, structura fix a instruciunii implic utilizarea unei valori constante a operandului iar la adresarea absolut, dac se modific coninutul celulei de memorie a crei adres este coninut n instruciune, instruciunea va utiliza la execuie data de la adresa respectiv, care poate diferi pe parcursul execuiei programului.

4. Adresare scurt: n formatul instruciunii se gsete o parte din adresa complet a informaiei uzuale, cealalt parte este implicit.
data = (adrh adrl) adrl = ((PC) + 1) i adrh = 00H

Mod de adresare utilizat pentru utilizat pentru date i instruciuni

34
Arhitectura microprocesoarelor

Fig4.3

Exemplu de adresare scurt,organizarea memoriei este liniar. Este utilizat o jumtate de adres a informaiei, cealalt este 0

5. Adresare relativ: n formatul instruciunii curente se gsete adresa relativ a informaiei utilizate.
data = ((PC) disp8 | disp16)
Mod de adresare program. utilizat la implementarea instruciunilor de salt relativ n

Fig4.4 Exemplu de adresare relativ, memoria este organizat liniar, deplasamentul este de 128 octei fa de poziia instruciunii curente

6.Adresare indirect 6.a. Adresare indirect prin registru: mod scurt de adresare, n codul instruciunii curente se indic un registru ce conine adresa complet a informaiei vizate.
data = ((ri) (rj)) | ((r16))

35
Arhitectura microprocesoarelor

Se specific n instruciune registrul n care se gsete adresa Mod de adresare care se refer la date i instruciuni

Fig4.5 Exemplu de mod de adresare indirect prin registru

6.b. Adresare indirect cu memoria: instruciunea conine n cuvntul de instruciune, ca operand, o adresa la care se va gasi, n memorie, adresa efectiv unde este localizat data cu care va opera instruciunea la execuia sa.
data = (adr2) = ((adr1))

adrese indirecte=pointeri
Mod de adresare care se refer la date i instruciuni

Fig4.6 Exemplu de mod de adresare indirect cu memoria

7. Adresare indexat 7.a. Adresare cu pre-indexare:

36
Arhitectura microprocesoarelor

n formatul instruciunii curente se afl poziia relativ (deplasamentul) unei date dintr-un ir sau tablou. Mrimea deplasamentului, care este pozitiv, indic marimea tabloului.

data = ((IX) +disp8) = ('BAZA' +disp8) sau data = ((IX) +disp16) = ('BAZA' +disp16)
Mod de adresare utilizat pentru date

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

7.b. Adresare cu post-indexare: n formatul instruciunii curente se gsete 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

37
Arhitectura microprocesoarelor

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:

38
Arhitectura microprocesoarelor

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: combinaie 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: combinaie 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: combinaie dintre dou adresri 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 bii:


AF = AL | AH | BL | BH | CL | CH | DL | DH

39
Arhitectura microprocesoarelor

pe 16 bii: pe 32 bii:

AF = AX | BX | CX | DX | SP | BP | SI | DI AF = EAX | EBX | ECX | EDX | ESP | EBP | ESI | EDI

O instruciune este compus din (la microprocesoarelor Intel) : - o zon de un octet care conine codul operaiei care trebuie efectuat; - o zon de un octet care conine informaii privind modul de adresare (MOD r/m); - o zon de cel mult patru octei care conine datele implicate n instruciune sau adresa acestor date (OFFSET). "Octet pentru modul de adresare" (face parte din formatul instruciunii, poziia sa fiind imediat dup codul propriu-zis). Notm cu b7b6b5b4b3b2b1b0: b7b6: "mod" b5b4b3: "reg" b2b1b0: "r/m" "w" un bit din codul propriu-zis al instruciunii
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).

40
Arhitectura microprocesoarelor

4. Adresare absolut lung:

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:

41
Arhitectura microprocesoarelor

sau

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

4.4. Tipuri de instruciuni


4.4.1. Instruciuni de transfer date
(d)(s)

PUSH

R1R2; (SP) (SP) - 1 ((SP)) (R2) (SP) (SP) - 1 ((SP)) (R1) . R1R2; (R1) ((SP)) (SP) (SP) + 1 (R2) ((SP)) (SP) (SP) + 1

POP

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

Until

4.4.2. Instruciuni de prelucrri de date


operaii monadice: - cu acumulator: - fr acumulator: - cu acumulator: - fr acumulator:

(d) (d) ; (d) (s) ; (d) (d) (s) ; (d) (s1) (s2)

operaii diadice:

(R1,R2) (R1,R2) + (R3,R4) [ + (C)] (A) - (s)


if (A) = (s) then (Z) 1 if (A) > (s) then (C) 0 else (C) 1

42
Arhitectura microprocesoarelor

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 stnga i rotire la dreapta prin bitul de transport

4.4.3. Instruciuni de control al programului


Teste:

A - testeaz un fanion B - testeaz o combinaie 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: - necondiionate - condiionate - dup modul de adresare - dup cum memoreaz sau nu valoarea curent a numrtorului de program: - salturi propriu-zise

43
Arhitectura microprocesoarelor

- apelurile de subprograme - dup complexitatea salturilor: A salturi cu dou posibiliti B salturi cu trei posibiliti C cicluri

Moduri de adresare pentru salturile propriu-zise


adresarea absolut: (PC) adr, n care adr face parte din formatul instruciunii; adresarea relativ: (PC) (PC) + disp8 | disp16 , n care disp8 sau disp16 fac parte din formatul instruciunii; 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 , (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, (PC)l ((SP)) (PC)h ((SP) + 1) (SP) (SP) + 2 .

sau, mai concis:

sau, mai concis:

Clasificare dup complexitatea salturilor



if condiie = true then (PC) adr if (ri) | (memi) > (rj) | (memj) then

44
Arhitectura microprocesoarelor

(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. Instruciuni de intrare/ieire IN d, port; (d) (port) OUT port, s ; (port) (s) - d sau s - acumulatorul implicit sau dedicat - harta porturilor este mult mai mic dect harta memoriei - moduri de adresare foarte restrictive pentru porturi: - directa - indirecta prin registru Acces rapid la porturi 4.4.5. Instruciuni de control al microcalculatorului
Instruciuni care sincronizeaz microcalculatorul cu anumite stri speciale ale microprocesorului: - stare de ateptare; - funcionare pas cu pas; - acces direct la memorie; - partajarea resurselor sistemului cu alte procesoare. Accesul la anumite fanioane (setare, resetare), n special fanioanele care semnaleaz aciuni specifice (ca de pild validarea cererilor de ntrerupere).

Subiecte pentru verificarea cunotinelor


1. Pentru un procesor compatibil Intel x86, instruciunea CBW folosete implicit registrele: a) CX i AX; b) DX i AX; c) DS i DX; d) AL i AH. 2. Ci octei are adresa folosit explicit n formatul instruciunii de ctre apelurile de subprograme cu adresare direct inter-segment, pentru microprocesoarele Intel x86 funcionnd n modul real? Ce reprezint aceast adres? 3. Ce restricii exist n poziionarea absolut i n poziionarea relativ a segmentelor create n memoria unui microcalculator realizat cu microprocesoarele Intel x86 funcionnd n modul real?

45
Arhitectura microprocesoarelor

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 instruciuni tipice. 5. S se prezinte descrierea formal a mecanismului de calcul al adresei unui vector de ntrerupere pentru microprocesoarele compatibile x86, funcionnd n modul real. 6. Fie un microprocesor de uz general care poate utiliza adresarea indexat. Memoria este organizat liniar i este formatat pe octei. Numrtorul de program este notat PC. Presupunem o operaie de transfer n memorie cu adresare indexat pentru surs folosind un registru index notat IX; destinaia este acumulatorul microprocesorului notat cu A. tiind c deplasamentul se gsete n memoria de program imediat dup codul instruciunii curente, descrierea formal a semanticii instruciunii este: (A ) ((IX ) + ((PC) + 1)) Cte elemente are n acest caz irul (tabloul) din memorie construit prin tehnica adresrii indexate? 7. Exemple de adresri compuse pentru microprocesoare CISC i RISC 8. Descriei aciunile unui procesor CISC care folosete stiva primar. Vei folosi descrierea formal a semanticii presupunnd un microprocesor de uz general care organizeaz liniar memoria formatat pe octei, cu adrese fizice de 16 bii.

OBIECTIVELE unitii de nvare nr. 5 Principalele obiective ale Unitii de nvare nr. 5 sunt:

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