面向顶点染色算法的专用指令集优化处理器
2014-06-09杜慧敏
杜慧敏,李 萌
(1.西安邮电大学 电子工程学院,陕西 西安710121; 2.西安邮电大学 计算机学院,陕西 西安710121)
图形处理器(Graphics Processing Unit,GPU)的发展主要集中于3D图形渲染领域,如PowerVR、Nvidia、ATI和 BitBoys[1]等产品中都具有3D引擎所必备的高性能染色处理单元。顶点染色器(Vertex Shader)作为GPU的一个重要组成,是高性能染色处理单元不可缺少的部分,主要完成图形处理过程中几何变换、法向量标准化、光照处理等阶段的运算,其性能的提高将有利于改善图形处理器的性能。
目前已经提出的顶点染色器的结构包括:单指令多数据流(Single Instruction Multiple Data,SIMD)、超长指令字(Very Long Instruction Word,VLIW)、VLIW+SIMD、VLIW+SIMD+多线程(Multithreading)以及多核处理机制[2-3]。SIMD 结构通过对功能单元的复制,提高了向量处理的速度,便于实现矩阵运算,但是其对于性能的提高依赖于功能单元的个数,效果有限;VLIW着眼于通过指令级并行提高处理器性能,一条指令往往包含多个操作,虽然它在一定程度上提高了执行效率,但是编译起来比较困难;VLIW+SIMD结合了两者的优点,进一步提高了运算速度,但处理器的复杂度也相应提高;VLIW+SIMD+SMT在VLIW+SIMD基础上加入了SMT技术,充分利用了空闲资源,实现数据处理的并行化,但是硬件复杂度相对较高;多核处理器旨在用多个简单的核实现复杂运算,提高并行性的同时降低了单个内核的复杂度,但是难以对其进行程序的编写。
本文拟在分析顶点染色器功能和常用染色算法基础上,设计一款支持OpenGL命令处理的可编程顶点染色器(Programmable Vertex Shader),引入一种针对顶点染色处理的专用指令集,通过使用该指令集编程实现不同算法的移植,同时,为了提高硬件的运算速度,采用SIMD向量处理、多执行部件的流水结构等技术进行硬件设计。……
