比较处理器指令集操作模式的调试电路的制作方法

文档序号:12786264阅读:156来源:国知局
比较处理器指令集操作模式的调试电路的制作方法与工艺

本申请是国际申请号为PCT/US2007/075194、申请日为2007年8月3日、发明名称为“比较处理器指令集操作模式的调试电路”的PCT申请进入中国国家阶段后申请号为200780029330.1的中国发明专利申请的分案申请。

技术领域

本发明大体上涉及处理器的领域,且明确地说涉及一种经由调试电路来调试处理器上的代码的系统和方法,其包含考虑处理器指令集操作模式。



背景技术:

现代处理器是极其复杂的系统。大多数现代处理器采用管线结构,其中各具有多个执行步骤的连续指令在执行时重叠。许多称为“超标量”处理器的处理器包含用于并行指令执行的两个或两个以上单独管线。为了避免管线中由于分支指令造成的停止,大多数处理器采用各种形式的分支预测,其中当分支被预测为被采取时推测性地取出指令和执行指令。为了改进性能,许多现代处理器将逻辑寄存器地址与相应的物理存储器存储寄存器分离,这称为寄存器重命名。为了向程序提供无限、快速存储器的错觉,许多处理器在虚拟地址空间中执行代码,从而在数据遍历存储器层级(例如,寄存器、高速缓冲存储器、主存储器)时将地址转译为一个或一个以上物理地址空间。由于此复杂性,现代处理器内的代码执行非常难以准确地跟踪和验证。明确地说,异常(anomaly)可能非常难以调试。

另外,在现代处理器上执行的软件本身极其复杂。随着精简指令集计算(RISC)处理器结构的出现,大部分计算和逻辑计算复杂性从处理器指令迁移到优化编译器。也就是说,编译器从相对较小的处理器指令集构建复杂的操作,每一处理器指令均针对特定、具体功能而优化。对于给定计算任务,这导致更冗长且复杂的指令序列,包含(例如)逻辑、算术、加载/存储和分支操作。此复杂的代码在错误引起异常程序行为时可能难以调试。

为了辅助调试在复杂处理器上执行的复杂代码的使人畏缩的任务,将调试工具构建到许多处理器中。这些调试工具可包括用于识别特定指令和/或数据模式的地址和数据比较器。调试工具可额外包含地址范围比较器,使得调试或追踪可限于预定代码段。其它调试工具可包含计数器、定序器等,以提供在指定条件(其指定断点和/或追踪触发)时的灵活性。追踪信息可在芯片外提供,例如经由专门总线提供,或可存储在专门芯片上缓冲器中。断点可触发一个或一个以上外部信号,例如以装备和/或触发逻辑分析器或照亮LED;可引起异常(exception),从而将代码执行分支到调试例行程序;或可简单地暂停执行,从而允许检查各种寄存器和高速缓冲存储器的内容。用使对处理器性能和功率消耗的影响减到最小的方式,将这些在正常处理器执行期间不予利用的调试工具设计到处理器电路中。

程序设计员可在根据相关指令集编码执行指令之前明确地设置正确的指令集操作模式。然而,错误的软件有时可能会分支到既定在处于一个指令集操作模式时执行的特定指令地址,而同时处理器实际上是处于某个其它指令集操作模式。在此情况下,处理器可能会试图使用不正确的指令集解码来执行所述地址处的指令,从而导致不正确的结果。

举例来说,一些版本的ARM处理器结构包含至少两个指令集操作模式:32位ARM模式和16位拇指(Thumb)模式。表1列举ARM指令的代码片断:

表1:ARM模式指令编码

表2列举在拇指模式下解译的相同代码:

表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取出指令,其中存储器地址转译和许可由指令侧转译后备缓冲器(ITLB)28管理。从数据高速缓冲存储器(D-高速缓冲存储器)30存取数据,其中存储器地址转译和许可由主转译后备缓冲器(TLB)32管理。在各种实施例中,ITLB 28可包括TLB 32的一部分的副本。或者,ITLB 28与TLB 32可整合。类似地,在处理器10的各种实施例中,I-高速缓冲存储器26与D-高速缓冲存储器30可整合或合并。I-高速缓冲存储器26和/或D-高速缓冲存储器30中的未中(miss)引起存储器接口34存取主(芯片外)存储器38、40。存储器接口34可以是对总线互连42的主控输入(master input),所述总线互连42实施到一个或一个以上存储器装置38、40的共享总线。额外主控装置(未图示)可额外连接到总线互连42。

处理器10可包含输入/输出(I/O)接口44,其可以是外围总线上的主控装置,I/O接口44可跨所述外围总线存取各种外围装置48、50。所属领域的技术人员将认识到,处理器10的许多变化是可能的。举例来说,处理器10可包含用于I-高速缓冲存储器26和D-高速缓冲存储器30中的任一者或其两者的二级(L2)高速缓冲存储器。另外,处理器10中描绘的功能区块中的一者或一者以上可从特定实施例中省略。可驻存在处理器10中的其它功能区块(例如,JTAG控制器、指令预解码器、分支目标地址高速缓冲存储器等)与本发明的描述没有密切关系,且为了清楚起见而将其省略。

图2描绘调试电路18的一个实施例的功能方框图。调试电路18包含目标指令集操作模式寄存器52、地址范围开始地址寄存器54和地址范围结束地址寄存器56。程序设计员在诊断/调试操作之前经由诊断软件加载寄存器52、54、56。在每一指令的执行期间将写入到目标指令集操作模式寄存器52的值与当前处理器指令集操作模式进行比较,以触发断点、追踪功能或其它警告。开始地址寄存器54和结束地址寄存器5456的值分别是调试电路18将监视以寻找当前指令集操作模式与目标指令集操作模式之间的匹配的目标地址范围的开始和结尾。

所属领域的技术人员将容易认识到的是,调试电路18可包含额外可定制参数和额外功能区块,从而启始断点、追踪等以在各种各样的条件下进行触发。为了清楚起见已从图2省略了这些参数和区块,但一般来说其可包含此项技术中已知的所有调试电路参数和功能性。

在诊断/调试运行之前,程序设计员加载开始地址寄存器54和结束地址寄存器56以界定目标地址范围,其可从单个地址到被测试的代码的整个地址范围变动。在其它实施例中,可提供多个开始和结束地址寄存器以界定多个目标地址范围。程序设计员额外加载目标指令集操作模式寄存器52。举例来说,在完全在ARM模式下执行代码的ARM处理器的情况下,例如,如果处理器10在拇指模式下在由寄存器54、56界定的地址范围内执行指令,则程序设计员可在寄存器52中加载指示拇指模式的值,以设置引起调试电路18暂停执行的断点。

在诊断/调试操作期间,在比较逻辑(例如,与门58)中将存储在目标指令集操作模式寄存器52中的值与指示处理器10的当前指令集操作模式的状态寄存器位进行比较。举例来说,在ARM处理器10中,可监视当前程序状态寄存器(CPSR)16的位5。仅当处理器10的当前指令集操作模式与由目标指令集操作模式寄存器52指示的指令集操作模式匹配时,才将断言比较逻辑58的输出60。

在处理器10在不同的指令集操作模式下执行来自两个以上指令集的指令的实施例中,目标指令集操作模式寄存器52和CPSR(或其它状态寄存器)16的模式指示符位将包括多位值,且比较逻辑58可包含例如解码器等额外电路。在各种实施例中,可利用当前指令集操作模式的其它指示(例如指令解码逻辑的输出)代替CPSR 16。

同时,在地址比较逻辑68中将PC 15的当前值与地址范围寄存器54、56进行比较。每当PC 15的当前值属于目标地址范围内时,断言地址比较逻辑68的输出70。在各种实施例中,“当前”指令地址的指示可视要求或需要而不同于PC 15。举例来说,地址比较电路68可在管线12的解码级、执行级或任何其它管线级中比较指令的地址。另外,可使用更动态的地址,例如管线12中待交付执行的最后指令的地址。

地址比较逻辑68的输出70与指令集操作模式指示符比较逻辑58在与门72处进行与运算,以产生指示在目标地址范围内发生的当前指令集操作模式与目标指令集操作模式之间的日匹配(day match)的输出20。在一个实施例中,提供输出20作为对处理器的输出(见图1)。此输出20可装备和/或触发逻辑分析器,照亮LED,或触发某一其它动作或警报。在一个实施例中,如图1中所描绘,指令集操作模式匹配指示符输出20可包括对控制器14的输入,以暂停处理器10的执行。

在一个实施例中,指令集操作模式匹配指示符输出20可初始化或终止指令追踪操作,其中追踪信息引导到处理器10的输出引脚或存储在芯片上追踪缓冲器(未图示)中。在一个实施例中,如图2中所描绘,指令集操作模式匹配指示符输出20可触发指令集操作模式匹配地址寄存器74,从而捕获PC 15的值,且因此捕获可能在当前指令集操作模式与目标指令集操作模式之间检测到匹配的指令的地址。这可能在检测从一个指令集操作模式到另一指令集操作模式的变化时尤其有价值。此寄存器74的输出76可路由到处理器10的引脚以用于外部检查。

在一个实施例中,指令集操作模式匹配指示符输出20可引起异常,从而将代码执行分支到预定义的例行程序。此指令集模式匹配例行程序可(例如)读取指令集操作模式匹配地址寄存器74。一般来说,指令集操作模式匹配指示符输出20可视要求或需要触发任何已知调试器操作。

图3描绘根据本发明的一个或一个以上实施例调试代码的方法。在方框78处开始,程序设计员初始化调试电路寄存器(方框80)。这可包括(例如)加载目标指令集操作模式寄存器52,以及通过加载开始地址寄存器54和结束地址寄存器56而设置目标地址范围。可视要求或需要初始化额外调试电路寄存器(未图示)。

程序设计员接着开始执行待调试的代码(方框82),从而在代码序列中连续取出和执行下一指令(方框84)。不管地址如何,如果处理器10的当前指令集操作模式不与程序设计员在目标指令集操作模式寄存器52中设置的指令集操作模式匹配(方框86),那么取出和执行下一指令(方框84)直到待调试的代码的结尾为止(方框88),在此情况下方法在方框90处停止。

如果在执行指令(方框84)后,指令地址在预定地址范围内,且当前指令集操作模式与程序设计员在目标指令集操作模式寄存器52中设置的指令集操作模式匹配(方框86),那么调试电路断言输出20且可采取程序设计员指定的任何数目的动作。

举例来说,调试电路输出20可引起处理器10采取异常,从而将代码执行分支到指令集操作模式匹配例行程序(方框92)。调试电路输出20可引起管线控制器14暂停执行(方框94),从而允许程序设计员检查各种寄存器、高速缓冲存储器线等的内容。调试电路18可在外部断言输出20(方框96),所述输出20可用于使逻辑分析器待命或触发逻辑分析器、点亮LED等。调试电路18可额外输出指令集操作模式匹配地址以用于外部检查(方框98)。调试电路18可开始或停止追踪操作(方框100)。尽管描绘为替代方案,但在给定实施例中,调试电路18可执行方框92-96中的两者或两者以上。一般来说,调试电路18可在已检测到当前指令集操作模式与目标指令集操作模式之间的匹配后采取此项技术中已知对在处理器10上调试代码有益的任何动作。

如本文所使用,术语“指令集”是指处理器10借以将指令数据(例如,I高速缓冲存储器线的内容)解译为可执行指令的编码集。术语“指令集操作模式”是指处理器10的根据特定指令集编码来解译指令数据的可识别的操作模式。明确地说,“指令集操作模式”有别于与许可(例如,管理员与用户模式)、存储器寻址(例如,真实与受保护模式)等有关的已知处理器操作“模式”。

尽管已相对于本发明的特定特征、方面和实施例描述本发明,但将明白,在本发明的广泛范围内可能有许多变更、修改和其它实施例,且因此所有变更、修改和实施例应视为在本发明的范围内。因此当前实施例应在所有方面解释为说明性而不是限定性的,且希望在所附权利要求书的含义和等效范围内的所有变化均包含在其中。

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