Vektorisuoritin

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun

Vektorisuoritin (toisinaan taulukkosuoritin, engl. array processor) on alun perin erikoistarkoitukseen suunnattu suoritin supertietokoneissa. Nykyisin vektorisuoritin on toteutettu käskykantalaajennoksena tavallisessa suorittimessa.

Vektorisuorittimen määritelmä on suoritin, joka voi operoida kokonaisella vektorilla yhdellä käskyllä.[1][2]

Vektoriyksiköt ovat tyypillisesti SIMD käskykantoja, mutta myös MIMD tyyppisiä käskykantoja on käytetty sekä erilaisia yhdistelmiä, joissa tavanomainen suoritin jakaa tehtäviä SIMD-yksiköille (ks. Cell BE[3]).

Käyttökohteet[muokkaa | muokkaa wikitekstiä]

Vektorisuoritin soveltuu käyttökohteisiin jossa data on luontevasti rinnakkaista.[4]

SIMD-tyyppisessä suorituksessa sama komento suoritetaan jokaiselle elementille:

  • RGB-väriarvon muuttamiseksi voidaan lisätä jokaiseen komponenttiin (R, G, B) sama arvo. Pseudokoodilla: ADD 1, r0, r1, r2 , jossa arvo 1 lisättään rekisterien r0-r2 arvoihin.
  • Verteksin sijainnin tai asennon muuttamiseksi voidaan koordinaatit kertoa samalla arvolla. Pseudokoodilla: MUL 0.2, r0, r1, r2 , jossa arvolla 0.2 kerrotaan rekisterien r0-r2 arvot.

Vektorisuorittimen etu voi esiintyä myös kahden lukusarjan käsittelyssä rinnakkain:[3]

__vector signed int va1[] = { 1, 2, 3, 4}, va2[] = { 5, 6, 7, 8 };
__vector signed int vb = vec_add(va1, va2);

Tavanomaisessa käskykannassa on kaksi operandia kerrallaan: ADD 1, r0 Tavanomaisella käskykannalla on siis suoritettava kolme erillistä komentoa kolmen operaation suorittamiseksi, joka SIMD-käskykannalla voidaan suorittaa yhdellä komennolla. Mikäli SIMD-komento vie yhden kellojakson nopeusero voi olla kolminkertainen tavanomaiseen verrattuna.

Toteutuksesta riippuen SIMD-komento voi vähentää myös muistista latausta ja talletusta (load and store), jolloin nopeutus voi olla nelinkertainen (16 komentoa -> 4 komentoa) skalaariseen verrattuna.[5]

Useissa tapauksissa suorittimen vektorirekisterit ja käskykanta tukevat käsittelyä erikokoisina lohkoina. Esimerkiksi 128-bittistä rekisteriä voidaan käyttää joko kahtena 64-bittisenä operandina tai neljänä 32-bittisenä operandina.

Historia[muokkaa | muokkaa wikitekstiä]

Yksi ensimmäisistä vektorisuorittimia käyttävistä tietokoneista oli Illinois’n yliopiston kehittämä ILLIAC IV.[6]

Vektorisuorittimia käyttäneitä tietokoneita:[7][5]

Toteutuksia[muokkaa | muokkaa wikitekstiä]

Esimerkkejä itsenäisistä vektorisuorittimista:

Käskykantalaajennoksia:

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Vector Processors Viitattu 16.2.2017.
  2. Aldakheel, Eman & Chandrasekaran, Ganesh & Prof. Kshemkalyani, Ajay: VECTOR PROCESSORS Viitattu 16.2.2017.
  3. a b Chapter 2 Basics of SIMD Programming Viitattu 18.2.2017.
  4. Mutlu, Onur: Computer Architecture: SIMD/Vector/GPU Viitattu 16.2.2017.
  5. a b Welch, Eric & Evans, James: Vector and SIMD Processors Viitattu 16.2.2017.
  6. ILLIAC IV Viitattu 16.2.2017.
  7. a b Patterson, David A.: Lecture 6: Vector Processing Viitattu 16.2.2017.
  8. Watson, W. J.: The TI ASC-A highly modular and flexible super computer architecture Viitattu 16.2.2017.
  9. 【Fujitsu】 FACOM VP-100 Series IPSJ Computer Museum. Viitattu 16.2.2017.
  10. 【Hitachi】 HITAC S-810 IPSJ Computer Museum. Viitattu 16.2.2017.
  11. 【NEC】 SX-1, SX-2 IPSJ Computer Museum. Viitattu 16.2.2017.
  12. 【Hitachi】 HITAC S-820 IPSJ Computer Museum. Viitattu 16.2.2017.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.