|
Edison兄扔的
Experiencing Various Massively Parallel Architectures and Programming
Models for Data-Intensive Applications
這篇文章實在太有趣...從這篇可以看得出來,R600是每個core有16個4D+1DALU、256KB register file、整個GPU有192個wavefront、每個wavefront則剛好是64個thread,整個GPU有12288個 threads。(RV670同R600)
G80的每個SM有24warp、共計16個SM,即384個warp、但每個warp由於只有32個threads,所以總計其實也是12288個thread。
但是在此同時,G80只有512KBtotal的register file,R600/RV670有1MB。
G80每個SM只有32KB register file,每個TPC只有64KB;R600的每個ALU array有256KB。
当然大家仔细看可以看出来:G80的每个SM只有8个1D、每个TPC只有16个1D;R600有16个4D+1D。
所以双方的registerfile规模,几乎就是1Dvs 4D的规模,只是G80的结构因为SIMT的复杂度,所以thread规模可变;R600规模比较大,做得没那么细致,灵活性比较低,但是资源仍然充分。
----
这篇真正的意义在于,GPU绘图用途上,双方其实是几乎同等的:TMU和ALU都是成对分开,变成数个小core,然后以crossbar来和ROP连接。
ROP再以其他的方式(G80是crossbar、R600是ring-bus)來和memorycontroller連接。
問題就在於此了:其實RV670和RV770的關係,正好就是G94與G92的關係。
在G94推出前,光比较RV670和G92就会显得R600结构效率很差,运算密度很低,然后G92的成本很高;G94推出时就会看到G8x的结构比R6x0可以更小些....
RV770推出后则把R6x0的运算密度提高,达到和G92可以对抗的程度。也就是说其实双方的core(TPCvs ALU array)几乎是可以单位上相对比的。
现在的问题就是ATI有没有办法已以现在RV770的方式拿出和GT200可以对抗的产品?
这代表的是10个core (= 16way SIMD ALU array+4way TMU array),与10个core (=TPC = 3x8way SIMT + 8way TMU array)是否对等。
GT200顯示NVIDIA認為8TPC-256bit是適當,所以往上做就是16TPC-512bit(16TPC整合到10TPCx1.5,以縮小crossbar規模)
從RV770可以看得出來,其實TMU和ROP在R6x0裡面也是占較大規模,所以只增加20%就可以達成不刪減registerfile增加一倍的總運算量。
那么,RV770之后谣传会到2000个SP,可能是从10个array变成25个array;但是在此同时TMU的数量也跟着增加到100个,这时候还会是16ROP + 256bit(GDDR5)吗?
要不然的话NVIDIA也可以拿更多TPC来搭配256bit,就可以快速地缩小看起来很巨大的GT200了。
也就是說其實這只是一些coding style、現有application對運算量以及頻寬的平衡觀念而已。
我忽然覺得Larrabee其實機會不小了啊.....XD
那也不過只是把每個TPC or ALU array加上個小小的x86 core而已。
|
|