联合架构的遗憾-超线程分派处理器
上面已经说过:整合了VS/PS/Geometry Shader的Unified Shader Architecture(联合渲染架构)是通过引入虚拟机机制减少了开发人员的指令设置时间,降低了开发难度,这个架构可是说是DirectX 10最为亮眼的表现。但凡事物都有两面性,Unified Shader Architecture(联合渲染架构)虽然可以通过Common Core来实现多样化功能,达到更好的Load Balanced。但其却会把大批大批的资源/时间浪费在Stream Processor的调度、指令分配等方面。因此Dispatch Processor的设计将是GPU一个非常关键重点,一个好的Dispatch Processor设计可以大大减少Unified Shader Architectue在调度、指令分配等方面的开销,成为提升GPU效率与性能的妙药良方。

与NVIDIA G80产品的Thread Processor类似,AMD/ATi的Ultra-Threaded Dispatch Processor(超线程分派处理器)也是把从Settp Engine出来的指令分为3类过滤,然后为每个着色类型进行命令分离列队,而下面的仲裁器将会根据多种追踪的参数,决定要处理的下一个线程,这时排序单元为就会每个线程决定最佳指令出发顺序,这是DirectX 10标准的处理过程。然而R600 Ultra-Threaded Dispatch Processor(超线程分派处理器)不同的地方在于其Vertex Fetch方面,为了增加Geometry Shader性能R600超线程分派处理器中增加了Vertex Fetch的仲裁器与排序单元。除此外还有一些专属的指令缓存、常数缓存。这些设计使得R600的Ultra-Threaded Dispatch Processor(超线程分派处理器)与G80相比显得特性鲜明。

我们在上面介绍Shader Model4.0 Stream Processor时曾说道Branch Execution Unit,这个单元源自Shader Model3.0时代ATi对于Dynamic Follow Control的理解,Radeon X1K产品上的Branch Execution Unit配合Ultra-Threaded Dispatch Processor(超线程分派处理器)发挥出卓著的性能。而在DirectX 10时代这个单元也被保留了下来,负责进行流控制和条件运算,而G80上是使用空闲的流处理单元负责这项流控制和条件运算任务,显然R600上的Branch Execution Unit完全除去流控制性能上的开销,极大提高系统渲染效率减少指令分配等开销。
需要注明的是以上这些调度是在GPU内部由硬件完成,不需要CPU进行参与。
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |