论文部分内容阅读
新研发的处理器越来越多地加入SIMD向量指令集,增强其数据并行处理能力。无锡江南计算所研发的国产处理器神威也搭载了SIMD向量处理单元。然而,国产处理器平台上应用匮乏,三维可视化应用尤其如此,而三维可视化应用的开发离不开高效的渲染器。因此我们开发了本文描述的渲染器,期望推进国产处理器上三维应用的发展。本文详细描述了一个为装备了SIMD处理单元的多核处理器设计的软件渲染器架构。传统的渲染管线难以并行化,本文中我们设计了一个sort-middle架构的并行渲染管线,该设计能有效利用多核和SIMD处理单元带来的性能提速。另外,我们也根据Greene描述的递归下降算法设计了高效的适合SIMD指令的光栅化方法。根据这些设计我们实现了一套平台无关的渲染框架,并且根据该框架在Intel Core i7的Windows平台和神威处理器的Linux平台上都实现了渲染器。结果显示,渲染器在这两个平台上都具有接近线性的可伸缩性。并且在Intel Core i7的Windows平台上,比广泛使用的Mesa3D的单线程渲染管线参考Mesa+Gallium+Softpipe快20倍以上,比其多线程渲染引擎Mesa+Swrast还快2.1-3.3倍。该渲染器使用装箱来减少对内存带宽的需求,并且使锁争用减少。目前该渲染器使用x86上的SSE指令或者神威上的SIMD指令可以并行地渲染四个片元。同时,也利用为SIMD指令优化过的数学函数进行所有的三维变换。通过有技巧地使用处理器上的SIMD和多核并行机制,该渲染器的性能明显优于串行的实现。该渲染器能维持渲染顺序,并且支持多种特性:可以渲染到多个渲染目标,可以定制顶点和片元着色器,支持多边形裁剪,背面等相关剔除操作,深度缓存以及透视矫正纹理映射。另外,由于软件实现的灵活性,我们实现了平台无关的绘制框架,具有高度的可移植性。我们一开始在搭载了Intel Core i7的Windows平台上开发,后来很便利地移植到了搭载了神威处理器的Linux平台上。