作者gogoabc (小多爱喝养乐多)
看板VideoCard
标题Re: [请益] 最近的显示卡
时间Fri Oct 12 19:50:59 2007
大家都知道DirectX 8
将3D处理分成Vertex Shader 跟 Pixel Shader (DirectX 9只是增加精度)
一次处理都是四个资料 像Vertex Shader 空间三轴跟单位向量(XYZW)
Pixel Shader 红绿蓝跟透明度 (RGBA)
因为像素跟顶点当作向量处理 所以又称为"向量运算单元" (vector-4)
这是早期 Geforce 4 跟 Radeon 8的做法
但是这就会衍伸出一个问题 如果我要处理一个材质
譬如说从红色变成淡红色 那我RGBA 四个运算单元只要改一个透明度就好了
这样就会造成其他三个运算单元没事干 所以为了提高运算单元的使用率
Vector-4 被拆开成Vector-3 加一个Scalar (1D纯量)
这样一次还是可以送四个资料 但是如果有需要一次送一个资料时也是可以
虽然整体运算总数不变 但是使用效率却提高了
这是Geforce6 Radeon 9 一直到 Geforce 7 Radeon X1000都是
不同的是Geforce 6/7还可以拆成 2D+2D 进一步增加使用率
不论你是3D+1D 2D+2D 都会有运算单元被闲置 在切下去就没有第二条路了
所以DirectX 10 最大的改变 就是把Vertex Shader 跟 Pixel Shader取消
直接变成 Unnifed Shader 管你是3D或4D 全部拆成1D去计算 这样就可以避免
Shader被闲置 但这样就衍伸出需要更复杂的控制单元来监控附载状况
所以在DirectX 10多加了一个 Geomerty Shader (几何运算)
几何运算的单元称为串流处理器(Stream Precessor 简称SP)
R600有320SP G80有128个 数字大并不是就好 因为两个的设计理念完全不同
G80的想法很简单 就是有一个独立的硬体把4D拆成1D
128个SP里有谁闲置就丢进去运算
而R600的状况就比较特殊他是利用VLIW架构64个五路超纯量单元逻辑上拆成
320个1D SP单元再组合成4个SIMD组群
VLIW这个功能是原本用在CPU上做运算指令平行化的技术
这有点像在玩俄罗斯方块 如果本来有1D 2D 3D 4D各一个
透过驱动程式排列後拆成两个5D超长指令串 再送进运算单元(SP)里
资料排列纯粹看驱动程式的写法 必要的时候还可以打散资料再重排
用VLIW来重新排列组合 其实是满冒险的 因为驱动程式的平行化是满费工夫的
由於没有硬体路线 使用率要到达90%是非常难的 不是不可能 是非常难
得要靠驱动程式改版个十几次才有可能达成 G80是靠纯硬体有专门拆散或组合资料
与重组之後平行运算相依性的部分 R600要靠驱动程式 而且得确保不会占太多CPU资源
R600与G80还有个不同之处就是SIMD 无论是R600的超纯量单元与G80的1D纯量单元
都不可能让64个或128个运算单元各自处理不同的指令 这样线路会复杂到爆表
分成组群是必要的 每个组群在单一周期内执行相同的指令 这就是SIMD
R600是320分四组 G80是128分8组 由於是SIMD 同组群只运算相同的资料型态
(像素 几何 或顶点)这样可以简化线路且确保高效能 但对使用率就会有一定的影响
因为相同指令的资料有可能永远塞不满群组 而R600就是在SIMD里在做一次简化
让SIMD组群再拆成五路超纯量单元 G80是SIMD切得更细一点 用复杂的线路来换取
单元使用率
总结一下
R600 G80
Unifed shader 架构 相同
支援DirectX10
360个1D纯量单元 内部为 128个1D运算单元
64个五路超纯量单元
VLIW架构 用驱动程式重组 纯硬体架构
资料
核心时脉742MHZ 1.35GHZ
512位元记忆体介面 384位元
32个材质存取单元 32个
16个材质过滤单元 64个材质过滤单元
R600特性是利用驱动程式来重组资料 这样会比纯硬体的G80成本来的低
效能会随着驱动程式不同而有很大的差距 如果驱动程式写得好的话
R600的效能是可能超越G80
有些人会觉得说为什麽ATI不用像Nvidia那样直观的方法去做显卡
反而要用比较困难的驱动程式来重组资料
ATI的想法很明显 逻辑运算单元其实是不复杂的超纯量单元
而且少了重组指令的硬体线路 由於简单 所以可以大量复制成64个
相当於有320个1D scalar 理论运算值超高 但实际的利用率是取决於驱动程式
的VLIW上 将重排指令的电晶体成本转嫁到软体上 先把硬体做出来 靠简单的设计
快速缩小在65nm的晶片上 压低晶片成本 再利用定期更新驱动程式来提升效能
好处是随着驱动程式更新会有意想不到的惊喜(?) 照理来说若驱动程式写得好
执行1D的效能会是4D的四倍 因为VLIW会想办法填满超纯量单元来增加使用率
NVIDIA的想法是 完全靠硬体排成打散资料 控制单元非常复杂 但可强化128SP
性能 在内部切出许多阶(stage) 缩短每一阶的工作时脉 让运算单元变成核心二倍速
的高时脉 好处是驱动程式的开发成本不高 且65nm後时脉可以拉得更高
ATI跟NVIDIA的目的都是在降低成本 但不同的是一个在软体 一个在硬体
写到这里 可能大家都会看出下一个高阶显示卡的决战点会在"成本"与"使用率"
如何降低成本 提高SP的使用率 是ati跟Nvidia是否的打败对手的关键
R600是设计简单 数量多(320SP) 跑得慢(7XXMHZ)
G80是线路复杂 数量少 (128SP) 跑得快(1.35GHZ)
到底谁优谁劣 其实很难说出来 以未来性来说
R600简化了线路 有助於缩小制成可以塞进更多的SP
而且驱动程式效能应该会设计的越来越好(应该啦)
G80在缩小制成後设计很难像R600那麽简单(因为还要塞进控制单元的电路)
但有立即可得的高效能 未来只能看它们在中低阶产品所做的成本控制了
反正对大家来说 规格多好并不是很重要 要如何做的便宜又效能好 谁就赢了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.126.34.181
1F:推 david31408:顶!!驱动一直是ATI的............ 140.112.1.188 10/12 20:28
2F:推 loALoa:推!! 61.231.133.252 10/12 20:40
3F:推 Demohunter:太专业啦~推一个 61.62.114.85 10/12 20:44
4F:推 ceming:重组资料XD 61.231.232.56 10/12 20:53
5F:推 deani:精辟 59.126.134.34 10/12 20:54
6F:推 com9:原po打到最後都累了XD 122.127.56.43 10/12 21:14
7F:推 playerkilled:同意1f说的,虽说近年来有改进,但.. 125.225.37.2 10/12 21:26
8F:推 kuchibue:专业! 124.10.93.91 10/12 22:01
9F:推 lordmi:1F讲的正是Ati永远的痛,所以..实现不可能? 220.133.61.8 10/12 22:09
10F:推 WishIsland:大家都知道@@? 我不晓得耶? 长知识 219.68.237.210 10/12 22:20
11F:推 needhp:推一个,希望Ati要加油啊 163.24.253.18 10/13 01:19
12F:推 fenix1983:这篇就稍稍看的懂了!学机械的都看懂ㄟ!! 59.112.116.13 10/13 01:30
13F:推 cowbaying:赞 203.68.15.98 10/13 13:12
14F:推 chordee:在vista...ATI driver的技术已经逆转了... 220.132.56.130 10/13 18:00
15F:推 fa18e:我装ATI驱动 都没遇到问题 61.57.128.42 10/13 20:46
16F:推 onlySN:推 163.25.118.131 10/19 11:14
※ 编辑: gogoabc 来自: 118.168.232.182 (05/23 18:26)