CN112445696B - 面向异构众核Dcache纵向一致性的调试方法 - Google Patents
面向异构众核Dcache纵向一致性的调试方法 Download PDFInfo
- Publication number
- CN112445696B CN112445696B CN201910822174.9A CN201910822174A CN112445696B CN 112445696 B CN112445696 B CN 112445696B CN 201910822174 A CN201910822174 A CN 201910822174A CN 112445696 B CN112445696 B CN 112445696B
- Authority
- CN
- China
- Prior art keywords
- program
- core
- dcache
- slave core
- breakpoint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开一种面向异构众核Dcache纵向一致性的调试方法,包括以下步骤:S1、启动软件调试器,运行可执行程序,设置若干个从核断点;S2、在程序运行到从核断点前,保存现场;S3、在预设的地址空间上预先设计一段指令,用于调用函数Flush,从而刷新当前从核所有Dcache行到主存中,当程序运行到从核断点前时,执行S2;S4、在完成从核Dcache的数据刷新后,利用ret指令,在程序运行到从核断点后,将程序的控制流转回到断点处理程序,实现现场的恢复;S5、当程序完成现场恢复后,返回程序原来的指令,继续往下执行。本发明在不增加硬件实现开销的前提下,保证软件调试时获取到真实有效的数据,从而实现错误现场的精确定位,有效支撑了异构众核上的软件调试,保证了软件调试功能的可用性。
Description
技术领域
本发明涉及一种面向异构众核Dcache纵向一致性的调试方法,属于计算机技术领域。
背景技术
软件调试需要微处理器体系结构、操作系统、编译器、线程库等多层面的支撑,体系结构的变化最有可能促进软件调试的技术创新。常见的调试技术有断点和调试日志。断点技术是基于硬件中断和程序异常,分段运行程序,并捕获精确的程序现场,然后逐段检查程序的运行情况,捕捉可能的运行时错误。调试日志技术是基于一定的判断条件,编译时在程序中静态插入探测程序,运行时调用这种探测程序进行事件记录,在被调试程序出错之后,根据记录的调试日志,事后分析程序错误现场,定位错误原因。两种调试技术是相辅相成的,辅助用户软件开发的不同阶段调试程序的功能正确性。
当片上核数数以千计时,Dcache一致性的开销显著增大,而且应用的局部性并不要求全局数据的一致性,因此有的体系结构仅实现了部分核之间的Dcache一致性,或者本文提到的纵向一致性,这时主核访存过程中可能无法从从核Dcache中获得最新数据;只有从核淘汰或装填时,能够获取主核Dcache中的最新数据。为了在特定时刻获得Dcache一致性问题,处理器提供从核Dcache条目淘汰和装填的指令,由数据所有者从核执行软件显式刷新Dcache,回写到主存,并执行特殊指令保证回写完毕,由编程人员根据课题需要来控制Dcache一致性的粒度。
在调试过程中,断点是运行时动态设置的,必须动态调整Dcache一致性的粒度,使程序停在从核断点时调试器能够获得有效的从核数据备份。
目前异构众核处理器成为了高性能计算的主流体系结构,为并行程序的快速运行提供了便利,也对软件调试提出了更高的要求。由于众核处理器的异构特性,硬件仅支持Dcache纵向一致性,从核Dcache对软件是不透明的,而
目前软件调试工具多限于多核处理器架构(SMP),大多要求硬件支持全片cache一致性,无法适应异构众核处理器架构,不支持具有Dcache纵向一致性的众核处理器,因而迫切需要一种适用于异构众核处理器的软件调试装置。
发明内容
本发明的目的是提供一种面向异构众核Dcache纵向一致性的调试方法,该面向异构众核Dcache纵向一致性的调试方法在不增加硬件实现开销的前提下,保证软件调试时获取到真实有效的数据,从而实现错误现场的精确定位,有效支撑了异构众核上的软件调试,保证了软件调试功能的可用性。
为达到上述目的,本发明采用的技术方案是:一种面向异构众核Dcache纵向一致性的调试方法,包括以下步骤:
S1、启动软件调试器,运行可执行程序,设置若干个从核断点;
S2、在程序运行到从核断点前,保存现场;具体为,利用软件方法将从核断点处的指令替换为一条跳转指令,使得该指令跳转到一断点处理程序,该断点处理程序将从核的堆栈信息、寄存器信息保存后,跳转到下一个预设的地址空间;
S3、刷新Dcache到主存;具体为,在预设的地址空间上预先设计一段指令,用于调用函数Flush,从而刷新当前从核所有Dcache行到主存中,当程序运行到从核断点前时,执行S2,再跳转到预设的地址空间的入口地址,自动调用flush函数将当前从核Dcache中的数据刷新到主存中;
S4、恢复现场;即在完成从核Dcache的数据刷新后,利用ret指令,在程序运行到从核断点后,将程序的控制流转回到断点处理程序,实现现场的恢复,即恢复S2中保存的从核的堆栈信息和寄存器信息;
S5、当程序完成现场恢复后,返回程序原来的指令,继续往下执行。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向异构众核Dcache纵向一致性的调试方法,其在具有Dcache纵向一致性的硬件环境上,通过在从核程序到达断点之前完成从核Dcache的刷新,排空从核指令流水线,使得从核Dcache中的数据与主存数据保持一致,在不增加硬件实现开销的前提下,保证软件调试时获取到真实有效的数据,从而实现错误现场的精确定位,有效支撑了异构众核上的软件调试,保证了软件调试功能的可用性,有效弥补了异构众核架构下软件调试方法的不足。
附图说明
附图1为面向异构众核Dcache纵向一致性的调试方法的软件调试流程图。
具体实施方式
实施例:一种面向异构众核Dcache纵向一致性的调试方法,基于大规模异构系统,包括以下步骤:
S1、启动软件调试器,运行可执行程序,设置若干个从核断点;
S2、在程序运行到从核断点前,保存现场;具体为,利用软件方法将从核断点处的指令替换为一条跳转指令,使得该指令跳转到一断点处理程序,该断点处理程序将从核的堆栈信息、寄存器信息保存后,跳转到下一个预设的地址空间,所述软件方法为,假设断点处的地址为A,先将断点处的指令地址移到地址B,将地址A处的指令替换为一条跳转指令;
S3、刷新Dcache到主存;具体为,在预设的地址空间上预先设计一段指令,用于调用函数Flush,从而刷新当前从核所有Dcache行到主存中,当程序运行到从核断点前时,执行S2,再跳转到预设的地址空间的入口地址,自动调用flush函数将当前从核Dcache中的数据刷新到主存中;
S4、恢复现场;即在完成从核Dcache的数据刷新后,利用ret指令,在程序运行到从核断点后,将程序的控制流转回到断点处理程序,实现现场的恢复,即恢复S2中保存的从核的堆栈信息和寄存器信息;
S5、当程序完成现场恢复后,返回程序原来的指令,继续往下执行。
实施例进一步解释如下:
本发明针对异构众核处理器Dcache纵向一致性的特性,在从核程序到达断点之前完成从核Dcache的刷新,排空从核指令流水线,使得从核Dcache中的数据与主存数据保持一致,保证软件调试时获取到真实有效的数据,从而实现错误现场的精确定位。利用该装置可以在不增加硬件实现开销的前提下,有效解决异构众核Dcache纵向一致性结构特点下的软件调试问题。整个装置的流程如图1所示,具体步骤如下:
S1:启动软件调试器,运行可执行程序,设置从核断点。
S2:程序运行到从核断点前,保存现场。具体方法是:利用软件方法将断点处的指令替换为一条跳转指令,该指令跳转到一个断点处理程序,断点处理程序在做好适当的现场保存工作后(如堆栈和寄存器信息的保存),跳转到一个预设的地址空间。
S3:刷新Dcache到主存。具体方法是:在预设的地址空间上预先设计了一段指令,调用函数Flush,其功能是刷新当前从核所有Dcache行到主存中。当程序到达断点前,完成现场保存,再跳转到该地址,自动调用flush函数将当前从核Dcache中的数据刷新到主存中。
S4:恢复现场。在完成从核Dcache的数据刷新后如堆栈和寄存器信息的保存,利用ret指令,可以在到达断点后,将程序的控制流转回到断点处理程序,完成现场的恢复功能。
S5:返回程序原来的指令,继续运行。当程序完成现场恢复后,返回程序原来的指令,继续往下执行。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
主核:异构处理器中运行操作系统的处理器核,进行计算、存储资源的管理,并提供消息、文件、调试、低功耗管理等服务。
从核:异构处理器中精简设计的处理器核,支撑并行程序的加速计算。
硬件指令断点:用于确定指令流中某个虚地址是否执行到。当处理器取指部件中的指令流地址(PC)和断点寄存器中某个断点的虚地址发生地址匹配,且满足其它一些使能条件时,停止取指,排空指令流水线,中断程序的执行。
Dcache纵向一致性:Dcache即数据cache,异构众核处理器为增加核数提高性能降低功耗,进行了多方面精简设计,例如硬件只保证数据拥有者的Dcache一致性,即拥有数据的运算核的Dcache中的数据备份和主存的数据之间具有一致性,该运算核必须显式淘汰Dcache中的数个cache行或全部数据到主存中,控制核(简称主核)和其它运算核(简称从核)才能共享到有效的数据。本文称这种有条件的Dcache一致性为Dcache纵向一致性。
采用上述面向异构众核Dcache纵向一致性的调试方法时,其在具有Dcache纵向一致性的硬件环境上,通过在从核程序到达断点之前完成从核Dcache的刷新,排空从核指令流水线,使得从核Dcache中的数据与主存数据保持一致,在不增加硬件实现开销的前提下,保证软件调试时获取到真实有效的数据,从而实现错误现场的精确定位,有效支撑了异构众核上的软件调试,保证了软件调试功能的可用性,有效弥补了异构众核架构下软件调试工具的不足。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (1)
1.一种面向异构众核Dcache纵向一致性的调试方法,其特征在于:包括以下步骤:
S1、启动软件调试器,运行可执行程序,设置若干个从核断点;
S2、在程序运行到从核断点前,保存现场;具体为,利用软件方法将从核断点处的指令替换为一条跳转指令,使得该指令跳转到一断点处理程序,该断点处理程序将从核的堆栈信息、寄存器信息保存后,跳转到下一个预设的地址空间;
S3、刷新Dcache到主存;具体为,在预设的地址空间上预先设计一段指令,用于调用函数Flush,从而刷新当前从核所有Dcache行到主存中,当程序运行到从核断点前时,执行S2,再跳转到预设的地址空间的入口地址,自动调用flush函数将当前从核Dcache中的数据刷新到主存中;
S4、恢复现场;即在完成从核Dcache的数据刷新后,利用ret指令,在程序运行到从核断点后,将程序的控制流转回到断点处理程序,实现现场的恢复,即恢复S2中保存的从核的堆栈信息和寄存器信息;
S5、当程序完成现场恢复后,返回程序原来的指令,继续往下执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910822174.9A CN112445696B (zh) | 2019-09-02 | 2019-09-02 | 面向异构众核Dcache纵向一致性的调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910822174.9A CN112445696B (zh) | 2019-09-02 | 2019-09-02 | 面向异构众核Dcache纵向一致性的调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445696A CN112445696A (zh) | 2021-03-05 |
CN112445696B true CN112445696B (zh) | 2022-09-13 |
Family
ID=74734896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910822174.9A Active CN112445696B (zh) | 2019-09-02 | 2019-09-02 | 面向异构众核Dcache纵向一致性的调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445696B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113742237A (zh) * | 2021-09-13 | 2021-12-03 | 北京奕斯伟计算技术有限公司 | 程序调试方法、装置、设备以及存储介质 |
CN115185746B (zh) * | 2022-09-07 | 2022-11-25 | 中国电子科技集团公司第五十八研究所 | 一种基于C66x多核DSP芯片的上下文环境备份与恢复方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101295279B (zh) * | 2007-04-29 | 2012-05-09 | 国际商业机器公司 | 多线程环境下的调试程序的方法和系统 |
CN101751373A (zh) * | 2008-11-28 | 2010-06-23 | 上海芯豪微电子有限公司 | 基于单一指令集微处理器运算单元的可配置多核/众核系统 |
CN102446158B (zh) * | 2010-10-12 | 2013-09-18 | 无锡江南计算技术研究所 | 多核处理器及多核处理器组 |
CN102955737B (zh) * | 2012-11-06 | 2015-08-12 | 无锡江南计算技术研究所 | 异构处理器体系的程序调试方法和系统 |
CN105468448B (zh) * | 2015-11-24 | 2019-01-01 | 无锡江南计算技术研究所 | 一种面向异构众核环境的从核系统调用实现方法 |
-
2019
- 2019-09-02 CN CN201910822174.9A patent/CN112445696B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112445696A (zh) | 2021-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12001316B2 (en) | Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction | |
EP3507698B1 (en) | Program tracing for time travel debugging and analysis | |
Wang et al. | COREMU: a scalable and portable parallel full-system emulator | |
US7950001B2 (en) | Method and apparatus for instrumentation in a multiprocessing environment | |
Chen et al. | Deterministic replay: A survey | |
EP2359247B1 (en) | Transforming user script code for debugging | |
US8473921B2 (en) | Debugging mechanisms in a cache-based memory isolation system | |
US20120079459A1 (en) | Tracing multiple threads via breakpoints | |
US11899562B2 (en) | Coprocessor-based logging for time travel debugging | |
Mushtaq et al. | Survey of fault tolerance techniques for shared memory multicore/multiprocessor systems | |
TW201333694A (zh) | 於即時指令追蹤紀錄中之除錯動作的選擇性紀錄技術 | |
CN112445696B (zh) | 面向异构众核Dcache纵向一致性的调试方法 | |
Visan et al. | URDB: a universal reversible debugger based on decomposing debugging histories | |
WO2020123184A1 (en) | Improving emulation and tracing performance using compiler-generated emulation optimization metadata | |
Honarmand et al. | RelaxReplay: Record and replay for relaxed-consistency multiprocessors | |
Lai et al. | Fast profiling framework and race detection for heterogeneous system | |
US10671512B2 (en) | Processor memory reordering hints in a bit-accurate trace | |
US11030075B2 (en) | Efficient register breakpoints | |
US20140229715A1 (en) | Apparatus and method for providing eventing ip and source data address in a statistical sampling infrastructure | |
CN114218067A (zh) | 一种异构众核软件调试装置及调试方法 | |
CN104657229A (zh) | 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法 | |
Desnoyers et al. | Synchronization for fast and reentrant operating system kernel tracing | |
Wang et al. | Towards the multithreaded deterministic replay in program debugging | |
Mushtaq et al. | Fault tolerance on multicore processors using deterministic multithreading | |
Heydari et al. | A survey in deterministic replaying approaches in multiprocessors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |