CN108984392B - 单步调试方法和调试器 - Google Patents
单步调试方法和调试器 Download PDFInfo
- Publication number
- CN108984392B CN108984392B CN201810601108.4A CN201810601108A CN108984392B CN 108984392 B CN108984392 B CN 108984392B CN 201810601108 A CN201810601108 A CN 201810601108A CN 108984392 B CN108984392 B CN 108984392B
- Authority
- CN
- China
- Prior art keywords
- address
- instruction
- execution
- processor
- branch prediction
- 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/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种单步调试方法和调试器。指令队列执行装置分别与处理器流水线控制器、处理器分支预测控制器和地址记录装置连接;所述方法包括:处理器流水线控制器向指令队列执行装置输入顺序执行地址,处理器分支预测控制器向指令队列执行装置输入跳转目的地址,指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址,地址记录装置存储目标地址,在接收到上位机的单步请求时,将目标地址发送至上位机,用于进行单步调试。采用本方法能够通过地址记录装置获取目标地址,不需要通过二进制解析获取目标地址,节省了处理程序代码的工作量,降低了单步调试的工作量。
Description
技术领域
本申请涉及调试器设计技术领域,特别是涉及一种单步调试方法和调试器。
背景技术
单步是调试器设计的一个重要部分,在调试的过程中,通过单步可以看到整段代码的完整执行过程,有助于程序员调试代码,快速查找问题。对于调试器的设计方法,各个不同的内核在设计调试器的时候有各自不同的方法。目前传统方案是利用软件进行指令解析,然后在上位机发送命令和调试接口通信,将目标地址发送给目标芯片,进而目标芯片接受到命令信息后再进行硬件解析,然后利用断点的原理实现指令级单步。
但是,在整个流程中,工作量最大的就是对二进制代码进行指令解析,不仅需要每条指令的指令长度,而且还要解析当前指令执行后的目标地址,最终解析得到用于单步调试的目标地址。因此,传统方式下,使得单步调试出现工作量大的问题。
发明内容
基于此,有必要针对上述单步调试的工作量大的问题,提供一种单步调试方法和调试器。
一种单步调试方法,指令队列执行装置分别与处理器流水线控制器、处理器分支预测控制器和地址记录装置连接;单步调试方法包括以下步骤:
处理器流水线控制器向指令队列执行装置输入顺序执行地址,其中,顺序执行地址为按照顺序执行方向所预取的下一条指令的PC值;
处理器分支预测控制器向指令队列执行装置输入跳转目的地址,其中,跳转目的地址为按照分支跳转方向所预测的下一条分支的地址;
指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址;
地址记录装置存储目标地址,在接收到上位机的单步请求时,将目标地址发送至上位机,用于进行单步调试。
在一个实施例中,顺序执行的地址为通过处理器的流水线中指令预取阶段所预取的下一条指令的PC值,其中,处理器的流水线依次包括指令预取阶段、指令译码阶段、指令执行阶段、指令访存阶段和指令写回阶段。
在一个实施例中,在处理器分支预测控制器向指令队列执行装置输入跳转目的地址的步骤之前,还包括以下步骤:
处理器分支预测控制器根据分支预测策略,预测跳转目的地址。
在一个实施例中,分支预测策略包括静态分支预测或动态分支预测。
在一个实施例中,指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址的步骤,包括以下步骤:
在指令集为跳转指令时,将跳转目的地址作为目标地址;
在指令集为非跳转指令时,将顺序执行地址作为目标地址。
在一个实施例中,在指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址的步骤之前,还包括以下步骤:
在指令集为跳转指令,且分支预测判定为失败时,清除流水线的指令预取队列并恢复流水线;
在指令集为跳转指令,且分支预测判定为正确时,跳转至指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址的步骤。
在一个实施例中,在在接收到上位机的单步请求时,将目标地址发送至上位机的步骤之前,还包括以下步骤:
地址记录装置通过与上位机连接的调试接口接收单步请求。
在一个实施例中,地址记录装置包括地址寄存器,地址寄存器用于存储目标地址;
地址记录装置存储目标地址的步骤,包括以下步骤:
地址记录装置将目标地址存储在地址寄存器。
一种调试器,包括处理器流水线控制器、处理器分支预测控制器、指令队列执行装置和地址记录装置;
指令队列执行装置分别与处理器流水线控制器、处理器分支预测控制器和地址记录装置连接,地址记录装置与上位机连接;
处理器流水线控制器用于预取顺序执行的地址并向指令队列执行装置输入顺序执行地址,其中,顺序执行地址为按照顺序执行方向所预取的下一条指令的PC值;
处理器分支预测控制器用于预测跳转目的地址,并向指令队列执行装置输入跳转目的地址,其中,跳转目的地址为按照分支跳转方向所预测的下一条分支的地址;
指令队列执行装置用于接收顺序执行地址和跳转目的地址,根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址;
地址记录装置用于存储目标地址,在接收到上位机的单步请求时,将目标地址发送至上位机,用于进行单步调试。
在一个实施例中,调试器还包括上位机,上位机与地址记录装置连接;
上位机用于输出单步请求。
上述单步调试方法和调试器,通过处理器流水线控制器、处理器分支预测控制器、指令队列执行装置和地址记录装置的连接,向上位机发送目标地址,用于进行单步调试,通过地址记录装置获取目标地址,不需要通过二进制解析获取目标地址,节省了处理程序代码的工作量,降低了单步调试的工作量。
附图说明
图1为一个实施例中环境的结构示意图;
图2为一个实施例中单步调试方法的流程图;
图3为一个实施例中流水线的时间空间图;
图4为一个实施例中根据分支预测策略预测的流程图;
图5为一个实施例中目标地址选取的流程图;
图6为一个实施例中分支预测判定的流程图;
图7为一个实施例中接收单步请求的流程图;
图8为一个实施例中调试器的结构示意图;
图9为一个实施例中上位机的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,图1为一个实施例中环境的结构示意图,指令队列执行装置130分别与处理器流水线控制器110、处理器分支预测控制器120和地址记录装置140连接;如图2所示,图2为一个实施例中单步调试方法的流程图,本实施例中提供一种单步调试方法,包括以下步骤:
步骤S210:处理器流水线控制器向指令队列执行装置输入顺序执行地址,其中,顺序执行地址为按照顺序执行方向所预取的下一条指令的PC(Program Counter,程序计数器)值。
在流水线的特性中,上一级流水一直为下一级流水做预取的准备,按照顺序执行方向可以预取下一条指令的PC值。处理器流水线控制器可以根据流水线的特性获取顺序执行地址。
步骤S220:处理器分支预测控制器向指令队列执行装置输入跳转目的地址,其中,跳转目的地址为按照分支跳转方向所预测的下一条分支的地址。
处理器分支预测控制器用于预测跳转的目的地址,加速分支跳转的执行效率。例如,处理器执行到一条跳转执行指令,则处理器分支预测控制器能够预测该条跳转执行指令。
步骤S230:指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址。
顺序执行地址和跳转目的地址是通过预取或预测获取的,并不是真实的下一条指令的执行地址,在等到真正获取执行阶段的输出的指令集才可以区别出真实的下一条指令,进而在顺序执行地址和跳转目的地址之中选取目标地址。
步骤S240:地址记录装置存储目标地址,在接收到上位机的单步请求时,将目标地址发送至上位机,用于进行单步调试。
地址记录装置实时监听来自指令队列执行装置的目标地址,并存储目标地址。地址记录装置还实时监听来自上位机的单步请求,在接收到上位机的单步请求时,将目标地址发送至上位机。目标地址发送至上位机后,可以进行单步调试。地址记录装置还可以通过监听上位机的中断信号,在中断信号包括有单步请求时,将目标地址发送至上位机。
上述单步调试方法,通过处理器流水线控制器、处理器分支预测控制器、指令队列执行装置和地址记录装置的连接,向上位机发送目标地址,用于进行单步调试,通过地址记录装置获取目标地址,不需要通过二进制解析获取目标地址,节省了处理程序代码的工作量,降低了单步调试的工作量。
而且当需要对指令集进行增减时,可以通过修改处理器流水线控制器、处理器分支预测控制器、指令队列执行装置或地址记录装置的硬件功能来实现,无需重新修改程序中代码解析和分支分析的代码,降低工作量,也避免了软件和硬件之间存在版本不适应的问题。
在一个实施例中,顺序执行的地址为通过处理器的流水线中指令预取阶段所预取的下一条指令的PC值,其中,处理器的流水线依次包括指令预取阶段、指令译码阶段、指令执行阶段、指令访存阶段和指令写回阶段。
处理器设计中最基础的组成部分包括流水线,在五级流水线中,可以依次包括指令预取阶段、指令译码阶段、指令执行阶段、指令访存阶段和指令写回阶段。由于流水线的特性,上一级流水一直为下一级流水做预取的准备,如图3所示,图3为一个实施例中流水线的时间空间图,IF、ID、EX、ME和WB分别为指令预取阶段、指令译码阶段、指令执行阶段、指令访存阶段和指令写回阶段,在指令1执行至指令写回阶段时,指令2可以执行至指令访存阶段,此时指令2已经完成了指令预取阶段、指令译码阶段和指令执行阶段,即可在指令2的指令访存阶段预测到指令1顺序执行的下一条指令的PC值。
上述单步调试方法,利用了流水线预取的特性,可以获取顺序执行的下一条指令的PC值。
在一个实施例中,如图4所示,图4为一个实施例中根据分支预测策略预测的流程图,在处理器分支预测控制器向指令队列执行装置输入跳转目的地址的步骤之前,还包括以下步骤:
S221:处理器分支预测控制器根据分支预测策略,预测跳转目的地址。
上述单步调试方法,可以根据分支预测策略设置处理器分支预测控制器的参数,预测跳转目的地址,提高预测的跳转目的地址的准确性,同时不需要完成分支分析的程序代码,降低单步调试的工作量。
在一个实施例中,分支预测策略包括静态分支预测或动态分支预测。
例如,最简单的静态分支预测方法就是任选一条分支。这样平均命中率为50%。更精确的办法是根据原先运行的结果进行统计从而尝试预测分支是否会跳转。任何一种分支预测策略的效果都取决于该策略本身的精确度和条件分支的频率。例如,最简单的动态分支预测策略是分支预测缓冲区或分支历史表。
上述单步调试方法,可以根据静态分支预测或动态分支预测,预测跳转目的地址。
在一个实施例中,如图5所示,图5为一个实施例中目标地址选取的流程图,指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址的步骤,包括以下步骤:
步骤S231:在指令集为跳转指令时,将跳转目的地址作为目标地址。
步骤S232:在指令集为非跳转指令时,将顺序执行地址作为目标地址。
上述单步调试方法,判断指令集是否为跳转指令,获取目标地址,不需要通过二进制解析目标地址,降低单步调试的工作量。
在一个实施例中,如图6所示,图6为一个实施例中分支预测判定的流程图,在指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址的步骤之前,还包括以下步骤:
步骤S233:在指令集为跳转指令,且分支预测判定为失败时,清除流水线的指令预取队列并恢复流水线。
步骤S234:在指令集为跳转指令,且分支预测判定为正确时,跳转至指令队列执行装置根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址的步骤。
上述单步调试方法,如果在执行阶段发现分支预测为失败,即预测的跳转目的地址是错误时,恢复流水线,重新预测正确的跳转目的地址,执行正确的分支预测,以便于向指令队列执行装置输入正确预测的跳转目的地址并进行下一步的处理。
在一个实施例中,如图7所示,图7为一个实施例中接收单步请求的流程图,在在接收到上位机的单步请求时,将目标地址发送至上位机的步骤之前,还包括以下步骤:
步骤S241:地址记录装置通过与上位机连接的调试接口接收单步请求。
上述单步调试方法,可以通过调试接口监听单步请求,以便于地址记录装置及时将目标地址发送至上位机。
在一个实施例中,地址记录装置包括地址寄存器,地址寄存器用于存储目标地址;
地址记录装置存储目标地址的步骤,包括以下步骤:
地址记录装置将目标地址存储在地址寄存器。
上述单步调试方法,通过地址寄存器存储目标地址,可以方便上位机通过访问地址寄存器以获取目标地址,提高单步调试的效率。
应该理解的是,虽然图2、4至7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、4至7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,图8为一个实施例中调试器的结构示意图,本实施例中调试器包括处理器流水线控制器310、处理器分支预测控制器320、指令队列执行装置330和地址记录装置340。
指令队列执行装置330分别与处理器流水线控制器310、处理器分支预测控制器320和地址记录装置340连接,地址记录装置340与上位机连接。
处理器流水线控制器310用于预取顺序执行的地址并向指令队列执行装置330输入顺序执行地址,其中,顺序执行地址为按照顺序执行方向所预取的下一条指令的PC值。
处理器分支预测控制器320用于预测跳转目的地址,并向指令队列执行装置330输入跳转目的地址,其中,跳转目的地址为按照分支跳转方向所预测的下一条分支的地址。
指令队列执行装置330用于接收顺序执行地址和跳转目的地址,根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址。
地址记录装置340用于存储目标地址,在接收到上位机的单步请求时,将目标地址发送至上位机,用于进行单步调试。
上述调试器,通过处理器流水线控制器310、处理器分支预测控制器320、指令队列执行装置330和地址记录装置340的连接,向上位机发送目标地址,用于进行单步调试,通过地址记录装置340获取目标地址,不需要通过二进制解析获取目标地址,节省了处理程序代码的工作量,降低了单步调试的工作量。
在一个实施例中,如图9所示,图9为一个实施例中上位机的结构示意图,调试器还包括上位机350,上位机350与地址记录装置340连接;
上位机350用于输出单步请求。
上述调试器,还包括上位机,可以输出单步请求,进行单步调试。
在另一个实施例中,本实施例提供了一种单步调试方法,利用处理器流水线预取实现调试器指令级单步,如图8所示,该方法中的硬件包括处理器流水线控制器310、处理器分支预测控制器320、指令队列执行装置330和地址记录装置340。
处理器流水线控制器310用于预取顺序执行的地址并向指令队列执行装置330输入顺序执行地址,其中,顺序执行地址为按照顺序执行方向所预取的下一条指令的PC值。处理器设计中最基础的组成部分包括流水线,以一般的五级流水线为例,可以依次包括指令预取阶段、指令译码阶段、指令执行阶段、指令访存阶段和指令写回阶段。在指令1执行至指令写回阶段时,指令2可以执行至指令访存阶段,此时指令2已经完成了指令预取阶段、指令译码阶段和指令执行阶段,即可在指令2的指令访存阶段预测到指令1顺序执行的下一条指令的PC值,以便于进行下一步处理。
处理器分支预测控制器320用于预测跳转目的地址,并向指令队列执行装置330输入跳转目的地址,其中,跳转目的地址为按照分支跳转方向所预测的下一条分支的地址。处理器分支预测控制器320用于预测跳转的目的地址,加速分支跳转的执行效率。例如,处理器执行到一条跳转执行指令,则处理器分支预测控制器320能够预测该条跳转执行指令。本实施例利用处理器分支预测控制器320,取得跳转目的地址,并向指令队列执行装置330输入,以便于进行下一步处理。
指令队列执行装置330用于接收顺序执行地址和跳转目的地址,根据指令执行阶段输出的指令集,在顺序执行地址和跳转目的地址之中选取目标地址。由于顺序执行地址和跳转目的地址是通过预取或预测获取的,并不是真实的下一条指令的执行地址,在等到真正获取执行阶段的输出的指令集才可以区别出真实的下一条指令,进而在顺序执行地址和跳转目的地址之中选取目标地址。选取目标地址的过程中,不需要通过二进制解析获取目标地址,节省了处理程序代码的工作量,降低了单步调试的工作量。
地址记录装置340用于存储目标地址,在接收到上位机的单步请求时,将目标地址发送至上位机,用于进行单步调试。地址记录装置340实时监听来自指令队列执行装置330的目标地址,并存储目标地址。地址记录装置340还实时监听来自上位机的单步请求,在接收到上位机的单步请求时,将目标地址发送至上位机。上位机获取目标地址后,再进行单步调试和断点的相关操作。地址记录装置340还可以通过监听上位机的中断信号,在中断信号包括有单步请求时,将目标地址发送至上位机。
上述方法,通过处理器流水线控制器310、处理器分支预测控制器、指令队列执行装置330和地址记录装置340的连接,向上位机发送目标地址,用于进行单步调试,通过地址记录装置340获取目标地址,不需要通过二进制解析获取目标地址,节省了处理程序代码的工作量,降低了单步调试的工作量。同时借用现有的硬件结构,利用处理器流水线预取,通过硬件的改进,获取目标地址利用流水线预取的特点和硬件实现指令级单步。替代了通过程序代码对代码解析和分支分析的步骤。最终通过硬件结构取得单步的目标地址,并将其存放在芯片内部特殊功能寄存器或固定地址的随机存取存储器中。通过调试接口取得目标地址,节省了大量的二进制解析的工作量,并且对指令集进行增减的同时,只需要修改相应硬件功能,无需重新修改程序代码的代码解析和分支分析的代码,所以进一步减少编写代码的工作量,也避免出现软件和硬件之间版本不对应的问题。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种单步调试方法,其特征在于,指令队列执行装置分别与处理器流水线控制器、处理器分支预测控制器和地址记录装置连接;单步调试方法包括以下步骤:
所述处理器流水线控制器向所述指令队列执行装置输入顺序执行地址,其中,所述顺序执行地址为按照顺序执行方向所预取的下一条指令的PC值;
所述处理器分支预测控制器向所述指令队列执行装置输入跳转目的地址,其中,所述跳转目的地址为按照分支跳转方向所预测的下一条分支的地址;
所述指令队列执行装置根据指令执行阶段输出的指令集,在所述顺序执行地址和所述跳转目的地址之中选取目标地址;
所述地址记录装置存储所述目标地址,在接收到上位机的单步请求时,将所述目标地址发送至上位机,用于进行单步调试。
2.根据权利要求1所述的单步调试方法,其特征在于,所述顺序执行的地址为通过处理器的流水线中指令预取阶段所预取的下一条指令的PC值,其中,所述处理器的流水线依次包括所述指令预取阶段、指令译码阶段、所述指令执行阶段、指令访存阶段和指令写回阶段。
3.根据权利要求1所述的单步调试方法,其特征在于,在所述处理器分支预测控制器向所述指令队列执行装置输入跳转目的地址的步骤之前,还包括以下步骤:
所述处理器分支预测控制器根据分支预测策略,预测所述跳转目的地址。
4.根据权利要求3所述的单步调试方法,其特征在于,所述分支预测策略包括静态分支预测或动态分支预测。
5.根据权利要求1所述的单步调试方法,其特征在于,所述指令队列执行装置根据指令执行阶段输出的指令集,在所述顺序执行地址和所述跳转目的地址之中选取目标地址的步骤,包括以下步骤:
在所述指令集为跳转指令时,将所述跳转目的地址作为所述目标地址;
在所述指令集为非跳转指令时,将所述顺序执行地址作为所述目标地址。
6.根据权利要求1所述的单步调试方法,其特征在于,在所述指令队列执行装置根据指令执行阶段输出的指令集,在所述顺序执行地址和所述跳转目的地址之中选取目标地址的步骤之前,还包括以下步骤:
在所述指令集为跳转指令,且分支预测判定为失败时,清除流水线的指令预取队列并恢复流水线;
在所述指令集为跳转指令,且分支预测判定为正确时,跳转至所述指令队列执行装置根据指令执行阶段输出的指令集,在所述顺序执行地址和所述跳转目的地址之中选取目标地址的步骤。
7.根据权利要求1所述的单步调试方法,其特征在于,在所述在接收到上位机的单步请求时,将所述目标地址发送至上位机的步骤之前,还包括以下步骤:
所述地址记录装置通过与所述上位机连接的调试接口接收所述单步请求。
8.根据权利要求1所述的单步调试方法,其特征在于,所述地址记录装置包括地址寄存器,所述地址寄存器用于存储所述目标地址;
所述地址记录装置存储所述目标地址的步骤,包括以下步骤:
所述地址记录装置将所述目标地址存储在所述地址寄存器。
9.一种调试器,其特征在于,包括处理器流水线控制器、处理器分支预测控制器、指令队列执行装置和地址记录装置;
所述指令队列执行装置分别与所述处理器流水线控制器、所述处理器分支预测控制器和所述地址记录装置连接,所述地址记录装置与上位机连接;
所述处理器流水线控制器用于预取顺序执行的地址并向所述指令队列执行装置输入所述顺序执行地址,其中,所述顺序执行地址为按照顺序执行方向所预取的下一条指令的PC值;
所述处理器分支预测控制器用于预测跳转目的地址,并向所述指令队列执行装置输入所述跳转目的地址,其中,所述跳转目的地址为按照分支跳转方向所预测的下一条分支的地址;
所述指令队列执行装置用于接收所述顺序执行地址和所述跳转目的地址,根据指令执行阶段输出的指令集,在所述顺序执行地址和所述跳转目的地址之中选取目标地址;
所述地址记录装置用于存储所述目标地址,在接收到上位机的单步请求时,将所述目标地址发送至所述上位机,用于进行单步调试。
10.根据权利要求9所述的调试器,其特征在于,还包括所述上位机,所述上位机与所述地址记录装置连接;
所述上位机用于输出所述单步请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810601108.4A CN108984392B (zh) | 2018-06-12 | 2018-06-12 | 单步调试方法和调试器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810601108.4A CN108984392B (zh) | 2018-06-12 | 2018-06-12 | 单步调试方法和调试器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108984392A CN108984392A (zh) | 2018-12-11 |
CN108984392B true CN108984392B (zh) | 2021-07-16 |
Family
ID=64541159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810601108.4A Active CN108984392B (zh) | 2018-06-12 | 2018-06-12 | 单步调试方法和调试器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108984392B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737103A (zh) * | 2019-03-25 | 2020-10-02 | 阿里巴巴集团控股有限公司 | 一种包括调试单元的处理器和调试系统 |
CN110704108B (zh) * | 2019-08-30 | 2020-08-14 | 阿里巴巴集团控股有限公司 | 解释执行字节码指令流的方法及装置 |
US10802854B2 (en) | 2019-08-30 | 2020-10-13 | Alibaba Group Holding Limited | Method and apparatus for interpreting bytecode instruction stream |
CN111784036A (zh) * | 2020-06-24 | 2020-10-16 | 上海华力集成电路制造有限公司 | 一种基于生产周期的流水作业生产线作业量预测方法 |
CN112199298B (zh) * | 2020-11-02 | 2022-05-13 | 杭州安恒信息技术股份有限公司 | 一种单步调试的检测方法、装置和计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4459666A (en) * | 1979-09-24 | 1984-07-10 | Control Data Corporation | Plural microcode control memory |
CN1904851A (zh) * | 2005-07-29 | 2007-01-31 | 中国科学院计算技术研究所 | 一种单步执行在片调试功能的方法及装置 |
CN101295279A (zh) * | 2007-04-29 | 2008-10-29 | 国际商业机器公司 | 多线程环境下的调试程序的方法和系统 |
CN106843816A (zh) * | 2017-01-23 | 2017-06-13 | 青岛朗思信息科技有限公司 | 一种分支预测控制方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0509738D0 (en) * | 2005-05-12 | 2005-06-22 | Cambridge Consultants | Processor and interface |
US8006114B2 (en) * | 2007-03-09 | 2011-08-23 | Analog Devices, Inc. | Software programmable timing architecture |
-
2018
- 2018-06-12 CN CN201810601108.4A patent/CN108984392B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4459666A (en) * | 1979-09-24 | 1984-07-10 | Control Data Corporation | Plural microcode control memory |
CN1904851A (zh) * | 2005-07-29 | 2007-01-31 | 中国科学院计算技术研究所 | 一种单步执行在片调试功能的方法及装置 |
CN101295279A (zh) * | 2007-04-29 | 2008-10-29 | 国际商业机器公司 | 多线程环境下的调试程序的方法和系统 |
CN106843816A (zh) * | 2017-01-23 | 2017-06-13 | 青岛朗思信息科技有限公司 | 一种分支预测控制方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108984392A (zh) | 2018-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108984392B (zh) | 单步调试方法和调试器 | |
KR101513953B1 (ko) | 조건부 비-분기 명령들의 비-실행을 예측하기 위한 방법들 및 장치들 | |
US9280351B2 (en) | Second-level branch target buffer bulk transfer filtering | |
US8612944B2 (en) | Code evaluation for in-order processing | |
US10831499B2 (en) | Apparatus and method for performing branch prediction | |
CN106547587B (zh) | 用于生成目标程序的配置文件的装置和方法 | |
US8250344B2 (en) | Methods and apparatus for dynamic prediction by software | |
CN110928778B (zh) | 死循环定位方法、装置、计算机设备和存储介质 | |
US6119221A (en) | Instruction prefetching apparatus and instruction prefetching method for processing in a processor | |
CN114528025B (zh) | 指令处理方法、装置、微控制器及可读存储介质 | |
JP7232331B2 (ja) | ループ終了予測器 | |
US9817763B2 (en) | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products | |
JP2001273138A (ja) | プログラム変換装置および方法 | |
CN110851182B (zh) | 指令获取方法、装置、计算机设备和存储介质 | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN115292201B (zh) | 函数调用栈解析和回溯方法与装置 | |
CN112596792A (zh) | 分支预测方法、装置、介质及设备 | |
CN108345534B (zh) | 生成和处理跟踪流的装置和方法 | |
US11941403B2 (en) | Selective prediction based on correlation between a given instruction and a subset of a set of monitored instructions ordinarily used to generate predictions for that given instruction | |
US8266414B2 (en) | Method for executing an instruction loop and a device having instruction loop execution capabilities | |
JP7318707B2 (ja) | 半導体装置、制御フロー検査方法、制御フロー検査プログラム及び電子機器 | |
CN118210557B (zh) | 用于过滤无效预取的预取方法、装置、设备和存储介质 | |
CN114217860A (zh) | 分支预测装置 | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
KR20060034998A (ko) | 분기 예측부 접근을 제어하기 위한 장치 및 방법 |
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 | ||
CP02 | Change in the address of a patent holder |
Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |