用于高速缓存可变长度指令的方法及设备的制作方法

文档序号:6454684阅读:140来源:国知局
专利名称:用于高速缓存可变长度指令的方法及设备的制作方法
技术领域
本发明大体来说涉及指令高速缓存,且更特定来说涉及高速缓存可变长度指令。
背景技术
微处理器的字长度可表示其基本数据工作单元的长度(以位或字节计)。例如, 32位的微处理器具有32位(4个字节)的标称字长度。指令通常以统一长度指令集 的形式存储在存储器的自然字边界上。然而,某些微处理器使用可变长度指令,例如 32位与16位指令混合或64位与32位指令混合。对较短长度指令的支持在某些情况 下可提供旧型兼容性,且至少为可利用较短指令的应用程序提供较小指令存储器占用 面积的机会。
然而,实现存储器节省要求将可变长度指令存储在非自然边界上。其中指令不必 一定存储在自然字边界上的存储器可被视为未经对准存储器,而其中指令存储在自然 字边界上的存储器可被视为经对准存储器。作为可使用未经对准的存储器的一个实 例,ARM v7系列的微处理器支持字及半字指令,且允许跨越4个字节的边界存储4 个字节的指令。
虽然使用未经对准的存储器来存储指令可节省空间,但用于增强指令执行性能的 较低等待时间指令缓冲器通常使用自然字对准。例如,高速缓冲存储器通常组织成缓 冲外部存储器的字对准段(线)的高速缓存线,所述外部存储器可以是主存储器或者 更高层级的高速缓冲存储器。
将未经对准的指令读入到经对准的高速缓存线中意味着所述高速缓存线中的边 界位置可包含或可不包含完整的指令字。也就是说,字长度指令可跨越若干高速缓存 器边界。线间边界(即,从一个高速缓存线到下一高速缓存线的转折)表示一种类型 的高速缓存器边界,而线内边界(例如每一高速缓存线内的字对准段边界)则表示另 一种类型的高速缓存器边界。段边界可起因于对小于总高速缓存线宽度的字对准读取 端口的使用。
从常规的高速缓存器检索跨边界指令需要进行两次存取读出边界位置之前的指 令数据的第一存取及读取所述边界位置之后的指令数据的第二存取。所述第二存取检 索跨界指令的尾部(边界后)部分。很明显,高速缓冲存储器中未对准指令的普遍存 在可对整体高速缓存性能产生负面影响,因为需要额外的高速缓存器读取来检索未对
准跨边界指令的尾部部分。

发明内容
根据本文中教示的方法及设备,指令高速缓存器控制器使用补充存储器来存储对 应于高速缓存器边界位置的经高速缓存指令数据的冗余副本,且借此启用随后对跨越 所述边界位置的指令的单个高速缓存存取检索。在一个或一个以上实施例中,所述高 速缓存器控制器复制所述补充存储器中的边界后位置的指令数据,且将所述经复制数 据多路复用到可从边界前位置获得的高速缓存数据中。
一种高速缓存器控制器及方法的一个实施例通过将指令数据写入到高速缓存线 并针对所述线中的一个或一个以上边界位置将所述指令数据的冗余副本(例如,每一 边界后位置处的半字)存储在所述边界位置来高速缓存指令。此类操作启用基于从高 速缓存线读取边界前数据及从用于存储边界数据的辅助存储器读取边界后数据从高 速缓存器对全部的未经对准指令的检索。
在高速缓存器控制器的一个实施例中,所述控制器经配置以将指令数据的存储引 导到包含在指令高速缓存器中的高速缓存线,且引导一个或一个以上高速缓存器边界 位置的指令数据的冗余副本的存储。所述冗余数据存储在辅助存储器中,例如与指令 高速缓存器相关联的标签阵列、包含在所述指令高速缓存器中或与所述高速缓存器相 关联的一个或一个以上额外存储器元件、单独的存储器阵列或较高层级的高速缓存 器。
高速缓存器控制器可包含在微处理器中。在一个实施例中,所述微处理器包括指 令高速缓存器及高速缓存器控制器。所述指令高速缓存器经配置以高速缓存指令数据 线,且所述高速缓存器控制器经配置以将对应于所述高速缓存线的边界位置的指令数 据的冗余副本存储在辅助存储器中。所述辅助存储器可集成在包括所述高速缓存线的 高速缓冲存储器中,或可实施于高速缓存器控制器或微处理器中其它处。
当然,本发明不限于上述实施例。在阅读以下详细说明且参看附图后,所属技术 领域的技术人员将认识到额外的可能的实施例。


图1是图解说明指令高速缓存器及辅助存储器的实施例的方块图。 图2是图解说明用于高速缓存可变长度指令的程序逻辑的实施例的逻辑流程图。 图3是图解说明用于检索经高速缓存的可变长度指令的程序逻辑的实施例的逻 辑流程图。
图4是图解说明指令高速缓存器及辅助存储器的另一实施例的方块图。 图5是图解说明指令高速缓存器及辅助存储器的又一实施例的方块图。 图6是图解说明包含指令高速缓存器及辅助存储器的微处理器的实施例的方块图。
具体实施例方式
图1图解说明指令高速缓存器IO及包含在高速缓存器IO或与高速缓存器10相 关联的辅助存储器12的实施例。针对指令高速缓存器10的指令高速缓存事务由控制 器14来管理,控制器14经配置以使用辅助存储器12来存储高速缓存器10中的一个 或一个以上边界位置的指令数据的冗余副本。此外,控制器14管理从高速缓存器10 的指令数据检索,以便在单个存取中检索高速缓存器10中所存储的至少一些未对准 指令。控制器14通过将来自高速缓存器10的边界前数据与来自辅助存储器12的边 界后数据进行组合来启用从高速缓存器10对未对准指令的单个存取检索。
控制器14的这些操作因消除了或大大降低了会由高速缓存未经对准的指令导致 的性能损失而改善了高速缓存器性能。此操作改善了使用可变长度指令集且使用未经 对准的存储器来用于指令数据存储的系统的性能。也就是说,从较高层级的高速缓存 器或外部存储器(二者均未显示)接收以供存储在指令高速缓存器10中的指令数据 可包括具有不同长度的指令的混合,这意味着指令边界将未必匹配高速缓存器边界。 在此类环境下,高速缓存器控制器14使用一个或一个以上高速缓存器边界位置的边 界后数据的冗余存储来减少因将可变长度指令存储在固定宽度的高速缓存器中而导 致的高速缓存器边界侵犯的负面效应。
在某些实施例中,控制器14存储边界后指令数据,不论所述数据是否包含未对 准指令,即,具有跨越高速缓存器边界的一个或一个以上段的指令。同样,控制器 14不会确定特定的指令是否未对准。而是,针对高速缓存器10中的一个或一个以上 边界位置,控制器14将边界位置数据的冗余副本存储在辅助存储器12中来作为其定 期高速缓存器填充操作的一部分。在此类实施例中,控制器IO不会确定边界数据实 际上是否表示部分指令,其仅在边界数据表示存储在边界前位置的指令的尾部部分的 情况下复制边界后位置的指令数据。
举一个实例来说,每一高速缓存线均可具有表示半线读取端口宽度的段边界。控 制器14可经配置以以冗余方式存储(经由辅助存储器12)高速缓存线中紧靠段边界 之后定位的半字,以使其可与检索紧靠所述段之前而定位的半字相结合而被检索。另 外,或另一选择为,控制器14可经配置以将随后的高速缓存线中的第一半字视为半 字位置中处于隔开每一高速缓存线的线末端边界处的尾部部分。在此类配置中,就像 将指令数据的尾部部分存储在每一高速缓存线的末端位置一样,控制器14将指令数 据的冗余副本存储在每下一高速缓存线的开始位置。通过这种方式,可在单个高速缓 存存取中检索转折高速缓存线的指令。
操作的简便性是盲目地将边界位置复制到补充存储器12中的一个优点。也就是 说,控制器14的逻辑操作通过不试图确定高速缓存器中的边界位置实际上是否含有 跨越边界的指令数据而得以简化。然而,在其它实施例中,控制器14基于(例如) 可识别或至少暗示边界位置数据表示完整的半字指令还是跨边界的全字指令的预解码操作来选择性地存储边界位置数据的冗余副本。
根据此类实施例,控制器14响应于各种未对准指示符中的一者来选择性地确定 哪一指令数据将存储在辅助存储器12中。虽然控制器14包含支持对未对准指令数据 的识别及选择性存储的额外处理逻辑复杂性,但所述方法提供提高的辅助存储器12 利用效率,因为并未将边界位置数据盲目地写入到辅助存储器12中。然而,不论控 制器14盲目地还是选择性地将来自高速缓存器10的边界位置数据复制到辅助存储器 12中,此冗余指令数据存储均启用单个高速缓存存取指令检索。
更详细地说,指令高速缓存器10包括若干高速缓存线16-22,所述高速缓存线 还称为高速缓存块。每一高速缓存线16-22均经配置以存储从外部存储器源(未显示) 读取的一个或一个以上指令或指令段。每一高速缓存线16-22均具有固定的存储容量, 即,线大小,还可称为块大小。同样,存储在特定高速缓存线中的数据的最大量由指 令高速缓存器10的线大小来确定。另外,高速缓存线16-22可被进一步划分为若干 扇区,例如,如图1中图解说明的扇区零及一。在一个实施例中,扇区大小对应于与 指令高速缓存器10相关联的存储器端口大小。例如,指令高速缓存器10可具有32 字节的线大小及16字节的存储器端口宽度,从而每高速缓存线形成两个16字节的扇 区。同样,通过将两个16字节的数据群组写入到特定高速缓存线的两个扇区来填充 例示性高速缓存线16-22。所属技术领域的技术人员将容易地了解,可将高速缓存线 大小设置到任何期望值,且所述高速缓存线可进一步划分为任何期望数目的扇区。
指令高速缓存器10中存储的可变长度指令可跨越一个或一个以上高速缓存线边 界,且因此可是未对准的。辅助存储器12通过存储未对准指令段(即,跨越高速缓 存线边界存储的指令的段)的冗余副本而减少与未对准指令相关联的负面影响。指令 段可等同于与指令相关联的任何大小的数据序列,例如,字、半字、字节、半字节等。 同样,当指令高速缓存器10中存储的指令的一个或一个以上段位于高速缓存线边界 之外时,未对准段的冗余副本存储在辅助存储器12中。辅助存储器12包含用于存储 未对准指令段的若干个行24-30,每一行具有一个或一个以上列32-34。因此,未对准 指令段的冗余副本随后可供用于连同指令高速缓存器10中存储的指令的经对准段 (即,所述指令中不跨越高速缓存线边界的段) 一起进行同时存取。同样,可通过将 从指令高速缓存器10中读取的指令的经对准的段与从辅助存储器12读取的指令的未 对准段进行组合来在单个指令高速缓存存取期间检索高速缓存器10中存储的跨边界 指令。
在非限定性实例中,控制器14选择指令高速缓存器10的第一高速缓存线16来 用于指令数据的写入,如图2的步骤IOO所图解说明。第一指令(例如,具有四个段 AQ - A3的指令)被从外部存储器或另一高速缓存器检索以作为写入到选定的高速缓存 线的指令数据的一部分,如图2的步骤102所图解说明。所述第一指令具有跨越将第 一高速缓存线16中的扇区零与扇区一分隔开的高速缓存线内边界的两个段A2及A3。 同样,未对准指令段A2及A3的冗余副本A2'及A3'被写入到辅助存储器12,如图2的步骤104所图解说明。写入到第一高速缓存线16的指令数据还包括具有两个段Bo 与B,的第二指令的第一段B。。所述指令的剩余部分段B,存储在另一高速缓存线(例 如,第二高速缓存线18)中,来用作从外部存储器或另一高速缓存器检索的随后的 指令数据群组的一部分。例如,第一及第二指令数据群组被检索以用作填充高速缓存 器10的多个线的突发事务的一部分。
尽管存在致使第二指令段B,被写入到高速缓存器10的特定机制,第二段B,仍 以跨越高速缓存线间边界(例如,将高速缓存器IO的第一与第二高速缓存线16、 18 分隔开的高速缓存线间边界)的方式被存储。同样,未对准指令段B,的冗余副本B, '存储在辅助存储器12中。随后由控制器14检索的第三指令数据群组包含具有四个 段Q)-C3的第三指令,所述段存储在第三高速缓存线20中。此指令不具有未对准段, 且因此无需将与所述第三指令相关联的段存储在辅助存储器12中。因为第三指令在 一个指令高速缓存存取期间是可检索的(例如,通过存取第三高速缓存线20的扇区 零),所以辅助存储器12不含有与第三指令相关的数据。
控制器14通过选择含有期望指令的高速缓存线来检索指令高速缓存器10中存储 的指令,如图3的步骤200所图解说明。例如,控制器14选择第一高速缓存线16以 检索具有段B。与B,的第二可变长度指令。然后从选定的高速缓存线16读取第二指 令的经对准的段B(),如图3的步骤202所图解说明。于此同时,从辅助存储器12同 时读取第二指令的未对准指令段B,'的冗余副本,如图3的步骤204所图解说明。通 过将从第一高速缓存线16读取的指令的段B。与从辅助存储器12读取的指令的未对 准段B,'进行组合来重构完整指令Bo、 B"图3的步骤206图解说明此类操作。借助 此类操作,控制器14避免需要多次高速缓存存取来从高速缓存器IO检索未对准跨边 界指令。
图4图解说明包含在指令高速缓存器10中或与指令高速缓存器10相关联的电路 的一个实施例,所述电路用于从高速缓存器IO及辅助存储器12检索可变长度指令。 通过将从指令高速缓存器10的选定的高速缓存线中读取的指令的经对准的段与从辅 助存储器12中读取的指令的未对准段进行组合来检索指令。特定来说,第一选择电 路36 (例如,多路复用器)识别从中检索存储其中存储的内容的选定的高速缓存线 的扇区。例如,由控制器14提供的地址控制输入(ADDR)致使多路复用器36选择 指令高速缓存器10的选定的高速缓存线的扇区。同样,选定的高速缓存线扇区的内 容提供给组合器电路38。在一个实施例中,高速缓存线被划分为两个扇区,两个数 据半线中的一者(HL0或HL1)被提供给组合器电路38。在其它实施例中,将不同 量的数据提供给组合器电路38,其中所述量对应于高速缓存线扇区的数目,例如, 1/2线的数据、1/4线的数据等。
第二选择电路40 (例如,第二多路复用器)选择辅助存储器12中存储的对应于 从指令高速缓存器10检索的指令段的未对准指令段。例如,由控制器14提供的列选 择信号(SEL)致使第二选择电路40选择辅助存储器12的待存取的列。如果辅助存储器12包括单个列的入口,则不需要第二选择电路40。同样,辅助存储器12的选 定的入口被提供给组合器电路38。如果所述辅助存储器含有每入口一个以上列的指 令段(例如图4所图解说明的两个列32-34),则所述列中的一者由第二选择电路40 选定。选定的列对应于由当前正从指令存储器10检索的指令跨越的边界的类型。例 如,第二列34可存储跨越高速缓存线间边界的未对准指令段,且由此在正从指令高 速缓存器IO检索包括段BQ与BJ勺指令的情况下被选定。同样,于此同时从辅助存 储器12检索未对准指令段B,'的冗余副本,而从指令高速缓存器10检索B0。
组合器电路38响应于控制器14所提供的控制信号(CTRL)将指令高速缓存器 10的选定的输出与辅助存储器12的选定的输出进行组合以重构正被检索的指令。当 正被检索的指令不跨越高速缓存线边界时(例如,图4所图解说明的具有段Q) - C3 的指令),组合器电路38不会将指令高速缓存器10的输出与辅助存储器12中存储 的数据进行组合。而是,由于所检索的指令不是未对准的,组合器电路38输出仅从 指令高速缓存器10读取的数据。
当正在检索横跨高速缓存线边界的指令时,组合器电路38可以各种方式组合指 令高速缓存器10与辅助存储器12的选定的输出。在一个实施例中,组合器电路38 使从高速缓存器10检索的指令段对应于所检索的未对准指令段的位宽度偏移若干个 位位置,且然后将偏移的段与未对准段进行组合。在另一实施例中,组合器电路38 将从辅助存储器12检索的未对准指令段附加到从高速缓存器IO检索的指令段。
尽管采用特定的组合实施方案,跨越高速缓存线边界的可变长度指令仍可在一个 指令高速缓存存取中被检索,因为指令高速缓存器IO及辅助存储器12可被同时存取。 例如,控制器14通过选择第一高速缓存线16的半线扇区HL1并将其与从辅助存储 器12检索的未对准指令段B卩进行组合来在单个指令高速缓存存取中检索包括段B。 与B,的指令。同样,组合器电路38的输出包含指偏令高速缓存器10中存储的指令 的段B。、与辅助存储器12中存储的指令的未对准段的冗余副本进行组合的指令的段 B卩。因此,不需要随后的处理循环来从指令高速缓存器IO检索跨越高速缓存线间边 界而存储的指令的段,即,段B,。
图5图解说明包含在指令高速缓存器10中或与指令高速缓存器IO相关联的电路 的另一实施例,所述电路用于从高速缓存器IO及辅助存储器12检索可变长度指令且 还用于将所检索的指令提供给寄存器42。寄存器42 (例如包含在微处理器(未显示) 中的指令寄存器)具有经界定的宽度。此外,寄存器42存储从指令高速缓存器10检 索的指令的期望部分。同样,指令的期望部分选自指令高速缓存器10及/或辅助存储 器12且被装载到寄存器42中。
为达到此目的,第一选择电路44 (例如,第一多路复用器)识别从中检索其中 存储的内容的选定的指令高速缓存线的扇区。第二选择电路46 (例如,第二多路复 用器)选择存储在辅助存储器12中的对应冗余未对准指令段。第三选择电路48 (例 如,第三多路复用器)选择从指令高速缓存器IO读取的输出或选择从辅助存储器12读取的输出并将选定的输出提供给寄存器42。在一个实施例中,第三选择电路48仅 将选定的输出的所期望部分提供给寄存器42,借此计及寄存器42的固定大小。通过 装置或锁存电路50将从特定高速缓存器扇区读取的输出传递到寄存器42。在一个实 施例中,通过装置或锁存电路50因仅将选定的输出的期望部分提供给寄存器42而计 及寄存器42的固定大小。
在操作时,第一选择电路44响应于控制器14提供的地址控制输入(ADDR)选 择特定高速缓存线的扇区中的一者。第二选择电路46响应于控制器14提供的列选择 信号(SEL)选择对应于存储在选定的高速缓存线及扇区处的指令数据的未对准指令 段(如果有)。第三选择电路48响应于控制器14所提供的控制信号(CTRL)来确 定是选择从指令高速缓存器IO读取的数据还是选择从辅助存储器12读取的数据。另 外,第三选择电路48将选定的数据或仅将其一部分提供给寄存器42。第三选择电路 48的输出填充寄存器42的上部部分,例如,上部半字部分。通过装置或锁存电路50 的输出填充寄存器42的下部部分,例如,下部半字部分。图5中图解说明的电路布 置利用与高速缓存线跨越相关联的趋势。也就是说,可变长度指令的下部部分可存储 在指令高速缓存器10的第一扇区中,而指令的上部部分可存储在不同的扇区或高速 缓存线中,由此跨越高速缓存线边界。因此,所述通过装置或锁存电路50利用此趋 势并用从指令高速缓存器10检索的较低阶指令数据来填充寄存器42的下部部分。在 经选定用于检索的指令不跨越高速缓存线边界的情况下,第三选择电路48用从指令 高速缓存器10检索的对应的较高阶指令数据来填充寄存器42的下部部分。
相反,在选定的指令不跨越高速缓存线边界的情况下,第三选择电路48用从辅 助存储器12检索的冗余较高阶指令数据来填充寄存器42的上部部分。同样,可在单 个存取中装载寄存器42,不论特定指令是否跨越高速缓存线边界。
在非限定性实例中,寄存器42具有32位的宽度且被划分为上部半字部分及下部 半字部分。另外,存储在指令高速缓存器IO及辅助存储器12中的每一指令段均具有 16位的宽度。同样,为检索指令段A,及A2,从辅助存储器12读取对应的未对准指 令段A2'并由第三选择电路48将其装载到寄存器42中来作为寄存器42的上部半字 (HW1)。此外,从指令高速缓存器10读取另一期望的指令段A,且同时由通过装置 或锁存电路50将其装载到寄存器42中以作为寄存器42的下部半字(HWO)。因此, 寄存器42在单个存取中被装载,尽管期望的指令跨越高速缓存线内边界。
此时,值得注意的是,辅助存储器12中存储的未对准指令段与指令高速缓存器 10中存储的对应的经对准指令段连接在一起,从而能够有效地检索所存储的指令。 例如,在一个实施例中,辅助存储器12中含有未对准指令段的冗余副本的特定行对 应于指令高速缓存器10中含有指令的经对准段的行或与其连接在一起。
此外,辅助存储器12的容量可对应于适于容纳期望数目的指令段的任何大小的 数据段。如图l所图解说明,显示辅助存储器12每入口具有两个列用于存储对应 于在指令高速缓存器中的段之间跨越的高速缓存线内边界的指令段的一个列32,及用于存储对应于高速缓存线间边界交叉的指令段的第二列34。然而,辅助存储器12
可包括用于存储未对准指令段的任何合适数目的列,例如,对应于通常会发生的边界 跨越类型的单个列。
当指令高速缓存器IO的高速缓存线被划分为两个以上段时,辅助存储器12可被
划分为多个列。 一个列可对应于高速缓存线间边界跨越,且剩余的列可对应于与高速 缓存线扇区的多样性相关联的高速缓存线内边界交叉。在另一实施例中,辅助存储器
12包括经动态配置以存储跨越高速缓存线内边界或高速缓存线间边界的未对准指令 段的单个列的入口。同样,所述单个列的入口可含有未对准指令段的混合。不论辅助 存储器12及指令高速缓存器10的特定组织如何,辅助存储器12均在单个指令高速 缓存存取期间启用对跨越指令高速缓存线而存储的可变长度指令的检索。
图6图解说明包含指令高速缓存器10、辅助存储器12及控制器14的微处理器 52的一个实施例。辅助存储器12可包含在指令高速缓存器10中或与指令高速缓存 器10相关联,例如, 一个或一个以上额外的列添加到高速缓存器IO或包含在诸如层 级2高速缓存器(未显示)的较高层级高速缓存器中或与所述较高层级高速缓存器相 关联。或者,辅助存储器装置可包含在与指令高速缓存器IO相关联的标签阵列(未 显示)中或与所述标签阵列相关联,或可以是包含在处理器52中的单独的存储器阵 列。处理器52进一步包含指令单元54、多个执行单元56、总线接口单元58及数据 高速缓存器60。
指令单元54提供对流向执行单元56的指令流的集中控制。可包含一个或一个以 上装载/存储单元(未显示)、浮点单元(未显示)及整数单元(未显示)的执行单 元56可并行执行多个指令。同样,处理器52可以是超标量体系结构及/或超流水线。 总线接口单元58提供一种用于传送数据、地址和控制信号到处理器52和从处理器 52传送数据、地址和控制信号的机制。指令及数据高速缓存器10、 60使得执行单元 56能够分别快速地存取指令及数据。
更详细地说,指令单元54包含指令提取单元62、分支预测单元(BPU) 64、指 令队列66及指令调度单元68。提取单元62从指令高速缓存器IO检索指令,对其进 行解码,并将经解码指令装载到指令队列66中。指令调度单元68将排队的指令调度 到适当的执行单元56。 BPU 64检测分支指令并根据所检测的分支类型执行各种分支 预测机制,例如,预测分支目标地址及/或是否可采用特定分支。
在一个实施例中,辅助存储器12在控制器14的控制下存储边界后指令数据,不 管是否发生高速缓存线边界跨越。因此,含纳于辅助存储器12中的某些指令数据可 是未对准的,且因此当从指令高速缓存器10检索指令时是不需要的。如果可在单个 指令高速缓存存取中从指令高速缓存器检索一指令,则当检索这一指令时可简单地忽 略或丢弃辅助存储器12中存储的冗余段。在另一实施例中,辅助存储器12在控制器 14的控制下选择性地仅存储未对准指令段。根据此实施例,控制器14响应于各种指 示符中的一者选择性地仅识别用于存储在辅助存储器12中的未对准指令段。在识别未对准指令段的一个实施例中,控制器14使用指令预解码信息来确定应 将哪些指令段存储在辅助存储器12中。指令单元54中所包含的预解码逻辑(未显示) 在指令被写入到指令高速缓存器IO中时检査所述指令。在指令预解码期间,所述预 解码逻辑识别目前正写入到高速缓存器10中的指令是否将跨越高速缓存线边界。
在某些实施例中,所述预解码逻辑可确定边界跨越类型,即,高速缓存线内边界 跨越还是高速缓存线间边界跨越。控制器14响应于预解码逻辑产生的指示引导辅助 存储器12存储跨越高速缓存线边界的指令段的冗余副本。此外,如果辅助存储器12 包含用于存储不同类型的未对准指令段的多个列,则预解码逻辑向控制器14指示已 跨越了哪种类型的高速缓存线边界。同样,控制器14引导辅助存储器12将未对准指 令段存储在存储器12的特定列中。
所述预解码逻辑可进一步经配置以确定正写入到指令高速缓存器10的指令的指 令长度。同样,控制器14使用指令长度信息来确定是否将有一特定指令跨越高速缓 存线边界。或者,控制器14包含用于确定传入指令的长度的逻辑。不论如何,控制 器14均使用指令长度信息来确定是否将有一特定指令跨越高速缓存线边界,且如果 有,则相应地管理辅助存储器12。
在识别未对准指令段的另一实施例中,控制器14监视与正写入到指令高速缓存 器10的指令相关联的高速缓存线入口位置,g卩,高速缓存线中写入指令的开端的起 始点。控制器14使用高速缓存线入口位置信息来确定是否将有一特定的传入指令跨 越高速缓存线边界。例如,如果高速缓存线入口位置指示高速缓存段或高速缓存线中 仅剩下两个字节且正向所述段或线写入四字节指令,则将发生高速缓存线内或高速缓 存线间边界跨越。同样,控制器14可使用此高速缓存线入口信息来确定是否将有一 传入指令跨越高速缓存线边界,且如果有,则引导对未对准指令段的辅助存储。
在识别未对准指令段的又一实施例中,控制器14使用从指令中在所述指令的剩 余部分之前提取的部分储存的信息来确定是否将发生高速缓存线边界跨越。根据此实 施例,指令单元54请求指令的某些部分在所述指令的剩余部分之前被提取,例如, 响应于处理器52所请求的关键字优先存储器存取操作或关键双字优先存储器存取操 作。响应于此类操作,在所述指令的剩余部分被写入到指令高速缓存器10中之前提 取并检查期望的指令的一部分。控制器14或者包含在指令单元54中的逻辑检査指令 的之前部分以确定所述指令的剩余部分在随后被写入到指令高速缓存器10时是否会 跨越高速缓存线边界。控制器14使用通过检査之前的指令部分而储存的信息来确定 所述指令的剩余部分是否会跨越高速缓存线边界,且如果是,则在其被写入到指令高 速缓存器10中时引导对未对准指令段的辅助存储。
在识别未对准指令段的再一实施例中,控制器14使用历史未对准指令段数据来 预测正写入到指令高速缓存器10的特定指令是否将跨越高速缓存线边界。在非限定 性实例中,指令单元54或控制器14维持包含与先前写入到指令高速缓存器10的指 令相关联的跨高速缓存线边界的数据的未对准指令段历史表(未显示)。所述历史表还可包含指示下一指令或待写入到高速缓存器10的指令是否会跨越高速缓存线边界 的信息。控制器14使用历史数据来预测正写入到指令高速缓存器10的特定指令是否 会跨越高速缓存线边界。
每当将指令写入到指令高速缓存器10时均更新所述历史数据或可不是周期性地 更新所述历史数据。此外,可基于边界预测是否正确来修改历史未对准指令段数据, 例如,使用一种类似于用于在微处理器中跟踪及解决分支预测的技术的技术。
考虑到以上范围的变化形式及应用,应了解,本发明不限于前述说明,也不限于 附图。而是,本发明仅由以上权利要求书及其合法等效物来限制。
权利要求
1、一种高速缓存可变长度指令的方法,其包括将指令数据写入到高速缓存线;及存储一个或一个以上高速缓存器边界位置的指令数据的冗余副本。
2、 如权利要求1所述的方法,其中存储一个或一个以上高速缓存器边界位置的指令数据的冗余副本包括将一个或一个以上高速缓存器边界位置的指令数据复制到 辅助存储器。
3、 如权利要求2所述的方法,其中所述辅助存储器包括与指令高速缓存器相关 联的标签阵列、包含在所述指令高速缓存器中或与其相关联的一个或一个以上冗余存 储器元件、单独的存储器阵列及较高层级高速缓存器中的一者。
4、 如权利要求2所述的方法,其中将一个或一个以上高速缓存器边界位置的指 令数据复制到辅助存储器包括将高速缓存线内边界位置的指令数据复制到所述辅助 存储器。
5、 如权利要求2所述的方法,其中将一个或一个以上高速缓存器边界位置的指 令数据复制到辅助存储器包括将高速缓存线间边界位置的指令数据复制到所述辅助 存储器。
6、 如权利要求1所述的方法,其中存储一个或一个以上高速缓存器边界位置的 指令数据的冗余副本包括识别所述指令数据中包含的指令的未对准段;及 将所述未对准段复制到辅助存储器。
7、 如权利要求6所述的方法,其中识别所述指令数据中包含的指令的未对准段 包括对所述指令进行预解码以识别所述指令的跨边界段。
8、 如权利要求6所述的方法,其中识别所述指令数据中包含的指令的未对准段 包括处理所述指令的高速缓存线入口位置以识别所述指令的跨边界段。
9、 如权利要求8所述的方法,其中所述指令的所述高速缓存线入口位置对应于 与所述指令相关联的提取地址。
10、 如权利要求6所述的方法,其中识别所述指令数据中包含的指令的未对准段 包括处理与所述指令相关联的长度信息以识别所述指令的跨边界段。
11、 如权利要求6所述的方法,其中识别所述指令数据中包含的指令的未对准段包括处理历史指令未对准数据以识别所述指令的跨边界段。
12、 如权利要求6所述的方法,其中识别所述指令数据中包含的指令的未对准段 包括处理所述指令中在所述指令的剩余部分之前提取的部分以识别所述指令的跨边 界段。
13、 如权利要求12所述的方法,其中所述指令中在所述指令的所述剩余部分之 前提取的所述部分包括响应于关键字优先存储器存取操作而提取的指令部分及响应 于关键双字优先存储器存取操作而提取的指令部分中的一者。
14、 一种包括高速缓存器控制器的设备,所述高速缓存器控制器经配置以将对指 令数据的存储引导到指令高速缓存器中所包含的高速缓存线且引导对一个或一个以 上高速缓存器边界位置的指令数据的冗余副本的存储。
15、 如权利要求14所述的设备,其中所述高速缓存器控制器经配置以通过将一 个或一个以上高速缓存器边界位置的指令数据复制到辅助存储器来引导对一个或一 个以上高速缓存器边界位置的指令数据的冗余副本的存储。
16、 如权利要求15所述的设备,其中所述辅助存储器包括与所述指令高速缓存 器相关联的标签阵列、包含在所述指令高速缓存器中或与其相关联的一个或一个以上 冗余存储器元件、单独的存储器阵列及较高层级高速缓存器中的一者。
17、 如权利要求15所述的设备,其中所述高速缓存器控制器经配置以通过将高 速缓存线内边界位置的指令数据复制到辅助存储器来将一个或一个以上高速缓存器 边界位置的指令数据复制到所述辅助存储器。
18、 如权利要求14所述的设备,其中所述高速缓存器控制器经配置以通过将高 速缓存线间边界位置的指令数据复制到辅助存储器来将一个或一个以上高速缓存器 边界位置的指令数据复制到所述辅助存储器。
19、 如权利要求14所述的设备,其中所述高速缓存器控制器经配置以通过识别 所述指令数据中包含的指令的未对准段并将所述未对准段复制到辅助存储器来引导对一个或一个以上高速缓存器边界位置的指令数据的冗余副本的存储。
20、 如权利要求19所述的设备,其中所述高速缓存器控制器经配置以通过处理与所述指令数据中包含的指令相关联的经预解码信息以识别所述指令的跨边界段来 识别所述指令的未对准段。
21、 如权利要求19所述的设备,其中所述高速缓存器控制器经配置以通过处理 所述指令数据中包含的指令的高速缓存线入口位置以识别所述指令的跨边界段来识 别所述指令的未对准段。
22、 如权利要求21所述的设备,其中所述指令的所述高速缓存线入口位置对应 于与所述指令相关联的提取地址。
23、 如权利要求19所述的设备,其中所述高速缓存器控制器经配置以通过处理 与所述指令数据中包含的指令相关联的长度信息以识别所述指令的跨边界段来识别 所述指令的未对准段。
24、 如权利要求19所述的设备,其中所述高速缓存器控制器经配置以通过处理 历史指令未对准数据以识别所述指令数据中包含的指令的跨边界段来识别所述指令 的未对准段。
25、 如权利要求19所述的设备,其中所述高速缓存器控制器经配置以通过使用 所述指令数据中包含的指令中在所述指令的剩余部分之前提取的部分识别所述指令 的跨边界段来识别所述指令的未对准段。
26、 如权利要求25所述的设备,其中所述指令中在所述指令的所述剩余部分之 前提取的所述部分包括响应于关键字优先存储器存取操作而提取的指令部分及响应 于关键双字优先存储器存取操作而提取的指令部分中的一者。
27、 如权利要求14所述的设备,其中所述高速缓存器控制器进一步经配置以通 过从所述指令高速缓存器中读取所述指令的段且从辅助存储器中读取所述指令的未 对准段来从所述高速缓存线中检索所述指令数据中包含的指令。
28、 如权利要求27所述的设备,其中所述高速缓存器控制器进一步经配置以将 从所述指令高速缓存器读取的所述指令的所述段与所述指令的所述未对准段进行组
29、 如权利要求28所述的设备,其中所述高速缓存器控制器经配置以通过将所 述指令的所述未对准段附加到从所述指令高速缓存器读取的所述指令的所述段来将 从所述指令高速缓存器读取的所述指令的所述段与所述指令的所述未对准段进行组合。
30、 如权利要求28所述的设备,其中所述高速缓存器控制器经配置以通过选择 所述指令的所述未对准段或从所述指令高速缓存器的第一扇区读取的所述指令的所 述段的第一部分中的一者并将所述指令的所述未对准段或从所述指令高速缓存器的 所述第一扇区读取的所述指令的所述段的所述第一部分中选定的一者与从所述高速 缓存线的第二扇区读取的所述指令的第二部分进行组合而将从所述指令高速缓存器 读取的所述指令的所述段与所述指令的所述未对准段进行组合。
31、 一种微处理器,其包括指令高速缓存器,其经配置以将指令数据存储在所述指令高速缓存器中所包含的 高速缓存线中;及高速缓存器控制器,其经配置将对一个或一个以上高速缓存器边界位置的指令数 据的冗余副本的存储引导到辅助存储器。
32、 如权利要求31所述的微处理器,其中所述一个或一个以上高速缓存器边界 位置包括所述指令高速缓存器的高速缓存线内边界位置及所述指令高速缓存器的高 速缓存线间边界位置中的一者或一者以上。
33、 如权利要求31所述的微处理器,其中所述辅助存储器包括与所述指令高速 缓存器相关联的标签阵列、包含在所述指令高速缓存器中或与其相关联的一个或一个 以上额外存储器元件、单独的存储器阵列及较高层级高速缓存器中的一者。
34、 一种检索经高速缓存的可变长度指令的方法,其包括 从高速缓存线读取指令的段;及 从辅助存储器读取所述指令的未对准段。
35、 如权利要求34所述的方法,其进一步包括将所述指令的所述未对准段与从 所述高速缓存线读取的所述指令的所述段进行组合。
36、 如权利要求35所述的方法,其中将所述指令的所述未对准段与从所述高速 缓存线读取的所述指令的所述段进行组合包括将所述指令的所述未对准段附加到从 所述高速缓存线读取的所述指令的所述段。
37、如权利要求35所述的方法,其中将所述指令的所述未对准段与从所述高速缓存线读取的所述指令的所述段进行组合包括选择所述指令的所述未对准段及从所述高速缓存线的第一扇区读取的所述指令的第一部分中的一者;及将所述指令的所述未对准段及从所述高速缓存线的所述第一扇区读取的所述指 令的所述第一部分中的选定的一者与从所述高速缓存线的第二扇区读取的所述指令 的第二部分进行组合。
全文摘要
一种指令高速缓存器控制器使用补充存储器来存储对应于高速缓存器边界位置的经高速缓存的指令数据的冗余副本,且借此启用随后对跨越所述边界位置的指令的单个高速缓存存取检索。在一个或一个以上实施例中,所述高速缓存器控制器将边界后位置的指令数据复制在所述补充存储器中,且将所述复制的数据多路复用到从边界前位置获得的高速缓存数据中。
文档编号G06F12/08GK101432703SQ200780015669
公开日2009年5月13日 申请日期2007年4月19日 优先权日2006年5月1日
发明者迈克尔·威廉·莫罗 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1