开创DX11宏图霸业!镭HD5870权威评测
第五章/第三节 RV870核心控制引擎
R870的图形架构可以拆分为以下几个模块,一个一个来看都有什么改进:
- Command Processor(指令处理器)
- Graphics Engine(图形装配引擎)
- Ultra-Threaded Dispatch Processor(超线程分配处理器)
- Stream Processing Units(流处理器)
- Texture Units(纹理单元)
- Cache & Buffer(缓存及缓冲区)
- Shader Export & Render Back-Ends(像素输出部分)
- Memory Control(显存控制器)
- Display Controllers(输出接口控制器)
● Command Processor(指令处理器)
Command Processor负责从PCI-E总线发出或者接受指令流,让GPU在驱动程序给定的时间间隔中完成恒定数据流操作,此过程需要通过Parallel DMA Engine,调用系统内存或者是本地显存的相关资源。
● Graphics Engine(图形装配引擎)
之前这个模块被称为Setup Engine,是GPU负责指令分配和安装的模块,主要负责给GPU内部各大模块将要执行的指令准备数据,我们将其称之为装配引擎。装配引擎之中有很多模块,包括Tessellator(镶嵌器)、Vertex Assembler(顶点装配器)、Geometry Assembler(几何装配器)、Rasterizer(光栅器)、Hierarchial-Z(多级Z缓冲模块)等。
RV870相比RV770,最主要的变化就是拥有两个光栅器和多级Z缓冲模块,而此前的GPU都只有一个。这可不是因为RV870本身是“双核”的关系,因为顶点装配器和几何装备器都只有一个。
装配过程:顶点数据装配完毕后,顶点三角形内插操作不再使用独立的硬件单元,而是交由流处理器处理,由DX11中新增的外壳着色器和域着色器替代,这两个着色器将辅助镶嵌器进行细分操作,生成新的顶点。
接下来三角形顶点的2D坐标信息经过Rasterizer(光栅器)之后就得到了像素信息,也就是得到了屏幕上每个点的数据信息。进行这部分操作的时候也经过扫面转换生成了每个点的Z轴信息,这些信息将被传输到Z轴缓冲之中,以备后用。
现在我们就可以理解为什么RV870要设计两个光栅器和多级Z缓冲模块了,因为DX11 Tessellator的关系,最终的模型将变得十分复杂,需要处理的指令数量很多,合理的分配任务并暂存数据很关键。RV870改进了连续存取缓存时的性能。
Hierarchical Z是一项非常智能的技术,在GPU完成坐标转换之后,Hierarchical Z会不断对比各个顶点的Z轴位置,一旦Hierarchical Z发现这个顶点不需要显示,将会直接将其剔除避免后续无效渲染,它将有效控制由Tessellator所带来的性能损失。
即便是在DX9或DX10应用中,双倍的Rasterizer和Hierarchical Z也能大幅提升GPU在高分辨率和多屏超高分辨率下的性能表现。
● Ultra-Threaded Dispatch Processor(超线程分配处理器)
最后,所有的像素/顶点/几何/纹理/颜色等数据经过Interpolators(排序器)之后交给Shader进行处理,当然在此之前还有一项必备的工序,那就是数据的重新封装打包,以及指定相应的统一渲染单元运算,这部分任务由超线程分配处理器完成。