跟踪指令执行的制作方法

文档序号:22677717发布日期:2020-10-28 12:35阅读:121来源:国知局
跟踪指令执行的制作方法

本发明涉及跟踪在集成电路芯片上的诸如cpu(中央处理单元)的处理器上的指令执行。



背景技术:

过去,具有多个核心设备(处理器、存储器等)的嵌入式系统会被并入印刷电路板(pcb)并通过总线连接到pcb上。嵌入式系统中的通信量通过这些总线进行传输。这种布置便于监视核心设备,因为可以将诸如示波器和逻辑分析器之类的监视工具附接到pcb总线上,从而允许直接访问核心设备。

对较小产品的市场需求以及半导体技术的进步导致了芯片上系统(soc)设备的发展。在soc中,嵌入式系统的多个核心设备被集成到单个芯片上。在soc中,嵌入式系统中的通信量通过内部总线传输,因此不再可能将监视工具直接连接到系统总线。随之而来的访问减少以及在芯片周围传输的数据量越来越大(由于soc技术的发展导致多个处理核心的集成和更高的内部时钟频率)使得外部监视工具在行业要求的时间范围内监视系统的安全破坏、漏洞和安全性问题的能力降低。另外,当多个核心设备被嵌入到同一个芯片上时,每个单独的核心设备的行为由于其与其他核心设备的交互以及诸如触发器和警报之类的实时事件而与其孤立时的行为不同。

因此,soc设备的发展需要监控技术的相关发展,这使得一些监控功能集成到soc上。现在已知芯片上监视电路跟踪在诸如cpu之类的核心设备上运行的程序的执行。跟踪数据通常被输出以在芯片外进行分析。但是,该跟踪数据提供了有关核心处理器程序执行的有限时间细节。需要更详细的跟踪数据。



技术实现要素:

根据第一方面,提供了一种实时跟踪集成电路芯片的处理器上的指令执行的方法,同时处理器在处理器的时钟周期期间继续执行指令,该方法包括:在集成电路芯片上的跟踪电路处:通过以下方式监视处理器的指令执行:对在时间上连续止用的连续指令的数目进行计数以形成指令计数;并且对该处理器的随后连续的时钟周期,期间没有指令止用,的数目进行计数以形成延时计数;生成包括指令计数和延时计数的跟踪消息;以及输出跟踪消息。

该方法可以进一步包括将延时计数与阈值延时计数进行比较;以及仅当延时计数等于或超过阈值延时计数时,才生成并输出跟踪消息。

该方法可以包括:如果延时计数小于阈值延时计数,则:将延时计数器重置为计数0;对连续止用的连续指令的另一数目进行计数;对处理器的随后连续的时钟周期,期间没有指令止用,的数目进行计数以形成另一延时计数;将该另一延时计数与阈值延时计数进行比较;并且仅当该另一延时计数等于或超过阈值延时计数时:生成包括另一指令计数和该另一延时计数的跟踪消息,该另一指令计数是指令计数、延时计数和连续止用的连续指令的该另一数目的总和;以及输出跟踪消息。

该方法可以包括使指令计数增加延时计数以形成增加的指令计数,其中,对连续止用的连续指令的另一数目进行计数从增加的指令计数开始,从而形成该另一指令计数。

该方法可以包括将指令计数器重置为计数0,其中,对连续止用的连续指令的该另一数目的计数从0开始,该方法还包括将指令计数、延时计数和连续止用的连续指令的该另一数目加起来以形成该另一指令计数。

该方法可以包括:如果该另一延时计数小于阈值延时计数,则迭代地执行上述方法,并且仅当迭代延时计数等于或超过阈值延时计数时,才生成并输出跟踪消息。

