HSA direktívák

A HSA platformról az alábbi oldalon lehet részletes leírást olvasni, de még nem kerültek szóba az úgynevezett HSA direktívák, melyek tulajdonképpen alapvető irányelvek az adott processzor működésére vonatkozóan. Fontos eleme a HSA-nak, hogy az erre írt alkalmazás gyakorlatilag bármin képes futni, tehát olyan processzorokon is, amelyek egyik direktívának sem felelnek meg, és ehhez még módosítani sem kell a programkódot. Az egyes irányelvek támogatásával azonban egyre hatékonyabban használható ki a lapkában található integrált grafikus vezérlő az általános számítások során, így ez extra teljesítményt hoz, miközben a fogyasztást is csökkenti.

Technikai értelemben, amelyik lapka támogat legalább egy direktívát (mindegy, hogy melyiket) az már kompatibilis a HSA-val. Persze a különböző irányelvek eltérő értékeket hordoznak, így vannak olyan elemek, amelyek extrém mértékben növelik a teljesítményt, de olyanok is, amelyek a funkcionális működést javítják. Ha egy termék az összes direktívát támogatja, akkor teljes HSA-kompatibilitást kínál, vagyis azon fog futni a legjobban az adott program. A működést tekintve, minden egyes alkalmazásnak ugyanazt az eredményt kell nyújtania az összes, akár egyetlen HSA direktívát sem támogató hardveren, beleértve azokat a cégeket, amelyek nem részei a HSA alapítványnak. A HSA-val úgymond nem kompatibilis a hardvereken az úgynevezett legacy mód fog futni, vagyis a processzormagok gondoskodnak a számításokról. Természetesen a futtatási környezet automatikusan hasznosítja az adott hardverben elérhető legmodernebb utasításkészleteket is.

A HSA direktívák sorba szedtük, így némi magyarázattal tálaljuk, hogy mi mire jó:

GPU C++ Compute: A hardver támogatja a Microsoft C++ AMP felületét, illetve az OpenCL támogatáshoz tartozik statikus C++ kernel nyelv kiegészítés. Ezek alapvetően egyszerűbb programozást biztosítanak a fejlesztőknek az integrált grafikus vezérlő hasznosítása során.

Felhasználói módú ütemezés: Lehetővé teszi, hogy a programozó direkten elérje az integrált grafikus processzor erőforrásait, így a program futtatásához az operációs rendszer kernel driverének nem szükséges lefordítania a parancscsomagokat az adott hardver által támogatott specifikus formátumra. A HSA alapítvány tagja ennek érdekében egy előre specifikált csomagformátumot használnak, amit a hardvereknek egységesen támogatni kell a direktíva működéséhez.

Egységes címtér a CPU és a GPU között: A lapkában található processzormagok és az integrált grafikus vezérlő ugyanazokat a pointereket használja, így egységes képet látnak a memóriáról, aminek hála nem szükséges az adatok másolgatása két elkülönített memóriaterület között.

Egységes virtuális memória a CPU és a GPU között: A lapkában integrált grafikus vezérlő teljes hozzáférést kap a virtuális memóriához és kezeli a laphibákat.

Teljesen koherensen megosztott memória a CPU és a GPU között: Lehetővé teszi, hogy a processzormagok és az integrált grafikus vezérlő által használt gyorsítótárak ugyanazokat az adatokat töltsék be, és az adatokon végzett számításokat akár meg is tudják osztani egymással egy belső buszon keresztül.

GPU compute kontextusváltás: A GPU feladatai között gyorsan lehet váltani, ami hatékony multitaszk feldolgozást eredményez. Ennek megfelelően több, egymással párhuzamosan futó, egyazon grafikus vezérlőt terhelő alkalmazás sokkal jobb sebességet érhet el.

GPU grafika preempció: A GPU általános számítási kapacitását kihasználó alkalmazások számának növekedésével szükségessé válik, hogy a kritikus fontosságú feladatok előnyt élvezzenek. Ennek megfelelően a grafikus vezérlőnek támogatnia kell az egyes feladatok futtatásának ideiglenes megszakítását annak érdekében, hogy más feladat – kiemelve a grafikával kapcsolatos munkákat – gyorsan elérhesse és teljes egészében felhasználhassa szükséges erőforrásokat.

QoS (Quality of Service): A kontextusváltás és a preempció mellett lényeges tényezővé válik ezek hatékony kezelése nem csak egy, hanem több felhasználós környezetben is. A QoS alapvetően ezt kínálja.

Mivel a HSA az integrációhoz készült, így a grafikus vezérlőnek integráltnak kell lennie, vagyis a processzormagokkal közös lapkára kell helyezni.

Hirdetés