基于指令基址寄存器的高速缓存路线预测的制作方法

文档序号:6350373阅读:235来源:国知局
专利名称:基于指令基址寄存器的高速缓存路线预测的制作方法
发明
背景技术
1.发明领域这个发明涉及计算机系统领域,尤其涉及一个预测性的n路相关联高速缓存,它使用指令基址寄存器作为在高速缓存中的特定路线的一个预测器,其中该高速缓存可能包含一个被寻址的数据项。
2.相关技术描述高速缓存系统通常被用于降低与访问相对低速存储设备有关的有效延迟。当一个处理器请求访问在低速存储器中的一个特定数据项时,高速缓存系统把所请求的数据加载到一个高速存储器中。尔后,经由该高速存储器提供对这个同一数据项的后续访问,由此避免了与低速存储器有关的延迟。通常,当数据项被请求时,把包含所请求数据项的一“行”数据项从低速存储器中加载到高速存储器中,以便在所加载行内的任何数据项都能够随后由该高速存储器提供。
一个高速缓冲存储器存取系统的效率是由将来数据存取与先前的数据存取相关的可能性提供的。通常,一个请求的数据正被包含在与一个先前请求的数据项同一行的高速缓存中的可能性实质上大于零,因此满足来自于高速的高速缓冲存储器请求的可能性相应地实质上大于零。
高速存储器比低速存储器更昂贵,因此可用的高速缓冲存储器数量通常是有限的。高速缓存管理方案被用来确定当新的一行数据需要被加载到高速存储器中时,哪些数据项将从该高速存储器中除去。通常使用的一种用于在高速存储器中保持数据项的优先化方案是一种“最近最少使用(LRU)”标准,其中最近最少使用的(即“旧的”)存储器存取行被新的一行代替,由此保持最近使用/存取的数据项。也可以典型地结合LRU优先化方案使用其它标准、诸如“最经常使用的”。
相关联高速缓存通常被用来基于所请求项的一个地址子集存储多行数据项。

