用于可变长度指令的功率节省方法和设备转让专利

申请号 : CN200680013744.0

文献号 : CN101164040B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 布赖恩·迈克尔·斯坦普尔詹姆斯·诺里斯·迪芬德尔费尔杰弗里·托德·布里奇斯罗德尼·韦恩·史密斯托马斯·安德鲁·萨托里乌斯

申请人 : 高通股份有限公司

摘要 :

本发明描述一种能够获取并执行可变长度指令的处理器,其具有拥有至少两个长度的指令。所述处理器在多个模式下操作。所述模式中的一者将可获取和执行的指令限制为较长长度的指令。指令高速缓冲存储器用于将可变长度指令及其相关联的预解码位字段存储在指令高速缓冲存储器线中,并将指令地址和进行获取时的处理器操作模式状态信息存储在标识符线中。所述处理器操作模式状态信息指示程序指定的所述处理器的操作模式。所述处理器从所述指令高速缓冲存储器获取指令以供执行。作为指令获取操作的结果,基于进行所述获取时的所述处理器状态,所述指令高速缓冲存储器可选择性地使得能将预解码位字段写入所述指令高速缓冲存储器中,且可选择性地使得能读取存储在所述指令高速缓冲存储器中的预解码位字段。

权利要求 :

1.一种用于在支持可变长度指令的处理器环境中节省功率的设备,所述设备包括:预解码器,其用于部分解码具有第一长度和第二长度的指令,所述第二长度长于所述第一长度,并用于针对所述第一长度指令和所述第二长度指令产生预解码位,其中所述处理器产生处理器操作模式状态指示符,所述处理器操作模式状态指示符指示所述处理器正在将指令限制为所述第二长度指令的模式下操作;

指令高速缓冲存储器,其具有多个高速缓冲存储器线,高速缓冲存储器线存储指令和预解码位;以及写入控制逻辑,其依据所述处理器操作模式状态指示符而选择性地将预解码位写入高速缓冲存储器线中,借此针对所述第二长度指令写入少于所有所述预解码位。

2.根据权利要求1所述的设备,其中指令的所述第一长度是16位且预解码位的数量是4位。

3.根据权利要求1所述的设备,其中指令的所述第一长度是8位字段且预解码位的数量是2位。

4.根据权利要求1所述的设备,其中所述多个高速缓冲存储器线存储在第一存储器中,且所述指令高速缓冲存储器进一步包括:第二存储器,其用于存储标识符,每一标识符与高速缓冲存储器线相关联,每一标识符保存指令地址和处理器状态位,所述处理器状态位指示进行获取时的所述处理器操作模式状态。

5.根据权利要求1所述的设备,其中所述第一长度是16位且所述第二长度是32位,且其中每一第一长度指令具有四个预解码位,且每一第二长度指令具有第一组和第二组四个预解码位,且不写入所述第二长度指令的所述第二组预解码位。

6.根据权利要求1所述的设备,其中所述预解码位将指令分类为功能和控制类别的指令。

7.根据权利要求1所述的设备,其中所述写入控制逻辑将第二长度指令写入到所述高速缓冲存储器线的多个指令部分并写入与所述指令部分中的由所述第二长度指令的一部分占用的一者相关联的一个预解码部分,与所述第二长度指令的其它部分所占用的指令部分相关联的其它预解码部分是无效的且不写入。

8.根据权利要求1所述的设备,其中所述处理器操作模式状态指示符进一步指示所述处理器正在将指令限制为第三长度指令的模式下操作,所述第三长度长于所述第二长度,且所述预解码器进一步操作以解码所述第三长度指令。

9.根据权利要求1所述的设备,其中所述指令高速缓冲存储器进一步包括:指令内容可寻址存储器,其具有多个指令内容可寻址存储器标识符,指令内容可寻址存储器标识符与每一高速缓冲存储器线相关联,所述指令内容可寻址存储器标识符经分配以用于存储指令地址和处理器状态位,所述处理器状态位具有进行获取时的所述处理器操作模式状态指示符的值;以及第二写入控制逻辑,其用于将所述指令地址和所述处理器状态位写入所述指令内容可寻址存储器标识符中。

10.一种用于在读取指令高速缓冲存储器线时节省功率的设备,所述设备包括:处理器,其执行获取操作,所述获取操作获取具有第一长度和第二长度的指令,所述第二长度长于所述第一长度,其中所述处理器产生处理器操作模式状态指示符,所述处理器操作模式状态指示符指示所述处理器正在将指令限制为所述第二长度指令的模式下操作;

指令高速缓冲存储器,其具有多个高速缓冲存储器线和与每一高速缓冲存储器线相关联的标识符,高速缓冲存储器线存储指令和预解码位,所述标识符具有指令地址部分和处理器操作模式状态部分;以及读取控制逻辑,其依据标识符匹配命中而读取高速缓冲存储器线中选定的预解码位字段,借此针对所述第二长度指令读取少于所述高速缓冲存储器线中可用的所有所述预解码位字段。

11.根据权利要求10所述的设备,其进一步包括:

命中比较器,其用于确定所述标识符匹配命中,所述命中比较器将处理器获取指令地址和所述处理器操作模式状态指示符与所述标识符进行比较,且当所述比较相等时产生所述标识符匹配命中。

12.根据权利要求10所述的设备,其中所述选定的预解码位字段对指令进行分类,使得可对准并解码从所述高速缓冲存储器线读取的指令。

13.根据权利要求10所述的设备,其中所述处理器获取操作包含供应指令地址和所述处理器操作模式状态指示符。

14.根据权利要求10所述的设备,其中所述指令高速缓冲存储器包括:指令内容可寻址存储器,其具有多个指令内容可寻址存储器标识符,指令内容可寻址存储器标识符与每一高速缓冲存储器线相关联,所述指令内容可寻址存储器标识符具有指令地址部分和处理器操作模式状态指示符部分;以及标识符比较器,其与每一标识符相关联。

15.一种用于在处理器环境中节省功率的方法,其包括:

获取具有第一长度或第二长度的指令,所述第二长度长于所述第一长度;

在预解码器中对所述第一长度指令和所述第二长度指令进行预解码;

产生针对所述第一长度指令和所述第二长度指令的预解码位;以及

依据将指令限制为所述第二长度指令的操作模式而将选定的预解码位写入指令高速缓冲存储器线中,借此针对所述第二长度指令写入少于所有所述预解码位。

16.根据权利要求15所述的方法,其中在所述将选定的预解码位写入指令高速缓冲存储器线的步骤中进一步包括:写入可供所述第二长度指令使用的许多预解码位字段中的一者,借此针对所述第二长度指令写入少于所有所述预解码位字段。

17.根据权利要求15所述的方法,其进一步包括:

将指令地址和处理器状态位写入与所述高速缓冲存储器线相关联的标识符中,所述处理器状态位指示进行获取时的所述处理器操作模式状态。

18.根据权利要求17所述的方法,其进一步包括:

将处理器获取指令地址和处理器操作模式指示符与所述指令高速缓冲存储器线相关联的标识符进行比较;

当所述比较相等时产生标识符匹配命中;以及

依据标识符匹配命中而读取指令高速缓冲存储器线中选定的预解码位,借此针对所述第二长度指令读取少于所述高速缓冲存储器线中可用的所有预解码位。

说明书 :

技术领域

本发明大体上涉及用于减少处理具有多种长度的指令的处理器中的功率的技术,且更明确地说,涉及用于选择性地启用和禁用写入和读取指令高速缓冲存储器中的预解码位的有利技术。

背景技术

许多处理器通常支持具有可变长度指令的指令集。举例来说,处理器的指令集可由32位指令和16位指令组成。处理器还可具有分层存储器配置,所述分层存储器配置具有包含指令高速缓冲存储器、数据高速缓冲存储器的多层高速缓冲存储器和系统存储器。如果处理器还具有以高时钟速率操作并具有短持续时间管线级的较深执行管线,那么处理器还有可能具有预解码级来对指令进行预处理以便简化后续的解码级,且因此使管线成流线型。预解码管线级通常在指令高速缓冲存储器未命中期间操作,以部分解码由于指令未命中而获取的指令。将预解码信息连同所获取的指令一起写入指令高速缓冲存储器中。
在可变长度指令处理器中,由于未命中而获取的指令可能具有不同长度。预解码操作确定每一指令的一组预解码位,且独立于处理器的操作状态而将指令和预解码位存储在指令高速缓冲存储器中。由于处理器的操作状态而可能不必要地写入和读取预解码位是功率损失的来源。

发明内容

