程序跟踪器以及程序跟踪方法

文档序号:6582941阅读:236来源:国知局

专利名称::程序跟踪器以及程序跟踪方法
技术领域
:本发明一般涉及程序跟踪,更具体地说,涉及用于跟踪在处理器上执行程序的执行序列的程序跟踪器和程序跟踪方法。
背景技术
:程序跟踪器提供了跟踪正在微处理器、数字信号处理器、有限状态机或其它处理器设备(在此统称为"处理器")上运行程序的执行序列的能力。典型地,通过维护来自程序计数器(PC)(例如,与执行的程序指令对应的地址或地址的表达)的程序计数值(即程序跟踪)的日志(log)来跟踪执行序列。为了调试程序或者另外地对其执行进行分析,日志可以是机器解释成文本的格式、图形格式或者其它人类可读的格式。程序跟踪提供了对程序的执行序列的动态视图。这种视图可以在改善程序和编译器的效率或速度、研究程序逻辑、研究编译用于处理器设备程序的编译器的效率或运行的方面上有用。因为程序计数值对于每个程序指令可以包括16比特或者甚至32比特的地址数据,并且因为新指令通常在处理器设备的每个时钟周期上出现,所以,只是通过输出纯程序计数值来跟踪程序的方式会很繁重,且将需要大量的物理资源。例如,如果将从在其上面实现跟踪器的集成电路中输出每个PC值,则可能需要大量的专用引脚(结合相关的电路)。因为除了程序计数器输出之外,程序跟踪器可能复用程序计数值以及其它数据值(例如,提供了解执行序列的数据寄存器值),所以可能引起进一步的需求。除了物理资源需求之外,大量数据的输出导致了过度的功率需求,以生成用于传送数据所需的信号。因此,为了使用合理数量的物理资源来获得程序跟踪器能力,可以使程序计数值串行化(即,32比特程序计数值被缓冲,并以连续的8比特分段形式输出)和可以实现压縮方案。例如,在这些方案中,因为最普通的程序流事件是指令的序列执行(即,程序计数值根据每个接续的指令而递增1来至下一行的程序"编码"),所以程序跟踪器输出表示程序计数值中的单个递增已发生的值,而不是输出整个程序计数值。此外,在不连续的情况中,程序跟踪器输出位移值;即,程序跟踪器提供表示不连续执行之前的程序计数器值(也称为不连续来源程序计数器值)与不连续执行之后的程序计数器值(也称为不连续目的程序计数器值)之间的符号差分(signeddifference)的标示,而不是提供不连续执行之后的纯程序计数值。术语"不连续"在此定义为在程序中具有非连续程序计数值的指令的执行;例如,不连续可能由于跳转、调用或分支的执行而引起。虽然这种程序跟踪器能力可以降低用于跟踪程序执行所需的数据,但是,传统压縮方案会引起数据的丢失,因而造成了不完整的程序跟踪。因为程序跟踪器所输出的数据量是过量的,所以可能发生数据丢失。例如,由于数据量的原因,可能致使诸如串行化缓冲器的内部缓冲器出现溢出。因此,需要在指定用于跟踪的资源与数据丢失的可接受水平之间寻求一种折衷方案。所需要的是一种具有改善的压縮方案的程序跟踪器,以提供较低的数据丢失实例。此外,所需的是一种具有降低的物理资源需求和降低的功率需求的程序跟踪器。
发明内容为解决以上技术问题,本发明提供了用于跟踪在处理器上执行程序的执行序列的程序跟踪器和程序跟踪方法。4本发明提供了一种用于跟踪在处理器上执行程序的执行序列的程序跟踪器,该处理器带有用于在执行程序时为程序指令保留程序指令计数值的程序计数器,程序跟踪器包含程序计数定序器和循环计数模块。该程序计数定序器用于接收来自程序计数器的当前程序计数值和保留先前程序计数值,以及确定当前不连续来源计数值和当前不连续目的计数值。该循环计数模块连结至程序计数定序器,以接收当前不连续来源计数值和当前不连续目的计数值,以及保留第一先前不连续来源计数值和第一先前不连续目的计数值,以及通过把当前不连续来源计数值和当前不连续目的计数值与第一先前不连续来源计数值和第一先前不连续目的计数值进行比较,来对至少第一循环的循环执行进行计数。本发明还提供了一种用于跟踪在处理器上执行程序的执行序列的程序跟踪方法,该处理器带有用于在执行程序时为程序指令保留程序指令计数值的程序计数器,该程序跟踪方法包含确定当前不连续来源计数值和当前不连续目的计数值;以及通过把当前不连续来源计数值和当前不连续目的计数值与第一先前不连续来源计数值和第一先前不连续目的计数值进行比较,来对至少第一循环的循环执行进行计数。上述用于跟踪在处理器上执行程序的执行序列的程序跟踪器和程序跟踪方法,可以提供较低的数据丢失。现在将参考附图通过示例对本发明的示出性而非限制性的实施例进行描述,在附图中,不同附图中的相同参考数字用于表示相同的组件。在附图中图1是程序跟踪器系统和执行将被跟踪的程序的处理器的功能性框图2是根据本发明的至少一些方面的程序跟踪器的示例性实施例的功能性框图3是结合适用于根据本发明的程序跟踪器使用的压縮方案的一个示例而使用的编码值的表;图4是根据本发明的至少一些方面的程序跟踪器的示例性实施例的示意性框图5A是含有示例性压縮数据结构的缓冲器的示意性示出;以及图5B示出了包括集成数据结构的存储器。具体实施例方式图1是程序跟踪器系统100和执行将被跟踪程序的处理器150的功能性框图。处理器150可以是任何设备,其能够执行程序指令且带有用于保留关于所执行的程序指令的程序计数值(例如,与所执行的程序指令对应的地址或地址的表达)的程序计数器(PC)152。例如,处理器150可以是微处理器、数字信号处理器或者有限状态机。优选地,处理器150生成关于不连续的通知156,以表示程序执行中的不连续。例如,对程序执行中的不连续的通知可以在执行中断、分支、调用、返回指令或零开销硬件循环的时候生成。另一种选择是,程序跟踪器110或者另一资源能够把紧靠前面的PC值与当前PC值进行比较,以检测和信号通知不连续。程序跟踪器系统100包括程序跟踪器110,以接收来自程序计数器152的当前程序计数值154和关于不连续的通知156。当前程序计数值154可以为任意长度m(例如16比特或32比特)。如下面所更加详细的描述,程序跟踪器IIO生成程序跟踪的压縮输出111,其包括一个或多个位移值112和一个或多个线性递增运行长度值113。可选地,可以包括数据控制器120,以允许程序跟踪器系统100输出补充数据153,其可以与压縮输出lll一起被复用。例如,补充数据153可以包括在执行被跟踪程序期间由处理器150生成的定时信息或数据值。可以提供存储器设备130来存储输出114,以及包括展示设备140来启动对输出114的分析。可以提供解压缩器145来对压縮输出114进行解压縮,从而重构所执行的指令的序列。展示(Presentation)设备140可以是诸如阴极射线管或液晶显示屏的显示设备、打印设备或者任何其它的展示设备。典型地,输出U4具有比程序计数值154长度m(例如32比特)短的长度n(例如8比特)。长度的减小可能是由于压縮以及数据的串行化而引起的。图2是根据本发明的至少一些方面的程序跟踪器110的示例性实施例的功能性框图。程序跟踪器110包括程序计数定序器212、位移发生器模块220、线性递增发生器模块230和循环计数模块240。"程序计数值"在此也称为"计数值"或"PC值"。程序计数定序器212接收来自程序计数器152(如图1所示)的当前PC值154和关于不连续的通知156,并且提供当前程序计数值154、先前PC值214、当前不连续目的PC值216和当前不连续来源PC值218。当前不连续目的PC值216和当前不连续来源PC值218分别指最接近当前的不连续的不连续来源PC值和不连续目的PC值。线性递增发生器模块230在操作中被连结至程序计数定序器212,以接收先前程序计数值214和当前不连续目的程序计数值216,并且包括线性递增发生器232,以计算线性递增运行长度值238。词组"线性递增运行长度值"在此定义为等于在最接近当前的不连续和先前的不连续之间所执行的程序指令数。应当理解,结合已知PC值的线性递增运行长度值形成一部分程序跟踪的压縮表达。可以包括线性递增压縮器234来压縮线性递增运行长度值238。如下所述,根据递增运行长度值238的量值(magnitude),线性递增压縮器234提供所选择的数据字数来表达线性递增运行长度值。可选地,压縮器234可以使线性递增运行长度值串行化。此外,线性递增压縮器234可以提供与线性递增运行长度值中的所选择的数据字数对应的字计数263。可选地,缓冲器236可以被连结至线性递增发生器模块230的输出,以暂时存储线性递增运行长度值238。例如,缓冲器236可以是先进先出(FIFO)缓冲器。线性递增运行长度值238可以在缓冲器236中累加,例如,由于压縮器234对数据的串行化或者因为在程序跟踪器中包括数据控制器120(如上面图l所示),因此当较高优先权数据经由数据控制器120输出时,需要缓冲线性递增运行长度值238。在一些实施例中,线性递增发生器模块230计算线性递增运行长度值,作为对从程序计数定序器212接收到的每个先前程序计数值214的输出。即,对于每个当前程序值,线性递增值增加l。但是,因为只有在不连续的时候存在的线性递增运行长度值是保留精确程序跟踪所需的,所以在程序跟踪器110的一些实施例中,向线性递增模块230提供了关于不连续的通知156,以允许线性递增模块230响应于对程序中的不连续的通知来选择性地提供线性递增运行长度值。关于不连续的通知156可以在很多方式中使用,以防止线性递增模块230在不存在关于不连续的通知的时候提供线性递增运行长度值。例如,缓冲器236可以被配置成只在收到关于不连续的通知156的时候存储运行长度值,从而丢弃其它线性递增运行长度值。位移发生器模块220包括位移发生器222且在操作中连结至程序计数定序器212,以接收当前程序计数值154和先前程序计数值214。通过计算当前程序计数值154和先前程序计数值214之间的差,位移发生器222计算出与处理器150(如上面图l所示)所执行程序的指令执行序列对应的位移值228。在程序跟踪器110的一些实施例中,位移发生器模块220为从程序计数定序器212接收的每个当前程序计数值154来计算位移值。但是,因为只有在不连续的时候存在的位移值是保留精确程序跟踪所需的,所以在程序跟踪器110的一些实施例中,向位移发生器模块220提供了关于不连续的通知信号154,以响应于对程序中的不连续通知而选择性地提供位移值228。g卩,如果己收到关于不连续的通知,则位移值228只从位移发生器模块220中输出。关于不连续的通知154可以在很多方式中使用,以防止位移发生器模块220在不存在关于不连续的通知的时候提供位移值。例如,缓冲器226可以被配置成只在收到关于不连续的通知256的时候存储位移值,可以防止压縮器224提供输出。另一种选择是,可以防止复用器270发送位移值。可以包括位移压縮器224来压縮位移值228。如下所述,位移压縮器224根据位移值228的量值来提供所选择的数据字数。可选地,位移压縮器224可以使位移数串行化据。此外,位移压縮器224可以提供与所选择的数据字数对应的字计数262。可选地,缓冲器226可以被连结至位移发生器模块220的输出,以暂时存储位移值228。例如,缓冲器226可以是先进先出(FIFO)的。位移值228可以在缓冲器226中累加,例如,由于压縮器224对数据的串行化或者因为在程序跟踪器中包括数据控制器120(如上面图1所示),因此当较高优先权数据经由数据控制器120输出时,需要缓冲位移值228。如下面参考图5所描述,典型地,数据控制器120(可从图1中看到)从缓冲器226和236中成对地读取位移值228和线性递增运行长度值238,其包括一个位移值和一个对应的线性递增运行长度值。可选地,可以向位移发生器模块220提供信号226,信号226表示给定的不连续是由带有结合有固定程序计数器值的目的地址的指令(例如,带有已知目的地址(带有已知程序计数器值)的跳转或调用)而生成;在收到信号226时,可以消除(s叩press)位移值,且压縮器224可以在输出228上提供空值(即下面图3所示的302)。在一些实施例中,数据控制器120忽略空值,使得没有浪费时间在处理这个空值上。本领域的普通技术人员应当理解,重构程序执行序列包括这种被消除的位移值,必须为程序给出参考,以确定合适的位移值。循环计数模块240至少包括内循环计数器242。循环计数模块240被连结至程序计数定序器212,以接收当前不连续来源计数值218和当前不连续目的计数值216。另外,循环计数模块240保留第一先前不连续来源计数值245和第一先前不连续目的计数值246。通过把当前不连续来源计数值218和当前不连续目的计数值216与第一先前不连续来源计数值245和第一先前不连续目的计数值246进行比较,循环计数器242对至少第一循环的循环执行进行计数。在确定当前不连续来源计数值218和当前不连续目的计数值216分别等于第一先前不连续来源计数值245和第一先前不连续目的计数值246时,计数寄存器249进行递增。可选地,循环计数模块240可以包括外循环计数器243,以对第二循环的循环执行进行计数。在带有外循环计数器243的实施例中,循环计数器模块240保留第二先前不连续来源计数值247和第二先前不连续目的计数值248。在确定当前不连续来源计数值218和当前不连续目的计数值216分别等于第二先前不连续来源计数值247和第二先前不连续目的计数值248时,计数寄存器241进行递增。虽然只对内循环计数器和外循环计数器进行了讨论,但是带有多于两个循环计数器的程序跟踪器也处于本发明的范围之内。可以包括内循环计数压縮器244和/或外循环压縮器254,以分别压縮内循环计数和外循环计数。内循环计数压縮器244和外循环计数压縮器254可以根据循环计数248的量值而提供所选择的数据字数。此外,循环计数压縮器244和254提供字计数251和245,每个均分别与内循环计数和外循环计数中的数据字数对应。如下面参考图4所描述,使用复用器270和272,内循环计数和外循环计数可以分别存储缓沖器226和236中。复用器272用于在缓冲器260中存储字计数262、263、245和251中的每一个。图3是结合适用于根据本发明的程序跟踪器使用的压縮方案的一个示例而使用的编码值的表。编码值304、308和310可以用于对线性递增值进行编码。在示例性压縮方案中,根据线性递增值的量值,所选择的字数用于表达线性递增值。前缀(prefix)304a、308a和310a存在于每个编码值304、308和310中,每个前缀均表达字数,该字数表达线性递增值。符号比特308b和310b也存在于每个编码值308和310中。编码值306、308、310和312可以用于对位移值进行编码。在示例性压縮方案中,根据位移值的量值,所选择的字数用于表达位移值。前缀306a、308a、310a和312a存在于每个编码值306、308、310和312中。这些前缀表达字数,该表达线性递增值。符号比特306b、308b、310b和312b存在于每个编码值306、308、310和312中;因为不连续可能是正的不连续或者负的不连续,所以符号比特用于表示正或负不连续方向性。编码值318和320可以用于分别表达内循环计数值和外循环计数10值。在示出的示例性压縮方案中,使用固定的字计数(即,没有提供压縮);但是,应当理解,可以提供循环计数压縮。例如,类似于上述的压縮方案,根据循环计数的量值,可以使用所选择的字数来表达循环计数值。如果计数为零或者在如上所述位移值被消除的情况中,可以使用编码值302(在此也称为空值)。在位移消除的情况中,编码值302可以由压縮器224输出,因为在如下面所讨论的一些实施例中,位移值和线性递增值可以由数据控制器120(如上面图1所示)成对地交替输出;因此,编码值302操作为占位符。在一些实施例中,编码值302由数据控制器120识别,并被丢弃而没有被发送。除了压縮值之外,压縮器224、234、244和254可能需要提供纯程序计数器值。例如,在位移值或线性递增运行长度值太大的情况中(例如,位移发生器模块220或线性递增发生器模块230中的寄存器被致使溢出),对应的压縮器224和234输出包含纯PC值的编码值314。同样,在缓冲器226和236中的一个发生溢出的情况中,对应的压縮器224和234输出包括纯PC值的编码值314。同样,除了示出的编码值之外,还可以提供其它编码值,每个均与来自附加来源的输出(即图1中的信号153)对应。与这种输出对应的编码值允许展示设备140识别并响应这些值。图4是根据本发明的至少一些方面的程序跟踪器110的示例性实施例的示意性框图。程序跟踪器110包括程序计数定序器212、位移发生器模块220、线性递增发生器模块230和循环计数模块240。程序计数定序器212接收来自程序计数器152(如图1所示)的当前程序计数值154和关于不连续的通知156。当前PC值154被诸如触发器(flip-flop)的延时设备414延时一个时钟周期并由其保留,以提供先前程序计数值114。应当理解,当前PC值不必需是与正由执行被跟踪程序的处理器来执行的当前程序指令对应的PC值402。例如,正被执行的当前程序指令的PC值402可以被延时设备405延时。但是,先前PC值114应当是存在于当前PC值154的前一个时钟周期的PC值;且关于不连续的通知156应当被延时的时间量应当等于当前PC值154相对于PC值402而被延时的时间量。程序计数定序器212通过把当前程序计数值154和关于不连续的通知156输入逻辑"与"设备416(例如"与"门)中来生成当前不连续目的PC值118。程序计数定序器212通过把先前程序计数值114和关于不连续的通知156输入逻辑"与"设备419中来生成当前不连续来源计数值116。逻辑"与"设备415和延时设备418操作来提供先前不连续目的值413至线性递增发生器模块230。线性递增发生器模块230接收先前程序计数值114和先前不连续目的计数值413,并且包括差分设备432,以通过计算先前程序计数值114和先前不连续目的计数值413之间的差来计算出线性递增运行长度值。线性递增发生器模块230可以包括压縮器434。压缩器434可以使用任何合适的压縮方案(其中几种方案在本
技术领域
中是已知的),以减少提供线性递增运行长度值438所需的总比特数。例如,压縮器434可以使用如上面参考图3所讨论的压缩方案。使用任何已知方法,根据所选择的压縮方案,由差分设备432计算的线性递增运行长度值可以被转换成编码值304、308和310。例如,可以使用查找表(look-uptable)来提供编码值;另一种选择是,根据差分的量值,可以把合适的报头附加到差分设备432的输出上。在一些实施例中,最多三个字是可能的;但是,由于报头和符号数据比特的原因,则可用最多19比特来表示线性递增运行长度值(即最大线性递增运行长度值量值是219)。在差分设备的输出的量值超过2"的情况中,压缩器434提供与绝对PC值对应的编码值314(如图3所示)。如上所讨论,在一些情况中,压縮器434提供与线性递增运行长度值438中的字数对应的字计数439。如下面参考图5所讨论,数据控制器120可以使用字计数来协调被压缩的跟踪序列的输出。位移发生器模块220接收先前程序计数值114和当前程序计数值254,并且包括差分设备422,其通过计算先前程序计数值114和当前程序计数值154之间的差来计算出位移值428。位移发生器模块220可以包括压縮器424。压縮器424可以使用任何压縮方案,以减少提供位移值428所需的总比特数。例如,压缩器424可以使用如上面参考图3所讨论的压縮方案。使用任何已知方法,根据图3所示的压縮方案,由差分设备422计算的位移值可以被转换成编码值306、308、310和312;例如,可以使用查找表来提供编码值;另一种选择是,根据差分的量值,可以把合适的报头附加到差分设备422的输出上。在一些实施例中,最多四个字是可能的;但是,由于报头和符号数据比特的原因,可用最多25比特来表示差分(即最大差分量值是2")。在差分设备的输出的量值超过225的情况中,压縮器424提供与绝对PC值对应的编码值314(如图3所示)。如上所讨论,在一些实施例中,压縮器424提供与输出428中的字数对应的字计数429。如下面参考图5所讨论,数据控制器120可以使用字计数来协调被压縮的跟踪序列的输出。循环计数模块包括含有至少第一先前不连续来源计数值444和第一先前不连续目的计数值445的存储器422(例如2XnFIF0缓冲器)。在示出的示例性实施例中,存储器是2X2FIFO缓冲器,因此,它还包括第二先前不连续来源计数值446和第二先前不连续目的计数值447。应当理解,存储器442可以是包含任何数目的先前不连续来源计数值和第一先前不连续目的计数值的存储器(例如2XnFIFO缓冲器)。如图所示,通过使用比较器448和449,循环计数器模块240把由程序计数定序器212生成的每个先前程序来源计数值114和当前程序计数值154分别与第一先前不连续来源计数值444和第一先前不连续目的计数值445进行比较。如果先前程序计数值114等于第一先前不连续来源计数值444且当前程序计数值154等于第一先前不连续目的计数值445,则如"与"设备452所表示,内循环计数器454进行递增。在一些实施例中,内循环计数器454经由复用器480提供内循环计数至缓冲器226(如图2所示)。此外,内循环计数器454经由复用器482提供字计数至缓冲器260(如图2所示)。在一些示例中,内循环计数器454根据如图3所示的编码值318来生成前缀。在图3示出的压縮方案中,没有对内循环计数器值进行压缩(例如,用于内循环计数值的编码值的字计数没有与内循环值的量值相关);因此,可以通过硬连线生成根据如图3所示方案的内循环计数器值,使得前缀被附加到计数值上。另一种选择是,可以使用查找表或任何其它合适的方法来生成根据如图3所示方案的编码值。虽然如图3所示的方案没有对循环计数值进行压縮,但是包含循环值压縮的压縮方案也处于本发明的范围之内;并且应当理解,可以类似于压縮器224或234(如图2所示)的循环压縮器也应合并进来。类似地,通过使用比较器451和452,循环计数器模块440把由程序计数定序器212生成的每个先前程序计数值114和当前程序计数值154分别与第二先前不连续来源计数值446和第二先前不连续目的计数值447进行比较。如果先前程序计数值114等于第二先前不连续来源计数值446且当前程序计数值254等于第二先前不连续目的计数值447,则如"与"设备453所表示,表示为外循环执行。因此,外循环计数器455进行递增。在一些实施例中,外循环计数器455经由复用器481提供外循环计数至缓冲器236(如图2所示)。此外,外循环计数器455经由复用器482提供字计数至缓冲器260(如图2所示)。在一些示例中,外循环计数器255根据如图3所示的编码值320来生成前缀。在图3示出的压縮方案中,没有对循环计数器值进行压縮;因此,可以通过硬连线生成根据如图3所示方案的外循环计数器值,使得前缀被附加到计数值上。另一种选择是,可以使用查找表或任何其它合适的方法来生成根据如图3所示方案的编码值。复用器480允许位移发生器模块220和内循环计数器454都来填充缓冲器226(如图2所示),且复用器481允许线性递增发生器模块430和外循环计数器455都来填充缓冲器256(如图2所示)。复用器482允许来自压縮器424、压縮434、内循环计数器454和外循环计数器455中每一个的字计数来填充缓冲器260(如上面图2所示)。除非表示为内循环执行或外循环执行,否则"或非"设备(门)457就生成逻辑高。因此,关于不连续的通知256被"与"设备458阻塞,从而防止了"与"设备419和416提供未更新的不连续来源PC值444和未更新的不连续目的PC值445。但是,如果"或非"设备4576既不表示为内循环执行也不表示为外循环执行,则存储器设备442在发生每次新不连续时进行更新。此外,如果表示存在内或外循环,则可以向位移发生器模块220和线性递增发生器模块230提供信号459(门458的输出),以防止计算位移值428和线性递增运行值438。图5A是含有示例性被压縮数据结构的缓冲器226、260和236的示意性示出。在示例性实施例中,每个缓冲器都是FIFO缓冲器,在缓冲器的最上面字上的数据(即第一位置或地址)是首先进入的数据。缓冲器226包括位移数据的两个字,502a和502a',它们两个均与第一位移值对应;内循环计数数据的三个字,504a、504a,和504a,,,它们均与第一内循环计数值对应;以及位移数据的一个字,506a',其与第二位移计数值对应。缓冲器236包括线性递增计数数据的一个字,502b,其与第一位移计数值对应(以及与位移值502a和502a'对应);外循环计数数据的两个字,504b和504b',它们两个均与第一外循环计数值对应;以及线性递增数据的一个字,506b',其与第二线性递增计数值对应(以及与位移计数数据506a对应)。字计数缓冲器260包括与缓冲器226和236中每一个的数据对应的字计数值。例如,可以使用适当的编程数据控制器(例如数据控制器120)来从缓冲器526和缓冲器536中读取位移数据、线性递增数据、内循环数据和外循环数据,使它们形成一个集成的压缩程序跟踪。然后,这个集成的压缩程序跟踪可以由解压縮器145(如图l所示)进行解压縮,以形成解压縮的程序跟踪。通过读取字计数502、502'、504、504'、506和506',以及使用替换的字计数从缓冲器226和236中读取对应个数的字来发生数据的集成。例如,根据示出的示例性数据结构,通过首先从缓冲器226中读取与来自缓冲器的字计数502对应的两个数据字502a和502a'来形成作为结果的集成的压縮程序跟踪。接下来,从缓冲器236中读取与来自缓冲器260的字计数502'对应的单个数据15字502b。然后,从缓冲器526中读取与来自缓冲器260的字计数502对应的两个数据字的三个字502a和502a'。包含作为结果的集成数据的存储器550在图5B中示出。存储器550被从缓冲器226和236中读取的数据从底部向上进行填充。可以使用解压縮器145(如图l所示)来获得对作为结果的集成数据的解压縮。虽然已对发明概念和若干示例性实施例进行了描述,但是,对于本领域的普通技术人员来说,显然,本发明可以以各种方式实现,且对于本领域普通技术人员来说,它们将会发生修改和改进。因此,给出的示例并不是为了限制。本发明只受所附的权利要求及其等同物的限制。同样,应当理解,术语"包括(including)"、"包含(comprising)"或"带有(having)"的使用应当涵盖所列出的项目及其等同物以及列出的项目的前面、后面或者之间的附加的项目。权利要求1.一种用于跟踪在处理器上执行程序的执行序列的程序跟踪器,该处理器带有用于在执行程序时为程序指令保留程序指令计数值的程序计数器,程序跟踪器包含程序计数定序器,其用于接收来自程序计数器的当前程序计数值和保留先前程序计数值,以及确定当前不连续来源计数值和当前不连续目的计数值;以及循环计数模块,其连结至程序计数定序器,以接收当前不连续来源计数值和当前不连续目的计数值,以及保留第一先前不连续来源计数值和第一先前不连续目的计数值,以及通过把当前不连续来源计数值和当前不连续目的计数值与第一先前不连续来源计数值和第一先前不连续目的计数值进行比较,来对至少第一循环的循环执行进行计数。2.—种用于跟踪在处理器上执行程序的执行序列的程序跟踪方法,该处理器带有用于在执行程序时为程序指令保留程序指令计数值的程序计数器,该程序跟踪方法包含确定当前不连续来源计数值和当前不连续目的计数值;以及通过把当前不连续来源计数值和当前不连续目的计数值与第一先前不连续来源计数值和第一先前不连续目的计数值进行比较,来对至少第一循环的循环执行进行计数。全文摘要本发明提供一种用于跟踪在处理器上的程序跟踪器,该处理器带有程序计数器,程序跟踪器包含程序计数定序器和循环计数模块。该程序计数定序器用于接收来自程序计数器的当前程序计数值和保留先前程序计数值,以及确定当前不连续来源计数值和当前不连续目的计数值。该循环计数模块连结至程序计数定序器,以接收当前不连续来源计数值和当前不连续目的计数值,以及保留第一先前不连续来源计数值和第一先前不连续目的计数值,以及通过把当前不连续来源计数值和当前不连续目的计数值与第一先前不连续来源计数值和第一先前不连续目的计数值进行比较,来对至少第一循环的循环执行进行计数。本发明还提供一种用于跟踪在处理器上执行程序的执行序列的方法。文档编号G06F13/28GK101673238SQ20091020913公开日2010年3月17日申请日期2002年8月29日优先权日2001年8月29日发明者约尔格·施丰姆莱因申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1