三年架构大革命!R520脱胎换骨全测试
当3D模型的数据按照用户的视角转换成为了屏幕上的像素的信息之后,现在就需要进行最重要的操作了,这也是图形处理中最关键,性能消耗更大的部分。
这个时候的像素信息,是不完全的像素信息,只知道这个像素是属于哪个三角形的,还有很多方面是没有确定的:
这个三角形上贴的图是什么?这个三角形收到那些光源的照射?这个顶点是否在三角形的边缘,会不会在抗锯齿操作中被处理?等等
所以整个像素渲染引擎是整个3D图形生成过程中最麻烦的一个操作过程,也是对性能要求最大的一个部分。
ATI在这次R520上特别增加了一个被称之为“Ultra—Thearding Dispatch Processor”的部件,这个单元负责将线程分派给下面的像素渲染管线。
我们知道,对于一个画面,是有很多数据需要处理的,而这些数据几乎都是平等的,像素之间,或者顶点之间。于是我们的每个图形芯片都需要能够同时执行这些操作,也就是并行运算。
但是现在出现了一个矛盾:一方面为了要求并行计算,很多像素要求同时进行操作,将画面分成一个个小块来处理将能够很明显的提高效率,但是如果一个块中的像素需要进行不同的操作,那么将适得其反。
另一方面,如果将每个像素作为最小的单位进行处理,那么出现问题的可能就没有了,但是这样效率将会很低,因为不同的像素的处理要求是不同的,简单的处理的快,复杂的处理的慢。
ATI的Ultra—Thearding Dispatch Processor便是用来解决这个问题的,首先,我们可以将每一个像素的处理过程理解成为一个“线程”,那么这个Ultra—Thearding Dispatch Processor的功能就是分配这些线程的执行。它可以动态检测到每个像素渲染单元的工作情况,避免了空闲的情况存在。
借助于这个单元,R520可以同时处理多达512个线程,这样就可以大大的提高效率,这也是R520只有16个像素渲染管线同样能够表现得如此好的原因了。
如果要理解这个概念,我们就必须先理解“粒度”这个概念,粒度就像是砂子的颗粒的大小,过小会数目增多而影响速度,过大而会导致冲突增多浪费资源。
R520同时处理的像素块的大小是16像素,也就是4*4像素的一个方块,这个数据相对于G70来讲要小一些。
我们来看一个例子:
我们看到,我们现在要进行的是一个阴影处理的情况,一共分为三种可能,一种是在阴影中,一种是不在阴影中,还有一种就是处在阴影的边缘。
我们看到,由于分支处理的操作能够和线程的操作并行进行,所以节省了操作需要进行的时间。原来需要20个流程周期完成的任务只需要14个就可以完成了。