|
本帖最后由 ic.expert 于 2009-5-24 02:06 编辑
这个说起来恐怕不是一个帖子能解决的,这几个月我正写一篇一万多字的文章来解释这个事情。写出以后来希望楼上等大牛来指正。简单说以下,对于Pixel Processing大致分三个发展阶段。
第一个阶段是Fixed Function时期,这些传统的Graphics Pipeline都是利用Attribute Interpolation出来的Texture Address来Prefetch Texture然后来计算Fragment颜色的。这个过程可以简写为“Texel Addr Generation-〉 Texel Fetch -〉 Fragment Processing “
第二个阶段是SM1/2时期,随着Shader的出现,用户可以在Shader Program内部计算Texel Address并且多次Texel Fetch,由于有限的指令数量,所以甚至Shader Program可以利用静态跳转。这种Pixel Processing Programming Model出现以后,就意味着需要多次LOOP “Texel Addr Generation-〉 Texel Fetch -〉 Fragment Processing”这个过程。这就对硬件复杂度提出了新的要求。
第三个阶段是SM3时期,由于PS内部允许Branch这种Dynamic Control Flow的特性,所以这就需要上述那个Loop的过程是一个动态过程。SM3有个好处在于Subroutine和branch的数量都是有限的。并且Shader Program总的指令数量也是有限(不是Shade动态执行的指令数量阿,是Shader静态包含的指令数量)。所以这种prefetch -based Architecture还可以有效的给与支持!
但是在SM4时代,可以说除了少量的Fixed Function,整个Graphics Pipeline都沦陷了~ 由于MS过于强调灵活性,使得我们很难使用Prefetch -based Architecture来支持SM4。而基于TLP的Shader Unit势在必行,这也就是NV50上那些复杂度和功耗都处于怪兽级别的计算单元的由来……。而Prefetch-based Arch就是Stream Processing思想在Graphics Architecture中的最好的体现之一。
人们就是这样,很多人被一种统制压抑了很久之后,总是迫不及待的投向另一个统制,而不会过多的关心和反思这种改旗易帜合理与否,这一点在Fixed Function向Programmable转变的过程中体现的尤为明显。其实改朝换代的只是一个机会,是机会就会有风险和代价,不加思索的全盘否定过去其实是一种盲动,所以随着SM4这种无限强调灵活性的规范出现,并逐渐统制了GPU Architecture。GPU在功耗和复杂度方面的矛盾以及代价逐渐显露了出来。并且未来最终会到达一个无法调和的程度。但是现在木已成舟,所有的应用都会照着SM4来写,要想改朝换代江山易主也不是那么容易的事情。当然,这也不是说NV40就比NV50要好,NV40在灵活性上的确有很大问题,改进是必须的!所以未来如何反攻Graphics并且光复这片沃土,还需要硬件和软件厂商做很多事情。 |
|