用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器的制作方法

文档序号:6479022阅读:128来源:国知局
专利名称:用于跨越指令高速缓冲存储器线的指令的预解码修复高速缓冲存储器的制作方法
技术领域
本发明大体上涉及改进处理具有多种长度的指令的处理器中的效率的技术,且更 明确地说,涉及用于在预解码修复高速缓冲存储器中存储针对跨越两个或两个以上高速缓 冲存储器线的指令的预解码信息的有利技术。
背景技术
许多处理器支持具有可变长度指令的指令组。举例来说,处理器的指令组可由32 位指令和16位指令组成。处理器也可具有分级存储器配置,所述分级存储器配置具有多层 高速缓冲存储器,包含(例如)指令高速缓冲存储器、数据高速缓冲存储器和系统存储器。 如果处理器还具有在高时钟速率下以持续时间较短的管线级操作的深执行管线,那么也有 可能处理器具有预解码级,用以预处理指令以便使后续的解码级简化,且因此使管线成流 线型。所述预解码管线级一般在指令高速缓冲存储器未中期间操作,以部分地解码因指令 未中而提取的指令。预解码信息连同所提取的指令一起被写入到指令高速缓冲存储器中。在可变长度指令处理器中,因未中而提取的指令可具有不同的长度,且较长的指 令可能跨越两个高速缓冲存储器线。对于跨越两个高速缓冲存储器线的指令,指令的两个 部分均必须被提取以便正确地预解码所述指令,这增加了预解码功能的复杂性,且可能影 响性能和电力利用率。

发明内容
在本发明的若干方面中,本发明认识到可通过使用预解码修复高速缓冲存储器来 改进性能和节省电力。本发明的第一实施例认识到需要一种填充预解码修复高速缓冲存储 器的方法。提取指令的存储在第一高速缓冲存储器线中的第一部分。还提取指令的存储在 下一高速缓冲存储器线上的第二部分。在处理器管线级中预解码指令的第一部分和第二部 分,以形成经修复的预解码信息。利用与所述指令相关联的地址将经修复的预解码信息写 入预解码修复高速缓冲存储器中。本发明的另一实施例提出一种用于执行跨越两个高速缓冲存储器线的指令的方 法。提取跨越两个高速缓冲存储器线的指令的第一部分,指令的第一部分存储在指令高速 缓冲存储器中的第一高速缓冲存储器线中。从与指令高速缓冲存储器分开的预解码修复高 速缓冲存储器提取与所述指令相关联的预解码信息。还提取指令的存储在第一高速缓冲存 储器线之后的下一高速缓冲存储器线中的第二部分。响应于预解码信息而执行所述指令。另一实施例提出一种用于利用预解码修复高速缓冲存储器的设备。指令高速缓冲 存储器可操作以在指令高速缓冲存储器线中存储具有至少第一长度和第二长度的指令,第 二长度比第一长度长。预解码器可操作以预解码从指令高速缓冲存储器提取的具有无效预 解码信息的指令,以形成经修复的预解码信息。预解码修复高速缓冲存储器可操作以存储 与指令高速缓冲存储器中跨越两个高速缓冲存储器线的具有第二长度的指令相关联的经
5修复的预解码信息。从以下具体实施方式
和附图将明白对本发明以及本发明的其它特征和优点的更
完整的理解。


图1说明其中可有利地使用本发明的实施例的示范性无线通信系统;图2说明具有处理器、层1指令高速缓冲存储器(Li I高速缓冲存储器)、层2高 速缓冲存储器(L2高速缓冲存储器)和预解码修复高速缓冲存储器的指令流逻辑;图3A说明含有16位和32位的不同长度指令的示范性程序段;图3B说明含有来自图3A的程序段300的指令的示范性Ll I高速缓冲存储器线;图4A说明示范性Ll I高速缓冲存储器段;图4B说明用于准备预解码修复高速缓冲存储器条目的管线级图;图4C是说明用以通过从预解码修复高速缓冲存储器提取用于跨线指令(跨越两 个高速缓冲存储器线的指令)的有效预解码位来节省电力的操作的处理器管线级图;图5是在Ll I高速缓冲存储器中的未中时遵循的且用于准备到预解码修复高速 缓冲存储器的条目的操作步骤的过程;及图6是当从Ll I高速缓冲存储器提取跨线指令时遵循的操作步骤的流程图。
具体实施例方式现在将参看附图更完整地描述本发明,附图中展示了本发明的若干实施例。然而, 本发明可以各种形式体现,且不应被理解为限于此处所陈述的实施例。相反,提供这些实施 例是为了使本发明将透彻和完整,且将完全将本发明的范围传达给所属领域的技术人员。用于被操作和用于执行根据本发明的教示的操作的计算机程序代码或“程序代 码”可用例如 C、C++、JAVA 、Smalltalk, JavaScript 、Visual Basic 、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,其具有处理器204、层1指令高速缓冲存储器(Li I高 速缓冲存储器)206、层2高速缓冲存储器(L2高速缓冲存储器)208和预解码修复高速缓 冲存储器210。指令流逻辑200进一步包含预解码器214、填充缓冲器216、指令高速缓存 级1 (ICl) 218、指令高速缓存级2 (IC2) 220、多路复用器222以及到达系统存储器224的接 口。为了对本发明的说明和论述的清楚起见,未展示可连接到处理器204的外围装置(例 如通信子系统)。指令流逻辑200可合适地用于硬件组件125A到125C以用于执行程序代 码。处理器204直接耦合到Ll I高速缓冲存储器206和多路复用器222。处理器204以分 级方式从高速缓冲存储器和系统存储器提取指令。举例来说,处理器204通过在Ll I高速 缓冲存储器输入总线228上产生提取地址来提取指令。处理器204也可向指令流逻辑200 提供操作模式状态信号,作为处理器的由编程人员指定的操作模式的指示符。处理器的指令组包含以多种长度格式编码的指令,其中较长的指令一般是在可变 长度指令组中可用的最短指令格式长度的倍数。由于指令可具有复合编码(其可依据指令 的长度而变化)且所述指令可能邻近于具有不同长度的指令,所以所提取的指令的对准和 解码可能需要超过在具有较短持续时间的时钟周期的单处理器管线级中能够实现的处理 的处理。如下文更详细地描述,由于指令复杂性的等级,处理器可包含单独的指令对准管线 级,且可将指令解码操作分成预解码步骤和一个或一个以上解码管线级。通过在Ll I高速缓冲存储器未中的处理期间进行预解码操作,预解码步骤可合适 地向普通管线执行隐藏。当在Ll I高速缓冲存储器中未找到所提取的指令且必须从存储 器层级的较高层提取指令时,Ll I高速缓冲存储器未中处理发生。在接收到所提取的指令 (例如从L2高速缓冲存储器208)后,预解码所述所提取的指令。预解码操作将预解码信息 连同所提取的指令一起存储在Ll指令高速缓冲存储器中。由于可变长度指令,指令可具有 致使所述指令跨多个指令高速缓冲存储器线而存储的长度。举例来说,32位指令可分裂成 两个部分,其中第一 16位部分存储在第一指令高速缓冲存储器线的末尾,且第二 16位部分 存储在下一循序指令高速缓冲存储器线的开头。如下文更详细地论述,当指令跨越高速缓 冲存储器线边界时,预解码操作的复杂性增加。在操作中,处理器204存取Ll I高速缓冲存储器206,以通过使用匹配机制来确定 Ll I高速缓冲存储器中是否存在所寻址的指令。如果在Ll I高速缓冲存储器206中针对 所提取的指令未发现匹配,那么未中发生。处理器206随后向L2高速缓冲存储器208作出 存取请求232。举例来说,在Ll I高速缓冲存储器206的初始化后,将I高速缓冲存储器视 为具有无效内容,且随着Ll I高速缓冲存储器206被填充有指令,将存在未中。此外,当程 序分支到新的代码区段时,在Ll I高速缓冲存储器提取时发生I高速缓冲存储器未中的概 率较大。对于L2高速缓冲存储器208中的指令命中,在端口 A234上将含有所要指令的L2 高速缓冲存储器线输出到预解码器214。预解码器214在处理管线中的预解码管线级期间 操作,所述预解码管线级控制在未中时遵循的步骤的顺序。预解码器214部分地解码从L2 高速缓冲存储器提取的指令,并在耦合到填充缓冲器216的输出总线238上提供指令、与所 述指令相关联的预解码位以及标签信息。填充缓冲器216提供弹性存储以适应不同的存储 和处理器等待时间。填充缓冲器216的输出总线240将经缓冲的指令、相关联的预解码位以及标签信息耦合到Ll I高速缓冲存储器206且耦合到多路复用器222,指令在被多路复 用器控制(Mctl)信号242选择时从多路复用器222前进到处理器204。在Ll I高速缓冲存储器206中的指令命中时,所提取的指令和预解码位经由指令 总线244耦合到多路复用器222,所述指令和预解码位在被Mctl信号242选择时从多路复 用器222前进到处理器204。预解码位可以多种方式格式化以支持高效的处理。举例来说, 可结合每一 16位指令提供四个预解码位(Pd4),且可结合每一 32位指令提供两组Pd4位。 依据需要存储在预解码位中的信息,可预解码2个位、3个位或多于3个位并将其连同相关 联的指令一起存储在Ll I高速缓冲存储器线中。
图3A说明可合适地含有16位和32位的不同长度指令的示范性程序段300。示范 性程序段300可合适地存储在指令流逻辑200的存储器层级中,包含Ll I高速缓冲存储器 206和L2高速缓冲存储器208。应注意,尽管为了说明目的而假定程序段是从一个或一个 以上高速缓冲存储器线检索的,但本发明的教示适用于存储程序段的其中可变长度指令可 跨越存储段边界的任何存储器装置。一般来说,术语“高速缓冲存储器线”也可称为指令串 或指令流。由于高速缓冲存储器线可具有固定长度,因此术语“指令串”或“指令流”是指可 跨越高速缓冲存储器线的边界且可具有越过边界而分裂的指令的一个或一个以上程序段。程序段300包含指令302,其来自由16位和32位指令组成的可变长度指令组。举 例来说,处理器204可针对多种类型的指令使用16位和32位指令格式,且可支持指定并限 制指令类型使用的若干操作模式。举例来说,处理器204可具有指定可使用仅32位指令的 第一操作模式,以及指定可使用16位指令与32位指令的组合的第二操作模式。虽然处理 器可具有多种操作模式,但为了本发明的论述的清楚起见,对示范性处理器204的描述主 要限于上文所述的第二操作模式。为了说明各种实施例,在图3A中说明若干示范性16位和32位指令。出于说明目 的,程序相对字节指示符304表示高速缓冲存储器线中指令开始的字节位置,且间接地指 示指令的大小。举例来说,ADD R5、R4、R3指令306在相对字节位置00处开始,且在字节位 置01处结束。因此ADD R5、R4、R3指令306是16位指令。类似地,ADD指令309的长度也 是16位。加载(LOAD)指令307、LOAD指令308和存储(STORE)指令310的长度是32位。依据(例如)处理器和存储器层级的设计中基于所使用的制造技术而作出的选 择,高速缓冲存储器线大小在不同的处理器实施方案中可不同。举例来说,L2高速缓冲存 储器208可使用256位或512位高速缓冲存储器线,且Ll高速缓冲存储器206可使用较小 的高速缓冲存储器线,例如128位高速缓冲存储器线。请注意,出于说明性目的,已将程序 段300展示为在相对地址00处开始。将了解,此程序段300可定位为在高速缓冲存储器线 中的各个点处开始,且可跨越于多个高速缓冲存储器线之间。图3B说明含有来自图3A的程序段300的指令的示范性Ll I高速缓冲存储器线 350。示范性第一 Ll I高速缓冲存储器线320和示范性第二 Ll I高速缓冲存储器线322是 图2的Ll I高速缓冲存储器206中的相邻的高速缓冲存储器线。举例来说,第一 Ll I高 速缓冲存储器线320由多个20位字段组成,其中每一 20位字段(例如20位字段326)由 16位字段327与相关联的4位预解码(Pd4)字段328组成。在此实例中,Ll高速缓冲存储 器将128个位用于指令,且还需要额外的空间以用于八个Pd4字段,从而产生160位Ll高 速缓冲存储器线。单个4位Pd4字段用于16位指令,且两个Pd4字段用于32位指令。4位Pd4字段可含有与Pd4字段相关联的指令或指令区段的至多达十六个经编码特性。举例来 说,编码可指示所述指令是加载或存储指令、算术指令还是需要微码支持的复合指令。编码 还可指示相关联的一组16个指令位的是32位指令的前一半还是单独的16位指令,所述指 令是否为分支类型的指令等等。编码可进一步指示无法获得有效的预解码信息,且相应地 对Pd4位进行标记。Pd4信息在指令对准、解码中是有用的,且可用于其它目的,例如分支处 置。图3A的程序段300的指令可位于Ll高速缓冲存储器线中,以图3A的16位ADDR5、 R4、R3指令306开始,且其相关联的Pd4字段分别存储在Ll高速缓冲存储器线段327和328 中。图3A的32位LOAD指令307和其相关联的Pd4字段被组织成段330,且以不同于单个 16位指令的方式存储在Ll高速缓冲存储器线中。出于说明性目的,16位Ll高速缓冲存储 器线段331含有LOAD指令307的高阶16个位。Pd4字段332提供用于32位LOAD指令的 预解码信息,而接下来的16位Ll高速缓冲存储器线段333含有LOAD指令307的低阶16 个位。Pd4字段334含有用于32位LOAD指令307的额外预解码信息。由于其它程序段可 能在不同时间占用高速缓冲存储器线,所以可使用Pd4字段334以支持16位指令,所述16 位指令(例如)存储在16位Ll高速缓冲存储器线段333中。Ll高速缓冲存储器线中的下一指令是图3A的32位LOAD指令308,其越过两个指 令高速缓冲存储器线而存储。LOAD指令308的高阶16个位连同其相关联的预解码位字段 作为20位段336存储在第一 Ll I高速缓冲存储器线320中,20位段336由16位字段337 和4位Pd4字段338组成。LOAD指令308的低阶16个位连同其相关联的Pd4位字段作为 20位段340存储在第二 Ll I高速缓冲存储器线322中,20位段340由16位字段341和4 位Pd4字段342组成。ADD R8、R6、R7指令309和STORE指令310 (均见图3A)以类似于段 326和330的方式存储在第二 Ll I高速缓冲存储器线322中。请注意,对于仅32位指令的第一操作模式,所有指令均根据架构定义而位于字对 准边界上。对于此第一操作模式,程序段由仅32位指令(未图示)组成,所述指令并不越 过指令高速缓冲存储器线边界。本发明的一个方面涉及确定关于越过指令高速缓冲存储器线边界的指令的预解 码信息以及填充预解码修复高速缓冲存储器。本发明的另一方面涉及执行跨越两个高速缓 冲存储器线的指令以改进处理器性能且节省电力。下文更详细地描述本发明的这些和其它 方面。返回参看图2的指令流逻辑200,处理器204通过在Ll I高速缓冲存储器输入总 线228上提供待提取的指令的地址(提取地址),来起始从Ll I高速缓冲存储器206提取 指令,且可在提取时提供当前程序指定的操作模式状态信息。提取时的操作模式状态信息 可包含处理器是处于在字对准边界上使用仅32位指令的第一操作模式,还是使用16位和 32位两种指令的第二操作模式,还是其它处理器模式。如果在Ll I高速缓冲存储器206中发生未中,那么处理器204继续从L2高速缓 冲存储器208提取指令,或者如果在L2高速缓冲存储器208中未找到所述指令,那么从系 统存储器提取所述指令。在因存储器存取定时导致的等待时间之后,从系统存储器或从L2 高速缓冲存储器输出234提供指令,且将所述指令耦合到预解码器214以产生预解码位。通 过部分地解码所述指令来产生预解码四个位(Pd4)。在合适的高速缓冲存储器线地址处将
9指令的16位字段和其相关联的Pd4位写入到Ll I高速缓冲存储器。经预解码的指令和Pd4位存储在填充缓冲器216中,且从填充缓冲器216分配到 多路复用器222和Ll I高速缓冲存储器206。对于指令,例如图3A的LOAD指令308 (其跨 越Ll I高速缓冲存储器线320和322),将存储在图3B的段338中的Pd4位设置为指示相 关联的16位字段337是32位指令的高阶16个位,且LOAD指令308越过高速缓冲存储器 线边界。在这一点处,LOAD指令308的第二半是不可用的。强行从L2高速缓冲存储器208 或从系统存储器进行第二次提取以获得LOAD指令308的第二半的技术通常实施起来将较 昂贵,且将影响处理器性能。不是强行提取LOAD指令的第二半,而是将在自然程序进程中 提取下一高速缓冲存储器线。将LOAD指令308的高阶16个位加载到指令对准(IDA)管线级250中。在提取下 一指令高速缓冲存储器线之后,将LOAD指令308的低阶16位一半加载到IDA管线级250 中。使在指令对准级250中接收到的指令对准,且使其准备就绪以用于后续的处理器预解 码器252和解码器254管线级。在解码器254之后,选择经解码的指令以穿过多路复用器 256,且可在将所述指令加载到解码寄存器258中之前进一步在解码器257中对所述指令进 行解码,所述指令从解码寄存器258继续执行。处理器预解码器252形成新的Pd4预解码 位,作为用于所述指令的经修复的预解码信息。Ll I高速缓冲存储器206中的指令的地址 和经修复的预解码信息经由预解码修复总线260传送到预解码修复高速缓冲存储器210。 随后将所述地址和新的PD4位存储在预解码修复高速缓冲存储器中。在替代实施例中,指 令、地址和其相关联的新Pd4位可经由预解码修复总线260传送并存储在预解码修复高速 缓冲存储器中。在命中跨线LOAD指令308的后续提取后,检索存储在预解码修复高速缓冲存储器 210中的信息(例如指令和新的Pd4位),并使用新的Pd4位代替来自与Ll I高速缓冲存 储器206的指令一起存储的Pd4位。在命中或未中信号261上指示预解码修复高速缓冲存 储器210中的命中。预解码修复高速缓冲存储器输出总线262将预解码修复高速缓冲存储 器210耦合到多路复用器222,多路复用器222耦合到IDA级250。在使用预解码修复高速 缓冲存储器所存储的Pd4位的情况下,来自IDA级250的指令在IDA总线264上直接前进 到解码器266,接着酌情在解码器257中进一步解码,且随后前进到解码寄存器258,绕过在 处理器预解码器252中遇到的多个周期。在跨线指令位于程序环路中的情形下,可通过使 用来自预解码修复高速缓冲存储器210的经修复的预解码信息而不必在每次穿过环路时 都经过处理器预解码器252管线级来节省相当大的性能。图4A说明示范性Ll I高速缓冲存储器段400。Ll I高速缓冲存储器段400包含 第一 80位Ll I高速缓冲存储器线402和第二 80位Ll I高速缓冲存储器线404。所述高 速缓冲存储器线中的每一者由20位的区段406到409组成,其包含16位指令字段和Pd4 字段。示范性程序段存储在高速缓冲存储器线402和404中,由20位字段划分且由20位 字段0-7和相关联的16位或32位指令A-E来标记。实例程序段包含由单个20位字段(0, A) 411组成的16位指令A、由两个20位字段(1,B) 412和(2,B) 413组成的32位指令B、 由(3,C) 414和(4,C) 415组成的32位指令C、由(5,D) 416组成的16位指令D以及由(6, E)417和(7,E)418组成的32位指令E。存储在LlI高速缓冲存储器段400中的程序段类 似于图3A的程序段300。此程序段用于说明图2的指令流逻辑200中的操作的处理器管线级。对图4B的管线级图420和图4C的管线级图450的描述也涉及图2的指令流逻辑。图4B说明用于准备预解码修复高速缓冲存储器条目的管线级图420。管线级图 420由时间周期‘4”422、‘4+1”423等直到‘4+7”429组成。管线级被说明为行,且包含指令高 速缓存级I(ICl)430、指令高速缓存级2 (IC2)431、指令对准级(IDA)432、解码级(DCD)433 和修复级434。管线序列在时间“t”422处以含有指令A,(0,A)411 ;指令B,(1,B)41 2和(2,
B)413 ;以及指令C,(3,0414的前一半的第一 Ll I高速缓冲存储器线402进入指令高速 缓存级I(ICl) 430 (例如Ll指令高速缓冲存储器206的ICl 218)而开始。此状态在管线 级图420中在行ICl 430中被说明为时间“t” 422处的16位字段0_3。在时间“t+1” 423处,第一 Ll I高速缓冲存储器线402进入指令高速缓存级 2 (IC2) 431,例如Ll指令高速缓冲存储器206的IC2 220。此外,在时间“t+Ι ”423处,含有 指令C,(4,C) 415的第二半;指令D,(5,D) 416以及指令E,(6,E) 417和(7,E) 418的第二 Ll I高速缓冲存储器线404进入ICl 430,如ICl 218。此状态在管线级图420中在行ICl 430中被说明为时间“t+l”423处的16位字段4-7。此时还接收到由Mctl信号261指示的 预解码修复高速缓冲存储器210中的未中,其指示用于跨越两个高速缓冲存储器线的指令 C的预解码位尚未修复。在时间“t+2”424处,第一 Ll I高速缓冲存储器线402穿过多路复用器222进入 指令对准(IDA)管线级432,例如处理器204的IDA 250。在这一点处,确定指令C的仅一 半存在于高速缓冲存储器线中。在此示范性场景中,指令C的第二半在IC2 431(例如管线 的IC2 220级)中。此外,使来自下一所提取的高速缓冲存储器线的指令进入到指令高速 缓存级I(ICl)430 (例如Ll指令高速缓冲存储器206的ICl 218)中。这些接下来的指令 被说明为“…”以指示提取下一组指令。在时间“t+3”425处,具有有效预解码位(Pd4)的指令A和B (例如)通过经由IDA 总线264传送到解码寄存器258而进入解码D⑶管线级433。此状态被说明为管线的D⑶ 433级中的A/B。指令C的第二半从IC2级431获得,且与指令C的第一半组合,从而在IDA 级432中产生指令C,3C/4C,其具有无效的预解码位。由来自第二 LlI高速缓冲存储器线 404的指令D (5,D) 416和指令E (6,E) 417和(7,E) 418组成的指令D和E保留在管线的IC2 级431处。在时间“t+4”426处,在处理器预解码器252中预解码指令C,(3,C)414和(4,
C)415,且将结果加载到预解码修复高速缓冲存储器210的前端中。此状态被说明为预解码 修复的第一周期,且展示为时间“t+4”426和修复级434处的“1”。还使预解码器结果可供 解码器254使用。指令(5,D) 416和指令E,(6,E)417和(7,E) 418保留在管线的IC2级 431 处。在时间“t+5”427处,将预解码器252的结果(例如有效预解码位)加载到预解码 修复高速缓冲存储器210中。此状态被说明为修复的第二周期,如展示为时间“t+5”427和 修复级434处的“2”。对指令C的解码也在此时进行。指令(5,D)416和指令E,(6,E)417 和(7,E)418保留在管线的IC2级431处。在时间“t+6”428处,指令C的解码结果由多路复用器256选择,可进一步在解码 器257中解码,并保存在解码寄存器258中。指令(5,D)416以及指令E (6,E)417和(7,E)418进入IDA级432,例如处理器204的IDA级250。在时间“t+7” 429处,指令D和E到达解码寄存器258,且继续执行。由于指令C 跨越两个高速缓冲存储器线,所以使用个周期的管线泡(pipeline bubble)来修复用 于指令C的预解码位,并将所述预解码位存储在预解码修复高速缓冲存储器210中。所述
个周期中的两个周期被说明为画圈部分435,且1/2个周期被展示为画圈部分436。图4C是说明用以通过从预解码修复高速缓冲存储器提取用于跨线指令的有效 预解码位来节省电力的操作的处理器管线级图450。管线级图450由时间周期“t”452、 “t+l”453等直到“t+6”458以及管线级组成,所述管线级包含指令高速缓存级1 (ICl) 460、 指令高速缓存级2 (IC2) 461、指令对准级(IDA) 462、解码级(DCD) 463和修复级464。管线序列在时间“t”452处以第一 Ll I高速缓冲存储器线402开始(第一 Ll I 高速缓冲存储器线402含有指令A411、B412和413以及指令C414的前一半),从而进入指 令高速缓存级I(ICl) 460,例如Ll指令高速缓冲存储器206的ICl 218。此状态在管线级 图450中在行ICl 460中说明为时间“t” 452处的16位字段0_3。在时间“t+1” 453处,第一 Ll I高速缓冲存储器线402进入指令高速缓存级 2 (IC2) 461,例如Ll指令高速缓冲存储器206的IC2 220。此外,在时间“t+Ι ”453处,含有 指令C,(4,C) 415的第二半;指令D (5,D) 416以及指令E,(6,E) 417和(7,E) 418的第二 Ll I高速缓冲存储器线404进入ICl 460,例如ICl 218。此状态在管线级图450中在ICl 460 中说明为时间“t+l”453处的16位字段4-7。还接收到由Mctl信号261指示的预解码修 复高速缓冲存储器210中的命中,其向指令流逻辑200指示用于跨越高速缓冲存储器线的 指令C的预解码位已被修复。在时间“t+2”454处,第一 Ll I高速缓冲存储器线402进入指令对准(IDA)管线级 462,例如处理器204的IDA 250。在这一点处,确定指令C的仅一半存在于高速缓冲存储器 线中。在此示范性场景中,指令C的第二半在IC2 461(例如管线的IC2 220级)中。由于 预解码修复高速缓冲存储器210中存在命中,所以用于指令C的有效预解码位是可用的。此 外,来自下一所提取的高速缓冲存储器线的指令被输入到指令高速缓存级1 (ICl) 460 (例 如Ll指令高速缓冲存储器206的ICl 218)中。接下来的这些指令被说明为指令“8_11”, 其中8-n群组的第一指令为指令“F”,其可为16位或32位指令。在时间“t+3”455处,指令A和B具有有效预解码位(Pd4)并(例如)通过传送到 解码寄存器258而进入解码D⑶管线级463。此状态被说明为管线的D⑶463级中的A/B。 指令C的第二半是从IC2级461获得,与指令C的第一半组合,且进一步与来自预解码修复 高速缓冲存储器210的有效预解码位组合,以在IDA级462中产生完整的指令C。所述组 合是通过多路复用器222来控制,多路复用器222受Mctl信号242和IDA管线级250中的 对准逻辑控制。举例来说,从预解码修复高速缓冲存储器210提取的经修复的预解码信息 可具有第一部分(例如第一组经修复的预解码位)和第二部分(例如第二组经修复的预解 码位)。多路复用器222可选择经修复的预解码位的第一部分和第二部分以及来自指令C 的指令位,以进入指令对准(IDA)管线级250。IDA管线级250使选定位对准,且用有效的 经对准预解码信息来产生重新汇编的指令。来自第二 Ll I高速缓冲存储器线404的指令 D(5,D)416和指令E(6,E)417禾口 (7,E)418保留在管线的IC2级461中。指令8-11保留在
12ICl 级 460 中。在时间“t+4”456处,由(3,C) 414和(4,C) 415组成的指令C/-进入解码DCD管 线级463,从而(例如)传送到解码寄存器258。指令(5,D)416、(6,E)417和(7,Ε) 418进 Λ IDA管线级462。接下来的指令“8-11”进入IC2级461。在时间“t+5”457处,指令D,(5,D) 416和由(6,E) 417和(7,E) 418组成的指令E 进入解码D⑶管线级463。从时间“t+6”458开始并持续,处理对来自下一指令群组“8-11” 的其余指令继续。如图4C的处理器管线级图450中所说明,画圈部分435 (其表示在图4B的处理器 管线级图420中发生的管线泡)的2个周期被取消,从而节省了电力并改进了性能。图5是在Ll I高速缓冲存储器中的未中时遵循的且用于准备到预解码修复高速 缓冲存储器的条目的操作步骤的过程500。在框502处,向Ll I高速缓冲存储器的提取导 致未中。在框504处,处理器从L2高速缓冲存储器或系统存储器提取指令,其中指令具有 两种类型。第一类型指令以第一长度(例如16位)格式化,且第二类型指令以第二长度格 式化。第二长度(例如32位)比第一长度长。在框506处,将指令串布置到一个或一个以 上Ll I高速缓冲存储器线中。举例来说,可提取单个高速缓冲存储器线且将其布置在高速 缓冲存储器线(例如图3B的第一 Ll I高速缓冲存储器线320)中。在框508处,预解码指 令串,从而产生用于经部分解码的指令的预解码信息。在决策框510处,确定是否找到作为跨越两个层1指令高速缓冲存储器线之间的 跨线指令且具有位于第一线上的第一部分的第二类型指令。如果未找到跨线指令,那么过 程500前进到决策框512。在决策框512处,确定有效的预解码信息是否可供管线化指令 使用。如果有效的预解码信息可供管线化指令使用,那么过程500前进到框514。在框514 处,(例如)通过选择IDA总线264从而绕过在图2的处理器预解码器252中遇到的多个 周期来绕过处理器预解码器级。在框515处,对指令进行解码,其可包含在可实施的解码器 266和解码器257中的解码。在框516处,指令流逻辑200继续指令执行。返回到决策框512。如果确定有效的预解码信息不可供管线化指令使用,那么过程 500前进到框518。可(例如)通过检查从自Ll I高速缓冲存储器206中提取的指令获得 的Pd4位来确定有效的预解码信息。Pd4位可指示(例如)指令的前16位是跨线指令的 一部分,且有效的预解码信息不可供跨线指令使用。在框518处,管线化指令进入处理器预 解码器级,例如图2的处理器预解码器252,其产生经修复的预解码信息,例如新的预解码 位。在决策框520处,确定是否存在跨线指令。如果不存在跨线指令,那么过程500前进到 框522。在框522处,管线化指令进入解码器级,例如图2的解码器254。在解码器级之后, 过程500前进到框516以继续指令执行。返回决策框520,在此处确定存在跨线指令。过程500前进到框524。在框524处, 将与跨线指令相关联的新的预解码位写入到预解码修复高速缓冲存储器,例如图2的预解 码修复高速缓冲存储器210。随后过程500前进到框522,以提供对管线化指令的解码。过 程500随后前进到框516以继续指令执行。返回决策框510,在此处确定存在跨线指令。在决策框524处,确定跨线指令的第 二部分是否可用。如果跨线指令的第二部分可用,那么过程500前进到决策框512,并按上 文所指继续。如果在决策框524处确定跨线指令的第二部分不可用,那么过程500前进到框526。在框526处,提取指令串以获得跨线指令的第二部分。举例来说,此指令串可从填充缓冲器216或Ll I高速缓冲存储器206提取。过程500随后前进到决策框512,并按上 文所指继续。图6是当从Ll I高速缓冲存储器提取跨线指令时所遵循的操作步骤的流程图 600。在框602处,提取指令。在决策框604处,确定跨线指令的第一部分是否在Ll I高速 缓冲存储器(例如图2的Ll I高速缓冲存储器206)中。如果跨线指令的第一部分不在Ll I高速缓冲存储器中,那么记录未中,且过程600前进到图5的过程500的框502。如果跨线 指令的第一部分在Ll I高速缓冲存储器中,那么记录命中,且过程600前进到决策框606。在决策框606处,确定跨线指令的第二部分是否在Ll I高速缓冲存储器中。如果 跨线指令的第二部分不在Ll I高速缓冲存储器中,那么记录未中,且过程600前进到图5 的过程500的框526。如果跨线指令的第二部分在Ll I高速缓冲存储器中,那么记录命中, 且过程600前进到决策框608。在决策框608处,确定指令提取地址是否在预解码修复高速缓冲存储器(例如图2 的预解码修复高速缓冲存储器210)中命中。如果指令提取地址未在预解码修复高速缓冲 存储器中命中,那么记录未中,且过程600前进到图5的过程500的框518。如果指令提取 地址确实在预解码修复高速缓冲存储器中命中,那么记录命中,且过程600前进到框610。 在框610处,将来自Ll I高速缓冲存储器的跨线指令的第一部分和第二部分与从预解码修 复高速缓冲存储器提取的预解码修复位组合。组合器可由多路复用器(例如多路复用器 222)和对准逻辑(例如可在IDA管线级250中找到)组成。过程600随后前进到图5的过 程500的框514。为了维持正确的操作,与处理器204相关联的指令流逻辑200或代码的一部分跟 踪Ll I高速缓冲存储器的操作。举例来说,每当Ll I高速缓冲存储器被冲洗时,预解码修 复高速缓冲存储器也被冲洗。此外,每当Ll I高速缓冲存储器被写入时,预解码修复高速 缓冲存储器中的现有条目失效。也应注意,随着在特定实施方案中Ll I高速缓冲存储器线的宽度减小,预解码修 复高速缓冲存储器的大小将趋向于增加,因为跨线指令的百分比将趋向于增加。举例来说, 对于160个位的Ll I高速缓冲存储器线,两个预解码修复高速缓冲存储器线对于许多应用 来说可能是足够的。本发明不限于所说明的指令流逻辑200,且进一步适用于具有可变长度指令的在 指令高速缓冲存储器中存储预解码信息的任何管线处理器。本发明可容纳可变长度处理器 指令的扩展部分,前提是所述扩展部分支持指令组使用的唯一模式,使得可选择性地控制 预解码信息,从而节省写入和读取电力。举例来说,可指定操作模式,其中16位、32位和64 位指令可操作,使得32位和64位指令可跨越两个Ll I高速缓冲存储器线。使用64位指 令类型的处理器可为上文所述的示范性处理器204的扩展部分。扩展的处理器可具有(例 如)针对以下状态而编码的操作模式状态仅限于32位指令的第一状态;用于16位和32 位两种指令的第二状态;用于16位、32位和64位指令的第三状态以及仅限于64位指令的 第四状态。I高速缓冲存储器线中的64位指令可被划分成四个20位字段,其中每一 20位 字段具有64位指令的区段以及相关联的Pd4字段。对于Ll I高速缓冲存储器线中的64位 指令,将针对整个64位指令使用与64位指令的16位字段中的每一者相关联的Pd4字段。
本发明也不限于为二的幂的指令长度。举例来说,考虑具有16位和24位指令的 替代架构。在此实例中,可将指令高速缓冲存储器线划分成8位指令区段和2位预解码区 段。16位指令可由20个位组成,所述20个位(例如)组织成{8个位,2个位的Pd2,8个 位,2个位的Pd2}。24位指令可由30个位组成,所述30个位(例如)组织成{8个位,2个 位的Pd2,8个位,2个位的Pd2,8个位 ,2个位的Pd2}。存储16位指令的160位高速缓冲存 储器线将能够保持八个16位指令,其针对总共160个位组织成八个20位区段,其中所有位 均完全被利用。存储24位指令的160位高速缓冲存储器线将能够保持五个24位指令,其 针对总共150个位组织成五个30位区段,其中线中的其余10位未被利用。虽然已在目前优选的场境中揭示了本发明,但将认识到,本教示可适合于与本发 明和所附权利要求书一致的多种场境。
权利要求
一种填充预解码修复高速缓冲存储器的方法,所述方法包括提取指令的存储在第一高速缓冲存储器线中的第一部分;提取所述指令的存储在下一高速缓冲存储器线中的第二部分;在处理器管线级中预解码所述指令的所述第一和所述第二部分,以形成经修复的预解码信息;以及利用与所述指令相关联的地址在所述预解码修复高速缓冲存储器中写入所述经修复的预解码信息。
2.根据权利要求1所述的方法,其中将所述指令的所述第一和第二部分存储在层1指 令高速缓冲存储器中。
3.根据权利要求1所述的方法,其进一步包括在所述预解码之前,确定所述所提取的指令是否含有有效的预解码信息。
4.根据权利要求3所述的方法,其进一步包括利用与指令高速缓冲存储器中的所述指令相关联的地址从所述预解码修复高速缓冲 存储器中提取预解码信息;在所述预解码修复高速缓冲存储器中的所寻址的位置处未中;以及 响应于确定有效的预解码信息不可用,在所述预解码修复高速缓冲存储器中写入所述 经修复的预解码信息。
5.根据权利要求1所述的方法,其中所述第一高速缓冲存储器线保持以至少两种不同 长度格式化的指令。
6.根据权利要求1所述的方法,其中在与所述指令的所述第一部分相关联的第一组预 解码位和与所述指令的所述第二部分相关联的第二组预解码位中对所述预解码信息进行 编码。
7.根据权利要求2所述的方法,其进一步包括每当所述层1指令高速缓冲存储器被冲洗时,冲洗所述预解码修复高速缓冲存储器。
8.根据权利要求2所述的方法,其进一步包括每当一条目被写入到所述层1指令高速缓冲存储器时,使所述预解码修复高速缓冲存 储器中的条目失效。
9.一种用于执行跨越两个高速缓冲存储器线的指令的方法,所述方法包括提取跨越两个高速缓冲存储器线的指令的第一部分,所述指令的所述第一部分存储在 指令高速缓冲存储器中的第一高速缓冲存储器线中;从与所述指令高速缓冲存储器分开的预解码修复高速缓冲存储器中提取与所述指令 相关联的预解码信息;提取所述指令的存储在所述第一高速缓冲存储器线之后的下一高速缓冲存储器线中 的第二部分;以及响应于所述预解码信息而执行所述指令。
10.根据权利要求9所述的方法,其进一步包括将所述预解码信息与所述指令的所述第一和第二部分组合,以产生具有有效的经对准 预解码信息的经重新汇编的指令。
11.根据权利要求10所述的方法,其中所述将所述预解码信息与所述指令的所述第一和第二部分组合进一步包括选择所述预解码信息的第一部分和第二部分;从所述指令高速缓冲存储器中选择所述指令的所述第一部分和所述第二部分;以及 使所述预解码信息的所述第一部分和所述第二部分与所述指令的所述第一部分和所 述第二部分对准,以产生具有有效的经对准预解码信息的经重新汇编的指令。
12.根据权利要求9所述的方法,其中所述指令的所述第一部分包括第一组指令位和 相关联的第一组预解码位,且所述指令的所述第二部分包括第二组指令位和相关联的第二 组预解码位。
13.根据权利要求12所述的方法,其进一步包括预解码所述第一组指令位以形成第一组经修复的预解码位;以及 预解码所述第二组指令位以形成第二组经修复的预解码位。
14.根据权利要求13所述的方法,其进一步包括选择所述第一组经修复的预解码位以代替所述第一组预解码位; 选择所述第二组经修复的预解码位以代替所述第二组预解码位;以及 响应于已修复所述预解码信息而绕过处理器预解码器级。
15.一种用于利用预解码修复高速缓冲存储器的设备,所述设备包括指令高速缓冲存储器,其可操作以在指令高速缓冲存储器线中存储具有至少第一长度 和第二长度的指令,所述第二长度比所述第一长度长;预解码器,其可操作以预解码从所述指令高速缓冲存储器中提取的具有无效预解码信 息的指令,以形成经修复的预解码信息;以及预解码修复高速缓冲存储器,其可操作以存储与跨越所述指令高速缓冲存储器中两个 高速缓冲存储器线的具有所述第二长度的指令相关联的所述经修复的预解码信息。
16.根据权利要求15所述的设备,其进一步包括组合器,其可操作以将从所述预解码修复高速缓冲存储器中提取的经修复的预解码信 息与具有所述第二长度的指令的第一部分和第二部分组合,以产生具有有效的经对准预解 码信息的经重新汇编的指令。
17.根据权利要求15所述的设备,其进一步包括围绕所述预解码器的旁路路径,其可操作以针对从所述指令高速缓冲存储器中提取的 具有有效预解码信息的指令绕过所述预解码器。
18.根据权利要求16所述的设备,其进一步包括围绕所述预解码器的旁路路径,其可操作以针对所述具有有效的经对准预解码信息的 经重新汇编的指令绕过所述预解码器。
19.根据权利要求16所述的设备,其中所述组合器包括多路复用器,其可操作以利用与具有所述第二长度的指令相关联的地址来选择从所述 预解码修复高速缓冲存储器中提取的经修复的预解码信息的第一部分和第二部分,且选择 从所述指令高速缓冲存储器中提取的具有所述第二长度的所述指令的第一部分和第二部 分;以及对准逻辑,其可操作以将所述经修复的预解码信息的所述第一部分与具有所述第二长 度的所述指令的所述第一部分组合,且将所述经修复的预解码信息的所述第二部分与具有所述第二长度的所述指令的所述第二部分组合。
20.根据权利要求18所述的设备,其中当所述预解码器被绕过时,所述预解码器被选 通关断。
全文摘要
本发明描述处理器中的一种预解码修复高速缓冲存储器,其能够提取和执行可变长度指令,所述可变长度指令具有可在一程序中混合的具有至少两个长度的指令。指令高速缓冲存储器可操作以在指令高速缓冲存储器线中存储具有至少第一长度和第二长度的指令,所述第二长度比所述第一长度长。预解码器可操作以预解码从所述指令高速缓冲存储器提取的具有无效预解码信息的指令,以形成经修复的预解码信息。预解码修复高速缓冲存储器可操作以存储与跨越所述指令高速缓冲存储器中两个高速缓冲存储器线的具有所述第二长度的指令相关联的所述经修复的预解码信息。本发明还描述用于填充所述预解码修复高速缓冲存储器和用于执行跨越两个高速缓冲存储器线的指令的方法。
文档编号G06F9/30GK101878467SQ200880118233
公开日2010年11月3日 申请日期2008年10月31日 优先权日2007年11月2日
发明者布莱恩·迈克尔·斯坦普尔, 戴维·约翰·曼德扎克, 罗德尼·韦恩·史密斯, 詹姆斯·诺里斯·迪芬德尔费尔 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1