多核系统调试的七个关键技巧

上传人:艾力 文档编号:36714178 上传时间:2018-04-01 格式:PDF 页数:8 大小:1.52MB
返回 下载 相关 举报
多核系统调试的七个关键技巧_第1页
第1页 / 共8页
多核系统调试的七个关键技巧_第2页
第2页 / 共8页
多核系统调试的七个关键技巧_第3页
第3页 / 共8页
多核系统调试的七个关键技巧_第4页
第4页 / 共8页
多核系统调试的七个关键技巧_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《多核系统调试的七个关键技巧》由会员分享,可在线阅读,更多相关《多核系统调试的七个关键技巧(8页珍藏版)》请在金锄头文库上搜索。

1、首个项目开始前需要了解的知识多核系统调试的 七个关键技巧2 I 多核系统调试的七个关键技巧今天你可能还未尝试过多核开发,但或许在不久的将来你就会涉足这一领域。数十年来,程序开发人员一直致力于通过提高单核芯片的微型化、时钟速度以及改良其设计来提高软件速度。相比之下,多核处理器则能够高集成化并占用较小空间的基础上提供更多的功能,这就意味着降低了能耗,为嵌入式系统制造商扩大了盈利空间。越来越多的企业意识到多核系统相比传统的单核系统而言能为他们创造更多利益,因而都开始逐渐转向。VDC的研究报告表明,61%的嵌入式系统工程师期望到2012年前能够在他们的开发项目中使用多核平台或者多处理器结构。VDC的研

2、究报告表明,61%的嵌入式系统工程师期望到2012年前能够在他们的开发项目中使用多核平台或者多处理器结构。但是,多核系统与传统的单核系统有着根本上的差别。作为系统开发人员,我们需要进行更为周全的考虑:即在了解多核系统能给我们带来的丰厚回报的同时,也需要留意可能发生的问题。有些是技术上的问题,包括新的编程模式的复杂性和相关的调试技术,另外一些则关系到项目范围、预算和时间进度上的不确定性。根据嵌入式市场预测师的预测,至少会有四分之一的多核嵌入式设计项目将延长一倍工期并且最多只能开发出原定50%的功能。至少会有四分之一的多核嵌入式设计项目将延长一倍工期并且最多只能开发出原定50%的功能。是否了解并能

3、够避免上述可能出现的问题决定了整个开发项目是一帆风顺还是困难重重。因此我们总结了您在决定转向多核系统前所需要了解的七大问题。1. 断点会破坏调试从事多线程编程的开发人员都知道线程识别调试器对出现断点时找到触发当前断点的线程并同步暂停所有线程起着十分重要的作用。在多核系统中情况则要复杂得多,因为出现断点时不能保证使其它处理器核同时暂停工作。在多核系统中,调试器需要进行跨处理器/跨核的断点监控和同步控制,否则就得执行成千上万条指令才能让系统暂停工作。因此,在暂停发生断点那个核的同时锁闭其它核在多核系统中是很常见的情况。当然,你可以使用JTAG(联合测试行动小组)测试端口来进行调试,但要注意JTAG

4、技术的应用并非一成不变,在由单核架构转向多核架构的过程中,尤其需要了解JTAG技术在不同平台的应用上的差异。JTAG的一大优势在于它确实能够在程序执行过程中让处理器暂停工作并作出准确定位和调试。 3 I 多核系统调试的七个关键技巧相比之下以往采用的一些调试方法则无法让低级别程序停止运行。但即使使用了JTAG技术,多核系统的调试仍然是空前浩大的工程。由于多核系统的每个核中都可能包含多个JTAG接口或者调试代码,你很快就会发现自己陷入了无穷无尽的调整配置和测试工作中SMP(对称多处理):对称处理系统采用的是同构芯片组结构,并共享内存,在该环境中,一个单一操作系统决定使用哪块芯片来处理任务。风河的I

5、CE 2硬件仿真器在开发过程中就考虑到了上述在多核系统中会遇到的问题,在其中囊括了诸多高级调试功能,包括条件断点、同步断点管理、逻辑芯片分组。假如原先你需要为一个八核装置安装两个操作系统,一个Linux SMP系统控制其中的两个核,一个低级执行体(数据平台)控制另四个核,那么现在风河的解决方案可以让所有的核在同一个操作系统中并行工作并实现整体同步调试,这样就能让调试程序最大程度地适用于整个系统,你还可以根据实际需要对其中任意一个核进行单独调试,这些高级调试功能是其他工具组难以企及的。而且风河的解决方案最多可支持16核并行调试,因此建立一套调试环境可谓易如反掌,风河ICE 2硬件仿真器的是对多核

