2013 m. sausio 11 d., penktadienis

2.2. Lygiagrečiai komandas vykdančių procesorių architektūra



Procesoriuose su ilgu komandos žodžiu (VLIW) specialiuose komandų laukuose yra nuorodos dėl lygiagretaus duomenų apdorojimo.
Šiuose procesoriuose yra keli funkciniai įtaisai galintys vienu metu apdoroti duomenis atskiruose konvejeriuose.
Pagrindinės problemos, kurias projektuotojai turi išspręsti juos projektuodami yra:
Ø    Komandų priklausomybės pagal duomenis  pašalinimas;
Ø    Adresų ir duomenų apdorojimo paskyrimas  atskiriems procesoriams;
Ø    Išankstinis komandų išrinkimas ir nukreipimų nuspėjimas.
Komandų priklausomybės pagal duomenis  sumažinimas svarbus, kai programoje po rašymo W yra skaitymo R komanda (RAW read after write). Žr. pav 2.2.  Tokias komandas vykdant atskiruose procesoriuose vienu metu, gaunamas neteisingas rezultatas.  Kad taip neatsitiktų, registrus galima pervardinti, antrosios komandos vykdymo fazę pradėti tik jau turint atnaujintą registro r3 turinį.
16
2.2. pav. Komandų priklausomybė pagal duomenis

Adresų ir duomenų apdorojimo paskyrimas  atskiriems procesoriams įgalina sutapatinti laike adresų ir duomenų apdorojimą. Adresai visada yra tik sveiki skaičiai. Tuo tarpu duomenys gali būti ir slankaus kablelio formos. Parengti adresai ir duomenys sudaro eiles, todėl tik atsilaisvinus techniniams resursams, operacija vykdoma nedelsiant.

16
Adresų procesorius                                                               Komandų procesorius
2.3. pav. Procesorius su paskirstyta architektūra

Išankstinis komandų išrinkimas ir nukreipimų nuspėjimas taip pat yra labai svarbus. Nemaža kliūtimi organizuojant lygiagretųjį duomenų apdorojimą yra programoms charakteringi ciklai. Nukreipimo sąlygos formavimas, komandos išrinkimas, dešifravimas ir veiksmų su adresais atlikimas užima nemažai laiko, todėl konvejeriuose atsiranda tušti taktai. To išvengti įmanoma tokiais būdais:
Ø      Nuspėjant nukreipimus;
Ø      Keičiant atliekamų komandų eiliškumą;
Ø      Sąlyginai vykdant tiek nukreipimo, tiek ir kitos programos šakos komandas.
Nuspėjant nukreipimus nelaukiama kol sąlyga bus patikrinta, o pradedamos vykdyti nukreipimo (dažniausiai tai naujo ciklo) komandos. Jei vėliau išaiškėja, kad nuspėjimas neteisingas, tenka atliktus veiksmus anuliuoti.
Keičiant atliekamų komandų eiliškumą taip pat galima išvengti tuščių taktų, tačiau duomenų tarpusavio priklausomybių šalinimas tuo atveju vėlgi lėtina procesoriaus darbą.
Sąlyginai vykdant tiek nukreipimo, tiek ir kitos programos šakos komandas užimami du konvejeriai, tačiau vieno iš jų dabas gali būti pratęstas po to, kai patikrinama nukreipimo sąlyga.
Superskaliarinio procesoriaus architektūra pateikta pav. 2.4.
Kadangi vienu taktu superskaliariniame procesoriuje reikia išrinkti kelias komandas, padidinti reikalavimai keliami procesoriaus – atmintinės magistralei, pirmiausia jos pločiui. L1 priešatmintinės duomenims ir komandos naudojamos atskiros. Dešifruotos ir parengtos vykdyti komandos perduodamos į buferinius įtaisus ir, atsilaisvinus reikiamiems vykdomųjų įtaisų resursams, jos patenka į atitinkamus vykdymo konvejerius. Apdorojami duomenys perduodami iš atitinkamų registrų. Svarbu, kad atliktų operacijų rezultatai būtų pertvarkomi ir fiksuojami taip, kaip numatyta programos kode.
17
2.4 pav. Superskaliarinio procesoriaus architektūra

Baigiamasis komandos vykdymo etapas – procesoriaus būsenos pakeitimas priklausomai nuo atliktos komandos. Tai reiškia, kad nežiūrint lygiagretaus programos komandų vykdymo procesoriuje, turi būti išsaugomas nuoseklaus komandų vykdymo, numatyto programoje modelis.
Nors fizinė procesoriaus  būsena pasikeičia iš karto įvykdžius komandą, architektūrinė būsena tampa aiški tik tuomet, kai jau nustatytas sąlyginio nukreipimo tikrasis rezultatas.
Superskaliarinio mikroprocesoriaus struktūra parodyta pav.2.5.
18
2.5 pav. Superskaliarinio mikroprocesoriaus sandara
Tiek superskaliariniai, tiek ir ilgo žodžio procesoriai turi tik vieną komandų skaitiklį, todėl juos galima būtų pavadinti vienagijais, tuo tarpu procesoriai turintys du ar daugiau komandų skaitiklių vadinami daugiagijiniais. Toks jų organizavimo būdas leidžia pasiekti žymiai gilesnį lygiagretaus duomenų apdorojimo lygį. Tokiu būdu geriau išnaudojami funkciniai įtaisai duomenims apdoroti ir tuo pačiu užtikrinamas didesnis procesoriaus darbo stabilumas (jis paprastai “nepakimba”). Kaip matyti iš pav.2.6. kiekvienas procesorinis įtaisas vykdo atskirą programos komandų giją naudodamas atskirą registrų failą. Planuotojas atsakingas už savarankiškų programos gijų išskyrimą ir nukreipimą į procesorinius įtaisus.
19
2.6 pav. Daugiagijinio (hypertreading) procesoriaus sandara

Programos gijos ne visada yra pakankamai nesusietos viena su kita, todėl ir gaunami rezultatai ne visada patvirtinami.

Komentarų nėra:

Rašyti komentarą

Tinklaraščio archyvas

Etiketės