用以预加载来自除当前执行的指令集之外的指令集的指令的系统、方法及软件的制作方法

文档序号:6476600阅读:194来源:国知局
专利名称:用以预加载来自除当前执行的指令集之外的指令集的指令的系统、方法及软件的制作方法
技术领域
本发明大体上涉及处理器领域,且具体来说,涉及一种用于根据除当前执行的指令 集之外的指令集来预加载指令和对所述预加载的指令进行预解码的系统及方法。
背景技术
微处理器在各种各样的应用中执行计算任务。几乎始终需要改进的处理器性能以通 过软件增强而允许较快的操作和/或增加的功能性。通过利用架构上的进步(例如RISC 架构)和半导体技术上的进步两者,许多现代处理器以远高于存储器芯片(例如DRAM 和SDRAM)的时钟速度执行。为了使相对缓慢的存储器存取的代价最小化,这些处理 器利用层级式存储器结构,其中快速的芯片上高速缓冲存储器存储新近存取的数据和指 令的本地拷贝,且/或所述处理器(经由软件)预期不久的存取。
预期对指令高速缓冲存储器的加载的一个实例是预加载指令(例如,ARM指令 PLI)。预加载指令在指令执行之前将所述指令加载到指令高速缓冲存储器中。编程人员 可稍微在已知或预期的分支(例如对目标的子例程调用)前面将预加载指令插入到码中。 预加载指令将目标处的指令加载到指令高速缓冲存储器中,使得当所述分支执行时,目 标处的指令在高速缓冲存储器中可用于立即执行。本文中将待响应于预加载指令而加载 到高速缓冲存储器中的指令称为预加载的指令。
大多现代处理器采用管线式架构,其中循序的指令在执行时重叠,以便增加总处理 器处理量。维持通过管线顺利执行对于实现高性能至关重要。此项技术中已知的一种管 线优化技术是预解码指令。在从存储器读取指令时对所述指令进行检查、对其进行部分 解码,且将关于所述指令的一些信息(称为预解码信息)与相关联的指令一起存储在指 令高速缓冲存储器中。当稍后将指令从高速缓冲存储器中获取到管线中时,也获取预解 码信息,且使用预解码信息来辅助对指令进行完全解码。预解码信息可例如识别分支和 浮点指令,识别可变长度指令集架构中的指令的长度,或在管线中执行指令时有用的其它信息。
有些现代处理器能够根据两种或两种以上指令集编码来执行指令。举例来说,处理 器可具有32位原始指令集,且另外包含执行Java字节码的能力。举另一实例,ARM处 理器架构的若干版本在ARM指令集操作模式下执行32位ARM指令编码,且在Thumb 指令集操作模式下执行16位或32位Thumb指令编码。编程人员在根据相关指令集编码 在执行指令之前明确地在软件中设置适当的指令集操作模式。
当具有预解码器的常规处理器执行预加载指令时,根据当前指令集操作模式对预加 载的指令进行预解码。如果编程人员想要预加载不同于当前处理器指令集操作模式的指 令集中的指令——例如预期到写入不同指令集中的码区段的分支——则他必须在执行 预加载指令之前改变指令集模式。
举例来说,在ARM模式下执行ARM指令的程序可改变成Thumb模式并分支到只 执行Thumb指令的码段。为了用正确的预解码来预加载Thumb指令,程序必须将当前 处理器指令集操作模式从ARM切换成Thumb,用Thumb码的目标地址来执行预加载指 令,接着切换回ARM模式以执行其余ARM指令,随后才分支到Thumb码区段。
未能进入Thumb模式以执行预加载指令将致使预解码器根据ARM指令集编码对预 加载的Thumb指令进行不正确地预解码。如果发生此情况,则当从指令高速缓冲存储器 中获取预解码信息时,预解码信息将是无用的,且必须重新获取Thumb指令,从而引发 预加载原本意图避免的延迟。此外,在具有ARM/Thumb位作为标签的一部分的指令高 速缓冲存储器中,将向重新获取的Thumb指令分配单独的高速缓冲存储器线,且被不正 确地预解码成ARM指令的Thumb指令将保留在高速缓冲存储器中,从而浪费高速缓冲 存储器空间且因此降低高速缓冲存储器命中率和系统性能。
在许多处理器中,在将当前处理器指令集操作模式切换两次以执行单个预加载指令 时涉及的额外开销可能会超出预加载所预期指令集中的指令的益处。

发明内容
根据本文中所揭示和主张的一个或一个以上实施例,在第一处理器指令集操作模式 下执行的预加载指令操作以预加载不同的第二指令集中的指令。响应于指令集预加载指 示符(ISPI)根据第二指令集编码对所述指令进行预解码。在各个实施例中,可在执行 预加载指令之前设置所述ISPI,或者所述ISPI可包括预加载指令或预加载目标地址的一部分。一个实施例涉及一种预加载指令的方法。设置指令集预加载指示符,其指示多个指 令集中的一者。执行操作以将指令预加载到指令高速缓冲存储器中的指令。响应于指令 集预加载指示符根据除当前处理器指令集模式之外的指令集对所述预加载的指令进行 预解码。
另一实施例涉及一种处理器。所述处理器包含存储器接口和操作以存储指令的指令 高速缓冲存储器。所述处理器还包含指令执行单元,其操作以从指令高速缓冲存储器中 检索指令和预解码信息,且根据处理器指令集操作模式来执行所述指令,且进一步操作 以产生指令集预加载指示符。所述处理器进一步包含预解码器,其插介于指令高速缓冲 存储器与存储器接口之间,且操作以在执行操作以将指令预加载到指令高速缓冲存储器 中的指令之后,响应于指令集预加载指示符根据除当前处理器指令集操作模式之外的指 令集对指令进行预解码。
又一实施例涉及一种计算机可读媒体,其存储第一指令集中的至少一预加载指令, 所述指令操作以致使处理器将指令预加载到指令高速缓冲存储器中,其中根据不同的第 二指令集对预加载的指令进行预解码。


图1是能够根据除当前处理器指令集模式之外的指令集对预加载的指令进行预解码 的处理器的功能方框图。
图2是预加载多个指令集中的一者中的指令的方法的流程图。
具体实施例方式
图1描绘处理器110的功能方框图,处理器110执行根据多个不同指令集编码而编 码的指令。处理器110能够根据除当前处理器指令集模式之外的指令集对预加载的指令
进行预解码。
处理器110在指令执行单元112中执行指令,指令执行单元112包含管线U4, 其包括组织成管级的多个寄存器或锁存器116:以及逻辑和计算电路,例如算术逻辑单 元(ALU)(未图示)。管线根据控制逻辑118来执行指令。如图所示,管线114可为超 标量设计。通用寄存器(GPR)堆120提供包括存储器层级的顶部的寄存器。所述指令 执行单元还包含状态寄存器122,其指示例如当前处理器指令集操作模式,所述模式界 定多个指令集编码,在所述多个指令集编码下解码和执行指令。指令执行单元112还包含L2处理逻辑124, L2处理逻辑124跟踪从L2高速缓冲存储器136或主存储器138 中获取的指令和数据的特性。
管线114从指令高速缓冲存储器126中获取指令,其中由指令侧翻译旁视缓冲器 (ITLB) 128来管理存储器寻址和准许。预解码器130对从L2高速缓冲存储器136 (或 主存储器138)中获取的指令进行预解码,且将指令和预解码信息放置到指令高速缓冲 存储器126中。如本文中更详细地论述,预解码器130响应于来自指令执行单元112的 指令集预加载指示符(ISPI)根据不同于当前处理器指令集操作模式的指令集对预加载 的指令进行预解码。
从数据高速缓冲存储器132中存取数据,其中由主翻译旁视缓冲器(TLB) 134来 管理存储器寻址和准许。在各个实施例中,ITLB128可包括TLB134的一部分的拷贝。 或者,ITLB 128和TLB 134可被整合。类似地,在处理器110的各个实施例中,指令高 速缓冲存储器126和数据高速缓冲存储器132可成一体。
指令高速缓冲存储器126和数据高速缓冲存储器132中的未命中导致对2级(L2) 高速缓冲存储器136的存取,在图1中所描绘的实施例中,L2高速缓冲存储器136被整 合。L2高速缓冲存储器136中的未命中导致在存储器接口 142的控制下经由系统总线 140对主(芯片外)存储器138的存取。处理器110可包含输入/输出(I/O)接口 144, 其控制经由外围总线150对各个外围装置146、 148的存取。此项技术中众所周知,处 理器110执行从计算机可读媒体(例如存储器136或由外围装置146、 148读取的磁性 或光学媒体)中检索的指令。
所属领域的技术人员将认识到,处理器110的许多变化是可能的。举例来说,处理 器110可包含3级(L3)或额外高速缓冲存储器,且/或单独的L2高速缓冲存储器136 可专用于指令和数据高速缓冲存储器126、 132中的每一者。此外,特定实施例中可省 略处理器110中所描绘的功能块中的一者或一者以上。
处理器110根据当前处理器指令集模式来执行指令,例如在状态寄存器122中指示 当前处理器指令集模式。为了允许(以正确的预解码)预加载不同指令集中的指令,指 令执行单元112产生指令集预加载指示符(ISPI),并在执行了预加载指令后将ISPI提 供到预解码器130。如果处理器110支持两种指令集编码(例如,ARM和Thumb),则 ISPI可包括单个位。此项技术中众所周知,如果处理器110支持两种以上指令集编码, 则ISPI可包括多位值,且可包括用于每一指令集的单独旗标,或者可以二进制值对指令 集指示进行编码。可以各种方式产生ISPI。
在一个实施例中,将预加载指令目标地址的一个或一个以上未使用的地址位编码成ISPI。预加载指令(例如,PLI)将目标地址视为操作数。可将指令地址分解成例如标签、 组编号(set number)及高速缓冲存储器线偏移量。举例来说,对于32位指令虚拟地址 VA[31:0],与指令高速缓冲存储器126的CAM结构中所存储的标签对比的标签可包括 VA[31:11]。在n路组关联高速缓冲存储器中,如果标签匹配,则从返回的n个结果中选 出组编号。组编号可包括VA[10:5]。偏移量VA[4:0]对高速缓冲存储器线中的个别指令 进行寻址,所述个别指令(连同预解码信息一起)存储在指令高速缓冲存储器126的 RAM结构中。
预加载指令将固定大小的存储器块加载到每一高速缓冲存储器线中。如果所有指令 具有相同的长度,则将固定数目的指令加载到高速缓冲存储器线中。在可变长度指令集 中,或如果高速缓冲存储器线包含根据具有不同长度的指令的不同指令集而编码的指 令,则在将指令加载到指令高速缓冲存储器中后高速缓冲存储器线中的指令数目未知。 然而,在任一情况下,待加载到指令高速缓冲存储器线中的数据的量是已知的,且相应 地,预加载指令不利用地址的高速缓冲存储器线偏移量部分。
根据一个实施例,高速缓冲存储器线偏移量(例如,VA[4:0])用于对指令集预加载 指示符(ISPI)进行编码。具体来说,在处理器110执行来自两个指令集的指令的实施 例中,ISPI是最低有效位VA[O]。作为一非限制性实例,VA
-0可指示ARM指令,且 VA
-1可指示Thumb指令。当然,其它ISPI编码是可能的,且其取决于处理器110 支持的指令集的数目和类型。
当确定地址并将其写入到编译器指定的GPR以准备执行相关联的预加载指令时, 将ISPI编码到预加载目标地址的高速缓冲存储器线偏移量部分中。当预加载指令执行 时,其从指定的GPR寄存器中读取目标地址,且将目标地址处的数据块预加载到由地 址的标签和组编号部分确定的高速缓冲存储器线中。如果地址在指令高速缓冲存储器中 命中,则预加载指令的执行完成。如果地址在指令高速缓冲存储器中未命中,则指令执 行单元112内的逻辑(例如L2处理逻辑124)执行未命中处理,其存取L2高速缓冲存 储器136,且必要时存取主存储器138以检索指令。
当将含有指令的数据块加载到预解码器30中时,L2处理逻辑124将ISPI呈现给 预解码器130。响应于ISPI,无论处理器110的当前指令集操作模式如何,预解码器130 均根据所指示的指令集对指令进行预解码。预解码器130随后将指令连同正确的预解码 信息一起写入到指令高速缓冲存储器126。在一个实施例中,预解码器130接收对预加 载指令执行的指示,并响应于此指示而检查ISPI(对于正常指令高速缓冲存储器线获取, 忽略所述ISPI)。在另一实施例中,指令执行单元112中的逻辑(如L2处理逻辑24)可使ISPI与对预加载指令执行的知识组合,且向预解码器130呈现借以对当前获取的指令 进行预解码的指令集的指示。在任一情况下,预解码器130均响应于ISPI根据特定指令 集对预加载的指令进行预解码。
在一个实施例中,选择性地启用上述根据ISPI对预加载的指令的预解码,以提供向 后兼容性。具体来说,界定交互工作模式。交互工作模式可由状态寄存器122中的位来 指示。如上所述,当启用交互工作模式时,对预加载的指令的预解码取决于ISPI。当停 用交互工作模式时,根据当执行预加载指令时有效的处理器指令集模式对指令进行预解 码。
在一个实施例中,指令集预加载指示符(ISPI)包括寄存器(如状态寄存器122) 中的一个或一个以上位。在此实施例中,在执行预加载指令之前明确地设置ISPI位。在 执行预加载指令后,预解码器130检査状态寄存器122或其它寄存器中的ISPI位,且根 据由ISPI位指示的指令集编码对预加载的指令进行预解码(无论此时有效的处理器指令 集模式如何)。随后将指令和预解码信息写入到指令高速缓冲存储器126。在一个实施例 中,如上所述,由交互工作模式选择性地启用根据ISPI对预加载的指令的预解码。在一 个实施例中,可由交互工作模式指示符位来选通ISPI位。
在一个实施例中,指令集预加载指示符(ISPI)包括预加载指令的操作码中的一个 或一个以上位。可针对ISPI界定预加载指令操作码的位字段,且编译器可根据编程人员 在码中的指令或命令来设置ISPI位字段。在执行了预加载指令后,例如由L2处理逻辑 124将ISPI位字段呈现给预解码器130,且预解码器130根据所指示的指令集编码对预 加载的指令进行预解码。随后将指令和预解码信息写入到指令高速缓冲存储器126。
在一个实施例中,界定两个或两个以上单独的预加载指令以用于预加载不同指令集 中的指令。举一非限制性实例,ARM指令集可包含常规预加载指令,所述常规预加载 指令将数据预加载到指令高速缓冲存储器126中,其中预解码器130将预加载的指令预 解码成ARM指令。此外,ARM指令集还可包含单独的替代的指令集预加载指令(例如, PLI2),其将数据预加载到指令高速缓冲存储器126中,其中预解码器130将预加载的 指令预解码成Thumb指令。类似地,Thumb指令集可包含单独的预加载指令,以用于 预加载根据Thumb或ARM指令集编码而预解码的数据。这允许编程人员通过利用码中 的适当的预加载指令来明确地预加载来自所要的指令集的指令。
所属领域的技术人员将认识到,上述实施例并不相互排斥。举例来说,在特定实施 方案中,在操作码中具有ISPI位字段的预加载指令或唯一的预加载指令可通过将ISPI 锁存到例如状态寄存器122等寄存器中、或通过将ISPI替换成预加载目标地址中的一个或一个以上未用的地址位而将ispi呈现给预解码器130。 一般来说,在已知本发明的教 示的情况下,所属领域的技术人员可针对给定应用而确认用于预加载不同指令集中的指 令的最佳解决方案。
图2描绘预加载指令的方法200。所述方法通过设置指令集预加载指示符(ispi) 而开始(方框202)。 ispi唯一地识别由处理器110支持的多个指令集中的一者。在各个 实施例中,可通过以下方式来设置ispi:更改预加载指令目标地址、在例如状态寄存器 122等寄存器中设置ispi位、在预加载指令操作码中设置ispi位字段或选择唯一的预加 载指令。
在当前处理器指令集模式下执行预加载指令(方框204)。预加载指令操作以在预加 载的指令执行之前将指令加载到指令高速缓冲存储器126中。在一个实施例中,对预加 载的指令的预解码取决于交互工作模式。如果未启用交互工作模式(方框206),则预解 码器130根据当前指令集模式对预加载的指令进行预解码(方框208)。如果启用了交互 工作模式(方框206),且ispi指示或识别除当前指令集模式之外的指令集(方框210), 则预解码器130根据由ispi指示的指令集对预加载的指令进行预解码(方框212)。
根据本文中所描述和主张的一个或一个以上实施例,编程人员可在执行来自第一指 令集的指令的同时将指令预加载到指令高速缓冲存储器126中,其中根据第二不同的指 令集对所述预加载的指令进行预解码。以此方式,可通过在分支到写入给定指令集中的 码之前确保所述指令集中的指令在指令高速缓冲存储器126中可用而优化在指令集之间 切换的码的执行。可用各种方式来实施将指令集预加载指示符(ispi)传送到预解码器 130。
虽然本文中已相对于本发明的特定特征、方面和实施例描述了本发明,但将明白, 在本发明的广泛范围内,许多变化、修改和其它实施例都是可能的,且相应地,所有变 化、修改和实施例将被视为处于本发明的范围内。因此,本发明的实施例在所有方面将 被解释为说明性而非限制性的,且希望处于所附权利要求书的意义和等效范围内的所有 改变均包含在其中。
权利要求
1.一种预加载指令的方法,其包括设置识别多个指令集中的一者的指令集预加载指示符;根据当前处理器指令集模式来执行指令,所述指令操作以将指令预加载到指令高速缓冲存储器中;以及响应于所述指令集预加载指示符,根据除所述当前指令集模式之外的指令集对所述预加载的指令进行预解码。
2. 根据权利要求1所述的方法,其中所述指令集预加载指示符包括指令被预加载到其中的高速缓冲存储器线的地址的一个或一个以上位。
3. 根据权利要求2所述的方法,其中所述指令集预加载指示符包括所述指令高速缓冲 存储器线地址中的最低有效位。
4. 根据权利要求1所述的方法,其中所述指令集预加载指示符包括所述指令的操作码 中的一个或一个以上位,所述指令操作以将指令预加载到指令高速缓冲存储器中。
5. 根据权利要求1所述的方法,其中所述操作以将指令预加载到指令高速缓冲存储器 中的指令是第一指令集中的唯一指令,其致使始终根据不同于所述第一指令集的第 二指令集对预加载的指令进行预解码,且其中设置指令集预加载指示符包括选择所 述唯一预加载指令。
6. 根据权利要求1所述的方法,其中设置指令集预加载指示符包括在执行所述操作以 将指令预加载到指令高速缓冲存储器中的指令之前设置寄存器中的一个或一个以 上位。
7. 根据权利要求1所述的方法,其中在交互工作模式下根据除所述当前指令集模式之 外的指令集对所述预加载的指令进行预解码,且否则根据所述当前指令集模式对所 述预加载的指令进行预解码。
8. —种处理器,其包括-存储器接口;指令高速缓冲存储器,其操作以存储指令和预解码信息;指令执行单元,其操作以从所述指令高速缓冲存储器中检索所述指令和预解码信 息并根据处理器指令集操作模式来执行所述指令,且进一步操作以产生指令集预加 载指示符;以及预解码器,其介于所述指令高速缓冲存储器与所述存储器接口之间,且操作以在 执行操作以将指令预加载到所述指令高速缓冲存储器中的指令之后,响应于所述指 令集预加载指示符根据除当前处理器指令集操作模式之外的指令集对指令进行预 解码。
9. 根据权利要求8所述的处理器,其中所述指令执行单元通过设置指令被预加载到其 中的高速缓冲存储器线的地址的一个或一个以上位而产生所述指令集预加
10. 根据权利要求9所述的处理器,其中所述指令预加载高速缓冲存储器线地址是所述 操作以将指令预加载到所述指令高速缓冲存储器中的指令的操作数。
11. 根据权利要求10所述的处理器,其中所述指令预加载高速缓冲存储器线地址被写 入到通用寄存器,所述通用寄存器由所述操作以将指令预加载到所述指令高速缓冲 存储器中的指令读取。
12. 根据权利要求8所述的处理器,其中所述指令执行单元指令响应于所述操作以将指 令预加载到所述指令高速缓冲存储器中的指令的操作码中的一个或一个以上位而 产生所述指令集预加载指示符。
13. 根据权利要求8所述的处理器,其中所述操作以将指令预加载到所述指令高速缓冲 存储器中的指令是唯一指令,其致使预加载的指令根据预定的指令集而被预解码, 且其中所述指令执行单元指令通过执行所述唯一预加载指令而产生所述指令集预 加载指示符。
14. 根据权利要求8所述的处理器,其进一步包括寄存器,且其中所述指令执行单元通过设置所述寄存器中的一个或一个以上预定位而产生所述指令集预加载指示符。
15. 根据权利要求8所述的处理器,其进一步包括介于所述指令高速缓冲存储器与所述 存储器接口之间的第二高速缓冲存储器,且其中所述预解码器介于所述指令高速缓 冲存储器与所述第二高速缓冲存储器之间。
16. 根据权利要求8所述的处理器,其中所述预解码器操作以在交互工作模式下根据除 所述当前处理器指令集操作模式之外的指令集对指令进行预解码,且否则操作以根 据所述当前处理器指令集操作模式对指令进行预解码。
17. —种计算机可读媒体,其至少存储第一指令集中的预加载指令,所述指令操作以致 使处理器将指令预加载到指令高速缓冲存储器中,其中根据不同的第二指令集对所 述预加载的指令进行预解码。
18. 根据权利要求17所述的计算机可读媒体,其中所述第二指令集由指令集预加载指 示符指定。
19. 根据权利要求18所述的计算机可读媒体,其中所述指令集预加载指示符包括指令 被预加载到其中的高速缓冲存储器线的地址的一个或一个以上位。
20. 根据权利要求17所述的计算机可读媒体,其中指令操作码包含指令集预加载指示 符位字段。
21. 根据权利要求17所述的计算机可读媒体,其中所述预加载的指令始终根据特定第 二指令集而被预解码。
22. 根据权利要求17所述的计算机可读媒体,其中在执行所述指令之前,所述指令集 预加载指示符是存储在状态寄存器中的。
全文摘要
在第一处理器指令集操作模式下执行的指令预加载指令操作以正确地预加载不同的第二指令集中的指令。响应于指令集预加载指示符(ISPI)根据第二指令集编码对所述指令进行预解码。在各个实施例中,可在执行所述预加载指令之前设置所述ISPI,或者所述ISPI可包括所述预加载指令或预加载目标地址的一部分。
文档编号G06F9/318GK101627366SQ200880007619
公开日2010年1月13日 申请日期2008年3月14日 优先权日2007年3月14日
发明者布莱恩·迈克尔·斯坦普尔, 托马斯·安德鲁·萨托里乌斯, 罗德尼·韦恩·史密斯 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1