Mc cap 6
- 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 ©
1
- 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 ©
2
- 3. 6.2. Schema bloc func ional a procesoarelor Pentium
ă
Microcontrolere - Capitolul 6
Corneliu BURILEANU ©
3
- 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 ©
4
- 5. 6.3. Registrele procesoarelor Pentium
Registrele microprocesoarelor Intel 386, 486 i Pentium func ionând în modul real
ş
Microcontrolere - Capitolul 6
Corneliu BURILEANU ©
5
- 7. 6.4. Schema bloc func ional a unit ilor de prelucrare
ă
ă
Func ionarea pipe-line a UAP – Pentium
Microcontrolere - Capitolul 6
Corneliu BURILEANU ©
7
- 8. PF:
•
•
ă
ă
2.
se aduc 2 instruc iuni din memoria cache (cache hit) sau din memoria extern (cache miss)
func ioneaz împreun cu BTB
ă
1.
D1:
•
•
•
•
•
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)
•
•
•
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)
ă
ă
ă
D2:
ă
ă
ă
E:
ă
ş
ă
W:
înscrie rezultatul într-un registru sau în memoria cache
modific fanioanele
verific predic ia salturilor: salturi condi ionate în V
ă
•
•
•
ă
5.
ă
4.
şă
3.
se decodific , în paralel, codurile a dou instruc iuni
se decid instruc iunile „perechi”
se decodific prefixele
Microcontrolere - Capitolul 6
Corneliu BURILEANU ©
8
- 10. Reguli de „împerechere” a instruc iunilor:
ambele instruc iuni s fie „simple”:
ă
r|mem|data
r|data
r|mem|data
r|data
- deplas rile i rota iile numai în U
- numai în V
s nu existe dependen e de registre între cele 2 instruc iuni (d pentru U nu poate fi s sau d pentru V)
ă
2.
r,
mem,
r,
mem,
r|mem
r|mem
r|mem
r|mem
r|mem
ă
MOV
MOV
ALU
ALU
INC
DEC
PUSH
POP
LEA
JMP|Jcc|CALL
NOP
ş
1.
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 ©
10
- 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:
MOVSD
poate fi emulat cu:
MOV
ADD
MOV
ADD
EAX,
[ESI]
ESI, 04H
[EDI], EAX
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 ©
11
- 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 ©
12
- 13. Exemplu: ini ializarea unui ir cu 100 de cuvinte duble FFFFFFFFH
ş
ciclu:
MOV
EDX,
FFFFFFFFH
LEA
EAX,
sir
MOV ECX, EAX+396
MOV
[EAX], EDX
ADD
EAX,
04H
CMP
EAX,
ECX
JBE
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)
ă
ă
Microcontrolere - Capitolul 6
Corneliu BURILEANU ©
13
ă