根据第二方面,提供了一种实时跟踪集成电路芯片的处理器上的指令执行的方法,同时该处理器在处理器的时钟周期期间继续同时执行多个指令,该处理器能够在每个时钟周期中止用多于一条的指令,该方法包括:在集成电路芯片上的跟踪电路处:通过以下步骤监视处理器的指令执行:对每个时钟周期中止用的指令的数目进行计数以形成时钟周期计数;并且对处理器的连续时钟周期,期间没有指令止用,的数目进行计数以形成延时计数;生成包括时钟周期计数和延时计数的跟踪消息;以及输出跟踪消息。

该方法可以进一步包括对未止用指令执行的数目进行计数以形成未止用计数。

跟踪消息可以进一步包括未止用计数。

该方法可以进一步包括使用行程长度编码来对跟踪消息中的计数进行编码。

该方法可以包括使用eliasgamma码对跟踪消息中的计数进行编码。

根据第三方面,提供了一种集成电路芯片,包括:处理器,其被配置为在处理器的时钟周期期间执行指令;跟踪电路,其被配置为实时跟踪处理器的指令执行,该跟踪电路包括:指令计数器,其被配置为对在时间上连续止用的连续指令的数目进行计数以形成指令计数;延时计数器,其被配置为对处理器的随后连续的、期间没有指令止用的时钟周期的数目进行计数以形成延时计数;消息生成器,其被配置为生成包括指令计数和延时计数的跟踪消息;以及输出器,其被配置为输出跟踪消息。

集成电路芯片可以进一步包括比较器,该比较器被配置为将延时计数与阈值延时计数进行比较。

根据第四方面,提供了一种集成电路芯片,其包括:处理器,其被配置为在所述处理器的每个时钟周期中止用多于一条的指令;跟踪电路,其被配置为实时跟踪处理器的指令执行,该跟踪电路包括:时钟周期计数器,其被配置为对每个时钟周期中止用的指令的数目进行计数以形成时钟周期计数;延时计数器,其被配置为对处理器的期间没有指令止用的连续时钟周期的数目进行计数以形成延时计数;消息生成器,其被配置为生成包括时钟周期计数和延时计数的跟踪消息;以及输出器,其被配置为输出跟踪消息。

集成电路芯片可以进一步包括另一计数器,其被配置为对未止用指令执行的数目进行计数以形成未止用计数。

附图说明

现在将参考附图通过示例的方式描述本发明。在附图中:

图1是集成电路芯片设备上的示例性监视架构的示意图;

图2是集成电路芯片设备上的示例性监视架构的示意图;

图3是用于跟踪处理器的示例性监视架构的示意图;

图4示出了一种跟踪处理器的指令执行的方法;

图5示出了另一种跟踪处理器的指令执行的方法;

图6是用于跟踪超标量处理器的示例性监视架构的示意图;和

图7示出了一种跟踪超标量处理器的指令执行的方法。

具体实施方式

以下公开内容描述了适于实施在集成电路芯片上的监视架构。集成电路芯片可以是soc或多芯片模块(mcm)。

图1至图3和图6是示例性监视架构以及监视架构内的组件的示意图。这些图以功能块的形式呈现结构。这些图中在某些地方已经适当地省略了用于执行本领域公知功能的一些功能块。图4、图5和图7是示出跟踪处理器的方法的流程图。每个流程图描绘了可以执行该流程图的方法的顺序。然而,流程图并不旨在将所描述的方法限制为以所描绘的顺序实施。该方法的步骤可以以流程图中所描绘的顺序的不同顺序来执行。

图1示出了用于soc100的示例性监视架构的总体结构。监视电路101被布置为监视系统电路102。图2示出了包括核心设备和通信接口的示例性系统电路。soc的核心设备201、202和203分别连接到监视电路101。尽管

图2示出了三个核心设备,但是可以将任意数目的核心设备适当地集成到监视架构中。示例性核心设备包括dsp(数字信号处理器)、视频处理器、应用处理器、cpu、图形处理器、系统存储器、总线、系统互连、rtos(实时操作系统)、软件、数据、定制电路和数据引擎。但是,soc的任何组件都适于作为图2上的核心设备被并入监视架构。核心设备可以是芯片上其他设备的仿真器或模拟器。例如,核心设备可以仿真处理器。

监视电路能够监视核心设备的运行,并且可选地还能够操纵核心设备的运行。监视电路连接到通信接口204。通信接口204可以被配置为与芯片外的实体通信。例如,监视电路101可以经由通信接口204与芯片外的分析器通信。通信接口204还可以被配置为与芯片上的其他实体通信。例如,监视电路101可以经由通信接口204与芯片上的分析器通信。尽管图2示出了一个通信接口,但是可以将任何数目的通信接口集成到soc上。根据待建立的连接类型选择实施的通信接口。示例性的通信接口包括:jtag、并行跟踪输入/输出,和基于aurora的高速串行接口;以及系统接口的重用,例如usb、以太网、rs232、pcie和can。在监视电路101内,可存在与每个核心设备相关联的不同监视电路。替代地或另外地,一些监视电路可以与两个或更多个核心设备相关联。

以下描述集中在图2的核心设备是处理器并且该处理器被监视电路101的跟踪电路监视的示例上。处理器可以是例如cpu、gpu或dsp。

参考图3所示的架构,处理器301包括执行程序(也称为指令)的处理逻辑302。这些可执行指令被存储在存储器303中。以时钟速率对处理器进行时钟控制。因此,处理器301在处理器的时钟周期期间执行指令。时钟速率可以是由处理器内部的时钟304设置的时钟速率。处理器可花费单个时钟周期来完成指令的执行。处理器可花费几个时钟周期来完成指令的执行。使用流水线,处理器可以同时对几个指令进行中期执行。但是,处理器在每个时钟周期中开始执行最多一条指令。处理器在每个时钟周期中止用最多一条指令。如本文所使用的,术语“止用(retire)”与指令结合使用以表示处理器已经完成了该指令的执行。

跟踪电路305跟踪处理器301的指令执行。这是不干扰地完成的。跟踪电路305在不中断处理器运行的情况下监视处理器301。换句话说,跟踪电路跟踪处理器而不要求处理器停止或修改其指令执行。处理器可以继续正常运行。因此,处理器可以继续执行指令并输出到芯片上和/或芯片外的其他电路。跟踪电路跟踪处理器301并实时输出跟踪数据。

跟踪电路305包括指令计数器307。指令计数器307从处理器301接收处理器输出。指令计数器307还可以从时钟309接收时钟输入308。时钟309在跟踪电路305的内部。时钟309可以从处理器时钟304接收其时钟信号。指令计数器307对在时间上连续止用的连续指令的数目进行计数,以形成指令计数。当指令计数器识别出处理器没有使指令止用的时间间隙时,它通过停止计数来进行响应。指令计数器然后可以将其指令计数输出到消息生成器310。

跟踪电路305还包括延时(stall)计数器311。延时计数器311从处理器301接收处理器输出。延时计数器311还从时钟309接收时钟输入312。延时计数器311还从指令计数器307接收输出313。该输出识别指令计数器何时已经停止了计数。延时计数器对处理器的期间没有指令止用的连续时钟周期的数目进行计数以形成延时计数。延时计数器在由指令计数器计数的在时间上连续的一系列连续止用的指令结束后立即开始该计数。延时计数器在从指令计数器接收到识别出其已停止计数的信号313时开始计数。当延时计数器识别出指令已止用时,它通过停止计数来进行响应。延时计数器311以与处理器301相同的时钟速率由时钟309进行时钟控制。这可以借助于时钟309接收处理器的时钟信号304实现。因此,由延时计数器311计数的时钟周期数目与处理器已延时的处理器时钟周期数目相同。延时计数器311将其延时计数输出到消息生成器310。

消息生成器310生成包括指令计数和延时计数的跟踪消息。输出器314从跟踪电路305输出跟踪消息。该跟踪消息然后可以被输出到通信接口306。通信接口306然后可以将跟踪消息输出到芯片外和/或在芯片上路由跟踪消息,如上参考图2的通信接口204所述的。

因此,参考图4,图3的跟踪电路305按如下方法监视处理器301的指令执行。在步骤401处,指令计数器307对在时间上连续止用的连续指令的数目进行计数以形成指令计数。紧随其后的是,在步骤402处,延时计数器对处理器的随后连续的时钟周期的数目进行计数以形成延时计数,在该处理器的随后连续的时钟周期期间没有指令止用。在步骤403处,消息生成器生成跟踪消息,该跟踪消息包括指令计数和延时计数。在步骤404处,输出器314输出跟踪消息。

指令计数器继续从处理器301接收处理器输出。在将其指令计数输出到消息生成器310之后,指令计数器将其计数重置为0。然后,当指令计数器307从处理器301接收到下一个止用的指令时,其再次开始计数,并且重复

图4的方法。延时计数器还继续从处理器301接收处理器输出。在将其延时计数输出到消息生成器310之后,延时计数器将其计数重置为0。然后,在从指令计数器接收到识别出其已经停止计数的下一个信号313时,延时计数器311再次开始计数。

因此,图3的装置和图4的方法使芯片上的监视电路能够跟踪处理器的指令执行并输出时序数据,该时序数据识别处理器使多少连续指令止用以及处理器在恢复指令执行之前延时多长时间。处理器可以延时,因为例如缓存已丢失,指令中存在意外转移,指令已丢失或指令未完成。然后分析时序数据以及其他的监视数据。这可以用来重建程序执行流程。这可以用来识别可以对指令集和/或处理器的运行进行的改变,以优化处理器的运行并使指令执行更高效。其他监视数据可以是本领域技术人员已知的任何监视数据。例如,处理器的实际输出、寄存器访问的详细信息等。

图3还示出了跟踪电路内部的其他可选组件,其在图上由那些组件的虚线轮廓标出。该电路包括比较器315。比较器315从延时计数器311接收作为第一输入的延时计数。比较器315从存储器316接收作为第二输入的阈值延时计数。比较器将延时计数与阈值延时计数进行比较。比较器输出到控制器317。控制器317具有到指令计数器307的控制输出318。控制器317还具有到延时计数器311的控制输出319。

现在将参照图5描述这些附加组件的运行。在步骤501处,指令计数器307对时间上连续止用的连续指令的数目进行计数以形成指令计数。紧随其后的是,在步骤502处,延时计数器对处理器的随后连续的时钟周期的数目进行计数以形成延时计数,在该处理器的随后连续的时钟周期期间没有指令止用。比较器315从延时计数器接收延时计数,并且还从存储器316接收阈值延时计数。比较器315将延时计数与阈值延时计数进行比较,并将结果输出到控制器317。

在步骤503处,仅当延时计数等于或超过阈值延时计数时,控制器317才控制指令计数器307输出其指令计数,并且控制器317控制延时计数器311输出其延时计数。消息生成器接收指令计数和延时计数这两者,并在步骤506处继续生成跟踪消息。然后在步骤507处输出跟踪消息。在步骤503处,如果延时计数小于阈值延时计数,则在步骤504处,控制器317控制延时计数器丢弃延时计数。换句话说,控制器317控制延时计数器以将其延时计数重置为0。在步骤505处,控制器控制指令计数器使其指令计数增加延时计数以形成增加的指令计数。

指令计数和延时计数不是从指令计数器和延时计数器输出到消息生成器。因此,没有生成并输出包含指令计数和延时计数的消息。相反,该方法返回到步骤501,并继续图5的流程图的进一步迭代。这一次,从增加的指令计数的计数开始,指令计数器对连续止用的连续指令的数目进行计数,以形成另一指令计数。紧随其后的是,在步骤502处,从计数0开始,延时计数器对处理器的随后连续的、期间没有指令止用的时钟周期的数目进行计数以形成另一延时计数。延时计数器将该另一延时计数输出到比较器。然后,比较器将该另一延时计数与阈值延时计数进行比较,并将结果输出到控制器317。仅当该另一延时计数等于或超过阈值延时计数时,控制器317才控制指令计数器307输出其另一指令计数,并控制延时计数器311输出其另一延时计数。消息生成器接收该另一指令计数和该另一延时计数这两者,并在步骤506处继续生成跟踪消息。在步骤507处输出跟踪消息。

但是,如果该另一延时计数小于阈值延时计数,则在步骤504处,控制器控制延时计数器以将延时计数重置为0,并且在步骤505处,控制器控制指令计数器以使指令计数增加延时计数。没有生成包含该另一指令计数和该另一延时计数的跟踪消息。然后再次重复图5的过程。

图5的过程迭代地进行重复,直到迭代延时计数等于或超过阈值延时计数为止。一旦发生这种情况,则控制器控制指令计数器输出相关联的迭代指令计数,并且控制器控制延时计数器输出迭代延时计数。消息生成器接收这些计数,并生成包含迭代指令计数和迭代延时计数的跟踪消息。在步骤507处,输出该跟踪消息。

指令计数器继续从处理器301接收处理器输出。在将其迭代指令计数输出到消息生成器310之后,指令计数器将其计数重置为0。然后,当指令计数器307从处理器301接收到下一个止用的指令时,其再次开始计数,并重复图5的方法。延时计数器还继续从处理器301接收处理器输出。在将其迭代延时计数输出到消息生成器310之后,延时计数器将其计数重置为0。然后,延时计数器311在从指令计数器接收到识别出其已经停止计数的下一个信号313时再次开始计数。

在上述方法中,如果确定延时计数小于延时计数阈值,则将延时计数器重置为0,并且使指令计数器增加延时计数。在替代实施方式中,在步骤503之后,如果延时计数小于延时计数阈值,则控制器317控制加法器(图3中未示出)将指令计数和延时计数加在一起。然后,将延时计数器和指令计数器都重置为0。然后,该方法返回到步骤501,在该步骤501中,指令计数器从计数0开始对连续止用的连续指令的数目进行计数。在步骤502处,延时计数器从计数0开始对处理器的随后连续的时钟周期的数目进行计数,在该处理器的随后连续的时钟周期期间没有指令止用。如果在步骤503处,下一个延时计数小于延时计数阈值,则控制器317控制加法器将方法的当前迭代的指令计数和延时计数与前一次迭代的结果相加。然后,控制器将指令计数器和延时计数器的计数重置为0,并且重复该方法。当来自步骤502的迭代延时计数等于或超过阈值延时计数时,控制器317控制加法器将其当前结果输出到消息生成器。消息生成器生成跟踪消息,跟踪消息包含作为迭代指令计数的加法器的当前结果。跟踪消息还包含迭代延时计数。

在替代实施方式中,在步骤501处,指令计数器307对连续止用的指令的数目和连续的延时的时钟周期的数目进行计数。换句话说,指令计数器307针对每个止用的指令增加1,并且指令计数器307针对每个延时的时钟周期增加1。在步骤502处,在连续止用的多个连续指令之后,延时计数器311对处理器的随后连续的时钟周期的数目进行计数以形成延时计数,在该处理器的随后连续的时钟周期期间没有指令止用。比较器315将延时计数与阈值延时计数进行比较。如果延时计数小于阈值延时计数,则控制器317将延时计数器重置为0。控制器317对指令计数器307不采取任何动作。在步骤501处,指令计数器继续对连续止用的指令的数目以及连续延时的时钟周期的数目进行计数。在连续止用的多个连续指令之后,在步骤502处,延时计数器311从计数0开始对处理器的随后连续的时钟周期的数目进行计数以形成迭代延时计数,在该处理器的随后连续的时钟周期期间没有指令止用。如果在步骤503处,下一个延时计数小于延时计数阈值,则控制器317将延时计数器重置为0,并且对指令计数器不采取任何动作。重复该方法。当来自步骤502的迭代延时计数等于或超过阈值延时计数时,控制器317控制延时计数器以将迭代延时计数输出到消息生成器。控制器317还控制指令计数器以将其指令计数输出到减法器(图3中未示出),该减法器从指令计数中减去迭代延时计数以形成迭代指令计数。减法器将迭代指令计数输出到消息生成器。消息生成器生成跟踪消息,该跟踪消息包含迭代指令计数和迭代延时计数。

阈值延时计数可以在制造时被存储在存储器316中。可替代地,阈值延时计数可以是可配置的。例如,可以由分析跟踪消息的实体动态地重新配置阈值延时计数。

当处理器在小于阈值延时计数的多个周期中延时的时候,关于图5描述的方法没有输出跟踪消息。相反,延时被视为止用的指令,并且跟踪电路继续对止用的指令进行计数。与不使用阈值的图4的方法相比,这减小了生成和输出的跟踪消息的数目,并因此是一种更高效的跟踪方法。适当地,阈值延时计数由分析跟踪消息的实体或代表分析跟踪消息的实体来根据该实体正试图捕获的处理器动作进行动态配置。

图3及其描述描述了一种处理器,该处理器能够每个时钟周期开始执行最多一条指令,并且能够每个时钟周期止用最多一条指令。然而,本文描述的概念还适用于能够每个时钟周期止用多于一条指令的处理器。图6示出了这种处理器601的简化版本。处理器601包括处理逻辑1602、处理逻辑2603、处理逻辑3604和处理逻辑4605。这些处理逻辑组件中的每一个在处理器的时钟周期期间执行存储在存储器606中的指令。每个处理逻辑将其执行的指令输出到缓冲器617。每个处理逻辑都能够在另一个处理逻辑开始执行另一个指令的同一时钟周期内开始执行一条指令。每个处理逻辑都能够在与另一个处理逻辑使一条指令止用的同一时钟周期内使一条指令止用。缓冲器617对止用的指令进行排序,使得它们以与它们开始执行相同的顺序从处理器601止用。例如,缓冲器617可以具有四个通道0、1、2和3。缓冲器617对来自处理逻辑1、2、3、4的止用的执行进行重新排序,使得通道0、1、2和3上的止用的指令分别与指令输入到处理逻辑的顺序相同。时钟速率可以是由处理器内部的时钟607设置的时钟速率。尽管示出了四个处理逻辑组件,但是处理器601中可以有两个、三个或四个以上的处理逻辑组件,它们能够同时开始指令执行、执行指令和止用指令。缓冲器617具有与处理逻辑数目相同的通道数目。

与图3一样,跟踪电路608跟踪处理器601的指令执行。跟踪电路608不干扰地(即,不中断处理器的运行)监视处理器601。

跟踪电路608包括时钟周期计数器609。时钟周期计数器609从处理器601接收处理器输出。时钟周期计数器609还从时钟611接收时钟输入610。时钟611在跟踪电路608的内部。时钟611可以从处理器时钟607接收其时钟信号。时钟周期计数器对在处理器的每个时钟周期中止用的指令的数目计数,以形成时钟周期计数。在处理器的每个时钟周期中止用的指令的最大数目是处理器能够在同一时钟周期中止用的指令的数目。在图6的示例中,处理器601能够在同一时钟周期中止用四个指令,因此时钟周期计数为0、1、2、3或4。时钟周期计数器609由时钟611以与处理器601相同的时钟速率进行时钟控制。这可借助于时钟611接收处理器的时钟信号607实现。因此,时钟周期计数器在每个时钟周期中计为止用的指令数目是处理器在每个处理器的时钟周期中止用的指令数目。时钟周期计数器将其时钟周期计数输出到消息生成器612。

跟踪电路608还包括延时计数器613。延时计数器从处理器601接收处理器输出。延时计数器还从时钟611接收时钟输入614。延时计数器对处理器的连续时钟周期的数目进行计数以形成延时计数,在处理器的连续时钟周期期间没有指令止用。延时计数器识别何时存在没有指令止用的时钟周期,并从0开始计数。当延时计数器识别出指令已经止用的周期时,其停止计数。延时计数器613由时钟611以与处理器601相同的时钟速率进行时钟控制。这可以借助于时钟611接收处理器的时钟信号607实现。因此,由延时计数器613计数的时钟周期的数目与处理器已经延时的处理器的时钟周期的数目相同。延时计数器613将其延时计数输出到消息生成器612。

消息生成器612生成包括时钟周期计数和延时计数的跟踪消息。输出器615从跟踪电路608输出跟踪消息。然后可以将跟踪消息输出到通信接口616。然后,通信接口616可以在芯片外输出跟踪消息和/或在芯片上路由跟踪消息,如上参考图2的通信接口204所述的。

因此,参考图7,图6的跟踪电路608按如下步骤监视处理器601的指令执行。在步骤701处,时钟周期计数器609对在处理器的时钟周期中止用的指令的数目进行计数以形成时钟周期计数。紧随其后的是,在步骤702处,延时计数器对处理器的连续时钟周期进行计数以形成延时计数,在该处理器的连续时钟周期期间没有指令止用。如果处理器在时钟周期计数器分析时钟周期之后立即在时钟周期中使一条或多条指令止用以形成时钟周期计数,则延时计数器将输出延时计数,该延时计数识别出没有延时。例如,该延时计数值可以是0。作为另一个示例,该延时计数值可以是1。在步骤703处,消息生成器生成包括时钟周期计数和延时计数的跟踪消息。在步骤704处,输出器615输出跟踪消息。

时钟周期计数器继续从处理器601接收处理器输出。在将其指令计数输出到消息生成器612之后,时钟周期计数器609将其计数重置为0。然后,时钟周期计数器609在处理器的下一个时钟周期处再次开始计数,并重复图7的方法。

因此,图6的装置和图7的方法使芯片上的监视电路能够跟踪处理器的指令执行并输出时序数据,该时序数据识别处理器的每个周期止用了多少条指令以及处理器在恢复指令执行之前延时了多少个时钟周期。然后如关于图3所描述的那样分析该时序数据。

图3和图6的跟踪电路可以可选地进一步包括未止用计数器800。这在图中以虚线轮廓示出。未止用计数器从处理器301、601接收处理器输出。未止用计数器还从时钟309、611接收时钟输入。未止用计数器800由时钟309、611以与处理器301、601相同的时钟速率进行时钟控制。未止用计数器对错过的止用机会进行计数。换句话说,未止用计数器对指令本可以止用但没有止用的次数。对于关于图5描述的方法,在时间上连续止用的一组连续指令之后,未止用计数器可以对处理器的随后连续的时钟周期的数目进行计数,在处理器的随后连续的时钟周期期间没有指令止用。如果此计数大于或等于阈值延时计数,则未止用计数器丢弃该计数并重置为0。如果该计数小于阈值延时计数,则未止用计数器将此计数作为未止用计数输出到消息生成器。对于关于图7描述的方法,未止用计数器可以对在时钟周期中本可以止用但没有止用的指令的数目进行计数。在图6的示例中,每个时钟周期可以止用4条指令。因此,如果4、3、2、1或0条指令分别止用,则未止用计数器的未止用计数将为0、1、2、3、4。未止用计数器将该未止用计数输出到消息生成器。消息生成器在跟踪消息中包含未止用计数,跟踪消息然后被输出。

