Post on 09-Aug-2015
description
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
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:
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:
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”)
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.
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
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
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]
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
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
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)
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)
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
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
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
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 ....
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
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.
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 ←←←←
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).
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
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
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
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
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
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
Arhitectura microprocesoarelor
84
Arhitectura microprocesoarelor
85
(SP)¬(SP)+2
Arhitectura microprocesoarelor
86
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:
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.
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
Arhitectura microprocesoarelor
90