POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 5703|回复: 36
打印 上一主题 下一主题

PCWatch --以完全相反的方法論來對決的ATI與NVIDIA

[复制链接]
跳转到指定楼层
1#
发表于 2006-7-30 16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
http://pc.watch.impress.co.jp/docs/2006/0727/kaigai291.htm
以完全相反的方法論來對決的ATI與NVIDIA。

本篇提到,G80的狀況"可能是80nm或90nm、並且很確實地是VS/PS分離設計"。
相反地R600當然就是ATI宣傳很久的US結構....也就是說,和NV30/R300時剛好相反,
這回ATI的位置剛好是NVIDIA當時站的位置、採取全新的結構與新的製程,負擔主要的風險。

G80有主要幾個改進:
(1)Common Shader Model
(2)Geometry Shader
(3)Stream out
(4)Orthogonalized Frame Buffer

G80做了既有管線的功能擴充、以primitive processing為基礎的GS、增設在Geometry pipeline上的Steam Out等等。
組態的部份因為情報混亂的關係還尚未明瞭,但是PS應該在24~32之間,而VS也有大幅的增設。
雖然沒什麼確切的支持,但是至少這是合理的。
增設VS的理由部分,過去因為主要都限制在CPU - FSB - Host bus等部分的頻寬、以及CPU的horse power的限制關係,沒有過大的必要;但是當GS內建於GPU之內後,VS就有可能大幅增加工作的關係,所以必須要作相關的對策。

G80做了這些增設之後,目前看來電晶體部分的需求應該不會大幅成長,die size應該也不會大幅成長,所以80nm甚至90nm也可以適當地處理,簡單講就是走在安全區的戰略。

ATI就不必提了,有趣的是本文提到S3的Destination1/2是US結構。
因為長期的宣傳表現的自信,後藤認為,NVIDIA提到的US在實作上的問題,
ATI應該是已經解決了,所以ATI在US上應該會進步比較快。
不過反過來說,NVIDIA所提的US問題,大多與效能/成本有關;
但是R600至少看來成本已經幾乎保證比G80要高....
我是認為從這個角度看,顯然ATI的表現已經不能算"解決問題了"啦。

而因為為了處理這個成本問題,R600有很大的可能使用65nm。
否則的話,面對的自然會是比已經超級大的R580還要大上一圈的超級怪獸。


GPU die size整理圖。

此外,ATI的Dave Orton認為65nm的實用化會比較快,因為手機晶片組採用65nm的速度較快,
65nm並不如想像中地沒有實證;而且65nm也因為發展上有受到手機晶片組需求的控制,
在電力耗用上進步較快。
此外,NVIDIA已經對OEM廠商表示,G80的TDP max為175w,
所以再怎麼說至少G80還是比G71吃電。B)

於是問題來了:
NVIDIA在未來會採用US也是非常明顯的,但是基本上還不需要急,先推出可以對應DX10的GPU應該相當重要。
ATI已經透過C1來推行US之故,至少不能再delay太多。
而ATI的部份,反正就是用力衝了。:shifty:
到底哪個方向才是正確的,等市場告訴我們就可以了;但是一個很確實的部份是,如果要和CPU結合的話,ATI的結構比較適當。
来不及思考 该用户已被删除
2#
发表于 2006-7-30 16:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

RacingPHT 该用户已被删除
3#
发表于 2006-7-30 16:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

4#
发表于 2006-7-30 17:06 | 只看该作者
原帖由 来不及思考 于 2006-7-30 16:41 发表
G80非US,确定?
现在各种不同的甚至相互矛盾的消息多如牛毛 :wacko:


吊胃口的呢
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2006-7-30 22:33 | 只看该作者

回复 #2 来不及思考 的帖子

G80非US原文如此。
我這篇翻得有點簡略。

[ 本帖最后由 Eji 于 2006-7-30 22:36 编辑 ]
回复 支持 反对

使用道具 举报

6#
发表于 2006-7-31 20:51 | 只看该作者
以完全相反的方法論來對決的ATI與NVIDIA

文章看完了,唯一没看懂的是标题:huh:
回复 支持 反对

使用道具 举报

7#
发表于 2006-8-1 15:23 | 只看该作者
和CPU结合也早着呢……我不认为R600有十足的把握砍死G80。
不是说R600不用65nm改用80nm了么。
回复 支持 反对

使用道具 举报

8#
发表于 2006-8-1 21:05 | 只看该作者
不懂日文,在google帮助下看了一下原文,算了解了大概。对于楼主的一些总结谈一些看法:
G80有主要幾個改進:
(1)Common Shader Model
(2)Geometry Shader
(3)Stream out
(4)Orthogonalized Frame Buffer
其中(2)和(3)是DX10的“硬指标”,如果不支持就意味着不支持DX10,因此G80加入是理所当然的事情。至于(1)到底是什么概念,没看懂,不过看原文举了一个例子:frame buffer management is modified to flat(google的翻译,呵呵)。看上去似乎就是一些通用化的设计。由于DX10(或者说是WGF2.0)非常强调GPU的通用性,并且在runtime层以及操作系统层都对此作出了很大的改进,”没收“了很多原本属于驱动管理的东西,比如GPU的内存管理,因此GPU必须对此作出一些硬件上的调整。比如为了支持类似内存分页(你可以认为就是GPU也将开始支持虚拟内存了。)的新特性,必须加入一些类似CPU的TLB之类的东西,估计这个(1)就是这个意思,其实也是DX10的硬指标。因此前3点都没有太多新意,凡是支持DX10的硬件都必须支持,不是NV的独家新闻。
至于(4)听上去很有意思,正交frame buffer?是什么概念,呵呵,很想知道。
至于US,DX10的spec(是spec,不是sdk)上没有硬性规定,因此就算NV真的不是US也没什么好惊讶,顺便说一句,S3的D1/2肯定是US,呵呵。至于US如何调度,相信各家会有各家的方案,但是完全可以做到不像R500那样必须固定某一比例的调度。
至于VS为什么要增加,我没有看懂。文中列举了很多原来VS不用很多的理由,比如CPU - FSB - Host bus频率等等,很有道理。不过到了DX10这些瓶颈依然不会有所变化,因此增加VS看上去没有什么意义。此外增加了GS的目的之一也是为了减轻VS的负荷和总线传输瓶颈。因为GS可以自定义规则增加primitive的定点数量,你传入3个点组成一个平面,经过GS之后可能已经是6个甚至更多顶点了,因此VS的负荷应该是减轻了,而不是加大了,相反GS肯定会分到很多负荷。不过最终情况还要看游戏开发者的意图,因为GS还有一个特性是可以直接pass掉,就仿佛它不存在,那就回到了vs/ps的时代。有人说NV可能是vs/gs公用,那未尝不是一种很好的选择,二者本来就非常相似,此外也可以随着应用程序的需要而动态改变比例。

[ 本帖最后由 vp 于 2006-8-1 21:06 编辑 ]
回复 支持 反对

使用道具 举报

9#
发表于 2006-8-2 13:35 | 只看该作者
原帖由 vp 于 2006-8-1 21:05 发表
不懂日文,在google帮助下看了一下原文,算了解了大概。对于楼主的一些总结谈一些看法:
G80有主要幾個改進:
(1)Common Shader Model
(2)Geometry Shader
(3)Stream out
(4)Orthogonalized Frame Buffer
其 ...


第4个是什么东西?
回复 支持 反对

使用道具 举报

RacingPHT 该用户已被删除
10#
发表于 2006-8-2 17:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

来不及思考 该用户已被删除
11#
发表于 2006-8-2 17:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

12#
发表于 2006-8-4 13:33 | 只看该作者
原帖由 RacingPHT 于 2006-8-2 17:00 发表
Orthogonalized:
"在纯粹的正交设计中,任何操作均无副作用;每一个动作只改变一件事,不会影响其它。"
-- The art of unix programming

其实很好理解, FP16, FP32, MRT的FrameBuffer与MSAA就是例 ...


还是不能理解。
回复 支持 反对

使用道具 举报

13#
 楼主| 发表于 2006-8-6 01:59 | 只看该作者
原帖由 PCINLIFE2006 于 2006-8-4 13:33 发表


还是不能理解。


每個動作不會影響其他、另一個意思就是每個動作都是可逆的。

----
> 如果不支持就意味着不支持DX10,因此G80加入是理所当然的事情。

基本上目前DX10既然取消caps bit,其實代表兩件事情:
1. 少做的話就會被視為不支援DX10
2. 多做的話,DX10反正也看不到,所以實質上不會多做
(或者說,要是"多做了什麼",就會變成"另一份DX10規格",如DX10.1 for R600)

