Extras din referat
Microarhitectura internã la P6, rupînd traditia arhitecturilor Intel x86, desi prezintã pe alocuri asemãnãri cu cea a concurentei, realizeazã performante superioare acestora.
Unitatea centralã poate fi privitã ca fiind alcãtuitã din douã pãrti mari: partea de prelucrare în ordinea datã a instructiunilor si partea de executie într-o ordine diferitã a lor (in-order si respectiv out-of-order). Instructiunile sînt aduse în ordine în unitatea centralã, dar pot fi executate apoi într-o ordine diferitã. Rezultatele se depun în memoria tampon de reordonare (ROB - reorder buffer, cu 40 de intrãri), unde se reface ordinea corectã. (Un mod de lucru asemãnãtor se regãseste în microprocesorul K5, proiectat si produs de AMD). P6 nu face numai ceea ce trebuie; utilizînd o tehnicã numitã "executie speculativã" - executia anticipatã a unor instructiuni, care s-ar putea sã ajungã la rînd - viteza de procesare mai cunoaste un spor. Unitatea de executie "în afara rîndului" a microinstructiunilor este un alt element care contribuie la îmbunãtãtirea esentialã a performantelor unitãtii centrale fatã de Pentium, unde instructiunile cu cicluri multiple de executie provocau suspendarea activitãtii procesorului pînã la terminarea lor. Redenumirea registrelor (solutie tehnicã existentã si în procesorul M1, proiectat si produs de Cyrix) permite eliminarea problemelor datorate unui numãr relativ redus de registre generale la arhitecturile x86. Implementarea acestei tehnici este realizatã cu ajutorul a douã structuri, tabela de registre alternative (RAT - register alias table) si setul de registre reale (RRF - real register file). Integrarea memoriei cache de nivel 2 (Level-2 cache) în aceeasi capsulã cu unitatea centralã si accesarea ei prin intermediul unei magistrale dedicate este o altã noutate. Sã trecem toate acestea încã odatã în revistã, ceva mai amãnuntit.
Memoria cache pentru instructiuni permite încãrcarea (fetch) a 16 octeti aliniati la fiecare ciclu - spre deosebire de Pentium, care permitea si încãrcarea unor octeti nealiniati si îngreuna astfel procesul de decodificare. Octetii de instructiune sînt transferati într-un buffer de unde ajung în trei decodificatoare diferite. Dintre acestea, primul, situat la începutul bufferului, poate decodifica orice instructiune x86; urmãtoarele douã "se descurcã" numai cu instructiuni simple, de tip registru-registru. Instructiunile sînt decodificate în ordine, deci o instructiune complexã ce ajunge la un decodificator simplu - care nu o poate decodifica - va trebui sã "astepte", blocînd si instructiunile urmãtoare, pînã ce ajunge la început de buffer si va fi tratatã de primul decodificator. Acest mecanism face ca, atunci cînd existã instructiuni de decodificat, numãrul de instructiuni decodificate si deci "lansate" simultan sã varieze între cel putin una - în cazul nefericit cînd existã secvente de instructiuni complexe - si cel mult trei - în cazul fericit cînd o instructiune complexã este urmatã de douã simple.
Decodificatoarele transformã instructiunile în secvente de microoperatii (uops) de lungime fixã de 118 biti. În cadrul acestora, atît cîmpul pentru operandul sursã si cîmpul pentru operandul destinatie au lungime fixã - 32 de biti. Modul de lucru load/store specific RISC face ca instructiunile cu referintã cãtre memorie sã genereze o secventã de microinstructiuni de tipul încãrcare - executie în unitatea aritmetica/logicã ALU - memorare. Deoarece numai decodificatorul general poate furniza pînã la patru uop, el este singurul care poate decodifica instructiunile complexe. Si tot el este singurul secondat de un secventiator - pentru a permite decodificarea în mai multe cicluri a instructiunilor complexe, cele care genereazã si mai mult de patru uop.
Preview document
Conținut arhivă zip
- Microprocesorul Intel P6.doc