英特尔® 凌动™ 处理器开发人员指南(第 4 部分,共 4 部分)

提交新文章

2009年07月30日 10:00


作者 Nancy Nicolaisen

对于许多解决方案架构设计师而言,决定开发基于移动互联网设备 (MID) 的产品或服务需要对如何尽可能最快地部署到高度移动、互联的受众进行策略分析。毫无疑问,关于平台的问题会归结到一点:smartphone 或 MID?

显然,smartphone 在全球拥有不可小视的庞大用户群;但作为解决方案实施平台,这些设备有两个不可忽视的缺点:几乎每种设备相互独立,而且开发、测试和部署的成本高昂。通过重复利用遗留代码库的灵活方法,英特尔? 凌动? 处理器 MID 克服了这两个巨大障碍。要以最快速度部署被改变用途的应用程序和组件,关键在于了解程序调试、压力测试和调整工具如何能针对移动内容、娱乐、社交网络和业务流程应用程序加快优化并达到明显的“上市时间”优势。

英特尔® 凌动™ 处理器优化项目架构设计师的基本原则

总体而言,要优化从桌面或笔记本电脑下载至小屏幕、电池驱动设备的候选应用程序或内容项涉及以下三个步骤:

  • 确定功能和架构的相似点。 相似点可能大量存在于原始应用程序的数据模型和业务逻辑。首先使用基本的 UI 皮肤功能和简化的特性集来优化这些相似点。在可行的情况下,调整浮点运算、查询行为,并重新设计基于计时器的行为以使用事件,而不是时钟频率。主要 IDE 支持和效能工具:为了实现快速开发,将您的编译器设为冗余报警级别,禁用优化功能;使用交互式调试器;采用动态压力测试工具。
  • 找出功能和架构的相异点:相异点可能是UI特性和网络连接处置逻辑。迅速确定哪些值得保留,哪些需要重新设计和重新实施。面对无法满足小型电池驱动设备的尺寸或电源管理要求的现有资产,能够果断地放弃对于快速成功地推进优化项目非常重要,尤其是对于用户体验的最终质量。 主要资源:微软* 移动 PC 用户体验指南
  • 在优化中尽早解决主要移动性问题:由其性质决定,小型设备是 100% 资源受限的环境,也是100% 灵活状态环境。电源可用性、网络连接、网络连接类型以及是否配置外设都非常灵活和动态。桌面/笔记本电脑应用程序很少能自如地处理这种程度的操作环境变化,而最佳候选集中在事件驱动的架构。主要 IDE 支持和效能工具:优化编译器,调整指标。

优化用于英特尔® 凌动™ 的 i86 遗留代码:最佳实践、工具和技术

借助自动化调试工具实现的读写能力和熟练性是优化团队的关键技能。 决定将英特尔® 凌动™ 处理器 MID 用于超移动应用程序的一个主要考虑因素是开发和部署平台非常接近对称,为优化项目带来独特的技术、经济和战略优势。最显著和最强大的 i86 遗留代码优势可能是能够在 Windows* 工作站上进行所有编码(以及多数测试和调试)工作。在实现上市竞争优势方面,关注英特尔? 凌动? 处理器的开发人员可受益于可有效影响代码质量的专业工具:调试器、性能调节器和压力测试引擎。以下是调试和测试的成本和计划影响的有关情况:

  • 研究显示,不到三分之一的开发人员使用自动化调试工具来缩短其开发周期。相反,多数人依赖于嵌入的调试代码(如写入界面或控制台窗口的应用程序诊断消息),其本身也会出现问题。开发环境调试工具使用中的读写能力是可以影响软件项目“基础”的技能,也值得对所有软件设计团队成员进行指导和培训。
  • 远程调试(通常在代码已部署至设备但不能在工作站上复制时需要隔离问题)有一个非常致命的效能漏洞:“线上”执行比在工作站上执行慢几个数量级。在目标设备上的最终测试当然也是必需的步骤。但开发人员可以在部署至移动设备之前使用快速、准确、基于 IDE 的调试和测试工具来验证代码,从而利用 Windows* 桌面和 MID 执行环境之间的对称性,显著加快基于 MID 的新应用程序开发或者现有代码库的优化。
  • 调试通常被看作“执行后”任务,但前瞻性编码规范和技术可以在项目中提前发现软件缺陷,或者使得将来对其的检测更轻松、成本更低。这些也是“基础”考虑因素,因为检测、隔离和纠正漏洞的成本随着项目周期的每个步骤成倍增加。
抢占式调试策略
已编译代码通常在小型设备上有可观的优化潜力。因为它很大程度上受到应用程序直接控制的影响,而且电源管理是任何基于 MID 的解决方案设计的一项核心考虑因素。因此,电池驱动的平台青睐高度优化和已编译的解决方案。由此可以说,遗留应用程序中至少有一些 C/C++ 偏差可以被确定为英特尔? 凌动? 微体系架构优化候选方案。(英特尔提供自己的优化 C++ 编译器,作为微软 Visual Studio Development* 环境的插件。)制定相应的最佳实践和编码规范,确保优化后的现有台式机/笔记本代码能在英特尔? 凌动? 微体系架构设备上正常运行:
  • 系统、有意识地使用内联调试代码,并利用其存在向将来的维护人员说明潜在漏洞区域。 即使是最好的桌面调试器也可能无法提供对英特尔? 凌动? 处理器应用程序行为的完整可见性,尤其在采用非常规或自定义 USB 外设的情况下。在调试桌面的过程中,注意大段代码,它们可能由于开发和部署环境的差异而出现问题。(想想电源感知、硬件感知和网络连接感知。)使用预处理器标志(#define / #undef 和 #ifdef / #endif 以便在开发过程中有条件地对调试源进行编译。此技术有两个优点。第一,可防止重复插入和删除调试代码,因为它能在不需要调试语句时对其进行“取消定义”,从而关闭特定的调试语句。第二,能为将来的代码维护人员提供有关信息,说明应用程序原始架构可能出现问题。
  • 注意 C/C++ 代码库中软件缺陷的共同原因,并在开发和早期优化时主动采取措施,找到缺陷。 选择例行并且方便的时间,使用最严格的错误报告和类型检查水平集来定期编译代码。这样,编译人员就可以找出可导致部分最常见软件缺陷的疏忽和编码错误:未初始化的变量、不匹配的类型、函数签名的问题等等。
  • 使用例外处置来解决移动设备主要和典型特性中的基础漏洞。由于例外条件的存在,用户不能区分“漏洞”导致故障的应用程序和不能遵循正常执行路径的应用程序,因此成功的降级策略是“必备”的。例外条件在电池驱动的移动设备上发生的可能性非常小,因为此类设备本身几乎在每个方面都采用资源受限的执行环境。MID C++ 编码和设计风格应当采用结构化的例外处置,以应对很少在采用外接电源的应用程序中出现的三类例外条件:
    • 电源感知: 应用程序应当检测出设备使用的是外接电源或电池电源,并且能适应与电源相关的变化。电源管理因素中的潜在例外条件包括应中断或暂停的运行(想想冗长的浮点运算、查询循环系统、复杂的图形重现等)、设备电池低于特定阈值时的成功关闭,以及“休眠”功能。防御性编程。提前考虑到用户将会启动的任务(例如,播放电影)。提前确定是否有足够的电池电量来完成该任务,并且如果根据电池电量的当前状态不能成功完成,则要在任务启动时向用户报警。
    • 网络感知:英特尔? 凌动? 处理器级设备的内在移动性意味着用户希望随意漫游,并以尽可能最轻松的方式处理网络连接,实现无缝。此类设备的电池驱动特性还决定了精明的用户会有意地丢失连接,因为完全的天线功率可耗费一半的电池电量。因此,针对英特尔? 凌动? 处理器进行优化的应用程序必须能够处理例外条件,如网络连接在用户漫游时动态丢失、重新连接和手动关闭。因为 MID 通常能提供多种连接(如无线、以太网、蓝牙*……),MID 的连接行为远远比基于桌面或笔记本电脑的应用程序灵活。
    • 硬件感知: 消费者青睐移动设备的方便和“灵巧”;但恰恰由于它们尺寸较小,用户希望能用可扩大或加强其功能的外设或其他电脑来为其“配套”。这为例外硬件条件创造了巨大的可能,其中一些非常复杂。(想想外部显示器或多显示器)。屏幕尺寸、像素密度、屏幕方向和色彩功能的变化都可能导致调用应用程序进行检测和中转。
有些类型的软件缺陷最初并不明显或在开发环境下不会重复,因为目标是资源受限的平台。对于这种情况的发生,存在多种可能的解释:
  • 用户和开发人员系统中的文件和应用程序并不完全相同;
  • 小型设备会发生暂时性的资源枯竭(内存、电源、带宽等),但开发系统不会;
  • 导致竞争条件或内存泄露的计时和线程特性会对小型设备产生可见的影响,但不会影响开发系统。
要找出不可复制问题的根源,特别是在小型设备上间歇性发生时,关键就是压力测试。各种压力测试技术和工具作为开源工具和实例提供(见表 1 链接,了解 Windows* 应用程序压力测试工具的更多信息),但其基本原理都是从系统中撤出资源,直到应用程序出现故障或成功地处置例外情况。压力测试工具通常是找出应用程序间交互导致的内存泄露和竞争条件的唯一方法。由于 MID 这样的小型设备肯定会频繁出现电源、内存、带宽和处理器利用率接近枯竭的情况,所以此类设备必须进行压力测试以确保优化后代码的质量和可靠性。(了解压力测试工具的更多信息。)

调试和优化英特尔® 凌动™ 微体系架构代码的最佳工具

毫无疑问,面向 Windows 的 MID 开发人员的最佳整体开发环境由开发出微软 Windows* 微软* Visual Studio* 9.0(90 天免费试用,此处下载)的团队开发,开发人员能在购买前体验其集成的调试工具和支持。微软的视觉化和直观的调试界面使开发人员能监控存储区域;设置执行、内存访问和事件的断点;动态查看堆栈和注册表内容;追踪代码执行;并附加进程。(单击此处,参考华盛顿大学计算机科学与设计项目的 MSVC 调试器教程。)

在工作站,调试应用程序以接近本地设备的速度在断点间运行,这意味着英特尔® 凌动™ 设备的优化编码早期工作可以非常迅速的进行。在目标设备上验证应用程序时,微软 Visual Studio 可以为应用程序运行在 MID 端的 Windows XP* 或 Windows Vista* 平台上的远程调试提供几乎相同的支持。基本上,要实现该功能,可以在 MID 上安装远程调试监控器(带有 Visual Studio 9.0),或者在工作站上通过文件共享运行远程调试监控器。(远程调试器安装说明。)

如果决定采用 Visual Studio,但希望对已优化代码生成进行更多的控制,英特尔® 提供了两种附加工具,专门改进用于英特尔® 处理器的代码:英特尔® C++ 编译器和 VTune™ 性能分析器。(英特尔® 工具下载链接。)以下是有关优化英特尔® C++ 编译器以及相同用途的微软编译器的一点重要说明:直至开发周期的最后,才需要使用编译器优化。根据其性质,编译器的优化遍数可修改和重新安排已生成的代码,从而产生多种效率:尺寸、速度、电源管理等。这意味着,您有必要检查编译器生成的指令,某些情况下如果源代码和生成的汇编代码之间存在任何通讯,将不会有指令。主动调试时,禁用所有编译器优化

要想说明没有人能像英特尔一样了解英特尔® 执行环境可能非常繁琐。经过十多年的持续改进和演化,英特尔® 优化编译器可以生成调整良好、强大、稳定的可执行程序。目前,英特尔付出大量努力,致力于添加对英特尔® 凌动™ 处理器优化的支持。要详细了解这些功能,请单击此处查看英特尔的编译器技术及其优点。(相同的优化可能用于提升针对 Windows* 的代码性能和能耗。)

VTune™ 优化工具用于定量哪些应用程序(以及应用程序的哪些部分)可以快速成功地针对小型设备进行优化。VTune™ 可对运行在小型设备上的代码提供快速、决定性的性能指标,从而发现可能影响电池寿命或导致有限操作环境不稳定的不足之处,并且非常适用于分析特定线程应用程序的性能。

表 1. 调试和调整用于英特尔® 凌动™ 的应用程序的开发工具和资源

工具和资源 URL
微软* Visual Studio*(90 天免费试用) http://msdn.microsoft.com/en-us/evalcenter/bb655861.aspx
英特尔® 优化编译器套件专业版(Windows*)- 评估(30 天免费试用) http://www.intel.com/cd/software/products/asmo-na/eng/388198.htm
英特尔® VTune™ 性能分析器(30 天免费试用) http://www.intel.com/cd/software/products/asmo-na/eng/239144.htm
MSDN* 开发人员网络:如何设置远程调试 http://msdn.microsoft.com/en-us/library/bt727f1t.aspx
James McCaffrey 的“压力测试” http://msdn.microsoft.com/en-us/magazine/cc163613.aspx
微软“移动 PC 用户体验指南” http://msdn.microsoft.com/en-us/library/ms695565(VS.85).aspx

表 2. 英特尔® 凌动™ 微体系架构开发人员延伸阅读

工具 URL
“对运行Windows* XP 的英特尔® 凌动™ 处理器使用 VTune™ 性能分析器” http://software.intel.com/en-us/articles/using-vtune-atom-windows
“对移动互联网设备使用 VTune™ 性能分析器取样采集器” http://software.intel.com/en-us/articles/sampling-collector-mid/
“开发用于微软 Windows* 平台上的上网本和超移动设备应用程序” http://software.intel.com/en-us/articles/developing-applications-netbooks-umpc


总结

在好消息非常匮乏的这一年,英特尔® 凌动™ 及其附属技术(MID、上网本、低功耗家用文件服务器)为开发人员带来了福音。使用英特尔® 凌动™ 处理器的平台成为为数不多却令人振奋的科技事件之一,它开启了崭新的市场,使新类型的解决方案成为可能。基于英特尔® 凌动™ 的设备也许具有真正的革命性和震撼性,而且 Windows* 软件开发人员采用英特尔® 凌动™ 处理器的途径正在增多和发生演化,尤其对于那些很早涉及 PC 体验或嵌入式系统背景的开发人员。英特尔® 凌动™ 具有绿色环保特性——它的制造过程非常清洁;回收影响可以忽略;使用的能源低于同类的任何集成电路。英特尔® 凌动™ 也是一匹黑马。尽管几乎所有其他技术市场都面临严峻的经济形势,然而分析人士无一例外地预测 MID/UMPC/上网本市场本年度将蓬勃发展,在 2010 年及以后还有可观的增长。

本系列文章其它部分的链接:

第一部分 全新类型的互联网终端

第二部分 选择移植的备选目标

第三部分 选择优化的备选目标

第四部分 调试指南


作者简介

Nancy Nicolaisen,移动和嵌入式设备技术领域的文章作者、研究人员和资深软件开发人员。她所撰写的专题文章、专栏和分析报告经常被发表于世界各国的出版物,其中包括《BYTE》、《PC Magazine》、《Windows Sources》、《计算机产品导购》(Computer Shopper)、《Dr. Dobbs Journal of Software Engineering》、《Microsoft Systems Journal》等;她目前共发表了三部专著:《Making Windows Portable:Porting Win32 to Win CE》(John Wiley & Sons 出版公司,2002 年);《The Practical Guide to Debugging 32 Bit Windows Applications》(McGraw Hill 出版社,1996 年);《The Visual Guide to Visual C++》(Ventana Press,1994 年),现被译为 5 种语言。2007 年,她在名为“设计、构建和管理无线网络”(Designing, Building and Managing Wireless Networks)的 Microsoft Professional Education 课程的开发工作中担任技术顾问。Nicolaisen 女士目前的研究重点是开放源代码技术与移动、嵌入式和无线设备发展趋势。