用于微处理器的可配置高速缓冲存储器的制作方法

文档序号:6456692阅读:145来源:国知局
专利名称:用于微处理器的可配置高速缓冲存储器的制作方法
技术领域
本发明涉及一种用于微处理器或微控制器的可配置高速缓冲存储器。
背景技术
管线式微处理器结构的瓶颈是存储器系统的高存取时间。用以解决此问题的典型方 法使用大型高速缓冲存储器且在初始高存储器存取时间之后每时钟传输多个数据字。小 型微控制器设计受限于可位于芯片上的高速缓冲存储器的量,且其不能支持大尺寸的高 等待时间但高处理量的窄存储器。因此,需要一种用于微控制器或微处理器的可配置高 速缓冲存储器。

发明内容
根据一实施例, 一种用于中央处理单元的高速缓冲存储器模块可具有与存储器耦合 的高速缓冲存储器控制单元以及与所述控制单元及所述存储器耦合的高速缓存存储器, 其中所述高速缓存存储器具有多个高速缓冲存储器线,每一高速缓冲存储器线具有用于 存储待顺序发布的指令的存储区域及相关联控制位,其中所述多个高速缓冲存储器线中 的至少一个高速缓冲存储器线具有至少一个分支跟踪控制位,所述分支跟踪控制位在被 设定时提供在预定义分支指令已被发布的情况下对所述高速缓冲存储器线的自动锁定 功能。
根据进一步实施例,至少一个高速缓冲存储器线可进一步包含用于手动或自动锁定 所述高速缓冲存储器线的锁定控制位。根据进一步实施例,每一高速缓冲存储器线可进 一步包含用于指示所述高速缓冲存储器线的有效性的相关联控制位。根据进一步实施 例,每一高速缓冲存储器线可进一步包含用于指示所述高速缓冲存储器线是用作指令高速缓冲存储器线还是数据高速缓冲存储器线的相关联控制位。根据进一步实施例,每一 高速缓冲存储器线可进一步包含与地址请求进行比较的相关联地址标记位字段、用于存 储所使用屏蔽的相关联屏蔽位字段以及用于根据所述屏蔽位字段对所述高速缓冲存储 器线的所述相关联地址标记的位进行屏蔽的屏蔽单元。根据进一步实施例,所述高速缓 冲存储器模块可进一步包含与所述存储器及所述高速缓存存储器耦合的预取单元,其中 所述预取单元经设计以将来自所述存储器的指令加载到另一高速缓冲存储器线中,其中 所述指令相继于当前从所述高速缓冲存储器线发布的指令。根据进一步实施例,所述预 取单元可控制以被启用或停用。根据进一步实施例,可使用最近最少使用的算法来确定 哪个高速缓冲存储器线将被盖写。
根据又一实施例, 一种操作用于中央处理单元的高速缓冲存储器的方法可包含以下 步骤将多个顺序指令存储在所述高速缓冲存储器的高速缓冲存储器线内;设定用于所 述高速缓冲存储器线的分支跟踪功能;以及执行从所述高速缓冲存储器线提取的指令, 其中所述高速缓冲存储器线在调用子例程后即被自动锁定。
根据进一步实施例,如果调用子例程的指令是所述高速缓冲存储器线中的最后一个 指令,那么可不执行所述自动锁定所述高速缓冲存储器线的步骤。根据进一步实施例, 所述方法可进一步包含在从所述子例程返回后即复位对所述高速缓冲存储器线的锁定 的步骤。根据进一步实施例,可在执行所述高速缓冲存储器线中所含有的指令后即调用 所述子例程。根据进一步实施例,可通过中断调用所述子例程。
根据再一实施例, 一种操作用于中央处理单元的高速缓冲存储器的方法可包含以下
步骤提供多个高速缓冲存储器线,其每一者具有用于存储指令或数据的存储区域及用 于控制每一高速缓冲存储器线的功能的多个控制位;将多个顺序指令存储在所述多个高 速缓冲存储器线中的一高速缓冲存储器线内;以及在设定所述高速缓冲存储器线中的所 述多个控制位中的分支跟踪功能位后,当在执行存储于所述高速缓冲存储器线中的指令 期间调用子例程时自动锁定所述高速缓冲存储器线。
根据进一步实施例,所述方法可进一步包含在从所述子例程返回后即复位用于所述 高速缓冲存储器线的所述分支跟踪功能的步骤。根据进一步实施例,所述方法可进一步 包含借助于所述多个控制位中的锁定控制位而提供高速缓冲存储器线的手动锁定功能 的步骤。根据进一步实施例,所述方法可进一步包含借助于所述多个控制位中的类型控 制位而提供指示高速缓冲存储器线是用于存储指令还是数据的类型功能的步骤。根据进 一步实施例,所述方法可进一步包含借助于所述多个控制位中的有效性控制位而提供高 速缓冲存储器线的指示高速缓冲存储器线中的存储内容的有效性的有效性功能的步骤。根据进一步实施例,所述方法可进一步包含为每一高速缓冲存储器线提供用于对相关联 地址标记字段的位进行屏蔽的多个位的步骤。根据进一步实施例,所述方法可进一步包 含以下步骤在执行存储于高速缓冲存储器线中的指令后即起始对存储于存储器中的相 继于存储在所述高速缓冲存储器线中的指令的指令的预取。根据进一步实施例,可将所 述所预取指令存储在通过最近最少使用的算法确定的高速缓冲存储器线中。根据进一步 实施例,所述方法可进一步包含将含有指令回路的指令流存储在至少一个高速缓冲存储 器线中且锁定所述髙速缓冲存储器线以免其被盖写的步骤。根据进一步实施例,所述方 法可进一步包含将顺序指令存储在多个高速缓冲存储器线中且锁定含有形成指令回路 的指令的所有高速缓冲存储器线的步骤。


可通过参看结合附图所作的以下描述来获得对本发明的较完整理解,其中
图1说明可配置高速缓冲存储器的第一实施例。
图2说明根据图1的实施例的高速缓存存储器区段的细节。
图3说明可配置高速缓冲存储器的第二实施例。
图4说明根据图3的实施例的高速缓存存储器的高速缓冲存储器线的细节。
图5说明用于控制高速缓冲存储器的实施例的功能的示范性寄存器。
图6说明根据所述实施例中的一者的映射高速缓冲存储器线的内容的其它寄存器。
图7说明用于产生特定信号的某种逻辑电路。
图8说明展示简化高速缓冲存储器存取过程的流程图。
尽管本发明允许各种修改及替代形式,但已在附图中展示并在本文中详细描述其特 定实例性实施例。然而,应了解,本文中对特定实例性实施例的描述并不希望将本发明
限于本文所揭示的特定形式,而是相反地,本发明将涵盖如由所附权利要求书所界定的
所有修改及等效物。
具体实施例方式
标准微控制器单元(MCU)通常包含8位或16位微处理器核心。32位核心仅最近 才进入MCU界。所有这些核心通常均不具有高速缓冲存储器。仅复杂的高端32位微控 制器可具有高速缓冲存储器。这是因为对于MCU来说,高速缓冲存储器为较大且昂贵 的。所揭示的实施例提供中间立场的小型可配置高速缓冲存储器,其可在运作中配置且 可充当预取及分支跟踪缓冲器,同时提供用于MCU应用的最佳高速缓冲存储器深度。
根据一实施例,高速缓冲存储器可经设计为可配置以非常灵活地操作。举例来说,
7其可经编程以严格地作为高速缓冲存储器来操作,这对于小型回路优化为有用的。为此, 可手动锁定包含回路的相应高速缓冲存储器线。其还可贡献特定数目的高速缓冲存储器 线(例如,多达用于链接分支历史存储的线的一半),此可加速函数调用返回。最后, 其可经配置以在从高速缓冲存储器线发布第一指令时将顺序程序信息预取到最近最少 使用的高速缓冲存储器线中。通过以两倍于微处理器可使用程序指令的速率来预取程序 指令,存储器系统提供可用带宽以在不使程序指令流停止的情况下提取程序数据。实际 上,并非所有程序数据提取均为透明的。根据不同实施例的高速缓冲存储器设计方法提 供用以通过给出与高等待时间但高处理量的宽存储器组合的低等待时间高速缓冲存储 器的特征平衡来改进性能的机制。
根据一实施例,高速缓冲存储器可经设计为运行时间及运作中可配置的完全相联高 速缓冲存储器。图1展示此类可配置高速缓冲存储器100的实施例的框图。耦合总线110a 及110b将高速缓冲存储器耦合到微控制器或微处理器的中央处理单元(CPU)。高速缓 冲存储器100包含高速缓冲存储器控制器120,所述高速缓冲存储器控制器120耦合到 指令高速缓冲存储器区段130及数据高速缓冲存储器区段140。每一指令高速缓冲存储 器区段包含指令存储器特有且相关联的控制位及标记(例如,以线形式),其中线可包 括用于存储多个字的存储区域。举例来说,字可为16位长且指令高速缓冲存储器130 内的线可具有4个双字,从而产生4x32个位。根据一实施例,小型指令高速缓冲存储 器130可包括4个此类线。根据其它实施例,依据相应处理器的设计而定的其它配置可 能为更有利的。根据一实施例,数据高速缓冲存储器区段140可经设计成类似于指令高 速缓冲存储器设计130。依据设计模型而定,单独的数据及指令高速缓冲存储器区段130 及140可能为合乎需要的,此(例如)可用于具有哈佛(Harvard)结构的处理器中。然 而,在常规的冯.诺伊曼(von Neumann)型微处理器中,可使用能够从同一存储器高速 缓存指令及数据的混合式高速缓冲存储器。图l仅展示根据具有哈佛结构的处理器的连 接到指令及数据高速缓冲存储器130、 140的程序快闪存储器160 (PFM)。数据存储器 可单独地耦合于哈佛结构中,或者存储器160可为如在冯,诺伊曼结构中所使用的统一指 令/数据存储器。多路复用器150 (例如)由高速缓冲存储器控制器120控制且将存储于 高速缓存存储器130、 140中的数据/指令经由总线110b提供到CPU。
图2更详细地展示根据一实施例的指令高速缓冲存储器130及数据高速缓冲存储器 的结构。所述布置再次展示用于指令及数据的单独高速缓冲存储器。高速缓冲存储器的 每一线包含数据/指令存储区域以及多个相关联控制及标记位(例如,IFM、 TAG及BT)。 IFM表示特定屏蔽,其可用以(例如)屏蔽地址标记字段TAG的某些位,所述地址标
8记字段TAG含有数据/指令高速缓冲存储器DATA的起始地址,如下文将更详细地解释。 每一线可(例如)包含指令/数据高速缓冲存储器的4x32个位,如图2中所展示。标记 字段可包含实际地址以及指示相应高速缓冲存储器线的有效性、锁定、类型等的额外位。 此外,如图2中所展示,针对每一高速缓冲存储器线提供分支跟踪位BT。当此位被设 定时,每当在相应高速缓冲存储器线内执行子例程调用指令且所述指令不是所述线中的 最后一个指令时,CPU即可自动锁定相关联的高速缓冲存储器线。在此情况下,相应高 速缓冲存储器线被自动锁定,且当程序从相应子例程返回时,跟随在相应调用指令之后 的指令将存在于高速缓冲存储器中,如下文将更详细地解释。
图3展示可配置高速缓冲存储器的另一实施例。高速缓冲存储器控制器120提供用 于高速缓冲存储器的所有功能的控制信号及信息。举例来说,高速缓冲存储器控制器120 控制TAG逻辑310,所述TAG逻辑310与命中逻辑320耦合,所述命中逻辑320还处 理来自高速缓冲存储器控制器120及来自由高速缓冲存储器控制器所提供的预取标记 330的数据。命中逻辑产生控制高速缓冲存储器线地址编码器340的信号,所述高速缓 冲存储器线地址编码器340寻址高速缓存存储器350,所述高速缓存存储器350在此实 施例中包含(例如)16个线的数据/指令存储器,每一线包含(例如)用于指令/数据存 储的4x32位双字。程序快闪存储器160与高速缓冲存储器控制器120耦合且经由预取 单元360而与高速缓冲存储器耦合,所述预取单元360还连接到高速缓冲存储器线地址 编码器340。预取单元360将指令传送到由高速缓冲存储器线地址编码器340直接或通 过缓冲器寻址的高速缓存存储器350的每一高速缓冲存储器线中。为此,预取单元360 可包含能够存储待传送到相应高速缓冲存储器线的存储区域中的指令的一个或一个以 上缓冲器。多路复用器150经控制以在高速缓存存储器350内或从单元360的预取缓冲 器中选择相应字节/字/双字并将其提供到CPU总线llOb。
图4更详细地展示高速缓存存储器350。在此实施例中,提供16个高速缓冲存储器 线。每一线包含多个控制位及一4x32位指令/数据存储区域(WordO到Word3)。所述控 制位包含屏蔽MASK、地址标记TAG、有效性位V、锁定位L、类型位T及分支跟踪位 BT。屏蔽MASK允许在由命中逻辑320进行比较期间屏蔽地址标记TAG的选定位,如 下文将更详细地解释。地址标记TAG进而指示存储器160中的高速缓冲存储器线的开 始。如下文将更详细地解释,地址标记TAG为可读及可写的,且在由用户写入时将强 制预取功能。有效性位V指示相关联高速缓冲存储器线中的条目为有效的。此位不能由 用户更改,且其经自动设定或复位。锁定位L指示高速缓冲存储器线是否被锁定,且因 此不能被盖写。此位可由用户更改或可相对于分支跟踪功能而自动设定,如下文所解释。位T指示高速缓冲存储器线的类型,g卩,高速缓冲存储器线是用作指令高速缓冲存储器 线还是用作数据高速缓冲存储器线。此位可经设计为由用户更改,这允许高速缓冲存储 器的非常灵活的指派及配置。代替使用单个可指派位T来将某些高速缓冲存储器线指定 为数据高速缓冲存储器线,可使用通用配置寄存器来界定特定数目个将用于高速缓存数 据的线,而剩余高速缓冲存储器线将用于指令高速缓存。在此实施例中,仍可提供位T 以指示哪些高速缓冲存储器线经设定为所指定的数据高速缓冲存储器线,且因此所述位 T在此实施例中不能被更改。如稍后将解释,根据一个实施例的高速缓冲存储器可(例 如)经配置以将零个高速缓冲存储器线、1个、2个或4个高速缓冲存储器线用于数据 高速缓存的目的。此指派可因此将高速缓冲存储器分裂为两个部分,例如,依据所指派 线的数目而定,可从高速缓冲存储器的底部向上指派数据高速缓冲存储器线。具有更多 数据高速缓冲存储器线的其它配置当然是可能的且依据高速缓冲存储器的相应设计而 定。因此,当被设定时,位T指示此线用于数据高速缓存。
图7展示可用以实施分支跟踪功能的某种逻辑电路的实施例。如上文所解释,分支 跟踪位750用以在将分支到子例程且将返回的子例程指令、俘获、中断或其它指令在高 速缓冲存储器线内执行且不是所述线中的最后一个指令的情况下自动锁定相关联高速 缓冲存储器线。当被设定时,在调用子例程类型指令已被执行且程序分支离开其线性执 行序列时,CPU可通过经由逻辑门760设定位740来自动锁定相关联线。此子例程类型 指令的执行可在执行单元中检测到,且通过信号770发信号通知逻辑门760。当至少一 个尚未执行但将在程序从相应子例程返回时执行的指令留在高速缓冲存储器线中时,启 用此功能性。在此指令被放置于高速缓冲存储器线的最后一个存储器空间中的情况下, 将没有必要保持高速缓冲存储器线自动锁定,因为随后的指令将在不同高速缓冲存储器 线中或甚至可能不在高速缓冲存储器中。当位750依据相应子例程或中断调用的执行(其 通过检测信号770发信号通知逻辑门760)而被设定时,CPU自动设定及复位锁定位740。
图5及图6展示在微处理器或微控制器内实施以控制可配置高速缓冲存储器的行为 及功能性的通用高速缓冲存储器控制寄存器510及其它控制寄存器610到660的实例。 所有寄存器可被设计为用于在32位环境中使用的32位寄存器。然而,这些寄存器可容 易适应于在16位或8位环境中工作。举例来说,寄存器CHECON包含位31以启用或 停用整个高速缓冲存储器,且位16 CHECOH可用以实现PFM程序循环位上的高速缓冲 存储器一致性设定。举例来说,此位CHECOH可在被设定时使所有数据及指令线无效, 或可使所有数据线无效且仅使未经锁定的指令线无效。位24可用以启用所强制的数据 高速缓存功能,如下文将更详细地解释。当被设定时,如果高速缓冲存储器带宽未用于提取指令,那么此功能强制数据高速缓存。位11-12 BTSZ可用以启用/停用分支跟踪标 记。举例来说,在一个实施例中,如果被启用,那么分支跟踪标记可被设定为1、 2或4 个线的大小。因此,1、 2或4个高速缓冲存储器线将具有此功能性。根据其它实施例, 所有高速缓冲存储器线可被启用以用于此功能性。位8-9 DCSZ用以界定数据高速缓冲 存储器线的数目,如上文所解释。在一个实施例中,所述数目可经设定以启用0、 1、 2 或4个数据高速缓冲存储器线。
位4-5 PREFEN可用以启用选择性地用于存储器的可高速缓存及非可高速缓存区的 预测性预取。存储器的可高速缓存区可为存储器内的例如可经实际高速缓存的存储器或 程序区的区,其意指与高速缓冲存储器实际耦合的存储器区。非可高速缓存区一般指代 (例如)通常不能被高速缓存的存储器映射外围空间。可高速缓存区与非可高速缓存区 之间的区别依据系统设计而定。 一些实施例可能需要此区别,且相应微处理器/微控制器 将支持高速缓存/非高速缓存方法,而处理器的其它实施例可能能够高速缓存任何类型的 存储器,而不管其是实际存储器区还是存储器映射区。
如果被设定,那么预取单元将一直提取跟随在当前从中发布指令的高速缓冲存储器 线之后的指令。使用两个位允许(例如)四种不同设定,例如,启用用于可高速缓存区 及非可高速缓存区两者的预测性预取、仅启用用于非可高速缓存区的预测性预取、仅启 用用于可高速缓存区的预测性预取以及停用预测性预取。根据一实施例,假定高速缓冲 存储器线包含16个字节或四个双字。举例来说,如果中央处理单元请求来自地址 0x001000的指令xl,那么高速缓冲存储器控制逻辑将所有地址标记与0x00100X (其中 位X被忽略)进行比较。如果控制器产生命中,那么选择相应线。选定线包含以地址 0x001000起始的所有指令。因此,在每一指令为32位长的情况下,第一指令将被发布 到中央处理单元,且预取单元将被触发以预取下一线指令。为此,预取单元将把随后的 地址标记计算为0x001010且开始在下一可用高速缓冲存储器线中加载相应指令。当中 央处理单元进一步执行来自地址0x001004、 0x001008及0x00100C的指令时,预取单元 用来自地址0x001010、 0x001014、 0x001018及0x00101C的指令来填满下一可用高速缓 冲存储器线。在中央处理单元完成执行当前选定的高速缓冲存储器线的指令之前,预取 单元将完成装载后续指令。因此,中央处理单元将不被停止。
返回参看图5,位0-2用以界定程序快闪存储器的等待状态的数目。因此,很多种 不同的快闪存储器可与微控制器一起使用。
如图4中所示的高速缓冲存储器内的每一线可在控制下被映射到如图6中所示的寄 存器。因此,高速缓冲存储器线可被设计为完全可通过读取及写入操作来存取且可完全
11由用户更改。然而,如上文所述,高速缓冲存储器线的一些位可经设计而不得由用户更 改或可能在用户可更改相应线之前需要对相应线进行开锁。为此,可提供索引寄存器600 以用于选择所述16个高速缓冲存储器线中的一者。 一旦己通过索引寄存器600选择了 高速缓冲存储器线,所述高速缓冲存储器线便可通过随后的寄存器610-660来存取。屏 蔽寄存器可(例如)在位5-15中包含选定高速缓冲存储器线的屏蔽MASK。用于标记 的第二寄存器可在位4-23中具有地址标记且还可包含指示选定寄存器的有效性、锁定状 态、类型及分支跟踪功能的位V、 L、 T及BT。最后,四个32位寄存器可被提供用于 在寄存器WordO、 Wordl、 Word2及Word3中包含高速缓存数据或指令的选定线。可实 施其它控制寄存器以控制高速缓冲存储器的通用功能。因此,每一高速缓冲存储器线可 由用户或软件存取及操纵,如下文将更详细地解释。
根据所揭示的实施例,高速缓冲存储器100、 300经设计以通过从PFM 160提取(例 如)128位对准的指令字集合(称为线)来对初始CPU指令提取作出响应。所请求的实 际指令可存在于所述线中的任何地方。所述线存储在高速缓冲存储器130、 350 (填充) 中,且指令返回到CPU。此存取可占用多个时钟周期且使CPU停止。举例来说,对于 40毫微秒存取快闪,存取可在80MHz下引起3个等待状态。然而, 一旦线被高速缓存, 对存在于所述线中的指令地址的后续存取便在零等待状态中发生。
如果高速缓存如此被启用,那么此过程继续用于未命中高速缓冲存储器线的每个指 令地址。以此方式,如果小回路为128位对准的且与高速缓冲存储器130、 350的字节 数目相同或少于高速缓冲存储器130、 350的字节数目,那么所述回路可在零等待状态 下从高速缓冲存储器执行。对于完全填充的回路,如图1中所示的具有32位指令的4 线高速缓冲存储器130每时钟执行一个指令。换句话说,CPU在16个时钟中执行存储 于高速缓冲存储器130中的所有指令。如果仅支持128位宽的提取,那么所述同一回路 可每线占用特定数目的等待状态以用于提取(例如,3个等待状态),且占用特定数目的 时钟以用于执行(例如,4个日寸钟),这将导致(例如)每4个指令占用7个时钟。此实 例将产生具有2 8个时钟的总回路时间。
图1中的实施例包含两线数据高速缓冲存储器以利用可存储于PFM 160中的常数及 表数据的空间接近性。然而,在其它实施例中,此高速缓冲存储器可为更大的且连接到 数据存储器。
此外,如上文所解释,如图l及图3中所展示的高速缓冲存储器还可实现预取,以 允许避免提取128位宽的指令流所需的特定数目的等待状态。如果预取被启用,那么高 速缓冲存储器100、 300使用最近最少使用的线进行预测地址填充。预测地址正好是下一顺序128位对准地址,如上文对使用实际地址的实例所做详细解释。因此,在高速缓 冲存储器线内执行指令期间,如果预测地址尚未在高速缓冲存储器中,那么高速缓冲存 储器产生快闪存储器存取。当CPU正在需要(例如)对快闪存储器系统的3等待状态 存取的频率下运行时,预测地址提取在其中CPU需要预测指令的周期内完成。以此方 式,对于线性代码,CPU指令提取可在零等待状态下运行。
当链接分支与链接跳跃指令在CPU中执行以保存高速缓冲存储器线以供将来使用 时,分支跟踪特征查看所述指令。此特征通过在跟踪分支或跳跃指令的线中保存任何指 令来增强功能调用返回的性能。
程序快闪存储器高速缓冲存储器160及预取模块120、 360为在可高速缓存程序快 闪存储器区外部执行的应用提供增强的性能。性能增强以三种不同方式来实现。
第一种方式是模块高速缓存能力。如图1及图3中所展示的4或16线指令高速缓 冲存储器130、 350具有每时钟为回路供应一次指令(对于32位操作代码多达16/64个 指令且对于16位操作代码多达32/128个指令)的能力。高速缓冲存储器大小及组织的 其它配置可适用。图1中所展示的实施例还提供高速缓存两线数据的能力,从而提供对 线内的数据项的改进存取。图3中所展示的实施例通过设定分裂点或个别地指派相应高 速缓冲存储器类型(如上文所解释)来提供可更灵活指派的数据高速缓冲存储器线大小。
第二,当允许预取时,模块每时钟为线性代码提供一次指令,从而隐藏快闪存储器 的存取时间。第三,模块可将一个或两个指令高速缓冲存储器线分配给链接分支历史指 令。当具有链接的跳跃或分支指令在CPU中出现时,最后一个线被标记为分支历史线 并保存以用于从调用返回。
模块启用
根据一实施例,在复位之后,可通过设定位(例如,CHECON寄存器中的位31 N/OFF (参见图5))来启用模块。清除此位将完成以下各项
停用所有高速缓冲存储器、预取及分支历史功能性且复位高速缓冲存储器的状态。
将模块设定为旁路模式。
允许特殊功能寄存器(SFR)读取及写入。
节电模式下的操作
休眠模式
根据一实施例,当装置进入休眠模式时,时钟控制块停止对高速缓冲存储器模块 100、 300的时钟。 闲置模式根据一实施例,当装置进入闲置模式时,高速缓冲存储器及预取时钟源仍起作用且 CPU停止执行代码。任何未处理预取在模块100、 300经由自动时钟门控而停止其时钟 之前完成。
旁路行为
根据一实施例,默认操作模式为旁路。在旁路模式下,模块针对每个指令而存取 PFM,从而招致如寄存器CHECON中的PFMWS位(参见图5)所界定的快闪存取时间。 高速缓存行为
根据图1,高速缓存与预取模块可实施完全相联4线指令高速缓冲存储器。依据设 计而定,可提供更多或更少的高速缓冲存储器线。高速缓冲存储器线内的指令/数据存储 区域可经设计为不可写的且在快闪编程序列期间或当通用控制寄存器CHECON中的相 应位被设定为逻辑0时与相关联控制位一起被清除。其每线使用含有快闪地址标记的寄 存器或位字段。每一线可由128个位(16个字节)的指令构成,而不管指令大小如何。 为了简化存取,根据图1及图3的高速缓存与预取模块可仅从快闪160请求16字节对 准指令数据。根据一实施例,如果CPU所请求的地址未与16字节边界对准,那么模块 将通过丢弃地址位[3.0]来对准地址。
当仅配置为高速缓冲存储器时,模块通过在未命中时将多个指令加载到线中而像任 何高速缓冲存储器一样起作用。根据一实施例,模块可使用简单的最近最少使用的 (LRU)算法来选择哪个线接收新指令集合。高速缓冲存储器控制器使用寄存器CHECON 的等待状态值来确定当其检测到未命中时其必须等待快闪存取多久。在命中时,高速缓 冲存储器在零等待状态下返回数据。
指令高速缓冲存储器依据预取及分支跟踪选择而以不同方式起作用。如果代码为 100%线性的,那么仅高速缓存模式将以相应PFMWS周期时序将指令提供回到CPU, 其中PFMWS为等待状态的数目。
屏蔽
使用屏蔽位字段会实现高速缓冲存储器的进一步灵活的使用。图7展示用以实施屏 蔽功能的可能的逻辑电路。高速缓冲存储器线的位字段710含有(例如)ll个位,所述 位可用以屏蔽地址标记720的某些位。屏蔽位字段710的11个位用以屏蔽地址标记720 的较低位0-10。当比较器780将地址标记720与所请求地址790进行比较时,屏蔽位字 段710中被设定为"1"的任何位将使得地址标记中的相应位被忽略。如果指令/数据存 储区域包含16个字节,那么地址标记不包含实际地址的较低4个位。因此,如果屏蔽 710的所有位被设定为"1",那么比较器将实际地址的位4-23与使用24个地址位的系统中的地址标记的位0-19进行比较。然而,通过屏蔽730,可迫使比较器780仅将地址 标记720的小部分与实际地址790的相应小部分进行比较。因此,多个地址可引起命中。 此功能性可尤其有利地与某些引起到指令存储器中的预定义地址的分支的中断或俘获 指令的产生一起使用。举例来说,中断可引起到含有中断服务例程的存储器地址的分支, 所述存储器地址由中断基本地址加上由中断的优先级所界定的偏移地址加以界定。举例 来说,优先级0中断将分支到地址0x000100,优先级1中断将分支到地址0x000110, 优先级2中断将分支到地址0x000120,等等。俘获指令可被类似地组织且可引起类似的 分支模式。假定特定数目的中断服务例程至少对于预定义数目的指令为相同的,那么通 过使用屏蔽功能,这些地址可引起到含有服务例程的起始的同一高速缓冲存储器线的分 支。举例来说,如果对于优先级等级0-3的中断服务例程的最初四个32位指令为相同的, 那么包含在地址0x000010处起始的指令的高速缓冲存储器线的屏蔽位字段可被设定为 "11111111100",其将对从0x000100起始到0x0001300的所有地址引起命中。因此,不 仅具有优先级0的中断将引起命中,而且具有优先级1、 2及3的中断也将引起命中。 其全部将跳跃到已经加载在高速缓冲存储器中的同一指令序列。因此,将不会发生因存 取快闪存储器的损失。 预取行为
控制寄存器CHECON的位字段PREFEN或相应单个位(参见图5)可用以启用预 取功能。当经配置用于预取时,模块100、 300预测下一线地址且将其返回到高速缓冲 存储器130、 350的LRU线中。预取功能基于第一 CPU指令提取来开始预测。当第一 线放置于高速缓冲存储器130、 350中时,模块仅使地址递增到下一 16字节对准地址且 开始快闪存取。快闪存储器160在所有指令可从先前线执行时或之前返回下一指令集合。
如果在预测快闪存取期间的任何时间,新CPU地址不与预测地址匹配,那么快闪 存取将被改变到正确地址。此行为不会使CPU存取占用比没有预测的情况下所占用的 时间更长的时间。
如果预测快闪存取完成,那么将指令与其地址标记一起放置于LRU线中。在CPU 地址命中线之前不更新LRU指示。如果其是正好所预取的线,那么将所述线标记为最 近最多使用的线且相应地更新其它线。如果其是高速缓冲存储器中的另一线,那么算法 相应地调整,但正好所预取的线仍为LRU线。如果其未命中高速缓冲存储器130、 350, 那么存取转到快闪且返回指令放置于LRU线(其为最近最多更新但从未使用的预取线) 中。
根据一实施例,如上文所述,可选择性地开启或关闭数据预取。根据另一实施例,如果控制寄存器(例如,CHECON)中的专用位被设定为逻辑1,那么在指令预取中途 的数据存取可导致指令预取异常中止。如果此位被设定为逻辑0,那么数据存取在指令 预取完成之后完成。 分支跟踪行为
高速缓冲存储器可经分裂以(例如)通过编程寄存器CHECON中的位字段BTSZ (参见图5)而将指令高速缓冲存储器的一个或一个以上线用于分支跟踪指令。当CPU 请求如从分支与链接或跳跃与链接指令所计算的新地址时,分支跟踪线为最近最多使用 的高速缓冲存储器线。根据一实施例,当模块100、 300将MRU高速缓冲存储器线标记 为分支跟踪线时,其还可解除分配LRU分支跟踪线,从而使其返回为通用高速缓冲存 储器使用。
如上文所解释,如果最后一个存取是来自MRU线中的最后一个指令(最高地址), 那么所述线不被标记为分支跟踪线。而且,模块不从高速缓冲存储器的分支跟踪部分解 除分配现有线中的任一者。
预加载行为
应用代码可引导模块100、 300用来自快闪存储器160的指令预加载及锁定一个高 速缓冲存储器线。预加载功能使用来自标记为高速缓冲存储器(即,非分支跟踪)的线 的LRU。
根据一实施例,可直接存取高速缓冲存储器线中的地址标记位字段,且用户可将任 何值写入到此位字段中。此写入导致对快闪存储器中所寻址的相应线的强制预加载高速 缓存。因此,预加载通过将地址写入到高速缓冲存储器线的地址标记位字段中以从存储 器预加载到相应线来工作。根据一实施例,此动作在存取快闪以检索指令之前使所述线 无效。在预加载之后,所述线可由中央处理单元存取以用于执行相应指令。
根据一实施例,此功能性可用以实施非常灵活的调试功能性,而无需更改程序存储
器中的代码。 一旦识别到包括在调试序列期间需要断点的指令的相应线,便可将所述线 标记为预加载有特定地址。接着,所述高速缓冲存储器线的内容可经修改以包括调试指 令。举例来说,系统软件可自动替换所述高速缓冲存储器线内的指令以产生断点或执行 任何其它类型的子例程。 一旦相应代码已被执行,便可用原始指令来替换所述指令且可 更改堆栈以返回到已从中执行调试例程的同一地址。因此,预加载功能性允许非常灵活 地更改系统内的代码。
根据又一实施例,如果高速缓冲存储器线由锁定位锁定或潜在地由分支跟踪位锁 定,那么可禁止对此高速缓冲存储器线的写入存取。因此,仅经开锁的高速缓冲存储器
16线可为可写的。如果实施此功能性,那么用户必须在其可将新地址标记写入到高速缓冲 存储器线中之前首先开锁所述高速缓冲存储器线,以迫使高速缓冲存储器控制器加载来 自存储器的相应指令或数据。对于对指令/数据存储区域的写入存取也一样。
主动地用所指定指令加载高速缓冲存储器的特征尤其对于如上文所解释的屏蔽功 能来说可为非常有用的。举例来说,如果许多中断服务例程以同一指令序列来起始,那 么可通过将相应服务例程地址写入到地址标记中以使得相应高速缓冲存储器线预加载 有相应中断服务例程指令来迫使此指令序列进入高速缓冲存储器中。通过设定如上文所 解释的相应屏蔽且锁定相应高速缓冲存储器线,高速缓冲存储器可经预配置以使得程序 对某些中断做出反应而没有快闪存取损失。因此,某些例程可始终可通过高速缓冲存储 器来存取。
复位与初始化
在复位后,所有高速缓冲存储器线均即被标记为无效的且高速缓冲存储器特征被停 用。举例来说,通过寄存器CHECON,等待状态被复位到其最大等待状态值(允许在复 位之后进行旁路存取)。
在任何快闪程序开始时,模块100、 300迫使高速缓冲存储器为其复位值。在程序 循环结束之前,由CPU所进行的任何存取均被停止。 一旦程序循环完成,待决的CPU 存取便经由旁路到快闪而继续进行。返回指令按配置寄存器中所界定的值而完成。
快闪预取缓冲器(FPB)
根据一实施例,快闪预取缓冲器设计(参见图3)可为简单的缓冲器,例如锁存器 或寄存器365。在一个实施例中,其可经设计以允许利用x32位快闪存储器的4个面板 当在16位指令模式下操作时预取多达总共8个指令的CPU核心指令或当在32位指令 模式下操作时预取4个指令的CPU核心指令。在高速缓冲存储器控制器120中实施的 FPB以线性方式来预取以确保被馈入到核心中的指令将不使核心指令停止。根据一实施 例,FPB可含有2个各自具有16个字节的缓冲器。每一缓冲器跟踪指令地址提取。如 果分支出现在缓冲器指令边界之外,那么利用替代缓冲器(招致初始停止,但接着高速 缓存线性代码提取)。每一指令提取迫使FPB抓取后续线性可能的16个字节以填充缓冲 器。
根据另一实施例,任选地,可编程的强制数据高速缓冲存储器操作可通过预取缓冲 器来实施。 一旦高速缓冲存储器填充有一个或一个以上指令线,便可顺序地执行所述指 令而无需在特定时间周期内提取其它指令线。此情况尤其如此,因为单个高速缓冲存储 器线内的指令的执行时间可两倍于或甚至更长于用以将高速缓冲存储器线加载到高速缓冲存储器中的时间。此外,如果一个或多个连续高速缓冲存储器线包括经执行的回路, 那么可能存在期间不需要高速缓存任何其它指令的相对较长的时间。根据一实施例,此 时间可用以高速缓存数据,例如待在表中使用的相对大量的数据,等等。高速缓冲存储 器可由寄存器(例如,寄存器CHECON中的位23 DATAPREFEN (参见图5))编程, 以在高速缓冲存储器带宽不用于提取指令时执行额外的数据高速缓冲存储器功能。这在 数据表由需要被加载到高速缓冲存储器中的程序使用的情况下可为有用的。数据提取可 在第一次初始填充之后发生且仍允许核心继续使用来自高速缓冲存储器线的所预取指 令。根据一实施例,当功能位DATAPREFEN被设定时,可在每一指令提取之后自动提 取数据线。或者,根据另一实施例,只要相应位DATAPREFEN被设定,就可强制数据 高速缓存。因此,举例来说,可通过设定相应位来开始及停止所强制的数据高速缓存。 在又一实施例中,每当高速缓冲存储器在一时间周期内暂停加载指令时,就可自动执行 所强制的数据高速缓存。如果提供多个控制位,那么可实施不同数据高速缓存模式的可 编程组合。
图8展示根据一实施例的使用高速缓存及预取功能的简化快闪存储器请求。快闪存 储器请求在步骤800处开始。首先,在步骤805中确定请求是否为可高速缓存的。如果 请求为可高速缓存的,那么在步骤810中确定所提供地址是否已产生高速缓冲存储器命 中。如果是,那么根据一实施例,过程可分支为两个并行过程。然而,其它实施例可顺 序地执行这些过程。第一分支以步骤812开始,在步骤812中确定是否己请求对子例程 的调用。如果否,那么第一并行过程结束。如果是,那么在步骤815中确定是否已在相 应高速缓冲存储器线中设定分支跟踪位。如果是,那么在步骤820中确定调用是否为经 高速缓存线中的最后一个指令。如果是,那么第一并行过程结束。如果是,那么在步骤 830中锁定相应高速缓冲存储器线。第二并行过程在步骤835中开始,其中从高速缓冲 存储器返回指令,且在步骤835中,执行最近最后使用的算法以更新高速缓冲存储器线 的状态。如果在步骤810中尚未产生高速缓冲存储器命中或如果请求为不可高速缓存的, 那么在步骤840中确定预取缓冲器是否产生命中。如果预取缓冲器含有所请求的指令, 那么在步骤845中返回所请求的指令。否则,在步骤850中执行快闪存取,其将使CPU 停止。在步骤850之后的步骤855中,在高速缓冲存储器线可用于执行高速缓冲存储器 功能的情况下,快闪请求可填充高速缓冲存储器线。例程以步骤860结束。
尽管已参考本发明的实例性实施例而描绘、描述及界定了本发明的实施例,但所述 参考并不意味着对本发明的限制,且不应推断出任何此类限制。所揭示的标的物能够在 形式及功能上作出相当多的修改、更改及等效物,如相关领域的和受益于本发明的一般技术人员将想到的。本发明的所描绘及描述的实施例仅为实例,且并非穷举本发明的范
权利要求
1.一种用于中央处理单元的高速缓冲存储器模块,其包含与存储器耦合的高速缓冲存储器控制单元,与所述控制单元及所述存储器耦合的高速缓存存储器,其中所述高速缓存存储器包含多个高速缓冲存储器线,每一高速缓冲存储器线包含用于存储待顺序发布的指令的存储区域及相关联控制位,其中所述多个高速缓冲存储器线中的至少一个高速缓冲存储器线包含至少一个分支跟踪控制位,所述分支跟踪控制位在被设定时提供在预定义分支指令已被发布的情况下对所述高速缓冲存储器线的自动锁定功能。
2. 根据权利要求1所述的高速缓冲存储器模块,其中所述至少一个高速缓冲存储器线 进一步包含用于手动或自动锁定所述高速缓冲存储器线的锁定控制位。
3. 根据权利要求1所述的高速缓冲存储器模块,其中每一高速缓冲存储器线进一步包 含用于指示所述高速缓冲存储器线的有效性的相关联控制位。
4. 根据权利要求1所述的高速缓冲存储器模块,其中每一高速缓冲存储器线进一步包 含用于指示所述高速缓冲存储器线是用作指令高速缓冲存储器线还是数据高速缓 冲存储器线的相关联控制位。
5. 根据权利要求1所述的高速缓冲存储器模块,其中每一高速缓冲存储器线进一步包 含与地址请求进行比较的相关联地址标记位字段、用于存储所使用屏蔽的相关联屏 蔽位字段以及用于根据所述屏蔽位字段对所述高速缓冲存储器线的所述相关联地 址标记的位进行屏蔽的屏蔽单元。
6. 根据权利要求1所述的高速缓冲存储器模块,其进一步包含与所述存储器及所述高 速缓存存储器耦合的预取单元,其中所述预取单元经设计以将来自所述存储器的指 令加载到另一高速缓冲存储器线中,其中所述指令相继于当前从所述高速缓冲存储 器线发布的指令。
7. 根据权利要求6所述的高速缓冲存储器模块,其中所述预取单元可控制以被启用或 停用。
8. 根据权利要求l所述的高速缓冲存储器模块,其中最近最少使用的算法用以确定哪 个高速缓冲存储器线将被盖写。
9. 一种操作用于中央处理单元的高速缓冲存储器的方法,其包含以下步骤将多个顺序指令存储在所述高速缓冲存储器的高速缓冲存储器线内; 为所述高速缓冲存储器线设定分支跟踪功能;执行从所述高速缓冲存储器线提取的指令,其中在调用子例程后即刻自动锁定所 述高速缓冲存储器线。
10. 根据权利要求9所述的方法,其中如果调用子例程的指令是所述高速缓冲存储器线 中的最后一个指令,那么不执行所述自动锁定所述高速缓冲存储器线的步骤。
11. 根据权利要求9所述的方法,其进一步包含在从所述子例程返回后即刻为所述高速 缓冲存储器线复位所述锁定的步骤。
12. 根据权利要求9所述的方法,其中在执行所述高速缓冲存储器线中所含有的指令后 即刻调用所述子例程。
13. 根据权利要求9所述的方法,其中通过中断来调用所述子例程。
14. 一种操作用于中央处理单元的高速缓冲存储器的方法,其包含以下步骤提供多个高速缓冲存储器线,其每一者具有用于存储指令或数据的存储区域以及用于控制每一高速缓冲存储器线的功能的多个控制位;将多个顺序指令存储在所述多个高速缓冲存储器线中的一高速缓冲存储器线内; 在设定所述高速缓冲存储器线中的所述多个控制位中的分支跟踪功能位后,当在执行存储于所述高速缓冲存储器线中的指令期间调用子例程时自动锁定所述高速缓冲存储器线。
15. 根据权利要求14所述的方法,其进一步包含在从所述子例程返回后即刻复位用于 所述高速缓冲存储器线的所述分支跟踪功能的步骤。
16. 根据权利要求14所述的方法,其进一步包含借助于所述多个控制位中的锁定控制 位而提供高速缓冲存储器线的手动锁定功能的步骤。
17. 根据权利要求14所述的方法,其进一步包含借助于所述多个控制位中的类型控制 位而提供指示高速缓冲存储器线是用于存储指令还是数据的类型功能的步骤。
18. 根据权利要求14所述的方法,其进一步包含借助于所述多个控制位中的有效性控 制位而提供高速缓冲存储器线的指示高速缓冲存储器线中的所存储内容的有效性 的有效性功能的步骤。
19. 根据权利要求14所述的方法,其进一步包含为每一高速缓冲存储器线提供用于屏 蔽相关联地址标记字段的位的多个位的步骤。
20. 根据权利要求14所述的方法,其进一步包含以下步骤-在执行存储于高速缓冲存储器线中的指令后即刻起始对存储在存储器中的相继 于存储在所述高速缓冲存储器线中的指令的指令的预取。
21. 根据权利要求20所述的方法,其中将所述所预取指令存储在通过最近最少使用的算法确定的高速缓冲存储器线中。
22. 根据权利要求14所述的方法,其进一步包含将含有指令回路的指令流存储在至少 一个高速缓冲存储器线中且锁定所述高速缓冲存储器线以免被盖写的步骤。
23. 根据权利要求14所述的方法,其进一步包含将顺序指令存储在多个高速缓冲存储 器线中且锁定含有形成指令回路的指令的所有高速缓冲存储器线的步骤。
全文摘要
本发明提供一种用于中央处理单元的高速缓冲存储器模块,其具有与存储器耦合的高速缓冲存储器控制单元以及与所述控制单元及所述存储器耦合的高速缓存存储器,其中所述高速缓存存储器具有多个高速缓冲存储器线,每一高速缓冲存储器线具有用于存储待顺序发布的指令的存储区域及相关联控制位,其中所述多个高速缓冲存储器线中的至少一个高速缓冲存储器线具有至少一个分支跟踪控制位,所述分支跟踪控制位在被设定时提供在预定义分支指令已被发布的情况下对所述高速缓冲存储器线的自动锁定功能。
文档编号G06F12/12GK101558393SQ200780046003
公开日2009年10月14日 申请日期2007年12月14日 优先权日2006年12月15日
发明者格雷格·D·拉赫蒂, 约瑟夫·W·特里斯, 罗德尼·J·佩萨文托 申请人:密克罗奇普技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1