|
主页 › 英特尔® 软件网络 |
开发高能效软件[PDF 2MB] 
本文分析了软件方案、设计和软件开发工具,您可充分利用上述资源,提升应用软件的能效、延长移动平台的电池使用时间。计算效率、数据效率和环境感知方法均有利于创建高功效的应用。此外,我们还准备了更多资源,以白皮书、开发人员套件和分析工具等形式在本文内容和参考资料章节中向您提供。请参见参考资料列表了解更多信息。
多年来,移动平台厂商一直在寻求各种方式来延长移动平台的电池使用时间。电池技术逐渐改进,处理器拥有了全新的低功耗状态,显示屏的功耗水平也得到了巨大改善。尽管如此,该领域仍然存在改进空间。软件在降低移动平台功耗、延长电池使用时间方面可发挥重要作用。
本文的目的是解释目前可用于节省能量并延长移动平台电池使用时间的软件方法和设计,以及介绍各种能够支持高能效软件开发的工具。
本文介绍的方法已经过英特尔软件应用工程师的研究和测试。我们对每次测试结果都进行了详细记录,并提供更加详尽的信息参考。如欲了解典型的测试环境和测量平台整体功耗的机制,请参见附录 A。
本文的其它部分涉及到以下主题:
焦耳——能量测量的国际标准单位
能量——能量的常规定义是“工作的能力”。高能效的设备通常只需比低能效产品更少的能量来支持其“工作”或任务。在本文中,我们将使用该术语来表示执行某一特定任务所需的焦耳量。例如,对抗重力将 100 克的物体举起 1 米所需的能量约为 1 焦耳。
功耗——每个时间单位内消耗的能量数,通常以瓦特(Watt)计算,1 瓦等于 1 焦耳/秒。例如,一个 60 瓦的灯泡一秒钟要消耗 60 焦耳的能量。以最高能量状态运行的笔记本电脑功耗通常在 40 至 60 瓦之间,但是平均功耗要低得多。
热量——更确切地说是阻热,是电流通过导体时自然产生的一种副产品;工程师尽力在计算机设计中最大限度地减少热量;热量过多意味着更多散热设备(通常为风扇)以及更多的能量消耗。
虽然我们尽量适当地使用能量和功耗这两个术语,但有时仍会出现两词同义的情况。
移动平台上的各种组件的功耗曲线取决于其使用模式。例如,在 CPU 密集型工作负载中,处理器功耗相对于整个平台功耗而言比例较大,但当平台闲置时则不占太大比例。此外,该比例还因两个内核是否都被占用而有所不同(即单线程和多线程)。下图介绍了曲线在不同使用模式下的变化状况。CPU、内存和文件系统测试均采用 SiSandra 性能指标评测(http://www.sisoftware.co.uk)进行。请注意,下列平台功耗不包含 LCD,因为我们已经将其排除在分析范围之外。(其它组件包括 WLAN、高清音频、迷你卡、ICH 和其它外设。)
由此可见,移动开发人员需要注意使用模式决定功耗水平,并且采用特别组件来延长电池使用时间并节省能量。
计算效率的目标是更迅速地完成任务。直觉告诉我们如果 CPU 能够通过更少的指令或者在多个内核中并行工作来完成任务,并将 CPU 调至低功耗状态,那么完成任务所需的整体能量将会降低。[1] 实现上述目标的一种方法便是使用最佳算法和数据结构来解决特殊问题。另一种方法是充分利用英特尔多核处理器的性能功耗比优势和多线程技术,来提高应用性能并节省能量,对此我们在下面列出了研究结果。
算法和数据结构都是计算机科学领域的长期研究领域。对此,行业投入了大量的资源进行研究,致力寻求更为有效的方式来解决问题,并调查和记录相应的时间和空间的平衡。虽然优化特殊算法本身并不是我们团队的兴趣所在,但是我们可以从计算机科学理论中得出结论:选择算法和数据结构能够为应用性能带来巨大改进。在所有其它条件都相同的情况下,使用能够以 Ο(n log n)时间计算出解决方案的算法表现将优于以 Ο(n2)时间完成工作的算法。对于某一特殊问题,堆栈可能优于序列,平衡树(B-tree)可能优于二叉树或散列函数。最佳算法或数据结构要根据许多因素决定,包括对问题的研究以及对架构、设计、算法和数据结构的认真考虑,从而使应用表现更出色,并且消耗更少的能量。如欲了解有关算法分析的详细研究信息,请参见[7,8,9]。
对移动平台来说,功耗始终是至关重要的方面之一。有了多线程应用,现有任务可比单线程应用更快地完成。因此,与单线程相比,鉴于系统资源的占用时间减少,性能得以大幅提升,功耗也随之显著降低。[6]
对应用进行线程化时还需注意其它事项。例如,应用中的多个线程处于不平衡状态(当某条线程比其它线程明显承担更多的工作负荷时)对性能功耗比的影响;各条线程对 CPU 的不同利用率(例如,某条线程可能造成 CPU 满负荷工作,而其它线程可能仅占用 10%-20% 的 CPU 资源);以及当线程关联到某一内核而非运行于多个独立内核时的情形。本研究将采用广泛的多线程应用示例和多任务处理场景来探讨上述问题,并针对多线程应用所应考虑的问题提出一些参考建议。
本文中的所有测试均在搭配 Napa(代号)平台的英特尔® 酷睿™ 双核工程样本系统上运行。功耗采用 Fluke NetDAQ® 测量。[3]
我们在此总结了大量应用(单线程和多线程实施)以及内部开发的测试内核特点,以测量性能功耗比。这些应用包括各种内容创建应用、游戏内核、采用英特尔® 集成性能基元(IPP)的内核,以及各种办公应用。
本文所讨论应用的单线程和多线程实施采用两套电源方案进行测试,该方案在与 Intel SpeedStep® 技术结合时由 Microsoft Windows* XP 提供:最大性能(MaxPerf)或始终开启(AO)模式,以及自适应(Adaptive)或便携笔记本电脑(PL)模式。其中 AO 模式可提供最大的可用频率,而 PL 模式则可调节频率,以达到节省能量的目的。
在下面报告的结果中,我们对以下线程模式进行了测试:
本节图表将讨论采用运行Windows* XP 的英特尔® 酷睿™ 双核工程样本系统上的性能功耗比结果。时间以秒为单位。功耗采用 Fluke NetDAQ 测量,并报告平均功耗值(单位为瓦 [W]),该值随后再转换为使用应用运行时数据的总功耗(mWHr)。
平衡线程
图 1 显示了运行多个单线程(ST)和多线程(MT)版本的 CPU 密集型应用的性能数据。加密技术和视频编码应用具有两套多线程部署,分别表示为 MT-1 和 MT-2。对于内容创建应用而言,仅用一套部署便可实现多线程化,即为 MT-1。相比单线程应用,多线程应用能够带来明显的性能提升。例如,加密技术的单线程应用约需 50 秒才能完成,而 MT-1 和 MT-2 版本却仅需约 25 秒。
图 1:平衡线程的性能
![]() |
![]() |
| 图 2:平衡线程——CPU 功耗(自适应) | 图 3:平衡线程——平台功耗(自适应) |
图 2 和图 3 分别显示了在自适应(便携式/笔记本电脑)模式下,CPU 功耗和平台整体功耗的测试结果。由于自适应模式能够通过按需动态修改 CPU 频率来降低功耗,因此我们选择了这种模式。对于所有应用运行(单线程和多线程),功耗数据采集均以最长运行时间为基准。例如,如图 1 所示,加密技术工作负载在单线程模式下约运行 50 秒,在多线程模式下约为 25 秒。无论在单线程还是在多线程情形下,功耗数据均按 50 秒测量。此举旨在确定是否能沟通过更快速地完成 CPU 密集型任务(如采用多线程技术),并在剩余时间中处于闲置状态,来实现功耗节省。
如图 2 所示,通过更快速地完成任务(多线程),并在剩余时间里处于闲置状态(单线程),我们最终实现了功耗节省。这表明,正确的多线程操作不仅能够提高性能,还可出色降低功耗。例如,加密技术单线程版运行约 50 秒的总功耗约为 150 mWHr,而该技术多线程版运行约 25 秒并在此的 25 秒内处于闲置状态,总功耗仅约为 110 mWHr。因此我们可以得出结论:多线程有助于降低功耗。图 3 显示了多线程应用对平台总功耗所产生的影响。如图所示,相比单线程版本而言,运行多线程应用会消耗更少的平台功率。
非平衡线程
在本节中,我们将对采用非平衡线程模式的应用的性能功耗比影响进行讨论。为了开展此项研究,我们采用 Microsoft DirectX* 创建了一个游戏物理引擎范例。该应用范例包括两部分:1)物理计算(图形对象的冲突检测及解析),和 2)渲染(在屏幕上标出更新位置)。该应用经过专门设计,以便对面向芯片多处理(CMP)处理器的平衡和非平衡线程进行研究。简言之:
我们创建两套多线程部署的目的在于:评估系统分别在采用非平衡线程模式与平衡线程模式情况下,对性能功耗比造成的影响。
图 4 显示了上述两种部署中不同电源方案的性能数据(最大性能、自适应和带有 GV3 fix 的自适应[4])。
如上图(图 4)的前两组数据所示,非平衡多线程(Imbalanced-MT)部署的性能从最大性能模式(MaxPerf)的约 64 秒降至自适应模式(Adaptive)的约 120 秒。但是,借助微软提供的 GV3 fix,非平衡多线程能在相比 ST 更短的时间内完成任务,理论上也应该如此。在因此,所有情况下,平衡多线程均比非平衡多线程拥有更出色的性能。
图 4:非平衡线程性能
图 5 显示了平台功耗的测量结果。此处,我们采用“平衡线程模式”一节中提到的技术作为基准,对功耗进行测量。不出我们所料,平台功耗随着自适应(PL)——缺省模式性能的降低而提升。由于非平衡多线程工作负载需要花费更长的时间才能完成,由此造成的性能下降将导致功耗增加。但是通过使用 GV3 fix,性能上的增强可对平台总功耗产生相应的改进作用。
图 4 所示的第三组数据表示了一个内核补丁(hotfix)。在这种情况下,自适应(PL)模式下的非平衡多线程部署可实现与最大性能(AO)模式相当的性能功耗比。借助该补丁,处理器能够以最佳频率运行,同时不会对自适应(PL)模式造成影响。图 5 中的自适应(PL)——带有GV3 Fix 一栏显示了带有该补丁的平台功耗数据。
图 5:非平衡线程——平台功耗
上述结果表明,非平衡线程模式/CPU 未得以充分利用可能导致性能下降,从而造成功耗上升。因此,我们建议在执行多线程应用时使用平衡线程模式。通过采用 Microsoft Perfmon*(微软性能监控器),以及英特尔® VTune™ 性能分析器和英特尔® 线程工具(如英特尔® 线程检测器和英特尔® 线程调节器)等工具提供的时间线视图,可识别线程平衡,以便跟踪单条线程的运行时间以及处理器的利用率。
一个应用关联到一个内核时的多任务场景
个人电脑用户经常使用的一项功能便是同时运行多个应用,即多任务处理。为了理解同时运行两套应用对性能及功耗的影响,我们进行了一项同时运行两个办公应用的实验。由于采用不同技术调度两个应用可能会对性能功耗比产生影响,因此我们对如下场景进行了检查:
这些调度方法用于确定某一调度机制与其它方法相比,是否既能降低功耗,又能提高性能。
这些配置的性能数据如图 6 所示。图中不同的调度配置间并无任何明显的性能差异。
图 6:多任务处理场景性能
如图 7 所示,相比 Windows XP 调度,第二种场景(将两个应用关联到单个内核)下的 CPU 功耗数据值略高。
类似的情况也出现在平台功耗中(图 8)。相比 Windows XP 执行调度,将两个应用硬件关联到单个内核场景下的平台功耗值略高。
![]() |
![]() |
| 图 7:多任务处理场景——CPU 功耗 | 图 8:多任务处理场景——平台功耗 |
根据本节所述的线程测试结果,可得出如下结论:
实现更高计算效率和性能的另一种方式是使用优化的编译器、性能库和/或高级的指令集。
目前,很多编译器都提供可寻找并行机遇的 OpenMP 指示功能。OpenMP* 是一种可移植、可扩充的并行应用开发模式。例如,英特尔® 专业版编译器(Intel® Professional Edition Complier)便可支持创建多线程应用。它包含众多特性,如先进的优化、多线程及处理器支持,可支持处理器调度、向量化、自动并行、OpenMP*、数据预取、打开循环(loop unrolling),以及高度优化的线程库。此外,Microsoft Visual Studio 2005 也包括 OpenMP 可移植线程库。
英特尔® 集成性能基元(IPP)包括高度优化的算法和代码,可用于视频/音频编码/解码、加密、语音编码和识别、计算机视觉(computer vision)、信号处理等常用功能。英特尔® 数学核心函数库可为众多数学和科学函数提供高效算法,包括快速傅立叶转换、线性代数和矢量数学。
高级指令集可帮助开发人员充分利用专为某些应用定制的全新处理器特性。例如,英特尔® SIMD 流指令扩展(SSE)4.1 就是一组专为应用定制的全新指令,涉及图形、视频编码和处理、3D 成像、游戏、web 服务器和应用服务器。这些指令的优化将为广泛的 32 位和 64 位应用带来更出色的性能和能效。如欲了解有关 SSE 4.1 和应用目标加速器的更多信息,请参考 [Ref14]。
[1] 您可能会注意到,它并非总是正确的,这点非常有趣。由于处理器状态与电压之间呈平方关系,我们可以得出:相比以更高的 P 状态运行更短时间相比,流程以更低的 P 状态运行更长时间实际上消耗的能量更少。这有待于我们做进一步研究。
[2] 如欲了解这一主题的更多详细信息,请访问:http://www.intel.com/technology/magazine/computing/mobile-power-saving-0506.pdf 
[3] http://us.fluke.com/usen/products/NetDAQ.htm?catalog_name=FlukeUnitedStates
[4] GV3 是微软提供的一个补丁程序(KB896256),可更改内核功率管理器,使其跟踪整个封装(而非独立内核上)的 CPU 利用率。当一个内核的工作负载远远少于另一个内核时,它可解决功率管理器因不正确计算处理器的优化目标性能状态而产生的问题。在自适应模式中,性能状态设置过低,性能受到负面影响。
[5] 如欲了解有关该研究的更多详细信息,请访问:http://softwarecommunity-zho.intel.com/articles/zho/1089.htm
[6] 如欲了解有关 MobileMark 2005 的详细信息,请访问:http://www.bapco.com/
[7] 如欲了解有关该分析的更多详细信息,请访问:http://softwarecommunity.intel.com/articles/eng/1091.htm
[8] 如欲了解本主题的更多详细信息,请访问:http://www.intel.com/cd/ids/developer/asmo-na/eng/333927.htm 
[9] 如欲了解有关本研究的全部详细信息,请访问:http://www.intel.com/cd/ids/developer/asmo-na/eng/dc/mobile/333574.htm
[10] 如欲了解有关 Extech 功耗分析器的详细信息,请访问:http://www.extech.com/instrument/products/310_399/380803Power.html
[11] 请访问:http://LinuxPowerTOP.org
| 上一页 | 1 2 3 4 | 下一页 | ||
第 1 页,共 4 页
|
||||