消息生成器310、612可以生成包括单个指令计数/时钟周期计数和单个延时计数以及可选的单个未止用计数的跟踪消息,并输出该跟踪消息。替代地,消息生成器310可以从本文描述的方法的几次迭代中接收几个指令计数/时钟周期计数和延时计数(以及可选的未止用计数)组,在单个跟踪消息的有效载荷中将这些组的计数连接起来,然后输出该跟踪消息。例如,跟踪消息可具有最大的有效载荷长度。在接收到指令计数/时钟周期计数和延时计数(以及可选的未止用计数)组时,消息生成器将该组添加到跟踪消息的有效载荷。如果未超过最大的有效载荷长度,则消息生成器不输出跟踪消息。相反,它等待接收另一组计数。在接收到下一组计数时,消息生成器将该组添加到跟踪消息的有效载荷。重复此过程,直到没有另外的计数组将安排到有效载荷中而不超过最大的有效载荷长度。此时,消息生成器将跟踪消息输出到输出器314、615。

消息生成器310、612能够以压缩格式将来自跟踪电路计数器的计数值编码在跟踪消息中。例如,它可以使用行程长度编码。例如,消息生成器可以使用eliasgamma码对计数值进行编码。编码小数字时,eliasgamma编码特别高效。在处理器频繁延时的情况下,通过本文所述的方法以高速率生成对小计数值进行编码的跟踪消息。在这种情况下,编码效率尤其重要,以有助于使报告跟踪数据所花费的时间最小化。

消息生成器可以生成表示跟踪数据的令牌组。例如,在图4或图5的方法的情况下,消息生成器可以生成包括令牌对的组。第一令牌是eliasgamma编码的指令计数。第二令牌是eliasgamma编码的延时计数。在图7的方法的情况下,消息生成器可以生成包括令牌对的组。第一令牌是eliasgamma编码的时钟周期计数。第二令牌是eliasgamma编码的延时计数。在任一种情况下,该组可以另外包括第三令牌,该第三令牌是eliasgamma编码的未止用计数。

图1至图3和图6所示的soc的每个组件可以以专用硬件实施。可替代地,图1至图3和图6所示的soc的每个组件可以以软件实施。一些组件可以以软件实施,而其他组件可以以专用硬件实施。

所描述的soc适当地结合在基于计算的设备内。基于计算的设备可以是电子设备。适当地,基于计算的设备包括一个或多个处理器,用于处理计算机可执行指令以控制设备的运行以便实施本文所述的方法。可以使用任何计算机可读介质(例如存储器)来提供计算机可执行指令。本文描述的方法可以由软件以机器可读形式在有形存储介质上执行。可以在基于计算的设备处提供软件以实施本文描述的方法。例如,跟踪电路可以包括计数逻辑以执行本文描述的计数操作。

上面的描述将系统电路和跟踪电路描述为被包含在同一soc中。在替代实施方式中,系统电路和跟踪电路被包括在mcm的两个或更多个集成电路芯片之间。在mcm中,集成电路芯片通常被堆叠或相邻地放置在插入器基板上。一些系统电路可以位于一个集成电路芯片上,而其他系统电路可以位于mcm的不同集成电路芯片上。类似地,跟踪电路可以分布在mcm的一个以上的集成电路芯片上。因此,以上在soc的环境中描述的方法和装置也适用于mcm的环境。

申请人在此单独本文描述的每个单独的特征以及两个或更多个这样的特征的任何组合,其程度是能够基于作为整体的本说明书、根据本领域技术人员公知的知识来执行,不考虑这些特征或特征的组合是否解决了本文公开的任何问题,并且不限于权利要求的范围。申请人指出,本发明的方面可以由任何这样的单个特征或特征的组合构成。鉴于以上描述,对于本领域技术人员显而易见的是,可以在本发明的范围内进行各种修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1