论文部分内容阅读
嵌入式3D图形渲染技术已经应用到了很多场合,比如娱乐、医学、移动设备,航空航天等等。VxWorks嵌入式实时系统应用非常广泛,在此系统中,WindML组件提供了二维图形开发API,有研究人员在此基础上设计并实现了3D软件加速组件,取得了一定成果,但是其CPU占用率太高。随着嵌入式图形芯片的功能越来越强大,移植通用计算机上的3D硬件加速渲染技术到嵌入式系统领域成为了一种趋势。本文主要研究在VxWorks系统中开发3D硬件加速的底层驱动。其中,详细介绍了纹理传输过程,为了既提高图形渲染效率又不妨碍多任务正常运行,提出了两个方面的优化方法。完成的主要工作有如下几个方面:首先,提出了纹理传输优化方法。研究了GPU的体系结构和OpenGL图形驱动的工作原理。然后以纹理传输为切入点,详细阐述了地址空间映射过程以及主机与图形适配器之间的交互模型。原有交互机制基于等待队列,由于该机制依赖于系统时钟周期,延时较大并且存在不确定性,导致了传输速率抖动。因此本文提出可以采用两种优化方法进行交互。在提交DMA传输命令后,第一种是按照传输粒度大小等待固定延时后进行忙等待,第二种是等待固定延时后在辅助时钟的协助下等待传输结束的信号。测试结果表明,两种方法克服了抖动问题,在传输粒度较小时传输速率得到明显提升。其次,在多任务并行环境下测试了图形渲染任务运行情况,发现在纹理传输期间I/O密集型任务的运行受到限制,因此提出对I/O密集型任务的数据集进行预取来提高CPU利用率。预取算法借鉴Linux系统的read_around预取算法。最后,通过实验验证纹理传输优化方法和预取方法的有效性。一方面测试不同传输粒度下最大传输速率的延时长短,从而得到最合适的延时时间。通过实验表明选择合适的延时时间可以提高传输速率。另一方面采用了嵌入式性能基准程序Mibench,分别对I/O密集型和CPU密集型的多个任务进行了测试。测试结果表明,对I/O密集型的数据集进行预取明显提高了CPU利用率。