mc cap 6
TRANSCRIPT
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
1
6. PROCESOARE EVOLUATE: COMBINA ŢIE CISC-RISC
6.1. Pentium – caracteristici generale
Execuţia superscalară a instrucţiunilor:
- 3 unităţi aritmetice de prelucrare – 2 pentru întregi („U” şi „V”), una pentru virgul ă mobilă –
funcţionând pe principiul pipe-line
- o parte dintre instrucţiuni – operaţii în numere întregi – pot fi executate „în perechi”
- execuţia pipe-line pentru U şi V se face în 5 stări
- o parte dintre instrucţiuni se execută fără microcod – logică de tip cablat
Memorii cache pe cip („nivel 1”):
- memorii cache separate, de câte 8kB, pentru date şi instrucţiuni
- magistrală de date pe 64b
- memoriile cache sunt asociative cu 2 căi, fiecare cu magistrală de 128b
- fiecare memorie cache are TLB
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
2
Logică pentru predicţia salturilor:
- se evită golirea sistematică a cozii de instrucţiuni
- se realizează o predicţie „dinamică”
- se compune dintr-un automat finit cu 4 stări şi o memorie cache – BTB („branch target buffer”)
Alte caracteristici Pentium:
•compatibilitate completă cu predecesorii x86 şi x87 – o unitate de control dedicată, de tip microprogramat
•procesor pe 32b cu magistrală externă de date pe 64b
•transfer intern al datelor pe 128 şi 256b
•instrucţiuni executabile într-o singură stare
•gestionarea memoriei şi paginare
•funcţii suplimentare pentru depanarea erorilor, pe cip
•posibilitate de monitorizare externă a execuţiei instrucţiunilor
•3 moduri de operare: real, protejat şi virtual 8086
•gestionarea funcţionării sistemului pentru economie de putere
•monitorizarea performanţelor programelor pentru optimizarea secvenţelor de instrucţiuni
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
3
6.2. Schema bloc funcţională a procesoarelor Pentium
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
4
Magistrala de 64b deserveşte memoria cache de date şi nu direct procesorul
Transferul de date intern se face pe 128 sau 256b
Memorii cache separate pentru date şi instrucţiuni, fiecare cu TLB asociat
Mecanismul paginării permite pagini de 4kB dar şi de 4MB
Unitatea de control coordonează activitatea de tip pipe-line pentru cele 3 UAP:•5 stări pentru U şi V•8 stări pentru UAPFP
Instruc ţiunile folosesc implicit U; anumite instrucţiuni se pot executa „în pereche” – în U şi V simultan
UAPFP este optimizată – cele mai multe operaţii sunt realizate cablat, iar pentru altele, algoritmii sunt optimizaţi; de 10 ori mai rapidă decât la 486 pentru tact similar
Buffer pre-fetch are 2 cozi de instrucţiuni de câte 32B
BTB („branch target buffer”) – pentru predic ţia salturilor; con ţine:•adrese de salt•statistica privind adresele curente de salt
Memoria de microcod – pentru emularea funcţionării x86
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
5
6.3. Registrele procesoarelor Pentium
Registrele microprocesoarelor Intel 386, 486 şi Pentium funcţionând în modul real
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
6
Registrele microprocesoarelor Intel funcţionând în modul virtual (protejat)
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
7
6.4. Schema bloc funcţională a unităţilor de prelucrare
Funcţionarea pipe-line a UAP – Pentium
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
8
1. PF:• se aduc 2 instrucţiuni din memoria cache (cache hit) sau din memoria externă (cache miss)• funcţionează împreună cu BTB
2. D1:• se decodifică, în paralel, codurile a două instrucţiuni• se decid instrucţiunile „perechi”• se decodifică prefixele
3. D2:• se determină adresele operanzilor• pentru modurile de adresare care la 486 necesitau 2 stări în determinarea adresei, aici
e suficientă o stare (adresare imediată, cu deplasament, bază şi index)
4. E:• aducerea operanzilor din memoria cache• prelucrarea în U şi V; excepţii – 2 stări• verifică predicţia salturilor: în U (toate), în V(cu excepţii)
5. W:• înscrie rezultatul într-un registru sau în memoria cache• modifică fanioanele• verifică predicţia salturilor: salturi condi ţionate în V
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
9
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
10
Reguli de „împerechere” a instrucţiunilor:
1. ambele instrucţiuni să fie „simple”:
MOV r, r|mem|dataMOV mem, r|dataALU r, r|mem|data - deplasările şi rotaţiile numai în UALU mem, r|dataINC r|memDEC r|memPUSH r|memPOP r|memLEA r|memJMP|Jcc|CALL - numai în VNOP
2. să nu existe dependenţe de registre între cele 2 instrucţiuni (d pentru U nu poate fi s sau d pentru V)
3. cele 2 instrucţiuni nu pot avea simultan adresare cu deplasament sau adresare imediată
4. instrucţiunile „complexe” se execută numai în U
5. instrucţiunile cu prefix se execută numai în U
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
11
Întârzieri în execuţia pipe-line pot apare din cauza:
•“cache miss” pentru date şi/sau instrucţiuni
•predicţie incorectă a salturilor
•apariţia unor instrucţiuni „complexe” (microprogramate) sau cu prefix
Optimizări de program ţinând seama de execuţia superscalară:
Exemplu:
MOVSDpoate fi emulat cu:
MOV EAX, [ESI]ADD ESI, 04HMOV [EDI], EAXADD EDI, 04H
•operanzii pot fi în memoria cache•instrucţiunile pot fi „împerecheate”•transferul de date se poate face pe 64b
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
12
6.5. Predicţia dinamică a salturilor
Se foloseşte o memorie cache asociativă cu 4 căi, cu 256 de elemente, numită BTB („Branch Target Buffer”)
Fiecare element conţine:•adresa de salt•adresa de la care se face saltul•o “istorie” pe 2 biţi
“Istoria” este un automat finit cu 4 stări:•“ST” – puternic în favoarea saltului•“WT” – moderat în favoarea saltului•“WNT” – moderat împotriva saltului•“SNT” – puternic împotriva saltului
“T” – salt efectuat“N” – salt ne-efectuat
- Când cei 2 biţi corespund primelor două stări, se face predicţia că saltul trebuie executat; pentru celelalte două stări predic ţia este că saltul nu are loc; stările intermediare previn modificarea de comportament cauzatăde o situaţie ocazională în care predicţia nu e corectă
- BTB este actualizat la orice predicţie incorectă, când procesorul actualizează şi coada de instrucţiuni
- Starea iniţială pentru un nou element în BTB este “ST”
Microcontrolere - Capitolul 6 Corneliu BURILEANU ©
13
Exemplu: iniţializarea unui şir cu 100 de cuvinte duble FFFFFFFFH
MOV EDX, FFFFFFFFHLEA EAX, sirMOV ECX, EAX+396
ciclu: MOV [EAX], EDXADD EAX, 04HCMP EAX, ECXJBE ciclu
Pentru corpul ciclului: •386 – 13 stări,•486 – 6 stări,•Pentium – 2 stări (cele 4 instrucţiuni pot fi „împerecheate”)
O falsă predicţie impune o întârziere de 4 stări (JBE se execută în V)