Radeon HD 2900 XT: elkészült, de tényleg!

Stream processzorok és kezelőjük

A legütősebb szám az R600 paraméterei között a 320 stream processzor. A G80-nak csak 128 van, igaz, azok bődületes órajelen mennek. Nagy kérdés, amire korábban nem kaptunk választ, hogy ezt a sok, egymás mellé rakosgatott számolót mi vezérli. Legelőször a Setup Engine felméri, hogy milyen vertex shader, geometry shader és pixel shader feladatok érkeztek, majd továbbítja igényeit a Dispatch Processor felé, mely eldönti, hogy a rendelkezésre álló általános shaderek közül melyek és milyen sorrendben dolgozzanak vertexeken, geometrián és pixeleken. Mindemellett azt is irányítja, hogy a külön tömbben csoportosuló textúra-mintavételezők elküldjék a shadereknek a munkájukhoz szükséges textúraadatokat.

Az R600 stream processzorai négy darab 80-as SIMD (single instruction multiple data – egy utasítás végrehajtása több adaton) tömbbe csoportosulnak, melyeket két-két programszállal tud megkínálni a karmester (Arbiter). A szálak futása felfüggeszthető, ha egy magasabb prioritású érkezik, majd folytatható; nem vesznek el a részleges adatok. Ezt a felfüggesztést használják akkor is, ha egy hibás cache húzás miatt az éppen futó szál nem kapja meg idejében a textúra adatait, így a számolók soha nem tétlenkednek.

A G80 esetében 128 darab teljesen független stream processzorról volt szó, amin kicsit meg is lepődtünk, hiszen korábban mindig valamilyen több (jellemzően négy) komponenses vektor- és egy skalárszámolóról volt szó, melyeket esetleg ciklusvezérlő egészített ki. A vektoros rész komponensei általában 3–1, majd 2–2 felállásban két műveleten is dolgozhattak. Az R600-ban is kombinált számolók vannak. Egy tömbben öt aritmetikai és egy ciklusvezérlő egység csoportosul. Az aritmetikai egységek közül négy egyszerű – csupán MAD (a=b*c+d) műveletre képes –, egy pedig összetett (AMD terminológiával transzcendens) műveletekkel (pl. szögfüggvények, logaritmus, hatványozás) is boldogul. Természetesen a számolás 32 bites lebegőpontos precizitással folyik.

A G80 számolóiról csak annyit tudunk, hogy egyszerre el tudnak végezni egy MAD és egy MUL (a=b*c) utasítást, ami a GeForce 8800 GTX 1350 MHz-es órajelével és 128 számolójával 520 gigaFLOPS-os elvi maximális teljesítményt jelent. Ebből valószínűleg le kell még számolni valamennyit a ciklusvezérlés miatt, ugyanis arra nincs dedikált hardver. További lassulást okozhatnak a komplex utasítások, melyeket több MAD és MUL vegyítésével létrehozott makrók végeznek el. Az R600 összesen 320 számolója jelenleg 740 MHz-en ketyeg, és minden ütemben egy MAD-ot tud csinálni, tehát elvi végsebessége 475 gigaFLOPS környékén van, amiből nem kell levenni a ciklusvezérlést, ugyanis azt külön egységek végzik. Nagy kérdés, hogy a komplex utasítások hány ütemet vesznek igénybe. Valószínűtlen, hogy egy hatványozás vagy szögfüggvény kiszámolása lefut egy órajelciklus alatt. A komplex utasítások arányának növekedése is lassuláshoz vezethet. Azt sem tudjuk, hogy a G80 komplex makrói milyen gyorsak.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés