创新效能分析技术 Android系统软硬体优化有谱

2011-08-11 20:18:02来源: 新电子
随着市场竞争日益激烈,如何缩短Android系统开发时程及解决使用者效能问题,已成为厂商抢得市场先机的关键要素。利用创新的效能分析技术,能优化Android系统设计与效能,更可及早进行软硬体整合评估,解决开发时程紧迫的问题,提高企业竞争力。
开放原始码的Android软体平台自问世之后,就受到许多系统厂商高度重视。由于Android软体平台功能强大,具备高度可移植性,且不须要使用的厂商支付软体授权金,因此许多消费性电子产品,如平板电脑、智慧型手机与智慧电视等,纷纷采用此软体平台,以满足消费者多样化的需求。

然而,Android系统之软硬体复杂度直逼个人电脑,如何整合出价廉物美的硬体规格和搭配效能调校过的软体,成为各一线系统厂的重大挑战。然而系统开发的时程紧迫,如何在软硬体开发初期设计出符合预期规格的系统并且及早进行系统效能评估?如何在推出产品前迅速确实解决使用者可能面临的重要效能问题?这些都是以往本土以代工设计为主的系统厂所无须面对的问题,现在却严峻地考验厂商的研发实力。  

开发过Android的程式师一定都知道Android模拟器(Emulator)对于开发程式的重要性。类似Android模拟器这样的虚拟平台(Virtual Platform),着重于在个人电脑上提供高速的模拟环境,帮助程式师对于程式进行侦错。但是,目前的Android模拟器上无法有效地评估被模拟的目标系统(Target System)的效能与能耗。因此,本文将介绍目前最新研发出的技术,利用在Android模拟器上加入效能分析机制来提供优于传统技术的效能和能耗监控功能,并且能够搭配效能/能耗分析(Profiling)与事件追踪(Event Tracing)工具,提供系统开发者有效评估Android系统效能与解决效能问题的方案。  

开放式软体平台风行全球

自从2007年底,由Goog1e所主导的开放手机联盟(Open Handset Alliance)公布Android开放软体平台(Android Open Source Project, AOSP)至今,内含Android软体的装置如雨后春笋般冒出,从手持式装置扩展至车载系统,甚至是智慧型家电(如Android电视)也有其踪迹。由于开放原始码版权(Open Source License)的特性,各终端装置开发商生产Android相关产品并不须要额外支付软体平台授权金,因此Android软体平台成为现有手机平台供应商,如苹果(Apple)、微软(Microsoft)、诺基亚(Nokia)及索尼爱立信(Sony Ericsson)等供应商的强劲对手。  

如图1所示,Android平台由下而上可画分为作业系统、系统函式库和应用程式等三个阶层。最下层的作业系统源自于Linux核心,是一个可广泛支援不同架构中央处理器与周边装置的开放原始码作业系统。位于中间的系统函式库又可以分为两个部分:(1)以C/C++语言实作的“系统函式库”(图1中左方区块),提供上层软体多样化的服务,包含基本的系统服务(Libc)、加解密运算(SSL)、向量图着色引擎(SGL)、三维(3D)引擎(OpenGL)、字型函式库(FreeType)、浏览器核心(WebKit)、2D/3D显示着色引擎(Surface Manager)、多媒体框架(Media Framework)和嵌入式资料库(SQLite)等函式库;(2)以Dalvik虚拟机器(Dalvik Virtual Machine, DVM)所建构的Android应用程式执行的环境--Android执行函式库,使上层使用Java语言撰写的应用程式可以跨平台执行,请见图1中右方区块。至于与使用者直接相关的应用程式层也分为两个层次,分别是能够在DVM上运行的函式库,统称Android应用框架(Application Framework),以及Google和开发者所提供的应用程式,或者是使用者购买与下载取得的软体。  

图1 Android软体平台框架

Android平台采用了模组化与阶层结构的设计概念,其目的是让不同领域的协力研发厂商,得以专心发展其特定领域的系统模组,以因应近来手机功能越益复杂化的趋势。除了基本的通讯功能,今日的手机逐渐被赋予更多元的应用,例如播放多媒体的需求、全球卫星定位系统(GPS)的使用、网页的浏览、单机游戏与连网游戏等。为了解决上述多元化应用所造成系统的复杂性、应用程式开发的便利性、执行效能与耗电的问题。Android软体的架构也经过相当程度的调整,并非直接将现有的开放原始码软体拼凑而成。Bionic的C函式库就是最著名的例子。在该函式库中所有标准C语言函式库不常用的功能,例如地区化(Locales)和宽字元(Wide Char)的支援,皆不予以实作。在Android应用框架下,由于这些被忽略的部分,皆被DVM所隐藏,因此应用程式执行不会产生问题。另一方面,Android装置则藉由精简底层软体系统,降低执行时期对记忆体和处理器计算资源的需求,以达到嵌入式系统轻量、快速的需求。此外,搭配阶层式软体设计,应用程式开发人员可以轻松的利用Java语言开发跨平台的应用程式,不须了解系统底层的差异性。  

SDK工具加速软体开发

Android软体平台提供了一种软体开发框架,藉由框架本身提供的应用程式介面(Application Programming Interface, API),开发人员得以在现有Android平台的函式库支援下快速建构新的应用程式。  

除了框架本身提供的API,针对开发周期需要的协助,Google亦发展一系列的工具协助开发人员。这组工具与框架统称为Android软体开发套件(Software Development Kit, SDK)。Google于2008年9月公布第一版的Android SDK 1.0 Release 1供软体开发人员使用。之后,则规律的公布新版的SDK来支援更丰富的应用。例如,2011年SDK 3.0推出,除了支援传统的智慧型手机所需基本功能如分码多工存取(CDMA)和全球微波存取互通介面(WiMAX)等通讯协定、手势(Gesture)、以及语音阅读等,此新版的SDK针对平板装置(Tablet Device)提供了崭新的使用者介面设计,并新增多媒体资料传输协定让使用者方便管理该装置与外接通用序列汇流排(USB)装置上之多媒体资料。  

这些协力工具及其摘要说明请参考表1,涵盖应用程式编译与安装套件的制作、整合开发环境(Integrated Development Environment, IDE)、软体介面测试与除错工具等。值得注意的是,SDK提供了一个称为Android模拟器的虚拟平台软体。所谓的模拟器(又称仿真器),是藉由软体模拟的方式提供虚拟的Android平台,使开发人员可以在这个模拟环境上对开发的软体进行测试、分析与侦错。由于此虚拟平台软体可以跨平台在多种作业系统环境上运行,如Linux、Windows、FreeBSD与Mac OS X,使得开发人员无须取得真实的开发平台,即可在个人电脑上进行Android软体开发。因此,对于Android软体平台的应用与推广上,扮演着相当重要的角色。接下来将特别针对虚拟平台的架构,以及虚拟平台的使用加以介绍。 [page] 

虚拟平台加速Android系统开发  

Android模拟器使用开放原始码的QEMU作为核心技术。QEMU的设计理念中,强调高效能的模拟执行速度与在跨平台(Cross-platform)执行的相容性。在技术上,藉由动态执行码转译(Dynamic Binary Translation)的技术,展现优异的跨平台模拟效能。另外,由于此虚拟平台软体专注于提供功能性的模拟(Functional Emulation),模拟目标平台(Target Platform)重要元件的表面行为,忽略元件内部细部运作与时序(Timing)相关的模拟,以此提供足够的速度来执行复杂的系统软体。例如,在现今普遍的个人电脑(内含2GHz x86中央处理器)上,使用QEMU来模拟安谋国际(ARM)处理器平台时,模拟执行的速度可以与实际的200MHz中阶ARM处理器速度相当。这样的速度,虽然远远落后最新的1GHz以上的ARM处理器,但是模拟器能够帮助使用者一步一步地侦错,并且显示许多在真实系统上观察不到的事件。  

针对Android软体开发所需的环境,Google在QEMU这个虚拟平台软体上,以ARM指令集为基础,设计了一个代号为Goldfish的系统整合晶片(SoC),并藉由此虚拟的晶片架构出一个名为Goldfish的虚拟平台,供软体开发人员在此平台上模拟执行开发的应用程式(图2)。一般而言,对于应用程式撰写的人员而言,如果不须要探讨Android软体平台所提供的函式库与底层硬体的互动,或是不须关切硬体平台的规格是否符合应用的需求时,Goldfish虚拟平台即可有效作为测试和除错的工具。但是对于注重效能的应用,软体效能的调校,软硬体协同最佳化等工作,Goldfish就不够用了。因为Goldfish无法提供准确的效能数据,也缺乏好用的效能分析工具。  

图2 以虚拟平台加速Android软体开发

在嵌入式系统的开发过程中,底层硬体平台的实际规格与系统效能息息相关。虚拟平台可提供系统执行效能与能耗(Energy Consumption)资讯,让系统开发者能了解系统效能是否符合预期或分析系统效能瓶颈的所在,然后搭配系统层级软硬体系统整合设计(System-level Hardware/Software Co-design)的方法加速系统效能。尤其是在多核心(Multicore)系统逐渐普遍化的趋势中,更需要效能工具的辅助,来利用多执行绪(Multithreaded),对软体平行化,进一步提升应用软体、中介软体、作业系统到驱动程式的效能。上述的工作,由于Android平台的高复杂度,传统嵌入式系统的开发方式,早已不敷使用,因此效能工具的使用是提升产业竞争力所势在必行的。 

利用虚拟平台 进行系统效能分析成主流 [page]

Android SDK中,提供两种不同层级的追踪工具(Tracing Tool),让使用者得以分析软体执行的流程。第一个工具是android.os.Debug核心套件,可从Dalvik虚拟机器的观点分析Dalvik函式库和应用程式之间的函式呼叫关系,以及执行时间的分布概况。第二个工具是在虚拟平台中,包含Traceview在内的追踪工具。在启动虚拟平台时,使用者可藉由传递参数“Trace”来完整记录系统执行时的函式呼叫,以及各个应用程式模组与作业系统模组的模拟执行时间(Host Time)。由于这个方法必须记录每个模拟过的指令,整个系统的模拟速度会相当缓慢。收集到资讯之后,使用者可利用Traceview这个前端程式,将追踪工具产生的纪录档案转换成视觉化的图表,方便进一步的去分析应用的效能。 

图3展示Hello World范例程式执行时,使用虚拟平台的追踪工具来记录系统上各个执行绪(可被处理器执行的最小工作单元)的执行状况,并在程式结束后将资料进行转换,产生在该程式执行期间之系统活动剖析资料。图3的上半部显示时间轴上各个执行绪占用处理器的时间分布,下半部为程式执行期间系统上各个函式(包含应用程式模组与作业系统模组)占用处理器的时间与相对的比例。虽然这个剖析图可以展示各函式之活动与相对执行时间,但是受限于功能性的模拟,在该模拟平台上所取得的效能资讯,无法准确的估算受测试软体在真实系统上的效能。

图3 Traceview产生之系统效能剖析图

有鉴于此,目前在虚拟平台上的研究方向,在于建构出快速且能估测效能的模拟器(Cycle-approximate Emulator),即是在现有的模拟器上加入估测时间的模型(Timing Estimation Model)。必须注意的是,若是钜细靡遗地模拟硬体元件内部与时序相关的行为,往往花费大量的时间,导致整体系统的模拟速度大幅下降,往往反而使系统无法准确运作。以网路应用程式为例,如果模拟速度缓慢,网路的另一端可能会因为在预定时间内没有收到模拟平台的回应而中断连线。因此,如何快速又精确的提供时间相关资讯,就是相当重要的研究课题。 

导入虚拟效能分析架构估计系统效能

