|
载入中...
目前大多数3D图形核心中,核心架构主要分为指令处理器、装备引擎、超线程分派处理器、流计算单元、纹理单元和缓存、内存读取/写入缓存和流输出缓冲、着色输出、渲染器后端几大部分。
指令处理器和装备引擎没有什么好谈的,它们主要负责指令的发送和初级信息的收集汇编,此后便是统一架构第一个重要的处理过程,那就是超线程分派处理器。前面的介绍我们已经知道,统一架构的最大特点就是VS、PS、GS单元的统一,那么HD 2600的120个(HD 2400是40个)流处理单元究竟哪些去处理VS、哪些去处理PS、哪些去处理GS就成为了一个重要的问题,如果运算数据的分配不能达成高效和均衡,那么DX10的统一架构就失去了意义,如何合理的分配这些运算量,是DX10显卡需要解决的首要问题,ATI在这方面进行了大量的工作,他们将这个控制单元称为“超线程分派处理器”。
下图是“超线程分派处理器”的更详细架构图,我们可以看到,其实在这个分配处理器内部,各种shader的运算数据还是被分开了。从装备引擎进入分配处理器后,各种数据首先被分为三种,包括VS、PS以及DX10新加入的GS(如图中上半部分红色、绿色和蓝色的方块),不同的数据分类还会被排序为数据流一、数据流二、数据流三……然后等待送入具体的流处理单元进行处理。
在数据流和流处理单元之间,还有一个名为“仲裁器”(arbiter)的单元在运作,它的基本作用就是让数据流以最短的等待时间进入流处理单元,在这个中心思想的指导下,“仲裁器”一般情况下总会寻找最早进入排序的数据流,优先安排它们进入流处理单元进行计算,这样就能保证不同数据分类的计算均衡,并且不会耽误较早数据的及时计算。

『超线程分派处理器架构图』
“仲裁器”计算完毕后,数据流就会进入流处理单元的SIMD列队,逐一进行运算。另外,在“超线程分派处理器”中还有专门的顶点和材质仲裁器,可以让一部分数据直接进入顶点和材质单元,让一些数据无需再经过shader单元,减少了流处理单元的无效工作。“超线程分派处理器”还分配有专属的着色缓存,让各种数据流总是保持高速的等待状态,一旦进入运算状态,可以以最快的速度调用。
|