|
|
看半天我这个外行都看懂了
增加shader单元可以吃更多指令,增加shader频率也可以吃更多指令;前提是thread管理部分增加晶体管提高指令吞吐量。
所以问题就是增加shader单元,thread部分一样也要加强,不过相对4D+1D,16管线1组的r600来说这个代价很小,增加1组thread资源可以带动16(x5D)个shader单元。
而g80的1d scalar需要的thread资源非常变态(16x1D)。对于g80构架来说,增加shader单元本身的晶体管不算什么(运算单元占晶体管份额空前小),但连带的控制单元代价太高了。为了弥补这个成本——极大提升shader频率是一个办法;继续增加额外的1d scalar单元是另外1个。哪个节省晶体管资源呢?答案很明显——频率提升不需要增加晶体管。
所以,并不是shader频率提升导致thread资源增加,而是thread资源太丰富导致需要靠增加频率的办法去提高效率,g80的128X1d scalar及相应的thread部分的晶体管规模已经是极限。
如果amd如果极大地改进了thread性能,也完全可以提升shader频率。同样管理16管线的构架,拿到rv770上去改1改,管4条管线,shader频率就可以提升4倍。
==
无论如何,增加频率都是成本最低的方式。在工艺允许的条件下,尽量提升频率是人人都要去做的。运算单元的频率提升比控制单元容易,这个在cpu上早几百年就得到印证了,nv不过拿过来用在gpu上而已。amd如果不这么干才是傻子。别的不说,如果可能的话,r670的shader砍1半,频率提升2.5倍,别的资源不变,性能恐怕是不降反升——当然实际上这么做还有大量优化要搞,例如5D shader的co-issue问题。但至少这么干在运算资源上,在理论的峰值性能上是肯定提升的。 |
|