多核系统调试的七个关键技巧
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AMP(非对称多处理):是一组相互独立又相互关 联的的操作环境,每个核上都运行一个单独的操作 系统。
对多核系统进行系统级别调试的能力决定了对程序错误的分析能 力、系统的性能优化潜力。风河的ICE 2硬件仿真器、Trace模块 和Workbench片上调试工具一起构成一套完整的解决方案,为开 发人员创造了一个带多核分析与片上调试功能的开发环境。
SMP(对称多处理):对称处理系统采用的是同构芯 片组结构,并共享内存,在该环境中,一个单一操作系统 决定使用哪块芯片来处理任务。
果。调试此类问题的棘手之处在于你需要逐行检查每一个线程中的代 码。
而通常日志是解决这类问题的好方法——通过在代码上嵌入printf源代 风河的ICE 2硬件仿真器在开发过程中就考虑到了上述在多核系统中 会遇到的问题,在其中囊括了诸多高级调试功能,包括条件断点、同 步断点管理、逻辑芯片分组。假如原先你需要为一个八核装置安装两 个操作系统,一个Linux SMP系统控制其中的两个核,一个低级执行 体(数据平台)控制另四个核,那么现在风河的解决方案可以让所有 的核在同一个操作系统中并行工作并实现整体同步调试,这样就能让 调试程序最大程度地适用于整个系统,你还可以根据实际需要对其中 任意一个核进行单独调试,这些高级调试功能是其他工具组难以企及 的。而且风河的解决方案最多可支持16核并行调试,因此建立一套调 试环境可谓易如反掌,风河ICE 2硬件仿真器的是对多核环境下的调 试技术的一次重要革新。 风河开发的Wind River Trace模块为处理器提供了一个外部跟踪缓冲 器,帮助开发人员监控程序流程,及时发现那些寄存器和内存无法识 别的问题,大大延伸了ICE 2的性能。 码来进行错误跟踪——但是,在多核系统中,日志又会引发其它问 题:由于无法保证日志按顺序写入各个核,因此也就无法保证日志输 出的可靠性和准确性。甚至系统架构越是完善,越容易出现无法预计 的问题,内存、寄存器、缓存,系统中的任何一块都有可能受到影 响。因此针对多核芯片我们推荐您使用基于JTAG技术的解决方案来实 现不间断的实时调试。
4. 别让不合适的开发工具毁了整个项目
有些并发问题难以复制,常常在开发完成、系统投入 使用后出现。
更麻烦的是,有些并发问题难以复制,常常在开发完成、系统投入使 用后出现。降低此类风险的一种方法是在开发、测试阶段故意触发错 误。
4 I 多核系统调试的七个关键技巧
多核开发工具在保证可视化程度和稳定性的同时还简化端口设置和优 化的流程,并在传统的编辑-编译-调试循环的基础上实现新的功能。
当然,你可以使用JTAG(联合测试行动小组)测试端口来进行调 试,但要注意JTAG技术的应用并非一成不变,在由单核架构转向多 核架构的过程中,尤其需要了解JTAG技术在不同平台的应用上的差 异。JTAG的一大优势在于它确实能够在程序执行过程中让处理器暂 停工作并作出准确定位和调试。
2 I 多核系统调试的七个关键技巧
风河Workbench片上调试工具具备先进的代码管理功能,包括模 拟vi和Emacs的编辑工具、代码完成、参数提示和用于改进编辑编译-调试循环和降低出错率的源文件语法高亮显示。这一编辑器 与项目系统、构造系统、WoLeabharlann Baidukbench源代码分析器和 Workbench调试器高度集成,使开发人员能在各种源代码调试任 务之间轻松切换。
相比之下以往采用的一些调试方法则无法让低级别程序停止运行。但 即使使用了JTAG技术,多核系统的调试仍然是空前浩大的工程。由 于多核系统的每个核中都可能包含多个JTAG接口或者调试代码,你 很快就会发现自己陷入了无穷无尽的调整配置和测试工作中
2. 日志文件会引发阻塞
对内存或缓存等共享资源的同步存取如设置不当就容易引发竞态条 件、死锁、数据破坏等问题。这些问题往往不可预测也难以总结出规 律。处理同一数据的同一代码在不同的路径中可能会产生不同的结
至少会有四分之一的多核嵌入式设计项目将延长一倍 工期并且最多只能开发出原定50%的功能。
是否了解并能够避免上述可能出现的问题决定了整个开发项目是一 帆风顺还是困难重重。因此我们总结了您在决定转向多核系统前所 需要了解的七大问题。
1. 断点会破坏调试
从事多线程编程的开发人员都知道线程识别调试器对出现断点时找
3 I 多核系统调试的七个关键技巧
3. 并发架构的负面效应
多核系统中的资源冲突会引发轻微的、较难发现的竞态条件。设想一 个简单的循环程序中,两个核都在修改全局变量,那么这个循环永远 不会退出。逐行检查源代码研究也无法发现任何异常,或许最终只有 通过硬件观察点才能发现问题所在。
比如停掉一个核,发现该核对其它核隐蔽的依赖性,这样的方法能帮 助开发人员找到那些漏网的间歇性故障。
工作台代码覆盖率分析器能够动态分析运行程序的代码覆盖率,有 助于提高开发公司对多核环境运行相关软件的广泛覆盖率的信心。 工作台数据监控器能帮助开发公司实时观测变量、共享变量、数据 结构、内存位置。这些及其它先进的调试和分析功能能够为开发公 司提供定制最优性能结构所必要的洞察力。
(SMP)系统中哪怕5%的串行都足以抵消多核带来的性能提升。
所以多核系统刚投入使用时表现往往不尽如人意。比较常见且代 价昂贵的问题是在产品开发的整合期发现系统配置无法满足开发 要求。
“在任务因为序列限制无法分割时,再多的努力也不会对时间表造成任何影响。 不管指定多少个女人,怀孕期都注定是九个月。” — Fredrick P. Brooks Jr. 《人月神话:论软件工程学》
风河系统公司已经投资开发用于查看和整合嵌入式多核系统的动态运 行的工具。如风河系统查看器(system viewer)可帮助开发人员查看 操作对象(比如任务、线程、信号量)的互动。风河跟踪工具是非侵 入式外置硬件,能够从程序计数器中收集、分析历史数据以及其它低
在多核系统中,你通常需要一个能让你掌握每个核中代码执行情况的 工具,而一个优秀的系统整合工具的设计成本大概只占到总成本的 1%而已。
级处理信息详情。
为单核系统编写的代码可以植入四核处理器,也同样能 够满足多核处理器的需求。
有时候您可能需要一个非侵入式方案。外部硬件解决方案能在不影响 系统运行速度的同时进行调试,可让您实时把握包括内部总线、缓冲 资源、程序计数器在内的硬件/软件互动。稳健的外部解决方案有助 于开发人员记录和检测程序计数器的内容,,从而准确掌握输入指令 的次序——这一强大的工具能让帮助您发现不够合理的任务分配, 如SMP操作系统将一个任务转到另一个核导致效率降低等诸如此类的 问题。 对一个多核项目全局的把握对于其最终表现出的性能和将来的延展空 间都是至关重要的,在搭建一个操作平台时仅考虑某几个点或某几个 部分的解决方案是远远不够的,开发工具也是一项需要纳入全盘考虑 的内容。
风河ICE 2工具支持领先结构、大量硬件参考设计板。接入以太网 以后,整个公司的开发人员可以共享资源。这些工具,再加上风 河的培训和支持服务,定能够帮助你跨越鸿沟到达多核系统的彼 岸。
6. 多核结构会减慢速度
实现多核系统最优性能是项富有挑战性的工作。虽然可能并不明 显,但是,处理元件的数量越大,每核性能增强的可能性越小, 因为跨核协调任务需要消耗更多的时间。阿姆达尔定律告诉我们 哪怕只有一小部分程序不能并联也会限制系统可能达到的最快速 度。如果程序执行时间中有10%花在了串行代码上,那么不管增 加了多少个核,整体速度最多只能提高10倍。在一个对称多处理
VDC的研究报告表明,61%的嵌入式系统工程师期望 到2012年前能够在他们的开发项目中使用多核平台或 者多处理器结构。
但是,多核系统与传统的单核系统有着根本上的差别。作为系统开发 人员,我们需要进行更为周全的考虑:即在了解多核系统能给我们带 来的丰厚回报的同时,也需要留意可能发生的问题。有些是技术上的 问题,包括新的编程模式的复杂性和相关的调试技术,另外一些则关 系到项目范围、预算和时间进度上的不确定性。根据《嵌入式市场预 测师》的预测,至少会有四分之一的多核嵌入式设计项目将延长一倍 工期并且最多只能开发出原定50%的功能。
6 I 多核系统调试的七个关键技巧
可见种种难以预料的问题对您的项目进度和预算都会产生严重影 响,并增加失败的风险。但是也没有必要就此打退堂鼓。项目初 期在对称多处理或者非对称多处理之间做出正确选择是避免上述 风险的要旨之一。在交付对称多处理服务时,往往对操作系统依 赖过重,而忽略了满足特定结构要求的剖析和?。
-
5 I 多核系统调试的七个关键技巧
大多数开发环境和硬件调试器都不能应付这些复杂的状况,而 且,也不能支持这种分布式团队作业方式——这意味着更庞大的 工作组和更为复杂的工作流程——这正是多核项目的一大特征。 现今工程和系统测试团队分处不同国家的现象极为常见,因此, 建立一个公共的硬件库就很有必要了。试想如果你在另一个国家 有一批经验丰富的开发人员非常适合负责硬件原型设计中的调试 工作,你一定希望他们可以无缝访问调试环境,但如果你的JTAG 工具并不支持高速远程访问,你可能不得不去寻找又贵又不好用 的替代方案,最终把原本可能仅需要30分钟就能完成的调试作业 拉长至数日。在为多核芯片开发嵌入式应用程序时,先进的代码 管理和分布式团队对调试环境的集中访问将比过去任何时候都更 为重要
并行、性能、缓存一致性等问题都是切实存在的,而你需要一个 工具帮你在平台上快速找出问题所在。
5. 不要让多核的复杂性拖垮你的项目
从单核环境到多核环境的转轨对我们工作方式也是一大挑战,假如
多核开发和调试工具还需要解决配置、原型设计、仿真等新问 题,同时兼具诊断、分析和测试的功能。想要提高开发性能和质 量,就必须要有一个强大的工具来查应用程序、操作系统和芯片 之间的互动。无论你使用的是OS单核系统还是OS对称多处理系统 (SMP),或是最复杂的带虚拟层的OS非对称多处理和对称多处理 混合并行操作系统,这一工具都能通过内置的进程间通讯或核间 通讯来完成多核软件的原型设计、仿真、开发、分析和诊断。
到触发当前断点的线程并同步暂停所有线程起着十分重要的作用。 在多核系统中情况则要复杂得多,因为出现断点时不能保证使其它 处理器核同时暂停工作。在多核系统中,调试器需要进行跨处理器/ 跨核的断点监控和同步控制,否则就得执行成千上万条指令才能让 系统暂停工作。因此,在暂停发生断点那个核的同时锁闭其它核在 多核系统中是很常见的情况。
为整个团队尽可能配备最佳工具以确保项目的顺利进行。
准备好,你的代码库将会大幅度增容。为单核系统编写并转接到四 核处理器的代码需要进行扩展以满足多核系统的要求。项目文件的 管理和导航将变得更为繁琐和耗时。更糟的是,常规调试器要求你 必须为每个核开一个监控窗口,这就是说,如果是16核系统,则开 发人员需要不停地在16个窗口之间切换查看。因此,必须有一个调 试器既能进行整体观测又能分别查看每个核的情况。
多核系 统 调试的 七个关 键 技巧
首个项目开始前 需要了解的知识
今天你可能还未尝试过多核开发,但或许在不久的将来你就会涉足这 一领域。数十年来,程序开发人员一直致力于通过提高单核芯片的微 型化、时钟速度以及改良其设计来提高软件速度。相比之下,多核处 理器则能够高集成化并占用较小空间的基础上提供更多的功能,这就 意味着降低了能耗,为嵌入式系统制造商扩大了盈利空间。越来越多 的企业意识到多核系统相比传统的单核系统而言能为他们创造更多利 益,因而都开始逐渐转向。VDC的研究报告表明,61%的嵌入式系 统工程师期望到2012年前能够在他们的开发项目中使用多核平台或 者多处理器结构。
对可能出现的问题缺乏必要的了解,你可能需要耗费大量精力来应 付这个庞大而复杂的项目。
多核是一个新生事物,与之相关的像非对称多处理(AMP)、对 称多处理(SMP)、可视化、监控、超线程等术语对于大多数开发 人员来说都是新名词。他们可能并不了解如何在多核设备上运行传 统软件。随着多核系统的应用推广,越来越多的开发人员会面对并 发问题,而在过去这一问题通常有一名专员来解决。因此,必须要