预解码可变长度指令制造技术

技术编号:7586121 阅读:155 留言:0更新日期:2012-07-20 07:26
本发明专利技术涉及预解码可变长度指令。可变指令长度处理器中的预解码器指示与指令一起存储在指令高速缓冲存储器中的预解码位中的指令的性质。当定义了与一个长度指令相关联的预解码位的所有编码时,可通过以下方式来指示所述长度的指令的性质:更改所述指令以模拟不同长度的指令;以及在与所述不同长度的指令相关联的所述预解码位中编码所述性质。可如此指示的性质的一个实例是未定义指令。

【技术实现步骤摘要】

本专利技术大体上涉及处理器领域,且确切地说,涉及一种预解码可变长度指令以便识别未定义指令的方法。
技术介绍
可变长度指令集架构在此项技术中是已知的。举例来说,当将Thumb (16位)扩展添加到ARM(32位)指令集时,所得的混合可视为可变长度指令集。作为另一实例,可执行 Java代码包括一系列字节码,其中每个指令的长度的范围在2与256字节之间。一般来说, 可变长度指令集包括具有基础尺寸的指令以及整数倍的基础尺寸的较长指令。处理器架构及指令集随着时间而进化。确切地说,随着半导体技术的进步,可在硬件中呈现原来需要扩展性软件例行程序来实现的功能性。为了有效地利用高级硬件结构, 将新指令添加到指令集。然而,稳定的处理器架构的一个特征是向后兼容性。也就是说,针对一个处理器架构编写的软件应当可在符合所述架构的较老式的处理器上执行,即使所述较老式的处理器并未实施最近的功能性或直接执行最近的指令。因此,常见的处理器架构包含产生异常的“未定义”指令,且在软件中执行与未定义的指令相关联的功能。用来优化指令解码的常规高性能处理器的一种常见方法是预解码。预解码器是在于指令高速缓冲存储器(I-cache)中存储指令之前检查并部分地解码从存储器获取的指令的逻辑电路。预解码器产生少数预解码位,所述预解码位与每个指令一起存储在I-cache 中。一旦从高速缓冲存储器获取指令,管线解码器便可利用预解码位来简化指令解码任务。 预解码位可例如识别分支指令、识别可变长度指令架构中的指令的长度等。预解码位也可用来识别未定义的指令。在实施预解码的可变长度指令集处理器中,少数预解码器位可与最短或基础指令长度相关联。已知的指令高速缓冲存储器实施方案是使此数目的预解码位与每个I-cache 存储位置(其每一者对应于基础指令长度)相关联。占据整数倍的I-cache存储位置的较长指令与较大数目的预解码位对应地相关联。因此,可编码成与指令相关联的预解码位的离散性质的数目是基础指令长度的最小值。如果以其它方式定义对基础指令长度的可用预解码位编码,则利用预解码位来识别未定义的基础长度指令将需要增加与基础指令长度相关联的预解码位的数目。此技术又将增加与每个存储位置一起存储在I-cache中的预解码位的数目。由于很少遇到未定义的指令,且比基础长度长的指令具有充裕的预解码位编码空间,所以添加预解码位以识别未定义的基础长度指令可浪费昂贵的I-cache存储空间。
技术实现思路
根据本文所描述的一个或一个以上实施例,预解码器可在与指令长度相关联的预解码位编码空间完全定义时指示指令的性质。通过更改指令以模拟不同长度的指令,预解码器可利用与不同长度指令相关联的预解码位的可用编码来指示性质。一个实施例涉及一种在处理器中预解码指令的方法。识别第一指令的性质。更改第一指令以模拟第二指令。产生用于第二指令的识别第一指令的性质的预解码位。另一实施例涉及一种经操作以从存储器中读取指令的处理器。所述处理器包含存储从存储器中读取的指令以及与每个指令相关联的预解码位的指令高速缓冲存储器。处理器也包含介于存储器与指令高速缓冲存储器之间的预解码器,所述预解码器经操作以识别第一指令的性质;更改第一指令以模拟第二指令;产生用于第二指令的识别第一指令的性质的预解码位;并将用于第二指令的预解码位写入到指令高速缓冲存储器。附图说明图I是处理器的功能方框图。图2是描绘将可变长度指令从存储器映射到指令高速缓冲存储器的功能方框图。图3是描绘将未定义指令从存储器映射到指令高速缓冲存储器的功能方框图。图4描绘根据一个实施例的预解码指令的方法。具体实施例方式图I是处理器10的功能方框图。处理器10根据控制逻辑14在指令执行管线12中执行指令。管线12可以是超标量设计,具有多个并行管线,如12a和12b。每个管线12a、12b 包含组织成管级的各种寄存器或锁存器16,以及一个或一个以上算术逻辑单元(ALU) 18。 管级寄存器或锁存器16及ALU 18可从通用寄存器堆28中的寄存器读取运算数,且/或将结果写入到所述寄存器。管线12a、12b从指令高速缓冲存储器(Ι-Ccache或1$)20获取指令,其中由指令侧翻译旁视缓冲器(ITLB) 22管理存储器寻址和准许。从数据高速缓冲存储器(D-Cache或 D$) 24存取数据,其中由主翻译旁视缓冲器(TLB) 26管理存储器寻址和准许。在各种实施例中,ITLB 22可包括TLB 26的一部分的副本。或者,ITLB 22和TLB 26可经整合。类似地, 在处理器10的各种实施例中,I-cache 20和D_cache 24可经整合或合并。I-cache 20和 /或D-cache 24中的未命中导致在存储器接口 34的控制下存取主(芯片外)存储器36。从存储器获取的指令在存储在I-Cache 20中之前在预解码器电路37中经处理。预解码器37部分地解码指令,并附加预解码位,所述预解码位与指令一起存储在 I-Cache20中。当从I-Cache 20获取指令时,预解码位提供关于每个指令的信息,管线12a 和12b内的解码管级可使用所述信息来更快速且/或更有效地解码指令。举例来说,预解码位可识别可变长度指令集架构中的指令的长度、识别分支指令等。处理器10可包含输入/输出(I/O)接口 38,其控制对各种外围装置40、42的存取。所属领域的技术人员将认识到,处理器10的多种变化形式是可能的。举例来说,处理器10可包含用于I高速缓冲存储器和D高速缓冲存储器中的任一者或两者的二级(L2)高速缓冲存储器。此外,可从特定实施例中省略在处理器10中描绘的功能块中的一者或一者以上。图2是描绘用于一个说明性的且非限制性的实施方案的通过预解码器37将指令从存储器36映射到I-cache 20中的线的功能方框图。指令A是16位指令(对于此实例是基础指令长度)。一旦从存储器获取指令A,预解码器37便附加两个预解码位PA,将所述预解码位与指令A —起存储在I-cache 20中。指令B是32位指令,其在存储器36中存储为B。和B”预解码器37附加四个预解码位,其在I-cache 20中存储为Pbq和PB1。指令C 是16位指令,且与两个预解码位P。一起存储在I-cache 20中。如图2的表所指不,每一者具有两个预解码位的指令A和C具有四的预解码位编码空间。也就是说,可将四个离散性质-例如指令长度、指令是否为分支等-编码成用于指令A和C的预解码位。具有四个预解码位的指令B具有16的预解码位编码空间。如果架构支持,则48位指令将具有六个预解码位以用于64的编码空间,依此类推。假设在给定实施方案中定义了用于如A和C的16位指令的全部四个预解码位编码,则可将额外的预解码位添加到I-cache 20中的每个16位存储位置,以利用预解码位来指示未定义的16位指令。这将导致I-cache 20中的每个存储位置具有三个相关联的预解码位。16位指令接着将具有八的预解码编码空间-只将利用其中的五个。另外,32位指令将具有64的预解码编码空间;48位指令将具有512的预解码编码空间。由于这远远超过了关于预解码器可指示的指令的离散性质的数目,从而增加用于16位指令长度的预解码位的数目导致大量浪费昂贵的I-cac本文档来自技高网
...

【技术保护点】

【技术特征摘要】
...

【专利技术属性】
技术研发人员:罗德尼·韦恩·史密斯布赖恩·迈克尔·斯坦普尔
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:

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

1
相关领域技术