Vektoros processzor

A vektorprocesszor  olyan processzor , amelyben egyes utasítások operandusai adatvektor- tömbökbe rendezhetők . Eltér a skalár processzoroktól , amelyek egyszerre csak egy operanduson működnek. A processzorok túlnyomó többsége skaláris vagy ahhoz közeli. A vektorprocesszorok gyakoriak voltak a tudományos számítástechnikában, ahol az 1980-as évektől az 1990-es évekig ezek képezték a legtöbb szuperszámítógép alapját. A teljesítmény drámai növekedése és az új processzorok aktív fejlesztése azonban a vektorprocesszorok kiszorulásához vezetett a mindennapi processzorok köréből .

A legtöbb modern mikroprocesszornak van vektorkiterjesztése (lásd SSE ). Ezenkívül a modern videokártyák és fizikai gyorsítók vektortárs processzorokként is felfoghatók .

A mű illusztrációja

A vektor és a skalárprocesszor közötti különbség szemléltetésére vegyünk egy egyszerű példát két 10 számból álló halmaz páronkénti összeadására. A "normál" programozás során egy hurkot használnak , amely számpárokat vesz fel egymás után, és összeadja őket:

ismételje meg a ciklust 10-szer olvassa el a következő utasítást és dekódolja megkapja az első ciklust megkapja a második kifejezést hajtogatni mentse el az eredményt ciklus vége

A vektorprocesszor esetében az algoritmus jelentősen eltérő lesz:

olvassa el a következő utasítást és dekódolja kapja meg az első 10 kifejezést kap 10 másodperces feltételeket hajtogatni mentse el az eredményt

A Cray -implementáció kibővítette a számítási lehetőségeket azáltal, hogy lehetővé tette több különböző művelet egyidejű végrehajtását. Vegyük például azt a kódot, amely 2 számkészletet ad össze és megszoroz egy harmaddal, a Cray esetében ezek a műveletek a következőképpen történnének:

olvassa el a következő utasítást és dekódolja kap 10 számot kap 10 számot kap 10 számot összeadjuk és szorozzuk őket mentse el az eredményt

Így a matematikai műveletek sokkal gyorsabban hajthatók végre, a fő korlátozó tényező az adatok memóriából való előhívásához szükséges idő.

Programozás heterogén számítási architektúrákhoz

Különféle gépeket terveztek hagyományos és vektorprocesszorokkal is, mint például a Fujitsu AP1000 és AP3000. Az ilyen heterogén gépekre való programozás nehézkes lehet, mivel a különböző processzorok jellemzőit legjobban kihasználó programok fejlesztése megnöveli a programozó terheit. Ez megnöveli a kód összetettségét és csökkenti a hordozhatóságát , mivel az egyes processzorokhoz szükséges kódszakaszok a programban átlapolva lesznek [1] . Problémás lehet az alkalmazások munkaterhelésének kiegyensúlyozása a processzorok között, különös tekintettel arra, hogy általában eltérő teljesítményjellemzőkkel rendelkeznek. Különféle elvi modellek léteznek ennek a problémának a kezelésére, mint például a koordinációs nyelv és a programozási építőelemek ( könyvtárak és/vagy magasabb rendű függvények ) használata. Minden egyes blokknak különböző natív megvalósításai lehetnek minden processzortípushoz. A programozó egyszerűen ezt az absztrakciót használja, és az intelligens fordító a kontextus alapján kiválasztja a legjobb megvalósítást [2] .

Lásd még

Jegyzetek

  1. Kunzman, D.M.; Kale, LV (2011), Programing Heterogeneous Systems , 2011 IEEE International Symposium on Parallel and Distributed Processing Workshops and Distributed Processing Workshops and Phd Forum , p. 2061, ISBN 978-1-61284-425-1 
  2. John Darlinton, Moustafa Ghanem, Yike Guo, Hing Wing To (1996), Guided Resource Organisation in Heterogeneous Parallel Computing , Journal of High Performance Computing 4. kötet (1): 13–23 , < http://citeseerx.ist. psu.edu/viewdoc/summary?doi=10.1.1.37.4309 > Archiválva : 2013. június 8. a Wayback Machine -nél 

Linkek