CN112540908A - 面向异构众核处理器的轻量级软件调试方法 - Google Patents
面向异构众核处理器的轻量级软件调试方法 Download PDFInfo
- Publication number
- CN112540908A CN112540908A CN201910892371.8A CN201910892371A CN112540908A CN 112540908 A CN112540908 A CN 112540908A CN 201910892371 A CN201910892371 A CN 201910892371A CN 112540908 A CN112540908 A CN 112540908A
- Authority
- CN
- China
- Prior art keywords
- debugging
- core
- slave
- master
- instruction
- 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.)
- Granted
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/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种面向异构众核处理器的轻量级软件调试方法,基于异构众核处理器,包括以下步骤:S1:输入调试命令:输入主核与从核统一语法格式、并兼容多核的调试命令;S2:地址空间定位:根据编译器和语言提供的关于调试信息的符号表,处理输入的调试命令,将源码级符号转换为进程地址空间中的逻辑地址;S3:执行控制;S4:调试中断处理;S5:调试信号处理;S6:程序现场处理:调试器进程根据众核程序统一逻辑地址空间的分节调试信息和统一的线程调试队列,实现对主、从核一致调试。本发明满足了异构众核软件调试的要求,并降低了调试开销,有效的节约了运算资源。
Description
技术领域
本发明属于异构众核处理器优化技术领域,尤其涉及一种面向异构众核处理器的轻量级软件调试方法。
背景技术
在多核处理器软件生态系统中,并行开发采用共享编程模型,通过编译指示来指定多线程共享方式,OS(操作系统)提供了面向进程和线程的标准调试接口,商业版和开源版的调试工具都可以支持多核并行程序的调试。
目前,国产申威众核处理器片上集成了少量主核和大量从核,操作系统运行在主核上,精简设计的从核不运行操作系统。编译器将编译产生的主核指令和从核指令连接在一个统一的虚地址空间中。众核处理器新增的从核加速模块缺乏相应的软件调试支撑和接口,给众核并行应用的软件错误调试带来了困难。
一方面,国际上的异构高性能计算系统中GPU和CPU是两个独立的芯片,并行程序调试采用相互独立的调试支撑;Intel MIC众核处理器是同构的众核架构,其众核程序和多核程序是二进制兼容的,软件调试的支撑机理是相通的,不存在异构的困难,因此,现有调试技术缺乏对异构众核编程模型的调试支撑,无法解决国产异构众核处理器片上大量从核软件调试的问题。
另一方面,按照软件调试的传统方法,操作系统将为每个从核创建一个实体线程,按满片256从核计算,就是256个线程,每个从核的调试中断对应于每个从核线程;但是,这种调试方法不仅需要占据操作系统大量的时间和空间,且随着从核规模的增加,时间和空间开销快速增长,影响了操作系统的正常运算功能。
发明内容
本发明目的在于提供一种面向异构众核处理器的轻量级软件调试方法,该调试技术不仅能够解决异构众核处理器的调试问题,还能解决传统调试技术开销过大的问题。
为达到上述目的,本发明采用的技术方案是:一种面向异构众核处理器的轻量级软件调试方法,基于异构众核处理器,包括以下步骤:
S1:输入调试命令:输入主核与从核统一语法格式、并兼容多核的调试命令;
S2:地址空间定位:根据编译器和语言提供的关于调试信息的符号表,处理输入的调试命令,将源码级符号转换为进程地址空间中的逻辑地址;
S3:执行控制:根据输入的调试命令、主核对应的调试接口和从核对应的调试接口,设置主核与从核的断点,控制主核和从核恢复运行;
S4:调试中断处理:
在中断处理层,主核断点基于底层系统提供的一条特权指令,当被调试程序执行该指令时产生约定的调试异常;
在中断处理层,从核断点基于硬件取指部件的指令流地址匹配,发生指令地址匹配时立即停止取指,产生调试中断;
其中,发生匹配的指令地址为设置断点的逻辑地址;
S5:调试信号处理:根据S4步骤中主核或从核产生的调试异常和调试中断,通过拓展的从核调试接口,向主核线程发送调试信号,唤醒调试器进程;
其中,使用POSIX系统调用ptrace和wait,增加了对从核调试的支持;
其中,主核调试信号与从核调试信号的区分方法为:如果POSIX标准请求参数pid的最高位为1,则判断请求为从核相关请求,反之,则判断请求为标准请求;
其中,调试器进程在wait4中,其唤醒条件与从核相关的动作包含:
发生从核硬件断点,首线程收到来自操作系统的SIGTRAP信号;
输入从核暂停指令,首线程收到来自操作系统的SIGSTOP信号,同时暂停被调试进程;
从核运行过程中发生了异常,首线程收到来自操作系统的55号信号;
其唤醒条件与主核有关的动作是:
主核发生断点,包含指令断点和数据断点,对应的主核线程收到来自操作系统的SIGTRAP信号;
主核程序发生异常,主核线程都收到来自操作系统的异常信号;
用户产生键盘中断,暂停程序执行,主核线程都收到来自操作系统的SIGINT信号;
S6:程序现场处理:调试器进程根据众核程序统一逻辑地址空间的分节调试信息和统一的线程调试队列,实现对主、从核一致调试;
其中,统一逻辑地址空间分节调试信息的方法为:在异构众核程序的统一编址虚空间中,主核指令在text节中,从核指令在不同节中,每种从核数据空间在独立的节中;
其中,统一线程调试队列的方法为:在调试器为每个从核增加一个与主核线程相同类型的数据结构。
上述技术方案中进一步改进的技术方案如下:
1. 上述方案中,在步骤S2中,所述调试信息的格式为Dwarf标准格式。
2. 上述方案中,在步骤S5中,在步骤S5中,根据wait4系统调用的接口中的status的相关状态位判断具体唤醒条件。
3. 上述方案中,在步骤S5中,将用户层的status的32位int型扩展为long型数组status[N+1],其中,N为从核组数量。
4. 上述方案中,在步骤S6中,所述主核、从核一致的调试包括主核与从核之间的调试和从核之间的调试。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向异构众核处理器的轻量级软件调试方法,其通过统一输入语法格式、统一逻辑地址空间的分节调试信息和统一线程调试队列,使得全部从核的调试中断能够基于主核的线程进行处理,在满足了异构众核软件调试的要求的同时,降低了调试的时间和空间开销,有效的节约了运算资源。
附图说明
附图1为面向异构众核处理器的轻量级软件调试方法的流程示意图。
具体实施方式
下面结合实施例对本发明作进一步描述:
实施例:一种面向异构众核处理器的轻量级软件调试方法,参照附图1,基于异构众核处理器,包括以下步骤:
S1:输入调试命令:输入主核与从核统一语法格式、并兼容多核的调试命令;
这里,按照多核调试工具的语法格式实现调试功能,使异构芯片上的主核、从核都支持这套语法格式,从而在同一语法格式的同时,节省用户学习时间,便与其掌握调试方法。
S2:地址空间定位:根据编译器和语言提供的关于调试信息的符号表,处理输入的调试命令,将源码级符号转换为进程地址空间中的逻辑地址;
其中,由于真正访问进程地址空间的接口都采用逻辑地址,因此,将调试命令的源码级符号转化为逻辑地址,便于接口访问;
其中,调试信息格式为Dwarf标准格式。
S3:执行控制:根据输入的调试命令、主核对应的调试接口和从核对应的调试接口,设置主核与从核的断点,控制主核和从核恢复运行;
这里,无论设置主核,还是从核的断点,都必须调用底层系统提供的调试接口;
其次,在中断事件发生后,控制主核与从核恢复运行,即能返回原有的任务继续执行。
S4:调试中断处理:
在中断处理层,主核断点基于底层系统提供的一条特权指令,当被调试程序执行该指令时产生约定的调试异常;
这里,特定的特权指令是指底层系统提供的一种指令,执行这条指令将发生调试异常,其中,调试异常是执行到断点发生的中断事件;
在中断处理层,从核断点基于硬件取指部件的指令流地址匹配,发生指令地址匹配时立即停止取指,产生调试中断;
其中,发生匹配的指令地址为设置断点的逻辑地址,而无论是调试异常还是调试中断,均能使程序在断点暂停执行,以达到调试程序的目的。
S5:调试信号处理:根据S4步骤中主核或从核产生的调试异常和调试中断,CPU通过拓展的从核调试接口,向主核线程发送调试信号,唤醒调试器进程;
其中,使用POSIX系统调用ptrace和wait,增加了对从核调试的支持;
这里,ptrace系统调用的接口如下:
Long ptrace(enum __ptrace_request request, pid_t pid,void *addr, void *data);
其中,区分从核相关请求和标准请求主要是通过pid来区分的,POSIX标准请求参数pid为被跟踪的进程pid号,如果是从核相关请求,pid的高31位为1(OS真正使用的pid只使用低16位,但pid_t的类型为int型32,因此我们可以通过pid的最高位是否为1来区别请求是来自标准请求还是从核相关请求)。
其中,调试器(gdb)进程在wait4中等待被唤醒,其唤醒条件与从核相关的动作包含:
发生从核硬件断点,首线程收到来自操作系统的SIGTRAP信号;
输入从核暂停指令,首线程收到来自操作系统的SIGSTOP信号,同时暂停被调试进程;
从核运行过程中发生了异常,首线程收到来自操作系统的55号信号;
这里首线程是被调试进程的第一个主核线程;
其唤醒条件与主核有关的动作是:
主核发生断点,包含指令断点和数据断点,对应的主核线程收到来自操作系统的SIGTRAP信号;
主核程序发生异常,主核线程都收到来自操作系统的异常信号,如段违例、浮点错等;
用户产生键盘中断,暂停程序执行,主核线程都收到来自操作系统的SIGINT信号;
POSIX标准中,wait4系统调用的接口如下:
pid_t wait4(pid_t pid, int *status, int options,struct rusage *rusage);
其中,pid为被调试进程的pid号,status是调试进程在wait4系统调用中等待被唤醒,被调试进程返回给调试进程(gdb进程)的状态;调试进程通过判断status的相关状态位可以知道具体的唤醒条件,status的bit[8:15]为被调试进程的退出码,其中就包含有被调试进程收到的信号编号,如被调试进程收到的信号为SIGTRAP信号,则status[15:8]==SIGTRAP=5;
为了在唤醒时,区分主、从核停止的条件,我们通过在status中定义一些特殊的标志位,具体的约定为:如果status[16:18]==7,则表示相关的信号产生自从核的相关动作;另外,为支持满核组从核的调试,在用户进程中stop后要返回更多的信息给调试进程,使其能够比较容易的判断到源从核,因此需要对status的内容进行扩展,用户层的status由原来的32位int型扩展为long型数组status[N+1],其中,N为从核组数量,扩展后的status[0]的bit[0:31]仍然兼容主核的状态位,status[1]-status[N]记录所有从核组各从核是否发生相关的3种动作。
S6:程序现场处理:调试器进程根据众核程序统一逻辑地址空间的分节调试信息和统一的线程调试队列,实现对主、从核一致调试;
其中,统一逻辑地址空间分节调试信息的方法为:在异构众核程序的统一编址虚空间中,主核指令在text节中,从核指令在不同节中,每种从核数据空间在独立的节中;
例如:从核指令.text1,LDM中的私有数据在.local_private节,共享数据在.local_shared节;
这种设计使调试器可以根据ELF和dwarf标准读取不同节的符号信息,按照各自的地址变换规则访问不同的地址空间,对主核与从核按照不同的断点机制实现调试功能;
其中,统一线程调试队列的方法为:在调试器为每个从核增加一个与主核线程相同类型的数据结构;
例如硬件现场寄存器和线程执行控制块,以记录每个从核执行的程序现场,并把从核控制块加入调试器的线程调试队列;
这样主从核都在调试器的线程队列中,可基于调试器原有的算法和线程切换机制,实现主从核之间的调试切换和从核之间的调试切换。
采用上述面向异构众核处理器的轻量级软件调试方法,其通过统一输入语法格式、统一逻辑地址空间的分节调试信息和统一线程调试队列,使得全部从核的调试中断能够基于主核的线程进行处理,在满足了异构众核软件调试的要求的同时,降低了调试的时间和空间开销,有效的节约了运算资源。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (5)
1.一种面向异构众核处理器的轻量级软件调试方法,其特征在于,基于异构众核处理器,包括以下步骤:
S1:输入调试命令:输入主核与从核统一语法格式、并兼容多核的调试命令;
S2:地址空间定位:根据编译器和语言提供的关于调试信息的符号表,处理输入的调试命令,将源码级符号转换为进程地址空间中的逻辑地址;(真正访问进程地址空间的接口采用逻辑地址)
S3:执行控制:根据输入的调试命令、主核对应的调试接口和从核对应的调试接口,设置主核与从核的断点,控制主核和从核恢复运行;
S4:调试中断处理:
在中断处理层,主核断点基于底层系统提供的一条特权指令,当被调试程序执行该指令时产生约定的调试异常;
在中断处理层,从核断点基于硬件取指部件的指令流地址匹配,发生指令地址匹配时立即停止取指,产生调试中断;
其中,发生匹配的指令地址为设置断点的逻辑地址;
S5:调试信号处理:根据S4步骤中主核或从核产生的调试异常和调试中断,通过拓展的从核调试接口,向主核线程发送调试信号,唤醒调试器进程;
其中,使用POSIX系统调用ptrace和wait,增加了对从核调试的支持;
其中,主核调试信号与从核调试信号的区分方法为:如果POSIX标准请求参数pid的最高位为1,则判断请求为从核相关请求,反之,则判断请求为标准请求;
其中,调试器进程在wait4中,其唤醒条件与从核相关的动作包含:
发生从核硬件断点,首线程收到来自操作系统的SIGTRAP信号;
输入从核暂停指令,首线程收到来自操作系统的SIGSTOP信号,同时暂停被调试进程;
从核运行过程中发生了异常,首线程收到来自操作系统的55号信号;
其唤醒条件与主核有关的动作是:
主核发生断点,包含指令断点和数据断点,对应的主核线程收到来自操作系统的SIGTRAP信号;
主核程序发生异常,主核线程都收到来自操作系统的异常信号;
用户产生键盘中断,暂停程序执行,主核线程都收到来自操作系统的SIGINT信号;
S6:程序现场处理:调试器进程根据众核程序统一逻辑地址空间的分节调试信息和统一的线程调试队列,实现对主、从核一致调试;
其中,统一逻辑地址空间分节调试信息的方法为:在异构众核程序的统一编址虚空间中,主核指令在text节中,从核指令在不同节中,每种从核数据空间在独立的节中;
其中,统一线程调试队列的方法为:在调试器为每个从核增加一个与主核线程相同类型的数据结构。
2.根据权利要求1所述的面向异构众核处理器的轻量级软件调试方法,其特征在于:在步骤S2中,所述调试信息的格式为Dwarf标准格式。
3.根据权利要求1所述的面向异构众核处理器的轻量级软件调试方法,其特征在于:在步骤S5中,根据wait4系统调用的接口中的status的相关状态位判断具体唤醒条件。
4.根据权利要求3所述的面向异构众核处理器的轻量级软件调试方法,其特征在于:在步骤S5中,将用户层的status的32位int型扩展为long型数组status[N+1],其中,N为从核组数量。
5.根据权利要求1所述的面向异构众核处理器的轻量级软件调试方法,其特征在于:在步骤S6中,所述主核、从核一致的调试包括主核与从核之间的调试和从核之间的调试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910892371.8A CN112540908B (zh) | 2019-09-20 | 2019-09-20 | 面向异构众核处理器的轻量级软件调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910892371.8A CN112540908B (zh) | 2019-09-20 | 2019-09-20 | 面向异构众核处理器的轻量级软件调试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540908A true CN112540908A (zh) | 2021-03-23 |
CN112540908B CN112540908B (zh) | 2022-07-12 |
Family
ID=75012348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910892371.8A Active CN112540908B (zh) | 2019-09-20 | 2019-09-20 | 面向异构众核处理器的轻量级软件调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112540908B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064152A (zh) * | 2021-11-26 | 2022-02-18 | 中船重工(武汉)凌久电子有限责任公司 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130047037A1 (en) * | 2011-08-15 | 2013-02-21 | Freescale Semiconductor, Inc. | Method and device for controlling debug event resources |
CN102955737A (zh) * | 2012-11-06 | 2013-03-06 | 无锡江南计算技术研究所 | 异构处理器体系的程序调试方法和系统 |
-
2019
- 2019-09-20 CN CN201910892371.8A patent/CN112540908B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130047037A1 (en) * | 2011-08-15 | 2013-02-21 | Freescale Semiconductor, Inc. | Method and device for controlling debug event resources |
CN102955737A (zh) * | 2012-11-06 | 2013-03-06 | 无锡江南计算技术研究所 | 异构处理器体系的程序调试方法和系统 |
Non-Patent Citations (2)
Title |
---|
KUEN-JONG LEE 等: "《A software_hardware co-debug platform for multi-core systems》", 《2011 9TH IEEE INTERNATIONAL CONFERENCE ON ASIC》 * |
王敬宇 等: "《一种面向通用众核CPU的软件调试器设计》", 《计算机工程与科学》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064152A (zh) * | 2021-11-26 | 2022-02-18 | 中船重工(武汉)凌久电子有限责任公司 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
CN114064152B (zh) * | 2021-11-26 | 2023-05-23 | 中船重工(武汉)凌久电子有限责任公司 | 基于动态加载的嵌入式多核调试系统及其调试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112540908B (zh) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9195462B2 (en) | Techniques for tracing processes in a multi-threaded processor | |
EP2825965B1 (en) | Transformation of a program-event-recording event into a run-time instrumentation event | |
KR101155673B1 (ko) | 신뢰받은/신뢰받지 못한 디지털 신호 프로세서 디버깅 동작들을 위한 방법 및 시스템 | |
EP2810168B1 (en) | Run-time instrumentation sampling in transactional-execution mode | |
EP2787444B1 (en) | Central processing unit, information processing apparatus, and intra-virtual-core register value acquisition method | |
JP3105223B2 (ja) | マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置 | |
TWI461908B (zh) | 於即時指令追蹤紀錄中之除錯動作的選擇性紀錄技術 | |
US9489285B2 (en) | Modifying run-time-instrumentation controls from a lesser-privileged state | |
KR101097620B1 (ko) | 전력 트랜지션들 동안 디지털 신호 프로세서를 위한 방법 및 시스템 | |
US9465716B2 (en) | Run-time instrumentation directed sampling | |
US20030046614A1 (en) | System and method for using embedded real-time analysis components | |
US20140129784A1 (en) | Methods and systems for polling memory outside a processor thread | |
US7590894B2 (en) | Method of translating system events into signals for activity monitoring | |
CN112540908B (zh) | 面向异构众核处理器的轻量级软件调试方法 | |
US7992049B2 (en) | Monitoring of memory and external events | |
CN111506395B (zh) | 一种混合仿真的全数字虚拟运行环境的实现方法及装置 | |
CN114218067A (zh) | 一种异构众核软件调试装置及调试方法 | |
Yano et al. | V60/V70 microprocessor and its systems support functions | |
JPH1049373A (ja) | パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置 | |
US8627049B2 (en) | Real-time prioritization of stall or event information | |
CN113672554B (zh) | 处理器核、处理器、片上系统和调试系统 | |
Mitchell | Multi-core and multi-threaded socs present new debugging challenges | |
Gomes et al. | Non-intrusive hardware acceleration for dynamic binary translation in embedded systems | |
JPH03175539A (ja) | デバッグ用マイクロプロセッサ | |
JPS6382525A (ja) | トレ−ス機能付マイクロプロセツサ |
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 |