2012 m. gruodžio 28 d., penktadienis

9. Superskaliarinis duomenų apdorojimo principas



Tikslai:
1.      Suprasti superskaliarinio duomenų apdorojimo esmę.
2.      Suvokti , kokie pagrindiniai uždaviniai turi būti išspręsti vykdant superskaliarinį duomenų apdorojimą
3.      Paaiškinti operacijų rezultatų fiksavimo tvarką

Temos studijoms reikalingas laikas:      2 val. teorijos;
2 val. savarankiško darbo.
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 modulyje1.
2.1 pav. Skaliarinio procesoriaus sandara
Procesoriuose su ilgu komandos žodžiu (VLIW) specialiuose komandų laukuose yra nuorodos dėl lygiagretaus duomenų apdorojimo.
9.2.1. Superskaliarinės architektūros  procesoriai
Š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į.
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.

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.
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.
2.5 pav. Superskaliarinio mikroprocesoriaus sandara
9.2.3. Daugiagijiniai (hypertreading) procesoriai
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.
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.
9.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.
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.
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. 
2.9. pav. Klasterinė multiprocesorinė sistema

“Intel” didesnį dėmesį skiria SMP sistemoms, “AMD”, “IBM” ir “Sun” – įvairiausiems NUMA tipams.
9.4. SVK
1.              Kokia komanda vadinama skaliarine?
2.              Kokia komanda vadinama vektorine?
3.              Kuo skiriasi skaliarinės ir vektorinės komandos?
4.              Kas tai yra superskaliarinis duomenų apdorojimas?
5.              Kaip realizuojama paskirstyta procesoriaus architektūra?
6.              Kas tai yra išankstinis komandų išrinkimas ir nukreipimų nuspėjimas?
7.              Kokios problemos kyla vykdant superskaliarinį duomenų apdorojimą?
8.              Kam reikia vykdyti nukreipimų nuspėjimą?
9.              Kodėl kartais būtina keisti komandų vykdymo eiliškumą?
10.          Kodėl superskaliariniuose procesoriuose padidinti reikalavimai keliami magistralės pločiui?
11.          Kodėl, nežiūrint lygiagretaus programos komandų vykdymo procesoriuje, turi būti išsaugomas numatyto programoje nuoseklaus komandų vykdymo modelis?
12.          Kuo išsiskiria procesorių su VLIW (labai ilgu komandos žodžiu) komandos?
13.          Kuo išsiskiria daugiagijiniai procesoriai?
14.          Kokias žinote multiprocesorinių sistemų architektūras?
15.          Paaiškinkite multiprocesorinių sistemų tipų skirtumus.
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.

 




Tikslai:
1.      Suprasti daugialypės terpės duomenų apdorojimo algoritmų ypatumus.
2.      Suvokti naujų komandų rinkinių skirtų tokiems algoritmams realizuoti struktūrą ir darbą.
3.      Paaiškinti MMX, 3D Now ir SSE komandų rinkinių ypatumus.

Temos studijoms reikalingas laikas:      val teorijos.
9.7. Intel NSP koncepcija
  NSP koncepcija, Intel pasiūlyta dar 1995 metais perdeda procesoriui dalį užduočių, anksčiau vykdomų atskiruose specializuotuose įrenginiuose ir tuo pačiu supaprastina pačio kompiuterio konstrukciją ir sumažina jo gamybos kainą. Prie šitų užduočių priskiriama garso bei muzikos sintezė, kalbos atpažinimas, vaizdo ir grafinės informacijos apdorojimas, komunikacinių funkcijų atlikimas ir kt.
Toks kiekis įvairiausių funkcijų, kurių vykdymas pagal NSP technologiją turėjo būti patikėtas procesoriui, gerokai viršijo tolimos nuo tobulybės architektūros x86 šeimos procesorių galimybes, ir reikalavo atitinkamų pakeitimų. Koncepcijos NSP įkūnijimu “metale” tapo 1997m. pasaulį išvydęs procesoriusPentium MMX.
9.8. SIMD tipo MMX komandų rinkinys
 Pentium MMX (MultiMedia eXtentions) pasirodymą rinkoje vis dėl to dagiausiai paskatino gausybės daugialypės terpės (Multimedia) programų pasirodymas apie 1995-1996 metus. Tai programos, gebančios apdoroti vaizdus, garsus ir kt. Deja, Pentium procesoriaus sparta neleido efektyviai tų programų darbo išnaudoti.
Analizuojant minėtų programų algoritmus, buvo pastebėta, kad jose labai dažnai tenka vykdyti vieno ir to paties tipo komandas su daugeliu duomenų porų. Kilo idėja, sukurti specialų komandų rinkinį, pritaikytą minėto tipo programoms. Buvo sukurtas specialus SIMD (Single Instruction Many Data) komandų formatas. Tokiose komandose yra vienas operacijos kodas ir nurodytos keturios duomenų poros, su kuriomis ta operacija turi būti atlikta. Aišku, galima nurodyti ir mažiau duomenų porų.
Pentium MMX komandų sistema papildyta 57 komandomis, orientuotomis į efektyvų tipinių multimedija algoritmų vykdymą. Joms priklauso ir daugybė algoritmų, būdingų skaitmeniniam signalų apdorojimui (operacijos su vektoriais, skleistinėFurje eilutės ir kt.).
Tai pirmasis reikšmingas komandų sistemos pakeitimas x86 šeimos mikroprocesoriuose nuo Intel80386 išleidimo į pasaulį 1985 m., turėjusio 220 pagrindinių komandų.
  Kartu su kitais patobulinimais  pagrindiniu Pentium MMX procesoriaus  privalumu yra jo sugebėjimas palaikyti papildomą multimedija komandų rinkinį, kurio vykdymui naudojamas MMX-įtaisas ir slankaus kablelio registrų blokas.
MMX technologija atnešė šiuos pakitimus į Intel mikroprocesorių architektūrą:
Ø      Pridėti 8 MMX registrai (MM0-MM7). MMX registrai fiziškai susieti su 64 bitų slankaus kablelio registrais ir gali būti panaudoti tik veiksmams su MMX-duomenimis.
Ø      Pridėtos 57 naujos komandos. Komandos skirstomos į grupes: duomenų mainų, aritmetines, sulyginimo, logines, postūmio, pertvarkymo ir MMX režimo išjungimo komandą.
Ø      Papildomai pridėti 4 nauji duomenų tipai – pakuoti baitai (8 baitai 64 bitų pakete), pakuoti žodžiai  (keturi 16 bitų žodžiai 64 bitų pakete), pakuoti dvigubi žodžiai (du 32 bitų žodžiai 64 bitų pakete) ir keturgubas žodis (64 bitai). Aritmetinės arba loginės operacijos vykdomos paraleliai su kiekvienu žodžio arba dvigubo žodžio baitu, esančiu 64 bitų MMX registre (SIMD apdorojimo modelis).
SIMD apdorojimas žymiai paspartina multimedia algoritmų, kuriems būdingas identiškų operacijų vykdymas su dideliais vienodo tipo duomenų masyvais (pavyzdžiui, 16 bitų skaičiavimai skaitmeniniam garsui ir t.t.) vykdymą.
MMX komandų panaudojimas leidžia paspartinti multimedia komandų vykdymą lyginant su įprastais Pentium procesoriais 60% esant vienodam taktiniam dažniui (Intel multimedinio testo Media Benchmark duomenys).
Fizinis MMX registrų ir slankaus kablelio registrų suderinimas garantuoja suderinamumą su ankstesniąją architektūra ir, atitinkamai, leidžia naudoti ankstesniąją programinę įrangą. Tam kad persijungti iš MMX režimo į slankaus kablelio apskaičiavimų režimą, procesoriui reikia 50 taktų.
MMX komandų vykdymas vykdomajame U arba V konvejeryje gali būti atliekamas tuo pačiu metu kaip ir kita MMX komanda arba fiksuoto kablelio operacija (bet ne slankaus). Prie 6 įprastų slankaus kablelio komandos vykdymo stadijų pridedamos dar 6 MMX įtaise.
Praplėstas konvejerizavimas žymiai padidina procesoriaus našumą ir dirbant su multimedija programomis.
9.9. Komandų sistemos išplėtimas SSE rinkiniu Pentium 3 procesoriuje
Našumo padidėjimas įvedus MMX-komandas vis dėlto  nepateisino vartotojų, dirbančių su grafinėmis programomis, vilčių. Našumo padidėjimas 10%, kaip manoma, buvo pasiektas daugiau dėka vidinės procesoriaus Pentium MMX priešatmintinės padidinimo, o ne vektorinių komandų. Ofisiniuosetaikomuosiuose paketuose SIMD MMX išplėtimo komandos praktiškai nenaudojamos.
Vykdant tipinius grafiniams paketams geometrinius pertvarkymus, daug svarbiau turėti didelio našumo duomenų apdorojimą slankaus kablelio režime, ko nepavyksta efektyviai realizuoti įvedus duomenų apdorojimo SIMD komandas su fiksuotu kableliu.
Dalinai išspręsti našumo padidinimo problemą grafiniams paketams Intel bandė išleidusi grafinį procesorių I740, orientuotą darbui Pentium 2 sistemose su AGP magistrale. Šis procesorius leido pagreitinti trimačių grafinių vaizdų apdorojimą, tai pavyko dar dėka jame panaudotos lygiagrečios slankaus kablelio komandų vykdymo technologijos (Parallel Data ProcessingPDP – lygiagretus duomenų apdorojimas).
Norėdama pašalinti trūkumus, būdingus MMX technologijai ( komandų darbui su slankaus kablelio operacijomis, slankaus kablelio operacijų pertraukimą vykdant MMX komandas), Intel nusprendė įvesti keletą esminių pakeitimų šeštos kartos procesorių architektūroje.
Naujos slankaus kablelio duomenų apdorojimo SIMD komandos, realizuotos procesoriuje Pentium 3, didina taikomųjų programų našumą tokiose srityse kaip:
ØTrimatė grafika ir modeliavimas
ØSignalų apdorojimas ir procesų su plačiu parametrų kitimo diapazonu modeliavimas
ØBlokinio kodavimo algoritmuose ir vaizdo signalo dekodavime
ØDuomenų filtracijos skaitmeniniuose algoritmuose
9.9.1. SPFP komandos
Viena slankaus kablelio SIMD komanda gali vienu metu apdoroti keturis 32 bitinius  vienadinarinio tikslumo slankaus kablelio skaičius (vadinamų SPFP duomenų elementus).
Vienadinarinio tikslumo slankaus kablelio duomenų SIMD komandos naudoja aštuonis naujus 128 bitinius registrus – MMX registrus : XMM0 … XMM7. Šie registrai naudojami tiktai darbui su duomenimis. Atmintinės adresavimui naudojami fiksuoto kablelio registrai ir Intel architektūroje numatyti adresavimo režimai.
Skirtingai nei MMX registrai, kurie fiziškai realizuoti standartinėse Intel architektūrai 80 bitiniuose duomenų registruose su slankiu kableliu, 128 bitiniai XMM registrai yra nauji procesoriaus komponentai.
SPFP komandos naudoja naująjį duomenų tipą – 128 bitines reikšmes, turinčias keturis nuosekliai išdėstytus (“suspaustus”) 32 bitinius slankaus kablelio skaičius.
Pentium 3, kaip ir ankstesnių kartų Intel procesoriuose, vidiniam duomenų slankaus kablelio formate naudojamas 80-bitinis praplėsto tikslumo formatas, bet suspaustiems slankaus kablelio skaičiams Pentium 3 procesoriuje naudojamas 32 bitinis vaizdavimas su vienadinariniu tikslumu. Todėl dėl slankaus kablelio duomenų apdorojimo rezultatų apvalinimo, x87 architektūros ir SPFP komandų duomenys gali nesutapti.
Kiekvienas 32 bitinis slankaus kablelio skaičius pagal IEEE-754 standartą turi 1 ženklo skiltį, 8 eilės bitus ir 23 mantisės bitus.
Dauguma SPFP komandų turi du operandus. Duomenys esantys pirmajame operande po komandos įvykdymo pakeičiami rezultatais, o antrojo operando duomenys išlieka nepakitę.
SIMD komandos palaiko du operacijų su suspaustais slankaus kablelio duomenimis tipus – lygiagrečius ir skaliarinius.
Lygiagrečios operacijos vykdomos iškart su visais keturiais kiekvieno 128 bitinio operando 32 bitiniais duomenų elementais. Komandų, vykdančių lygiagrečias operacijas, varduose yra priesaga ps. Pavyzdžiui, komanda addps sudeda keturias duomenų elementų poras ir įrašo keturias gautas sumas į atitinkamus pirmojo operando elementus.
Skaliarinės operacijos vykdomos su jaunesniais (užimančiais 0-31 skiltis) dviejų operandų duomenų elementais. Likę trys duomenų elementai lieka nepakitę (išskyrus skaliarinio kopijavimo komandą movss).
Komandų, vykdančių skaliarines operacijas, varduose yra priesaga ss ( pavyzdžiui, komanda addss).
3.1 lentelė. Slankaus kablelio SIMD komandos pavyzdys

Vykdoma operacija
Lygiagrečios komandosmnemonika
Skaliarinės komandosmnemonika

Pastabos
Sudėtis
addps xmm1,
xmm2
addss xmm1,
xmm2
Pirmasis komandos operandas randasi XMM registre, antras operandas – arba XMM registre arba atmintinėje. Rezultatas- pirmajame registre

9.9.2. Papildomos SIMD komandos darbui su fiksuoto kablelio duomenimis
Į naujų Pentium 3 komandų rinkinį įtrauktos papildomos SIMD komandos darbui su fiksuoto kablelio duomenimis. Šios naujos komandos išplečia egzistuojančių MMX rinkinio komandų galimybes.
Naujos SIMD komandos fiksuoto kablelio duomenų apdorojimui vykdo SIMD operacijas  su keliais fiksuoto kablelio duomenų elementais, supakuotais į 64 bitines grupes, įrašo ir saugo pakuotus duomenis MMX registruose.

Naujų SIMD fiksuoto kablelio komandų mnemonika turi priešdėlius ir priesagas nurodančias vykdomos operacijos charakterį ir naudojamų duomenų tipą:
Ø       Priešdėlis p nurodo tai jog komanda vykdo lygiagrečias operacijas su keliais duomenų elementais
Ø       Priesagos b, w, d ir q nurodo naudojamųjų duomenų tipą ( supakuoti baitai, žodžiai, dvigubi žodžiai, ir keturgubas žodis atitinkamai )
Ø       Priesagos u arba s nurodo duomenų su ženklu (u) arba be ženklo(s).
Taip, pavyzdžiui daugybos  komanda pmulhuw dirba su duomenimis : “pakuoti 16 bitų žodžiai be ženklo”
Tuo pačiu svarbiu Pentium 4 pranašumu yra tai, jog jis turi SIMD (Single instruction – multiple data) instrukcijų apdorojimo bloką. 64 bitų instrukcijos skirtos darbui su slankaus kablelio skaičiais, o 128 bitų – su fiksuoto kablelio duomenims. Tokie moduliai Pentium 4 irgi du: vienas registrinėms operacijoms, kitas – aritmetinėms. Teoriškai įmanomas darbo režimas,  kai per vieną taktą vykdoma viena SIMD instrukcija, sudaryta iš keturių operacijų.
  SIMD instrukcijų rinkinys (SSE2) turi 76 visiškai naujas, operuojančias su plačiu duomenų diapazonu, ir 68 skirtas darbui su fiksuoto kablelio duomenimis instrukcijas.
9.11. 3D Now komandų rinkinys AMD K6 procesoriuje
1998 metų gegužės pabaigoje AMD pranešė apie savo naują produktą – mikroprocesorių K6 – II su superskaliariniu MMX komandų apdorojimu ir 3DNow! technologija, kurioje yra 21 nauja instrukcija, tarp kurių - pagreitinančios trimačių objektų vaizdavimą, palaikančios stereogarsą bei video. Tokios galimybės Intel mikroprocesoriuose buvo įgyvendintos žymiai vėliau, kai buvo išleistas procesorius Pentium III.
Pagreitintas apdorojimas, naudojant 3DNow technologiją, gaunamas dėl to, kad vietoje MMX komandų yra naudojamos analogiškos, bet dirbančios su slankaus kablelio formato duomenimis, SIMD komandos. Kiekviena 3DNow komanda gali dirbti su dviem slankaus kablelio formato operandais. Procesorius AMD K6 – II vieno ciklo metu, naudodamas du konvejerius, sugeba apdoroti dvi 3DNow instrukcijas. Tokiu būdu vieno ciklo metu gali būti atlikti keturi veiksmai su slankaus kablelio operandais (sudėti, sudauginti ir atimti).
Procesoriaus AMD K6 – II daugialypės terpės blokas apjungia iki šiol buvusias MMX ir naujas 3DNow! instrukcijas. Toks instrukcijų apjungimas programoms leidžia vykdyti grafines MMX instrukcijas (sveikų skaičių operandai) ir 3DNow instrukcijas (slankaus kablelio operandai) negaištant laiko persijungiant tarp blokų. 3DNow komandos naudoja tuos pačius registrus, kaip ir MMX, yra taip pat koduojamos ir gali būti vykdomos lygiagrečiai kartu su MMX komandomis.
3DNow! papildo ir padidina grafinių spartintuvų galimybes, pagreitindama veiksmus su slankaus kablelio operandais įvairiose grafinio konvejerio proceso stadijose.
Procesorius K6 – II yra pirmasis atitinkantis Socket7 standartus ir naudojantis 100 MHz magistralę.
Programinė įranga, kurios produktyvumas žymiai padidėja, naudojant 3DNow:
Ø      Trimatės grafikos žaidimai.
Ø      Daugialypės terpės enciklopedijos;
Ø      Tinklas ir tinklo stočių kūrimas;
Ø      Prezentacijos, teksto procesoriai ir elektroninės lentelės;
Ø      CAD/CAM priemonės;
Ø      Trimačio garso apdorojimas;
Ø      Balso atpažinimo įranga;
Ø      Vaizdo perdavimas per Internet’ą;
Ø      Kokybiškas DVD formato filmų skaitymas;
Ø      Programinės trimačių valdiklių tvarkyklės;
Ø      MPEG – video atkūrimas;
Ø      Dolby AC – 3 (DVD filmuose naudojamas garso kodavimo formatas).
1.       Kodėl Pentium1 procesoriaus vyravimo rinkoje laikais atsirado poreikis  įvesti naujus komandų rinkinius?
2.       Kuriame Intel procesoriuje prieš tai paskutinį kartą buvo įvestos naujos komandos?
3.       Kas būdinga daugialypėje terpėje vykdomų programų algoritmams?
4.       Kas būdinga MMX komandų rinkiniui?
5.       Ar MMX komandų rinkinys leido iš esmės pagreitinti daugialypės terpės programų darbą?
6.       Kada pasirodė pirmieji grafikos procesoriai ir kokios naujo tipo komandos įvestos juose?
7.       Apibūdinkite SSE komandų rinkinį.
8.       Apibūdinkite SSE2 komandų rinkinį.
9.       Apibūdinkite SSE3 komandų rinkinį.
10.   Kokių papildomų registrų įvesta procesoriuose daugialypės terpės komandoms vykdyti?
11.   Kokie nauji duomenų formatai būdingi daugialypės terpės komandoms?
12.   Pagal ką galima atskirti daugialypės terpės komandų kodus?
13.   Apibūdinkite 3D Now komandų rinkinį.
1. Pentium MMX, kurio komandų sistema papildyta 57 komandomis, orientuotomis į efektyvų tipinių multimedija algoritmų vykdymą. Joms priklauso ir daugybė algoritmų, būdingų skaitmeniniam signalų apdorojimui (operacijos su vektoriais, skleistinėFurje eilutės ir kt.). 
2. SIMD apdorojimas žymiai paspartina multimedia algoritmų, kuriems būdingas identiškų operacijų vykdymas su dideliais vienodo tipo duomenų masyvais (pavyzdžiui, 16 bitų skaičiavimai skaitmeniniam garsui ir t.t.) vykdymą.
3. MMX komandų panaudojimas leidžia paspartinti multimedia komandų vykdymą lyginant su įprastais Pentium procesoriais 60% esant vienodam taktiniam dažniui (Intel multimedinio testo Media Benchmark duomenys).
4. Našumo padidėjimas įvedus MMX-komandas nepateisino vartotojų, dirbančių su grafinėmis programomis, vilčių. Našumo padidėjimas 10% buvo pasiektas, kaip manoma, dėka vidinės procesoriaus Pentium MMX priešatmintinės padidinimo, o ne vektorinių komandų.
5. Vykdant tipinius grafiniams paketams geometrinius pertvarkymus, daug svarbiau turėti didelio našumo duomenų apdorojimą slankaus kablelio režime, ko nepavyksta efektyviai realizuoti įvedus duomenų apdorojimo SIMD komandas su fiksuotu kableliu.
6. Viena slankaus kablelio SIMD komanda gali vienu metu apdoroti keturias 32 bitinius  vienadinarinio tikslumo slankaus kablelio skaičius (vadinamų SPFP duomenų elementus).
7. SPFP komandos naudoja naująjį duomenų tipą – 128 bitines reikšmes, turinčias keturis nuosekliai išdėstytus (“suspaustus”) 32 bitinius slankaus kablelio skaičius.
8. Kiekvienas 32 bitinis slankaus kablelio skaičius pagal IEEE-754 standartą turi 1 ženklo skiltį, 8 eilės bitus ir 23 mantisės bitus.
9. Lygiagrečios operacijos vykdomos iškart su visais keturiais kiekvieno 128 bitinio operando 32 bitiniais duomenų elementais. Komandų, vykdančių lygiagrečias operacijas, varduose yra priesaga ps. Pavyzdžiui, komanda addps sudeda keturias duomenų elementų poras ir įrašo keturias gautas sumas į atitinkamus pirmojo operando elementus.
10.     Skaliarinės operacijos vykdomos su jaunesniais (užimančiais 0-31 skiltis) dviejų operandų duomenų elementais. Likę trys duomenų elementai lieka nepakitę (išskyrus skaliarinio kopijavimo komandą movss).
11.     Į naujų Pentium 3 komandų rinkinį įtrauktos papildomos SIMD komandos darbui su fiksuoto kablelio duomenimis. Šios naujos komandos išplečia egzistuojančių MMX rinkinio komandų galimybes.
12.     Naujos SIMD komandos fiksuoto kablelio duomenų apdorojimui vykdo SIMD operacijas  su keliais fiksuoto kablelio duomenų elementais, supakuotais į 64 bitines grupes, įrašo ir saugo pakuotus duomenis MMX registruose.
13.     Svarbiu Pentium 4 pranašumu yra tai, jog jis turi SIMD (Single instruction – multiple data) instrukcijų apdorojimo bloką. 64 bitų instrukcijos skirtos darbui su slankaus kablelio skaičiais, o 128 bitų – su fiksuoto kablelio duomenims.
14.     SIMD instrukcijų rinkinys (SSE2) turi 76 visiškai naujas, operuojančias su plačiu duomenų diapazonu, ir 68 skirtas darbui su fiksuoto kablelio duomenimis instrukcijas.
15.     Pagreitintas duomenų apdorojimas AMD procesoriuose realizuotas naudojant 3DNow! technologiją, gaunamas dėl to, kad vietoje MMX komandų yra naudojamos analogiškos, bet dirbančios su slankaus kablelio formato duomenimis, SIMD komandos. Kiekviena 3DNow! komanda gali dirbti su dviem slankaus kablelio formato operandais. Procesorius AMD K6 – II vieno ciklo metu, naudodamas du konvejerius, sugeba apdoroti dvi 3DNow! instrukcijas.

Komentarų nėra:

Rašyti komentarą

Etiketės