目前市面上的高阶智能型手机(Smartphone),甚至是一些高档的消费性电子产品,都已经可以提供实时3D显示的效果,用来做为人机接口呈现、路况导航或是游戏等实时互动应用。可以预期的Graphics Processing Unit(GPU)将被安装在许多装置之上,而这类Mobile GPU最重要的技术挑战就是低耗电。近几年VLSI技术的快速演进,让芯片运作频率越来越快、面积越来越小,但电池容量的进步却远慢于运算的需要。因此EDA业者、IC设计与系统开发业者,无不想尽办法在电路层次或系统层次上有所突破,让他们的产品具有低耗电并保证不影响消费者的使用经验。
本文将介绍在Mobile GPU上有目前那些创新的系统设计,可以达到低耗电且不影响应用程序在3D表现上的效能。我们将先介绍Mobile 3D之应用发展趋势以及规格现况,并简单描述Dynamic power与Static power,接着本文将介绍在Mobile GPU上广为使用的Tile-based Rendering架构以及台大资工所如何应用Power-gating技术来减低GPU之漏电耗损。我们期望可以透过本文让各位读者对于Mobile GPU之省电架构有个初步的了解。
Mobile GPU应用趋势
Mobile 3D目前最夯的应用之一就是人机接口。自从Apple Inc推出iPhone引起广大消费者疯狂抢买后,越来越多人相信移动电话的接口将走向更精致与高互动的呈现方式。台湾HTC的最新一款产品-HTC Touch Diamond所标榜的重要产品特色就是3D UI,NTT DoCoMo部分手机也搭载Acrodea设计的3D UI。我们认为3D UI将会是日后中高阶手机之主要接口呈现方式之一。
《图一 Mobile phone 3D UI(图片来源:TAT、Apple与HTC)》 |
|
除了3D之外,透过软件引擎的方式(Tessellation on CPU),Mobile GPU也可以支持向量图形的绘制。包括Imagination Technology之PowerVR以及ARM的Mali graphics等都采用这样的解决方案,在他们的3D产品上支持OpenVG接口。因此Mobile GPU更可以让系统开发者在其平台上架设Flash lite之类的向量引擎,发展具有Scalable或是漫画风格的人机接口。
另一个值得观察Mobile GPU应用趋势的面向则是Java规格(Java Specification Requests;JSR)的发展。Java可以说是手机上提供行动服务的重要接口之一,不论是Feature phone或是以Symbian或MS Windows Mobile发展的智能型手机,几乎都搭载了Java 2 Micro Edition(J2ME) Virtual Machine。新一代的J2ME「标准配备」规格已经由JSR185移至JSR248或JSR249。JSR248/249是由多位重量级电信业者(Vodafone、NTT DoCoMo、Orange France等)与移动电话业者(Nokia、Motorola、SonyEricsson等)所共同制定。
相较于JSR185,JSR248/249在接口呈现上纳入了JSR184(Mobile Graphics API)与JSR226(SVG)此两个与互动图形展现有关的规格。这意味着电信业者与移动电话业者皆认为丰富图像呈现是行动服务重要的规格。配合新一代具programmable功能(透过shader)之OpenGL ES 2.0规格的Mobile 3D Graphics JSR(JSR297)与SVG JSR(JSR287)已经在制定中,而去年底推出的Android也支持3D与SVG技术。可以预期的,将会有越来越多的Mobile Java application应用3D或向量图形来发展其使用接口。
除了移动电话之操作接口与行动服务接口之外,具备低耗电功能的Mobile GPU也可以应用到STB、DTV、TV Gaming、Navigation或是博奕机台等领域,让这类消费性电子产品有不同于以往的使用或浏览接口。总而言之,基于其低耗电与低成本的本质,Mobile GPU可应用的范围包含了移动电话、随身装置、掌上游戏机、甚至是随身玩具等,其范围远大于PC GPU。
Mobile 3D Graphics技术规格介绍
目前Mobile 3D Graphics规格主要是Khronos Group所制定之OpenGL ES,现在主流的规格为OpenGL ES 1.1。最新一代的绘图接口标准是OpenGL ES 2.0,在2006年的SIGGRAPH会议中正式推出。现阶段具有OpenGL ES 2.0硬件的消费性产品尚未在市场上出现,但包括NVIDIA Tegra与TI OMAP3等高阶应用程序处理器(Application Processor)都已经标榜支持OpenGL ES 2.0标准,而根据ARM的预估,在2010年始将会有少量的高阶智能手机开始内建OpenGL ES 2.0图形加速器。
为了支持更精致与拟真的3D绘图质量,针对OpenGL ES 2.0标准Khronos Group一改过去OpenGL ES 1.X版本的固定功能(Fixed-Function Hardware)架构,而是引进桌上型OpenGL所使用的可程序化硬件架构(Programmable Hardware)。但OpenGL ES 2.0与桌上型OpenGL 2最大的不同是,不像OpenGL 2仍有固定管线(Fixed-Function Hardware)架构,OpenGL ES 2.0则是完全移除了固定管线之功能,使得OpenGL ES 2.0在Vertex处理阶段与Pixel处理阶段是一个完全可程序化硬件的架构。
《图四 OpenGL ES 1.1绘图管线(pipeline)(数据源:Khronos Group)》 |
|
上图为OpenGL ES 1.1版本的绘图管线图,其中橘色部分所表示的处理阶段如:3D空间坐标转换、光照计算(Lighting)、材质环境、颜色、雾化及透明测试等,在OpenGL ES 2.0皆被着色器(Shader)所取代;其中3D空间坐标转换与光照计算将会被顶点着色器(Vertex Shader)取代,而其余部分将由片段着色器(Fragment Shader,又称Pixel Shader)所取代。OpenGL ES 2.0的绘图管线图,如下图所示。
《图五 OpenGL ES 2.0 Rendering Pipeline(数据源:Khronos Group)》 |
|
在OpenGL ES 2.0的架构内,可程序化绘图硬件(shader stage)全面支持浮点数运算,在使用浮点数的运算与上个版本相比有很大的进步。受惠于可程序化绘图硬件上有浮点数向量与矩阵计算的硬件,OpenGL ES 2.0的Vertex Shader与Pixel Shader可以执行复杂且精确的数学运算,让OpenGL ES 2.0可支持的功能或效果有非常高的弹性。
在编写控制顶点着色器(Vertex Shader)与片段着色器(Fragment Shader)之程序代码(即shader code)所使用的程序语言方面,Khronos Group定义了OpenGL ES着色语言(OpenGL ES Shading Language;ESSL)。ESSL是根据OpenGL 2.0着色语言(OpenGL Shading Language;GLSL)当作参考依据,针对嵌入式装置的需求以简易使用与实作目标而设计出来的。在使用的语法及流程上皆与桌上型OpenGL着色语言相同。
ESSL是类似C语言的着色语言,对于C/C++/Java的程序开发者而言,它很容易学习且使用。不同的是在着色语言内并没有指针的存在,这意会着shader程序开发人员无法直接地控制内存。由于着色器内的缓存器数量有限,shader程序的复杂度与缓存器的使用必须非常谨慎,过度复杂的着色器程序将会有非常差的执行效率,甚至是无法正确的执行。
另一个ESSL与GLSL之不同点是,它新追加了三个精度修饰词:highp、mediump、lowp,目的是为了增加嵌入式系统硬件使用弹性与效率,让不同的使用状况可以应用不同的精确度来作运算。以浮点数为例,highp的使用范围是(-262, 262),大小范围则是(2-62, 262),mediump的使用范围是(-214, 214),大小范围则是(2-14, 214),lowp的使用范围是(-2, 2),大小范围则是(2-8, 2)。
Dynamic Power与Static Power概述
在CMOS电路里,能量的耗损与功率(Power)相关。功率是电路的瞬间消耗量,而能量则是连续时间之功率耗损的总合(亦即是功率对时间之积分结果)。功率主要包含Dynamic Power与Static Power,且在CMOS电路中static power的耗损主因是漏电(leakage),包括了:Sub-threshold Leakage、Gate Leakage、Gate Induced Drain Leakage以及Reverse Bias Junction Leakage等四种主要的消耗源,其中又以Sub-threshold Leakage为主要的消耗源,然而当制程进步至65nm以下Gate Leakage将有可能成为另一个主要的消耗源。功率之耗损可以简化成以下的公式来说明:
其中CV2αf表示Dynamic power部分,VIdq表示Static power部分。在Dynamic power耗损上,除了透过EDA工具来改善电容部分(C)的耗损,透过EDA之协助或是于架构层级(architecture level)上也可以应用clock-gating来让电路组件停止运作以节省耗损。由公式可观察到操作电压的影响是二次方的结果,透过划分整个系统成多个运作电压区块的方式,让非效能瓶颈的区块运作于较低之电压,可以降低整个系统的功率消耗。
近年来许多文献都在探讨应用Dynamic Voltage & Frequency(DVFS)技术,藉由同时调整电压与操作频率来达到三次方的功率耗损节省效益。在GPU上应用DVFS以降低功率耗损,在目前市场上仍未见到类似的产品。学术界则有韩国之Korea Advanced Institute of Science and Technology (KAIST)半导体实验室提出Triple Power-domain DVFS的GPU架构,将GPU切成RISC、Geometry Engine与Render Engine三个电压区块。在他们的架构下,Render Engine的供电压与运作频率是利用Frame与Frame之间的变化来推估下一个Frame 时Render Engine所需的值;并依据FIFO queue之状态来判定RISC与Geometry Engine区块目前的工作量多寡,进而决定区块之供电压与运作频率。
至于Static power,除了降低电压(V)外也可以透过降低Idq达到节省耗损。目前最常用的方式是使用Multi-Threshold函式库,根据电子组件之特性,透过选择Low VT(速度快但漏电量高)、Standard VT、以及High VT(速度慢但漏电量低)来合成不同部分之电路以降低功率消耗。下图说明Multi-Threshold函式库之delay与leakage的关系。
《图六 Leakage vs Delay for a 90nm Library(数据源:Synopsis)》 |
|
除了Multi-Threshold Library外,另一个可以应用于架构设计层次来降低Leakage的技术就是Power-gating,透过把整个电路供电关闭的方式来节省dynamic power与static power。在Power-gating实作上,通常会将一群需要一起控管电路的Vdd连接到一起,并在外面加一个transistor来控制,如下图所示。
实际运行的时候需要额外的逻辑来判断该电路是否可以关掉,一旦决定了就发出「sleep」讯号给sleep transistor,让sleep transistor把virtual Vdd的电压降到0;等到电路需要开始运作的时候,再把sleep讯号取消而让virtual Vdd回复正常。使用power gating技术,可以同时节省dynamic和static power,但也因为需要额外的电路来执行开关的动作,导致消耗了额外的能量,必须在被控管电路进入power-gated mode一段时间之后系统才开始真正省到电。而且开关的动作需要时间,每一次要把电路从power-gated mode叫起来都需要几个cycle的delay。因此,power gating需要一套完整的机制来决定什么时候关和什么时候开,且经过完整的分析验证来确认有获得效益。本文第六段将介绍台大资工所嵌入室计算实验室尝试应用Power-gating来降低GPU耗电之结果。
Tile-Based Rendering
渐成主流之 Mobile GPU 架构
Mobile GPU通常都以IP block之形式整合于系统晶(SoC)片中,并与RISC以及其他的IP block共同使用on-chip 内存。受限于die size之限制,on-chip 内存的容量通常不会很大,因此Mobile GPU在处理每个batch时(draw call为单位),必须存取存放于off-chip内存的texture、frame-buffer、Z/Stencil-buffer。存取off-chip内存通常都会耗用非常多的能量,因此在Mobile GPU之设计上,包括:Imagination Technologies、AMD、以及ARM等厂商,都采用Tile-based Rendering的架构,藉由一次完成画面一部分(即Tile)之所有绘制动作,并以拼图的方式将整个画面绘制完成,来降低Mobile GPU存取外部off-chip内存的次数。下图说明Tile-based Rendering的绘制概念。
《图八 Tile-based Rendering(数据源:AMD)》 |
|
Tile-based Rendering其实源自Parallel rendering技术,透过同时平行绘制高分辨率屏幕上相互不重迭的区间(tile)来加速绘制速度。Tile-based Rendering属于sort-middle的绘图架构,会在vertex处理完并组成三角片后对所有的tile以bounding box或其他方式进行比对,判断该三角形属于那个tile。并在程序发出Swap Buffer指令后逐一对每个Tile上的所有三角片以其对应的render state设定来进行绘制。
《图十 三角形之Bounding Box与Tile示意图[2]》 |
|
相较于标准的3D绘图流程(又称Immediate mode)之GPU,Tile-based Rendering的GPU在绘图过程中多了一个对三角形排序的动作,因此也需要一个Scene Buffer来存放各Tile上之三角形,且这些三角形会依Render state进行分群,来降低绘制不同render state所需之切换负担。下图为Imagination Technology之PowerVR SGX架构图,其相较于一般之GPU多了负责做tile sorting的Tiling processor。
《图十一 PowerVR SGX架构图(数据源:PowerVR)》 |
|
根据Antochi[3]等人的研究,在一个具有Tile-based Rendering的Fixed-function Mobile GPU架构下,以他们所开发的GraalBench测试程序集所测得之结果,Tile大小为32×32 pixel的设定是off-chip memory的存取量以及on-chip scene buffer需求之最佳平衡的取舍值,且相较于Immediate mode可以减少对off-chip memory存取量达1.96倍。
采Tile-based Rendering架构之GPU虽然可以因为降低对off-chip memory的存取达到省电,但需付出的代价,就是进行Tile sort所需的硬件与计算Tile sort造成的延迟、以及存放Tile信息所需的Scene buffer。当3D场景越来越复杂且加入越来越多的视觉特效,则会有多个来自不同batch的三角形画在同一个屏幕范围的情形。随着over-draw的情形越严重时,Tile-based Rendering架构将会因大幅减少不必要之off-chip memory存取而显得越来越重要。
创新尝试
应用Power-gating降低GPU之漏电耗损
要应用Power-gating来降低GPU的漏电耗损,第一个要考虑的就是GPU运作的那个组件的那个阶段有足够的空闲时间,可以被整个关闭来节省功率耗损,且整个开关的结果是确实有节省功率耗损并不影响应用程序的执行效能。
台大资工所嵌入室计算实验室自去年开始针对GPU应用Power-gating技术之可能性进行研究;我们利用一个cycle-accurate的unified shader GPU simulator并执行四个实际游戏的trace,来寻找可能被Power-gate的模块以及可以利用的时间点。此GPU simulator之架构接近AMD R6系列,具有六组shader processor。因为shader processor会对每个点与每个像素执行vertex shader与pixel shader,且shader程序可能包含了许多浮点数运算,所以我们认为如果能够在shader processor中找到应用power-gating,对节省GPU功率耗损将有非常大的效益。
《图十二 Unified Shader GPU架构图》 |
|
下图是我们实验在不同运作数目的shader processor条件下对游戏之frame-rate的影响。对PC游戏而言,尤其是第一人称射击游戏,FPS(frame-rate-per-second)需达到60,游戏的行进才会流畅。由下图可以观察到,运作shader processor数目对FPS有直接的影响,运作shader processor数目越高,则FPS越高且有很多时候高于60。这意味着在此GPU架构设定下,shader processor是整个GPU运作效率的关键与瓶颈,且在游戏执行过程中有很多时候不需要用到那么多的shader processor。
因此若能在每个frame绘制前,事先决定出每个Frame需要的运作shader processor数目,并关闭不需要的shader processor,就可以节省GPU功率耗损。在这个Frame层级对shader processor进行power-gating的另一个好处,就是可以利用每个frame一开始需要对frame buffer进行clean up动作同时,对shader processor进行开关设定,如此便不会担搁到每个frame的运作时间。
《图十三 frame-rate与shader processor运作数量的关系》 |
|
我们尝试利用Frame-rate来代表一个frame的工作量,建立frame-rate与运作shader processor数目之关联;并利用History-based Prediction的方式,由前三个Frame的frame-rate来推测下一个Frame之frame-rate,进而求得下一个frame所需的shader processor数量。下图是本计划之History-based方法可以达到之leakage saving值以及最佳节省值之比较。由图中可以看到,本计划所发展的方法虽然简单但确有非常好的结果。
《图十四 实验结果History-based预测方法与理想结果的差异》 |
|
下图说明本计划的方法可以如何整合到GPU中及其与运作流程。
《图十五 History-based预测方法运作流程》 |
|
对许多人而言,将Power-gating应用到GPU中的shader processor可能是一件有点夸张的事。但是在我们的成果接近完成之际,我们得知ARM宣称他们新一代的Mali Graphics产品可以依据Frame的工作量,动态Power-gate GPU上四个Pixel shader core的某些core。这意味着我们的研究成果实际可行,且我们是第一个分析探讨Power-gating应用到GPU可行性的研究,有一定程度的学术价值。当然,我们探讨的标的(baseline)并没有考虑DVFS机制的影响,对于已经有DVFS GPU而言,我们提出的方法未必可以有节省那么多的leakage好处。由于现阶段并没有论文深入探讨GPU应用DVFS的架构设计分析,以及同时应用DVFS与Power-gating来节省能量耗损之可行性。基于其对产业之重要性,我们将进一步朝这方向继续深入研究。
结语
当然,我们探讨的标的(baseline)并没有考虑DVFS机制的影响,对于已经有DVFS GPU而言,我们提出的方法未必可以有节省那么多的leakage好处。由于现阶段并没有论文深入探讨GPU应用DVFS的架构设计分析,以及同时应用DVFS与Power-gating来节省能量耗损之可行性。基于其对产业之重要性,我们将进一步朝这方向继续深入研究。随着越来越多的行动服务应用需要使用到3D方式呈现其操作界面或内容,可以预期的日后将会有越来越多的行动装置支持3D硬件加速。OpenGL ES 2.0规格的推出,则象征行动装置上显示的质量将会超过PSP掌上游戏机。但要达到如此高质量的效果,首先要克服的就是耗电的问题。本文简单介绍了几个应用在GPU上的省电架构,希望可以让各位读者对低耗电GPU架构有初步之认识。
台大资工所嵌入计算室实验室将持续与资策会合作研究低耗电GPU架构,日后我们将会再与各位读者分享我们所研究的成果。
<参考数据:
---作者杨佳玲为台湾大学资工系副教授、王柏翰为台湾大学信息工程研究所研究生、郑育镕任职于信息工业策进会网络多媒体研究所---
[2] D. Crisu, S. Cotofana, S. Vassiliadis, and P. Liuha, Efficient Hardware for Tile-Based Rasterization, Proceedings of 15th Annual Workshop on Circuits, Systems, and Signal Processing(ProRISC 2004), pp. 352-357
[3] I. Antochi, Suitability of Tile-based Rendering for Low-Power 3D Graphics Accelerators, PhD Dissertation
[4] PowerVR Insider, http://www.imgtec.com/powervr/insider/powervr-insider.asp
[5] B-G Nam, J. Lee, K. Kim, S-J Lee, and H-J Yoo, “A Low-power Handheld GPU using Logarithmic Arithmetic and Triple DVFS Power Domains”, Proc. Graphics Hardware, pp. 73-80, August 2007
[6] Synopsis, Low Power Methodology Manual
[7] OpenGL ES, http://www.khronos.org/opengles/
[8] E. Lindholm and S. Oberman, “NVIDIA GeForce 8800 GPU”, Hot Chips 19 Symp, August 2007.
[9] M. Mantor, “Radeon R600, a 2nd Generation Unified Shader Architecture”, Hot Chips 19 Symp, August 2007.
[10] Acrodea, http://www.acrodea.co.jp/
[11] TAT, http://www.tat.se/ >