CN1306411C - 一种处理器中事件处理的装置、方法和系统 - Google Patents

一种处理器中事件处理的装置、方法和系统 Download PDF

Info

Publication number
CN1306411C
CN1306411C CNB018207065A CN01820706A CN1306411C CN 1306411 C CN1306411 C CN 1306411C CN B018207065 A CNB018207065 A CN B018207065A CN 01820706 A CN01820706 A CN 01820706A CN 1306411 C CN1306411 C CN 1306411C
Authority
CN
China
Prior art keywords
monitoring point
address
monitoring
instruction
register
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.)
Expired - Fee Related
Application number
CNB018207065A
Other languages
English (en)
Other versions
CN1555526A (zh
Inventor
C·P·罗思
R·P·辛格
G·A·奥弗坎普
Original Assignee
Analog Devices Inc
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Analog Devices Inc, Intel Corp filed Critical Analog Devices Inc
Publication of CN1555526A publication Critical patent/CN1555526A/zh
Application granted granted Critical
Publication of CN1306411C publication Critical patent/CN1306411C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Abstract

在一个实施例中,一个监测点引擎产生便于复杂集成电路器件(如,流水线处理器)的代码开发产生监测点。

Description

一种处理器中事件处理的装置、方法和系统
技术领域
本发明涉及适用于流水线处理器的监测点的产生。
背景技术
为复杂的集成电路器件,如流水线处理器,所开发的代码一般要求进行大量的调试。生成监测点有助于监控指令通过处理器流水线时的发送。为此,可以提供一个监测点引擎来提供处理器流水线的状态信息,并向用于事件处理的控制单元提供状态信息。采用这种方式,应用程序开发者能够验证正确的代码操作,从而调试为处理器所开发的代码。
发明内容
本发明提供一种处理器中事件处理的装置,包括:一个适用于存贮监测点地址的监测点寄存器;一个比较监测点地址和与在处理器流水线的第一级中提交的指令相关的程序地址的比较器;一个当程序地址等于监测点地址时产生监测点匹配的监测点发生器,其中所述监测点寄存器包括一个装入第一监测点地址的第一监测点寄存器和一个装入第二监测点地址的第二监测点寄存器,所述比较器被配置为将第一和第二监测点地址和与提交给处理器流水线的指令相关的程序地址进行比较,以及所述监测点发生器被配置为当程序地址在由第一和第二监测点地址定义的范围内时产生一个监测点匹配;一个在处理器流水线第二级中产生计数值的计数器,所述计数值表示监测点匹配的次数;一个在计数值超过触发阈值时触发一请求的触发器电路;以及一个在与一个监测点匹配相关的一条指令在流水线后面级中被删除或被停止时调整所述计数值的控制器,其中,所述范围是第一和第二监测点地址之间连续的与或范围,或在第一和第二监测点地址连续范围之外的异或范围。
本发明还提供一种流水线处理器中事件处理的方法,包括:比较监测点地址和与在处理器流水线第一级提交的指令相关的程序地址;当程序地址等于监测点地址时产生监测点匹配;在处理器流水线的第二级产生表示监测点匹配数目的计数值;当计数值超过触发器阈值时产生一请求;当与一个监测点匹配相关的一条指令在流水线后面级中被删除或被停止时调整所述计数值;指定在第一和第二监测点寄存器中的第一和第二监测点地址;将第一和第二监测点地址和与提交给处理器流水线的指令相关的程序地址进行比较;当所述程序地址在由第一和第二监测点地址定义的范围内时产生一个监测点匹配;以及当所述程序地址在第一和第二监测点地址之间连续的与或范围内,或在第一和第二监测点地址连续范围之外的异或范围内时产生一个监测点匹配。
本发明还提供一种用于处理器事件处理的系统,包括:一个闪存器件;一个与闪存器件相耦合的流水线处理器;一个适用于存贮第一监测点地址的第一监测点寄存器;一个适用于存贮第二监测点地址的第二监测点寄存器;一个比较第一及第二监测点地址和相关于提交给处理器流水线的指令的程序地址的比较器;一个当程序地址在由第一和第二监测点地址定义的范围内时产生监测点匹配的监测点发生器,其中所述范围是第一和第二监测点地址之间连续的与或范围,或在第一和第二监测点地址连续范围之外的异或范围;一个产生表示由监测点发生器产生的监测点匹配数目的计数值的计数器;一个当计数值超过触发阈值时触发一个请求的触发器电路,其中所述请求是仿真事件处理请求或异常处理请求;以及一个当与一个监测点匹配相关的一条指令在流水线后面的执行级中被删除或被停止时调整计数值的控制器。
本发明的一个方面涉及一个装置,包括:一个适用于存贮监测点地址的监测点寄存器;一个比较监测点地址和与在处理器流水线的第一级中提交的指令相关的程序地址的比较器。该装置还包括一个当程序地址等于监测点地址时产生监测点匹配的监测点发生器;以及一个在处理器流水线第二级中产生计数值的计数器,计数值表示监测点匹配的次数。
有利的实施方式可以包括以下一个或多个特征。该装置可以包括一个在计数值超过触发阈值时触发请求的触发器电路;以及一个在与一个监测点匹配相关的一条指令在流水线后面级中被删除或被停止时调整计数值的控制器。程序地址可以是指令地址或者数据地址。还可以包含事件发生电路,根据与监测点匹配相关的预定事件类型,选择性地产生仿真事件处理请求或者异常处理请求。计数器通过为每个监测点匹配减去一个初始计数值产生计数值,而当与一个监测点匹配相关的一条指令在流水线的后面级被删除或被停止时控制器通过补偿减值功能来调整计数值。监测点寄存器包括一个装入第一监测点地址的第一监测点寄存器和一个装入第二监测点地址的第二监测点寄存器。
比较器将第一和第二监测点地址和与提交给处理器流水线的指令相关的程序地址进行比较,并且当程序地址在由第一和第二监测点地址定义的范围内时监测点发生器产生一个监测点匹配。所述范围是第一和第二监测点地址之间连续的与或范围,或在第一和第二监测点地址连续范围之外的异或范围。电路为了节约电能可选择地禁止监测点寄存器之一。比较器包括一个比较第一监测点地址和程序地址的第一比较器和一个比较第二监测点地址和程序地址的第二比较器。监测点引擎可包括可选择地禁止第一和第二比较器中至少一个并稳定被禁止比较器输出的电路。
本发明的另一个方面涉及一种方法,包括:比较监测点地址和与在处理器流水线第一级提交的指令相关的程序地址;当程序地址等于监测点地址时产生监测点匹配;以及在处理器流水线的第二级产生表示监测点匹配数目的计数值。
有利的实施方式可以包括以下一个或多个特征。该方法还包括当所述计数值超过触发阈值时产生一个请求;以及当与一个监测点匹配相关的一条指令在流水线后一级被删除或被停止时调整所述计数值。产生计数值包括在流水线第一级之后的流水线第二级产生计数值。产生请求包括产生仿真事件处理请求或异常处理请求。监测点地址和程序地址的比较包括监测点地址与指令地址或数据地址的比较。该方法可以包括根据与监测点匹配相关的预定事件类型可选择地产生仿真事件处理请求或异常处理请求。该方法还可包括指定在第一和第二监测点寄存器中的第一和第二监测点地址,比较第一和第二监测点地址与在处理器流水线提交的指令相关的程序地址;以及当程序地址在由第一和第二监测点地址定义的范围内时产生监测点匹配。该方法还可包括当程序地址落在第一和第二监测点地址之间连续的与或范围或者在第一和第二监测点地址连续范围之外的异或范围内时产生监测点匹配。该方法还可包括为了节约电能选择地禁止第一和第二监测点寄存器之一。
本发明的再一个方面涉及一种系统,包括:一个闪存器件;一个与闪存器件相耦合的流水线处理器;一个适用于存贮第一监测点地址的第一监测点寄存器;和一个适用于存贮第二监测点地址的第二监测点寄存器。该系统还包括一个比较第一及第二监测点地址和相关于提交给处理器流水线的指令的程序地址的比较器;一个当程序地址在由第一和第二监测点地址定义的范围内时产生监测点匹配的监测点发生器;和一个产生表示由监测点发生器产生的监测点匹配数目的计数值的计数器。系统还包括一个当计数值超过触发阈值时触发一个请求的触发器电路;以及一个当与一个监测点匹配相关的一条指令在流水线后面的执行级中被删除或被停止时调整计数值的控制器。
有利的实施方式可包括以下一个或多个特征。所述请求是仿真事件处理请求或异常处理请求。
本发明的再一个方面涉及一种装置引擎,包括:一个装入监测点地址的监测点寄存器;一个比较监测点地址和与处理器流水线第一级的一条指令相关的程序地址的比较器;一个当程序地址等于监测点地址时产生监测点匹配的监测点发生器;以及一个在处理器流水线第二级中产生计数值的计数器。计数值表示由监测点发生器产生的监测点匹配的数目。
有利的实施方式可包括以下一个或多个特征。该装置包括一个当计数值超过触发阈值时触发一个请求的触发器电路;以及一个当与一个监测点匹配相关的一条指令在流水线后面一级中被删除或被停止时调整计数值的控制器。所述请求是仿真事件处理请求或异常处理请求。
本发明的另一个方面涉及一种方法,包括:指定监测点地址;比较监测点地址和与在处理器流水线第一级的一条指令相关的程序地址;当程序地址等于监测点地址时产生一个监测点匹配;以及在处理器流水线第二级中产生计数值,该计数值表示监测点匹配的数目。
有利的实施方式可包括以下一个或多个特征。该方法包括:当计数值超过触发器阈值时产生请求;以及当与一个监测点匹配相关的一条指令之一在流水线在后面一级被删除或被停止时调整计数器。
本发明的另一个方面涉及一种装置,包括:一个具有第一监测点地址的第一监测点寄存器;一个具有第二监测点地址的第二监测点寄存器;和一个比较第一和第二监测点地址和与提交给处理器流水线的指令相关的程序地址的比较器。该装置还包括一个根据比较产生一个监测点匹配的监测点发生器;以及可选择地禁止至少一个第一和第二比较器之一并稳定被禁止的比较器输出的电路。
有利的实施方式可包括以下一个或多个特征。所述第一和第二监测点地址定义了一个范围,当程序地址落在由第一和第二监测点地址定义的范围内时监测点发生器产生一个监测点匹配。
附图说明
图1是说明具有流水线处理器和监测点引擎的集成电路的方框图。
图2是说明用于实现一个监测点引擎电路的电路图。
图3是说明用于实现一个监测点引擎附加电路的电路图。
图4是说明用于实现一个监测点引擎附加电路的电路图。
图5是说明用于实现一个监测点引擎附加电路的电路图。
图6是说明监测点匹配产生的流程图。
具体实施方式
图1是说明一个集成电路器件10的方框图。如图1所示,集成电路器件10可以包括一个可编程处理器12、一个处理器控制单元14和一个监测点引擎16。处理器12可以执行在诸如闪存存储器器件的随机存取存贮器(RAM)器件中的指令。处理器12可以是一个具有多个执行级的流水线处理器。监测点引擎16实时地从处理器12提取状态信息并处理信息,以通知诸如异常和中断事件的控制单元14。
监测点引擎16可以适用于匹配数据或指令的地址,和匹配地址与或或异或范围,即组合匹配。同样,监测点引擎16可以适用于跟踪监测点地址匹配在通过流水线处理器12的连续执行级时的发送。为了这个目标,监测点引擎16可以包括安排适当的寄存器和逻辑以支持上述功能。寄存器可以用触发器或锁存器实现。此外,可以安排监测点16实时为处理器12的高频操作产生监测点
对于不同的功能可以独立地使能或禁止监测点引擎16模块部件,以利用节约电能。对于嵌入在电池供电的手持或其它便携设备中的集成电路器件来说,监测点引擎16可能特别有用,节约电能是这些设备所关心的一件事。因此,在有些实施例中,监测点引擎16可能结合了实时响应、高频操作和降低电源损耗等优点。
为指令和数据而产生准确的监测点匹配方便调试并能够代码插入。指令通过一个处理器流水线的发送能够实时监视,以便于识别仿真和异常事件并提供适应的仿真模式或异常处理。在相关指令之前几个周期可以识别监测点匹配。重要的是,当指令到达回写级时异常的处理能够快速而准确地产生,使指令被删除,也就是被终止。这个特点使代码插入更容易。这样,高频、实时的监测点匹配可以为代码开发者提供明显的优势。
图2是说明适合监测点引擎16实现的电路的方框图。如图2所示,监测点16可以包括一个或多个监测点寄存器18、20。监测点寄存器18用“WP0”指定,而监测点寄存器20用“WP1”指定。监测点寄存器18、20可以是存贮器映射的寄存器,该寄存器是代码开者采用为调试目的所需要的监测点地址来编程的。在图2中,监测点寄存器18、20用触发器表示。在一个实施例中,监测点引擎16可以包括六个监测点寄存器,这些寄存器够对多条指令和数据的地址以及多个地址范围进行匹配。
一个监测点状态寄存器(未示出)记录监测点匹配。一个监测点指令地址控制寄存器和一个监测点数据地址控制寄存器(未示出)指定特定的监测点匹配是否应当产生仿真事件或异常事件。代码插入或取代旧指令,可以通过在监测点寄存器的一个中写入旧代码的起始地址,并在控制寄存器的一个中设置一个相应位以触发一个异常。在异常服务程序中,读取状态寄存器。通常,当一条指令要求回写时,它就被删除。这时,异常程序产生转移到另一位置上的一条指令的跳转。执行在该位置的指令。然后,程序再返回在回写时被删除指令的下一条指令。这样,新的指令代替被删除的指令被执行,提供一个代码插入。
监测点寄存器18、20可以用直接匹配监测点或范围边界监测点装入。一个直接匹配监测点是一个指令或数据的存贮器地址,监测点引擎16根据存贮器地址产生一个监测点匹配。一个范围边界监测点是定义一个地址范围的边界之一的指令或数据的存贮器地址,监测点引擎16根据该存贮器地址提供一个监测点匹配。
对于直接匹配,在独立的基础上监测点地址被装入监测点寄存器18、20。对于一个范围匹配,两个监测点地址被装入监测点寄存器18和监测点寄存器20,它们共同定义匹配所使用的一个地址范围。直接匹配和范围界定监测点地址都能够根据需要编程监测点寄存器18、20。
监测点引擎16还可以包括多路转换器22、24、26、28和比较器30、32、34、36。多路转换器22、26选择一个所提供的当前的指令或数据的地址,或者一个“0”,这一般是一个多位的数值地地址。图2所示可作为程序计数器仍提供的指令地址(IA),这是作为例子的目的。图1中的这个地址位于一个执行阶段中,例如EX1。多路转换器24、28选择装在各个监测点寄存器18、20中的监测点地址或者一个“1”或其它非零值,这一般是一个多位的数值。多路转换器22、24的输出施加到比较器30、32。同样地,多路转换器26、28的输出施加到比较器34、36。在各种情况中,各个比较器30、32、34、36都将多路转换器22、26的输出与其它多路转换器24、28的输出进行比较。
在监测点寄存器18、20的一个或两个被禁止以节约电能的事件中,提供多路转换器22、24、26、28用于稳定比较电路。在只监控一个单个直接匹配监测点的事件中,例如,监测点寄存器18、20中的一个可能被禁止。从节约电能的观点来看这是非常有利的,尤其对于电池供电的设备。特别是,监测点引擎16的部分或全部在不需要的时候都可以选择性地禁止,避免额外的电能损耗。如果不需要监测点监控,能够复位一个全局使能以禁止与监测点电路有关的所有触发器和锁存器。
一个WP0使能/禁止控制线可以与两个多路转换器22、24相耦合。一个WP1使能/禁止控制线可以连接到两个多路转换器26、28相耦合。如果不能使能监测点寄存器18,多路转换器22、24接收到WPO禁止信号,相应地给比较器30、32发送一个多位的“0”和“1”。否则,比较器30、32接收指令地址(IA)以及用于比较的各个监测点地址。所参考的指令地址只是再一次地用于举例的目的。在其它例子中,这个地址可以是一个数据地址。多路转换器26、28响应事件监测点20禁止中的WP1禁止信号采用相似的方式工作。如果比较器30、32、34、36不触发,与比较器相耦合的其余下游逻辑也不会动作,从而导致有效地节省电能损耗。
在正常操作中,比较器30、34监测在监测点寄存器18、20中的各个监测点地址和通过多路转换器22、26提供当前的地址之间的直接匹配。换句话说,比较器30、34确定监测点地址和指令地址是否相互相等。如果来自寄存器18的监测点地址等于指令地址,比较器30就向构成监测点匹配发生器部件的其它监测点逻辑电路发送一个多位“1”。比较器34以相似方式操作。
比较器32确定寄存器18中的监测点地址是否小于指令地址。在这种情况下,寄存器18中监测点地址可以作为一个范围匹配的下边界地址使用。比较器36确定寄存器20中的监测点地址是否大于等于指令地址。在这种情况下,寄存器20中监测点地址可以作为一个范围匹配的上边界地址使用。如果在每个比较器32、36存在一个监测点匹配,那么指令地址就在由寄存器18、20指定的范围之内。在这种情况下,比较器32、36给另外的逻辑电路发送一个“1”。
在所说明的实施例中,比较器30的输出与AND门38相耦合,而比较器32的输出则与AND门40和OR门42的一个反相输入相耦合。比较器34的输出与AND门44相耦合,而比较器36的输出与AND门40和OR门42的一个反相输入相耦合。AND门38、44具有接收一个RANGE使能信号的反相输入。实际上,如果比较器30、34表示一个直接监测点地址匹配和监测点引擎16没有采用范围模式工作,即,AND门38、44收到“NOT RANGE”,AND门38、44就发一个“1”。
AND门40的输出馈送至另一个AND门46,以确定指令地址是否在一个与或边界在内的范围内,该与或范围由装入监测点寄存器18的范围界定监测点所定义的。AND门46接收AND门40的输出作为其输入,其中RANGE enable信号表示监测点引擎16是采用范围模式,以及与或信号表示范围模式是与或,即,监测点引擎与装入监测点寄存器18、20中的两个范围边界监测点之间的地址相匹配。
OR门42工作以定义一个异或范围,它用反相输入接收比较器32、36的输出。OR门42的输出“1”表示在监测点寄存器18中的监测点地址不小于指令地址或者在监测点寄存器20中的监测点地址不大于等于指令地址。OR门42的输出馈送至AND门48,AND门48还用反相输入接收一个Disable信号。Disable信号表示异或范围模式是使能还是禁止。这样,当Disable信号是低且比较器32、36的输出之一是低,OR门42和AND门48就发送“1”。
AND门48的输出馈送至另一个AND门50。AND门50接收Range使能信号和Exclusive Range(异或范围)使能信号作为另外的输入。Range使能信号表示监测点引擎16采用范围模式,而Exclusive异或信号表示范围模式是异或的。换句话说,监测点引擎16采用这样一个模式,使它与在由装在监测点寄存器18、20中的范围边界监测点所定义的范围之外的地址相匹配。如果Exclusive异或信号为高、Range信号为高和AND门48的输出为高,则AND门50发送“1”到OR门52。
OR门52接收与或范围AND门46、异或范围AND门50和直接匹配AND门38的输出作为输入。如果OR门52的任何输入为高,则它向AND门54输出“1”。在图2所示的逻辑电路主要其在处理器流水线的第一执行级中工作。正如所说明的,这个阶段可标记为“EX1”级。如果在流水线前面的一条指令已经被删除或停止,则在发送由图2的逻辑电路所确定的监测点匹配之前就要处理事件。
为了这个目的,AND门54包括作为输入的一个反相的Kill信号、一个反相的Stall信号和一个Valid信号。Kill信号表示特定流水线阶段的一条指令已经被删除。Stall信号表示特定流水线阶段的一条指令已经被停止。Valid信号表示当前指令有效。如果AND门54接收到来自OR门52的一个结合一个非删除、非停止和有效的匹配信号,则它就向监测点引擎16的下一级发送“1”。否则,AND门54产生“0”。
AND门54输出“1”表示存在着一个与或范围匹配或者是一个异或范围匹配或者一个直接匹配,这取决于时应用于监测点引擎16是什么监测点模式。由AND门54检测到的与或和异或范围匹配是相对于装在监测点寄存器18、20中的监测点地址所作出的。由AND门54检测到的直接匹配是相对于装在监测点寄存器18中的监测点地址所作出的。
AND门56和AND门54相似,用于检测和表示直接匹配于装在监测点寄存器20中的监测点地址。AND门56接收AND门44的输出、Kill反相信号、Stall反相信号和Valid信号,作为其输入。如果AND门44的输出为高并且AND门56接收到非删除、非停止和有效信号,则它发送“1”到监测点引擎16的下一级。在这种方式中,AND门56表示一个直接地址匹配于装在监测点寄存器20中的监测点地址。
图3是说明产生监测点的附加电路的原理图。图3的电路表示监测点引擎16是跟着图2所说明的级之后的下一级,并横跨处理器流水线的第二(EX2)、第三(EX3)和回写(WB)级,如在图3中用虚线分界线表示。在图3的例子中,寄存器58,例如,一个触发器,保持图2的AND门54的输出。基本类似于图3所示电路的电路可以提供图2所示AND门56输出的处理。
图3所示的电路的一个重要方面是允许对处理器流水线执行级内的异常准确处理的动态计数器逻辑。例如如果向EX2发送一个监测点匹配,但是删除了在流水线EX3前面的一条指令,则监测点引擎16重新调整计数器以补偿与监测点地址相匹配的被删除的指令。为了这一目的,寄存器58的输出同时馈送至一个计数器电路和一个监测点逻辑。特别,寄存器58馈送至一个计数器逻辑电路60,它起着一个计数器的作用控制器和接收一个计数调整信号作为另外一个输入,如用标识字62所表示的。
计数器逻辑电路60控制多路转换器64以选择-1或者馈送至加法器66的一个计数器调整量。加法器66用于对由一系列多路转换器68、70和一个计数寄存器72所产生的计数器数值进行增加或减少。在检测到一个正在计数的特定事件时,普通的操作是减少1,也就是加上-1。计数器用于使能对在触发仿真或异常事件管理器以前所连续发生的特写监测点进行计数。值得注意的是,在EX1级检测到的监测点匹配的发生可以在后一级,即EX2级计数。
计数寄存器72的输出可以再馈送至加法器66,用标识数字74表示,以及馈送至多路转换器68的一个输入。多路转换器68接收加法器66的输出作为它的另一个输入。多路转换器70可用于装入一个所要求的计数值。多路转换器70响应一个Count Enable信号来选择或者由多路转换器68所提供的计数值或者由应用程序开发者装入存贮器的初始计数值。换句话说,多路转换器70允许输入表示在产生一个事件触发之前应当被检测的事件次数的初始计数值。在运行中,该初始值由加法器66减少。
一个Count Update信号表示多路转换器68是否应该选择加法器66的输出还是寄存器72的输出。因此,Count Update信号表示计数值是否应该更新还是保持。如果加法器66的输出被多路转换器68选择,现有的计数器值减少或增加,这取决于应用于加法器的多路转换器64的输出。如果寄存器72的输出被多路转换器68选择,现有的计数器值被保持,而不再增加或减少。
计数器电路跟踪特定事件,例如,直接匹配或范围匹配的发生所需要次数。如果一条指令产生一个监测点地址匹配并导致计数器减少,但该指令在EX3级被删除了,则计数器数值加1而非减少以补偿被匹配的指令被计数但随后被删除的事实。如果一条指令产生一个监测点地址匹配并导致计数器减少,但该指令在回写阶段被删除了,则计数器值增加1而非减少。如果产生监测点地址匹配的指令在EX3和回写级删除,则计数器值增加2而非减少。由寄存器76、AND门78、寄存器80、逻辑电路82和寄存器84提供了用于确定计数器值应该被调整的量的逻辑。
寄存器76接受来自AND门75的一个输入,该输入表示在EX2级是否已经检测到一个有效匹配。有效匹配是指产生一个监测点地址匹配的相关指令在当前流水线级中是有效的、没有删除和没有停止。寄存器76的输出馈送至AND门78和逻辑电路82。AND门78还接收表示所匹配的指令在EX3级中没有删除、没有停止和有效的信号的输入。对每个流水线级来说,没有删除,没有停止和有效信号是逻辑上不同的信号。如果在EX3级存在着匹配和匹配的指令没有删除、没有停止和有效的,则AND门78的输出馈送至寄存器80,它在回写(WB)阶段输出一个数值。
寄存器80的输出与寄存器76的输出一起馈送至逻辑电路82。逻辑电路82依次产生计数器调整量并驱动寄存器84的输入。寄存器76的输出表示指令在EX3级中是否被删除、停止或非有效。寄存器80的输出表示指令在回写级中是否被删除、停止或非有效。基于这些输入,逻辑电路82产生上面所述的计数器调整量,例如1或2,并补偿减少操作。寄存器84向多路转换器64提供计数器调整量。当需要计数器调整,逻辑电路82还产生一个Count Adjust信号并施加于多路转换器64作为控制信号以选择由寄存器84所产生的计数器调整量而不是输入多路转换器64的-1或0。Count Adjust信号可以简单地表示一条指令在EX3和回写中是否被删除。
逻辑电路82响应流水线的后续执行级中匹配指令的删除来产生计数器调整量。在这种方式中,跟踪一个特定的匹配所发生次数的计数器值能够补偿已经计数但在以后被删除的匹配。逻辑电路82的输出基本上跟踪两个条件和这些条件结合。
当产生一个监测点地址匹配的一条指令在EX3级中已经被删除时,第一个条件存在。当产生一个监测点地址匹配的一条指令在回写级中已经被删除时,第二个条件存在。在有些情况下,两个条件都存在。逻辑电路82基于寄存器76和寄存器80的输出来识别这些条件。寄存器76的输出表示在EX3级中的有效匹配,而寄存器80的输出表示在回写级中一条指令是否被删除或被停止。
对于第一个条件的存在,但第二个条件不存在,逻辑电路82产生数值“1”作为计数器调整量。这样,加法器66给现有计数器值加“1”,补偿在流水线前一级被删除的一条指令。如果在两个级(EX3和WB)中都有被删除的指令,但在这级中没有监测点地址匹配,计数器就加零。
对于第二个条件存在,但第一个条件不存在,逻辑电路82产生数值“1”作为计数器调整量。这样,加法器66给现有的计数器值加“1”,增加计数值而不是减少数值,以补偿在WB级被删除的一条指令。
对于第一个和第二个条件同时存在,逻辑电路82产生数值“2”作为计数器调整量。这样,加法器66给现存计数器值加“2”,给计数器值增加“2”而不是减少数值,以补偿在EX3级和随后的回写(WB)级中被删除的、产生监测点地址匹配的指令。
AND门86接收寄存器58的输出、加法器66的最高有效位,以及在反相输入端接受寄存器72输出的最高有效位。AND门86跟踪计数器是否根据EMU或EXC事件产生的条件已经发生翻转,因此只要求检查寄存器72和加法器66的最高有效位。寄存器58的输出和AND门86的输出被多路转换器88接收。当寄存器58的输出表示一个监测点匹配,在寄存器72中的当前计数器值已经被减“1”,以及加法器66的输出为“1”(表示在当前周期没有计数器调整),则AND门86向多路转换器88输出“1”。
计数使能信号可以表示开发者是否已经为一个监测点指定发生次数或者单次发生是否足以事件触发。如此,count enable信号可以表示多路转换器88是否应当选择寄存器58的输出还是选择AND门86的输出,因此,相应地表示是否在第一次发生时或者在第n次发生时触发。多路转换器88从而可以构成触发电路的一部分,以指定一个监测点的发生次数。
多路转换器88的输出可以驱动一个仿真(EMU)事件发生电路90和一个异常(EXC)事件发生电路92。EMU发生电路90驱动寄存器94产生一个在流水线的EX3级的仿真请求(EMU REQ)。EXC发生电路92驱动寄存器96产生一个在流水线的EX3级的异常请求(EXC REQ)。EMU和EXC发生电路90、92将在下面参考图4更详细地讨论。
一个仿真事件引起处理器12进入仿真模式。在仿真模式中,指令能够从集成电路器件10所提供的JTAG接口读取。IEEE标准1149.1(IEEE Std.1-1990,1990年出版,题名为“Test Access Port and Boundary-Scan Architecture”)意义了JTAG接机。当一个仿真事件发生时,仿真事件的类型,例如,监测点匹配,都可记录在一个状态寄存器。一个监测点匹配能够使处理器12有选择地发布一个异常而不是一个仿真事件。对于异常事件,处理器12进入异常处理程序。能够在监测点指令地址控制寄存器和监测点数据地址控制寄存器中设置配置位以指定某个事件是否应该产生仿真事件或者异常事件。
图4是说明适于实现监测点引擎的附加电路的另一个电路图。特别是,图4详细说明EMU事件发生电路90和EXC事件发生电路92。图4中这说明了图3的AND门86和多路转换器88。如图4所示,EMU事件发生电路90可以包括一个AND门91,它接收一个EMU使能信号和表示识别一个监测点事件的多路转换器88的输出作为输入。EMU使能信号表示所需要的事件类型是仿真。AND门91的输出驱动OR门93和95。
集成电路器件10可以包括多对监测点比较器,如图2所示。除AND门91的输出之外,OR门93接收所有监测点引擎的输出。除AND门91的输出之外,OR门95接收所有与指令监测点地址匹配的信号,如由不同监测点引擎比较器所产生的。另一个OR门97接收所有与数据监测点地址匹配的信号,如由不同监测点引擎比较器所产生的。因此,OR信号OR门93、95、97监视在集成电路器件10中所有监测点引擎的输出,作为监测点地址匹配的指示。一般来说,数据匹配只导致EMU事件的产生。
AND门98的一个输入接收门93的输出,以及一个反相输入接收一个指令与数据匹配使能信号,用标识数字102表示。实际上如果指令与数据匹配使能信号为高,那么AND门98被禁止了,并产生一个低输出。然而,如果OR门95和OR门97都为高。则AND门100产生一个高输出并因此表示一个指令匹配和一个数据匹配都在同一周期中。这样,指令和数据匹配使能信号将器件10置于只有当指令匹配和数据匹配同时存在时才产生EMU事件的模式中。如果指令和数据匹配使能信号为低,那么任何监测点地址匹配,如OR门93的输出所表示的都足以产生一个EMU事件。实际上,EMU发生电路90确定a)集成电路器件是否处在仿真模式,b)是否存在任何数据或指令匹配。
另外,如果指令和数据匹配使能信号再为高,OR门93的输出被忽略,而OR门95、97的输出在事件中都为高时驱动AND门100为高。如果指令和数据匹配使能信号为低,只有考虑OR门93的输出。在任何一种情况下,如果相关的输出。即来自AND门98或100的输出都为高,则门104变高以产生一个仿真请求。
对于异常发生电路92,EMU使能信号和多路转换器88的输出为AND门106提供输入。EMU使能信号在AND门106的反相输入被接收。多路转换器88的输出表示监测点比较器对中一个的监测点匹配状态,并因此是EXC事件发生电路92的很多输入之一。AND门106驱动OR门108的一个输入。OR门108的另外的输入是由集成电路器件10所提供的其它监测点比较器对所产生的各种指令和数据监测点匹配。OR门108的输出馈送至寄存器96。如果门108的输出表示一个异常匹配,寄存器96可以输出“1”驱动一个异常请求的产生。
图5是说明适于实现一个监测点引擎的部分电路的另一个电路图。特别是,图5图示了一个监测点状态寄存器(“WP Stat”)的维持。监测点状态寄存器WP Stat监视监测点的状态。这个寄存器可以在每个时钟周期被更新。当一个监测点或者监测点范围匹配时,WP Stat寄存器锁存监测点的源。这允许识别哪个监测点和源匹配了。
如图5所示,AND门114接收一个异常或仿真事件的信号和一个在相关级中事件是有效和没有删除和没有停止的信号。AND门114的输出驱动两个触发器116、118。中间的AND门117确定匹配的指令在EX3是否没有删除、没有停止和有效的。触发器118的输出驱动OR门120的一个输入。在触发器118的输出或WP Stat的内容为高的事件中,OR门120的输出为高。
一个多路转换器122接收OR门120的输出和AND门124的输出作为输入。AND门124接收WP Stat内容以及在一个反相输入接收一个WP Stat Clear信号为输入。WP Stat Clear信号表示WP Stat值是否应当设置为零。如果是,则AND门124的输出为低。多路转换器122是被EXC Takne/EMU Taken控制线控制的。如果要接受一个EXC或EMU事件,多路转换器122选择OR门120的输出。如果不要接受一个EXC或EMU事件,多路转换器122选择AND门124的输出。多路转换器122驱动表示WP Stat寄存器内容的寄存器126。
图6是说明监测点匹配的产生的一个流程图。一旦比较了当前指令或数据的地址与第一和第二监测点地址WP0和WP18(128)之后,该过程确定与或范围是否使能(130)。如果是,该过程确定地址是否大于第一监测点地址(WP0)和小于(或小于等于)第二监测点地址WP1(132)。如果不是,就确定没有监测点匹配(134)。如果是,该过程确定相关指令在当前流水线阶段是否有效、没有删除和没有停止(136)。如果是,就产生一个监测点匹配(136)。
如果与或范围没有使能,该过程确定异或范围是否使能(140)。如果是,该过程确定第一监测点地址WP0是否大于这个地址或者这个地址是否大于(或大于等于)第二监测点WP1(142)。如果任何一个为真,该过程确定相关指令是否有效、没有删除和没有停止(136)。如果是,发出一个监测点匹配的信号(138)。如果没有条件(142)为真,则不存在监测点匹配144。
如果既不是与或范围(130)也不是异或范围(140)被使能,要考虑的是与监测点WP0和WP1的直接匹配(146,148)。如果没有产生一个直接监测点匹配,产生这个信号(150)。如果任何一个监测点WP0、WP1产生一个直接匹配,该过程确定相关指令是否有效、没有删除和没有停止(136)。如果这个条件为真,该过程识别出一个监测点匹配(138)。
已描述了本发明各种不同的实施例。这些及其它的实施例均在以下权利要求书的范围内。

