Zseniális lesz az ARM új SIMD kiterjesztése

A vállalat hardveresen oldja meg az aktuális SIMD utasításarchitektúrák legnagyobb gondját.

Az év közepe óta lehet sejteni, hogy az ARM a Hot Chips alkalmával valami nagy dolgot leplez le. Erről a Fujitsu Post K projekt bejelentése után indultak meg a pletykák, és az erre vonatkozó hírben azt is leírtuk, hogy egy SIMD kiterjesztésről van szó, de akkor konkrét adat még nem volt róla. Most azonban ez megváltozott, és a fejlesztés elképesztően zseniálisnak tűnik, ugyanis pont azon a ponton újít az ARM, ami az aktuális SIMD utasításarchitektúrák gyengéje.

Az SVE, azaz Scalable Vector Extension névre keresztelt kiegészítés az ARMv8-A architektúrához kötődik, de az ARM erre egyelőre nem épít konkrétan licencelhető magot. Ennek az oka, hogy a cég felmérése szerint az SVE leginkább azokat a megrendelőket érdekli, akik eleve saját magot terveznek, tehát egy licencelhető magra kevés igény mutatkozik. Az SVE egyébként skálázható lesz, így 128-2048 bites vektormotorok építhetők a magon belülre, ráadásul 128 bites lépcsőkben lehet haladni, vagyis igazán tág lesz a rendszer tervezhetősége, ami a HPC-piacon rendkívül fontos.

Hirdetés

A skálázhatóság azonban egy olyan terület, amivel ez az ipar folyamatosan küzd, és a mai processzorok által használt SIMD utasításarchitektúrák legnagyobb problémája pont a használhatóságuk. Minden ilyen SIMD kiterjesztésen valamilyen hosszúságú vektorműveletek futtatása zajlik, és minél hosszabb vektorokra van szükség, annál nehézkesebb optimalizálni rá, hiszen a fordítóprogram nem biztos, hogy tökéletes vektorokat készít a forráskódból. A legrosszabb esetben akár assembly szintű optimalizálásra is szükség lehet, továbbá az egyes verziókhoz újra kell fordítani a programot. Ez a modern PC-s processzorokkal egy nagyon tipikus probléma. Hiába létezik ma olyan mag, amelybe fizikailag 512 bites SIMD motor van beépítve, ha ahhoz nem érhető el a kihasználást lehetővé tevő utasításkészlet, vagy maga a program nem tud vele mit kezdeni. A korábbi SIMD utasításkészleteken pedig ennek a SIMD motornak legjobb esetben is a fele vagy negyede fogható be, tehát rengeteg tranzisztor csak benne áll a hardverben, sajnos kihasználatlanul. Végeredményben azonban egy megfelelően megírt kód mellett még így is nagyon jó lehet a SIMD kiterjesztések hatásfoka, és emiatt használják a HPC-piacon.

Az ARM szerint azonban nem kell eltűrni azt a sok kellemetlenséget, amit a mai CPU-k SIMD utasításarchitektúrái okoznak. Többek között jó példaként szolgálnak a modern GPGPU-k, amelyek ugyanúgy SIMD motorokat használnak hardveres szinten, de egyáltalán nem küzdenek azokkal a problémákkal, amelyekkel a CPU-k SIMD kiterjesztései. Szimplán a fordító segítségével tökéletes a SIMD motorok kihasználása, és semmiféle kézi finomhangolásra nincs szükség az alacsonyabb szintű kódokban. Persze a GPGPU-k más területen ütköznek limitekbe, de a vizsgált problémát tekintve ez irreleváns, a lényeg az, hogy lehet másképp is csinálni.

Az ARM SVE ötletszinten lényegében a GPGPU-któl lop. Az egész rendszer eltünteti a programozók elől a vektormotorok hosszát. Van a hardverben valamilyen vektormotor, aminek a szélessége lehet 128 és 2048 bit közötti, és az ARM szerint ennél több információ nem is kell a programozóknak. A megfelelő szélességű vektorokat majd előállítja a rendszer, és azokat a hardver skálázódóan futtatni fogja. Ilyen formában az ARM megoldotta azt, hogy a lefordított, SVE-t használó program fusson bármilyen 128 bites vektormotort tartalmazó processzoron a 2048 bites vektor tizenhat részre való felbontásával, de ha olyan mag van a hardverben, amely 2048 bites vektormotort használ, akkor azon lefuthat a teljes szélességű, 2048 bites SVE vektor is. Lényegében tökéletes hardveres skálázódást kínál az SVE az adott program újrafordítása, vagy bármiféle kézi finomhangolás szükségessége nélkül.

A konkrét működést az ARM titkolja, de van némi utalás arra, hogy sokkal inkább hasonlít a konstrukció a modern GPGPU-kra, mint az eddigi CPU-s SIMD modellekre. Ezért is lehet az, hogy az SVE egy különálló kiterjesztésként funkcionál, teljesen új A64-es utasításkódolással. Ilyen formában az ARM által kidolgozott autovektorizálás számos tradicionális limitációt kezel, így hatékonyan működik ott is, ahol a konkurens rendszerek már megadják magukat.

Az SVE egyébként nem fogja leváltani az ARM Neon utasításkészletet, ugyanis a HPC-s feladatokra és nem a médiatartalmak feldolgozására koncentrál. Utóbbihoz továbbra is a Neon lesz az ideális választás. Ugyanakkor egy magon belül természetesen támogatható a Neon és az SVE is.

  • Kapcsolódó cégek:
  • ARM

Azóta történt

Előzmények

Hirdetés