Dinamikus optimalizációhoz tervez kiterjesztéseket az AMD, és a fejlesztők véleményét kéri
A szoftverfejlesztést, és közvetetten a szoftverek teljesítményének fokozását megcélzó új hardveres kiterjesztéseken dolgozik az AMD. A program első nyilvános eredményeként a vállalat közzétett egy javaslatot, melynek célja a futásidejű teljesítménymonitorozás és visszacsatolás a szoftverek felé, melyek ezek alapján futás közben alkalmazkodhatnak a hardver állapotához, amennyiben képesek erre. Az előterjesztéssel kapcsolatban az AMD visszajelzéseket is vár.
Light-Weight Profiling
Az AMD Hardware Extensions for Software Parallelism (kb. hardver kiterjesztések szoftveres párhuzamosság számára) kezdeményezésének első gyümölcse a Light-Weight Profiling (LWP) előterjesztés. Az LWP a jövőbeni AMD-chipeket kiterjedt teljesítménymonitorozási eszközökkel vértezné fel, mely a vállalat szerint minimális teljesítményveszteséggel járna. A hardver által kigyűjtött adatok alapján egy dinamikus futású, felügyelt szoftver képes lehet optimalizálni a processzor által végrehajtott kódot. Az AMD szerint ez kifejezetten felügyelt futásidejű környezetek (MRTE-k, például JRE, .NET CLR) valamint nagyteljesítményű alkalmazások, például adatbázisok számára lehet kifejezetten hasznos -- de nem kizárólagosan.
Nem véletlenül ezt a két területet emelte ki a vállalat. Számos analízis világított már rá, hogy a memóriától egyre távolabb kerülő, és egyre több erőforrással rendelkező modern mikroprocesszorok és compilerek számára a legnagyobb problémákat a bájtkódot végrehajtó virtuális gépek és az tranzakcionális adatbázisok futtatása jelenti, ahol az adatok gyorsítótárba való betöltése, az utasítások késleltetéselfedő ütemezése és/vagy az utasításszintű párhuzamosság kinyerése fokozott nehézségeket okoz. Mindezekből az következik, hogy ilyen típusú kódok futtatása során a modern processzorok végrehajtóegységeinek kihasználtsága alacsony, vagy idejük nagy részét a több száz ciklusra lévő memóriára való várakozással töltik.
Az AMD LWP monitorozási és visszacsatolási mechanizmusa kombinálni igyekszik a szoftveres és hardveres (dinamikus) optimalizáció előnyeit -- mintegy összekötve a kettőt. A szoftvereket és compilereket fejlesztők számtalan iterációs ciklus és széleskörű tapasztalat révén képesek ugyan a teljesítménykritikus kódok számára specifikus profilokat alkotni, a hardver futásidejű állapotáról akkor sem rendelkezhetnek egzakt információval a szoftver fejlesztésekor forgatásakor. Az LWP révén a jövőben lehetőség nyílhat a dinamikus profilozásra, mikoris a szoftverkód nem statikusan viselkedik, hanem a processzortól begyűjtött adatok alapján optimalizálja a végrehajtásra kerülő kódot.
Az LWP lehetővé teszi, hogy a felhasználó szintjén futó alkalmazások is begyűjtsék ezeket az információkat, méghozzá driverek nélkül. Ráadásul nem hardveres, hanem a szoftverszálak szintjén fut a mechanizmus, vagyis minden egyes, egymás mellett futó szoftver begyűjtheti saját adatait. Ehhez az operációs rendszer támogatása kell. Az AMD még formálódó felvetése alapján a hardver olyan eseményeket rögzítene, mint a végrehajtott utasítások, végrehajtott elágazások, a cache-missek (a gyorsítótárban nem meglévő adat bekérése) a késleltetések és memóriacímek rögzítésével, az egyes események között eltelt órajelek száma, a memóriahozzáférés más szál általi blokkolása miatt, stb.
Visszajelzésere várva
Az AMD arra kéri a fejlesztőket, hogy adjanak visszajelzést az elképzeléssel kapcsolatban, és akár tegyenek javaslatokat, milyen eszközökre lenne szükségük a szoftverek optimalizációjához. Az LWP előterjesztés itt található (PDF), benne a visszajelzések számára létrehozott e-mail címmel. Az AMD a jövőben további területekkel is foglalkozik majd, így a gyors kontextusváltással és a memóriakezeléssel is. A bejelentés itt olvasható.