Claims (9)

1.一种处理器中事件处理的装置,包括:
一个适用于存贮监测点地址的监测点寄存器;
一个比较监测点地址和与在处理器流水线的第一级中提交的指令相关的程序地址的比较器;
一个当程序地址等于监测点地址时产生监测点匹配的监测点发生器,其中所述监测点寄存器包括一个装入第一监测点地址的第一监测点寄存器和一个装入第二监测点地址的第二监测点寄存器,所述比较器被配置为将第一和第二监测点地址和与提交给处理器流水线的指令相关的程序地址进行比较,以及所述监测点发生器被配置为当程序地址在由第一和第二监测点地址定义的范围内时产生一个监测点匹配;
一个在处理器流水线第二级中产生计数值的计数器,所述计数值表示监测点匹配的次数;
一个在计数值超过触发阈值时触发一请求的触发器电路;以及
一个在与一个监测点匹配相关的一条指令在流水线后面级中被删除或被停止时调整所述计数值的控制器,
其中,所述范围是第一和第二监测点地址之间连续的与或范围,或在第一和第二监测点地址连续范围之外的异或范围。
2.如权利要求1所述的装置,还进一步包括:根据与监测点相关的预定事件类型选择性地产生仿真事件处理请求或异常处理请求的事件发生电路。
3.如权利要求1所述的装置,进一步包括:为了节约电能可选择地禁止监测点寄存器之一的电路。
4.如权利要求1所述的装置,其特征在于,所述比较器包括一个比较第一监测点地址和程序地址的第一比较器和一个比较第二监测点地址和程序地址的第二比较器,监测点引擎还进一步包括可选择地禁止第一和第二比较器中至少一个并稳定被禁止比较器输出的电路。
5.一种流水线处理器中事件处理的方法包括:
比较监测点地址和与在处理器流水线第一级提交的指令相关的程序地址;
当程序地址等于监测点地址时产生监测点匹配;
在处理器流水线的第二级产生表示监测点匹配数目的计数值;
当计数值超过触发器阈值时产生一请求;
当与一个监测点匹配相关的一条指令在流水线后面级中被删除或被停止时调整所述计数值;
指定在第一和第二监测点寄存器中的第一和第二监测点地址;
将第一和第二监测点地址和与提交给处理器流水线的指令相关的程序地址进行比较;
当所述程序地址在由第一和第二监测点地址定义的范围内时产生一个监测点匹配;以及
当所述程序地址在第一和第二监测点地址之间连续的与或范围内,或在第一和第二监测点地址连续范围之外的异或范围内时产生所述监测点匹配。
6.如权利要求5所述的方法,还进一步包括:根据与监测点匹配相关的预定事件类型可选择地产生仿真事件处理请求或异常处理请求。
7.如权利要求5所述的方法,还进一步包括为了节约电能可选择地禁止第一和第二监测点寄存器之一的电路。
8.一种用于处理器事件处理的系统,包括:
一个闪存器件;
一个与闪存器件相耦合的流水线处理器;
一个适用于存贮第一监测点地址的第一监测点寄存器;
一个适用于存贮第二监测点地址的第二监测点寄存器;
一个比较第一及第二监测点地址和相关于提交给处理器流水线的指令的程序地址的比较器;
一个当程序地址在由第一和第二监测点地址定义的范围内时产生监测点匹配的监测点发生器,其中所述范围是第一和第二监测点地址之间连续的与或范围,或在第一和第二监测点地址连续范围之外的异或范围;
一个产生表示由监测点发生器产生的监测点匹配数目的计数值的计数器;
一个当计数值超过触发阈值时触发一个请求的触发器电路,其中所述请求是仿真事件处理请求或异常处理请求;以及
一个当与一个监测点匹配相关的一条指令在流水线后面的执行级中被删除或被停止时调整计数值的控制器。
9.如权利要求8所述的系统,其特征在于,所述请求是仿真事件处理请求或异常处理请求。
CNB018207065A 2000-12-15 2001-12-10 一种处理器中事件处理的装置、方法和系统 Expired - Fee Related CN1306411C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/739,092 2000-12-15
US09/739,092 US6829701B2 (en) 2000-12-15 2000-12-15 Watchpoint engine for a pipelined processor

Publications (2)

Publication Number Publication Date
CN1555526A CN1555526A (zh) 2004-12-15
CN1306411C true CN1306411C (zh) 2007-03-21

Family

ID=24970785

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018207065A Expired - Fee Related CN1306411C (zh) 2000-12-15 2001-12-10 一种处理器中事件处理的装置、方法和系统

Country Status (6)

Country Link
US (1) US6829701B2 (zh)
JP (1) JP3708521B2 (zh)
KR (1) KR100571732B1 (zh)
CN (1) CN1306411C (zh)
TW (1) TWI235949B (zh)
WO (1) WO2002048888A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2362968B (en) * 1999-12-23 2003-12-10 St Microelectronics Sa Computer system with debug facility
TWI223138B (en) * 2001-07-11 2004-11-01 Faraday Tech Corp Device and method for detecting micro-processor execution performance
US7065691B2 (en) * 2003-05-19 2006-06-20 Hewlett-Packard Development Company, L.P. Apparatus and method for saving precise system state following exceptions
US7711914B2 (en) 2005-06-28 2010-05-04 Hewlett-Packard Development Company, L.P. Debugging using virtual watchpoints
CN101192193A (zh) * 2006-11-27 2008-06-04 国际商业机器公司 用于实现观察点的方法和系统
US7783867B2 (en) * 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US7783865B2 (en) * 2007-08-01 2010-08-24 International Business Machines Corporation Conditional data watchpoint management
US8407457B2 (en) 2007-09-28 2013-03-26 Freescale Semiconductor, Inc. System and method for monitoring debug events
US8042002B2 (en) 2008-01-18 2011-10-18 Freescale Semiconductor, Inc. Method and apparatus for handling shared hardware and software debug resource events in a data processing system
CN116775417B (zh) * 2023-08-16 2023-11-07 无锡国芯微高新技术有限公司 Risc-v处理器运行监测和行为追踪系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US531894A (en) * 1895-01-01 Alfred ashby
EP0992905A2 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Cache miss benchmarking

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2505950B2 (ja) 1991-05-13 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション ハ―ドウェア支援ブレ―クポイント・システム
US5651124A (en) * 1995-02-14 1997-07-22 Hal Computer Systems, Inc. Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6557119B1 (en) * 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
US6349371B1 (en) * 1999-10-01 2002-02-19 Stmicroelectronics Ltd. Circuit for storing information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US531894A (en) * 1895-01-01 Alfred ashby
EP0992905A2 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Cache miss benchmarking