6、环境下的调试技术的一次重要革新。2. 日志文件会引发阻塞对内存或缓存等共享资源的同步存取如设置不当就容易引发竞态条件、死锁、数据破坏等问题。这些问题往往不可预测也难以总结出规律。处理同一数据的同一代码在不同的路径中可能会产生不同的结果。调试此类问题的棘手之处在于你需要逐行检查每一个线程中的代码。而通常日志是解决这类问题的好方法通过在代码上嵌入printf源代码来进行错误跟踪但是,在多核系统中,日志又会引发其它问题:由于无法保证日志按顺序写入各个核,因此也就无法保证日志输出的可靠性和准确性。甚至系统架构越是完善,越容易出现无法预计的问题,内存、寄存器、缓存,系统中的任何一块都有可能受到影响。因此

7、针对多核芯片我们推荐您使用基于JTAG技术的解决方案来实现不间断的实时调试。风河开发的Wind River Trace模块为处理器提供了一个外部跟踪缓冲器,帮助开发人员监控程序流程,及时发现那些寄存器和内存无法识别的问题,大大延伸了ICE 2的性能。4 I 多核系统调试的七个关键技巧3. 并发架构的负面效应多核系统中的资源冲突会引发轻微的、较难发现的竞态条件。设想一个简单的循环程序中,两个核都在修改全局变量,那么这个循环永远不会退出。逐行检查源代码研究也无法发现任何异常,或许最终只有通过硬件观察点才能发现问题所在。在多核系统中,你通常需要一个能让你掌握每个核中代码执行情况的工具,而一个优秀的系

8、统整合工具的设计成本大概只占到总成本的1%而已。有时候您可能需要一个非侵入式方案。外部硬件解决方案能在不影响系统运行速度的同时进行调试,可让您实时把握包括内部总线、缓冲资源、程序计数器在内的硬件/软件互动。稳健的外部解决方案有助于开发人员记录和检测程序计数器的内容,从而准确掌握输入指令的次序这一强大的工具能让帮助您发现不够合理的任务分配,如SMP操作系统将一个任务转到另一个核导致效率降低等诸如此类的问题。有些并发问题难以复制,常常在开发完成、系统投入 使用后出现。更麻烦的是,有些并发问题难以复制,常常在开发完成、系统投入使用后出现。降低此类风险的一种方法是在开发、测试阶段故意触发错误。比如停掉

9、一个核,发现该核对其它核隐蔽的依赖性,这样的方法能帮助开发人员找到那些漏网的间歇性故障。风河系统公司已经投资开发用于查看和整合嵌入式多核系统的动态运行的工具。如风河系统查看器(system viewer)可帮助开发人员查看操作对象(比如任务、线程、信号量)的互动。风河跟踪工具是非侵入式外置硬件,能够从程序计数器中收集、分析历史数据以及其它低级处理信息详情。为单核系统编写的代码可以植入四核处理器,也同样能够满足多核处理器的需求。4. 别让不合适的开发工具毁了整个项目对一个多核项目全局的把握对于其最终表现出的性能和将来的延展空间都是至关重要的,在搭建一个操作平台时仅考虑某几个点或某几个部分的解决方

10、案是远远不够的,开发工具也是一项需要纳入全盘考虑的内容。多核开发工具在保证可视化程度和稳定性的同时还简化端口设置和优化的流程,并在传统的编辑-编译-调试循环的基础上实现新的功能。5 I 多核系统调试的七个关键技巧-并行、性能、缓存一致性等问题都是切实存在的,而你需要一个工具帮你在平台上快速找出问题所在。多核开发和调试工具还需要解决配置、原型设计、仿真等新问题,同时兼具诊断、分析和测试的功能。想要提高开发性能和质量,就必须要有一个强大的工具来查应用程序、操作系统和芯片之间的互动。无论你使用的是OS单核系统还是OS对称多处理系统(SMP),或是最复杂的带虚拟层的OS非对称多处理和对称多处理混合并行

11、操作系统,这一工具都能通过内置的进程间通讯或核间通讯来完成多核软件的原型设计、仿真、开发、分析和诊断。AMP(非对称多处理):是一组相互独立又相互关联的的操作环境,每个核上都运行一个单独的操作系统。对多核系统进行系统级别调试的能力决定了对程序错误的分析能力、系统的性能优化潜力。风河的ICE 2硬件仿真器、Trace模块和Workbench片上调试工具一起构成一套完整的解决方案,为开发人员创造了一个带多核分析与片上调试功能的开发环境。5. 不要让多核的复杂性拖垮你的项目从单核环境到多核环境的转轨对我们工作方式也是一大挑战,假如对可能出现的问题缺乏必要的了解,你可能需要耗费大量精力来应付这个庞大而

12、复杂的项目。多核是一个新生事物,与之相关的像非对称多处理(AMP)、对称多处理(SMP)、可视化、监控、超线程等术语对于大多数开发人员来说都是新名词。他们可能并不了解如何在多核设备上运行传统软件。随着多核系统的应用推广,越来越多的开发人员会面对并发问题,而在过去这一问题通常有一名专员来解决。因此,必须要为整个团队尽可能配备最佳工具以确保项目的顺利进行。准备好,你的代码库将会大幅度增容。为单核系统编写并转接到四核处理器的代码需要进行扩展以满足多核系统的要求。项目文件的管理和导航将变得更为繁琐和耗时。更糟的是,常规调试器要求你必须为每个核开一个监控窗口,这就是说,如果是16核系统,则开发人员需要不

13、停地在16个窗口之间切换查看。因此,必须有一个调试器既能进行整体观测又能分别查看每个核的情况。6 I 多核系统调试的七个关键技巧大多数开发环境和硬件调试器都不能应付这些复杂的状况,而且,也不能支持这种分布式团队作业方式这意味着更庞大的工作组和更为复杂的工作流程这正是多核项目的一大特征。现今工程和系统测试团队分处不同国家的现象极为常见,因此,建立一个公共的硬件库就很有必要了。试想如果你在另一个国家有一批经验丰富的开发人员非常适合负责硬件原型设计中的调试工作,你一定希望他们可以无缝访问调试环境,但如果你的JTAG 工具并不支持高速远程访问,你可能不得不去寻找又贵又不好用的替代方案,最终把原本可能仅

14、需要30分钟就能完成的调试作业拉长至数日。在为多核芯片开发嵌入式应用程序时,先进的代码管理和分布式团队对调试环境的集中访问将比过去任何时候都更为重要风河Workbench片上调试工具具备先进的代码管理功能,包括模拟vi和Emacs的编辑工具、代码完成、参数提示和用于改进编辑-编译-调试循环和降低出错率的源文件语法高亮显示。这一编辑器与项目系统、构造系统、Workbench源代码分析器和Workbench调试器高度集成,使开发人员能在各种源代码调试任务之间轻松切换。风河ICE 2工具支持领先结构、大量硬件参考设计板。接入以太网以后,整个公司的开发人员可以共享资源。这些工具,再加上风河的培训和支持

15、服务,定能够帮助你跨越鸿沟到达多核系统的彼岸。6. 多核结构会减慢速度实现多核系统最优性能是项富有挑战性的工作。虽然可能并不明显,但是,处理元件的数量越大,每核性能增强的可能性越小,因为跨核协调任务需要消耗更多的时间。阿姆达尔定律告诉我们哪怕只有一小部分程序不能并联也会限制系统可能达到的最快速度。如果程序执行时间中有10%花在了串行代码上,那么不管增加了多少个核,整体速度最多只能提高10倍。在一个对称多处理(SMP)系统中哪怕5%的串行都足以抵消多核带来的性能提升。所以多核系统刚投入使用时表现往往不尽如人意。比较常见且代价昂贵的问题是在产品开发的整合期发现系统配置无法满足开发要求。“在任务因为

16、序列限制无法分割时,再多的努力也不会对时间表造成任何影响。不管指定多少个女人,怀孕期都注定是九个月。” Fredrick P. Brooks Jr.人月神话:论软件工程学7 I 多核系统调试的七个关键技巧-可见种种难以预料的问题对您的项目进度和预算都会产生严重影响,并增加失败的风险。但是也没有必要就此打退堂鼓。项目初期在对称多处理或者非对称多处理之间做出正确选择是避免上述风险的要旨之一。在交付对称多处理服务时,往往对操作系统依赖过重,而忽略了满足特定结构要求的剖析和?。即使5%的串行都足以抵消多核带来的性能提升风河Simics工具能在定义、开发、配置任何系统(包括从单板到复杂、异构多核系统的所有系统)时,帮助开发公司创建高性能的虚拟环境。在开发公司投入较多资源作出重大实际变更之前,开发公司的团队可以使用在物理硬件上不可能使用的方法和技巧,开发结构选件,评估性能。风河workbench可让你通过系统查看器回放、检查采用直观图像格式的预先录制系统事件信息。开发人员可以识别高峰时间、通过强度或类型来搜索事件或搜寻某一特定事件

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号