所以,要說"這不是G80的改進、而是DX10的規格"的話,我是覺得不適當;
因為畢竟DX10本來就是MS和其他廠商研討歸納的東西,仍然算是"繪圖工業的改進"。

另外,這代表一件事情:DX10取銷caps bit,代表從低階到高階產品,
只會有效能差異、而不會有功能差異,是故render出來的結果,必然是一樣的。
甚至還包含了廠商之間的不同產品所產生的結果差異也會縮小(不敢說完全相同),
這能夠真正有效地鼓勵廠商使用DX所提供的特殊功能。

[ 本帖最后由 Eji 于 2006-8-6 02:02 编辑 ]
回复 支持 反对

使用道具 举报

14#
 楼主| 发表于 2006-8-6 02:08 | 只看该作者
原帖由 vp 于 2006-8-1 21:05 发表
至于VS为什么要增加,我没有看懂。文中列举了很多原来VS不用很多的理由,比如CPU - FSB - Host bus频率等等,很有道理。不过到了DX10这些瓶颈依然不会有所变化,因此增加VS看上去没有什么意义。此外增加了GS的目的之一也是为了减轻VS的负荷和总线传输瓶颈。因为GS可以自定义规则增加primitive的定点数量,你传入3个点组成一个平面,经过GS之后可能已经是6个甚至更多顶点了,因此VS的负荷应该是减轻了,而不是加大了,相反GS肯定会分到很多负荷。不过最终情况还要看游戏开发者的意图,因为GS还有一个特性是可以直接pass掉,就仿佛它不存在,那就回到了vs/ps的时代。有人说NV可能是vs/gs公用,那未尝不是一种很好的选择,二者本来就非常相似,此外也可以随着应用程序的需要而动态改变比例。


GS的增加為什麼會導因至VS的增設,問題在於GS本身會使得vertex的數量產生增減。

DX9之前因為沒有GS,對VS輸入1個vertex,只會輸出1個vertex。
也就是VS的工作只有加速"一個vertex在空間中的位置改變"這個工作而已;
但是,GS提供了增減頂點的功能(規格中是0~1024個vertex),
所以GS的使用,大部分情況下會增加"需要被處理的vertex數",
而且是與CPU/Host(代表輸入的vertex數)無關的,
所以與過去的GPU相比,理應會需要更多的VS,
以對應GPU的GS生成的vertex數量成長。

所以,既然GS會產生vertex,那當然VS的負荷也會跟著增加,因為這兩者的工作完全是不同的。

為什麼要這樣設計呢?因為這樣一來CPU的效能高低對GPU的影響會越來越小....
而且本來interconnection的成本本來就比chip內部傳輸要來得高,
那自然全部在GPU內處理掉是個合理的作法,只要製程能繼續推的話就能硬塞的意思。:rolleyes:

[ 本帖最后由 Eji 于 2006-8-6 02:13 编辑 ]
回复 支持 反对

使用道具 举报

15#
发表于 2006-8-6 09:22 | 只看该作者
还是不能苟同Eji的意见。
关键在于GS在硬件pipeline中的位置,它存在于vs之后,而不是之前,因此采用GS增加vertex数量的操作是vs操作完成之后,一般不会增加vs的负荷,而对于光栅化单元到的确会增加不少负荷。只有一种情况例外,那就是通过GS的stream out特性将GS输出的vertex回流到VS,才可能出现vs负荷增加的情况。
换个思路,在DX9中就存在所谓的tessellation单元(其实这个单元功能有限,而且除了ATI之外似乎找不到别人支持这个可选特性),其作用就是增加顶点个数(但是功能非常有限),它的位置在DX9中是存在于VS之前的。在DX10中由于GS的出现,tessellation已经取消,但是值得回味的是GS并没有简单的继承了tessellation在渲染流程中的位置,而是被ms放到了vs之后。这说明ms的初衷并不是想通过GS来增加VS的负荷,相反是想让GS减轻VS的负荷。目前的问题在于GS之后设置了stream out特性,导致vertex回流的可能性出现。如果象dx9那样不存在stream out特性,那vs负担加重的说法是100%不成立的。
再看stream out的特性,它使得你直接拿到T&L和vertex blend的结果成为可能。但是拿到这些结果有什么用呢?我不知道。但是如果你不把vs当作图形处理单元看待,而是当作一个通用的矢量计算单元看的话,stream out的特性就非常有意义。由于GS还有一个特性,就是可以直接pass掉,即当作GS不存在,因此通过stream out功能你就直接拿到了vs的结果。你在做物理运算,dxva运算的时候这个特性就显出了它的实用价值。而且由于dx10 spec统一了计算精度为IEEE754单精度标准,因此将shader作为通用矢量计算单元就更为可行。
回复 支持 反对

