Vélemény: perre menő vita a magok számáról

Az elmúlt héten egy érdekes hír került elő, miszerint Tony Dickey beperelte az AMD-t félrevezetés vádjával, ugyanis azt állítja, hogy a Bulldozer architektúrára épülő processzoruk az eredetileg reklámozott 8 mag helyett csak 4 magot tartalmaz. A per hivatalos közleménye egészen perzselő vitákat eredményezett az egész interneten, arra vonatkozóan, hogy kinek van igaza, de egy dologban sokan egyetértenek: Tony Dickey indoka hibás elméleti alapokra építkezik.

A leírás szerint a felperes azt kifogásolja, hogy a Bulldozer architektúrára épülő processzorok bizonyos komponenseket elvesznek a két magtól és ezeket modulként kombinálják. Emiatt ezek a magok már nem tudnak függetlenül működni, és ezért nem tudnak nyolc független utasítást elvégezni, ahogy azt az AMD reklámozza. Ezt a leírást valószínűleg mindenféle technikai rálátást nélkülöző ügyvédek írták, ugyanis az egész alapja hibás.

Elsősorban olyan nincs, hogy valaki elvesz komponenseket a magoktól. Ha hiányoznak az alapvető komponensek, akkor a mag működésképtelen lesz. Ami sokszor történik az iparágban, az a szükséges komponensek megosztása az egyes magok között. Ez ugyanakkor egyáltalán nem egy olyan ötlet, ami a Bulldozer architektúrában volt elsőként látható. Többek között évek óta azon dolgoznak a mérnökök, hogy a hatékonyság növelése érdekében megosszanak bizonyos erőforrásokat, mint például a gyorsítótár. Nyilvánvaló, hogy egy megosztott másodlagos gyorsítótárral rendelkező kétmagos processzor a megosztás miatt nem lesz egymagos, holott a Tony Dickey által benyújtott kereset lényegében erre utal, hiszen az erőforrás megosztása értelmezhető úgy, hogy az egyik magtól elvették a gyorsítótárat. Ez az állítás tehát technikailag hibás, és az aktuális megfogalmazás szerint perceken belül kivégezhető.

A probléma itt kezdődik, ugyanis az egész további magyarázat a fenti hibás állításra épül, de ezt most hagyjuk figyelmen kívül, mivel a további magyarázat is tételesen azonnal megcáfolható. Rögtön kiemelhető az, hogy a Bulldozer modulokban található két, magként jellemzett felosztás mindig egymástól függetlenül működik. Itt valószínűleg a hibás leírás abból ered, hogy az AMD a modulos koncepció lényegét nem éppen technikailag hiteles módon magyarázta el, amire a közérthetőség miatt volt szükség. A működést leegyszerűsítették, így ábrákon keresztül is be lehetett mutatni, ahogy a FlexFP egység, azaz a megosztott lebegőpontos végrehajtó hol valóban megosztott, hol pedig egy maghoz rendelt, a valóságban azonban ez nem így működik. A FlexFP egység fizikailag nem megosztott, hanem a fele az egyik maghoz, míg a másik fele a másik maghoz tartozik.

Az egyetlen kérdéses esetet az AVX utasításkészletet kihasználó programok képzik, amelyből még ma is csak egy maréknyi van, de ez most lényegtelen. 256 bites utasításokkal dolgozó AVX-es kód futtatása esetén az AMD úgy magyarázta el a működést, hogy a FlexFP modul teljesen hozzákapcsolódik egy maghoz, ugyanakkor a hardverben nem ez történik, hanem az, hogy a VEX prefix kódolási sémára építve nem 256 bites, hanem 128 bites vektoroperációk jönnek létre, amelyet maga az AVX teljesen támogat, és az egyik szálon az egyik 128 bites, míg a másik szálon a másik 128 bites operáció lesz elvégezve. Az eredmény igazából ugyanaz, mint a leegyszerűsített magyarázatnál, de a valóságban látható, hogy a modulon belüli két mag ilyen formában is független. Nem mellesleg a FlexFP célja pont az, hogy ha az egyik mag amúgy az erőforrást nem használná, akkor a másik mag azt átvegye, ami fizikailag sosem történik meg a túlegyszerűsített leírásokkal ellentétben, de végeredményben az AMD gyakorlatilag azt érte el, hogy az egyes utasításcsoportok végrehajtása a kétszeresére gyorsuljon a Bulldozer dizájnjával.

A fentiekből látható, hogy nincs olyan körülmény, amikor a Bulldozer architektúrára épülő nyolcmagos processzorok nem viselkednének nyolcmagosként. Legalábbis azzal a leírással, amire Tony Dickey építi a vádat, semmiképpen.

A hírek kapcsán szintén vita alakult ki arról, hogy igazából mi is a mag fogalma, és ezt az egyes gyártóknak talán definiálni kellene. Az igazság az, hogy az AMD-nek hivatalosan van rá definíciója, hogy mit tekintenek magnak, és ez egy whitepaper formájában publikusan el is érhető. Azt persze meg kell jegyezni, hogy ez a definíció folyamatosan bővül, tehát ma már ki van egészítve az egész a HSA-val is, de az alapja így sem változott az elmúlt években. A mai, hivatalos leírás szerint az AMD szemében egy mag olyan HSA-t támogató, tetszőlegesen programozható hardveres blokk, amely képes legalább egy folyamatot futtatni saját kontextusán, illetve virtuális memóriaterületén belül, függetlenül a többi magtól. Az ügy miatt megszereztük az AMD archivált, publikusan már nem elérhető leírását is, amely még a Bulldozer idején hozzáférhető volt. A régi leírás szerint egy mag olyan azonos utasításarchitektúrát használó, tetszőlegesen programozható hardveres blokk, amely képes legalább egy folyamatot futtatni saját kontextusán, illetve virtuális memóriaterületén belül, függetlenül a többi magtól. Nem elhanyagolható, hogy lényegében ez az iparágban elfogadott definíció a magra, amellett, hogy mindenkinek joga van olyan definíciót megfogalmazni, amilyet akar.

Az összes fenti definíció szerint a Bulldozer modul két magnak számít, így a nyolcmagos megjelölés abszolút indokolt. A kérdés az, hogy a per előtt a beadványt átfogalmazzák-e úgy, hogy ne épüljön alapvetően hibás állításokra, emiatt talán érdemes lenne informatikával foglalkozó szakembereket is bevonni, noha talán ez nem ideális, mert szakértői szemmel semmilyen formában nem bizonyítható rá a nyolcmagos Bulldozer processzorra, hogy nincs nyolc magja. Még egy gyakorlatban megírt nyolc és négy szálig skálázódó program esetében is majdnem kétszer gyorsabban fog futni a nyolc szálra írt verzió, ami minden állítást értelmetlenné tesz ebből a szempontból.

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés