Hirdetés

A Transmeta örökségére épül az NVIDIA Denver processzormagja

Az NVIDIA az idei Hot Chips rendezvényen először beszélt a Denver kódnevű projekt során fejlesztett processzormag működéséről, mely igen érdekesnek tűnik. A mára szimplán Denver magnak nevezett fejlesztés a Transmeta code morphing nevű technikáját alakítja át, illetve vezeti be újra. Mint ismeretes a Transmeta eredeti koncepciója egy olyan technika volt, ami hatékonyan képes futtatni x86-ra fordított kódot egy hardver szintjén nem kompatibilis VLIW processzoron, amiben volt egy hardveres fordítómotor is. Ez akkoriban nem teljesen vált be, így maga az elv is odaveszett, de az NVIDIA újra elővette és kigyomlálta a működéssel kapcsolatos problémáit.

A Denver processzormag
A Denver processzormag

A félreértés elkerülése érdekében a Denver magok nem a Transmeta code morphing technikáját alkalmazzák, hanem annak csupán a jó ötleteit, mert tény, hogy az eredeti elképzelés távolról sem volt rossz. A Denver mag viszont ízig-vérig ARMv8 utasításarchitektúrát implementáló hardver, tehát az ARMv8-ra lefordított kódot natívan is képes futtatni. A dinamikus kódoptimalizáció csupán egy alternatív megoldás arra, hogy ne kelljen az utasítások sorrendtől független végrehajtásáért felelős out of order logikát hardveresen implementálni. A Denver mag ugyanis technikai értelemben egy in order elvű megoldás, ami az utasításokat szigorúan a beérkezésük sorrendjében dolgozná fel, de a dinamikus kódoptimalizáció szoftveres szinten segít a hatékony működésen.

A Denver mag a futtatási időben dekódolja a beérkező utasításokat, amelyeket egyrészt elkezd végrehajtani, másrészt a dekódolásról alapvető információkat ment ki egy operációs rendszer szintje alatt futó szoftveres optimalizálási rétegnek. Ez az NVIDIA szimplán optimalizálónak hívja, és tartozik hozzá egy 128 MB-os gyorsítótár, amelyet a processzor a rendszermemóriából csíp le. Ide semmi más nem írhat csak az úgynevezett optimalizáló. Utóbbi az alkalmazás működését figyelve, a leggyakrabban futtatott kódrészletekre vonatkozóan kialakítja az optimalizált mikrokódokat, amelyeket elment az előbb említett memóriaterületbe. Amikor a program futtatásakor egy olyan kódrészlet következne, melyre már van optimalizált mikrokód, akkor a hardveres dekódolás nem történik meg, hanem a rendszer beolvassa a már elmentett mikrokódot, és szimplán azt futtatja. Az eredmény out of order logikát használó hardverekhez hasonló teljesítmény anélkül, hogy ezt a részegységet hardveres szinten implementálni kellene. Ráadásul a szoftveres megoldással az utasításablak is sokkal nagyobb lehet, tehát elvben hatékonyabban is etethető a Denver hétutas szuperskalár dizájnja.

A Denver optimalizálójának működése A Denver optimalizálójának működése
A Denver optimalizálójának működése [+]

A dinamikus kódoptimalizáció futtatási időben történik, tehát a program kezdeti szakaszához képest folyamatosan gyorsul a kód. Ez egyrészt abból adódik, hogy az optimalizáló magán a Denver processzoron fut, tehát az elején a valós programkódtól veszi el az erőforrást, másrészt a rendszer az elmentett mikrokódok folyamatos optimalizálásával egyre hatékonyabban lesz kihasználva. A teljes sebesség elérése tehát mindenképp némi időbe kerül, de nem valószínű, hogy átlagos felhasználás mellett ezt érezni lehet majd. Ráadásul az optimalizálóhoz tartozó gyorsítótár az adott gép kikapcsolásáig megőrzi az adatokat, vagyis egy sűrűn használt alkalmazás esetében például másodszori indításra akár ott is lehetnek az optimalizált mikrokódok az erre fenntartott memóriaterületben.


[+]

Az NVIDIA pár tesztet is lefuttatott 2,5 GHz-en üzemelő Denver magokkal. Ezeket a fenti képen lehet látni, de mindegyik mérés szintetikus, így a gyakorlati tesztekre a megjelenésig várni kell. Utóbbi szerencsére nincs olyan messze, hiszen a Tegra K1-nek lesz olyan verziója, amely két Denver magot használ.

Azóta történt

Előzmények

Hirdetés