比较处理器指令集操作模式的调试电路制造技术

技术编号:5419526 阅读:254 留言:0更新日期:2012-04-11 18:40
一种处理器操作以执行两个或两个以上指令集,每一指令集处于不同的指令集操作模式。当执行每一指令时,调试电路将当前指令集操作模式与由程序设计员发送的目标指令集操作模式进行比较,并输出其匹配的警告或指示。所述警告或指示可额外取决于遵循预定目标地址范围内的指令地址。所述警告或指示可包括暂停执行的断点信号,且/或其作为所述处理器的外部信号而输出。可额外输出所述处理器在所述指令集操作模式下检测到匹配的指令地址。另外或替代地,所述警告或指示可包括开始或停止追踪操作、引起异常,或任何其它已知调试器功能。

【技术实现步骤摘要】
【国外来华专利技术】比较处理器指令集操作模式的调试电路
本专利技术大体上涉及处理器的领域,且明确地说涉及一种经由调试电路来调试处理器上的代码的系统和方法,其包含考虑处理器指令集操作模式。
技术介绍
现代处理器是极其复杂的系统。大多数现代处理器采用管线结构,其中各具有多个执行步骤的连续指令在执行时重叠。许多称为“超标量”处理器的处理器包含用于并行指令执行的两个或两个以上单独管线。为了避免管线中由于分支指令造成的停止,大多数处理器采用各种形式的分支预测,其中当分支被预测为被采取时推测性地取出指令和执行指令。为了改进性能,许多现代处理器将逻辑寄存器地址与相应的物理存储器存储寄存器分离,这称为寄存器重命名。为了向程序提供无限、快速存储器的错觉,许多处理器在虚拟地址空间中执行代码,从而在数据遍历存储器层级(例如,寄存器、高速缓冲存储器、主存储器)时将地址转译为一个或一个以上物理地址空间。由于此复杂性,现代处理器内的代码执行非常难以准确地跟踪和验证。明确地说,异常(anomaly)可能非常难以调试。另外,在现代处理器上执行的软件本身极其复杂。随着精简指令集计算(RISC)处理器结构的出现,大部分计算和逻辑计算复杂性从处理器指令迁移到优化编译器。也就是说,编译器从相对较小的处理器指令集构建复杂的操作,每一处理器指令均针对特定、具体功能而优化。对于给定计算任务,这导致更冗长且复杂的指令序列,包含(例如)逻辑、算术、加载/存储和分支操作。此复杂的代码在错误引起异常程序行为时可能难以调试。为了辅助调试在复杂处理器上执行的复杂代码的使人畏缩的任务,将调试工具构建到许多处理器中。这些调试工具可包括用于识别特定指令和/或数据模式的地址和数据比较器。调试工具可额外包含地址范围比较器,使得调试或追踪可限于预定代码段。其它调试工具可包含计数器、定序器等,以提供在指定条件(其指定断点和/或追踪触发)时的灵活性。追踪信息可在芯片外提供,例如经由专门总线提供,或可存储在专门芯片上缓冲器中。断点可触发一个或一个以上外部信号,例如以装备和/或触发逻辑分析器或照亮LED;可引起异常(exception),从而将代码执行分支到调试例行程序;或可简单地暂停执行,从而允许检查各种寄存器和高速缓冲存储器的内容。用使对处理器性能和功率消耗的影响减到最小的方式,将这些在正常处理器执行期间不予利用的调试工具设计到处理器电路中。程序设计员可在根据相关指令集编码执行指令之前明确地设置正确的指令集操作模式。然而,错误的软件有时可能会分支到既定在处于一个指令集操作模式时执行的特定指令地址,而同时处理器实际上是处于某个其它指令集操作模式。在此情况下,处理器可能会试图使用不正确的指令集解码来执行所述地址处的指令,从而导致不正确的结果。举例来说,一些版本的ARM处理器结构包含至少两个指令集操作模式:32位ARM模式和16位拇指(Thumb)模式。表1列举ARM指令的代码片断:000096F0cpyr4,r0000096F4bl0xA8A0000096FCcpyr1,r400009700ldrr0,[r0,#0x8]表1:ARM模式指令编码表2列举在拇指模式下解译的相同代码:000096F0andr0,r0000096F2b0x9A36000096F4lslr1,r5,#0x11000096F6add.wr0,r0,r4,lsl#0x4000096FAb0x9A3E000096FClslr0,r1,#0x0000096FEb0x922200009700andr0,r2表2:拇指模式指令编码尤其注意96F2、96FA及96FE处的分支指令。由于不正确的分支,可能难以确认错误导致在如表2中的拇指模式下解译表1的ARM代码的点,且因此难以调试错误。此困难之所以出现,是因为现有技术调试电路不包含作为对触发断点、启始追踪等的逻辑的输入的处理器指令集操作模式。支持两个或两个以上操作“模式”(例如,管理员和用户模式,或真实和受保护模式)的大多数处理器通过引起异常并分支到模式切换例行程序而在模式之间切换。通过设置断点或在模式切换例行程序的指令地址上开始追踪而使用现有技术调试工具和软件来容易地检测此操作。在不引起异常的前提下切换指令集操作模式的处理器是难以用不包含作为触发断点、启始追踪等时的考虑因素的处理器指令集操作模式的现有技术调试工具诊断的代码行为的一个实例。
技术实现思路
根据一个或一个以上实施例,操作以执行两个或两个以上指令集的处理器中的调试电路识别处理器从一个指令集操作模式切换成不同的指令集操作模式的地址,并输出模式切换的警告或指示。所述警告或指示可包括暂停执行的断点信号,且/或作为处理器的外部信号而输出。可额外输出处理器切换指令集操作模式的指令地址。或者,所述警告或指示可包括开始或停止追踪操作、引起异常,或任何其它已知调试器功能。一个实施例涉及一种在具有至少两个不同指令集操作模式的处理器上调试包括多个指令的软件代码的方法。在执行任何代码指令之前接收目标指令集操作模式。执行代码指令,且针对所执行的每一指令,将当前处理器指令集操作模式与目标指令集操作模式进行比较。如果当前处理器指令集操作模式与目标指令集操作模式匹配,则触发警告。另一实施例涉及一种在具有至少第一和第二指令集操作模式的处理器上执行软件的方法。识别处理器从第一指令集操作模式切换成第二指令集操作模式的地址,并响应于所述识别而触发警告。又一实施例涉及一种操作以根据两个或两个以上指令集编码执行指令的处理器,每一指令集编码处于不同的指令集操作模式。所述处理器包含当前指令集操作模式指示符,和操作以存储目标指令集操作模式指示符的数据存储位置。所述处理器还包含:执行单元,其操作以根据当前指令集操作模式来执行指令;以及比较电路,其操作以在执行每一指令后将当前指令集操作模式与目标指令集操作模式进行比较,并在当前指令集操作模式与目标指令集操作模式匹配的情况下输出指示。再一实施例涉及一种操作以执行两个或两个以上指令集编码的处理器,每一指令集编码处于不同的指令集操作模式。所述处理器包含比较电路,其操作以检测指令集操作模式的变化,并响应于所述检测而输出指令集操作模式变化的指示和变化发生的指令地址。附图说明图1是处理器的功能方框图。图2是包含调试电路的处理器管线的功能方框图。图3是诊断/调试过程的流程图。具体实施方式图1描绘处理器10的功能方框图。处理器10根据控制逻辑14在指令执行管线12中执行指令。控制逻辑14维持程序计数器(PC)15,并设置或清除一个或一个以上状态寄存器16中的位以指示(例如)当前指令集操作模式、关于算术运算和逻辑比较的结果(零、进位、相等、不相等)的信息等。在一些实施例中,管线12可以是具有多个并行管线的超标量设计。管线12也可称为执行单元。通用寄存器(GPR)堆20提供可由管线12存取且包括存储器层级的顶部的寄存器。在不同的指令集操作模式下执行来自至少两个指令集的指令的处理器10额外包含调试电路18,其操作以在执行每一指令后将至少一预定目标指令集操作模式与当前指令集操作模式进行比较,并提供两者之间匹配的指示。下文更详细描述调试电路18。管线12从指令高速缓冲存储器(I-高速缓冲存储器)26取出指令,其中存储器地址转译和许可由指令侧转译后本文档来自技高网
...
比较处理器指令集操作模式的调试电路

【技术保护点】
一种在具有至少两个不同指令集操作模式的处理器上调试包括多个指令的软件代码的方法,其包括: 在执行任何代码指令之前接收目标指令集操作模式; 执行代码指令,且针对所执行的每一指令,将当前处理器指令集操作模式与所述目标指令集操作模式进 行比较;以及 如果所述当前处理器指令集操作模式与所述目标指令集操作模式匹配,则触发警告。

【技术特征摘要】
【国外来华专利技术】US 2006-8-9 11/463,3791.一种在具有至少两个不同指令集操作模式的处理器上调试包括多个指令的软件代码的方法,其包括:在执行任何代码指令之前接收目标指令集操作模式;执行代码指令,且针对所执行的每一指令,将当前处理器指令集操作模式与所述目标指令集操作模式进行比较;以及如果所述当前处理器指令集操作模式与所述目标指令集操作模式匹配,则触发警告。2.根据权利要求1所述的方法,其中所述警告包括暂停指令执行。3.根据权利要求1所述的方法,其中所述警告包括控制追踪操作。4.根据权利要求1所述的方法,其中所述警告包括引起异常。5.根据权利要求1所述的方法,其中所述警告包括输出指示所述当前处理器指令集操作模式与所述目标指令集操作模式之间的匹配的信号。6.根据权利要求1所述的方法,其中所述警告包括输出所述当前处理器指令集操作模式与所述目标指令集操作模式匹配所针对的指令的地址。7.根据权利要求1所述的方法,其进一步包括:在执行任何代码指令之前接收目标地址范围;针对所执行的每一指令,将当前指令地址与所述目标地址范围进行比较;以及仅在所述当前处理器指令集操作模式与所述目标指令集操作模式匹配且所述当前指令地址在所述目标地址范围内的情况下,才触发所述警告。8.一种在具有至少两个不同的指令集操作模式的处理器上执行软件的方法,其包括:针对所执行的每一指令,将当前处理器指令集操作模式与目标指令集操作模式进行比较,并且将当前指令地址与目标地址范围比较;以及如果所述当前处理器指令集操作模式与所述目标指令集操作模式相匹配,并且所述当前指令地址与所述目标地址范围相匹配,则识别所述当前处理器指令集操作模式与所述目标指令集操作模式相匹配的地址;以及触发警告。9.根据权利要求8所述的方法,其中所述警告包括暂停指令执行。10.根据权利要求8所述的方法,其中所述警告包括控制追踪操作。11.根据权利要求8所述的方法,其中所述警告包括引起异常。12.根据权利要求8所述的方法,其中所述警告包括输出指示指令集操作模式的变化的信号。13.根据权利要求8所述的方法,其中所述警告包括输出所识别的指令的所述地址。14.一种操作以根据两个或两个以上指令集编码执行指令的处理器,每一指令集编码处于不同的指令集操作模式,所述处理器包括:状态寄存器,其操作以存...

【专利技术属性】
技术研发人员:凯文查尔斯伯克布莱恩迈克尔斯坦普尔达朗欧仁施特雷特凯文艾伦萨普莱斯利马克德布鲁因纳比勒阿米尔里兹克托马斯安德鲁萨托里乌斯罗德尼韦恩史密斯
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1