处理器和开发支持设备的制作方法

文档序号:6650272阅读:111来源:国知局
专利名称:处理器和开发支持设备的制作方法
技术领域
本发明涉及一种可以从外部观察其程序执行状态的信息处理设备(处理器),以及一种采用该处理器的开发支持设备。
本申请基于日本专利申请第2004-309611号,通过参考将其合并于此。
背景技术
跟踪信息输出功能是一种将处理器的程序执行状态输出到外部主计算机上操作的调试器(debugger)中的功能。当采用该处理器的系统检测到程序执行特定异常操作时,系统开发者可以从异常性检测点检查所积累的跟踪信息,并且可以跟踪该程序的执行历史,并识别异常操作的起因。
然而,对于用来提供开发支持的设备,由于限制了可以为跟踪信息的输出而增加的引脚(pin)数量,结果同样限制了用于向处理器输出该信息的可用带宽。进而,由于也限制了对跟踪信息的存储可用的存储器容量,以展示在使用可用的有限跟踪输出带宽和跟踪存储器容量时所获得的最大效果,所以需要对跟踪信息的压缩。
此外,随着CPU速度的增加,为了避免可能影响流水线使用的执行干扰,频繁地采用一系统,由此在执行用于有条件的执行命令的过程期间发布命令,并根据是否已经建立附加条件来确定伴随着寄存器更新的命令的执行(提交)。
用于CPU的跟踪信息输出的相关示例方法是一种用于通过采用执行条件标记来获得跟踪信息的执行标记跟踪方法(参见,例如,ARM有限公司的“ARM IHI 00141,Embedded Trace Macrocell Architecture Specification(嵌入式跟踪宏单元结构规范)”)。
在执行标记跟踪过程中,对每个命令的执行而向外部输出为关于执行条件的芯片提供的信息。基于该跟踪信息输出,外部调试器在比较该跟踪信息输出和在源程序中的信息的同时分析命令的执行状态,使得可以准备和追溯执行历史。
现在将参考图来描述基于这个原理的处理器和执行历史追溯软件。图29是示出输出了跟踪信息的相关处理器的配置的方框图。在图29中,处理器包括CPU 300、编码电路310、以及包生成电路320。
CPU 300向编码电路310输出命令发布信号301、命令执行条件建立信号302、以及操作数检测信号303,并向包生成电路320输出操作数数据304。当已经建立命令执行条件时,将命令发布信号301和命令执行条件建立信号302设置到“1”,并且当没有建立命令执行条件时,将命令发布信号301设置到“1”并将执行条件建立信号302设置到“0”。当生成操作数信息时,将操作数检测信号303设置到“1”。
编码电路310接收命令发布信号301、命令执行条件建立信号302、以及操作数检测信号303,并向包生成电路320输出编码数据输出选择信号311、编码数据312、以及用于该编码数据312的位计数值313。将在后面描述编码电路310的细节。
包生成电路320接收编码数据输出选择信号311、编码数据312、位计数值313、操作数检测信号303、以及操作数数据304,并将跟踪包输出状态信号131输出到跟踪状态输出端150,和将跟踪包132输出到跟踪数据输出端151。将在后面描述包生成电路320的细节。
图30是示出编码电路310的内部布置的方框图。在图30中,编码电路310包括计数器314、移位寄存器315、以及比较器316和317。
移位寄存器315使用命令发布信号301作为移位使能信号,并使用命令执行条件建立信号302作为移入信号,并且生成意指指示命令执行状态的标记字符串的编码数据312。计数器314使用命令发布信号301作为计数使能信号,并生成用于编码数据312的位计数值313。
比较器316比较位计数值313和在比较器316中设置的值,并且当两个值比配时,将计数匹配信号318设置到“1”。比较器317比较位计数值313和“0”,并且当位计数值313不是“0”时,将计数匹配信号319设置到“1”。通过对计数匹配信号318和命令发布信号301的逻辑乘积(logical product)以及计数匹配信号319和操作数检测信号303的逻辑乘积进行逻辑和(logicalsum),生成了编码数据输出选择信号311。
图31是示出包生成电路320的内部布置的方框图。在图31中,包生成电路320包括有效位计数/位计数生成电路323、包ID存储电路326、跟踪数据汇集(assembling)电路328、FIFO写入控制电路329、以及FIFO队列333。
有效位计数/位计数生成电路323生成与位计数值313的最低有效三位一致的有效位计数324、和与等于或大于位计数值313的最低有效第四位的值一致的有效字节计数325。包ID存储电路326存储作为常量的包ID 327。
跟踪数据汇集电路328接收包ID 327、编码数据312、有效位计数324、编码数据输出选择信号311、操作数检测信号303、以及操作数数据304。当编码数据输出选择信号311指示“1”时,跟踪数据汇集电路328生成包括包ID 327、有效位计数324、以及编码数据312的数据字符串,将该数据字符串分为字节,并一个字节接一个字节地输出该数据,作为跟踪数据331。
当操作数检测信号303指示“1”时,跟踪数据汇集电路328生成包括包ID 327和操作数数据304的数据字符串,将该数据字符串分为字节,并一个字节接一个字节地输出该数据,作为跟踪数据331。
此外,当输出第一个有效数据作为跟踪数据331时,跟踪数据汇集电路328也输出值为“1”的跟踪数据输出状态信号330。当输出第二个和接下来的跟踪数据时,将跟踪数据输出状态信号330设置为“0”。
FIFO写入控制电路329接收有效字节计数325、编码数据输出选择信号311以及操作数检测信号303,并生成将被传送到FIFO队列333的写入使能信号332,以便处理跟踪数据输出状态信号330和跟踪数据331。
FIFO队列333接收跟踪数据状态信号330、跟踪数据331以及写入使能信号332,与用于跟踪数据输出的参考时钟同步地接收移位数据,并以输入跟踪包输出状态信号131和跟踪包132的顺序来输出跟踪包输出状态信号131和跟踪包132。
图5是示出在包ID存储电路326中存储的包ID的图。在图5中,对各个包ID录入“包ID”、“消息名称”、以及“记忆符号(mnemonic)”。
当“包ID”是“0b00”时,“消息名称”是“Idle”,而“记忆符号”是“IDLE”。当“包ID”是“0b01”时,“消息名称”是“Taken Flag”,而“记忆符号”是“TE”。当“包IF”是“0b10”时,“消息名称”是“Taken Count”,而“记忆符号”是“TC”。当“包ID”是“0b11”时,“消息名称”是“OperandData”,而“记忆符号”是“OD”。
现在将说明用作“消息名称”条目的“Taken Flag”和“Taken Count”。“Taken Flag”是表示命令执行状态的标记字符串(一个当在发布命令之后建立命令执行条件时指示“1”、当在发布命令之后没有建立命令执行条件时指示“0”的位字符串),其中在接收到命令发布信号301和命令执行条件建立信号302时通过编码装置输出“Taken Flag”作为编码数据。
“Taken Count”是建立命令执行条件的次数(当发布命令时,继续命令执行条件建立信号302的次数=“1”),其中当接收到命令发布信号301和命令执行条件建立信号302时通过编码装置输出该“Taken Flag”作为编码数据。
现在将给出对“Taken Flag”的示例编码的说明。图6是示出当输出编码数据312作为跟踪数据时将通过FIFO队列333输出的跟踪包的格式的图。
在图6中,“时钟”表示用于该跟踪数据输出的参考时钟。TRCDAT[7:0]表示被输出到跟踪数据输出端151的跟踪包132的格式,并包括TakenFlag[31:0],指示编码数据312的值;NV[2:0],指示编码数据312的有效位计数324的值;以及TF,指示包ID的值。TRCSYNC指示将被输出到跟踪状态输出端150的跟踪包输出状态信号131的值。并且“comments(注释)”表示包传递状态。
如图6所示,与“时钟”同步地,一个字节接一个字节地相继输出TF、NV[2:0]、以及Taken Flag[31:0]作为跟踪数据。
图7是示出当输出操作数数据304作为跟踪数据时通过FIFO队列333输出的跟踪包的格式的图。
在图7中,“时钟”表示用于跟踪数据输出的参考时钟,而TRCDAT[7:0]表示输出到跟踪数据输出端151的跟踪包132的格式,TRCDAT[7:0]包括操作数数据[31:0],指示操作数数据304的值;以及OD,指示包ID的值。
图8是示出开发支持设备的配置的方框图。在图8中,开发支持设备包括处理器1、跟踪信息积累器件2、以及主计算机3。
处理器1向跟踪信息积累器件2输出跟踪包输出状态信号131和跟踪包132。跟踪信息积累器件2接收跟踪包输出状态信号131和跟踪包132,并采用跟踪存储器控制器160来控制跟踪存储器控制信号163和跟踪存储器写入数据164,并且来存储该信号和该数据作为在跟踪存储器165中的跟踪信息。
跟踪信息积累器件2也从主计算机3接收跟踪存储器读取请求信号161,并采用跟踪存储器控制器160来存取跟踪存储器165和向主计算机3传送跟踪存储器输出数据162。
在参考图32至36的同时,现在将说明用主计算机3来获得来自具有这个布置的处理器的跟踪数据并追溯执行历史的处理。在这个处理中,假设用于图30的比较器316的比较值是“16”。
图32是示出用于试样程序的示例命令的图,且示出了“命令地址”、“汇编程序”以及“执行顺序”。按照顺序执行从在“执行顺序”(1)中的“命令1”到在“执行顺序”(14)中的“命令16”的命令。在这个示例中,假设“命令8”和“命令10”是没有执行的命令。
在图32中,当在地址0x50000000上开始执行命令时,每次当CPU发布命令时都声明(assert)命令发布信号301,并在同时输出命令发布信号301,输出提供值为“1”的建立的位或者值为“0”的未建立的位的条件,作为命令执行条件建立信号302。当例如发布16个命令时,输出结果“1111111010111111”。
在接收到这个结果时,改变由编码电路310的移位寄存器315输出的编码数据312,使得它也是“1111111010111111”。此外,当将命令发布信号301的值当作计数使能信号时,将计数器314的位计数值313增加到“0x10”。当位计数值313达到“0x10”时,将计数匹配信号318设置到“1”,对编码数据输出选择信号311也是如此。
然后,包生成电路320的有效位计数/字节计数生成电路323输出“0b101”作为与(位计数值“0x10”+(NV的)位计数“0x3”,+(包ID的)位计数“0x2”)的最小有效三位一致的有效位计数324,并输出“0b10”作为与等于或者大于最小有效第四位的值一致的有效字节计数325。
当接收到位计数324并以最小有效位开始时,包生成电路320的跟踪数据汇集电路328布置如下对于TF,包ID=值“0b01”;对于有效位计数324,NV=值“0b101”、以及Taken Flag=“0b1111111010111111”。
在将编码数据输出选择信号311的值改变到“1”之后,FIFO写入控制电路329与跟踪输出的参考时钟同步地来三次将FIFO写入使能信号332设置到“1”(=有效字节计数325的值+1)。
当接收到写入使能信号332=“1”时,一个字节接一个字节地三次向FIFO队列333输出跟踪数据汇集电路328生成的数据。同时,输出数据的第一类型,也输出值为“1”的跟踪数据输出状态信号330。
FIFO 333接收跟踪数据和跟踪数据输出状态信号330,并输出跟踪包132和跟踪包输出状态信号131。图33是示出当执行图32所示的试样程序时的跟踪包的图。
主计算机3接收图33所示的包,并从TRCDAT[1:0]获得包ID=TF,和从TRCDAT[4:2]获得NV=5。由于NV=5,所以获得了编码数据FLAG=0b1111111010111111。图34是示出主计算机3以这种方式从处理器1获得的跟踪信息的图。
现在将说明主计算机3基于图32的试样程序和图34的跟踪信息追溯执行历史的处理。图35是示出主计算机3所使用的用来追溯执行历史的算法的流程图。
在图35中,在步骤4000中,将IP指定为地址0x50000000,将TP指定为地址0x0,以及将ETP指定为地址0x1。由于TP≠ETP,所以程序控制跳过步骤4001并进入到步骤4002,并且由于跟踪消息是TF,所以移到步骤4004和4005。此外,由于标记的值为“1”,所以在地址0x50000000上显示命令1,并将IP增加到地址0x50000000。
由于保留了有效的标记,所以然后在地址0x50000004上显示命令2,并将IP增加到地址0x50000008。相似地,在地址0x50000008、0x5000000c、0x50000010、0x50000014和0x50000018上分别显示命令3、命令4、命令5、命令6和命令7。由于与下一个命令8对应的标记值是“0”,所以为IP设置下一个命令9的地址0x50000020,且由于随后标记的值是“1”,所以在地址0x50000020上显示命令9,并将IP增加到地址0x50000024。
此外,由于与下一个命令10对应的标记值是“0”,所以为IP设置随后的命令11的地址0x50000028,且由于随后标记的值是“1”,所以在地址0x50000028上显示命令11。相似地,在地址0x5000002c、0x50000030、0x50000034和0x50000038上分别显示命令12、命令13、命令14和命令15。当完成了对有效标记的数目的处理时,将TP设置在地址0x1上,且程序控制返回到步骤4001。由于在步骤S4001上确定已经建立了TP=ETP,所以终止了执行历史追溯处理。
图36是示出通过这个处理获得的执行历史的图。在图36中,示出了“跟踪存储器地址”、“跟踪消息”、“跟踪包”、“地址”和“追溯的执行历史”,并且可以确认可以追溯图32所示的试样程序。
然而,对于相关的技术,问题在于对跟踪信息的压缩率低。
具体地,根据相关的技术,每次执行命令时,必须输出用于为有条件的执行命令提供建立的/未建立的位的条件,并且即使当获得了编码装置时,也要为每一个命令不断地生成每个位的基本信息。另外,增加了高性能CPU在一个周期内发布的命令数目,例如发布三个和四个命令,并且这使跟踪信息的输出更加困难。
此外,至少需要一个跟踪输出时钟来输出执行次数的数目的信息,且通常地,选择通过对CPU时钟进行1/2或者1/4划分所获得的、可以向外传送到芯片的操作频率,作为跟踪输出时钟。因此,当考虑到CPU的操作频率和跟踪时钟的比率时,跟踪信息的输出速率就低于跟踪信息的生成速率,且即使当准备了具有合适容量的缓冲器时,也会很快使跟踪输出无效。就是说,与CPU的实际操作相比,压缩输出跟踪信息的比率低。
此外,与用于有条件的执行命令的建立/未建立条件一样,为了跟踪与有关命令执行状态的信息不同的信息,例如为了跟踪操作数信息,当生成了该操作数信息时,必须输出已经编码数据作为跟踪信息。由于跟踪信息包括作为额外信息的包ID和有效位计数,所以这里遇到的问题是,随着输出跟踪信息的次数的增加,跟踪信息输出包的数目也同样增加。

发明内容
在考虑到这些问题的情况下,本发明的一个目的是提供用于如此大程度地压缩跟踪信息、使得可以准确地在外部捕获结合到处理器中的高速CPU的操作的设备。本发明的又一个目的是提供采用这个处理器的开发支持设备。
为了达到这些目的,根据本发明的第一方面的处理器包括静态调度(schedule)命令去除单元,在接收到命令发布信号、命令执行条件建立信号、和与该静态调度一致的执行确定信号时,其去除静态调度命令;编码单元,在接收到通过该静态调度命令去除单元获得的命令执行条件建立信号和命令发布信号时,其对除静态调度命令之外的命令的执行历史进行编码;以及数据包生成器,在接收到通过编码单元获得的编码数据时,其生成跟踪包。顺便提一下,从由该静态调度命令去除单元获得的命令执行条件建立信号和命令发布信号中排除了该静态调度命令。
根据这种布置,对于预先确定由编译器执行的命令,可以抑制条件执行标记的生成,使得根据静态调度通过采用执行确定信号可以大大地压缩跟踪信息。
根据本发明的第二方面的处理器包括编码单元,在接收到命令发布信号、命令执行条件建立信号、操作数检测信号和操作数数据时,其对命令的执行历史进行编码;数据包生成器,在接收到通过编码单元获得的编码数据时,其生成跟踪包;以及控制器,当生成操作数检测信号时,其立即输出操作数数据包并停止根据第一方面的执行标记包的输出。
根据这个布置,当生成操作数检测信号时,没有立即进行执行标记跟踪包作为跟踪数据的输出,而是可以将其延迟。因此,可以减少输出跟踪信息的次数,且可以大大地压缩跟踪信息。
根据本发明的第三方面的处理器包括编码单元,在接收到命令发布信号、命令执行条件建立信号、操作数检测信号和操作数数据时,其对命令的执行历史进行编码;检测源程序中的操作数位置的单元;以及数据包生成器,其接收通过编码单元获得的编码数据和有关操作数位置的信息,并生成包括关于操作数位置的信息的跟踪包。
根据这种布置,其中关于操作数位置的信息被包含在跟踪包中,并被作为跟踪信息输出,可以集体处理对操作数数据的追溯。因此,对于使用跟踪信息的执行历史追溯,简化了该处理,且对于执行历史追溯程序,提高了处理效率。
此外,根据第二方面的处理器的布置,由于在跟踪信息中没有包括关于操作数位置的信息,所以当将仅跟踪部分操作数信息时,可能没有指定生成操作数信息的时间。然而,用该第三方面的布置,由于基于跟踪信息获得了关于操作数位置的信息,所以可以解决该问题。
根据本发明的第四方面的开发支持设备包括计算机,其采用由根据第一方面的处理器生成的跟踪包,并采用该处理器执行的源程序,来执行追溯并显示该处理器的执行历史的执行历史追溯程序;以及用于无条件地显示源程序中通过静态调度来确定其执行的命令的单元,用于把源程序中不通过静态调度确定其执行的命令和在跟踪包中的信息关联起来,当跟踪包中的相关信息指示已经建立了执行条件时显示命令,而当跟踪包中的相关信息指示没有建立执行条件时不显示命令。
根据本发明的第五方面的开发支持设备包括一计算机,其采用根据第二方面或第三方面的处理器所生成的跟踪包、和该处理器执行的源程序,来执行追溯并显示该处理器的执行历史的执行历史追溯程序。
如上所述,根据本发明,由于在所有有条件的执行命令之中,还没有静态调度的有条件的执行命令的出现频率是1/8到1/16,所以可以估计用于分支标记包的数据压缩比率是大约1/8到1/16。结果,可以大大地压缩跟踪信息。
此外,根据本发明,当生成操作数信息时,没有立即输出编码数据来作为跟踪信息,且可以延迟该数据的输出。这样,可以减少输出跟踪信息的次数。
此外,根据本发明,由于在跟踪包中包括操作数位置的信息,且将该信息作为跟踪信息输出,所以集体处理了操作数数据的追溯,简化了执行历史的追溯的处理,并提高了执行历史追溯程序的处理效率。


图1是示出根据本发明的第一实施例的处理器配置的方框图;图2是示出根据本发明的第一实施例的静态调度命令去除电路的内部布置的电路图;图3是示出根据本发明的第一实施例的编码电路的内部布置的方框图;图4是示出根据本发明的第一实施例的包生成电路的内部布置的方框图;图5是示出在包ID存储电路中存储的包ID的图;图6是示出用于编码数据的跟踪包的格式的图;图7是示出用于操作数数据的跟踪包的格式的图;图8是示出开发支持设备的配置的方框图;图9是示出用于试样程序的示例命令的图;图10是示出用于试样程序执行结果的跟踪包的图;图11是示出主计算机从处理器获得的跟踪信息的图;图12是示出根据本发明的第一实施例的由主计算机执行的执行历史追溯处理的流程图;图13是示出通过使用跟踪信息追溯的执行历史的图;图14是示出根据本发明的第二实施例的处理器配置的方框图;
图15是示出根据本发明的第二实施例的编码电路的内部配置的方框图;图16是示出根据本发明的第二实施例的包生成电路的内部配置的方框图;图17是示出用于试样程序的示例命令的图;图18是示出用于试样程序执行结果的跟踪包的图;图19是示出主计算机从处理器获得的跟踪信息的图;图20是示出根据本发明的第二实施例的由主计算机执行的执行历史追溯处理的流程图;图21是示出通过使用跟踪信息追溯的执行历史的图;图22是示出根据本发明的第三实施例的处理器的配置的方框图;图23是示出根据本发明的第三实施例的包生成电路的内部配置的方框图;图24是示出用于操作数数据的跟踪包的图;图25是示出用于试样程序执行结果的跟踪包的图;图26是示出主计算机从处理器获得的跟踪信息的图;图27是示出根据本发明的第三实施例的由主计算机执行的执行历史追溯处理的流程图;图28是示出通过使用跟踪信息追溯的执行历史的图;图29是示出相关处理器的配置的方框图;图30是示出相关处理器的编码电路的内部配置的方框图;图31是示出相关处理器的包生成电路的内部配置的方框图;图32是示出试样程序的示例命令的图;图33是示出用于试样程序执行结果的跟踪包的图;图34是示出主计算机从处理器获得的跟踪信息的图;图35是示出由主计算机执行的相关执行历史追溯处理的流程图;图36是示出通过使用跟踪信息追溯的执行历史的图。
具体实施例方式
现在将参考附图来描述本发明的优选实施例。尽管对每个实施例描述了处理器1的布置,但是对所有实施例共同采用了图8所示的开发支持设备的配置。
(第一实施例)图1是示出根据本发明的第一实施例的处理器配置的方框图。在图1中,处理器1包括CPU 100、静态调度命令去除电路110、编码电路120、包生成电路130、跟踪状态输出端150、以及跟踪数据输出端151。
CPU 100向静态调度命令去除电路110输出命令发布信号101、命令执行条件建立信号102、以及指示将被使用的静态调度的执行确定信号103。CPU 100也向编码电路120和包生成电路130输出操作数检测信号104,并向包生成电路130输出操作数数据105。
当已经建立了命令执行条件时,将执行发布信号101和命令执行建立信号102设置到“1”,但是当没有建立命令执行条件时,将命令发布信号101设置到“1”,以及将命令执行条件建立信号102设置到“0”。此外,当将执行由静态调度确定其执行的命令时,将值为“1”的执行确定信号103输出到静态调度命令去除电路110。以及当生成操作数信息时,将操作数检测信号104设置到“1”。
静态调度命令去除电路110接收命令发布信号101、命令执行条件建立信号102、以及执行确定信号103,并向编码电路120输出除静态调度命令之外的命令发布信号111和除静态调度命令之外的命令执行条件建立信号112。后面将描述静态调度命令去除电路110的细节。
编码电路120接收除静态调度命令之外的命令发布信号111、除静态调度命令之外的命令执行条件建立信号112、以及操作数检测信号104,并且向包生成电路130输出编码数据输出选择信号121、编码数据122和用于该编码数据122的位计数值123。后面将描述该编码电路120的细节。
包生成电路130接收编码数据输出选择信号121、编码数据122、编码数据计数值123、操作数检测信号104、以及操作数数据105,并且向跟踪状态输出端150输出跟踪包输出状态信号131,同时向跟踪数据输出端151输出跟踪包132。后面将描述该包生成电路130的细节。
图2是示出静态调度命令去除电路110的内部布置的电路图。在图2中,静态调度命令去除电路220包括屏蔽电路(mask circuits)113和114。
屏蔽电路113计算命令发布信号101和执行确定信号103的反相信号的逻辑乘积,并基于该逻辑乘积来生成除静态调度命令之外的命令发布信号111。屏蔽电路114计算命令执行条件建立信号102和执行确定信号103的反相信号的逻辑乘积,并基于该逻辑和来生成除静态调度命令之外的命令执行条件建立信号112。
图3是示出编码电路120的内部布置的方框图。在图3中,编码电路120包括计数器124、移位寄存器125、以及比较器126和127。
移位寄存器125将除静态调度命令之外的命令发布信号111当作移位使能信号,移入除静态调度命令之外的命令执行条件建立信号112,并且生成包括标记字符串的含义的编码数据122,其中该标记字符串指示除静态调度命令之外的命令的执行状态。计数器124将除静态调度命令之外的命令发布信号111当作计数使能信号,并生成用于编码数据122的位计数值123。
比较器126比较位计数值123和在比较器126中设置的值,并且当该值匹配时,将计数匹配信号128设置到“1”。比较器127比较位计数值123和“0”,并且当位计数值123不是“0”时,将计数匹配信号129设置到“1”。编码数据输出选择信号121是基于计数匹配信号128和除静态调度命令之外的命令发布信号111的逻辑乘积、以及计数匹配信号129和操作数检测信号104的逻辑乘积之间的逻辑和生成的。
图4是示出包生成电路130的内部布置的方框图。在图4中,包生成电路130包括有效位计数/字节计数生成电路133、包ID存储电路136、跟踪数据汇集电路138、FIFO写入控制电路139、以及FIFO队列143。
有效位计数/字节计数生成电路133根据位计数值123的最小有效三位来生成有效位计数134,并根据等于或者大于位计数值123的最小有效第四位的值来生成有效字节计数135。包ID存储电路136存储作为常量的包ID 137。
跟踪数据汇集电路138接收包ID 137、编码数据122、有效位计数134、编码数据输出选择信号121、操作数检测信号104、以及操作数数据105。此外,当编码数据输出选择信号121指示“1”时,跟踪数据汇集电路138生成包括包ID 137、有效位计数134、和编码数据122的数据字符串,将这个数据字符串分为字节,并一个字节接一个字节地输出该数据作为跟踪数据141。
此外,当操作数检测信号104指示“1”时,跟踪数据汇集电路138生成包括包ID 137和操作数数据105的数据字符串,将这个数据字符串分为字节,并一个字节接一个字节地输出该数据作为跟踪数据141。
另外,当输出这些输出的第一有效数据作为跟踪数据141时,跟踪数据汇集电路138也输出值为“1”的跟踪数据输出状态信号140。然后,当输出第二和接下来的跟踪数据141时,将跟踪数据输出状态信号140设置为“0”。
FIFO写入控制电路139接收有效字节计数135、编码数据输出选择信号121、以及操作数检测信号104,并生成将被传送到FIFO队列143的写入使能信号142,其中FIFO队列143处理跟踪数据输出状态信号140和跟踪数据141。
FIFO队列143接收跟踪数据输出状态信号140、跟踪数据141、以及写入使能信号142,移位与跟踪输出的参考时钟同步地接收的数据,并输出以跟踪包输出状态信号131和跟踪包132的输入顺序来输出跟踪包输出状态信号131和跟踪包132。
在图5中示出在包ID存储电路136中存储的包ID,且包ID的内容与相关的示例所描述的内容相同。
现在将描述在这个实施例中的在条目“消息名称”中的“Taken Flag”和“Taken Count”。“Taken Flag”是指示命令执行状态的标记字符串(当在发布除静态调度命令之外的命令的时候建立了命令执行条件时,指示“1”的位字符串;或者当没有建立命令执行条件时,指示“0”的位字符串),并且当接收排除了静态调度命令的命令发布信号111、和排除了静态调度命令的命令执行条件建立信号112时,输出该“Taken Flag”作为编码数据。
“Taken Count”是指示建立命令执行条件的次数的编码数据(当发布除静态调度命令之外的命令时,重复命令执行条件建立信号112的次数=“1”),其中,当接收排除了静态调度命令的命令发布信号111时,以及当接收排除了静态调度命令的命令执行条件建立信号112时,输出该“Taken Count”。
现在将给出对“Taken Flag”的示例编码的说明。当要输出编码数据122作为跟踪数据时,对FIFO队列143输出的跟踪包采用了图6的格式,先前在相关的示例中描述了该格式的内容。
具体地,“时钟”表示用于跟踪输出的参考时钟。TRCDAT[7:0]表示被输出到跟踪数据输出端151的跟踪包132的格式,且TRCDAT[7:0]包括Taken Flag[31:0],表示编码数据122的值;NV[2:0],表示编码数据122的有效位计数134的值;以及TF,表示包ID的值。TRCSYNC指示被输出到跟踪状态输出端150的跟踪包输出状态信号131的值。并且“comments”指示包传递状态。
如上所述,与“时钟”同步地,一个字节接一个字节地相继输出TF、NV[2:0]、以及Taken Flag[31:0]作为跟踪数据。
为了输出操作数数据105作为跟踪数据,对FIFO队列143输出的跟踪包采用了图7的格式。先前在相关的示例中描述了该格式采用的内容。
具体地,“时钟”表示用于跟踪输出的参考时钟,而TRCDAT[7:0]表示输出到跟踪数据输出端151的跟踪包132的格式,且TRCDAT[7:0]包括操作数数据[31:0],用于指示操作数数据的值;以及OD,用于指示包ID的值。
参考图9至13,现在将给出对下面的状态的说明,其中主计算机3采用该布置,以便从处理器1获得跟踪数据,并且追溯用于执行历史的数据。在这个实施例中,假设图3中的比较器126采用的比较值是“6”。
图9是用于示出了示例命令的试样程序的图,其中包括“命令地址”、“汇编程序”以及“执行顺序”。对于该程序,相继执行从在“执行顺序”(1)中的“命令1”到在“执行顺序”(14)中的“命令16”的命令。
标注“(ALWAYS-TAKEN)”的命令是CPU一直执行的命令,且没有标注“(ALWAYS-TAKEN)”的命令是如果CPU没有执行这些命令就不能确定其为“Taken”或者“Not Taken”的命令。
在这个示例中,假设“命令8”和“命令10”是没有执行的命令,且在所执行的命令中,“命令1至命令3”、“命令6和命令7”、以及“命令12至命令16”是CPU一直执行的命令。
在图9中,当从地址0x50000000开始来按照顺序执行命令时,与CPU的操作频率同步地,相继将命令发布信号101改变到“1111111111111111”,同时,将命令执行条件建立信号102改变到“1111111010111111”,并且将执行确定信号103改变到“1110011000011111”。
响应这些改变,静态调度命令去除电路110输出排除了静态调度命令的命令发布信号111,并将该命令发布信号111改变到“0001100111100000”,并且将排除了静态调度命令的命令执行条件建立信号112改变到“0001100010100000”。
根据这些改变,将编码电路120的移位寄存器125输出的编码数据122改变到“110101”。此外,将用于计数器124的位计数值123增加到“0x6”,同时将排除了静态调度命令的命令发布信号111的值当作计数使能信号。当位计数值123达到“0x6”时,计数匹配信号128变成“1”,编码数据输出选择信号121也是如此。
包生成电路130的有效位计数/字节计数生成电路133根据(位计数值“0x6”+用于NV的位计数值“0x3”+用于包ID的位计数“0x2”)的三个最小有效位来输出值为“0b011”的有效位计数134,并根据等于或大于第四最小有效位的值来输出值为“0b1”的有效字节计数135。
当接收到有效位计数134时,包生成电路130的跟踪数据汇集电路138从最小有效位开始来布置如下包ID=TF的值“0b01”;NV=有效位计数134的值“0b101”;以及Taken Flag=“0b110101”。
当编码数据输出选择信号121的值改变到“1”时,FIFO写入控制电路139与跟踪输出的参考时钟同步地两次(=有效字节计数135+1)把将被传送到FIFO队列143的写入使能信号142设置到“1”。
根据写入使能信号142,一个字节接一个字节地两次向FIFO队列143输出跟踪数据汇集电路138生成的数据。此外,当输出第一字节的数据时,也输出值为“1”的跟踪数据输出状态信号140。
FIFO队列143接收该数据和跟踪数据输出状态信号140,并传送跟踪包132和跟踪包输出状态信号131。图10是示出当执行图9的试样程序时的跟踪包的图。
主计算机3接收图10所示的包,并从TRCDAT[1:0]提取包ID=TF,和从TRCDAT[4:2]提取NV=3。由于NV=3,所以获得了指示编码数据FLAG=0b110101的信息。
图11是示出主计算机3以这种方式从处理器1获得了跟踪信息的图。
现在将给出用于下面处理的说明,其中主计算机3通过采用图9中的试样程序和图11中的跟踪信息追溯执行历史。图12是示出用于主计算机3所执行的执行历史追溯处理的算法的流程图。
在图12中,在步骤1000中,将IP指派为地址0x5000000,将TP指派为地址0x0,以及将ETP指派为地址0x1。由于TP≠ETP,所以程序控制跳过步骤1001并进入到步骤1002。然后,由于跟踪消息是TF,所以程序控制前进到步骤1004和1005。
直到出现ALWAYS-TAKEN没有指示的命令,都显示在地址0x50000000上的命令1、在地址0x50000004上的命令2、以及在地址0x50000008上的命令3。当出现没有标注ALWAYS-TAKEN的命令4时,程序控制移动到步骤1006。由于标记的值为“1”,所以显示命令4,并将IP增加到地址0x50000010。
由于有效的标记保留了,所以程序控制返回到步骤1005,并且由于出现了没有标注ALWAYS-TAKEN的命令5,所以程序控制前进到步骤1006。然后,由于标记的值为“1”,所以显示命令5,并将IP增加到地址0x50000014。
由于有效的标记仍旧保留了,所以程序控制再次返回到步骤1005,显示在地址0x50000014上的命令6和在地址0x50000018上的命令7,并且由于出现了没有标注ALWAYS-TAKEN的命令8,所以程序控制前进到步骤1006。然后,由于标记的值为“0”,所以将下一个命令9的地址0x50000020分配到IP。
由于有效的标记仍旧保留了,所以程序控制返回到步骤1005,并且由于出现了没有标注ALWAYS-TAKEN的命令9,所以程序控制前进到步骤1006。然后,由于标记的值为“1”,所以在地址0x50000020上显示命令9,且将IP增加到地址0x50000024。
由于仍旧有有效的标记,所以程序控制返回到步骤1005,并且由于出现了没有标注ALWAYS-TAKEN的命令10,所以程序控制前进到步骤1006。然后,由于标记的值为“0”,所以将下一个命令11的地址0x50000028分配到IP。
由于仍旧有有效的标记,所以程序控制返回到步骤1005,并且由于出现了没有标注ALWAYS-TAKEN的命令11,所以程序控制前进到步骤1006。然后,由于标记的值为“1”,所以在地址0x50000028上显示命令11。
由于没有更多的有效标记,所以显示在地址0x5000002c上的命令12、在地址0x50000030上的命令13、在地址0x50000034上的命令14、在地址0x50000038上的命令15、以及在地址0x5000003c上的命令16,并且将TP指派到地址0x1。此后程序控制返回到步骤1001。然后,由于确定了TP=ETP,所以终止了执行历史追溯处理。
图13是示出通过这个处理获得的执行历史的图。在图13中,示出了“跟踪存储器地址”、“跟踪消息”、“跟踪包”、“地址”和“追溯执行历史”,并且可以确认可以追溯图9所示的试样程序。
结果,将包括标注ALWAYS-TAKEN的命令的Taken Flags输出为跟踪包。然而,在这个实施例中,由于仅仅对没有标注的ALWAYS-TAKEN的命令进行编码,所以可以以相当于标注了ALWAYS-TAKEN的命令数目的数目来压缩跟踪数据的Taken Flag位。
(第二实施例)图14是示出根据本发明的第二实施例的处理器配置的方框图。在图14中,处理器1包括CPU 200、编码电路210、包生成电路230、跟踪状态输出端150、以及跟踪数据输出端151。
CPU 200向编码电路210输出命令发布信号201、命令执行条件建立信号202、操作数检测信号203以及编码数据输出模式信号204。CPU 200也向包生成电路230输出操作数数据205。
当建立了命令执行条件时,命令发布信号201和命令执行条件建立信号202变为“1”,且当没有建立命令执行条件时,命令发布信号201变为“1”,而命令执行条件建立信号202变为“0”。当生成操作数信息时,操作数检测信号203变为“1”。
编码数据输出模式信号204是用于指定操作数检测信号203是否应该包括在用于生成编码数据输出选择信号211的条件中的模式信号。当编码数据输出模式信号204指示“1”时,操作数检测信号203应该包括在用于生成编码数据输出选择信号211的条件中。
编码电路210接收命令发布信号201、命令执行条件建立信号202、操作数检测信号203、以及编码数据输出模式信号204,并且向包生成电路230输出编码数据输出选择信号211、编码数据212和用于该编码数据212的位计数值213。后面将描述该编码电路210的细节。
包生成电路230接收编码数据输出选择信号211、编码数据212、用于编码数据212的位计数值213、操作数检测信号203、以及操作数数据205,并且向跟踪状态输出端150输出跟踪包输出状态信号131,同时向跟踪数据输出端151输出跟踪包132。后面将描述包生成电路230的细节。
图15是示出编码电路210的内部布置的方框图。在图15中,编码电路210包括屏蔽电路214、计数器215、移位寄存器216、以及比较器218和219。
屏蔽电路214采用操作数检测信号203和编码数据输出模式信号204的反相信号的逻辑乘积,来生成与操作数检测一致的编码数据输出选择信号217。
移位寄存器216将命令发布信号201当作移位使能信号,移入命令执行条件建立信号202,并且生成包括标记字符串的含义的编码数据212,其中该标记字符串指示命令的执行状态。计数器215把命令发布信号201当作计数使能信号,并生成编码数据212的位计数值213。
比较器218比较位计数值213和在比较器218中设置的值,并且当该值匹配时,将计数匹配信号220设置到“1”。比较器219比较位计数值213和“0”,并且当位计数值213不是“0”时,将计数匹配信号221设置到“1”。编码数据输出选择信号211是基于计数匹配信号220和命令发布信号201的逻辑乘积、以及计数匹配信号221和与操作数检测一致的编码数据输出选择信号217的逻辑乘积之间的逻辑和生成的。
图16是示出包生成电路230的内部布置的方框图。在图16中,包生成电路230包括有效位计数/字节计数生成电路233、包ID存储电路236、跟踪数据汇集电路238、FIFO写入控制电路239、以及FIFO队列243。
有效位计数/字节计数生成电路233根据位计数值123的三个最小有效位来生成有效位计数234,并根据等于或者大于位计数值213的第四最小有效位的值来生成有效字节计数235。包ID存储电路236存储作为常量的包ID237。
跟踪数据汇集电路238接收包ID 237、操作数数据205、编码数据212、有效位计数234、操作数检测信号203、以及编码数据输出选择信号211。当编码数据输出选择信号211指示“1”时,跟踪数据汇集电路238生成包括包ID 237、有效位计数234、和编码数据212的数据字符串,将这个数据字符串分为字节,并一个字节接一个字节地输出该数据作为跟踪数据241。
此外,当操作数检测信号203指示“1”时,跟踪数据汇集电路238生成包括包ID 237和操作数数据205的数据字符串,将这个数据字符串分为字节,并一个字节接一个字节地输出该数据作为跟踪数据241。
另外,当输出这些输出的第一有效数据作为跟踪数据241时,跟踪数据汇集电路238也输出值为“1”的跟踪数据输出状态信号240。然后,当输出第二和接下来的跟踪数据241时,将跟踪数据输出状态信号240设置为“0”。
FIFO写入控制电路239接收有效字节计数235、编码数据输出选择信号211、以及操作数检测信号203,并生成将被传送到FIFO队列243的写入使能信号242,其中FIFO队列243处理跟踪数据输出状态信号240和跟踪数据241。
FIFO队列243接收跟踪数据输出状态信号240、跟踪数据241、以及写入使能信号242,移位与跟踪输出的参考时钟同步地接收的数据,并以跟踪包输出状态信号231和跟踪包232的输入顺序来输出跟踪包输出状态信号231和跟踪包232。
在图5中示出在包ID存储电路236中存储的包ID;当输出编码数据212作为跟踪数据时,在图6中示出了用于由FIFO队列243输出的跟踪包的格式;以及当输出操作数数据205作为跟踪数据时,在图7中示出了用于由FIFO队列243输出的跟踪包的格式。先前在相关的示例和第一实施例中说明了包ID的内容和该格式。
具体地,在图7中,“时钟”表示用于跟踪输出的参考时钟,TRCDAT[7:0]表示被输出到跟踪数据输出端151的跟踪包232的格式,且TRCDAT[7:0]包括Operand Data[31:0],指示操作数数据205的值;以及OD,指示包ID的值。
在参考图17至21的同时,现在将给出对下面状态的说明,其中在该状态中主计算机3从具有该布置的处理器1获得跟踪数据并追溯执行历史。在这个实施例中,假设在图15中比较器218所采用的比较值是“10”。
图17是示出试样程序的示例命令的图,示出了“命令地址”、“汇编程序”以及“执行顺序”。为了执行程序,相继执行从在“执行顺序”(1)中的“命令1”到在“执行顺序”(7)中的“命令9”的命令。
在这个示例中,假设“命令4”、“命令8”和“命令10”是没有执行的命令,“命令7”是生成操作数数据OD=0xAAAAAAAA的命令。
在图17中,当从地址0x50000000开始来执行命令时,随后与CPU 200的操作频率同步地将命令发布信号201改变到“1111111111”,同时,将命令执行条件建立信号202改变到“1110111010”。
此外,当执行在地址0x50000018上的命令7时,将操作数检测信号203改变到“1”,并输出“0xAAAAAAAA”作为操作数数据205。在这种情况下,假设编码数据输出模式信号204的设置值为“1”。
当接收到命令发布信号201和命令执行条件建立信号202时,从编码电路210的移位寄存器216输出的编码数据212改变到“1110111010”。当将命令发布信号201的值当作计数使能信号时,将计数器215的位计数值213增加到“0xa”。当位计数值213到达“0x7”时,执行命令7,且操作数检测信号203改变到“1”。
此时,如果编码电路210像相关情况下的图30中的编码电路310一样没有包括屏蔽电路214,则编码数据输出选择信号211改变到“1”,并在此时,输出编码数据212作为跟踪数据。
然而,在这个实施例中,编码数据输出模式信号204的反相信号(=“0”)屏蔽了操作数检测信号203=“1”,且与操作数检测一致的编码数据输出选择信号217改变到“0”。因此,此时,编码数据输出选择信号211指示“0”。此后,当计数器215的位计数值213增加到“0xa”时,计数匹配信号220变为“1”,且将编码数据输出选择信号211设置到“1”。
当操作数检测信号203变为“1”时,根据等于或者大于(操作数数据的位计数“0x20”+包ID的位计数“0x2”)的第四最小有效位的值来输出值为“0b100”的有效字节计数235。
当接收到这个字节计数235时,包生成电路230的跟踪数据汇集电路238在最小有效位上开始布置包ID=OD值“0b11”和操作数数据=“0xAAAAAAAA”。
当操作数检测信号203的值改变到“1”时,与用于跟踪输出的参考时钟同步地,FIFO写入控制电路239五次(=有效字节计数235+1)把将被传送到FIFO队列243的写入使能信号242设置到“1”。
根据该写入使能信号242,一个字节接一个字节地五次将跟踪数据汇集电路238所生成的数据输出到FIFO队列243。此外,当输出数据的第一字节时,输出值为“1”的跟踪数据输出状态信号240。
其次,当编码数据输出选择信号211改变到“1”时,根据(计数值“0xa”+NV的位计数“0x3”+包ID的位计数“0x2”)的最小有效三位来输出值为“0b111”的有效位计数234,并根据等于或者大于第四最小有效位的值来输出值为“0b1”的有效字节计数235。
在接收到有效位计数234时,包生成电路230的跟踪数据汇集电路238从最小有效位开始来布置包ID=TF的值“0b01”、NV=有效位计数234的值“0b111”以及Taken Flag=“0b1110111010”。
在编码数据输出选择信号211的值改变到“1”之后,与用于跟踪输出的参考时钟同步地,FIFO写入控制电路239两次(=有效字节计数235+1)把将被传送到FIFO队列243的写入使能信号242设置到“1”。
根据该写入使能信号242,一个字节接一个字节地两次将跟踪数据汇集电路238所生成的数据输出到FIFO队列243。当输出该数据的第一字节时,输出值为“1”的跟踪数据输出状态信号240。
FIFO 243接收该数据和跟踪数据输出状态信号240,并输出跟踪包132和跟踪包输出状态信号131。图18是示出当执行图17中的试样程序时的跟踪包的图。
主计算机3接收图18所示的包,首先从TRCDAT[1:0]中获得包ID=OD,然后获得操作数数据DATA=0xAAAAAAAA。
然后,主计算机3从TRCDAT[1:0]中获得包ID=TF,和从TRCDAT[4:2]中获得NV=7。由于NV=7,所以获得了编码数据FLAG=0b1110111010。图19是示出主计算机3以这种方式从处理器1获得的跟踪信息的图。
现在将说明主计算机3通过采用图17的试样程序和图19的跟踪信息而追溯执行历史的处理。图20是示出用于主计算机3所执行的执行历史追溯处理的算法的流程图。
在图20中,在步骤2000中,将IP指派到地址0x50000000,将TP指派到地址0x0,以及将ETP指派到地址0x2。由于TP≠ETP,所以程序控制跳过步骤2001并进入到步骤2002,并且由于跟踪消息是OD,所以前进到步骤2008和2009。然后,将OD=0xAAAAAAAA的信息存储到主计算机3的存储器中,且将TP指派到地址0x1。此后程序控制返回到步骤S2001。
由于TP≠ETP,所以程序进入到步骤2002,并且由于跟踪消息是TF,所以前进到步骤2004和2005。由于标记的值为“1”,所以在地址0x50000000上显示命令1,且将IP增加到地址0x50000004。
由于有效标记仍旧保留且下一个标记的值是“1”,所以在地址0x50000004上显示命令2,并将IP增加到地址0x50000008。相似地,在地址0x50000008显示命令3,并且由于仍旧保留了有效标记且下一个标记的值是“0”,所以将下一个命令5的地址0x50000010分配到IP。
由于有效标记仍旧保留且下一个标记的值是“1”,所以在地址0x50000010上显示命令5,并将IP增加到地址0x50000014。同样,在地址0x50000014和地址0x50000018上分别显示命令6和命令7。
此时,由于命令7是生成操作数数据的命令,所以显示了在主计算机3的存储器中存储的最早的操作数数据OD=0xAAAAAAAA。
由于有效标记仍旧保留且下一个标记的值是“0”,所以将下一个命令9的地址0x50000020分配到IP。此外,由于有效标记仍旧保留且下一个标记的值是“1”,所以在地址0x50000020上显示命令9,并且由于下一个标记的值是“0”,所以没有显示命令,并增加了地址。
由于完成了对有效标记的数目的处理,所以将TP指派到地址0x2,且程序控制返回到步骤2001。由于确定TP=ETP,所以终止执行历史追溯处理。
图21是示出通过这个处理获得的执行历史的图。在图21中,示出了“跟踪存储器地址”、“跟踪消息”、“跟踪包”、“地址”、以及“追溯的执行历史”,并且确认可以追溯图17所示的试样程序。
如上所述,由于通过使用编码数据输出模式信号204而屏蔽了操作数检测信号203,所以当生成操作数信息时可以防止编码数据作为追踪数据输出。这样,可以抑制由操作数信息的生成而引起的跟踪数据增加。
(第三实施例)图22是示出根据本发明的第三实施例的处理器配置的方框图。在图22中,处理器1包括CPU 200、编码电路210、包生成电路260、跟踪状态输出端150、以及跟踪数据输出端151。
CPU 200向编码电路210输出命令发布信号201、命令执行条件建立信号202、操作数检测信号203、以及编码数据输出模式信号204。CPU 200也向包生成电路260输出操作数数据205。
当建立了命令执行条件时,执行发布信号201和命令执行建立信号202变为“1”,并且当没有建立命令执行条件时,命令发布信号201变为“1”,而命令执行条件建立信号202变为“0”。当生成操作数信息时,操作数检测信号203变为“1”。
编码数据输出模式信号204是用于指定操作数检测信号203是否应该包括在用于生成编码数据输出选择信号211的条件中的模式信号。当编码数据输出模式信号204指示“1”时,操作数检测信号203不应该包括在用于生成编码数据输出选择信号211的条件中。
编码电路210接收命令发布信号201、命令执行条件建立信号202、操作数检测信号203、以及编码数据输出模式信号204,并且向包生成电路260输出编码数据输出选择信号211、编码数据212、以及该编码数据212的位计数值213。该编码电路210的细节如先前在第二实施例中所描述。
包生成电路260接收编码数据输出选择信号211、编码数据212、编码数据212的位计数值213、操作数检测信号203、以及操作数数据205,并且向跟踪状态输出端150输出跟踪包输出状态信号131,同时向跟踪数据输出端151输出跟踪包132。
图23是示出包生成电路260的内部布置的方框图。在图23中,包生成电路260包括有效位计数/字节计数生成电路263、包ID存储电路266、跟踪数据汇集电路268、FIFO写入控制电路269、以及FIFO队列273。
有效位计数/字节计数生成电路263根据位计数值213的三个最小有效位来生成有效位计数264,并根据等于或者大于位计数值213的第四最小有效位的值来生成有效字节计数265。包ID存储电路266存储作为常量的包ID267。
跟踪数据汇集电路268接收包ID 267、操作数数据205、编码数据212、有效位计数264、操作数检测信号203、编码数据输出选择信号211、以及位计数值213。当编码数据输出选择信号211指示“1”时,跟踪数据汇集电路268生成包括包ID 267、有效位计数264、和编码数据212的数据字符串,将这个数据字符串分为字节,并一个字节接一个字节地输出该数据作为跟踪数据271。
此外,当操作数检测信号203指示“1”时,跟踪数据汇集电路268生成包括包ID 267、操作数数据205和位计数值213的数据字符串,将这个数据字符串分为字节,并一个字节接一个字节地输出该数据作为跟踪数据271。
另外,当输出这些输出的第一有效数据作为跟踪数据271时,跟踪数据汇集电路268也输出值为“1”的跟踪数据输出状态信号270。然后,当输出第二和接下来的跟踪数据271时,将跟踪数据输出状态信号270设置为“0”。
FIFO写入控制电路269接收有效字节计数265、编码数据输出选择信号211、以及操作数检测信号203,并生成将被传送到FIFO队列273的写入使能信号272,其中FIFO队列273处理跟踪数据输出状态信号270和跟踪数据271。
FIFO队列273接收跟踪数据输出状态信号270、跟踪数据271、以及写入使能信号272,移位与跟踪输出的参考时钟同步地接收的数据,并以输入跟踪包输出状态信号231和跟踪包232的顺序来输出跟踪包输出状态信号231和跟踪包232。
在图5中示出了在包ID存储电路266中存储的包ID;并且当输出编码数据212作为跟踪数据时,在图6中示出了用于由FIFO队列273输出的跟踪包的格式。先前在相关的示例以及第一和第二实施例中说明了包ID的内容和该格式。
图24是示出当输出操作数数据205作为跟踪数据时由FIFO队列273输出的跟踪包的格式的图。
在图24中,“时钟”表示用于跟踪输出的参考时钟,而TRCDAT[7:0]表示被输出到跟踪数据输出端151的跟踪包132的格式,且TRCDAT[7:0]包括Operand Data[31:0],指示操作数数据205的值;以及OD,指示包ID的值;以及操作数生成位置,指示操作数生成位置。
如图24所示,与“时钟”同步地,一个字节接一个字节地相继输出OD、操作数数据[31:0]、以及操作数生成位置,作为跟踪数据。
在参考图25至28的同时,现在将说明主计算机3从具有上述布置的处理器1中获得跟踪数据、并追溯执行历史的状态。如在第二实施例中,采用用于图17的试样程序的命令,同时图15中的比较器218所使用的比较值是“10”。
在图17中,当在地址0x50000000开始执行命令时,与CPU 200的操作频率同步地,命令发布信号201随后改变到“1111111111”,且与此同时,命令执行条件建立信号202改变到“1110111010”。
此外,当执行在地址0x50000018上的命令7时,将操作数检测信号203设置到“1”,并输出“0xAAAAAAAA”作为操作数数据205。在这种情况下,编码数据输出模式信号204的设立值为“1”。
当接收到这些信号时,编码电路210的移位寄存器216所输出的编码数据212改变到“1110111010”。此外,当把命令发布信号201的值当作计数使能信号时,将计数器215的位计数值213增加到“0xa”。当位计数值213到达“0x7”时,执行命令7,且操作数检测信号203改变到“1”。
在这个实施例中,由于编码数据输出模式信号204的反相信号=“0”屏蔽了操作数检测信号203=“1”,且与操作数检测一致的编码数据输出选择信号217被设置到“0”,所以,编码数据输出选择信号211在此时变为“0”。并且当计数器215的位计数值213增加到“0xa”时,计数匹配信号220改变到“1”,且编码数据输出选择信号211变为“1”。
当操作数检测信号203变为“1”时,根据等于或者大于(操作数数据的位计数“0x20”+包ID的位计数“0x2”+操作数生成位置的位计数“0x5”)的第四最小有效位的值来输出值为“0b100”的有效字节计数265。
当接收到有效字节计数265时,包生成电路260的跟踪数据汇集电路268从最小有效位开始布置包ID=OD的值“0b11”、操作数数据=“0xAAAAAAAA”、操作数生成位置=“0b00111”(当操作数检测信号203是“1”时的位计数值213)。
在操作数检测信号203的值改变到“1”之后,与用于跟踪输出的参考时钟同步,FIFO写入控制电路269五次(=有效字节计数265+1)把将被传送到FIFO队列273的写入使能信号272设置到“1”。
根据该写入使能信号272,一个字节接一个字节地五次将跟踪数据汇集电路268所生成的数据输出到FIFO队列273。此外,当输出该数据的第一字节时,输出值为“1”的跟踪数据输出状态信号270。
当编码数据输出选择信号211改变到“1”时,根据(计数值“0xa”+NV的位计数“0xa”+包ID的位计数“0x2”)的三个最小有效位来输出值为“0b111”的有效位计数264,并根据等于或者大于第四最小有效位的值来输出值为“0b1”的有效字节计数265。
在接收到有效位计数264时,包生成电路260的跟踪数据汇集电路268从最小有效位上开始来布置包ID=TF的值“0b01”、NV=有效位计数234的值“0b111”以及Taken Flag=“0b11011010”。
在编码数据输出选择信号211的值改变到“1”之后,与用于跟踪输出的参考时钟同步地,FIFO写入控制电路269两次(=有效字节计数265+1)把将被传送到FIFO队列273的写入使能信号272设置到“1”。
根据该写入使能信号272,一个字节接一个字节地两次将跟踪数据汇集电路268所生成的数据输出到FIFO队列273。当输出该数据的第一字节时,输出值为“1”的跟踪数据输出状态信号270。
FIFO队列273接收该数据和跟踪数据输出状态信号270,并输出跟踪包132和跟踪包输出状态信号131。图25是示出当执行图17所示的试样程序时的跟踪包的图。
主计算机3接收图25所示的包,并首先从TRCDAT[1:0]获得包ID=OD的信息。然后获得操作数数据DATA=0xAAAAAAAA和操作数生成位置POSITION=7。
然后,分别从TRCDAT[1:0]和TRCDAT[4:2]中获得包ID=TF和NV=7。由于NV=7,所以获得编码数据FLAG=0b1110111010。图26是示出主计算机3以这种方式从处理器1获得的跟踪信息的图。
现在将给出用于下面处理的说明,其中主计算机3通过采用图17的试样程序和图26的跟踪信息而追溯执行历史。图27是示出用于主计算机3所执行的执行历史追溯处理的算法的流程图。
在图27中,在步骤3000中,将IP指派到地址0x50000000,将TP指派到地址0x0,以及将ETP指派到地址0x2。由于TP≠ETP,所以程序控制跳过步骤3001并进入到步骤3002,并且由于跟踪消息是OD,所以前进到步骤3008和3009。然后,将信息OD=0xAAAAAAAA和POSITION=7存储到主计算机3的存储器中,且将TP指派到地址0x1。此后程序控制返回到步骤S3001。
由于TP≠ETP,所以程序控制进入到步骤3002,并且由于跟踪消息是TF,所以前进到步骤3004和3005。由于标记的值为“1”,所以在地址0x50000000上显示命令1,且将IP增加到地址0x50000004。
由于有效标记仍旧保留且下一个标记的值为“1”,所以在地址0x50000004上显示命令2,并将IP增加到地址0x50000008。相似地,在地址0x50000008上显示命令3,并且由于有效标记仍旧保留且下一个标记的值为“0”,所以将下一个命令5的地址0x50000010分配到IP。
由于有效标记仍旧保留且下一个标记的值为“1”,所以在地址0x50000010上显示命令5,并将IP增加到地址0x50000014。同样,在地址0x50000014和地址0x50000018上分别显示命令6和命令7。
由于有效标记仍旧保留且下一个标记的值为“0”,所以将下一个命令9的地址0x50000020分配到IP。由于有效标记仍旧保留且下一个标记的值为“1”,所以在地址0x50000020上显示命令9,并且由于下一个标记的值为“0”,所以没有显示命令,并增加了地址。
由于完成了对有效标记的数目的处理,所以结合命令7显示主计算机3的存储器中存储的操作数数据OD=0xAAAAAAAA,其中命令7对应于操作数生成位置POSITION=7,并且从该存储器中擦除这个操作数信息。随后,将TP指派到地址0x2,且程序控制返回到步骤3001。然后,由于确定了TP=ETP,所以终止了执行历史追溯处理。
图28是示出通过这个处理获得的执行历史的图。在图28中,示出了“跟踪存储器地址”、“跟踪消息”、“跟踪包”、“地址”、以及“追溯的执行历史”,并且可以确认已经追溯图17所示的试样程序。
如上所述,当生成了操作数信息时,与操作数数据的跟踪包一起输出编码标记的位计数值。因此,即使在编码电路在生成操作数信息时没有输出编码数据作为跟踪数据的情况下,也可以跟踪指示用于生成命令操作数信息的信息。
根据本发明的处理器和开发支持设备是用于在外部分析和评估处理器的操作的有用设备。
权利要求
1.一种处理器,包括静态调度命令去除单元,在接收到命令发布信号、命令执行条件建立信号、和与静态调度一致的执行确定信号时,去除静态调度命令;编码单元,在接收到通过该静态调度命令去除单元获得的命令执行条件建立信号和命令发布信号时,对用于除静态调度命令之外的命令的执行历史进行编码;以及数据包生成器,在接收到通过编码单元获得的编码数据时,生成跟踪包。
2.根据权利要求1的处理器,其中从通过该静态调度命令去除单元获得的命令执行条件建立信号和命令发布信号中排除该静态调度命令。
3.一种处理器,包括编码单元,在接收到命令发布信号、命令执行条件建立信号、操作数检测信号和操作数数据时,对命令的执行历史进行编码;数据包生成器,在接收到通过编码单元获得的编码数据时,生成跟踪包;以及控制器,当生成操作数检测信号时,立即输出操作数数据包并停止根据根据权利要求1的执行标记包的输出。
4.一种处理器,包括编码单元,在接收到命令发布信号、命令执行条件建立信号、操作数检测信号和操作数数据时,对命令的执行历史进行编码;检测源程序中的操作数位置的单元;以及数据包生成器,接收通过编码单元获得的编码数据和有关操作数位置的信息,并生成包括关于操作数位置的信息的跟踪包。
5.一种开发支持设备,包括计算机,采用根据权利要求1的处理器所生成的跟踪包,并采用该处理器所执行的源程序,来执行追溯并显示该处理器的执行历史的执行历史追溯程序;以及用于无条件地显示源程序中通过静态调度来确定其执行的命令的单元,用于把源程序中不通过静态调度来确定其执行的命令和在跟踪包中的信息关联起来,当跟踪包中的相关信息指示已经建立了执行条件时显示命令,而当跟踪包中的相关信息指示没有建立执行条件时不显示命令。
6.一种开发支持设备,包括计算机,采用根据权利要求3的处理器所生成的跟踪包和该处理器执行的源程序,来执行追溯并显示该处理器的执行历史的执行历史追溯程序。
7.一种开发支持设备,包括计算机,其采用根据权利要求4的处理器所生成的跟踪包和该处理器执行的源程序,来执行追溯并显示该处理器的执行历史的执行历史追溯程序。
全文摘要
一种处理器包括静态调度命令去除单元,在接收到命令发布信号、命令执行条件建立信号、和指示预先确定其执行的命令的静态调度的执行确定信号时,去除静态调度命令;编码单元,在接收到都通过静态调度命令去除单元获得的排除了静态调度命令的命令执行条件建立信号和排除了静态调度命令的命令发布信号时,对排除了静态调度命令的命令的执行历史进行编码;以及数据包生成单元,在接收到通过编码单元获得的编码数据时,生成跟踪包。该跟踪信息由开发支持设备处理。
文档编号G06F11/36GK1766849SQ20051011840
公开日2006年5月3日 申请日期2005年10月25日 优先权日2004年10月25日
发明者冈本笃志, 三上勉, 生形笃 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1