CN101826052A - Nual执行语义微处理器中保持延时一致性的断点实现方法 - Google Patents
Nual执行语义微处理器中保持延时一致性的断点实现方法 Download PDFInfo
- Publication number
- CN101826052A CN101826052A CN 201010162207 CN201010162207A CN101826052A CN 101826052 A CN101826052 A CN 101826052A CN 201010162207 CN201010162207 CN 201010162207 CN 201010162207 A CN201010162207 A CN 201010162207A CN 101826052 A CN101826052 A CN 101826052A
- Authority
- CN
- China
- Prior art keywords
- streamline
- content
- debug logic
- debug
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种NUAL执行语义微处理器中保持延时一致性的断点实现方法,目的是针对NUAL执行语义下的嵌入式微处理器提出一种能够维持指令间的延时一致性的断点实现方法。技术方案是进入断点时,在流水线排空前保存通用寄存器文件的内容,并在流水线排空后写回到通用寄存器中,在流水线排空过程中禁止流水线对存储器的写操作并保存流水线排空过程中各拍存储器读端口寄存器的内容,重新运行时调试逻辑将流水线的执行站恢复为进入断点前的指令并将进入断点时对应节拍的存储器读端口寄存器内容写入当前寄存器中。采用本发明可消除进入断点时填充NOP指令,保持断点前后指令间相对延时一致性,保证指令执行与NUAL语义一致。
Description
技术领域:本发明涉及微处理器中的精确断点的实现方法,尤其是能够保持非单位假定延迟NUAL(Non-Unit Assumed Latencies)执行语义下精确的延时一致性的断点实现方法。
背景技术:
断点对于微处理器上的程序调试有着特别重要的意义。用户在程序调试过程中,经常需要进入断点,观察处理器或修改当前处理器的状态。断点并不仅仅是简单的停止处理器中流水线的运行,还需要确保进入断点和重新运行后的程序执行与顺序体系结构(Sequential Architecture)模型完全一致,保证用户查看到的处理器状态具有简单而唯一的定义。
传统的微处理器采用单位假定延迟UAL(Unit Assumed Latencies)的执行语义。在UAL语义处理器中,指令在重排序硬件结构的控制下总是顺序提交,对用户隐藏了指令延时。在UAL语义下断点可以通过调试逻辑用填入NOP指令(空操作)排空流水线的方法简单实现:调试逻辑位于微处理器芯片内部,一端通过调试接口与外部调试主机连接,另一端与微处理器的流水线以及通用寄存器相连。在外部调试主机的控制下,调试逻辑可以控制流水线的运行、停止及单节拍运行,允许及禁止取指以及允许及禁止外部存储器的读写操作;也可以对流水线站间寄存器和通用寄存器的数据进行读写。基于这样的调试逻辑,UAL语义微处理器中实现断点的具体过程为:在外部调试主机的控制下,调试逻辑停止流水线的运行并禁止取指。此时,流水线中执行站前是尚未发射的指令,通过调试逻辑将这些指令写为NOP指令取消其进一步执行;执行站中是已经发射但未提交的指令,通过调试逻辑控制流水线运行多拍,直到这些指令完全提交。
近年来,非单位假定延迟NUAL的执行语义开始广泛的应用于各种微处理器中。NUAL语义处理器中,指令的真实延迟暴露给编译器和用户。NUAL语义处理器通过编译器进行指令调度来确保指令间的严格的时序关系,极大降低了微处理器中硬件动态调度的开销。目前在NUAL语义处理器中仍然采用传统的NOP指令排空流水线的方法实现断点,这一方法会在调试时导致断点破坏预先编译好的时序关系。以表1中的指令序列为例,在NUAL执行语义下,Op2由于有3个节拍的延时,当Op3执行时R2尚未被Op2修改,其值应当是Op1的结果。如果断点设在第3条指令并采用传统的方法来实现断点,那么当断点触发时,Op2将在流水线排空过程中执行完毕并提交,而Op3由于尚未进入执行站将被取消。当从断点处重新运行时,Op3取得的操作数R2将是Op2的结果,而这与预期的NUAL执行语义不一致。
表1
目前,尚没有自动保持延时一致性的调试逻辑出现,只能依靠人工分析断点对执行语义的影响,这不但极大的限制了断点调试的能力,而且也增加了用户的工作量。因此,需要一种在NUAL执行语义下能够保持延迟一致性的精确断点实现方法。
发明内容:
本发明要解决的技术问题是针对NUAL执行语义下的嵌入式微处理器,提出一种能够维持指令间的延时一致性的断点实现方法。
本发明的技术方案是:
步骤1,进入断点:
1.1,调试逻辑停止处理器的运行,流水线中执行站前的所有站都写入NOP指令,调试逻辑禁止新的取指、禁止存储器写操作。
1.2,保存当前执行站寄存器内容和通用寄存器内容。调试逻辑读出流水线中所有执行站的寄存器内容并保存到调试主机,调试逻辑读出当前所有通用寄存器的内容并保存到调试主机。
1.3,保存流水线排空过程中各拍的外部存储器访问内容。调试逻辑控制流水线向前运行1拍,并读出第1拍外部存储器读端口寄存器内容并保存到调试主机。重复1.3步多次,直到流水线中所有残存指令执行完毕。
1.4,调试逻辑将1.2步中保存的通用寄存器内容写回到通用寄存器中。
1.5,调试逻辑控制允许外部存储器写操作。
步骤2,重新运行:
2.1,调试逻辑允许新的取指。
2.2,调试逻辑控制流水线运行1拍,从指令计数器PC(Program Counter)指向的地址开始取指,取到第1条新指令。重复2.2步多次,直到流水线的执行站前的每一站都填充了一条新取的指令。
2.3,调试逻辑将1.2步保存的所有执行站内容写入当前的流水线寄存器中,将流水线的执行站恢复为进入断点前的指令。
2.4,调试逻辑控制流水线运行1拍,从PC指向的地址取新的指令,将进入断点时对应节拍的存储器读端口寄存器内容写入当前寄存器中。重复2.4步多次,直到所有的恢复指令全部提交。
2.5,调试逻辑控制流水线持续运行。
采用本发明可以得到以下技术效果:
1.本发明消除了进入断点时填充NOP指令,保持了断点前后指令间相对延时一致性,保证了指令执行与NUAL语义一致。
2.进入断点时,在流水线排空前保存了通用寄存器文件的内容,并在流水线排空后写回到通用寄存器中,保证了断点时通用寄存器内容与NUAL语义一致。
3.本发明在流水线排空过程中禁止流水线对存储器的写操作,保证了断点前后存储器内容与NUAL语义一致。
4.本发明保存了流水线排空过程中各拍存储器读端口寄存器的内容,并在重新运行时进行了恢复,保证了流水线对存储器的读操作与NUAL语义一致。
附图说明:
图1是微处理器中调试逻辑的示意图
图2是背景技术中UAL进入断点时的流程图
图3是本发明步骤1进入断点时的流程图
图4是背景技术中重新运行时的流程图
图5是本发明步骤2重新运行时的流程图
图6是某微处理器的流水线说明
图7是某微处理器在背景技术下进入断点时各拍的流水线状态
图8是某微处理器在本发明中进入断点时各拍的流水线状态
图9是某微处理器在背景技术下重新运行时各拍的流水线状态
图10是某微处理器在本发明中重新运行时各拍的流水线状态
具体实施方式:
图1是微处理器中调试逻辑的示意图
调试逻辑位于微处理器芯片内部,通过调试接口与外部调试主机连接,在内部和微处理器的流水线以及通用寄存器相连。在外部调试主机的控制下,调试逻辑可以控制流水线运行/停止及单节拍运行,允许/禁止取指,允许/禁止读写存储器;也可以对流水线站间寄存器和通用寄存器的进行读写。存储器读端口寄存器是流水线站间寄存器的一部分,该寄存器保存了存储器读数据的结果。
图2是背景技术所述在传统的UAL语义下进入断点的流程图。首先,调试逻辑停止处理器的运行、禁止新的取指,流水线中执行站前的所有站都写入NOP指令。调试逻辑控制流水线逐拍向前运行,直到流水线中所有残存指令执行完毕。
图3是本发明中进入断点时的流程图,本发明中的NUAL语义下进入断点的流程图如图3所示。首先,调试逻辑停止处理器的运行,流水线中执行站前的所有站都写入NOP指令,调试逻辑禁止新的取指、禁止存储器写操作。然后,调试逻辑保存当前执行站寄存器内容和通用寄存器内容。接下来,调试逻辑控制流水线逐拍运行,并保存每一节拍的存储器读端口寄存器内容,直到流水线中所有指令执行完毕。最后,调试逻辑将流水线排空前的通用寄存器内容写回到通用寄存器中,调试逻辑控制允许存储器写操作。
图4是背景技术所述在UAL语义下重新运行的流程图。调试逻辑允许新的取指。调试逻辑控制流水线逐拍向前运行,直到流水线中填满了新取的指令。然后,调试逻辑控制流水线持续运行。
图5是本发明中的NUAL语义下重新运行的流程图。首先,调试逻辑允许新的取指,调试逻辑控制流水线逐拍向前运行,直到执行站之前填满了新取的指令。然后,调试逻辑将在进入断点时第二步中保存的所有执行站内容写入当前的流水线寄存器中,恢复执行站内容。之后,调试逻辑控制流水线逐拍向前运行,在每一拍将进入断点时对应节拍的存储器读端口寄存器内容写入当前寄存器中,直到执行站中恢复的指令执行完毕。最后,调试逻辑控制流水线持续运行。
图6是某微处理器的流水线划分。下面以某处理器为例具体讲述本发明的实现,该处理器的流水线如图6所示,共分为6站,其中P1为取指站,P2为译码站,E1~E4为指令执行站,不同指令执行站的长短不同。其中使用存储器作为源操作数的仅有load指令,在E4站存储器数据到达存储器读端口寄存器。
图7是某微处理器在背景技术下进入断点时各拍的流水线状态
图8是某微处理器在本发明中进入断点时各拍的流水线状态
对比图7和图8可以发现,本发明和背景技术的异同如下:
在第0拍,背景技术无操作,而本发明中保存了执行站的内容,保存了通用寄存器的内容,并且禁止了存储器写操作;
在第1~3拍,背景技术无操作,而本发明中保存了存储器读端口寄存器的内容;
在第4拍,背景技术无操作,而本发明中将第0拍保存的通用寄存器内容写回,保证了通用寄存器内容与NUAL语义一致;
图9是某微处理器在背景技术下重新运行时各拍的流水线状态
图10是某微处理器在本发明中重新运行时各拍的流水线状态
对比图9和图10可以发现,本发明和背景技术的异同如下:
在第0拍,本发明和背景技术在一致的;
在第1拍,执行站前的P1、P2填满新取指令后,背景技术没有其他操作,本发明中通过调试逻辑将执行站E1~E4恢复为图8中进入断点时第0拍的指令(对应图10中的恢复指令1~恢复指令4)。对比可以发现,背景技术中在新取指令前有多个NOP指令,因而改变了断点前指令和新取指令间的相对延时,而本发明中恢复指令和新取指令间没有任何多余的NOP,因此保证了新取指令和恢复指令之间相对延时的一致性。
在第2~4拍,背景技术没有其他操作,而本发明中分别将存储器读端口寄存器恢复为进入断点时的内容,这样就保证了指令1~指令4存储器读操作的结果和进入断点时是完全一致的。
Claims (1)
1.一种NUAL执行语义微处理器中保持延时一致性的断点实现方法,其特征在于包括以下步骤:
步骤1,进入断点:
1.1,调试逻辑停止处理器的运行,流水线中执行站前的所有站都写入NOP指令,调试逻辑禁止新的取指、禁止存储器写操作;
1.2,保存当前执行站寄存器内容和通用寄存器内容:调试逻辑读出流水线中所有执行站的寄存器内容并保存到调试主机,调试逻辑读出当前所有通用寄存器的内容并保存到调试主机;
1.3,保存流水线排空过程中各拍的外部存储器访间内容:调试逻辑控制流水线向前运行1拍,并读出第1拍外部存储器读端口寄存器内容并保存到调试主机;重复1.3步多次,直到流水线中所有残存指令执行完毕;
1.4,调试逻辑将1.2步中保存的通用寄存器内容写回到通用寄存器中;
1.5,调试逻辑控制允许外部存储器写操作;
步骤2,重新运行:
2.1,调试逻辑允许新的取指;
2.2,调试逻辑控制流水线运行1拍,从指令计数器PC指向的地址开始取指,取到第1条新指令;重复2.2步多次,直到流水线的执行站前的每一站都填充了一条新取的指令;
2.3,调试逻辑将1.2步保存的所有执行站内容写入当前的流水线寄存器中,将流水线的执行站恢复为进入断点前的指令;
2.4,调试逻辑控制流水线运行1拍,从PC指向的地址取新的指令,将进入断点时对应节拍的存储器读端口寄存器内容写入当前寄存器中,重复2.4步多次,直到所有的恢复指令全部提交;
2.5,调试逻辑控制流水线持续运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101622070A CN101826052B (zh) | 2010-05-04 | 2010-05-04 | Nual执行语义微处理器中保持延时一致性的断点实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101622070A CN101826052B (zh) | 2010-05-04 | 2010-05-04 | Nual执行语义微处理器中保持延时一致性的断点实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101826052A true CN101826052A (zh) | 2010-09-08 |
CN101826052B CN101826052B (zh) | 2012-07-04 |
Family
ID=42689976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101622070A Expired - Fee Related CN101826052B (zh) | 2010-05-04 | 2010-05-04 | Nual执行语义微处理器中保持延时一致性的断点实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101826052B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929644A (zh) * | 2012-11-22 | 2013-02-13 | 江苏大学 | 一种用于计算机硬件实验微处理器的嵌入式运行控制逻辑 |
CN115616973A (zh) * | 2022-10-26 | 2023-01-17 | 深圳市汇川技术股份有限公司 | 断点调试功能的实现方法、系统、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154183A (zh) * | 2006-09-29 | 2008-04-02 | 上海海尔集成电路有限公司 | 一种微控制器嵌入式在线仿真调试系统 |
WO2009045628A1 (en) * | 2007-09-28 | 2009-04-09 | Freescale Semiconductor, Inc. | System and method for monitoring debug events |
CN101655784A (zh) * | 2008-08-21 | 2010-02-24 | 株式会社东芝 | 流水线操作处理器和控制系统 |
-
2010
- 2010-05-04 CN CN2010101622070A patent/CN101826052B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154183A (zh) * | 2006-09-29 | 2008-04-02 | 上海海尔集成电路有限公司 | 一种微控制器嵌入式在线仿真调试系统 |
WO2009045628A1 (en) * | 2007-09-28 | 2009-04-09 | Freescale Semiconductor, Inc. | System and method for monitoring debug events |
CN101655784A (zh) * | 2008-08-21 | 2010-02-24 | 株式会社东芝 | 流水线操作处理器和控制系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102929644A (zh) * | 2012-11-22 | 2013-02-13 | 江苏大学 | 一种用于计算机硬件实验微处理器的嵌入式运行控制逻辑 |
CN115616973A (zh) * | 2022-10-26 | 2023-01-17 | 深圳市汇川技术股份有限公司 | 断点调试功能的实现方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101826052B (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4922414A (en) | Symbolic language data processing system | |
EP0241946B1 (en) | Information processing system | |
US4763242A (en) | Computer providing flexible processor extension, flexible instruction set extension, and implicit emulation for upward software compatibility | |
US7197671B2 (en) | Generation of trace elements within a data processing apparatus | |
JP3105223B2 (ja) | マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置 | |
US8234514B2 (en) | Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code | |
US20020147965A1 (en) | Tracing out-of-order data | |
JP3776132B2 (ja) | マイクロプロセッサの改良 | |
CN102662634A (zh) | 非阻塞发射和执行的存储器访问执行装置 | |
CN102073480B (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
KR101862094B1 (ko) | 트랜잭션 메모리 프로그램을 위한 소프트웨어 재생기 | |
US20120173848A1 (en) | Pipeline flush for processor that may execute instructions out of order | |
KR100210205B1 (ko) | 스톨캐쉬를 제공하기 위한 장치 및 방법 | |
BR112015029930B1 (pt) | Pares de imposição de ordem de instrução de instruções, processadores, métodos e sistemas | |
US8027828B2 (en) | Method and apparatus for synchronizing processors in a hardware emulation system | |
CN101826052B (zh) | Nual执行语义微处理器中保持延时一致性的断点实现方法 | |
CN101916181B (zh) | 微处理器及其执行方法 | |
Heath | Microprocessor architectures and systems: RISC, CISC and DSP | |
KR102379886B1 (ko) | 벡터 명령 처리 | |
WO2022235265A1 (en) | Debug channel for communication between a processor and an external debug host | |
US20200310816A1 (en) | Processor, device, and method for executing instructions | |
GB2389931A (en) | Selective generation of trace elements | |
Lenell et al. | A 20 MHz CMOS reorder buffer for a superscalar microprocessor | |
US20070043551A1 (en) | Data processing | |
EP2013680B1 (en) | Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120704 Termination date: 20150504 |
|
EXPY | Termination of patent right or utility model |