[发明专利]异构处理器体系的程序调试方法和系统有效
申请号: | 201210439335.4 | 申请日: | 2012-11-06 |
公开(公告)号: | CN102955737A | 公开(公告)日: | 2013-03-06 |
发明(设计)人: | 陈华蓉;王敬宇;冯赟龙;王雯霞 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 骆苏华 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 处理器 体系 程序 调试 方法 系统 | ||
技术领域
本发明涉及高性能计算领域,特别涉及一种异构处理器体系的程序调试方法和系统。
背景技术
微处理器和高性能计算系统未来的设计都将是异构并行或混合并行的体系结构,通用CPU和专用硬件或大规模并行加速器这两大类型的组件以不同比例集成,即便在同一厂家的不同代处理器之间,CPU的核数在增加,硬件参数、集成比例在变化,软件基础架构的关键部分已经很难跟上硬件变化的步伐,反过来又影响了处理器性能的充分利用和以高性能计算为支撑的行业生产力水平的提高。
异构众核计算目前都依赖程序员手工开发并行性,而软件调试方法就是把加速部件上的数据和程序状态搬回通用处理器部件上,用通用处理器上的调试工具进行检查,判断其正确性。
图1示出了一种多核处理器的程序调试架构,该架构采用断点调试技术:调试器修改被调试程序的正文段,用断点指令替换原来的一条指令,处理器执行断点指令后,将产生一个异常(调试异常),操作系统捕获调试异常,挂起被调试进程中的所有轻量级进程(LWP),再通过信号唤醒调试器进程,调试器接管处理被调试进程。断点调试中用的最多的调试命令是设置断点和单步,源码级单步就是对各种编程语言支持逐代码行、逐函数的执行,其实现算法简单地讲,就是逐条执行指令,直到当前PC不在当前源行的范围内,这个范围是根据编译器静态产生的调试信息来确定的。
断点调试技术对微处理器、操作系统(OS)、编译器的依赖性使断点调试工具面临体系结构变化带来的新挑战。现有的软件调试器架构只能适应唯一确定的微处理器体系结构,只能调试操作系统支持的软件线程。例如Intel idb只能调试通用x86处理器上的软件程序,开源社区的gdb在源码生成的过程中必须先确定目标平台类型,生成的gdb只能调试这种平台上运行的程序。众核处理器一个芯片上两种组件,各有其硬件指令集、寄存器集及其宽度、字长字节序等,中断和异常等基础支撑、程序编程方法也可能不同,而且众核处理器可能是未来广泛应用的处理器,非某一领域专用的芯片,留给程序员两种不同的调试方法不是最终的解决方案,因此,软件调试的基础架构必须做关键性的改变,以适应未来硬件设计的发展趋势。
软件调试从单核单进程调试发展到多核多线程调试,调试基础的一个重要改变是操作系统能够支持对轻量级进程的调试。但是大规模加速部件一般都采用硬件调度,属于硬件线程,缺少一种面向支撑软硬件线程的异构调试架构,同时向后兼容多核,使多核软件调试工具能够平稳升级。
异构处理器上,软件调试面临两个方面的问题:一是支持程序流程跟踪这一调试功能的最关键部分不能适应两种组件的问题,现有软件调试方法基于操作系统技术,只能满足相同概念的两个软件进程(或线程)之间的通信,无法控制另一种处理器组件,而且是大规模的加速计算组件;二是加速组件发生程序异常时的最近指令流还原问题,大规模加速组件不断增加并行核数,精简控制逻辑,以提高芯片并行计算性能,由于指令预取、乱序执行需要附加高价的跟踪逻辑,才能收集并还原运行时的程序轨迹,代价是增加芯片面积和功耗,导致高性能计算机的功耗大幅度增加,因此大规模加速组件很难像嵌入式芯片那样支持片上跟踪调试手段的实现。
GPU是一种集成了大规模加速组件的图形处理器,与CPU一起使用,建立与众核处理器类似的异构并行计算,但是GPU支持的并行应用类型有限,仍然有相当广泛的应用课题无法采用GPU加速并行,虽然GPU上的软件调试工具具备了对GPU程序进行跟踪调试的功能,但是GPU核的调度切换在调试情况下非常单一,这意味着在并行受限的情况下调试GPU程序,再现GPU程序的真实错误流程成为GPU软件调试最突出的问题。
发明内容
本发明技术方案要解决的技术问题是现有的软件调试方案不适用于异构处理器体系的异构并行程序调试。
为解决上述技术问题,本发明技术方案提供一种异构处理器体系的程序调试方法,所述异构处理器体系包括主核和从核两种片上组件,其特征在于,被调试程序是主从核混合并行程序,包括主核程序和从核程序,所述调试方法包括:
调试器根据用户设置对所述主核程序和从核程序分别设置用户断点;
操作系统捕获调试异常,所述调试异常由所述主核或从核基于用户断点而产生;
操作系统识别所述调试异常为主核调试异常还是从核调试异常,并将所述调试异常的主核现场和/或从核现场映射到调试器可访问的地址空间,然后唤醒所述调试器;
调试器被唤醒,查询所记录的主核现场和/或从核现场。
可选的,调试器对主核程序设置用户断点通过断点指令实现。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210439335.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:电力系统的数据自动采集方法
- 下一篇:一种光通信发射端信号的转换方法和系统