虚拟效能分析架构(Virtual Performance Analysis Framework),是用来估测虚拟系统上的效能与能耗的方案,如图4的智慧事件追踪引擎(Smart Event Tracing engine, SET)/虚拟效能监控装置(Virtual Performance Monitoring Unit, VPMU)所示。在被模拟的系统上(指图4的“开发平台”以上之软体堆叠(Software Stack),在软、硬体两个不同阶层都加入效能侦测的模组。在虚拟的硬体平台中,此架构使用VPMU/SET获得软硬体互动相关资讯。进一步而言,VPMU负责在模拟器运作的同时估测当下系统效能(Performance)与能耗(Energy)资讯,例如,截至目前为止系统执行的时间、已执行的指令数以及能耗有多少等。SET则是负责将VPMU的效能和能耗资讯与目前在虚拟平台上进行模拟的软体进行连结,以作为效能分析的依据。接下来会先就VPMU的特性来作介绍,稍后则会对SET做更详细的说明。 

图4 虚拟效能分析架构图

在软体的层级中,将提供效能分析工具组(Performance Analysis Toolkit, PAT),让开发人员在进行软体测试的同时,也可以一并进行效能分析。事实上,使用者是透过PAT来设定底层的VPMU和SET,并让这两个装置在系统上进行模拟的同时,搜集软体效能相关资讯。 

VPMU内含虚拟时间装置(Virtual Timing Device, VTD)与虚拟能耗装置(Virtual Power Device, VPD),来分别估计当下系统时间与能耗资讯。如图5,VTD会在QEMU运作同时搜集QEMU所模拟过的指令,利用不同的前端分析工具(Front-end Analyzer)将这些指令对系统各部分的使用状况,以模型或是模拟的方式做出,进行时间资讯的估测。使用者可依据需求告知时间解译器(Timing Interpreter)选定特定的时间模型(Timing Model),综合由各个前端分析工具所产生的效能资料,计算出目前系统的时间资讯,存至虚拟时间戳计数器(Virtual Time Stamp Counter, VTSC)供应用程式或是PAT读取。除了VTSC外,前端分析工具用来估测各个元件的效能资料也会储存在此事件计数器(Event Counter)并且随时更新。藉由事件计数器所提供的资料,使用者可以更进一步了解效能瓶颈之所在。  [page]

图5 虚拟时间装置之内部架构

VTD的设计概念是将时间模型加入虚拟平台中,以推算出时间资讯。虽然有类似的可估测效能的模拟器,但是多半不够完整、速度缓慢、功能不足或是不易使用。VTD使用多样化的时间模型,来预测受模拟的程式所须执行时间。如图5所示,第一个时间模型(Timing Model 1)仅须使用数学模型便可推估时间,而第三个时间模型(Timing Model 3)使用处理器(Pipeline Simulator)、快取记忆体模拟器(Cache Simulator)、动态随机存取记忆体模拟器(DRAM Simulator)与磁碟模拟器(Disk Simulator)模拟系统不同元件的细部时序行为。此设计中,VTD藉由提供多样化的时间模型,让使用者来决定所需的时间精确度,以提升整体系统模拟的效率。第一个时间模型的模拟速度会比第三个时间模型(Timing Model 3)来的快,但效能资讯的误差(Error Rate)可能比第三个时间模型来的大。对使用者来说,在软体开发初期,只是须要知道程式主要的效能瓶颈,此时可选择最快的模拟速度来获得程式剖析资讯(Program Profile),稍后若要进一步分析效能瓶颈,可以使用较精确的时间模型去模拟与效能瓶颈相关的软体和硬体部分。 

如VTD的观念一般,可以使用VPD强化Android模拟器对能耗资讯的支援。而VPD中较重要的元件有两个状态暂存器,分别为设定目前系统的电压(Voltage Status Register)和频率(Frequency Status Register),与一个能耗计数器(Energy Counter)。与VTD相似,每当使用者欲透过软体存取系统能耗时,VPD会先请VTD更新其VTSC,并将更新后的时间资讯与当下系统电压和频率设定作计算,所得到的能耗资讯会储存至能耗计数器以供软体读取。 

先进的手持平台,会针对不同功能模组,提供不同的电源回路。因此,理想的VPD不仅显示处理器变频的资讯,还可以呈现不同电源回路模组之间开关对整体系统造成的影响,并能搭配VTD提供动态调频(Dynamic Frequency Scaling)对系统效能造成的冲击。当虚拟平台能够提供基本能耗资讯时,开发人员就不须要等待硬体协力厂商设计出实际的平台,而可以直接透过虚拟平台评估与分析应用程式的效能/能耗比。 

使用智慧型追踪工具 有效解析软硬体互动

SET主要的概念是在虚拟平台--QEMU,内部使用动态执行码安插指令(Dynamic Binary Instrumentation)的技术,以获得目前Android软体执行时期的相关资讯,例如程序识别码(Process Identifier)、执行绪识别码(Thread Identifier, TID)、函式名称(Function Name)、函式呼叫关系(Caller-callee Relationship)及建构出程式的呼叫图(Call Graph)。 

目前SET主要支援两种追踪模式,分别为全系统追踪(Full System Tracing)与个别程序追踪(Per-Process Tracing)。前者与Android Emulator功能相似,意即使用者可藉由PAT来开启与关闭整个系统追踪的功能。与现有虚拟平台上追踪工具不同的地方,是SET的个别程序追踪功能。此模式允许使用者利用PAT来设定感兴趣的“事件”,如上述的程序识别码与函式呼叫关系。并在稍后追踪的过程中仅针对已注册的“事件”进行追踪。相较于系统层级的追踪,这种针对个别的程序进行追踪,可以大幅减少须要记录的资料,并且有效的提升整体系统模拟的速度。 

除了可以追踪软体执行时期的事件之外,有了VPMU所提供的效能资讯,SET所提供的效能剖析(Performance Profile)资料就不会有原本Android Emulator无法反应软体实际执行的时间的缺点。只要有对应于硬体平台的时间模型(Timing Model)和能耗模型(Power Model),系统开发者可以在没有实际硬体平台的情况下,使用VPMU+SET针对应用进行系统效能分析与最佳化。 

图6为SET使用个别程序追踪模式,对一个嵌入式软体(Dijkstra)进行效能分析,图中左半部为该程式里面使用到的函式名称、该函式被呼叫的次数与该函式占整个程式执行时间的比例。藉由点选左半部的函式名称,右半部的上方即可以呈现额外的资讯,如图中显示的是main函式的原始码相关资讯。在原始码第一百六十九行的地方,可以更进一步看到Dijkstra函式,因为被包含在一个回圈内部,因此,很有可能是程式的热点(Hotspot)。最后,图6的右下方呈现的是该程式的Call Graph,藉由图上方的百分比,可以很清楚的了解某个函式执行的时间比例。在这个范例中,刚刚所提到的Dijkstra,这个寻找最短路径演算法的函式,很明显的是程式执行时的热点。软硬体开发者可以藉由这样的资料作为依据,进一步对软体与硬体同时进行最佳化,以期达到系统设计的目标。 

图6 使用虚拟效能分析架构产生的图形化效能剖析资料

目前Android相关产品的开发与研究正方兴未艾,有许多议题尚待研究与解决。若能妥善地将虚拟平台利用于Android系统设计以及优化Android系统的效能,不仅能缩短产品研发时程,更可望提升产品设计的竞争力。特别是台湾目前已有众多厂商先后陆续的投入资源开发相关产品,正值Android产品市场竞争非常剧烈之际,双核心手机刚进入市场,四核心的晶片已经在待命了,令人目不暇给,各家晶片孰优孰劣,如何判断?各类型行动云端应用,亦与Android系统设计息息相关,林林总总的中介软体竞相出笼,百家争鸣,如何在手机装置上有效支援如Flash/Javascript/HTML5/Multimedia等重要应用,也是笔者常常和业界先进们谈到的问题。笔者抛砖引玉,希望藉由本文对Android虚拟平台的讨论,提出在这方面的一些经验与研究结果,期待在Android系统设计与优化相关的议题上,业界能有深广的探讨,也希望未来能见到台湾产业在Android产品与技术上有辉煌的成就。 

关键字:Android  系统软硬体

编辑:北极风 引用地址:http://www.eeworld.com.cn/xfdz/2011/0811/article_7532.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
Android
系统软硬体

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved