sisteme cu microprocesoare unitatea de invatare 4

15
Arhitectura microprocesoarelor 31 OBIECTIVELE unităţii de învăţare nr. 4 Principalele obiective ale Unităţii de învăţare nr. 4 sunt: Familiarizarea cu transferurile de date la arhitecturi CISC Tehnici de adresare Tipuri de instrucţiuni la CISC 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: ( ) ( ) A r i ( ) ( ) A mem ( ) ( ) A port Procesoare din categoria B: au toate caracteristicile celor din categoria A şi în plus: ( ) ( ) j i r r ( ) ( ) i r mem ( ) ( ) i r port Procesoare din categoria C: au toate caracteristicile celor din categoria B şi în plus: ( ) ( ) j i mem mem Procesoare din categoria D: au toate caracteristicile celor din categoria precedentă şi, în plus: for 1 = i to n do begin ( ) ( ) j i mem mem 1 + j j end

Upload: samycatalin

Post on 09-Aug-2015

34 views

Category:

Documents


4 download

DESCRIPTION

microprocesoare

TRANSCRIPT

Page 1: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

31

OBIECTIVELE unităţii de învăţare nr. 4

Principalele obiective ale Unităţii de învăţare nr. 4 sunt:

• Familiarizarea cu transferurile de date la arhitecturi CISC

• Tehnici de adresare • Tipuri de instrucţiuni la CISC

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: ( ) ( )Ari ↔

( ) ( )Amem ↔

( ) ( )Aport ↔ • Procesoare din categoria B: au toate caracteristicile celor din categoria A şi în plus: ( ) ( )ji rr ↔

( ) ( )irmem ↔

( ) ( )irport ↔ • Procesoare din categoria C: au toate caracteristicile celor din categoria B şi în plus: ( ) ( )ji memmem ↔

• Procesoare din categoria D: au toate caracteristicile celor din categoria precedentă şi, în

plus:

for 1=i to n do begin

( ) ( )ji memmem ↔

1+← jj end

Page 2: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

32

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

cod reg. destinaţie

cod reg. sursă

2. Adresare imediată: se specifică, imediat după codul instrucţiunii, informaţia 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. 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.

Page 3: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

33

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.

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

Page 4: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

34

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.

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

Page 5: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

35

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

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:

Page 6: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

36

î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

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

Page 7: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

37

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

Page 8: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

38

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

Page 9: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

39

pe 16 biţi: AF = AX | BX | CX | DX | SP | BP | SI | DI 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).

Page 10: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

40

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:

Page 11: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

41

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

Page 12: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

42

• 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

Page 13: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

43

- apelurile de subprograme - 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 • if (ri) | (memi) > (rj) | (memj) then

Page 14: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

44

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

Page 15: sisteme cu microprocesoare Unitatea de Invatare 4

Arhitectura microprocesoarelor

45

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

(((( )))) (((( )))) (((( ))))(((( ))))(((( ))))1PCIXA ++++++++←←←← Câte elemente are în acest caz şirul (tabloul) din memorie construit prin tehnica adresării

indexate?

7. Exemple de adresări compuse pentru microprocesoare CISC şi RISC 8. 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.

OBIECTIVELE unităţii de învăţare nr. 5

Principalele obiective ale Unităţii de învăţare nr. 5 sunt: