论文部分内容阅读
图形处理系统是计算机系统的重要组成部分,往往承担着巨型的计算任务。随着3D图形渲染技术的不断推广,给嵌入式移动设备上的图形处理单元(GPU)提出了更多更大的挑战。嵌入式GPU主要由可编程的着色器(Shader)和固定的光栅处理系统组成,后者主要负责渲染基本图元内部涵盖的有效像素点,而像素的渲染能力是衡量GPU最主要的性能指标之一。针对嵌入式GPU,光栅系统的遍历算法仍有可以提升的空间,有效的提高像素吞吐,降低系统功耗,是亟需研究和解决的重要问题;另一方面,嵌入式GPU在像素绘制过程中需要频繁地访问外部存储器资源,占用了极大的存储带宽,增加了系统功耗。因此如何对光栅系统的渲染时间、功耗和数据访问带宽等进行优化成为嵌入式GPU研究的重要方向。本文将针对上述问题,从光栅遍历算法的改进、硬件数据通路的优化、原型系统的验证、像素缓存的低带宽结构设计等方面开展研究工作,以更好地适应嵌入式GPU光栅系统的绘制要求。首先,本文提出了一种面向移动平台的3D图形光栅的改进算法。在基于像素块遍历方式的中心线扫描算法的基础上,从两个方面做了改进:针对像素块间的扫描,建立片元的预处理,避免对无关像素块复杂的逻辑判断;针对像素块内的扫描,预先对组成图元的所有像素块实施边缘检测,只对边缘像素块内部进行扫描判断,有效的加快了扫描转换的速度。其次,本文提出了光栅绘制阶段硬件流水线的设计结构。算法的浮点实现,使渲染的画面精度更高;流水线的结构设计及其优化,有效的加快了像素点的渲染速度。本文对光栅系统进行了仿真和基于FPGA的原型系统搭建,验证了本文所提出的光栅系统具有较高的速度和面积优势,从而有效提升了光栅系统的渲染效率。最后,本文提出一种快速分层的深度预测试方法。从像素块和像素点两个单位层次,快速地预剔除了无需绘制的像素点,降低了渲染场景所需的时间。避免了诸如深度值、颜色值和纹理值的读写等针对像素点的绘制操作,节省了由此引起的访问存储带宽。此外,合理的共享像素块缓存(TileZcache)的设计,有效地提高了命中率,进一步减小了预测试所需的时间。同时提出的动态更新像素块的方法,以更小的硬件代价,提高了深度预测试的效率。本文在Attila GPU仿真平台上实现了所提出的结构,通过实现各种不同的深度预测试算法,对比分析了主要的性能指标,验证了所提结构的高效性。