图1说明了一种传统的、用于一个相关联高速缓存100的寻址方案。一般来自于一个处理器的地址110被逻辑分区成为一个标记字段111、一个变址字段112、和一个字字段113,这将在以下进行进一步讨论。变址字段112在一个高速缓存120中向相关的一组高速缓存线提供一个变址。该组中的每条高速缓存线路被称为一“路”,而且高速缓存100对应于一个n路相关联高速缓存。字字段113的大小j对应于一个数据行的大小2j。也就是说,如果每一数据行有十六个字,则字字段113的大小将是四位;如果每一数据行有六十四个字,则字字段113将是六位宽。使用在字字段113和数据行大小之间的这个2次幂关系,标记和变址字段唯一地标识该存储器中的每一数据行。
当从一个低速存储器(未显示)中把一个被寻址的数据项加载到高速缓存120中时,包含该数据项的那个数据行被放置在一个选择路中,变址字段定义在所选择路中用于放置该数据行的位置。使用各种普通可用算法中的一种、诸如上述的LRU优先化方案,实现该路的选择。当所寻址的数据项被保存在该高速缓存中的一个特定行区域DLine-a、DLine-b等中时,标记字段111也被存储,如在图1中的字段Tag-a、Tag-b所示。所存储的标记字段与在该路内、对应于数据行的变址字段的数据行位置唯一地标识被保存在高速缓存120中的数据行。
在一个被寻址的数据项被加载到高速缓存120中之前,检查高速缓存120以确定该数据项是否已经位于高速缓存120中了,以潜在地避免不得不从低速存储器中加载数据项。由于对这个数据项的一个先前访问,或者由于对在与当前被寻址数据项在同一数据行DLine-a、DLine-b等内的一个数据项的先前访问,被寻址的数据项可以位于高速缓存中。变址字段112定义在高速缓存中、与这个地址有关的n行组。经由比较器130a、130b等把每一个被存储的、对应于在相关组中的每一个被存储行125a、125b等的标记121a、121b等,与被寻址数据项的标记字段111进行比较。在这个比较正在进行的同时,对应于变址字段113的每一个被存储数据行125a、125b等被加载到一个高速缓存140中,以便如果该数据项当前被加载到高速缓存中,则是可用的。
如果被寻址的数据项当前被加载到高速缓存中,则相应的比较器130a、130b等声明一个高速缓存命中信号,由此标识包含该数据行的特定路线Hit-a、Hit-b等。如果声明了一次命中,则使用字字段113从包含在缓存140中的数据行中选择适当的字141a、141b等,从相应的缓存140中得到适当的字。把所得到的字发送到提供地址110的处理器。在高速缓存系统100的一个传统实施例中,当发生一个高速缓存命中时,实现标记字段111与所存储的标记字段120a、120b等的比较、以及适当字141a、141b等的后续选择,所要求的时间实质上小于对应于低速存储器的延迟时间。这样,当数据项位于高速缓存120中时,对一个数据项的有效存取时间实质上被减小了。
如果没有发生一个高速缓存命中,则典型地,如上所述,通过加载该数据行到最近最少使用的(LRU)路中或者其它优先化方案,实现以上描述的、从存储器中加载被寻址的数据行到高速缓存120的一个选择路Way-a、Way-b等中。
有效地从处理器中把字存储到存储器所要求的时间通过使用高速缓存120被同样加速了。通过使用以上描述的比较处理,确定在高速缓存120中存在被寻址的数据项。如果数据项当前位于高速缓存120中,则用来自于处理器的新数据项值代替缓存140中的所选择字,而且缓存140被加载到包含所寻址数据项的数据行125a、125b等中。“被修改的”字段129用来发信号通知一条高速缓存线的内容已经改变了。在用新的数据行覆盖一个数据行之前,检查被修改的字段129,而且如果该数据行已经被修改了,则使用所存储的标记字段121a、121b等以标识在存储器中用以存储该行的位置,把被修改了的数据行存储回存储器中。
虽然一个n路相关联高速缓存提供了一个用于增加有效存储器访问速度的有效装置,但是同时的路线比较方案与一个单路相关联高速缓存相比要以比其高n倍的比率损耗能量,其中把被寻址的数据项标记与所有存储的标记进行比较。使n路相关联高速缓存实质上比一个集成电路、或者印刷电路板的其它区域更热是很平常的。
为了减少一个传统的n路相关联高速缓存的能量损耗,应用预测技术以选择一条对应于一个给定地址的可能路线。在一个路线预测方案的传统实施例中,可能的路线是首先检查被寻址的数据项,而且只有当那条路线不包含被寻址的数据项时才检查剩余的路线。在KojiInoue等人刊登于2000年2月的IEICE Trans.Electron.E83-C卷2期186-194页上的“A HIGH-PERFORMANCE AND LOW-POWERCACHE ARCHITECTURE WITH SPECULATIVE WAY-SELECTION”中,提出了一种路线预测方案,并且把通过路线预测方案的能量损耗与非预测方案进行比较,其中该文章被包含在内作为参考。如果预测成功率高,则节能就能够是十分实质的,是因为每当路线预测正确时使能量减少到n分之一。
在图1中说明了一个路线预测表150的例子,它被用于预测与一个被寻址数据项有关的特定路线。数据地址110的子集被用来索引路线预测表150。可以使用各种方案定义这个地址子集110,并且定义用于提供路线预测表150内容的算法。一个简单的实施例使用变址字段113作为用于索引表格150的子集,并且表格150的内容对应于用于每个索引的最近最少使用(LRU)路线Way-a、Way-b等。做为选择,还可以使用变址字段112的一个子集、或者从标记字段111和变址字段112中取用的一个子集以提供一个到路线预测表150的索引。对用于索引路线预测表的地址子集110和路线数量n的选择确定了所需要的路线预测表的尺寸。在一个8路相关联高速缓存中,要求有三位以唯一地标识在路线预测表中的每一条路线,而且在表格150中的三位入口数目是由用于索引表格150的地址子集的唯一组合数目确定的。如果例如使用了十位来索引表格150,则在表格150中必须支持1024(210)个三位入口。
当请求一个地址110时,使用来自于路线预测表150的预测路线来有选择地仅仅访问被预测的路线。为了方便起见,在下文中使用了下标p来指定被预测的路线。把在所选择路线p中对应于变址字段112的所存储标记121p提供给所选择路线的比较器130p,并且把相应的数据行125p提供给所选择路线p的缓存140p。如果被预测的路线包含该数据行则声明Hit-p信号,并且把被寻址的字从缓存140p中提供给请求处理器。如果被预测的路线p没有包含被寻址的数据项,则使用以上讨论的、用于在一个n路相关联高速缓存中检查一个被寻址数据项的技术,检查其它每一条未被预测的路线中被寻址数据项的存在。
如果没有路线包含被寻址的数据项,则从存储器中加载包含被寻址数据项的数据行到高速缓存120中,典型地在索引位置处加载到最近最少使用的路线中。假定路线预测表150被配置为存储最近使用的路线,把用于存储该数据行的路线的一个标识存储到路线预测表150中。这样,对与当前被寻址数据项在同一数据行中的一个数据项的后续请求将会产生正确的被预测路线,并且由此节省能量损耗。
还可以使用在这个节能方案上的变体。例如,所有的标记121a、121b等可以被加载到相应的比较器130a、130b等中,但是只有被预测的路线p中的数据行125p可以被加载到缓存140p中。这样,通过避免加载所有的未被预测路线中的数据行125a、125b到缓存120a、120b等中,同时还避免了当被预测的路线不包含被寻址的数据项时、再检查所有标记字段121a、121b所要求的时间,实现了一定的节能。如果其它标记比较器130中的一个声明了一个命中信号,则相应路线中的数据行被加载到相应的缓存140中,并且把适当的字提供给处理器。如果其它标记比较器130都没有声明一个命中信号,则把被寻址的数据行从存储器中加载到高速缓存120中,如以上所讨论那样。
注意到,在如图1说明的一种传统路线预测方案中,在对应于在该指令中的间接地址的存储器地址确定之后发生路线预测。在流水线结构中,存储器地址的确定经常是在关键路线上,并且为路线预测引入的任何额外延迟可能在整个处理器性能上具有一个直接的影响。
发明简要概述这个发明的一个目的是提供一种在一个处理器的关键路线外允许路线预测的方法和系统。这个发明的一个进一步目的是提供一种潜在地提高在一个n路相关联高速缓存中的路线预测成功率的方法和系统。这个发明的一个进一步目的是提供一个比传统基于地址的路线预测方案更有效的路线预测方案。
通过提供一种基于使用间接寻址来访问在存储器中的数据项的指令内容、用于一个n路相关联高速缓存的路线预测方案来实现这些以及其它目的。该间接地址指令的内容在任何时候都可用于流水线处理,而且这个发明的路线预测方案不需要一个存储器地址计算。一条间接寻址指令的内容还提供了存储器访问的一个高级抽象,而且因此和数据项的绝对地址相比,可能更能指示在数据项当中的关系。在一个最佳实施例中,包含在间接地址指令中的基址寄存器提供了一个到一个路线预测表的索引。使用同一个基址寄存器间接寻址的数据项很可能是相关的,而且因此基于一个间接地址指令的基址寄存器在一个n路关联存储器中预测一个特定路线很可能导致一个高速缓存命中,由此减小了与访问在该高速缓存中的所有路线有关的能量损耗。
附图简要说明通过举例并结合附图对本发明进行了进一步详细描述,其中图1说明了一个现有技术的、具有路线预测的n路相关联高速缓存的框图实例。
图2说明了依据这个发明的、具有路线预测的一个n路相关联高速缓存的框图实例。
在整个附图中,相同的标记数字指示了类似或相应的特征或功能。具有后缀字母的项指示一个共用的特征或功能的特定例子。在说明书中对没有一特定后缀字母的这种项的标记指示具有同一个数字标记的任一或所有举例说明的项。
本发明的详细说明在图1中说明了一种用于经由一条间接寻址指令160间接寻址在存储器中的数据项的共用方法。被提供给处理器的指令160包含一个操作码字段161、诸如“加载”、“存储”等,它定义了将要被执行的操作。基址寄存器162和偏移量164字段用来间接地引用在存储器中的一个地址,如以下将进一步详细描述得那样。寄存器字段163标识接收(在一条“加载”指令中)或提供(在一条“存储”指令中)数据项的处理器内部寄存器。
对于一个大的寻址空间,为包含一个清楚、或直接的地址所必需的一条指令的尺寸将会是大的。即使为了寻址例如64K字的相对小地址空间,也需要在一条指令中分配十六位以包含该地址。较大的地址空间将需要相对大的指令宽度以包含该地址。作为在每条数据传送指令中提供一个显式地址的一个备选方案,地址被保存在一寄存器170中,而且指令160仅仅包含这个寄存器的一个标识符162。在一条指令160中对寄存器170的引用提供了一个对包含在寄存器170中地址的间接引用。典型地,提供了8、16、32、或64个寄存器,分别仅需要3、4、5、或6位,用于在指令160中存储地址的标识162。每一个寄存器170的大小足以包含对应于存储器地址空间的地址。为了避免不得不用每个新地址重新加载一个寄存器170,在间接地址指令160中提供了一个偏移量字段164。通过经由加法器180把基址寄存器170内容和偏移量164求和,确定在一条指令160中、对应于到基址寄存器170的引用162和偏移量164的绝对地址110。取决于特定处理器,偏移量可以是一个有符号的或无符号的整数,有符号的整数配置考虑了距基址寄存器170内容的正向和反向偏移。
这个发明是以间接寻址指令经常在一程序中提供一个较高水平的抽象数据关系的观察为前提的。例如,编译器将典型地把在一子程序范围之内的所有临时变量放置在连续的存储单元中。假定这些临时变量每个都在一个基地址的偏移量范围内,编译器将相应地标识一个特定基址寄存器用于引用这些临时变量中的每一个。每当引用一个临时变量时,同一个基址寄存器将出现在指令160中。同样地,传递给一个子程序的自变量、或指向这些自变量的指针通常想会被暂时地保存在连续或近似连续的存储单元中,并且将相应地被一个共用的基址寄存器引用。使用一个共用的基址寄存器引用在存储器中空间上相关的数据项的其它例子包含引用在一个数组中的项、在一个文本字符串中的字符等。查看另一条路线,包含同一个基址寄存器的间接寻址指令很可能引用空间上彼此相关的项,因此基于包含同一个基址寄存器的间接寻址指令的发生预测数据关系很可能是成功的,即提供了一个高的高速缓存命中率。
尽管这个发明尤其非常适于在一个n路相关联高速缓存中使用,但是它也可以被应用到通常使用一个地址字段预测可能包含一个被引用数据项的高速缓存区域的其它高速缓存方案中。由于在使用一个基址寄存器和在数据项当中存在空间关系之间隐含相关性,通过增加或代替传统的、用于利用一个被引用的基址寄存器标识进行预测的地址字段,能够预期一个较高的高速缓存命中率。尽管对本领域普通技术人员来说显然本发明可以应用到使用分区高速缓存的其它高速缓存方案中,但是为便于参考,在此是使用一个n路相关联高速缓存的范例提出了本发明。
图2说明了依据这个发明的具有路线预测的一个n路相关联高速缓存200的框图实例。如图2所示,提供了一个路线预测表,它使用提供给处理器的一条间接寻址指令160的内容作为一个用于预测高速缓存120中对应于一个被引用数据项的一条路线的基础。在所示的例子中,基址寄存器162提供了一个到路线预测表250的索引用于产生被预测的路线。由于包含同一个基址寄存器162的指令很可能引用在基址寄存器170内容的偏移量164范围之内的相关数据项,所以,如果数据项实际上在高速缓存120中,则被预测的路线很可能是包含被引用数据项的路线。
被预测路线包含被引用数据项的可能性取决于包含在每一高速缓存线路中的数据项数目;在线路中的项越多,被引用数据项在该线路范围之内的可能性较高。同样地,被预测路线包含被引用数据项的可能性通过使用高速缓存分配方案而增加了,其中高速缓存分配方案可能把相关的高速缓存线存储到同一条路线中。也就是说,例如,上述的、用于确定使用哪条路线加载一条新高速缓存线的LRU优先化方案能够被修改,以有利于把新的高速缓存线加载到和具有同一基址寄存器162的先前加载高速缓存线相同的路线中。如这个公开中讲授的、这些及其它用于提高一种基于间接地址的预测方案效率的方案对本领域普通技术人员来说是显然的。
除了提供一种不需要存储器地址计算、并且潜在地提高了预测成功率的预测方案之外,能够预期这个发明中的路线预测表250与传统的路线预测表150相比损耗相当少的资源。如上所述,寄存器170的数目通常局限于64,而且一般为32。依据这个发明,用于一个路线预测表250的总存储需要量等于寄存器170的数目乘以唯一地标识高速缓存120中的每条路线所要求的位数。通常,寄存器170的数目实质上比在地址110变址字段112中提供的索引数目少,因此实现了路线预测表大小的减少。
在一个最佳实施例中,指令160被处理以在该指令被实际执行之前开始数据存取,尽管数据存取可以在该指令被执行时开始。基址寄存器162的内容被用来索引在路线预测表250中的一条被预测路线。这条被预测的路线被用来启用在高速缓存120中的该被预测路线p,以便经由比较器130p检查被寻址数据项是否包含在被预测路线中。在这个检查的同时,如果被预测的路线p包含已经寻址的数据项,则数据行125p被加载到缓存140p中,以便是立即可用的。如果已经预测的路线包含被寻址的数据项,则字字段113从在缓存140p中的数据行中选择被寻址的数据项,并且在执行指令160时把它提供给处理器。如果被预测的方法p不包含被寻址的数据项,则检查其它路线,如结合图1详细描述得那样。
上述仅仅举例说明了本发明的原则。因此将要理解,本领域技术人员能够设计出各种尽管在此未明确描述或显示、但体现了本发明原理,因此在它的精神和范围之内的方案。例如能够使用基址寄存器162和偏移量164子集的组合以在预测中提供一个额外的精确水平。也就是说,例如,如果偏移量是一个有符号的整数,则基址寄存器162和偏移量164的最高有效位的组合为引用包含在寄存器170中在基地址以下项的路线预测、以及引用在基地址以上项的路线预测作好了准备。使用偏移量164的附加位进一步改善了预测;极端地,路线预测表可以被配置为为偏移量164的每一数据行大小的段提供预测。尽管这个配置可能需要与传统基于地址的标记预测一样多的存储器位数,或者更多,但是可以预计使用基址寄存器以组织路线预测表与传统基于地址的路线预测方案相比,提供了一个实质上较高的高速缓存命中率。鉴于这个公开,这些及其它系统配置和最优化特征对本领域普通技术人员来说将会是显然的,而且被包含在下列权利要求的范围内。
权利要求
1.一个高速缓存系统(200),包含一个高速缓冲存储器(120),包含多个区域(Way-a、b、......n),这多个区域中的每个区域包含多个存储数据行(125)其特征在于高速缓存系统(200)被配置为在这多个区域中的一个被预测区域(p)中确定一个被寻址的数据项是否位于这多个存储数据行(125)中的一个相应数据行中;以及被预测的区域(p)基于提供该被寻址数据项地址(110)的一条间接寻址指令(160)的子集(162,164)。
2.如权利要求1所述的高速缓存系统(200),其特征在于高速缓冲存储器(120)相当于一个n路相关联高速缓存,该n路相关联高速缓存中的每条路线都形成这多个区域中的一个区域,被预测区域(p)是一条被预测的路线,每条路线进一步包含对应于这多个存储数据行(125)的多个存储标记(121),这多个存储数据行(125)和多个存储标记(121)中的每一个都可经由被寻址数据项的地址(110)中的变址字段(112)被唯一地可寻址,其中n路相关联高速缓存被配置为通过在被预测路线中把地址(110)的标记字段(111)与对应于该地址(110)的变址字段(112)的多个存储标记(121)的一个存储标记进行比较,确定被寻址数据项是否位于被预测的路线中。
3.如权利要求2所述的高速缓存系统(200),其特征在于n路相关联高速缓存被进一步配置为如果被寻址数据项没有位于被预测路线中的相应数据行(125)中,则把地址(110)的标记字段(111)与在该多个区域其它路线中的存储标记(121)进行比较,以便确定被寻址的数据项是否位于在其它路线中的一个相应数据行(125)中。
4.如权利要求3所述的高速缓存系统(200),其特征在于n路相关联高速缓存被进一步配置为如果被寻址的数据项没有位于在被预测或其它路线中的相应数据行(125)中,则从一个存储器中加载被寻址的数据项,并且加载到该多个区域中的一条选择路线中。
5.如权利要求1所述的高速缓存系统(200),其特征在于间接寻址指令(160)的子集(162,164)包含一个基址寄存器(162)标识,该基址寄存器包含一个基地址,并且被寻址数据项的地址(110)基于这个基地址。
6.如权利要求5所述的高速缓存系统(200),其特征在于在间接寻址指令(160)中子集(162,164)进一步包含一个偏移量字段(164)的一部分,并且被寻址数据项的地址(110)进一步基于该偏移量字段(164)。
7.如权利要求1所述的高速缓存系统(200),其特征在于被预测的区域(p)基于一个最近最少使用的确定。
8.一种处理器,包含一个指令寄存器(160),被配置为接收包含至少一条间接寻址指令的程序指令,其中该间接寻址指令提供了对在一存储器中的一个被引用数据项的间接引用(162,164),以及一个预测设备(250),被配置为基于包含在指令寄存器(160)中的位子集(162,164),标识在一个高速缓存(200)的多个区域(Way-a、b、......n)中的一个被预测区域。
9.如权利要求8所述的处理器,其特征在于包含在指令寄存器(160)中的该位子集(162,164)包含了一个基址寄存器标识,其中该基址寄存器包含一个用来确定在存储器中的被引用数据项的地址(110)的基地址。
10.如权利要求9所述的处理器,其特征在于包含在指令寄存器(160)中的该位子集(162,164)进一步包含一个偏移量字段的至少一部分,其中该偏移量字段也被用来确定在存储器中的被引用数据项的地址(110)。
11.如权利要求8所述的处理器,其特征在于在高速缓存(200)中的多个区域对应于在一个n路相关联高速缓存中的多条路线,以及被预测的区域(p)对应于这多条路线中的一条被预测的路线。
12.一种用于预测一个很可能包含一个被引用数据项的高速缓存(200)的一个区域的方法,包含从一条间接寻址该被引用数据项的间接寻址指令(160)中提取多位(162,164),以及基于来自于间接寻址指令(160)的这多位(162,164),确定(250)该高速缓存(200)的区域。
13.如权利要求12所述的方法,其特征在于这多位(162,164)包含一个用来确定被引用数据项地址(110)的基址寄存器(162)的标识符。
14.如权利要求13所述的方法,其特征在于这多位(164,164)进一步包含一个进一步用来确定被引用数据项地址(110)的偏移量字段(164)的至少一部分。
全文摘要
一种用于一个分区高速缓存的路线预测方案,其基于使用间接寻址访问在存储器中的数据项的指令的内容。间接地址指令的内容可以直接用于使用而不需要存储器地址计算,而且基于这种可直接使用信息的预测方案尤其非常适于流水线结构。间接寻址指令还提供了存储器访问的一个高级抽象,而且与数据项的绝对地址相比,很可能更能指示出在数据项当中的关系。在一个最佳实施例中,包含在间接地址指令中的基址寄存器提供了一个到用于一个n路相关联高速缓存的一个路线预测表的索引。使用同一个基址寄存器间接寻址的数据项很可能是相关的,而且因此基于一个间接地址指令的基址寄存器在一个n路关联存储器中预测一条特定路线很可能导致一个高速缓存命中,由此减小了与访问在该高速缓存中的所有路线有关的能量损耗。
文档编号G06F12/08GK1459058SQ02800633
公开日2003年11月26日 申请日期2002年2月28日 优先权日2001年3月13日
发明者J·W·范德维尔德特, P·斯特拉维尔斯 申请人:皇家菲利浦电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1