在本发明的若干方面中,本发明认识到可通过选择性地启用预解码位的写入和读取来节省功率。本发明第一实施例认识到需要一种获取并执行具有第一长度和具有第二长度的可变长度指令的技术,第二长度长于第一长度。处理器操作模式状态指示符指示处理器处于将指令限制为第二长度指令的操作模式。预解码器部分解码具有第一长度和第二长度的指令并产生每一经部分解码的指令的预解码位。指令和预解码位存储在指令高速缓冲存储器中的高速缓冲存储器线中。写入控制逻辑依据处理器操作模式状态指示符而选择性地将预解码位写入高速缓冲存储器线中,借此针对第二长度指令写入少于所有预解码位。以指令地址和处理器状态位写入与高速缓冲存储器线相关联的标识符。当读取时,将获取指令地址和处理器操作模式指示符与标识符进行比较,且如果所述比较是相等的,那么从高速缓冲存储器线读取选定的预解码位,借此针对第二长度指令读取少于高速缓冲存储器线中可用的所有预解码位。
从以下具体实施方式和附图中将获得对本发明的更全面的理解,以及了解本发明的其它特征和优点。

附图说明

图1是其中可有利地使用本发明实施例的示范性无线通信系统的图表说明;
图2是根据本发明的处理器复合体的图表说明;
图3A是根据本发明含有16和32位的不同长度指令的示范性程序段的图表说明;
图3B是根据本发明来自含有来自图3A的程序段的指令的2级指令和数据高速缓冲存储器(L2高速缓冲存储器)的指令线的图表说明;
图3C是根据本发明来自含有来自图3A的程序段的指令的1级指令高速缓冲存储器(L1Icache)的指令线的图表说明;
图4A是根据本发明仅含有32位指令的示范性程序段的图表说明,所述32位指令可在仅限于32位指令的处理器模式下操作;
图4B是根据本发明来自含有来自图4A的程序段的指令的L2高速缓冲存储器的指令线的图表说明;
图4C是根据本发明来自含有来自图4A的程序段的指令的L1Icache的指令线的图表说明;
图5是根据本发明进行操作以在对L1Icache进行写入和从L1Icache进行读取时节省功率的处理器管线级的图表说明;以及
图6是根据本发明在写入和读取来自指令高速缓冲存储器线的预解码信息时节省功率所需的操作步骤的流程图。

具体实施方式

现将参看附图更充分地描述本发明,附图中展示本发明的若干实施例。然而,本发明可以各种形式体现且不应解释为限于本文陈述的实施例。事实上,提供这些实施例以使得本揭示案将为详尽和全面的,且将把本发明的范围完全传达给所属领域的技术人员。
用于根据本发明教示进行操作或用于实施操作的计算机程序代码或“程序代码”可用例如C、C++、Smalltalk、TSQL、Perl的高级编程语言或用各种其它编程语言编写。用于目标处理器结构的程序也可用原始汇编程序语言直接编写。原始汇编程序使用机器级二进制指令的指令助忆码表示法。本文使用的程序代码或计算机可读媒体是指其格式可由处理器理解的例如目标代码的机器语言代码。
图1是其中可有利地使用本发明实施例的示范性无线通信系统100的说明。出于说明的目的,图1展示三个远程单元120、130和150以及两个基站140。将了解,典型的无线通信系统可具有更多的远程单元和基站。远程单元120、130和150分别包含硬件组件125A、125B和125C,其根据本发明执行程序代码。图1展示从基站140到远程单元120、130和150的前向链路信号180以及从远程单元120、130和150到基站140的逆向链路信号190。
图1中,在无线本地回路系统中,远程单元120展示为移动电话,远程单元130展示为便携式计算机,且远程单元150展示为固定位置远程单元。举例来说,远程单元可以是手持式个人通信系统(PCS)单元、例如个人数据助理的便携式数据单元,或例如仪表读数设备的固定位置数据单元。尽管图1说明根据本发明教示的远程单元,但本发明不限于这些所说明的示范性单元。本发明可合适地用于使用将预解码信息存储在指令高速缓冲存储器中的具有可变长度指令的管线处理器的任何硬件组件。
图2是其中可有利地使用本发明实施例的处理器复合体200的说明。处理器复合体200可合适地用于硬件组件125A-C中以用于执行程序代码。处理器复合体200包含执行不同长度指令的处理器210、1级(L1)数据高速缓冲存储器214、1级指令高速缓冲存储器(Icache)218,预解码器222、2级指令与数据高速缓冲存储器(L2高速缓冲存储器)226,和至系统存储器的接口。为了清楚地论述本发明,未展示可连接到处理器复合体的外围装置。处理器210直接耦合到L1数据高速缓冲存储器214、L1Icache 218和预解码器222。处理器210以分层型式从高速缓冲存储器中检索指令和数据。举例来说,处理器210通过产生获取地址和L1 Icache输入228上的处理器操作模式状态并提供获取指令可能需要的其它信息(例如,过程识别(PED)信号)来获取指令。处理器操作模式状态是程序员指定的处理器的操作模式的指示符。
处理器的指令集包含以多个长度格式编码的指令,其中较长指令通常是可变长度指令集中可用的最短指令格式长度的倍数。由于指令可具有可依据指令的长度而变化的复合编码且可邻近具有不同长度的指令,所以所获取的指令的对准和解码所需要的处理可能超过在短持续时间时钟周期内单一处理器管线级中能够实现的处理。归因于指令复杂性的程度,处理器可包含单独指令对准管线级,并将解码操作分为预解码步骤和解码管线级。可通过在L1 Icache未命中处理期间进行预解码操作而将预解码步骤适当地隐藏在正常管线执行之外。L1Icache未命中处理发生在L1Icache中未找到所获取的指令且必须从存储器层级的较高层获取时。预解码步骤将预解码信息连同所获取的指令一起存储在L1指令高速缓冲存储器中。
在操作中,处理器210存取L1Icache 218以通过使用匹配机制确定所寻址的指令是否存在于L1Icache中。如果在L1Icache 218中未发现所获取的指令的匹配,那么出现未命中。将未命中信息230发送到预解码器222,且处理器210向L2高速缓冲存储器226作出存取请求232。当L2高速缓冲存储器226中发生指令命中时,含有所需指令的L2高速缓冲存储器线在端口A 234上输出到预解码器222。预解码器222在未命中处理过程中在预解码级期间部分解码从L2高速缓冲存储器获取的指令,并在输出238上将指令、与指令相关联的经预解码位和标识符信息提供到L1Icache 218并提供到处理器210。
当处理器210需要获取数据时,处理器210存取L1数据高速缓冲存储器214以通过使用匹配机制确定所寻址的数据是否存在于L1数据高速缓冲存储器中。如果在L1数据高速缓冲存储器214中未发现所获取的数据的匹配,那么发生未命中且接着存取L2高速缓冲存储器226。在两种L1高速缓冲存储器情况下,如果分别发现指令或数据存在于L1指令或L1数据高速缓冲存储器中,那么在输出240和244上直接从其各自的L1高速缓冲存储器读取指令和数据。
图3A是可合适地存储在包含L2高速缓冲存储器226和L1Icache 218的处理器复合体200的存储器层级中的示范性程序段300。应注意,尽管出于说明目的,假定从高速缓冲存储器线中检索程序段,但本发明教示适用于任何存储程序段的存储器装置。一般来说,术语“高速缓冲存储器线”也可称为指令串或指令流。由于高速缓冲存储器线可具有固定长度,所以术语指令串或指令流通常是指可或不可跨越高速缓冲存储器线的边界的一个或一个以上程序段。
程序段300包含来自由16位和32位指令组成的可变长度指令集的指令302。举例来说,考虑到处理器210使用16位和32位指令格式用于多种类型的指令,并支持指定且限制指令类型用途的若干操作模式。处理器210具有指定仅可使用32位指令的第一操作模式和指定可使用16位与32位指令的组合的第二操作模式。虽然处理器通常具有多个操作模式,但出于清楚地论述本发明的目的,对示范性处理器210的描述主要限于上述第一和第二操作模式。
为了说明本发明的各方面,图3A中说明若干示范性16位和32位指令。出于说明目的,程序相对字节指示符304表示指令在高速缓冲存储器线中开始的字节位置,且间接指示指令的大小。举例来说,MULT R5、R4、R3指令306在字节位置00处开始并在字节位置01处结束。因此,MULT R5、R4、R3指令306是16位指令。类似地,ADD指令307和311以及SHIFT指令309为16位长。条件分支(CBRANCH)指令308、加载(LOAD)指令310和存储(STORE)指令312为32位长。
图3B中描绘L2高速缓冲存储器线320的一部分。出于说明性目的仅展示高速缓冲存储器线的一部分,因为高速缓冲存储器线大小可依据应用、技术和所选择的存储器层级设计而变化。举例来说,256位或512位高速缓冲存储器线可用于L2高速缓冲存储器。所说明的部分具有多个16位字段。如所指示,图3A的指令314存储在L2高速缓冲存储器线320中,且MULT R5、R4、R3指令306存储在开始于位置00处的L2高速缓冲存储器线段322中。ADD R0、R5、R1指令307存储在开始于位置02处的L2高速缓冲存储器线段324中。CBRANCH 0A指令308存储在L2高速缓冲存储器线段330中。指令308由分别开始于位置04和位置06处的两个16位段322和334组成。SHIFT R0,1指令309存储在开始于位置08处的L2高速缓冲存储器线段336中。应注意,出于说明性目的,程序段300展示为开始于高速缓冲存储器线的起始处,但将了解,此类程序段可位于高速缓冲存储器线的其它部分中且可在多个高速缓冲存储器线之间分离。
图3C中描绘示范性L1Icache线350,其由多个20位字段组成,其中每一20位字段由16位字段与相关联的4位预解码(Pd4)字段组成。举例来说,L1高速缓冲存储器可利用128位的指令,并需要额外空间用于八个Pd4字段,从而产生160位L1高速缓冲存储器线。单一4位Pd4字段用于16位指令和32位指令两者。4位Pd4字段可含有与Pd4字段相关联的指令的多达十六个经编码特征。举例来说,编码可指示指令是加载或存储指令、算术指令、还是需要微码支持的复合指令。编码还可指示16位的指令数据是32位指令的前半部分还是16位指令、指令是否为分支指令类型等。Pd4信息可(例如)用于指令对准、解码,且可用于其它目的,例如分支处理。
图3A的指令314可位于L1高速缓冲存储器线中,分别以存储在L1高速缓冲存储器线段352和354中的16位MULT R5、R4、R3指令306和其相关联的Pd4字段开始。类似地,16位ADD R0、R5、R1指令307及其相关联的Pd4字段分别存储在L1高速缓冲存储器线段356和358中。32位CBRANCH 0A指令308以不同方式存储,因为仅需要一组预解码位与32位指令一起存储。出于说明性目的,16位L1高速缓冲存储器线段362含有CBRANCH 0A指令308的高阶16位。Pd4字段364提供32位CBRANCH指令的预解码信息,而下一16位L1高速缓冲存储器线段366含有CBRANCH 0A指令308的低阶16位。CBRANCH 0A指令308不需要Pd4字段368。由于其它程序段可在不同时间占用高速缓冲存储器线,所以可使用Pd4字段368来支持存储在(例如)16位L1高速缓冲存储器线段366中的16位指令。L1高速缓冲存储器线中的下一指令是16位SHIFT R0,1指令309,其存储在由16位L1高速缓冲存储器线段370和Pd4字段372组成的20位字段中。高速缓冲存储器线350中的剩余位字段遵循程序段314中其它指令的类似排序。
图4A说明可合适地存储在包含L2高速缓冲存储器226和L1Icache 218的处理器复合体200的存储器层级中的示范性程序段400。程序段400包含可在处理器210的第一操作模式下操作的32位指令402,且所有指令均根据结构性定义而定位在字对准边界上。为了说明本发明的各方面,图4A中说明若干示范性32位指令。程序相对字节指示符404表示指令在高速缓冲存储器线中开始的字节位置,且间接指示指令的大小。举例来说,LOAD R22,EE指令406在字节位置00处开始并在字节位置03处结束。因此,LOAD R22,EE指令406是32位指令。类似地,ADD指令407和411、CBRANCH 10408、SHIFT指令409、LOAD R20,8F指令410和STORE指令412全部为32位长。
图4B中描绘L2指令高速缓冲存储器线420的一部分。线420具有多个16位字段。仅说明高速缓冲存储器线的一部分,因为高速缓冲存储器线大小可依据应用、技术和所选择的存储器层级设计而变化。举例来说,256位或512位高速缓冲存储器线可合适地用于L2高速缓冲存储器。如所指示,图4A的指令414存储在L2高速缓冲存储器线420中,且LOAD R22,EE指令406存储在开始于位置00处的L2高速缓冲存储器线段422中。ADD R19,R22,R30指令407存储在开始于位置04处的L2高速缓冲存储器线段432中。CBRANCH 10指令408存储在开始于位置08处的L2高速缓冲存储器线段436中。其它32位指令以类似方式存储在L2高速缓冲存储器中。应注意,出于说明性目的,程序段400已展示为开始于高速缓冲存储器线的起始处,但将了解,此类32位指令程序段可位于高速缓冲存储器线处于字边界上的其它部分中且可在多个高速缓冲存储器线之间分离。
图4C中描绘示范性L1Icache线450。线450具有多个20位字段,且每一20位字段由16位字段与相关联的4位预解码(Pd4)字段组成。单一4位Pd4字段用于16位指令和32位指令两者。举例来说,L1高速缓冲存储器可存储128位的指令,并需要额外空间用于八个Pd4字段,从而产生160位的L1高速缓冲存储器线。图4A的指令414可位于L1高速缓冲存储器线中,以存储在L1高速缓冲存储器线段452中的32位LOAD R22,EE指令406开始,所述L1高速缓冲存储器线段452由16位段454、其相关联的Pd4字段456和16位段458组成。由于4位Pd4字段456供应32位LOAD R22,EE指令的预解码信息,所以不需要第二4位Pd4字段460,且因此通过使用本发明的技术,不对Pd4字段460进行写入或从中进行读取。类似地,32位ADD R19,R22,R30指令407存储在L1高速缓冲存储器线段464和468中,且指令407的相关联的Pd4字段存储在段466中。类似地,不需要4位Pd4字段470,且通过使用本发明的技术,不对Pd4字段470进行写入或从中进行读取。32位CBRANCH 10指令408存储在L1高速缓冲存储器线段474和478中,且CBRANCH 10指令408的相关联的Pd4字段存储在段476中。也不需要Pd4字段480。同样,通过使用本发明的技术,不对Pd4字段480进行写入或从中进行读取。由于其它程序段可在不同时间占用高速缓冲存储器线,所以可使用Pd4字段460、470和480来支持(例如)分别与16位L1高速缓冲存储器线段458、468和478相关联的16位指令。高速缓冲存储器线450中的剩余位字段遵循程序段414中的下一32位指令409的类似排序。
本发明的一个方面涉及根据本发明的技术将预解码信息写入到L1高速缓冲存储器线中以在对L1Icache进行写入时节省功率。第二方面提出选择性地启用预解码位字段以在从L1Icache进行读取时节省功率。下文进一步详细地描述这两个方面。
图5说明根据本发明进行操作以在对L1Icache 218进行写入和从L1Icache 218进行读取时节省功率的处理器管线级500。L1Icache 218被分为两个处理器管线级。第一管线级用于指令内容可寻址存储器(ICAM)单元502中的指令标识符匹配。第二管线级用于在ICAM单元502中发生标识符匹配命中时从指令随机存取存储器(IRAM)503存取指令。在Icache 218之后,指令进入处理器210,进入指令对准(IDA)级516中,随后进入解码级554,且接着进入执行级555。
本发明经操作以当对L1Icache进行写入时节省功率。举例来说,在发生L1Icache未命中时,将来自L2高速缓冲存储器或系统存储器的指令和选定的预解码位字段写入L1Icache。依据处理器状态信息,写入到L1Icache的选定的预解码位字段可少于Icache线中可用的所有预解码位字段,借此节省功率。当解决可能由于许多原因而发生的L1Icache未命中时实现功率的节省。举例来说,在L1Icache初始化时,将Icache视为具有无效内容且当L1Icache填充时将发生未命中。并且,当程序转移到新的代码部分时,L1Icache获取时发生Icache未命中的可能性更大。
处理器210通过向ICAM单元502提供待获取的指令的地址(Faddress)504,并提供表示获取时的程序指定的操作模式的当前操作模式状态(COMS)信息506,而从L1Icache获取指令。处理器210还可将例如PID的其它信息提供到ICAM单元502。获取时的COMS信息可包含处理器处于仅使用字对准边界上的32位指令的第一操作模式、使用16位和32位指令两者的第二操作模式,还是处于其它处理器模式中。
ICAM单元502将指令地址(Iaddress)509、获取时的处理器操作模式(FOMS)510,以及认为有必要用于匹配操作的其它此类信息作为标识符存储在ICAM线(例如,ICAM线512)中。在指令获取操作中,处理器供应Faddress 504和处理器COMS 506,其与所存储的ICAM线标识符进行比较,以确定任何所存储的ICAM线是否保存与处理器供应的Faddress和COMS匹配的有效数据。如果未发现任何ICAM线具有有效匹配地址、处理器操作模式状态等,那么认为其未命中,且向处理器210提供未命中指示514。如果L2高速缓冲存储器226中未发现所述指令,那么处理器210继续从L2速缓冲存储器226或从系统存储器获取。在由于存储器存取时序而引起的等待时间之后,将指令从系统存储器或L2高速缓冲存储器输出518提供到预解码器520和IRAM 503。处理器210还向预解码器520发送关于指令获取寻址、获取时的处理器操作模式状态等的未命中信息522。
预解码器520跟踪未命中信息以解决存储器等待时间并使未命中信息可用。未命中信息包含(例如)处理器L1Icache获取地址和获取时的处理器状态。当从系统存储器或L2高速缓冲存储器输出总线518提供指令时,在输出524上供应所跟踪的获取地址,在输出526上供应所跟踪的处理器状态,且可在输出528上供应其它信息(例如,PID)。输出总线518上的指令在预解码器520中部分解码,从而针对待存储在IRAM 503中的适当的16位字段产生4位Pd4输出530、532到534。预解码器520中仅产生保存有效信息的Pd4位。输出总线518上的指令经适当划分(例如,如所说明,划分为第一16位536、第二16位538到最后16位540),以用于存储到IRAM 503中。指令16位字段536、538到540及其各自的Pd4输出530、532到534在写入控制逻辑544的控制下存储到IRAM线(例如,IRAM线542)中。为了节省功率,如果获取时的处理器状态信号526是将指令限制为仅字对准边界上的32位指令的状态(例如示范性第一操作模式),那么待存储在IRAM线542中的指令全部为32位指令。在仅32位指令将存储在IRAM线542中的情况下,仅需要写入Pd4位的一半,例如Pd4输出530。不需要与32位指令的后半部分16位相关联的Pd4输出(例如,Pd4输出532),且不写入在IRAM 503中。在160位的L1Icache线中,可存储有四个32位指令和32位的预解码信息,当L1Icache线仅具有32位指令时,所述预解码信息中仅16位需要存储,与第一操作模式的情况相同。平均来说,由于不写入160位L1Icache线中的16位,这表示在对L1Icache进行写入时有10%的功率节省。
当将指令写入到Icache时,还将标识符信息写入到ICAM 502。在ICAM单元502中,获取地址524和获取时的处理器状态信号526存储在ICAM线(例如,ICAM线512)中。ICAM线512与IRAM线542直接相关,使得当ICAM单元502中发生L1Icache命中550时,可在读取控制逻辑546的控制下在IRAM输出552上输出IRAM单元503中的适当的线。IRAM输出552含有所需的指令和发送到指令对准(IDA)级516的许多随后的指令。
使指令对准级516中所接收的指令对准并准备用于后续的解码与执行级554。由于(例如)Pd4位跟踪管线,所以指令对准级516和解码级554了解高速缓冲存储器线的状态。从用于从IRAM单元503存取指令的管线级开始,Pd4位行进到指令对准级516,且接着到达解码级554。如果IDA 516中的处理器210的操作模式状态是仅针对32位指令的第一操作模式,那么对准逻辑了解仅第一、第三、第五和其它奇数预解码位字段(Pd4)是有效的。如果IDA 516中处理器210的操作模式状态是针对16位和32位指令的第二操作模式,那么因为所有Pd4字段均可能是有效的,所以要考虑所有的Pd4字段。估计开始Pd4字段以确定相关联的16位字段是32位指令的前半部分还是16位指令。如果Pd4字段指示其相关联的16位字段是32位指令的前半部分,那么忽略下一Pd4字段。如果Pd4字段指示16位指令,那么类似地检查下一连续的Pd4字段。此过程持续进行,涟波式地横跨被获取的高速缓冲存储器线中的剩余的Pd4字段。
作为实例,当发生L1高速缓冲存储器线命中时,IRAM输出552可将64位的指令(从而允许多达四个16位指令,两个16位指令和单一32位指令,或多达两个32位指令),以及相关联的预解码位供应给指令对准单元516。或者,IRAM输出552可供应整个IRAM高速缓冲存储器线,例如IRAM线542。为了节省功率,如果处理器状态506指示处理器处于仅使用字对准边界上的32位指令的模式中,那么认为待从IRAM线542读取的指令全部是32位指令。在仅将32位指令存储在IRAM线中的情况下,仅需要读取Pd4位的一半,例如Pd4字段556。不需要与32位指令的后半部分16位相关联的Pd4位(例如,Pd4字段558)。在160位的L1Icache线中,可存储四个32位指令和32位的预解码信息。然而,此实例中仅需要读取16位的预解码信息。平均来说,由于读取L1Icache线时不读取160位中的16位,所以这表示从L1Icache进行读取时有10%的功率节省。
图3A-3C和图4A-4C中已提供两个实例,其说明依据处理器操作模式状态而变化的功率节省。处理器获取操作模式状态(FOMS)510存储在每一标识符(例如,标识符512)中。所存储的FOMS 510可指示表示第一操作模式的第一状态580或表示第二操作模式的第二状态582,以用于写入和读取预解码位。在图3C的L1Icache线350的实例中,整个L1Icache线350由16位和32位指令组成,其当写入到IRAM 503时与具有指示第二状态582的FOMS的ICAM标识符相关联。在图4C的L1Icache线450的实例中,整个L1Icache线450仅由32位指令组成,其当写入到IRAM 503时与具有指示第一状态580的FOMS的ICAM标识符相关联。在第二状态582中,启用所有Pd4字段用于写入和读取两者。在第一状态580中,仅启用与每一32位指令的前半部分16位相关联的Pd4字段且不启用与每一32位指令的后半部分16位相关联的Pd4字段,以用于写入或读取IRAM 503指令。
图6是说明根据本发明用于在读取和写入来自指令高速缓冲存储器线的预解码信息时节省功率的操作步骤的流程图600。在第一步骤610中,处理器获取待执行的指令,其中所述指令具有两种类型。第一类型的指令以第一长度(例如,16位)经格式化,且第二类型的指令以第二长度经格式化。第二长度(例如,32位)长于第一长度。在下一步骤615中,在预解码器中部分解码第一类型和第二类型的指令。在步骤620中,产生经部分解码的指令的预解码信息。在步骤625中,确定处理器操作模式状态是否指示将指令限制为第二类型。如果处理器操作模式状态为处理器不将指令限制为第二类型,那么之后是步骤630,以启用指令高速缓冲存储器线中的所有预解码位来用于写入。如果处理器操作模式状态为处理器确实将指令限制为第二类型,那么之后是步骤635,以选择性地启用指令高速缓冲存储器线中与第二类型指令相关联的预解码位来用于写入。当写入用于所获取指令的高速缓冲存储器线之后,系统返回到步骤610。
本发明不限于所说明的管线级500,且进一步适用于将预解码信息存储在指令高速缓冲存储器中的具有可变长度指令的任何管线处理器。如果可变长度处理器指令集的扩展支持唯一的指令集使用模式以使得可选择性地控制预解码信息,借此节省写入和读取功率,那么本发明可容纳所述扩展。举例来说,可指定第三模式,其中仅64位指令可操作且所有64位指令均位于双字边界上,使得不在L1Icache线上划分64位指令。使用64位指令类型的处理器可以是上述示范性处理器210的扩展。所述扩展的处理器可具有针对仅限制为32位指令的第一状态580、针对16位和32位指令两者的第二状态582以及仅限制为64位指令的第三状态584而编码的操作模式状态。Icache线(例如,图5的IRAM线542)中的64位指令将分割为四个20位字段,其中每一20位字段具有64位指令部分和相关联的Pd4字段。在L1Icache线中存在64位指令的情况下,与64位指令的前16位相关联的Pd4字段将用于整个64位指令,且将不需要随后的三个Pd4字段。在L1Icache线中,将使用第一、第五、第九等Pd4字段,而将不对其它第二、第三、第四、第六、第七、第八、第十等Pd4字段进行写入或从中进行读取。在含有两个64位指令和三十二个Pd4位的160位L1Icache线的情况下,将不对三十二个Pd4位中的二十四个位进行写入或从中进行读取。平均来说,当存取L1Icache线时,由于不写入且不读取L1Icache线中的160位中的24位,这表示有15%的功率节省。
本发明也不限于是2的幂的指令长度。举例来说,考虑到具有16位和24位指令和将指令限制为24位类型的模式的替代结构。16位和24位指令两者均需要四个预解码位。在此实例中,指令高速缓冲存储器线被分割为8位指令部分和2位预解码部分。16位指令将由组织成{8位、2位Pd2、8位、2位Pd2}的20位组成。24位指令将由组织成{8位、2位Pd2、8位、2位Pd2、8位、2位Pd2}的30位组成。存储16位指令的160位高速缓冲存储器线将能够保持八个16位指令,其被组织成八个20位部分(总共160位),其中所有位均被充分利用。存储24位指令的160位高速缓冲存储器线将能够保存五个24位指令,其被组织成五个30位部分(总共150位),其中五个Pd22位字段无效且线中剩余的10位不被利用。通过依据处理器操作模式进行24位指令的写入或读取,高速缓冲存储器线中仅含有有效信息的位被存取且20位不被存取,从而与写入且读取线中所有位相比节省了功率。
虽然已在当前优选的情形中揭示了本发明,但将了解,本发明教示可适于与本揭示案和所附权利要求书一致的多种情形。