使用道具 举报

16#
发表于 2006-8-6 15:28 | 只看该作者
GS的存在目的是可以摆脱CPU的限制 增加顶点,改变模型,
但是增加几何和细节的模型是否是直接交给Rasterzier? 如果这个模型还需要进行动作,哪怕是最基本Tranform 也需要stream out回到VS单元去。
如果不能做到这样的互动,那么GS的作为和tessellation又能有多大的区别呢

[ 本帖最后由 ayanamei 于 2006-8-6 15:35 编辑 ]
回复 支持 反对

使用道具 举报

17#
发表于 2006-8-6 15:32 | 只看该作者
原帖由 来不及思考 于 2006-7-30 16:41 发表
G80非US,确定?
现在各种不同的甚至相互矛盾的消息多如牛毛 :wacko:

从上次发的NV50执行流水图来看
我还是认为VS/PS是要分配到不同的执行单元去的
不然不需要这样繁琐的鉴定thread 是VS或是PS
回复 支持 反对

使用道具 举报

18#
发表于 2006-8-6 18:07 | 只看该作者
GS的位置正是位于VS和rasterizer之间,他的输出可以直接送给rasterizer。为什么凡是顶点就必须是没有进行过T&L过?经过T&L,vertex blending等处理的vertex送到GS之后也可以直接变形,光照的结果,纹理坐标都可以通过某些差值得到,由于差值不用一定是线性的(开发者可以任意控制),就可以保证在GS中增加出来的vertex也可以认为已经是经过T&L的结果了。
GS和tessellation完全不同,tessellation只提供了个位数的顶点生成方法,比如ATI那种在CS里让人变得圆滑和胖胖的感觉就是tessellation的一种。而GS提供的是通用方法,利用GS单元,你可以做出任意的vertex变化。
如果GS出来的vertex必须再来VS做T&L,那么我还是要问为什么不直接把GS放到VS前面去,而是象目前这样放到了VS和rasterizer之间?
ayanamei认为频繁判断是VS还是PS正是说明了NV不是US,这个观点是不正确的。虽然我不知道NV50是什么,但是据我所知的某个US结构也需要判断送来的thread究竟是VS还是PS。因为有几个原因:首先硬件会根据不同的shader做出不同的prefech动作,显然对于VS和PS来说这种prefech是完全不同的,你不判断怎么知道去prefech什么东西?此外硬件上的限制也会导致即使是US也不可能任意执行VS/GS/PS。当前都是以所谓的EU来封装VS/GS/PS的,每个EU中会有4个shader管线,但是一般来说即使是US也不可能让这4个shader可以同时做出不同的shader动作,一般都是把一个EU或者一个EU的一半作为基本单元来进行shader的调度。这样有利于节省gate count。
回复 支持 反对

使用道具 举报

19#
发表于 2006-8-6 18:22 | 只看该作者
原帖由 vp 于 2006-8-6 18:07 发表
GS的位置正是位于VS和rasterizer之间,他的输出可以直接送给rasterizer。为什么凡是顶点就必须是没有进行过T&L过?经过T&L,vertex blending等处理的vertex送到GS之后也可以直接变形,光照的结果,纹理坐 ...

我的意思是说  GS之后的数据未必直接给 rasterizer,也可能重复丢给VS这样复杂的动作,从而加重VS负怠#应该不会是死板的VS-GS-PS  
至于认为NV50 不是US,上面的知识比较直观的感觉,其实细节也不是很清楚:whistling:
回复 支持 反对

使用道具 举报

20#
发表于 2006-8-7 13:28 | 只看该作者
原帖由 ayanamei 于 2006-8-6 18:22 发表

我的意思是说  GS之后的数据未必直接给 rasterizer,也可能重复丢给VS这样复杂的动作,从而加重VS负怠#应该不会是死板的VS-GS-PS  
至于认为NV50 不是US,上面的知识比较直观的感觉,其实细节也不是很清楚:whis ...


NV50肯定不是US吗?

[ 本帖最后由 gzeasy2006 于 2006-8-7 19:16 编辑 ]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-11-25 12:17

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表