33
Arhitectura microprocesoarelor 58 9. Comparaţie privind transferul de parametri între programul apelant şi cel apelat în cazul microprocesoarelor CISC şi RISC. OBIECTIVELE unităţii de învăţare nr. 6 Principalele obiective ale Unităţii de învăţare nr. 6 sunt: Familiarizarea cu dispozitivele de intrare-ieşire Tipuri de întreruperi (caracteristicile microprocesoarelor de uz general) 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. 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 b) Ca locaţii de memorie - cicluri maşină de acces în memorie

sisteme cu microprocesoare Unitatea de Invatare 6

Embed Size (px)

DESCRIPTION

microprocesoare

Citation preview

Page 1: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

58

9. Comparaţie privind transferul de parametri între programul apelant şi cel apelat în cazul microprocesoarelor CISC şi RISC.

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

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

• Familiarizarea cu dispozitivele de intrare-ieşire • Tipuri de întreruperi (caracteristicile

microprocesoarelor de uz general)

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.

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

b) Ca locaţii de memorie

- cicluri maşină de acces în memorie

Page 2: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

59

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

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:

Page 3: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

60

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

Page 4: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

61

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

Page 5: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

62

• 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

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

Page 6: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

63

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

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

Page 7: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

64

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

Page 8: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

65

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 5. Să se prezinte descrierea formală a semanticii următoarelor instrucţiuni ale microprocesoarelor compatibile x86:

POP [BX] JMP [DI]

Page 9: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

66

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

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

• Familiarizarea cu dimensiunea temporală a diverselor tipuri de arhitecturi de microporcesoare

• Moduri de întârziere pentru a preveni blocarea

unităţii de control din cauza salturilor

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

Page 10: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

67

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

Page 11: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

68

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)

Page 12: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

69

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)

Page 13: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

70

MREAD T2: (PC) ← (PC) + 1, (RD) ← ((RA)) 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

Page 14: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

71

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

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

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

Page 15: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

72

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

Fig 7.7 Instrucţiunea JMP în pipeline. Imposibil de realizat

Page 16: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

73

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

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

Page 17: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

74

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

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

Page 18: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

75

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:

(((( )))) (((( )))) (((( ))))adrAA ++++←←←←

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.

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.

Page 19: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

76

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; (((( )))) (((( )))) (((( ))))9r&8r7r ←←←←

SUB r1, r2, r7; (((( )))) (((( )))) (((( ))))7r2r1r −−−−←←←←

JMPZ r1, et; if (((( )))) 01r ==== then ( ) adrPC ←

… et: ADD r7, r8, r9; ( ) ( ) ( )9r8r7r +←

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:

(((( )))) (((( )))) (((( ))))(((( ))))1PCAA ++++++++←←←←

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; (((( )))) (((( ))))mem2r ←←←←

LOAD r3, mem; (((( )))) (((( ))))mem3r ←←←←

ADD r4, r2, r3; (((( )))) (((( )))) (((( ))))3r2r4r ++++←←←←

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: SUB r1, r2, r3; (((( )))) (((( )))) (((( ))))3r2r1r −−−−←←←←

JMP et; (((( )))) adrPC ←←←←

Page 20: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

77

… et: ADD r4, r5, r6; (((( )))) (((( )))) (((( ))))6r5r4r ++++←←←←

ADD r7, r8, r4; (((( )))) (((( )))) (((( ))))4r8r7r ++++←←←← 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; (((( )))) (((( )))) (((( ))))6r5r4r ++++←←←←

AND r7, r8, r9; (((( )))) (((( )))) (((( ))))9r&8r7r ←←←←

SUB r1, r4, r7; (((( )))) (((( )))) (((( ))))7r4r1r −−−−←←←←

JMPZ r1, et; if ( ) 01r = then ( ) adrPC ←

… et: ADD r7, r8, r9; ( ) ( ) ( )9r8r7r +←

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:

(((( ))))(((( )))) (((( ))))5R2R,1R ←←←←

Să se specifice modurile de adresare folosite şi formatul instrucţiunii, presupunând că pentru oricare instrucţiune codul ocupă un octet.

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

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

• Familiarizarea microprocesorul Intel 8086 – privire de

ansamblu

8. O PRIVIRE DE ANSAMBLU ASUPRA UNEI ARHITECTURI CONCRETE:

INTEL x86 ÎN MODUL REAL

8.1. Structura bloc funcţională

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

Page 21: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

78

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ă) - CS – adresare instrucţiuni

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

Page 22: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

79

- 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 adresarea memoriei

Adresa segment implicită

Adresa segment alternativă

Adresa efectivă

„fetch” CS nu există IP operaţii în stivă SS nu există SP stocare variabile (cu anumite excepţii)

DS CS, SS, ES dată de modul de adresare

Page 23: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

80

formarea unui „şir sursă”

DS CS, SS, ES SI

formarea unui „şir destinaţie”

ES nu există DI

adresare în stivă folosind BP ca bază

SS CS, DS, ES dată de modul de adresare

adresare relativă la baza BX

DS CS, SS, ES dată de modul de adresare

Fig.8.3 Organizarea memoriei

8.4. Strategii de intrare/ieşire

Page 24: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

81

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

Page 25: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

82

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

Page 26: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

83

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

Page 27: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

84

Page 28: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

85

(SP)¬(SP)+2

Page 29: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

86

Page 30: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

87

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:

Page 31: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

88

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.

Page 32: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

89

Bibliografie

1.Burileanu, „Arhitectura microprocesoarelor”, ed. Denix, Bucureşti, 1994 2.Burileanu ş.a., „Arhitectura microprocesoarelor – Îndrumar de laborator”, litografia UPB, ediţia a II-a, 1998 3.Burileanu ş.a., „Microprocesoarele x86 – o abordare software”, editura Grupul pentru microinformatică, Cluj-Napoca, 1999 4. ***, „The art of assembly language programming” http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/Chapter_4/CH04-1.html

Page 33: sisteme cu microprocesoare Unitatea de Invatare 6

Arhitectura microprocesoarelor

90