具有固定数量的可变长度指令的指令高速缓存器的制作方法

文档序号:6568982阅读:137来源:国知局
专利名称:具有固定数量的可变长度指令的指令高速缓存器的制作方法
技术领域
本发明一般来说涉及处理器领域,且特定来说涉及具有指令高速缓存器的处理 器,所述指令高速缓存器存储固定数量的可变长度指令。
背景技术
微处理器在各种各样的应用中执行计算任务,其中包含便携式电子装置。在许多 情形中,使处理器性能最大化是主要设计目标,以准许在便携式电子装置及其他应用 中实施额外的功能及特征。另外,功率消耗是具有有限电池容量的便携式电子装置中 令人特别关心的问题。因此,所需要的是提高性能且降低功率消耗的处理器设计。多数现代处理器采用一个或多个指令执行管线,其中对许多多步序列指令的执行 经重叠以改善总体处理器性能。利用多数程序的空间和时间局部性特性,将最近执行 的指令存储在高速缓存器(一种高速、通常芯片上存储器)中以供执行管线随时存取。许多处理器指令集体系结构(ISA)包含可变长度指令。也就是说,从存储器读 取的指令操作码并不都占据相同的空间量。这可由随算术或逻辑指令包含操作数、将 多个操作合并到一个超长指令字(VLIW)或其他体系结构特征中而引起。可变长度 指令的一个缺点是,在从指令高速缓存器中提取指令时,处理器必须确定每一指令的 边界,这是一项消耗功率且降低性能的计算任务。所属技术领域中已知的一种在可变长度指令存在时改善指令高速缓存器存取的 方法是在将指令存储到高速缓存器之前先对其进行"预解码",且另外地将一些指 令边界信息连同所述指令一起存储到高速缓存线中。这会降低但不会消除施加到解码 任务上的确定指令边界带来的额外计算负担。同样,通过以从存储器中读取指令的相同压縮形式将所述指令装入高速缓存器 中,有时候指令是未对准的,其中指令的一部分被存储在一个高速缓存线的末端处且 剩余部分被存储在连续高速缓存线的开始处。提取这个指令需要两次高速缓存器存取, 从而进一步降低性能且增加功率消耗,尤其是每次执行所述指令都需要所述两次存取 时。图1绘示存储可变长度指令(11-19)的现有技术指令高速缓存器的两个线100、 140的代表图。在这个代表性实例中,每一高速缓存线均包括十六个字节,且采用32 位字大小。多数指令为一个字宽或四个字节。某些指令为半个字宽,包括两个字节。 第一高速缓存线100及相关联的标签字段120含有指令II到14,及指令15的一半。第二高速缓存线140及其相关联标签字段160含有指令15的另一半,及指令16到19。 指令长度及其地址汇总在下表中指令大小地址对准11字0X1A0在字边界上对准12字0X1A4在字边界上对准13半字0X1A8在字边界上对准14字0X1AA跨越字边界未对准15字0X1AE跨越高速缓存线未对准16字0X1B2跨越字边界未对准17字OX 1B6跨越字边界未对准18半字0X1BA在字边界上未对准19字0X1BC在字边界上对准表l:现有技术高速缓存器中的可变长度指令为从高速缓存线100、 140中读取这些指令,处理器必须以功率消耗和延迟为代价花费额外的计算工作来确定指令边界。虽然可通过对指令进行预解码且存储高速缓存线100、 140中或与其相关联的边界信息来辅助这项任务,但是未免除所述额外计算。 另外,对指令I5的提取将需要两次高速缓存器存取。这种从高速缓存器中提取未对准 指令的双存取可导致额外的功率消耗及处理器延迟。发明内容固定数量的可变长度指令存储在指令高速缓存器的每一线中。所述可变长度指令 沿预定边界对准。由于所述线中每一指令的长度是未知的,且因此所述指令占据的存 储器的范围是未知的,所以计算出下一紧随指令的地址并用高速缓存线对其进行存储。 在将指令放置在高速缓存器中之前,在预解码器中执行确定指令边界、对准指令及计 算出下一提取地址。在一个实施例中, 一种在具有可变指令长度的处理器中进行高速缓存器管理的方 法包括每一高速缓存线存储固定数量的指令。在另一实施例中,处理器包含指令执行管线,其操作以执行具有可变长度的指 令;及指令高速缓存器,其操作以每一高速缓存线存储固定数量的可变长度指令。所述处理器另外包含预解码器,其操作以在将可变长度指令写入高速缓存线中之前沿预 定边界对准所述指令。


图1是存储可变长度指令的现有技术指令高速缓存器的图式。 图2是处理器的功能框图。图3是存储固定数量的沿预定边界对准的可变长度指令的指令高速缓存器的图式。
具体实施方式
图2绘示采用管线化体系结构及分级存储器结构两者的代表性处理器10的功能 框图。处理器10根据控制逻辑14执行指令执行管线12中的指令。所述管线包含组织 成管级的各种寄存器或锁存器16,以及一个或多个算术逻辑单元(ALU) 18。通用寄 存器(GPR)堆20提供构成存储器层级的顶层的寄存器。所述管线从指令高速缓存器(I-高速缓存器)22提取指令,其中存储器寻址和许 可由指令侧转换后备缓冲器(ITLB) 24来管理。预解码器21在将指令存储到I-高速 缓存器22中之前检查从存储器中提取的指令。如下所述,预解码器21确定指令边界、 对准指令,并计算出下一提取地址,所述提取地址随所述指令一起存储在I-高速缓存 器22中。从数据高速缓存器26存取数据,其中存储器寻址和许可由主转换后备缓冲器 (TLB) 28来管理。在各种实施例中,ITLB24可包括TLB28的一部分的副本。或者, 可整合ITLB 24及TLB 28。类似地,在处理器10的各种实施例中,可整合或联合I-高速缓存器22和D-高速缓存器26。在存储器接口 30的控制下,I-高速缓存器22及/ 或D-高速缓存器26中的未命中导致对主(芯片外)存储器32的存取。处理器10可包含输入/输出(I/O)接口34,其控制对各种外围装置36的存取。 所属技术领域的技术人员将认识到,处理器10的多种变化是可能的。例如,处理器 10可包含二级(L2)高速缓存器以用于I-高速缓存器22及D-高速缓存器26的任一 者或两者。另外,可从特定实施例中省去处理器10中所绘示的一个或多个所述功能块。根据本文中揭示的一个或多个实施例,处理器10将固定数量的可变长度指令存 储在每一高速缓存线中。所述指令优选地沿预定边界(例如字边界)对准。这将减轻 解码管级计算指令边界的必要性,从而允许更高速度的操作且因此改善处理器性能。 以这种方式将指令存储在I-高速缓存器22中还通过一次性执行指令长度检测和对准操 作而降低了功率消耗。由于1-高速缓存器22命中率通常高达90%,所以通过消除每次 从I-高速缓存22执行指令时均需确定指令边界可实现大量的功率节省。预解码器21包括安插在主存储器32和I-高速缓存器22之间的路径中的逻辑。 预解码器21逻辑检查从存储器中检索的数据,并确定指令的数量和长度。预解码器沿 预定边界(例如,字边界)对准指令,随后将对准的指令传递到高速缓存器以存储在 高速缓存线中。图3绘示I-高速缓存器22的两个代表性线200、 260,其中每一代表性线含有来 自图1的固定数量的可变长度指令(在这个实例中,每一高速缓存线200、 260中存储 有四个指令)。高速缓存线200、 260为16字节。字边界由虚线表示,半字边界由点 线表示。所述指令沿字边界对准(也就是说,每一指令均在字地址处开始)。当管线 12从1-高速缓存器22提取指令时,解码管级可仅对来自高速缓存线200、 260的相关 字进行多路复用且然后立即开始对操作码进行解码。在半字指令(例如,13和18)的 情况下,高速缓存线200、 260中分别有一个半字的空间未被使用,如图3中通过加阴 影所示。应注意,与图1中绘示的现有技术高速缓存器相比较,图3的高速缓存器22仅 将八个指令(而不是九个)存储在两个高速缓存线中。对应于I9的长度的字空间(偏 移OXOA和0X1E处的半字)没有被利用。图3中所绘示的高速缓存器利用的简单性、 改善的处理器功率及较低的功率消耗是以这种将指令存储在高速缓存器22中的效率 减小为代价的。另外,通过向高速缓存线200、 260分配固定数量的可变长度指令并沿预定边界 对准所述指令,不会跨越高速缓存线未对准地存储指令,例如图1中的I5。因此,完 全消除了由高速缓存器22两次存取以提取单个指令所导致的性能损失和过度功率消 耗。因为存储固定数量的可变长度指令而不是具有己知总长度(高速缓存线的长度) 的可变数量的指令,所以通过简单地依据一个高速缓存线200的存储器大小来增加高 速缓存线200的标签220不能确定下一序列指令的地址。因此,在一个实施例中,当 指令已对准时,由预解码器21计算出下一提取地址(在将所述指令存储到I-高速缓存 器22中之前),且将所述下一提取地址连同高速缓存线200—起存储在字段240中。根据一个实施例,作为计算及存储下一提取地址的替代方案,可计算出距标签220 的偏移并将其连同高速缓存线200 —起存储进去,例如存储到偏移字段240中。然后, 可通过将所述偏移添加到标签地址来容易地计算出下一提取地址。在连续的地址提取 每一次跨越高速缓存线时,这个实施例均招致执行此添加所带来的处理延迟及功率消 耗。在其它实施例中,可存储其它信息来辅助计算下一提取地址。例如,可存储等于 高速缓存线240中所述固定数量的指令的一组位,其中(例如)以"一"表示存储在 对应的指令"时隙"中的全字长指令且以"零"表示存储在对应的指令"时隙"中的 半字长指令。然后可根据这个信息计算出存储器中指令的地址,且因此计算出下一序 列指令的地址。所属技术领域的技术人员将容易地认识到,可构想出并存储额外的下 一地址计算辅助程序以计算所述下一指令提取地址。虽然本文中已针对包含字和半字指令长度的代表性ISA说明了各种实施例,但本发明并不限于这些实施例。 一般来说,任何可变长度指令均可以固定数量有利地存储 在指令高速缓存器22中,所述指令沿预定边界对准。另外,在各种实施例的实践中可 利用与本文中绘示的高速缓存线不同大小的高速缓存线240、 300。虽然在本文中已针对本发明的特定特征、方面和实施例描述了本发明的实施例, 但是显而易见的是,在本发明的广泛范围内可实现大量的变化、修改和其他实施例, 且因此,所有的变化、修改和实施例均视为在本发明的范围内。因此,在所有方面中 均应将本发明实施例解释为说明性而非限制性,且随附权利要求书的含义和等效范围 内的所有改变均打算包含在随附权利要求书范围内。
权利要求
1、一种在具有可变指令长度的处理器中进行高速缓存器管理的方法,其包括每一高速缓存线存储固定数量的指令。
2、 如权利要求1所述的方法,其进一步包括检查指令以确定其长度;及在将 所述指令放置在所述高速缓存器中之前,沿预定的边界将所述指令对准。
3、 如权利要求1所述的方法,其进一步包括用每一高速缓存线存储下一提取地址。
4、 如权利要求3所述的方法,其进一步包括在将所述指令放置在所述高速缓存 器中之前确定所述下一提取地址。
5、 如权利要求1所述的方法,其进一步包括用每一高速缓存线存储偏移,所述 偏移在被添加到所述高速缓存线标签时产生所述下一提取地址。
6、 一种处理器,其包括指令执行管线,其操作以执行可变长度的指令;指令高速缓存器,其操作以每一高速缓存线存储固定数量的所述可变长度指令;及预解码器,其操作以在将所述可变长度指令写入高速缓存线中之前沿预定边界对 准所述指令。
7、 如权利要求6所述的处理器,其进一步包括与每一高速缓存线相关联的下一 提取地址字段。
8、 如权利要求7所述的处理器,其中所述预解码器另外操作以计算紧跟在写入 到高速缓存线的最后一个指令后的指令的地址,且将所述地址存储在所述高速缓存线 的所述下一提取地址字段中。
全文摘要
固定数量的可变长度指令存储在指令高速缓存器的每一线中。所述可变长度指令沿预定的边界对准。由于所述线中的每一指令的长度是未知的,且因此所述指令占据的存储器的范围是未知的,所以计算出下一紧随指令的地址并用高速缓存线对其进行存储。在将所述指令放置在高速缓存器中之前,在预解码器中执行确定指令边界、对准指令及计算下一提取地址。
文档编号G06F9/38GK101268440SQ200680034364
公开日2008年9月17日 申请日期2006年7月26日 优先权日2005年7月29日
发明者托马斯·安德鲁·萨托里乌斯, 杰弗里·托德·布里奇斯, 罗德尼·韦恩·史密斯, 詹姆斯·诺里斯·迪芬德尔费尔 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1