预解码可变长度指令的制作方法

文档序号:6454681阅读:170来源:国知局
专利名称:预解码可变长度指令的制作方法
技术领域
本发明大体上涉及处理器领域,.目.确切地说,涉及一种预解码可变长度指令以便识 别未定义指令的方法。
背景技术
可变长度指令集架构在此项技术中是己知的。举例来说,当将Thumb (16位)扩展 添加到ARM (32位)指令集时,所得的混合可视为可变长度指令集。作为另一实例, 可执行Java代码包括一系列字节码,其中每个指令的长度的范围在2与256字节之间。 一般来说,可变长度指令集包括具有基础尺寸的指令以及整数倍的基础尺寸的较长指 令。
处理器架构及指令集随着时间而进化。确切地说,随着半导体技术的进步,可在硬 件中呈现原来需要扩展性软件例行程序来实现的功能性。为了有效地利用高级硬件结 构,将新指令添加到指令集。然而,稳定的处理器架构的一个特征是向后兼容性。也就 是说,针对一个处理器架构编'与的软件应当可在符合所述架构的较老式的处理器上执 行,即使所述较老式的处理器并未实施最近的功能性或直接执行最近的指令。因此,常 见的处理器架构包含产生异常的"未定义"指令,且在软件中执行与未定义的指令相关 联的功能。
用来优化指令解码的常规高性能处理器的一种常见方法是预解码。预解码器是在于 指令高速缓冲存储器(I-cache)中存储指令之前检查并部分地解码从存储器获取的指令 的逻辑电路。预解码器产生少数预解码位,所述预解码位与每个指令一起存储在I-cache 中。 一旦从高速缓冲存储器获取指令,管线解码器便可利用预解码位来简化指令解码任 务。预解码位可例如识别分支指令、识别可变长度指令架构中的指令的长度等。预解码 位也可用来识别未定义的指令。
在实施预解码的可变长度指令集处理器中,少数预解码器位可与最短或基础指令长 度相关联。已知的指令高速缓冲存储器实施方案是使此数目的预解码位与每个I-cache 存储位置(其每一者对应于基础指令长度)相关联。占据整数倍的I-cache存储位置的 较长指令与较大数目的预解码位对应地相关联。因此,可编码成与指令相关联的预解码位的离散性质的数目是基础指令长度的最小值。如果以其它方式定义对基础指令长度的 可用预解码位编码,则利用预解码位来识别未定义的基础长度指令将需要增加与基础指 令长度相关联的预解码位的数目。此技术又将增加与每个存储位置一起存储在I-cache 中的预解码位的数目。由于很少遇到未定义的指令,且比基础长度长的指令具有充裕的 预解码位编码空间,所以添加预解码位以识别未定义的基础长度指令可浪费昂贵的 I-cache存储空间。

发明内容
根据本文所描述的一个或一个以上实施例,预解码器可在与指令长度相关联的预解 码位编码空间完全定义时指示指令的性质。通过更改指令以模拟不同长度的指令,预解 码器可利用与不同长度指令相关联的预解码位的可用编码来指示性质。
一个实施例涉及一种在处理器中预解码指令的方法。识别第一指令的性质。更改第 一指令以模拟第二指令。产生用于第二指令的识别第一指令的性质的预解码位。
另一实施例涉及一种经操作以从存储器中读取指令的处理器。所述处理器包含存储 从存储器中读取的指令以及与每个指令相关联的预解码位的指令高速缓冲存储器。处理 器也包含介于存储器与指令高速缓冲存储器之间的预解码器,所述预解码器经操作以识 别第一指令的性质;更改第一指令以模拟第二指令;产生用于第二指令的识别第一指令 的性质的预解码位;并将用于第二指令的预解码位'与'入到指令高速缓冲存储器。


图1是处理器的功能方框图。
图2是描绘将可变长度指令从存储器映射到指令高速缓冲存储器的功能方框图。 图3是描绘将未定义指令从存储器映射到指令高速缓冲存储器的功能方框图。 图4描绘根据一个实施例的预解码指令的方法。
具体实施例方式
图1是处理器10的功能方框图。处理器IO根据控制逻辑14在指令执行管线12中
执行指令。管线12可以是超标量设计,具有多个并行管线,如12a和12b。每个管线
12a、 12b包含组织成管级的各种寄存器或锁存器16,以及一个或一个以上算术逻辑单
元(ALU) 18。管级寄存器或锁存器16及ALU 18可从通用寄存器堆28中的寄存器读
取运算数,且/或将结果写入到所述寄存器。管线12a、 12b从指令高速缓冲存储器(I-Ccache或lS) 20获取指令,其中由指令 侧翻译旁视缓冲器(ITLB) 22管理存储器寻址和准许。从数据高速缓冲存储器(D-Cache 或DS) 24存取数据,其中由主翻译旁视缓冲器(TLB) 26管理存储器寻址和准许。在 各种实施例中,ITLB 22可包括TLB 26的一部分的副本。或者,ITLB 22禾Q TLB 26可 经整合。类似地,在处理器10的各种实施例中,I-cache 20和D-cache24可经整合或合 并。I-cache20禾Q/或D-cache 24中的未命中导致在存储器接口 34的控制下存取主(芯片 外)存储器36。
从存储器获取的指令在存储在I-Cache 20屮之前在预解码器电路37中经处理。预 解码器37部分地解码指令,并附加预解码位,所述预解码位与指令一起存储在I-Cache 20中。当从I-Cache 20获取指令时,预解码位提供关于每个指令的信息,管线12a和 12b内的解码管级可使用所述信息来更快速且/或更有效地解码指令。举例来说,预解码 位可识别可变长度指令集架构中的指令的长度、识别分支指令等。
处理器10可包含输入/输出(I/O)接口 38,其控制对各种外围装置40、 42的存取。 所属领域的技术人员将认识到,处理器10的多种变化形式是可能的。举例来说,处理 器IO可包含用于I高速缓冲存储器和D高速缓冲存储器中的任一者或两者的二级(L2) 高速缓冲存储器。此外,可从特定实施例中省略在处理器10中描绘的功能块中的一者 或一者以上。
图2是描绘用于--个说明性的且非限制性的实施方案的通过预解码器37将指令从 存储器36映射到I-cache20中的线的功能方框图。指令A是16位指令(对于此实例是 基础指令长度)。 一旦从存储器获取指令A,预解码器37便附加两个预解码位PA,将所 述预解码位与指令A --起存储在I-cache 20中。指令B是32位指令,其在存储器36中 存储为Bo和B,。预解码器37附加四个预解码位,其在I-cache20中存储为P即和PB,。 指令C是16位指令,且与两个预解码位Pc—起存储在I-cache20中。
如图2的表所指示,每一者具有两个预解码位的指令A和C具有四的预解码位编码 空间。也就是说,可将四个离散性质一例如指令长度、指令是否为分支等一编码成用于 指令A和C的预解码位。具有四个预解码位的指令B具有16的预解码位编码空间。如 果架构支持,则48位指令将具有六个预解码位以用于64的编码空间,依此类推。
假设在给定实施方案中定义了用于如A和C的16位指令的全部四个预解码位编码, 则可将额外的预解码位添加到I-cache20中的每个16位存储位置,以利用预解码位来指 示未定义的16位指令。这将导致I-cache 20中的每个存储位置具有三个相关联的预解码 位。16位指令接着将具有八的预解码编码空间一只将利用其中的五个。另外,32位指令将具有64的预解码编码空间;48位指令将具有512的预解码编码空间。由于这远远 超过了关于预解码器可指示的指令的离散性质的数目,从而增加用于16位指令长度的 预解码位的数目导致大量浪费昂贵的I-cache 20存储空间。
根据一个实施例,可更改此实例中的未定义的16位指令以模拟32位指令。将所述 指令实际上是16位的未定义指令的性质编码成与32位指令相关联的16预解码编码中 的一者。在图3中,指令D是16位未定义指令。 一旦将指令D写入到I-cache 20,便 将其更改以模拟32位指令,包括D。和D,。写入预解码位Pd。和PD1,从而指示指令D 实际上是16位的未定义指令。
在一个实施例中,其中管线12只需要16位未定义指令的事实,预解码器37可只 将预解码位PDo和PD,写入到I-cache20,放弃指令D。在另一实施例中,例如其中指令 的位字段内的数据对于引导软件陷阱是常见或有帮助的,可将指令D写入到Do或D, 或这两者,以及将预解码位PDo和PDr与入到I-cache20。在又一实施例中,预解码器37 可将指令D '与入到Do或D,中的一者,且可将额外的信息写入到另一 16位I-cache 20 存储位置,以及写入预解码位Pdo和PD1。在任何情况下,正是预解码位Pdc)和Pm两者 在模拟32位指令(使得读取所有预解码位)并指示指令实际上是16位未定义指令。以 此方式,预解码器37可指示基础尺寸的未定义指令,而不扩展与基础尺寸指令相关联 的预解码位,因此避免了低效的存储器利用。
在图3描绘的实施例中,指令E及F均未经预解码或加载到I-cache 20中。由于线 中的指令的有效长度已在存储器36与I-cache 20之间更改,所以高速缓冲存储器线的其 余部分无法含有对应存储器空间中的所有剩余指令(例如,E与F两者)。预解码器37 可将高速缓冲存储器线的其余部分标记成未使用或无效,或者可简单地在适当的位位置 中插入无效或未定义的预解码位。在正常执行中,处理器将在执行未定义指令后便陷入 到软件,且将很可能更换高速缓冲存储器线。利用软件异常处置程序来处置未定义指令 所引起的陷阱允许软件模拟在处理器(例如处理器10)固定在硅或其它半导体材料中时 未曾预期的指令。如果其它代码恰好分支到高速缓冲存储器线中,则其将遇到不正确的 预解码且/或不认识既定指令,从而引起高速缓冲存储器线重新加载或可能引起异常。由 于假设很少遇到未定义指令,所以因更改的未定义指令模拟不同长度的指令而对受破坏 的I-cache线引起的性能影响不是太大的问题。
本文所揭示的方法不限于上述具有基础指令长度的未定义指令。 一般来说,对于一 般可经由预解码位来指示但其中完全定义了用于相关联的指令长度的预解码位编码空 间的任何指令性质,可通过更改指令以模拟不同长度的指令并利用对不同长度指令的可用预解码位编码来指示所述性质。举例来说,假设先前实例中与32位指令相关联的四 个预解码位的全部16个编码均被定义,但只定义了与16位指令相关联的两个预解码位 的四个编码中的三个或更少的编码。在此情况下,可通过以下方式来指示在32位指令 预解码位中未定义的32位指令的特定性质更改32位指令以模拟16位指令,并在与 16位指令相关联的两个预解码位的可用预解码位编码中编码相关性质。在此情况下,丢 掉32位指令位字段中的一半,因此正被编码的性质优选是与指令位字段无关的性质(例 如指令未被定义的事实,但这并不是可如此指示的唯一性质)。
图4描绘根据一个实施例对指令进行预解码的方法。 一旦在I-cache 20中未命中, 存储器接口 34便从存储器36获取至少第一指令(方框50)。预解码器37检查第一指令, 并识别第一指令的性质(方框52),例如第一指令未经定义。预解码器37更改第一指令 以模拟第二指令(方框54),例如不同长度的第二指令。预解码器37另外产生用于第二 指令的识别第一指令的性质的预解码位(方框56)。也就是说,将与第二指令长度相关 联的预解码位的可用编码中的一者分配给第一指令的相关性质。预解码器37将第二指 令及相关联的预解码位写入到I-cache 20 (方框58)。当管线12从I-cache 20获取第二 指令及其预解码位时,解码管级中的逻辑检查预解码位以识别第 一 指令的性质(方框 60),例如第一指令未经定义的事实。管线12接着采取适当行动,例如引起异常以在软 件中处置未定义指令。
根据本文所描述的一个或一个以上实施例,预解码器37可在与指令长度相关联的 预解码位编码空间被完全定义时指示所述指令的性质。通过更改指令以模拟不同长度的 指令,预解码器37可利用与不同长度指令相关联的预解码位的可用编码来指示性质。 当在较长指令的预解码位编码中指示较短指令的性质时,将从I-cache线中转移一个或 一个以上指令或一指令的多个部分。当在较短指令的预解码位编码中指示较长指令的性 质时,丢掉一些指令位字段。因此, 一般采用本文所揭示的指令性质指示技术来指示引 起异常的指令性质,例如指令未经定义的事实,但并不限于此些情况。
虽然已在本文中相对于本发明的特定特征、方面和实施例描述了本发明,但将明白, 在本发明的广泛范围内可能有许多更改、修改和其它实施例,目.因此将所有更改、修改 和实施例视为属于本发明的范围。因此,应在所有方面将当前实施例理解为说明性而非 限制性,且希望其中包含属于所附权利要求书的意义和等效范围内的所有变化。
权利要求
1. 一种在处理器中预解码指令的方法,其包括识别第一指令的性质;更改所述第一指令以模拟第二指令;以及产生用于所述第二指令的识别所述第一指令的所述性质的预解码位。
2. 根据权利要求1所述的方法,其中所述第一指令将引起异常。
3. 根据权利要求2述的方法,其中所述第一指令未经定义。
4. 根据权利要求1所述的方法,其中所述处理器的指令集是可变长度指令集,.目.其中 所述第一和第二指令具有不同长度。
5. 根据权利要求4所述的方法,其中每个定义的指令长度具有与所述长度的指令相关 联的不同数目的预解码位。
6. 根据权利耍求5所述的方法,其中与所述第一指令的所述长度的指令相关联的所述 预解码位的不充分编码可用于编码所述第 一 指令的所述性质。
7. 根据权利要求6所述的方法,其中与所述第二指令的所述长度的指令相关联的所述 预解码位的至少一个编码可用于编码所述第一指令的所述性质。
8. 根据权利要求1所述的方法,其中所述第一指令是具有与其相关联的两个预解码位 的16位指令。
9. 根据权利要求8所述的方法,其中所述第二指令是具有与其相关联的四个预解码位 的32位指令。
10. 根据权利要求9所述的方法,其中与32位指令相关联的所述预解码位的十六个编 码中的一者将所述相关联的32位指令识别为16位未定义指令。
11. 一种经操作以从存储器中读取指令的处理器,其包括指令高速缓冲存储器,其存储从存储器中读取的指令以及与每个指令相关联的预 解码位;预解码器,其介于所述存储器与所述指令高速缓冲存储器之间,所述预解码器经 操作以识别第一指令的性质; 更改所述第一指令以模拟第二指令;产生用于所述第二指令的识别所述第一指令的所述性质的预解码位以及 将用于所述第二指令的所述预解码位写入到所述指令高速缓冲存储器。
12. 根据权利要求11所述的处理器,其中从存储器中读取的所述指令来自可变长度指 令集。
13. 根据权利要求12所述的处理器,其中所述指令高速缓冲存储器包括对应于最短指 令的长度的多个指令存储位置,且其屮预定数目的预解码位与每个存储位置相关 联。
14. 根据权利要求13所述的处理器,其屮所述指令高速缓冲存储器在整数倍的存储位 置中存储比所述最短指令长的指令,且使与每个存储位置相关联的所述预解码位与 每个指令相关联。
15. 根据权利要求13所述的处理器,其中所述第一指令是具有与其相关联的两个预解 码位的16位指令。
16. 根据权利要求15所述的处理器,其中所述第二指令是具有与其相关联的四个预解 码位的32位指令。
17. 根据权利要求16所述的处理器,其中与32位指令相关联的所述预解码位的卜六个 编码中的一者将所述相关联的32位指令识别为16位未定义指令。
全文摘要
可变指令长度处理器中的预解码器指示与指令一起存储在指令高速缓冲存储器中的预解码位中的指令的性质。当定义了与一个长度指令相关联的预解码位的所有编码时,可通过以下方式来指示所述长度的指令的性质更改所述指令以模拟不同长度的指令;以及在与所述不同长度的指令相关联的所述预解码位中编码所述性质。可如此指示的性质的一个实例是未定义指令。
文档编号G06F9/318GK101432692SQ200780015631
公开日2009年5月13日 申请日期2007年4月20日 优先权日2006年5月4日
发明者布赖恩·迈克尔·斯坦普尔, 罗德尼·韦恩·史密斯 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1