Sosem értettem azt a hozzáállást, miszerint a mérnökök által ezerszer átrágott, pro és kontra érvek százait figyelembevevő tervek negatív, "nem elég" vagy akár "semmire sem való" felhangokkal átitatott fórumhozzászólásokban végzik. Pedig megfordítva egy semmilyennek látszó mikroarch-ról is lehet olyan cikket írni, ami után az embernek must-have érzése támad.
Nyilván mindegyik cég a nyereséget hajszolja (itt ebben az esetben pl. az is mérlegelendő, hogy egy CPU-ba és a GPU mellé is építeni egy-egy PCI-Express interface-t mekkora lapkahelyet foglal, míg összetenni őket és a GPU-nak is adni egypár - ezen a képen pár pixel méretű - TLB-t a virtuális címfordításhoz mennyivel kevesebb gyártási költség), vagy azt nézni, hogy a Wheel of Reincarnation is ezt a célt szolgálja (a memóriavezérlő + DMA vagy az I/O CPU-ba költöztetése is elsősorban költségcsökkentés, másodlagos hatása csak a csökkentő latency; lásd Atom).
Ez a cikk csak megerősített abban, hogy itt nem arról van már szó, hogy a GPU beköltözik a CPU-ba: sokkal inkább arról, hogy a CPU-k - mint kisebb jelentőségű egységek - beköltöznek a GPU-ba. Különben mi a francot keresne egy erős integer-feldolgozás benne a GPU-ban? "Ez maximum három integer, egy memória és két dupla pontosságú lebegőpontos operációt jelent egyetlen részelemen. Ezenkívül az utasításarchitektúra támogatja a részleges utasításszavak párhuzamos végrehajtását, vagyis az előbb vázolt lehetőség mellett négy szimpla és két dupla pontosságú lebegőpontos operáció végrehajtása is lehetséges."
A Bulldozer is elindult ezen az úton, csökken a különálló CPU-magok végrehajtási képessége a korábbiakkal összevetve, míg a GCN esetén "A fentebb már említett skalárfeldolgozó némileg különc a CU-n belül. Ez lényegében egy integer ALU, mely 8 kB-os dedikált regiszterterületet kapott."
Tegyük hozzá ezt:
Two consecutive SGPRS's can be combined to store a single double precision work of 64 bits.
A fully functional “scalar unit” with independent arbitration and decode
– One scalar ALU or scalar memory read instruction processed per cycle
– 32/64 bit Integer ALU with memory read support
– 512 SGPR per SIMD shared between waves, {SGPRn+1, SGPR} pair provide 64 bit register
Scalar Data Cache 16 KB –64B lines, 4 Way Assoc, LRU replacement policy
– Peak Bandwidth per CU is 16 bytes/cycle
Scalar ALU instructions
– 32-bit arithmetic integer ops
Basic signed/unsigned integer arithmetic
Support for extended wide integer arithmetic
Compare (integer, bit, min/max), move and conditional move (select operations based on SCC)
– Rich set of 32b/64b bit-wise, bit-field, and bit manipulation ops
– Constants Operands
32b literals and float or integer hardware constants
– Scalar Condition Code (SCC) register
Read-Only data from memory via Scalar Data L1 Cache
– Read 1, 2, 4, 8 or 16 dwords from data cache into adjacent SGPRs
– Use either simple 64-bit address or resource constant
– Takes either an immediate offset or offset from SGPR
Special Ops
– Read 64b hardware Time Counter
– Invalidate Scalar R/O L1 data cache
Mi ez, ha nem egy user-space műveletvégző mai, 64 bites integer és 32/64 bites nem-SIMD (pl. x87) CPU - továbbfejlesztett - leképezése? Ugyan nincs ring0...ring3 megkülönböztetés, nincs megszakításkezelés, System Management Mode, és egyéb exotikus dolgok sincsenek (azaz a kernel mode-ok hiányoznak, ez majdan is a CPU-magok feladata), csak számítási kapacitás.
Ez az egész valóban fájdalmas lenne programozói szempontból, ha nem lennének alattuk (már most vagy hamarosan) virtuális ISA-k a programoknak: a CUDA már most beépült (szó szerint) a fordítókba, az FSA is hamarosan be fog (mondjuk amit megjelenik, nem csak ígéret lesz). Utána csak az lesz a lényeg, hogy mivel lesz lefordítva a megírt program.
[ Módosította: daa-raa ]
Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies