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ų. Ofisiniuose taikomuosiuose 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 Processing, PDP – 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
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 komandos mnemonika
|
Skaliarinės komandos mnemonika
|
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
|
3.3.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”
Komentarų nėra:
Rašyti komentarą