Also Published As

Publication number Publication date
JP3708521B2 (ja) 2005-10-19
JP2004516550A (ja) 2004-06-03
KR20030090613A (ko) 2003-11-28
WO2002048888A3 (en) 2003-09-18
CN1555526A (zh) 2004-12-15
WO2002048888A9 (en) 2003-04-17
TWI235949B (en) 2005-07-11
KR100571732B1 (ko) 2006-04-18
WO2002048888A2 (en) 2002-06-20
US20020078329A1 (en) 2002-06-20
US6829701B2 (en) 2004-12-07

Similar Documents

Publication Publication Date Title
US8370806B2 (en) Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US9798645B2 (en) Embedding stall and event trace profiling data in the timing stream
US5809293A (en) System and method for program execution tracing within an integrated processor
US6052774A (en) Apparatus and method for identifying exception routines indicated by instruction address issued with an instruction fetch command
JP5059869B2 (ja) 信頼される/信頼されないデジタル信号プロセッサデバッギング動作に関する方法及びシステム
US8341604B2 (en) Embedded trace macrocell for enhanced digital signal processor debugging operations
CN101809542B (zh) 用于监视调试事件的系统和方法
US20080114972A1 (en) Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
CN1306411C (zh) 一种处理器中事件处理的装置、方法和系统
CN1040158C (zh) 具有用于访问空闲模式的运行/停止端的微处理器
CN104461758B (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
WO2009051912A1 (en) Debug instruction for use in a data processing system
US6647511B1 (en) Reconfigurable datapath for processor debug functions
US7496899B2 (en) Preventing loss of traced information in a data processing apparatus
JPH11110255A (ja) ソフトウェアをデバッグするための装置および方法
EP3726387A1 (en) Tracing instruction execution
US6510507B1 (en) Page address look-up range ram
Hekmatpour et al. A heterogeneous functional verification platform
Mamone Fault injection techniques for real-time operating systems
GB2380831A (en) Debug exception handler and registers
CN114327974A (zh) Soc系统运行异常数据转存系统及其运行方法
WO2003034224A2 (en) Debug exception registers

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20081226

Address after: Massachusetts, USA

Patentee after: ANALOG DEVICES, Inc.

Address before: California, USA

Co-patentee before: ANALOG DEVICES, Inc.

Patentee before: INTEL Corp.

ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: INTEL CORP

Effective date: 20081226

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070321

Termination date: 20201210