Microarhitectura UCP Pentium II
Pentium II admite operanzi si operatii aritmetice pe 32 biti, ca si operatii in virgula mobila pe 64 biti. Admite de asemenea operanzi si operatii pe 8 si 16 biti, care sunt o mostenire de la procesoarele mai vechi din familie. Procesorul poate adresa pana la 64 de GB de memorie si citeste in memorie cuvinte de 64 biti dintr-o data. Un sistem tipic Pentium II este ilustrat in figura 10, care este o reprezentare simplificata a procesorului din figura 3.
Asa cum s-a aratat mai devreme, placheta Pentium II consta din doua circuite integrate: UCP (incluzand memoriile intermediare de nivel 1 separate) si memoria intermediara de nivel 2 unificata. Figura 10 arata componentele primare ale UCP: unitatile Citire/Decodificare, Repartizare/Executie si Retragere, care lucreaza impreuna ca o banda de asamblare de nivel inalt. Aceste trei unitati comunica printr-un rezervor de instructiuni, un loc pentru pastrarea informatiilor legate de instructiuni partial executate. Informatiile din rezervorul de instructiuni sunt memorate intr-o tabela numita ROB (ReOrder Buffer - buffer de reordonare). Unitatea de Citire/Decodificare citeste instructiunile si le sparge in micro-operatii pentru memorarea in ROB. Unitatea de Repartizare/Executie preia micro-operatiile din ROB si le executa. Unitatea Retragere incheie executia fiecarei micro-operatii si actualizeaza registrele. Instructiunile sunt introduse in ROB in ordine, pot fi executate in orice ordine, dar sunt retrase din nou in ordine.
Unitatea de interfata cu magistrala raspunde de comunicarea cu sistemul de memorie, atat cu memoria intermediara L2 cat si cu memoria principala. Memoria intermediara L2 nu este conectata la magistrala locala, asa ca unitatea de interfata este responsabila cu citirea datelor din memoria principala prin magistrala locala si incarcarea tuturor memoriilor intermediare. Pentium II utilizeaza protocolul MESI de coerenta a memoriei intermediare, care este mentionat in capitolul 6.
|
Fig. 10. Microarhitectura Pentium II
Unitatea Citire/Decodificare
Unitatea Citire/Decodificare este implementata ca banda de asamblare, cu sapte segmente, etichetate de la IFU0 la ROB in figura 11. Unitatile Repartizare/Executie si Retragere au alte cinci segmente, formand in total o banda de asamblare cu 12 segmente. Instructiunile intra in banda de asamblare in segmentul IFU0, unde sunt incarcate linii intregi de 32 octeti din memoria intermediara I. Ori de cate ori tamponul intern este gol, se copiaza in el o alta linie din memoria intermediara. Registrul NEXT ghideaza procesul de citire.
|
Fig. 11. Structura interna simplificata a unitatii Citire/Decodificare
Deoarece setul de instructiuni Intel, adesea numit IA32, are instructiuni de lungime variabila, cu mai multe formate, urmatorul segment al benzii de asamblare, IFU1, analizeaza fluxul de octeti pentru a localiza adresa de start a fiecarei instructiuni. Daca este necesar, IFU1 poate cauta in avans pana la 30 de instructiuni IA-32. Mergand atat de departe inainte, intalneste patru sau cinci ramificatii conditionate. Predictiile nu pot fi corecte pentru fiecare, asa ca valoarea cautarii atat de mult in avans este mica. Segmentul IFU2 aliniaza instructiunile astfel ca urmatorul segment le poate decodifica usor.
Decodificarea incepe in segmentul ID0. Decodificarea in Pentium II consta in conversia fiecarei instructiuni IA-32 in una sau mai multe micro-operatii. Instructiunile IA-32 mai simple, ca transferurile registru la registru, se pot converti intr-o singura micro-operatie. Altele mai complexe pot necesita pana la patru micro-operatii. Cateva extrem de complexe necesita chiar mai multe si folosesc ROM-ul secventiatorului de micro-operatii pentru a genera secventa.
Segmentul IDO are trei decodificatoare interne. Doua din ele sunt pentru instructiuni simple, al treilea le gestioneaza pe celelalte. Ceea ce rezulta din segmentul IDO este o secventa de micro-operatii. Fiecare micro-operatie contine un cod de operatie, doua registre sursa si un registru destinatie.
Micro-operatiile sunt plasate in coada in segmentul ID1. Acest segment mai executa si detectia ramificatiilor. Mai intai se face o predictie statica, pentru orice eventualitate. Predictia depinde de o serie de factori, dar pentru ramificatiile relative la instructiunea curenta se presupune ca vor fi efectuate cele inapoi, iar cele inainte nu vor fi efectuate. Dupa aceasta urmeaza predictorul dinamic de ramificatii, utilizand un algoritm bazat pe istorie ca in figura 6. Se utilizeaza 4 biti in loc de numai doi biti pentru istorie. Este evident ca pentru o banda de asamblare cu 12 segmente penalizarea pentru o eroare de predictie este enorma, de aceea se utilizeaza 4 biti de istorie in loc de 2 ca in exemplul prezentat anterior. Daca ramificatia nu este in tabela de istorie, se utilizeaza predictia statica.
Pentru a evita dependentele WAR si WAW, Pentium II permite redenumirea registrelor, asa cum a fost prezentata pe exemplul di figura 8. Registrele reale numite in instructiunile IA-32 pot fi inlocuite in micro-operatii de oricare din cele 40 de registre temporale interne localizate in ROB. Aceasta redenumire este efectuata in segmentul RAT.
In ROB sunt depozitate cate trei micro-operatii pe ciclu de ceas. Operanzii sunt, de asemenea, colectati aici, daca sunt disponibili. Daca operanzii unei micro-operatii si registrul rezultat sunt toti disponibili, iar unitatea de executie este libera, aceasta instructiune este candidata sa fie lansata in executie. Daca nu, ramane in ROB pana cand toate resursele sale au fost obtinute.
Unitatea Repartizare/Executie
Unitatea Repartizare/Executie este ilustrata in figura 12. Unitatea de Repartizare/Executie planifica si executa micro-operatii, rezolvand dependentele si conflictele de resurse. Desi numai trei instructiuni pot fi decodificate pe ciclu de ceas in ID0, pot fi lansate in executie pana la cinci micro-operatii intr-un ciclu, cate una pe fiecare port. Aceasta rata nu poate fi sustinuta pentru ca ea depaseste capacitatea unitatii Retragere. Micro-operatiile pot fi lansate in orice ordine, dar Unitatea de Retragere le retrage in ordine. Se utilizeaza o tabela de scor complexa pentru a gestiona micro-operatii in desfasurare, registre si unitati de executie. Cand o micro-operatie este eligibila pentru executie ea poate fi inceputa, chiar daca altele puse mai devreme in ROB nu sunt gata. Un algoritm complex o alege pe cea mai buna instructiune pentru a fi urmatoarea lansata in executie cand mai multe micro-operatii sunt eligibile pentru executie de catre aceeasi unitate de executie. De exemplu, executia unei ramificatii este mult mai importanta decat executia unei instructiuni aritmetice, deoarece prima afecteaza fluxul programului.
|
Fig. 12. Unitatea de Repartizare/Executie
Unitatea de Repartizare/Executie contine o statie de rezervare si unitati de executie conectate la cinci porturi. Statia de rezervare este o coada cu 20 intrari pentru micro-operatii care au toti operanzii disponibili. Acestea isi asteapta randul in Statia de rezervare pana cand unitatea de executie ceruta devine libera.
Exista cinci porturi de la Statia de rezervare la unitatile de executie. Unele unitati de executie partajeaza un singur port, asa cum s-a aratat. Unitatile de incarcare si Memorare initiaza informatiile corespunzatoare pentru operatiile de incarcare si respectiv memorare. Exista doua porturi pentru memorari. Deoarece numai o singura micro-operatie poate fi lansata per port si per ciclu, daca doua micro-operatii in desfasurare trebuie trimise la acelasi port, una din ele trebuie sa astepte.
Unitatea de Retragere
Odata ce o micro-operatie a fost executata, aceasta merge inapoi la Statia de Rezervare si apoi in ROB pentru a astepta retragerea. Unitatea de Retragere este responsabila pentru trimiterea rezultatelor la locul adecvat - la registrul adecvat, dar si la alte statii din Unitatea Repartizare/Executie asteptand valori. Unitatea de Citire/Decodificare pastreaza registrele 'oficiale', adica acele valori de la instructiuni care s-au terminat. Unitatea de Retragere pastreaza un set de registre in asteptare, adica acele valori care au fost calculate intr-o instructiunne care nu s-a terminat pentru ca unele instructiuni precedente nu sunt inca terminate.
Pentium II admite integral executia speculativa, asa ca unele instructiuni vor fi executate inutil si nu vor fi retrase. Aici apare capacitatea de executie inapoi. Daca se constata ca o anumita micro-operatie provine dintr-o instructiune IA-32 care nu ar fi trebuit executata, rezultatele sale sunt eliminate. Este sarcina unitatii de Retragere de a gestiona toate acestea. Pot fi retrase numai instructiuni executate 'oficial', iar acestea trebuie retrase in ordinea programului, chiar daca ele au fost poate executate in alta ordine.
Bibliografie
1. Anderson, D., Shanley, T., "Pentium Pro and Pentium II System Architecture", Addison-Wesley, Reading, MA, 1998.
2. Brey, B., 'The Intel Microprocessors', Fifth Edition, Prentice Hall, New Jersey, 2000.
3. Bryant, R., O'Hallaron, D., "Computer Systems - A Programmer's Perspective", , Prentice Hall, New Jersey, 2003.
Driesen, K., Holzle, U., "Accurate Indirect Branch Prediction", Proceedings of 25th Int. Symposium on Computer Architecture", ACM, 1998, pp. 434-442.
5. Fisher, J.A., Freudenberger, S.M., "Predicting Directional Branch from Previous Runs of Program", Proceedings of 5th Int. Conference on Architecture Support for Programming Languages and Operating Systems, ACM, 1992, PP. 85-95.
6. Juan, T., Sanjeevan, S., Navarro, J., "Dynamic History-Length Filling - A Third Level of Adaptivity for Branch Prediction", Proceedings of 25th Int. Symposium on Computer Architecture", ACM, 1998, pp. 155-161.
7. Marsanu, R., 'Calculatoare persoanale-elemente arhitecturale', Editura BIC ALL, Bucuresti 2001.
8. Murdocca, M.J., Heuring, V.P., 'Principles of Computer Arhitecture', Prentice Hall, 1999.
9. Norton, P., 'Sectrete PC', Editura Teora, Bucuresti 1998 (traducere dupa SAMS Publisluig, USA, 1995).
10. Patterson, D., Hennessy, J., "Organizarea si proiectarea calculatoarelor: interfata hardwarw/software", Editura ALL, Bucuresti, 2002.
11. Seecchrest, S, Lee, C., "Correlation and Aliasing in Dynamic Branch Prediction", Proceedings of 23th Int. Symposium on Computer Architecture", ACM, 1996, pp. 22-22.
12. Sima, D., Fountain, T., Kacsuk, P., "Advanced Computer Architecture - A Design Space Approach", Addison-Wesley, Reading, MA, 1997.
13. Sprangle, E., Chappell, R.S., Alsup, M., Patt, Y.N., "The Agree Predictor - A Mechanism for Reducing Negative Branch History Interference", Proceedings of 24th Int. Symposium on Computer Architecture", ACM, 1997, pp. 284-291.
1 Stallings, W., 'Computer Organization and Architecture', Fifth Edition, Prentice Hall, New Jersey, 1999.
15. Tamenbaum, A. S., 'Organizarea structurata a calculatoarelor', Editia a IVa, Editura Agora, Tg. Mures, 1999.
16. Wilkinson, B., 'Computer Architecture', Second Edition, Prentice Hall Europe, 1996.
17. ***, www.intel.com
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |