使用OCP总线接口的3D图形硬件IP

2010年08月02日 11:56    发布者:lavida
嵌入式系统中的图形处理技术(如用户界面和游戏)正在不断发展和改善,例如从基于2D的交互图形发展到基于3D的交互图形。便携式游戏站(PSP)这样的便携式设备就实现了PlayStation 2类3D图形质量。而在PC图形方面,可以让开发人员在顶点和片段层级配置功能的可编程着色方案已经成为DirectX和OpernGL API基础架构的主要方案,这类硬件在像Xbox360和PlayStation 3这样的游戏设备上已经形成了非常丰富的内容和经验。然而嵌入式系统中的图形处理存在着很多问题和挑战需要开发人员去解决,例如为了保持长电池寿命所需的低功耗,因为空间约束要使系统的器件数量最少,以及限制门的数量以降低成本。   

Khronos Group公司正在定义针对嵌入式领域的各种媒体API,目前已经发布了一种图形API,即OpenGL ES。该OpenGL ES共有1.x和2.x两个版本,分别针对固定图形管线和可编程图形管线,这种方法与PC图形中用的方法是一样的。

DMP图形内核概述

DMP为嵌入式领域中的便携式设备、移动电话、汽车导航系统、娱乐游戏机和所有其它嵌入式图形设备提供了可扩展的高性能、低功耗3D图形内核。PICA200是最新的3D图形IP内核,涵盖了前面提到的所有应用领域。

该内核由多个组件组成,包括OpenGL ES标准功能以及我们自己最初的图形技术。这些组件是根据用户要求以及带有定制要素(如性能、存储器带宽和功耗)的目标系统构建的。在选择IP接口方案时,很难设定在这么宽的应用范围下用户的具体要求。在采用开放内核协议(OCP)作为我们组件的标准总线接口方面DMP一直做得非常成功。

Maestro技术

通过采用OpenGL ES 1.1和我们自己的、被称为Maestro的扩展图形API,图形内核已经取得了很好的高性能低功耗效果。这些Maestro功能包括了各种目标应用中频繁使用和实用的图形功能,包括各种光照和明暗处理模型,例如Phong、Cook-Torrance和BRDF、阴影效应、多边形细分以及过程纹理。

1:Maestro功能、光照、阴影和微粒效果

Maestro功能利用我们改进的最初算法以硬连线逻辑形式实现,从而解决了嵌入式系统设计中低功耗与高性能的矛盾。Maestro功能可以实现非常丰富的内容,比如PC和便携式设备上的控制台图形(图1)。

Maestro功能包括以下一些效果:

1. 光照Maestro-包括按照每个片断的高性能光照功能,并支持各种明暗处理模型,如Phong、同向/异向 BRD以及下表面散射;
2. 阴影Maestro-支持实时的硬阴影和软阴影处理;
3. 形状Maestro-通过用硬件(例如NURBS和多边形细分)产生精细的多边形来减少存储器带宽,因此可以使输入数据量实现最小化;
4. 映像Maestro-支持凹凸映像和过程纹理,并且过程纹理不需要任何存储器读取来生成纹理图像,因为图像是根据算术等式产生的;
5. 微粒Maestro-用硬件产生雾化、云和气体效果。


图1:由Futuremark和DMP合作开发的PICA200演示场景。


图2:只使用OpenGL ES的渲染结果(左边)以及用OpenGL ES 和我们的Maestro API后的渲染结果(右边)


图3:利用我们的阴影Maestro API实现的实时软阴影渲染。


图4:使用形状Maestro的多边形细分实例。左边的图形显示了来自主CPU的输入控制多边形,右边的图形显示了我们的图形硬件实时产生的多边形。


图5:映像Maestro实例(左边:针对每个片段光照的凹凸映像,右边:利用没有任何纹理存储器访问的过程纹理硬件实现的木纹图案)。


图6:微粒 Maestro可以产生雾化、云和气体效果。在我们的渲染算法中,清晰和模糊对象的组合没有任何的瑕疵。

2:硬件框图

这些Maestro技术通过算法优化以及多个研究机构的长期研究得以实现。目前我们正在向嵌入式系统引入PC级的图形和经验。

硬件框图

下面是图形内核的框图。

在图7中的所有红色箭头都指向了采用OCP的存储器总线接口。


图7:PICA200框图。

在开发PICA200内核的过程中解决了以下一些挑战:

1)为了涵盖所有嵌入式系统,IP内核必须支持各种运行光谱的设备,包括从带微型显示屏的移动电话到带很大显示器的娱乐设备。
2)3D图形硬件需要极大的带宽用于命令、纹理、色彩和z缓冲器读/写访问,而这种带宽将确定3D IP内核的性能,并且
3)IP内核应能很容易地集成到SoC系统环境中。

为解决所有这些问题,我们决定采用OCP作为我们构建模块方案的标准接口基础架构。结果是,我们可以提供下面的选项来满足用户的需求(表1)。

以移动电话系统为例,要求支持OpenGL ES功能和VGA显示器尺寸,功耗应该最小,因此在这种情况下,顶点处理器和纹理管线的数量需要分别优化为两个(当然这里的数量仅仅是一个例子)。Maestro功能的实现并不仅仅支持Open ES,因为在大量的蜂窝电话中不需要非标准的功能。纹理缓存参数也可以针对SoC总线特性进行优化,因为事实上这些参数是由OCP标准自动提供的。在像娱乐游戏机这样的应用中,所有Maestro功能都需要组件来支持更高质量和吸引人的内容以及高性能和大显示器尺寸。

我们还采用了利用OCP线程协议的预取机制。这对于避免渲染管线的停顿以保持很高的渲染性能来说是很重要的。表2给出了在该图形内核中线程ID分配的实例,在这个例子中,内核共有四个纹理模块。

OCP2.2支持标示哪个线程允许失序响应,但是这个特殊DMP内核并不支持失序处理,因为对色彩和深度缓冲器的访问需要使用基于读-修改-写锁定的访问,对其它的访问没有针对失序访问支持的逻辑和FIFO,以便生成小型IP内核及支持上述各种应用。为了在没有标示功能条件下获得较好的存储器访问性能,这种图形内核针对基于模块化的光栅化处理进行了优化,所有从三角函数产生的象素都要通过4X4这样的矩形块处理,以便通过长突发长度访问和数据访问跟上对齐地址而充分利用存储器访问,并为纹理和色彩缓冲器获得较高的缓存利用率。

3:OCP好处

使用OCP的最大好处是广泛使用的行业标准是开放的,任何人都能得到。此外,大多数主要的SoC销售商利用和支持OCP。这样一来,我们可以根据协议在我们的接口和缓存中定义某些参数,以优化我们的用户总线访问接口和系统参数,就像表1中的最后一行,这为IP提供商和SoC供应商同时提供了一种高层次的构建模块概念。

本文小结

这种内核最早是在SIGGRAPH 2006上发布的(图8),目前PICA200构建内核已经能够供货。


图8:在SIGGRAPH 2006上的FPGA原型展示。

我们多年来一直在为嵌入式应用开发3D图形技术,而利用OCP可以减少开发这种技术的时间和成本。对于IP内核和SoC供应商来说,系统整合工作是一项非常耗时的工作。PICA200内核不仅支持各种嵌入式应用,还通过利用基于OCP的构建模块方案优化了每个系统的性能。OCP提供了能够满足上述设计挑战所需的完整规范和基础架构。