Rodomi pranešimai su žymėmis 2. Superskaliarinis duomenųapdorojimo principas. Rodyti visus pranešimus
Rodomi pranešimai su žymėmis 2. Superskaliarinis duomenųapdorojimo principas. Rodyti visus pranešimus

2013 m. sausio 11 d., penktadienis

2.5. Temos apibendrinimas



1.       Komanda vadinama skaliarine, jei  jos operandai yra skaičiai (skaliarai).
2.     Komanda vadinama vektorine, jei įvesties operandai ir, dažniausiai, rezultatas yra vektoriai (skaičių masyvai).
3.       Duomenų masyvui (vektoriui ) apdoroti panaudojama vektorinė komanda.
4.       Šiuo metu plačiausiai sutinkam du procesorių architektūrų su lygiagrečiu komandų vykdymu tipai: superskaliarinės architektūros  procesoriai ir procesoriai su ilgu komandos žodžiu.
5. Superskaliarinės architektūros  procesorių komandų sistemoje nėra jokių lygiagretaus duomenų apdorojimo nuorodų.
6.       Procesoriuose su ilgu komandos žodžiu (VLIW) specialiuose komandų laukuose yra nuorodos dėl lygiagretaus duomenų apdorojimo.
7.       Pagrindinės problemos, kurias projektuotojai turi išspręsti  projektuodami superskaliarinius procesorius yra: komandų priklausomybės pagal duomenis  pašalinimas, adresų ir duomenų apdorojimo paskyrimas  atskiriems procesoriams, išankstinis komandų išrinkimas ir nukreipimų nuspėjimas.
8.       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.
9. 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.
10.   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.
11.   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ą.
12.   Sąlyginai vykdant tiek nukreipimo, tiek ir kitos programos šakos komandas užimami du konvejeriai, tačiau vieno iš jų darbas gali būti pratęstas po to, kai patikrinama nukreipimo sąlyga.
13.   Kadangi vienu taktu superskaliariniame procesoriuje reikia išrinkti kelias komandas, padidinti reikalavimai keliami procesoriaus – atmintinės magistralei, pirmiausia jos pločiui.
14.   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ų.
15.   Svarbu, kad atliktų operacijų rezultatai būtų pertvarkomi ir fiksuojami taip, kaip numatyta programos kode.
16.   Simetrinė multiprocesorinė sistema SMP (Symmetrical Multi Processor system) - tai sistema, kur visi procesorius turi vienodas teisės naudoti operatyvinę atmintinę.
17.   NUMA (Non-Uniform Memory Access system). Sistemose atmintinė tampa sudėtingesnės organizacijos. Kai kurios atmintinės sritys veikia sparčiau, o kai kurios lėčiau.


2.3. Multiprocesorinės sistemos



Procesorių gamintojams vis sunkiau didinti procesoriaus taktinį dažnį, naudojant šiuolaikines  gamybines technologijas.  Našumą galima padidinti pridedant papildomus branduolius, nedidinant jų taktinio dažnio.
Dviejų branduolių procesoriai - tai naujos kartos lustai. Jie atkeliavo iš profesionalių daugiaprocesorinių sistemų į stalinių personalinių kompiuterių rinką.
Yra trys daugiaprocesorinių schemų tipai.
Simetrinė multiprocesorinė sistema SMP (Symmetrical Multi Processor system). Tai sistema, kur visi procesorius turi vienodas teisės naudoti operatyvinę atmintinę.
Rašyti programas tokiai sistemai nesudėtinga, bet sunku ir brangiai naudoti daugiau nei 4 procesorius.
20
2.7. pav. Simetrinė multiprocesorinė sistema

NUMA (Non-Uniform Memory Access system). Atmintinė tampa sudėtingesnės organizacijos. Kai kurios atmintinės sritys veikia sparčiau, o kai kurios lėčiau.
21
2.8. pav. NUMA multiprocesorinė sistema

Kurti tokios sistemos lengviau, bet rašyti programos sudėtingiau.
Klasteriai. Tai keli beveik nepriklausomi kompiuteriai, sujungti sparčiai veikiančiomis ryšio linijomis. Bendros atmintinės gali ir nebūti, bet ją nesudėtinga sukurti. Praktiškai dirbama su klasteriais, aprašant visus duomenų siuntimus tarp klasterių. Programas rašyti labai sudėtinga, bet sistema kainuoja nebrangiai. 
22
2.9. pav. Klasterinė multiprocesorinė sistema

“Intel” didesnį dėmesį skiria SMP sistemoms, “AMD”, “IBM” ir “Sun” – įvairiausiems NUMA tipams.

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.

2.1.Šiuolaikinių procesorių architektūriniai ypatumai



Procesoriaus architektūra laikoma jo vidinė organizacija visų pirma programuotojo požiūriu. Ją didele dalimi apibrėžia procesoriaus komandų sistema. Tam, kad komandos galėtų būti įvykdytos, procesoriuje būtini tam tikri funkciniai blokai. Procesoriaus funkcionavimo organizavimas lemia, kaip tie blokai vienas su kitu sąveikauja.
Komandos, kurias atlieka procesorius skirstomos į skaliarines ir vektorines.
Komanda vadinama skaliarine, jei  jos operandai yra skaičiai (skaliarai).
Komanda vadinama vektorine, jei  operandai ir, dažniausiai, rezultatas yra vektoriai (skaičių masyvai). Duomenų masyvui (vektoriui ) apdoroti panaudojama vektorinė komanda.
Vektorinės komandos pavyzdys: eiliniai dviejų masyvų elementai sudauginami, gautas rezultatas prisumuojamas prie nurodyto registro turinio, po to išrenkami kiti masyvų elementai ir veiksmai kartojami ciklų skaitiklyje nurodytą skaičių kartų. Vektorinių komandų vykdymo sparta didesnė, nes nereikia daugelio komandų išrinkimo, dešifravimo ir t. t., tačiau vektorinės programos sudėtingesnės, iš esmės tai – lygiagretaus tipo programos.
Šiuo metu plačiausiai sutinkam du procesorių architektūrų su lygiagrečiu komandų vykdymu tipai:
Ø  Superskaliarinės architektūros  procesoriai
Ø  Procesoriai su ilgu komandos žodžiu.

Superskaliarinės architektūros  procesorių komandų sistemoje nėra jokių lygiagretaus duomenų apdorojimo nuorodų. Pavadinimas juos atriboja nuo vektorinių procesorių ir tuo pačiu parodo jų vidinę lygiagretaus tipo architektūrą, įgalinančią vienu taktu gauti keletą skaliarinių operacijų rezultatų.
Apibendrinta elementaraus nuosekliai komandas vykdančio skaliarinio procesoriaus architektūra pateikta 2.1 pav.. Su tokio procesoriaus darbu susipažinome modulyje 1.
15
2.1 pav. Skaliarinio procesoriaus sandara

Etiketės