CN102169429B - 预取单元、数据预取方法以及微处理器 - Google Patents
预取单元、数据预取方法以及微处理器 Download PDFInfo
- Publication number
- CN102169429B CN102169429B CN201110077108.7A CN201110077108A CN102169429B CN 102169429 B CN102169429 B CN 102169429B CN 201110077108 A CN201110077108 A CN 201110077108A CN 102169429 B CN102169429 B CN 102169429B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- access
- address
- cache line
- memory block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种预取单元、数据预取方法以及微处理器。该预取单元用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应存储器区块的地址中的一个,并且存取要求的地址随着时间函数非单调性地增加或减少。当接收到存取要求时,预取单元将维持储存装置中的存取要求的一最大地址以及一最小地址,以及最大地址以及最小地址的变化的计数值、维持存储器区块中最近被存取的快取线的一历史记录,其与最近被存取的快取线以存取要求的地址相关。预取单元亦依据计数值决定一存取方向、根据历史记录决定一存取样态、并且根据存取样态并沿着存取方向,将快取存储器内尚未被历史记录指示为已存取的快取线预取至存储器区块中。
Description
技术领域
本发明涉及一般微处理器的快取存储器,特别是涉及将数据预取至微处理器的快取存储器。
背景技术
以最近的计算机系统而言,在快取失败(cachemiss)时,微处理器存取系统存储器所需的时间,会比微处理器存取快取存储器(cache)多上一或两个数量级。因此,为了提高快取命中率(cachehitrate),微处理器整合了预取技术,用来测试最近数据存取样态(examinerecentdataaccesspatterns),并且企图预测哪一个数据为程序下一个存取的对象,而预取的好处已是众所皆知的范畴。
然而,申请人注意到某些程序的存取样态并不为现有微处理器的预取单元所能检测的。例如,图1所示为当执行的程序包括经由存储器进行一序列的储存操作时,第二级快取存储器(L2Cache)的存取样态,而图中所描绘的为各时间的存储器地址。由图1可知,虽然总趋势为随着时间而增加存储器地址,即由往上的方向,然而在许多状况下,所指定的存取存储器地址亦可较前一个时间往下,而非总趋势的往上,使其不同于现有预取单元实际所预测的结果。
虽然就数量相对大的样本而言,总趋势是朝一个方向前进,但现有预取单元在面临小样本时却可能出现混乱状况的原因有两个。第一个原因为程序是依循其架构对存取存储器,不论是由演算法特性或是不佳的编程(poorprogramming)所造成。第二个原因为非循序(out-of-orderexecution)微处理器核心的管线与队列在正常功能下执行时,常常会用不同于其所产生的程序顺序来进行存储器存取。
因此,需要一个数据预取单元(器)能够有效地为程序进行数据预取,其必须考虑到在较小时窗(timewindows)进行存储器存取指令(操作)时并不会呈现明显的趋势(nocleartrend),但当以较大样本数进行审查时则会出现明显的趋势。
发明内容
本发明揭示一种预取单元,设置于具有一快取存储器的一微处理器中,其中预取单元用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应存储器区块的地址中的一个,并且存取要求的地址随着时间函数非单调性地(non-monotonically)增加或减少。预取单元包括一储存装置以及一控制逻辑。控制逻辑,耦接至储存装置,其中当接收到存取要求时,控制逻辑则用以维持储存装置中的存取要求的一最大地址以及一最小地址,以及最大地址以及最小地址的变化的计数值、维持存储器区块中最近被存取的快取线的一历史记录,最近被存取的快取线是与存取要求的地址相关、根据计数值,决定一存取方向、根据历史记录,决定一存取样态,并且根据存取样态并沿着存取方向,将快取存储器内尚未被历史记录指示为已存取的快取线预取至存储器区块中。
本发明揭示一种数据预取方法,用以预取数据至一微处理器的一快取存储器,数据预取方法,包括接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应存储器区块的地址中的一个,并且存取要求的地址随着时间函数非单调性地(non-monotonically)增加或减少;当接收到存取要求时,维持存储器区块中的一最大以及一最小地址,并且计算最大以及最小地址的变化的计数值;当接收到存取要求时,维持存储器区块中最近被存取的快取线的一历史记录,最近被存取的快取线是与存取要求的地址相关;根据计数值决定一存取方向;根据历史纪录决定一存取样态;以及根据存取样态并沿着存取方向,将快取存储器内尚未被历史记录指示为已存取的快取线预取至存储器区块中。
本发明揭示一种微处理器,包括多个核心、一快取存储器以及一预取单元。快取存储器,由核心所共享,用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应存储器区块的地址中的一个,存取要求的地址随着时间函数非单调性地(non-monotonically)增加或减少。预取单元,用以监视存取要求,并维持存储器区块中的一最大地址以及一最小地址,以及最大地址以及最小地址的变化的计数值、根据计数值,决定一存取方向并且沿着存取方向,将存储器区块中未命中的快取线预取至快取存储器中。
本发明揭示一种微处理器,包括一第一级快取存储器、一第二级快取存储器以及一预取单元。预取单元用以检测出现在第二级快取存储器中的最近存取要求的一方向以及样态,以及根据方向以及样态,将多个快取线预取至第二级快取存储器中、从第一级快取存储器,接收第一级快取存储器所接收的一存取要求的一地址,其中地址与一快取线相关、决定在方向中所相关的快取线的后被样态所指出的一个或多个快取线并且导致一个或多个快取线被预取至第一级快取存储器中。
本发明揭示一种数据预取方法,用以预取数据至具有一第二级快取存储器的一微处理器的一第一级快取存储器,数据预取方法包括检测出现在第二级快取存储器中的最近存取要求的一方向以及样态,以及根据方向以及样态,将多个快取线预取至第二级快取存储器中;从第一级快取存储器,接收第一级快取存储器所接收的一存取要求的一地址,其中地址与一快取线相关;决定在方向中所相关的快取线的后被样态所指出的一个或多个快取线;以及导致一个或多个快取线被预取至第一级快取存储器中。
本发明揭示一种微处理器,包括一快取存储器以及一预取单元。预取单元用以检测具有一第一存储器区块的多个存储器存取要求的一样态,并且根据样态从第一存储器区块预取多个快取线至快取存储器中、监视一第二存储器区块的一新的存储器存取要求、决定第一存储器区块是否虚拟邻近于第二存储器区块,并且当自第一存储器区块延续至第二存储器区块时,则决定样态是否预测到第二存储器区块的新的存储器存取要求所相关的一快取线在第二存储器区块中、并且根据样态,从第二存储器区块将相映的快取线预取至快取存储器中。
本发明揭示一种数据预取方法,用以预取数据至一微处理器的一快取存储器,数据预取方法包括检测具有一第一存储器区块的多个存储器存取要求的一样态,并且根据样态从第一存储器区块预取快取线至上至快取存储器中;监视一第二存储器区块的一新的存储器存取要求;决定第一存储器区块是否虚拟邻近于第二存储器区块,并且当自第一存储器区块延续至第二存储器区块时,决定样态是否预测到第二存储器区块的新的存储器存取要求所相关的一快取线在第二存储器区块中;以及根据样态,从第二存储器区块将多个快取线预取至快取存储器中,以回应决定步骤。
附图说明
图1所示为当执行经由存储器包括一序列储存操作的的程序时,一种第二级快取存储器的样态存取表现。
图2为本发明的一种微处理器的方块图。
图3为本发明图2的预取单元更详细的方块图。
图4为本发明图2的微处理器以及特别是图3的预取单元的操作流程图。
图5为本发明图3的预取单元对图4的步骤的操作流程图。
图6为本发明图3的预取单元对图4的步骤的操作流程图。
图7为本发明图3的预取要求队列的操作流程图。
图8A和图8B为本发明一存储器区块的两个图型存取点,用以表示本发明的定界框预取单元。
图9为本发明图2所示的微处理器的操作范例的方块图。
图10为本发明延续图9的范例的图2所示的微处理器的操作范例的方块图。
图11A和图11B为本发明延续图9以及10图的范例的图2所示的微处理器的操作范例的方块图。
图12为本发明另一实施例的一种微处理器的方块图。
图13为本发明图12所示的预取单元的操作流程图。
图14为本发明根据图13步骤的图12所示的预取单元的操作流程图。
图15为本发明另一实施例具有一定界框预取单元的一种微处理器的方块图。
图16为本发明图15的虚拟杂凑表的方块图。
图17为本发明图15的微处理器的操作流程图。
图18为本发明根据经由图17范例叙述的在预取单元的操作后的图16的虚拟杂凑表的内容。
图19A和图19B为本发明图15的预取单元的操作流程图。
图20为本发明另一实施例的用在图15的预取单元的一杂凑物理地址至杂凑虚拟地址库的方块图。
图21本发明的一多核微处理器的方块图。
附图符号说明
100~微处理器
102~指令快取存储器
104~指令解码器
106~暂存器别名表
108~保留站
112~执行单元
132~其他执行单元
134~载入/储存单元
124~预取单元
114~引退单元
116~第一级数据快取存储器
118~第二级快取存储器
122~总线接口单元
162~虚拟杂凑表
198~队列
172~第一级数据搜寻指标器
178~第一级数据样态地址
196~第一级数据存储器地址
194~样态预测快取线地址
192~快取线配置要求
188~快取线数据
354~存储器区块虚拟杂凑地址栏
356~状态栏
302~区块位遮罩暂存器
303~区块号码暂存器
304~最小指标暂存器
306~最大指标暂存器
308~最小改变计数器
312~最大改变计数器
314~总计数器
316~中间指标暂存器
318~周期匹配计数器
342~方向暂存器
344~样态暂存器
346~样态顺序暂存器
348~样态区域暂存器
352~搜寻指标暂存器
332~硬件单元
322~控制逻辑
328~预取要求队列
324~提取指标器
326~推进指标器
2002~杂凑虚拟地址库
2102A~核心A
2102B~核心B
2104~高度反应式的预取单元
2106~共享的高度反应式的预取单元
具体实施方式
以下将详细讨论本发明各种实施例的制造及使用方法。然而值得注意的是,本发明所提供的许多可行的发明概念可实施在各种特定范围中。这些特定实施例仅用于举例说明本发明的制造及使用方法,但非用于限定本发明的范围。
广泛而言,关于上述问题的解决方法可以后续叙述加以解释。当一存储器的所有存取(指令、操作或要求)皆表示在一张图上时,所有存取(指令、操作或要求)的一集合可被一定界框圈起来。当外加的存取要求亦表示于同一图上时,这些存取要求亦可被调整大小后的定界框圈起来。上述首张图如图8所示为一存储器区块的两次存取(指令或操作)中。图8的X轴表示指令的存取的时间,Y轴表示具有4KB区块的存取的64字节快取线的索引。首先,描绘第一次的两个存取:第一个存取是对快取线5进行存取,第二个存取要求是对快取线6进行存取。如图所示的一定界框将代表存取要求的两点圈起来。
再者,第三个存取要求发生于快取线7,定界框变大使得代表第三个存取要求的新点可被定界框圈起在内。随着新的存取不断发生,定界框必随着X轴扩大,并且定界框的上缘亦随着Y轴扩大(此为向上的例子)。上述定界框上缘以及下缘的移动的历史纪录将用以决定存取样态的趋势为向上、向下或者都不是。
除了追踪定界框的上缘以及下缘的趋势以决定一趋势方向外,追踪个别的存取要求也是必要的,因为存取要求跳过一或两个快取线的事件时常发生。因此,为了避免跳过所预取快取线的事件发生,一旦检测到一向上或向下的趋势,预取单元则使用额外的准则决定所要预取的快取线。由于存取要求趋势会被重新排列,预取单元会将这些暂态的重新排列存取历史纪录予以删除。此操作藉由标记位(markingbit)在一位遮罩(bitmask)中完成的,每一位对应具有一存储器区块的一快取线,,且当位遮罩中对应的位被设置时,表示特定的区块可被存取。一旦对存储器区块的存取要求已达到一充分数量,预取单元会使用位遮罩(其中位遮罩不具有存取的时序的指示),并基于如下所述的较大的存取观点(广义largeview)去存取整个区块,而非基于较小的存取观点(狭义smallview)以及现有预取单元般仅根据存取的时间去存取的区块。
图2所示为本发明的微处理器100的方块图。微处理器100包括一个具有多个阶层的传递路径,并且传递路径中亦包括各种功能单元。传递路径包括一指令快取存储器102,指令快取存储器102耦接至一指令解码器104;指令解码器104耦接至一暂存器别名表106(registeraliastable,RAT);暂存器别名表106耦接至一保留站108(reservationstation);保留站108耦接至一执行单元112(executionunit);最后,执行单元112耦接至一引退单元114(retireunit)。指令解码器104可包括一指令转译器(instructiontranslator),用以将巨集指令(例如x86架构的巨集指令)转译为微处理器100的类似精简指令集(reduceinstructionsetcomputerRISC)的巨集指令。保留站108产生并且传送指令至执行单元112,用以使执行单元112依照程序顺序(programorder)执行。引退单元114包括一重新排序缓冲器(reorderbuffer),用以依据程序顺序执行指令的引退(Retirement)。执行单元112包括载入/储存单元134以及其他执行单元132(otherexecutionunit),例如整数单元(integerunit)、浮点数单元(floatingpointunit)、分支单元(branchunit)或者单指令多重数据串流(SingleInstructionMultipleData,SIMD)单元。载入/储存单元134用以读取第一级数据快取存储器116(level1datacache)的数据,并且写入数据至第一级数据快取存储器116。一第二级快取存储器118用以支持(back)第一级数据快取存储器116以及指令快取存储器102。第二级快取存储器118用以经由一总线接口单元122读取以及写入系统存储器,总线接口单元122是微处理器100与一总线(例如一区域总线(localbus)或是存储器总线(memorybus))间的一接口。微处理器100亦包括一预取单元124,用以自系统存储器预取数据到第二级快取存储器118和/或第一级数据快取存储器116。
如图3所示为图2的预取单元124较详细的方块图。预取单元124包括一区块位遮罩暂存器302。区块位遮罩暂存器302中的每一位对应具有一存储器区块的一快取线,其中存储器区块的区块号码储存在一区块号码暂存器303内。换言之,区块号码暂存器303储存了存储器区块的上层地址位(upperaddressbits)。当区块位遮罩暂存器302中的一位的数值为真(truevalue)时,是指出所对应的快取线已经被存取了。初始化区块位遮罩暂存器302将使得所有的位值为假(false)。在一实施例中,存储器区块的大小为4KB,并且快取线的大小为64字节。因此,区块位遮罩暂存器302具有64位的容量。在某些实施例中,存储器区块的大小亦可与实体存储器分页(physicalmemorypage)的大小相同。然而,快取线的大小在其他实施例中可为其他各种不同的大小。再者,区块位遮罩暂存器302上所维持的存储器区域的大小是可改变的,并不需要对应于实体存储器分页的大小。更确切的说,区块位遮罩暂存器302上所维持的存储器区域(或区块)的大小可为任何大小(二的倍数最好),只要其拥有足够的快取线以便进行利于预取方向与样态的检测即可。
预取单元124亦可包括一最小指标暂存器304(minpointerregister)以及一最大指标暂存器306(maxpointerregister)。最小指标暂存器304以及最大指标暂存器306分别用以在预取单元124开始追踪一存储器区块的存取后,持续地指向此存储器区块中已被存取的最低以及最高的快取线的索引(index)。预取单元124还包括一最小改变计数器308以及一最大改变计数器312。最小改变计数器308以及最大改变计数器312分别用以在预取单元124开始追踪此存储器区块的存取后,计算最小指标暂存器304以及最大指标暂存器306改变的次数。预取单元124亦包括一总计数器314,用以在预取单元124开始追踪此存储器区块的存取后,计算已被存取的快取线的总数。预取单元124亦包括一中间指标暂存器316,用以在预取单元124开始追踪此存储器区块的存取后,指向此存储器区块的中间预取存储器线的索引(例如最小指标暂存器304的计数值以及最大改变计数器312的计数值的平均)。预取单元124亦包括一方向暂存器342(directionregister)、一样态暂存器344,一样态周期暂存器346、一样态区域暂存器348以及一搜寻指标暂存器352,其各功能如下所述。
预取单元124亦包括多个周期匹配计数器318(periodmatchcounter)。每一周期匹配计数器318维持一不同周期的一计数值。在一实施例中,周期为3、4以及5。周期是指中间指标暂存器316左/右的位数。周期匹配计数器318的计数值在区块的每一存储器存取进行的后更新。当区块位遮罩暂存器302指示在周期中对中间指标暂存器316左边的存取与对中间指标暂存器316右边的存取相匹配时,预取单元124则接着增加与该周期相关的周期匹配计数器318的计数值。关于周期匹配计数器318更详细的应用以及操作,将特别在下述的图4、图5讲述。
预取单元124亦包括一预取要求队列328、一提取指标器324(poppointer)以及一推进指标器326(pushpointer)。预取要求队列328包括一循环的项目(entry)队列,上述项目的每一个用以储存预取单元124的操作(特别是关于第4、6以及7图)所产生的预取要求。推进指标器326指出将分派至预取要求队列328的下一个项目(entry)。提取指标器324指出将从预取要求队列328移出的下一个项目。在一实施例中,因为预取要求可能以失非循序的方式(outoforder)结束,所以预取要求队列328是可以非循失序的方式提取(popping)已完成的(completed)项目。在一实施例中,预取要求队列328的大小是由于线路流程中,所有要求进入第二级快取存储器118的标记的线路(tagpipeline)的线路流程而选择的,于是使得预取要求队列328中项目的数目至少和第二级快取存储器118内的管线层级(stages)一样多。预取要求将维持直至第二级快取存储器118的管线结束,在这个时间点,要求)可能是三个结果之一,如图7更详细的叙述,亦即命中(hitin)第二级快取存储器118、重新执行(replay)、或者推进一全队列管道项目,用以从系统存储器预取需要的数据。
预取单元124亦包括控制逻辑322,控制逻辑322控制预取单元124的各元件执行其功能。
虽然图3只显示出一组与一主动(active)存储器区块有关的硬件单元332(区块位遮罩暂存器302、区块号码暂存器303、最小指标暂存器304、最大指标暂存器306、最小改变计数器308、最大改变计数器312、总计数器314、中间指标暂存器316、样态顺序暂存器346、样态区域暂存器348以及搜寻指标暂存器352),但预取单元124可包括多个个如图3所示的硬件单元332,用以追踪多个主动存储器区块的存取。
在一实施例中,微处理器100亦包括一个或多个高度反应式的(highlyreactive)预取单元(未图示),高度反应式的预取单元是在非常小的暂时样本(sample)中使用不同的演算法来进行存取,并且与预取单元124配合操作,其说明如下。由于此处所述的预取单元124分析较大存储器存取的数目(相较于高度反应式的预取单元),其必趋向使用更长的时间去开始预取一新的存储器区块,如下所述,但却比高反应式的预取单元更精确。因此,使用高度反应式的预取单元与预取单元124同时操作,微处理器100可拥有高反应式的预取单元的更快反应时间以及预取单元124的高精确度。另外,预取单元124可监控来自其他预取单元的要求,并且在其预取演算法中使用这些要求。
如图4所示为图2的微处理器100的操作流程图,并且特别是图3的预取单元124的操作。流程开始于步骤402。
在步骤402中,预取单元124接收一载入/储存存储器存取要求,用以存取对一存储器地址的一载入/储存存储器存取要求。在一实施例中,预取单元124在判断预取哪些快取线时,会将出载入存储器存取要求与储存存储器存取要求加以区分。在其他实施例中,预取单元124并不会在判断预取哪些快取线时,辨别载入以及储存。在一实施例中,预取单元124接收载入/储存单元134所输出的存储器存取要求。预取单元124可接收来自不同来源的存储器存取要求,上述来源包括(但不限于)载入/储存单元134、第一级数据快取存储器116(例如第一级数据快取存储器116所产生的一分派要求,于载入/储存单元134存储器存取未击中第一级数据快取存储器116时),和/或其他来源,例如微处理器100的用以执行与预取单元124不同预取演算法以预取数据的其他预取单元(未图示)。流程进入步骤404。
在步骤404中,控制逻辑322根据比较存储器存取地址与每一区块号码暂存器303的数值,判断是否对一主动区块的存储器进行存取。也就是,控制逻辑322判断图3所示的硬件单元332是否已被分派给存储器存取要求所指定的存储器地址所相关的存储器区块。若是,则进入步骤406。
在步骤406中,控制逻辑322分派图3所示的硬件单元332给相关的存储器区块。在一实施例中,控制逻辑322以一轮替(round-robin)的方式分派硬件单元332。在其他实施例,控制逻辑322为硬件单元332维持最久未用到的页取代法(least-recently-used)的信息,并且以一最久未用到的页取代法(least-recently-used)的基础进行分派。另外,控制逻辑322会初始化所分派的硬件单元332。特别是,控制逻辑322会清除区块位遮罩暂存器302的所有位,将存储器存取地址的上层位填充(populate)至区块号码暂存器303,并且清除最小指标暂存器304、最大指标暂存器306、最小改变计数器308、最大改变计数器312、总计数器314以及周期匹配计数器318为0。流程进入到步骤408。
在步骤408中,控制逻辑322根据存储器存取地址更新硬件单元332,如图5所述。流程进入步骤412。
在步骤412中,硬件单元332测试(examine)总计数器314用以判断程序是否已对存储器区块进行足够的存取要求,以便检测一存取样态。在一实施例中,控制逻辑322判断总计数器314的计数值是否大于一既定值。在一实施例中,此既定值为10,然而此既定值有很多种本发明不限于此。若已执行足够的存取要求,流程进行至步骤414;否则流程结束。
在步骤414中,控制逻辑322判断在区块位遮罩暂存器302中所指定的存取要求是否具有一个明显的趋势。也就是说,控制逻辑322判断存取要求有明显向上的趋势(存取地址增加)或是向下的趋势(存取地址减少)。在一实施例中,控制逻辑322根据最小改变计数器308以及最大改变计数器312两者的差值(difference)是否大于一既定值来决定存取要求是否有明显的趋势。在一实施例中,既定值为2,而在其他实施例中既定值可为其他数值。当最小改变计数器308的计数值大于最大改变计数器312的计数值一既定值,则有明显向下的趋势;反之,当最大改变计数器312的计数值大于最小改变计数器308的计数值一既定值,则有明显向上的趋势。当有一明显的趋势已产生,则进入步骤416,否则结束流程。
在步骤416中,控制逻辑322判断在区块位遮罩暂存器302所指定的存取要求中是否为具有一明显的样态周期赢家(patternperiodwinner)。在一实施例中,控制逻辑322根据周期匹配计数器318的一个与其他周期匹配计数器318计数值的差值是否大于一既定值来决定是否有一明显的样态周期赢家。在一实施例中,既定值为2,而在其他实施例中既定值可为其他数值。周期匹配计数器318的更新操作将于图5加以详述。当有一明显的样态周期赢家产生,流程进行到步骤418;否则,流程结束。
在步骤418中,控制逻辑322填充方向暂存器342以指出步骤414所判断的明显的方向趋势。另外,控制逻辑322用在步骤416检测的清楚赢家样态周期(clearwinningpatternperiod)N填充样态顺序暂存器346。最后,控制逻辑322将步骤416所检测到的明显的赢家样态周期填充至样态暂存器344中。也就是说,控制逻辑322用区块位遮罩暂存器302的N位至中间指标暂存器316的右侧或者左侧(根据图5步骤518所述而匹配)来填充样态暂存器344。流程进行到步骤422。
在步骤422中,控制逻辑322根据所检测到的方向以及样态开始对存储器区块中尚未被预取的快取线(non-fetchedcacheline)进行预取(如图6中所述)。流程在步骤422结束。
图5所示为图3所示的预取单元124执行图4所示的步骤408的操作流程。流程开始于步骤502。
在步骤502中,控制逻辑322增加总计数器314的计数值。流程进行到步骤504。
在步骤504中,控制逻辑322判断目前的存储器存取地址(特别是指,最近存储器存取地址所相关的快取线的存储器区块的索引值)是否大于最大指标暂存器306的值。若是,流程进行到步骤506;若否则流程进行至步骤508。
在步骤506中,控制逻辑322用最近存储器存取地址所相关的快取线的存储器区块的索引值来更新最大指标暂存器306,并增加最大改变计数器312的计数值。流程进行到步骤514。
在步骤508中,控制逻辑322判断被最近存储器存取地址所相关的快取线的存储器区块的索引值是否小于最小指标暂存器304的值。若是,流程进行至步骤512;若否,则流程进行至步骤514。
在步骤512中,控制逻辑322用最近存储器存取地址所相关的快取线的存储器区块的索引值来更新最小指标暂存器304,并增加最小改变计数器308的计数值。流程进行到步骤514。
在步骤514中,控制逻辑322计算最小指标暂存器304与最大指标暂存器306的平均值,并且用所算的出平均值更新中间指标暂存器316。流程进行到步骤516。
在步骤516中,控制逻辑322检查区块位遮罩暂存器302,并且以中间指标暂存器316为中心,切割成左侧与右侧各N位,其中N为与每一周期匹配计数器318有关的每一个的位的位数。流程进行到步骤518。
在步骤518中,控制逻辑322决定在中间指标暂存器316的左侧的N位是否与中间指标暂存器316的右侧的N位相匹配。若是,流程进行到步骤522;若否,则流程结束。
在步骤522中,控制逻辑322增加具有一N周期的周期匹配计数器318的计数值。流程结束于步骤522。
图6所示为图3的预取单元124执行图4的步骤422的操作流程图。流程开始于步骤602。
在步骤602中,控制逻辑322初始化会在离开检测方向的中间指标暂存器316的样态顺序暂存器346中,对搜寻指标暂存器352以及样态区域暂存器(pattenlocation)348进行初始化。也就是说,控制逻辑322会将搜寻指标暂存器352以及样态区域暂存器348初始化成中间指标暂存器316与所检测到的周期(N)两者之间相加/相减后的值。例如,当中间指标暂存器316的值为16,N为5,并且方向暂存器342所示的趋势为向上时,控制逻辑322则将搜寻指标暂存器352以及样态区域暂存器348初始化为21。因此,在本例中,为了比较的目的(如下所述),样态暂存器344的5位可设置于区块位遮罩暂存器302的位21到25。流程进行到步骤604。
在步骤604中,控制逻辑322测试区块位遮罩暂存器302中在方向暂存器342所指的位以及样态暂存器344中的对应位(该位是位于样态区域暂存器348中,用以对应区块位遮罩暂存器),用以预测是否预取存储器区块中的对应快取线。流程进行到步骤606。
在步骤606中,控制逻辑322预测是否需要所测试的快取线。当样态暂存器344的位为真(true),控制逻辑322则预测此快取线是需要的,样态预测程序将会存取此快取线。若快取线是需要的,流程进行到步骤614;否则,流程进行到步骤608。
在步骤608中,控制逻辑322根据方向暂存器342是否已到达区块位遮罩暂存器302的尽头,判断在存储器区块中是否有其他未测试的快取线。若已无未测试的快取线,则流程结束;否则,流程进行至步骤612。
在步骤612中,控制逻辑322增加/减少方向暂存器342的值。另外,若方向暂存器342已超过样态暂存器344的最后一位时,控制逻辑322将用方向暂存器342的新数值更新样态区域暂存器348,例如将样态暂存器344转移(shift)至方向暂存器342的位置。流程进行到步骤604。
在步骤614中,控制逻辑322决定所需要的快取线是否已被预取。当区块位遮罩暂存器302的位为真,控制逻辑322则判断所需要的快取线已被预取。若所需要的快取线已被预取,流程进行到步骤608;否则,流程进行到步骤616。
在判断步骤616中,若方向暂存器342为向下,控制逻辑322决定判断列入参考的快取线是否自最小指标暂存器304多于一既定值(既定值在一实施例中为16);,或者若方向暂存器342为向上,控制逻辑322将判断决定列入参考的快取线是否自最大指标暂存器306多于一既定值。若控制逻辑322决定列入参考的多于上述的判断为真既定值,则流程结束;否则,流程进行到判断步骤618。值得注意的是,若快取线大幅多于(远离)最小指标暂存器304/最大指标暂存器306则流程结束,但这样并不代表预取单元124将不接着预取存储器区块的其它快取线,因为根据图4的步骤,对存储器区块的快取线的后续存取亦会再触发更多的预取操作。
在步骤618中,控制逻辑322判断预取要求队列328是否满了。若是预取要求队列328满了,则流程进行到步骤622,否则流程进行到步骤624。
在步骤622中,控制逻辑322暂停(stall)直到预取要求队列328不满(non-full)为止。流程进行到步骤624。
在步骤624中,控制逻辑322推进一项目(entry)至预取要求队列328,以预取快取线。流程进行到步骤608。
如图7所示为图3的预取要求队列328的操作流程图。流程开始于步骤702。
在步骤702中,在步骤624中被推进到预取要求队列328中的一预取要求被允许进行存取(其中此预取要求用以对第二级快取存储器118进行存取),并继续进行至第二级快取存储器118的管道。流程进行到步骤704。
在步骤704中,第二级快取存储器118判断快取线地址是否命中第二级快取存储器118。若快取线地址命中第二级快取存储器118,则流程进行到步骤706;否则,流程进行到判断步骤708。
在步骤706中,因为快取线已经在第二级快取存储器118中准备好,故不需要预取快取线,流程结束。
在步骤708中,控制逻辑322判断第二级快取存储器118的回应是否为此预取要求必须被重新执行。若是,则流程进行至步骤712;否则,流程进行至步骤714。
在步骤712中,预取快取线的预取要求重新推进(re-pushed)至预取要求队列328中。流程结束于步骤712。
在步骤714中,第二级快取存储器118推进一要求至微处理器100的一全队列(fillqueue)(未图示)中,用以要求总线接口单元122将快取线读取至微处理器100中。流程结束于步骤714。
如图9所示为图2的微处理器100的操作范例。如图9所示为对一存储器区块进行十次存取后,区块位遮罩暂存器302(在一位位置上的星号表示对所对应的快取线进行存取)、最小改变计数器308、最大改变计数器312、以及总计数器314在第一、第二以及第十存取的内容。在图9中,最小改变计数器308称为”cntr_min_change”,最大改变计数器312称为”cntr_max_change”,以及总计数器314称为”cntr_total”。中间指标暂存器316的位置在图9中则以”M”所指示。
由于对地址0x4dced300所进行的第一次存取(如图4的步骤402)是在存储器区块中位于索引12上的快取线上进行,因此控制逻辑322将设定区块位遮罩暂存器302的位12(图4的步骤408),如图所示。另外,控制逻辑322将更新最小改变计数器308、最大改变计数器312以及总计数器314(图5的步骤502、506以及512)。
由于对地址0x4ced260的第二次存取是在存储器区块中位于索引9上的快取线进行,控制逻辑322根据将设定区块位遮罩暂存器302的位9,如图所示。另外,控制逻辑322将更新最小改变计数器308以及总计数器314的计数值。
在第三到第十次存取中(第三到第九次存取的地址未予图示,第十次的存取地址为0x4dced6c0),控制逻辑322根据会对区块位遮罩暂存器302进行适当元的设置,如图所示。另外,控制逻辑322对应于每一次存取更新最小改变计数器308、最大改变计数器312以及总计数器314的计数值。
图9底部为控制逻辑322在每个执行十次的存储器的存取中,当执行完步骤514到522后的周期匹配计数器318的内容。在图9中,周期匹配计数器318称为”cntr_period_N_matches”,其中N为1、2、3、4或者5。
如图9所示的范例,虽然符合步骤412的准则(总计数器314至少为十)以及符合步骤416的准则(周期5的周期匹配计数器318较其他所有的周期匹配计数器318至少大于2),但不符合步骤414的准则(最小改变计数器308以及区块位遮罩暂存器302之间的差少于2)。因此,此时将不会在此存储器区块内执行预取操作。
如图9底部亦显示在周期3、4以及5中,从周期3、4以及5至中间指标暂存器316的右侧与左侧的样态。
如图10所示为图2的微处理器100延续图9所示的范例的操作流程图。图10描绘相似于图9的信息,但不同处于在对存储器区块的进行第十一次以及第十二次的存取(第十二次存取的地址为0x4dced760)。如图所示,其符合步骤412的准则(总计数器314至少为十)、步骤414的准则(最小改变计数器308以及区块位遮罩暂存器302之间的差至少为2)以及步骤416的准则(周期5的周期匹配计数器318在周期5的计数较其他所有的周期匹配计数器318至少大于2)。因此,根据图4的步骤418,控制逻辑322填充(populate)方向暂存器342(用以指出方向趋势为向上)、样态顺序暂存器346(填入数值5)、样态暂存器344(用样态“**”或者“01010”)。控制逻辑322亦根据图4的步骤422与图6,为存储器区块执行预取预测,如图11所示。图10亦显示控制逻辑322在图6的步骤602操作中,方向暂存器342在位21的位置。
如图11所示为图2的微处理器100延续图9以及图10的范例的操作流程图。图11经由范例中描绘十二不同范例的每一个(表标示成0到11)经过图6的步骤604到步骤616直到存储器区块的快取线被预取单元124预测发现需要被预取的存储器区块的的操作。如图所示,在每一范例中,方向暂存器342的值是根据图6步骤612而增加。如图11所示,在范例5以及10中,样态区域暂存器348会根据图6的步骤612被更新。如范例0、2、4、5、7以及10所示,由于在方向暂存器342的位为假(false),样态指出在方向暂存器342上的快取线将不被需要。图中还显示,在范例1、3、6以及8中,由于在方向暂存器342中样态暂存器344的位为真(ture),样态暂存器344指出在方向暂存器342上的快取线将被需要,然而快取线已经准备被取出(fetched),如区块位遮罩暂存器302的位为真(ture)的指示。最后如图所示,在范例11中,由于在方向暂存器342中样态暂存器344的位为真(ture),所以样态暂存器344指出在方向暂存器342上的快取线将被需要,但是因区块位遮罩暂存器302的位为假(false),所以此快取线尚未被取出(fetched)。因此,控制逻辑322根据图6的步骤624推进一预取要求至预取要求队列328中,用以预取在地址0x4dced800的快取线,其对应于在区块位遮罩暂存器302的位32。
在一实施例中,所描述的一个或多个既定值可藉由操作系统(例如经由一样态特定暂存器(modelspecificregister,MSR))或者经由微处理器100的熔丝(fuses)来编程,其中熔丝可在微处理器100的生产过程中熔断。
在一实施例中,区块位遮罩暂存器302的大小可为了节省电源(power)以与及裸片芯片大小机板(dierealestate)而减小。也就是说,在每一区块位遮罩暂存器302中的位数,将少于在一存储器区块中快取线的数量。例如,在一实施例中,每一区块位遮罩暂存器302的位数仅为存储器区块所包含的快取线的数量的一半。区块位遮罩暂存器302仅追踪对上半区块或者下半区块的存取,端看存储器区块的那一半先被存取,而一额外的位用以指出存储器区块的下半部或者上半部是否先被存取。
在一实施例中,控制逻辑322并不如步骤516/518所述地测试中间指标暂存器316上下N位,而是包括一序列引擎(serialengine),一次一个或两个位地扫描区块位遮罩暂存器302,用以寻找周期大于一最大周期的样态(如前所述为5位)。
在一实施例中,若在步骤414没有检测出明显的方向趋势、或者在步骤416并未检测出明显的样态周期、以及总计数器314的计数值到达一既定临界值(用以指出在存储器区块中的大部份的快取线已被存取)时,控制逻辑322则继续执行以及预取在存储器区块中剩下的快取线。上述既定临界值为存储器区块的快取存储器数量的一相对高的百分比值,例如区块位遮罩暂存器302的位的值。
结合第二集快取存储器以及第一级数据快取存储器的预取单元
近代的微处理器包括具有一阶层结构的快取存储器。典型地,一微处理器包括一又小又快的第一级数据快取存储器以及一较大但较慢的第二级快取存储器,分别如图2的第一级数据快取存储器116以及第二级快取存储器118。具有一阶层结构的快取存储器有利于预取数据至快取存储器,以改善快取存储器的命中率速度(hitrate)。由于第一级数据快取存储器116的速度较快,故较佳的状况为预取数据至第一级数据快取存储器116。然而,由于第一级数据快取存储器116的存储器容量较小,快取存储器命中的速度率可能实际上较差变慢,由于如果预取单元不正确预取数据进第一级数据快取存储器116使得最后数据是不需要的,便需要而替代以其他需要的数据做替代。因此,数据被载入第一级数据快取存储器116或者第二级快取存储器118的结果,是预取单元是否能正确预测数据是否被需要的函数(function)。因为第一级数据快取存储器116被要求较小的尺寸,第一级数据快取存储器116倾向较小的容量以及因此具有较差的准确性;反之,由于第二级快取存储器标签以及数据阵列的大小使得第一级快取存储器预取单元的大小显得很小,所以一第二级快取存储器预取单元可为较大的容量因此具有较佳的准确性。
本发明实施例所述微处理器100的优势,在于一载入/储存单元134用以作为第二级快取存储器118以及第一级数据快取存储器116的预取需要的基础。本发明的实施例提升载入/储存单元134(第二级快取存储器118)的准确性,用以应用在解决上述预取进入第一级数据快取存储器116的问题。再者,实施例中也完成了运用单体逻辑(singlebodyoflogic)来处理第一级数据快取存储器116以及第二级快取存储器118的预取操作的目标。
如图12所示为根据本发明各实施例的微处理器100。图12的微处理器100相似于图2的微处理器100并具有如下所述的额外的特性。
第一级数据快取存储器116提供第一级数据存储器地址196至预取单元124。第一级数据存储器地址196藉由载入/储存单元134对第一级数据快取存储器116进行载入/储存存取的实体地址。也就是说,预取单元124会随着载入/储存单元134存取第一级数据快取存储器116时进行窃听(eavesdrops)。预取单元124提供一样态预测快取线地址194至第一级数据快取存储器116的一队列198,样态预测快取线地址194为快取线的地址,其中的快取线是预取单元124根据第一级数据存储器地址196预测载入/储存单元134即将对第一级数据快取存储器116所提出的要求。第一级数据快取存储器116提供一快取线配置要求192至预取单元124,用以从第二级快取存储器118要求快取线,而这些快取线的地址储存于队列198中。最后,第二级快取存储器118提供所要求的快取线数据188至第一级数据快取存储器116。
预取单元124亦包括第一级数据搜寻指标器172以及第一级数据样态地址178,如图12所示。第一级数据搜寻指标器172以及第一级数据样态地址178的用途与图4相关且如下所述。
如图13所示为图12的预取单元124的操作流程图。流程开始于步骤1302。
在步骤1302中,预取单元124从第一级数据快取存储器116接收图12的第一级数据存储器地址196。流程进行到步骤1304。
在步骤1304中,由于预取单元124已事先检测到一存取样态并已开始从系统存储器预取快取线进入第二级快取存储器118,故预取单元124检测属于一存储器区块(例如分页(page))的第一级数据存储器地址196,如第1至11图中相关处所述。仔细而言,由于存取样态已被检测,故预取单元124用以维持(maintain)一区块号码暂存器303,其指定存储器区块的基本地址。预取单元124藉由检测区块号码暂存器303的位是否匹配第一级数据存储器地址196的对应位,来检测第一级数据存储器地址196是否落在存储器区块中。流程进行到步骤1306。
在步骤1306中,从第一级数据存储器地址196开始,预取单元124在存储器区块中所检测到的存取方向(detectedaccessdirection)上寻找下两个快取线,这两个快取线与先前所检测的存取方向有关。步骤1306更详细的执行操作将于后续的图14中加以说明。流程进行到步骤1308。
在步骤1308中,预取单元124提供在步骤1306找到的下两个快取线的实体地址至第一级数据快取存储器116,作为样态预测快取线地址194。在其他实施例中,预取单元124所提供的快取线地址的数量可多于或少于2。流程进行到步骤1312。
在步骤1312中,第一级数据快取存储器116把在步骤1308中所提供的地址推进至队列198中。流程进行到步骤1314。
在步骤1314中,无论何时只要队列198为非空(non-empty),第一级数据快取存储器116将下一个地址取出队列198,并发出一快取线配置要求192至第二级快取存储器118,以便取得在该地址的快取线。然而,若在队列198的一地址已出现于第一级数据快取存储器116,第一级数据快取存储器116将抛弃(dumps)该地址以及放弃自第二级快取存储器118要求其快取线。第二级快取存储器118接着提供所要求的快取线数据188至第一级数据快取存储器116。流程结束于步骤1314。
如图14所示为图12所示的预取单元124根据图13的步骤1306的操作流程图。图14所叙述的操作是在图3所检测到样态方向为向上(upward)的状况下。然而,若所检测到的样态方向为向下,预取单元124亦可用以执行同样的功能。步骤1402到1408的操作用以将图3中的样态暂存器344放置在存储器区块中适当的位置,使得预取单元124藉由从第一级数据存储器地址196上开始的样态暂存器344的样态搜寻下两个快取线中进行搜寻,并只要有需求时在该存储器区块上复制该样态暂存器344的样态344即可。流程开始于步骤1402。
在步骤1402中,预取单元124以相似于图6在步骤602初始化搜寻指标暂存器352以及样态区域暂存器348的方式,用图3的样态顺序暂存器346以及中间指标暂存器316的总和,来初始化图12的第一级数据搜寻指标器172以及第一级数据样态地址178。例如,若中间指标暂存器316的值为16以及样态顺序暂存器346为5,并且方向暂存器342的方向为往上,预取单元124初始化第一级数据搜寻指标器172以及第一级数据样态地址178至21。流程进行到步骤1414。
在步骤14014中,预取单元124决定第一级数据存储器地址196是否落入在具有目前所指定位置的样态暂存器344的样态中,样态的目前位置开始是根据步骤1402所决定的,并可根据步骤1406进行更新。也就是说,预取单元124决定第一级数据存储器地址196的适当位(relevantbits)的值(即除了去确认存储器区块的位,以及具有快取线中用来的指定字节补偿偏移(byteoffset)的位外),是否大于或者等于第一级数据搜寻指标器172的值,以及是否小于或者等于第一级数据搜寻指标器172的值与样态顺序暂存器346的值两者所相加的总合。若第一级数据存储器地址196落入(fallwithin)样态暂存器344的样态中,流程进行到步骤1408;否则流程进行到步骤1406。
在步骤1406中,预取单元124根据样态顺序暂存器346增加第一级数据搜寻指标器172以及第一级数据样态地址178。根据步骤1406(与后续的步骤1418)所述的操作,若第一级数据搜寻指标器172已达到存储器区块的终点则结束搜寻。流程回到步骤1404。
在步骤1408中,预取单元124将第一级数据搜寻指标器172的值设置(set)为第一级数据存储器地址196所相关的快取线的存储器页的偏移量(offset)。流程进行到步骤1412。
在步骤1412中,预取单元124在第一级数据搜寻指标器172中测试样态暂存器344中的位。流程进行到步骤1414。
在步骤1414中,预取单元124决定步骤1412所测试的位是否设置好了。如果在步骤1412所测试的位设置好了,流程进行到步骤1416;否则流程进行到步骤1418。
在步骤1416中,预取单元124将步骤1414被样态暂存器344所预测的快取线标记为已准备好传送实体地址至第一级数据快取存储器116,以作为一样态预测快取线地址194。流程结束于步骤1416。
在步骤1418中,预取单元124增加第一级数据搜寻指标器172的值。另外,若第一级数据搜寻指标器172已超过上述样态暂存器344的最后一个位,预取单元124则用第一级数据搜寻指标器172的新的数值更新第一级数据搜寻指标器172的值,亦即转换(shift)样态暂存器344至新的第一级数据搜寻指标器172的位置。步骤1412到1418的操作反复执行,直到两快取线(或者快取线的其他既定值)被找到为止。流程结束于步骤1418。
图13中预取快取线至第一级数据快取存储器116的好处是第一级数据快取存储器116以及第二级快取存储器118所需要的改变较小。然而,在其他实施例中,预取单元124亦可不提供样态预测快取线地址194至第一级数据快取存储器116。例如,在一实施例中,预取单元124直接要求总线接口单元122自存储器获撷取快取线,然后将所接收的写入快取线写入至第一级数据快取存储器116。在另一实施例中,预取单元124自用以提供数据至预取单元124的第二级快取存储器118要求并取得快取线(如果为命中失败(missing)则从存储器取得快取线),并将收到的快取线写入至第一级数据快取存储器116。在其他实施例中,预取单元124自第二级快取存储器118要求快取线(如果为命中失败(missing)则从存储器取得快取线),其直接将快取线写入第一级数据快取存储器116。
如上所述,本发明的各实施例的好处在于具有单一的预取单元124总计数器314,作为第二级快取存储器118以及第一级数据快取存储器116两者的预取需要的基础。虽然图2、图12以及图15所示(如下讨论的内容)为名明不同的区块,预取单元124在空间安排上可占据邻近于第二级快取存储器118的标签(tag)以及数据列(dataarray)的位置并且概念上包括第二级快取存储器118,如图21所示。各实施例允许载入/储存单元134具大空间的安排来提升的其精确度与其大空间的需求,以应用一单体逻辑来处理第一级数据快取存储器116以及第二级快取存储器118的预取操作,以解决现有技术中只能预取进入数据给容量较小的第一级数据快取存储器116的问题。
具有减少跨页上的暖机损失(warm-upDenalty)的定界框预取单元
本发明所述的预取单元124在一存储器区块(例如,一实体存储器页)上检测较复杂的存取样态(例如,一实体存储器页),其不同于现有一般预取单元的检测。举例而言,预取单元124可以根据一样态检测正在进行存取一存储器区块的程序,即使微处理器100的非循失序执行(out-of-orderexecution)管线(pipeline)会不以程序命令的顺序而重新排序(re-order)存储器存取,这可能会造成现有一般预取单元不去检测存储器存取样态以及而导致没有预取操作。这是由于预取单元124只考虑对存储器区块的进行有效地存取,而时间顺序(timeorder)并非其考量点。
然而,为了满足识别更复杂的存取样态和/或重新排序存取样态的能力,相较于现有的预取单元,本发明的预取单元124可能需要一较长的时间去检测存取样态,如下所述的“暖机时间(warm-uptime)”。因此需要一减少预取单元124暖机时间的方法。
预取单元124用以预测一个之前藉由一存取样态正在存取一存储器区块的程序,是否已经跨到(crossover)实际上与旧的存储器区块相邻的一新存储器区块,以及预测此程序是否会根据相同的样态继续存取这个新的存储器区块。因应于此,预取单元124使用来自旧的存储器区块的样态、方向以及其他相关信息,以加快在新的存储器区块检测存取样态的速度,即减少暖机时间。
如图15所示为具有一预取单元124的微处理器100的方块图。图15的微处理器100相似于图2以及图12的微处理器100,并且具有如下所述的其它特性。
如图3中的相关叙述,预取单元124包括多个硬件单元332。每一硬件单元332相较于图3所述还包括一存储器区块虚拟杂凑虚拟地址栏(hashedvirtualaddressofmemory,HVAMB)354以及一状态栏(status)356。在图4所述的步骤406初始化已分派的硬件单元332的过程中,预取单元124取出区块号码暂存器303中的实体区块码(physicalblocknumber),并在将实体区块码转译成一虚拟地址后,根据后续图17所述的步骤1704所执行的相同杂凑法则(thesamehashingalgorithm)将实体区块码转译成一虚拟地址(杂凑(hash)此的虚拟地址),并将其杂凑演算的结果储存至存储器区块虚拟杂凑地址栏354。状态栏356具有三种可能的数值:非主动(inactive)、主动(active)或者试用(probationary),如下所述。预取单元124亦包括一虚拟杂凑表(virtualhashtable,VHT)162,关于虚拟杂凑表162组织架构以及操作的详细说明请参考后续第16到19图的叙述。
如图16所示为图15的虚拟杂凑表162。虚拟杂凑表162包括多个项目,最好组织成一队列。每一项目包括一有效位(validbit)(未图示)以及三个栏:一负1杂凑虚拟地址1602(HVAM1)、一未修改杂凑虚拟地址1604(HVAUN)以及一正1杂凑虚拟地址1606(HVAP1)。用以填充上述字段的数值的生成请参考后续图17所述。
图17所述为图15的微处理器100的操作流程图。流程开始于步骤1702。
在步骤1702中,第一级数据快取存储器116接收来自载入/储存单元134的一载入/储存要求,其载入/储存要求包括一虚拟地址。流程进行到步骤1704。
在步骤1704中,第一级数据快取存储器116对步骤1702中所接收的杂凑地址选择的位执行一杂凑功能(函数),用以产生一未修改杂凑虚拟地址1604(HVAUN)。另外,第一级数据快取存储器116增加一存储器区块大小(MBS)至在步骤1702所接收的杂凑地址所选择的位,用以产生一加总值,并对加总值执行一杂凑功能,以产生一正1杂凑虚拟地址1606(HVAP1)。另外,第一级数据快取存储器116从在步骤1702所接收的杂凑地址选择的位,减去存储器区块的大小,用以产生一差值,并对此差值执行一杂凑功能,以产生一负1杂凑虚拟地址1602(HVAM1)。在一实施例中,存储器区块大小为4KB。在一实施例中,虚拟地址为40位,虚拟地址的位39:30以及11:0被会杂凑功能忽略。剩下的18个虚拟地址位为”已处理(dealt)”,如已拥有的信息,是通过杂凑位位置来处理。其想法为虚拟地址的较低位具有最高乱度(entropy)以及较高位具有最低乱度。用此方法处理可保证乱度阶级(entropylevel)为较一致交叉杂凑的位。在一实施例中,剩下的虚拟地址的18位是根据后续表1的方法杂凑至6位。然而,在其他实施例中,亦可考虑使用不同杂凑演算法;此外,若有性能支配空间(performancedominatesspace)以及电力消耗的设计考量,实施例可考虑不使用杂凑演算法。流程进行到步骤1706。
assignhash[5]=VA[29]^VA[18]^VA[17];
assignhash[4]=VA[28]^VA[19]^VA[16];
assignhash[3]=VA[27]^VA[20]^VA[15];
assignhash[2]=VA[26]^VA[21]^VA[14];
assignhash[1]=VA[25]^VA[22]^VA[13];
assignhash[0]=VA[24]^VA[23]^VA[12];
表1
在步骤1706中,第一级数据快取存储器116提供在步骤1704中所产生的未修改杂凑虚拟地址(HVAUN)1604、正1杂凑虚拟地址(HVAP1)1606以及负1杂凑虚拟地址(HVAM1)1602至预取单元124。流程进行到步骤1708。
在步骤1708中,预取单元124用步骤1706所接收的未修改杂凑虚拟地址(HVAUN)1604、正1杂凑虚拟地址(HVAP1)1606以及负1杂凑虚拟地址(HVAM1)1602选择性地更新虚拟杂凑表162。也就是说,如果虚拟杂凑表162已包括一具有未修改杂凑虚拟地址1604(HVAUN)、正1杂凑虚拟地址1606(HVAP1)以及负1杂凑虚拟地址1602(HVAM1)的项目,预取单元124则放弃更新虚拟杂凑表162。相反地,预取单元124则以先进先出(first-in-first-out)的方式将未修改杂凑虚拟地址1604(HVAUN)、正1杂凑虚拟地址1606(HVAP1)以及负1杂凑虚拟地址1602(HVAM1)推进至虚拟杂凑表162最顶端的项目,并将所推进的项目标记为有效(valid)。流程结束于步骤1708。
如图18所示为图16的虚拟杂凑表162在预取单元124在载入/储存单元134根据图17的叙述操作的后的内容,其中在载入/储存单元134因应于程序的执行,已经由两存储器区块(标示为AandA+MBS)在一向上的方向上进行,并进入一第三存储器区块(标示为A+2*MBS),以便回应已填充虚拟杂凑表162的预取单元124。仔细而言,虚拟杂凑表162距离尾端的两个项目的项目包括在负1杂凑虚拟地址(HVAM1)1602的A-MBS的杂凑、在未修改杂凑虚拟地址(HVAUN)1604的A的杂凑以及在正1杂凑虚拟地址(HVAP1)1606的A+MBS的杂凑;虚拟杂凑表162项目是距离尾端的一个项目的项目包括负1杂凑虚拟地址(HVAM1)1602的A的杂凑、在未修改杂凑虚拟地址(HVAUN)1604的A+MBS的杂凑以及在正1杂凑虚拟地址(HVAP1)1606的A+2*MBS的杂凑;虚拟杂凑表162项目是在尾端的项目(,即最近时间所最近的推进的项目)包括在负1杂凑虚拟地址(HVAM1)1602的A+MBS的杂凑、在未修改杂凑虚拟地址(HVAUN)1604的A+2*MBS的杂凑以及在正1杂凑虚拟地址(HVAP1)1606的A+3*MBS的杂凑。
如图19所示(由图19A以及图19B组成)的图5的预取单元124的操作流程图。流程开始于步骤1902。
在步骤1902中,第一级数据快取存储器116传送一新的配置要求(allocationrequest,AR)至第二级快取存储器118。新的配置要求是要求一新存储器区块。也就是说预取单元124决定与配置要求相关的存储器区块是新的,意即尚未配置一硬件单元332给新的配置要求所相关的存储器区块。也就是说,预取单元124最近未接受(encountered)一新存储器区块的配置要求。在一实施例中,配置要求是在一载入/储存第一级数据快取存储器116结果失败并随的由第二级快取存储器118要求同一快取线所产生的要求。在一实施例中,配置要求用以指定一实体地址,实体地址所相关的一虚拟地址是由实体地址转译而来的。第一级数据快取存储器116根据一杂凑功能(意即与图17的步骤1704相同的杂凑功能),杂凑与配置要求的实体地址有关的虚拟地址,用以产生配置要求的一已杂凑虚拟地址(HVAAR),并且将配置要求的已杂凑虚拟地址提供至预取单元124。流程进行至步骤1903。
在步骤1903中,预取单元124配至一个新的硬件单元332给新的存储器区块。如果有不活动(inactive)的硬件单元332存在,预取单元124配置一不活动的硬件单元332给新的存储器区块。否则,在一实施例中,预取单元124则配置一个最近最少使用的硬件单元332给新的存储器区块。在一实施例中,一旦预取单元124已经预取样态所指示的存储器区块的所有快取线时,预取单元124则会钝化(inactivate)硬件单元332。在一实施例中,预取单元124具有固定(pin)硬件单元332的能力,使其就算为一个最近最少使用的硬件单元332亦不会被重置。举例而言,若预取单元124检测到已经根据样态对存储器区块进行一既定次数的存取,但预取单元124尚未根据样态对整个存储器区块完成所有的预取,预取单元124即可固定与存储器区块有关的硬件单元332,使其就算成为一个最近最少使用的硬件单元332仍不够资格被重置。在一实施例中,预取单元124维持每一硬件单元332的相对期间(从原始配置),并且当其期间(age)到达一既定期间临界值时,预取单元124则会钝化硬件单元332。在另一实施例中,若预取单元124(藉由后续的步骤1904到1926)检测一虚拟相邻的存储器区块,并且已完成自虚拟邻近的存储器区块的预取,预取单元124则会选择性地重复使用在虚拟相邻的存储器区块的硬件单元332,而不是配置一新的硬件单元332。在此实施例中,预取单元124选择性地初始化重复使用的硬件单元332的各种储存元件(例如方向暂存器342、样态暂存器344与样态区域暂存器348),以便维持储存在其内的可用信息。流程进行至步骤1904。
在步骤1904中,预取单元124比较在步骤1902所产生的已杂凑虚拟地址(HVAAR)与虚拟杂凑表162的每一项目的负1杂凑虚拟地址1602(HVAM1)和正1杂凑虚拟地址1606(HVAP1)。预取单元124根据步骤1904到1922的操作是为了决定一已主动(active)存储器区块是否虚拟相邻至新存储器区块,预取单元124根据步骤1924到1928的操作是为了预测存储器存取是否将根据事先检测到的存取样态与方向,继续自虚拟相邻的已主动存储器区块进入新的存储器区块,用以以降低预取单元124的暖机时间,使得预取单元124可较快开始预取新的存储器区块。流程进行至步骤1906。
在步骤1906中,预取单元124根据步骤1904执行的比较方式,决定已杂凑虚拟地址(HVAAR)是否与虚拟杂凑表162的任何一项目匹配。若已杂凑虚拟地址(HVAAR)与虚拟杂凑表162的一项目匹配,流程进行至步骤1908;否则,流程进行至步骤1912。
在步骤1908中,预取单元124设定一候补方向旗帜(candidate_directionflag)至一数值,以指示向上的方向。流程进行至步骤1916。
在步骤1912中,预取单元124根据步骤1908所执行的比较方式,决定已杂凑虚拟地址(HVAAR)是否与虚拟杂凑表162的任何一项目匹配。若已杂凑虚拟地址(HVAAR)与虚拟杂凑表162的一项目匹配,流程进行至步骤1914;否则,流程结束。
在步骤1914中,预取单元124设定候补方向旗帜(candidate_directionflag)至一数值,以指示向下的方向。流程进行至步骤1916。
在步骤1916中,预取单元124将候补杂凑暂存器(candidate_havregister)(未图示)设定为步骤1906或1912所决定的虚拟杂凑表162的未修改杂凑虚拟地址1604(HVAUN)的一数值。流程进行至步骤1918。
在步骤1918中,预取单元124比较候选杂凑(candidate_hva)与预取单元124中每一主动存储器区块的存储器区块虚拟杂凑地址栏(HVAMB)354。流程进行至步骤1922。
在步骤1922中,预取单元124根据步骤1918所执行的比较方式,决定候选杂凑(candidate_hva)是否与任何一存储器区块虚拟杂凑地址栏(HVAMB)354匹配。若候选杂凑(candidate_hva)与一存储器区块虚拟杂凑地址栏(HVAMB)354匹配,流程进行至步骤1924;否则,流程结束。
在步骤1924中,预取单元124已确定步骤1922所找到的匹配主动存储器区块确实虚拟邻近于新的存储器区块。因此,预取单元124比较(步骤1908或者1914所指定的)候选方向与匹配主动存储器区块的方向暂存器342,用以根据先前检测到的存取样态与方向,预测存储器存取是否将继续自虚拟相邻的已主动存储器区块进入新的存储器区块。仔细而言,若候选方向与虚拟相邻存储器区块的方向暂存器342不同,存储器存取不太可能会根据先前检测到的存取样态与方向,继续自虚拟相邻的已主动存储器区块进入新的存储器区块。流程进行至步骤1926。
在步骤1926中,预取单元124根据步骤1924所执行的比较方法,决定候选方向与匹配主动存储器区块的方向暂存器342是否匹配。若候选方向与匹配主动存储器区块的方向暂存器342匹配,则流程进行至步骤1928;否则,流程结束。
在步骤1928中,预取单元124决定在步骤1902所接收到的新的重置要求是否被指到步骤1926所检测到的匹配虚拟相邻主动存储器区块的一已被样态暂存器344所预测的快取线。在一实施例中,为了执行步骤1928的决定,预取单元124根据其样态顺序暂存器346有效地转换与复制匹配虚拟相邻主动存储器区块的样态暂存器344,用以在虚拟相邻存储器区块继续样态位置样态区域暂存器348,以便在新的存储器区块维持样态334连贯性。若新的配置要求是要求匹配主动存储器区块的样态暂存器344所相关的一快取存储器列,流程进行至步骤1934;否则,流程进行至步骤1932。
在步骤1932中,预取单元124根据图4的步骤406与408,初始化与填充(步骤1903所配置的)新的硬件单元332,希望其最后可根据上述与图4到图6相关的方法,检测对新的存储器区块的存取的新样态,而这将需要暖机时间。流程结束于步骤1932。
在步骤1934中,预取单元124预测存取要求将会根据匹配虚拟相邻主动存储器区块的样态暂存器344与方向暂存器342继续进入新的存储器区块。因此,预取单元124以相似于步骤1932的方式填充新的硬件单元332,但会有些许不同。仔细而言,预取单元124会用来自虚拟相邻存储器区块的硬件单元332的对应数值来填充方向暂存器342、样态暂存器344以及样态顺序暂存器346。另外,样态区域暂存器348的新的数值是藉由继续转换于增加的样态顺序暂存器346的值所决定,直到其交叉进入新的存储器区块,以提供样态暂存器344持续地进入新的存储器区块,如步骤1928中的相关叙述。再者,新的硬件单元332中的状态栏356用以标记新的硬件单元332为试用(probationary)。最后,搜寻指标暂存352被初使化以便由一存储器区块的开头进行搜寻。流程进行至步骤1936。
在步骤1936中,预取单元124继续监视发生于新存储器区块的存取要求。若预取单元124检测到对存储器区块的至少一既定数量的后续存取要求是要求样态暂存器344所预测的存储器线,接着预取单元124促使硬件单元332的状态栏356自试用(probationary)转为主动,并且接着如图6所述开始自新的存储器区块进行预取。在一实施例中,存取要求的既定数量为2,虽然其他实施例可考虑为其它既定数量。流程进行至步骤1936。
如图20所示为图15所示的预取单元124所用的一杂凑实体地址至杂凑虚拟地址库(hashedphysicaladdress-to-hashedvirtualaddressthesaurus)2002。杂凑物理地址至杂凑虚拟地址库2002包括一项目阵列。每一项目包括一实体地址(PA)2004以及一对应的杂凑虚拟地址(HVA)2006。对应的杂凑虚拟地址2006是由实体地址2004转译成的虚拟地址加以杂凑的结果。预取单元124藉由对最近的杂凑物理地址至杂凑虚拟地址库2002进行窃听,用以在跨越载入/储存单元134的管线。在另一实施例中,于图19的步骤1902,第一级数据快取存储器116并未提供已杂凑虚拟地址(HVAAR)至预取单元124,但只提供配置要求所相关的物理地址。预取单元124在杂凑物理地址至杂凑虚拟地址库2002中寻找实体位置,以找到一匹配实体地址(PA)2004,并获得相关的杂凑虚拟地址(HVA)2006,所获得的杂凑虚拟地址(HVA)2006将在图19其他部分成为已杂凑虚拟地址(HVAAR)。将杂凑物理地址至杂凑虚拟地址库2002包括在预取单元124可缓和第一级数据快取存储器116提供配置要求所要求的杂凑虚拟地址的需要,因此可简化第一级数据快取存储器116与预取单元124之间的接口。
在一实施例中,杂凑实体地址至杂凑虚拟地址库2002的每一项目包括一杂凑实体地址,而不是实体地址2004,并且预取单元124将自第一级数据快取存储器116所接收的配置要求实体地址杂凑成一杂凑物理地址,用以找寻杂凑实体地址至杂凑虚拟地址库2002,以便获得适当的对应的杂凑虚拟地址(HVA)2006。本实施例允许较小的杂凑实体地址至杂凑虚拟地址库2002,但需要另外的时间对实体地址进行杂凑。
如图21所示为本发明实施例的多核微处理器100。多核微处理器100包括两个核心(表示成核心A2102A以及核心B2102B),可整个视为核心2102(或者单一核心2102)。每一核心具有相似于如图2所示的单核微处理器100的元件12或15。另外,每一核心2102具有如前所述的高度反应式的预取单元2104。该两个核心2102共享第二级快取存储器118以及预取单元124。特别的是,每一核心2012的第一级数据快取存储器116、载入/储存单元134以及高度反应式的预取单元2104是耦接至共享的第二级快取存储器118以及预取单元124。另外,一共享的高度反应式的预取单元2106是耦接至第二级快取存储器118以及预取单元124。在一实施例中,高度反应式的预取单元2104/共享的高度反应式的预取单元2106只预取一存储器存取所相关的快取线后的下一个相邻的快取线。
预取单元124除了监控载入/储存单元134以及第一级数据快取存储器116的存储器存取之外,亦可监控高度反应式的预取单元2104/共享的高度反应式的预取单元2106所产生的存储器存取,用以进行预取决定。预取单元124可监控从不同组合的存储器存取来源的存储器存取,以执行本发明所述的不同的功能。例如,预取单元124可监控存储器存取的一第一组合,以执行图2到图11所述的关相功能,预取单元124可监控存储器存取的一第二组合,以执行图12到图14所述的相关功能,并且预取单元124可监控存储器存取的一第三组合,以执行图15到图19所述的相关功能。在实施例中,共享的预取单元124由于时间因素难以监控每一核心2102的载入/储存单元134的行为。因此,共享的预取单元124经由第一级数据快取存储器116所产生的传输状况(traffic)间接地监控载入/储存单元134的行为,作为其载入/储存未命中(miss)的结果。
本发明的不同实施例已于本文叙述,但本领域的技术人员应能了解这些实施例仅作为范例,而非限定于此。本领域的技术人员可在不脱离本发明的精神的情况下,对形式与细节上做不同的变化。例如,软件可致能本发明实施例所述的装置与方法的功能、组建(fabrication)、塑造(modeling)、模拟、描述(description)、以和/或测试,亦可通过一般程序语言(C、C++)、硬件描述语言(HardwareDescriptionLanguages,HDL)(包括VerilogHDL、VHDL等等)、或其他可利用的程序语言来完成。此软件可配置在任何已知的计算机可使用媒介,例如磁带、半导体、磁盘,或是光盘(例如CD-ROM、DVD-ROM等等)、因特网、有线、无线、或其他通讯媒介的传输方式之中。本发明所述的装置与方法实施例可被包括于半导体知识产权核心,例如微处理器核心(以HDL来实现),并转换成集成电路产品的硬件。此外,本发明所述的装置与方法通过硬件与软件的结合来实现。因此,本发明不应局限于所揭示的实施例,而是依本发明的权利要求与等效实施所界定。特别是,本发明可实施在使用于一般用途计算机中的微处理器装置内。最后,本发明虽以较佳实施例揭示如上,然其并非用以限定本发明的范围,本领域的技术人员,在不脱离本发明的精神和范围的前提下,可做若干的更动与润饰,因此本发明的保护范围是以本发明的权利要求为准。
Claims (39)
1.一种预取单元,设置于具有一快取存储器的一微处理器中,包括:
其中上述预取单元用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应上述存储器区块的地址中的一个,并且上述存取要求的地址随着时间函数非单调性地增加或减少;
一储存装置;以及
一控制逻辑单元,耦接至上述储存装置,其中当接收到上述存取要求时,上述控制逻辑单元则用以:
维持上述储存装置中的上述存取要求对应的上述存储器区块的地址中的一最大地址以及一最小地址,以及上述最大地址以及最小地址的变化的计数值;
维持上述存储器区块中最近被存取的快取线的一历史记录,上述最近被存取的快取线是与上述存取要求的地址相关;
根据上述计数值,决定一存取方向;
检测一存取样态;以及
根据上述存取样态并沿着上述存取方向,将上述快取存储器内尚未被上述历史记录指示为已存取的快取线预取至上述存储器区块中,
其中为了根据上述计数值决定上述存取方向,上述控制逻辑单元用以:
当上述最大地址的变化的计数值与上述最小地址的变化的计数值之间的差值大于一既定值时,决定上述存取方向是第一方向;以及
当上述最小地址的变化的计数值与上述最大地址的变化的计数值之间的差值大于上述既定值时,决定上述存取方向是第二方向。
2.如权利要求1所述的预取单元,其中上述控制逻辑单元还用以在上述存储器区块中最近被存取的快取线的数量大于一既定值之前,暂缓上述预取的操作。
3.如权利要求2所述的预取单元,其中上述既定值至少为9。
4.如权利要求2所述的预取单元,其中上述既定值至少为上述存储器区块中快取线的数量的百分之十。
5.如权利要求1所述的预取单元,其中第一方向为向上的方向,而第二方向为向下的方向。
6.如权利要求1所述的预取单元,其中上述控制逻辑单元还用以在上述最大地址的变化的计数值与上述最小地址的变化的计数值间的差值的绝对值大于一既定值之前,暂缓上述预取的操作。
7.如权利要求1所述的预取单元,其中:
上述历史记录包括一位遮罩,上述位遮罩用以指出上述最近被存取的快取线,并且上述最近被存取的快取线是与上述存储器区块的地址所相关;
当接收到上述存取要求时,上述控制逻辑单元还用以:
计算上述位遮罩中的上述最近被存取的快取线的一中间指标暂存器;以及
当上述中间指标暂存器的左侧的上述位遮罩的N位与上述中间指标暂存器的右侧的上述位遮罩的N位匹配时,为多个不同的位周期中的每一个,增加上述位周期所相关的一匹配计数器的计数值,其中N为上述位周期中的位数。
8.如权利要求7所述的预取单元,其中为了根据上述位遮罩决定上述存取样态,上述控制逻辑单元用以:
检测上述位周期的一个所相关的上述匹配计数器与上述位周期的其它者所相关的上述匹配计数器之间的差值是否大于一既定值;以及
决定被上述位遮罩的上述中间指标暂存器的其中一侧的N位所指定的上述存取样态,其中N为上述位周期的一个的位数,上述位周期的上述一个所具有的相关匹配计数器与上述位周期的其它者所具有的相关匹配计数器之间的差值大于上述既定值。
9.如权利要求8所述的预取单元,其中为了根据上述存取样态并沿着上述存取方向,将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,上述控制逻辑单元用以:
沿着上述存取方向,分派一搜寻指标器以及距离上述中间指标暂存器N位的上述存取样态;以及
当上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。
10.如权利要求9所述的预取单元,其中为了根据上述存取样态并沿着上述存取方向,将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,上述控制逻辑单元用以:
根据上述存取方向,增加或减少上述搜寻指标器的值;以及
当增加或减少后的上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述增加或减少后的上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。
11.如权利要求10所述的预取单元,其中上述控制逻辑单元还用以:
重复上述增加上述搜寻指标器的值以及进行预取的操作,直到一状况出现,其中上述状况包括:
当上述存取方向是向上时,上述搜寻指标器上的上述位遮罩之中的位与在上述最大地址所相关的上述位遮罩之中的位之间的距离大于一第二既定值;以及
当上述存取方向是向下时,上述搜寻指标器上的上述位遮罩之中的位与上述最小地址所相关的上述位遮罩中的位之间的距离大于上述第二既定值。
12.如权利要求7所述的预取单元,其中上述控制逻辑单元还用以在上述不同的位周期的一个所相关的上述匹配计数器与上述不同的位周期的其它者所相关的上述匹配计数器之间的差值大于一既定值之前,暂缓上述预取的操作。
13.如权利要求7所述的预取单元,其中上述位周期为3、4以及5位。
14.如权利要求1所述的预取单元,其中上述控制逻辑单元还于上述快取线已出现在上述微处理器的任一快取存储器时,放弃预取上述快取线。
15.如权利要求1所述的预取单元,其中上述存储器区块的大小是4千字节。
16.如权利要求1所述的预取单元,还包括:
多个上述储存装置;
其中上述控制逻辑单元用以接收一存取要求,上述存取要求的地址不在上述储存装置的一个所相关的一新的存储器区块中,并且分派上述储存装置的一个给上述新的存储器区块。
17.如权利要求16所述的预取单元,其中上述控制逻辑单元还用以清除上述最大地址的改变的计数值、上述最小地址改变的计数值,以及上述储存装置被分派的一个的上述历史记录。
18.一种数据预取方法,用以预取数据至一微处理器的一快取存储器,上述数据预取方法,包括:
接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应上述存储器区块的地址中的一个,并且上述存取要求的地址是随着时间函数非单调性地增加或减少;
当接收到上述存取要求时,维持上述存储器区块的多个地址中的一最大以及一最小地址,并且计算上述最大以及最小地址的变化的计数值;
当接收到上述存取要求时,维持上述存储器区块中最近被存取的快取线的一历史记录,上述最近被存取的快取线是与上述存取要求的地址相关;
根据上述计数值决定一存取方向;
检测一存取样态;以及
根据上述存取样态并沿着上述存取方向,将上述快取存储器内尚未被上述历史记录指示为已存取的快取线预取至上述存储器区块中,
其中根据上述计数值决定上述存取方向还包括:
当上述最大地址的变化的计数值与上述最小地址的变化的计数值之间的差值大于一既定值时,决定上述存取方向是第一方向;以及
当上述最小地址的变化的计数值与上述最大地址的变化的计数值之间的差值大于上述既定值时,决定上述存取方向是第二方向。
19.如权利要求18所述的数据预取方法,还包括在上述存储器区块中最近被存取的快取线的数量大于一既定值之前,暂缓上述预取的操作。
20.如权利要求19所述的数据预取方法,其中上述既定值至少为9。
21.如权利要求19所述的数据预取方法,其中上述既定值至少为上述存储器区块中的快取线的数量的百分之十。
22.如权利要求18所述的数据预取方法,其中其中第一方向为向上的方向,而第二方向为向下的方向。
23.如权利要求18所述的数据预取方法,还包括在上述最大地址的变化的计数值与上述最小地址的变化的计数值间的差值的绝对值大于一既定值之前,暂缓上述预取的操作。
24.如权利要求18所述的数据预取方法,其中:
上述历史记录包括一位遮罩,上述位遮罩用以指出上述最近被存取的快取线,并且上述最近被存取的快取线是与上述存储器区块的地址所相关;
当已接收上述存取时,还包括:
计算在上述位遮罩中的上述最近被存取的快取线的一中间指标暂存器;以及
当上述中间指标暂存器的左侧的上述位遮罩的N位与上述中间指标暂存器的右侧的上述位遮罩的N位匹配时,为多个不同的位周期中的每一个,增加上述位周期所相关的一匹配计数器的计数值,其中N为上述位周期中位数。
25.如权利要求24所述的数据预取方法,其中为了根据上述位遮罩决定上述存取样态包括:
检测上述位周期的一个所相关的上述匹配计数器与上述位周期的其它者所相关的上述匹配计数器之间的差值是否大于一既定值;以及
决定被上述位遮罩的上述中间指标暂存器的其中一侧的N位所指定的上述存取样态,其中N为上述位周期之一中的位的号码,上述位周期的上述一个所具有的相关匹配计数器与上述位周期的其它者所具有的相关匹配计数器之间的差值大于上述既定值。
26.如权利要求25所述的数据预取方法,其中为了根据上述存取样态并沿着上述存取方向,将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,上述数据预取方法包括:
沿着上述存取方向,分派一搜寻指标器以及距离上述中间指标暂存器N位的上述存取样态;以及
当上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。
27.如权利要求26所述的数据预取方法,其中为了根据上述存取样态并沿着上述存取方向,将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,还包括:
根据上述存取方向,增加或减少上述搜寻指标器的值;以及
当增加或减少后的上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述增加或减少后的上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。
28.如权利要求27所述的数据预取方法,还包括:
重复上述增加上述搜寻指标器的值以及进行预取的操作,直到一状况出现,其中上述状况包括:
当上述存取方向是向上时,上述搜寻指标器上的上述位遮罩之中的位与在上述最大地址所相关的上述位遮罩之中的位之间的距离是大于一第二既定值;以及
当上述存取方向是向下时,上述搜寻指标器上的上述位遮罩之中的位与上述最小地址所相关的上述位遮罩之中的位之间的距离是大于上述第二既定值。
29.如权利要求24所述的数据预取方法,还包括在不同位周期的一个所相关的上述匹配计数器与上述不同位周期的其它者所相关的上述匹配计数器之间的差值大于一既定值之前,暂缓上述预取的操作。
30.如权利要求24所述的数据预取方法,其中上述位周期为3、4以及5位。
31.如权利要求18所述的数据预取方法,还包括当上述快取线已出现在上述微处理器的任一快取存储器时,放弃预取上述快取线。
32.如权利要求18所述的数据预取方法,其中上述存储器区块的大小是4千字节。
33.一种数据预取方法,用以预取数据进入一微处理器的一快取存储器,上述数据预取方法包括:
接收对一存储器区块的一地址的一存取要求;
设定一位遮罩中与一快取线所相关的一位,其中上述快取线是与上述存储器区块的上述地址相关;
于接收到上述存取要求之后,增加一总计数器的计数值:
当上述地址大于一最大指标暂存器的值,用上述地址更新上述最大指标暂存器,并且增加一最大改变计数器的计数值;
当上述地址小于一最小指标暂存器的值,用上述地址更新上述最小指标暂存器,并且增加一最小改变计数器的计数值;
计算一中间指标暂存器,作为上述最大以及最小改变计数器的平均值;
当上述中间指标暂存器的左侧的上述位遮罩的N位与上述中间指标暂存器的右侧的上述位遮罩的N位匹配时,为多个不同的位周期中的每一个,增加上述位周期所相关的一匹配计数器的计数值,其中N为上述位周期中的位数;
决定一状况是否出现,其中上述状况包括:
(A)上述存取总计数器大于一第一既定值;
(B)上述最大改变计数器与最小改变计数器相减取绝对值后的差大于一第二既定值;以及
(C)上述匹配计数器的一个与其它者间的计数值间的差值的绝对值大于一第三既定值;以及
当上述状况存在时:
当上述最大改变计数器大于上述最小改变计数器时,决定存取方向是向上,并且当上述最大改变计数器小于上述最小改变计数器时,决定上述存取方向是向下;
决定被上述位遮罩的上述中间指标暂存器的其中一侧的N位所指定的存取样态,其中N为上述位周期中与匹配计数器相关的一个的位数;以及
根据所决定的上述存取方向与上述存取样态,将上述存储器区块的多个快取线预取至上述快取存储器中。
34.如权利要求33所述的数据预取方法,其中上述根据所决定的上述存取方向与上述存取样态,将上述快取线预取至上述快取存储器中的步骤包括:
(1)沿着上述存取方向,初始化一搜寻指标器以及距离上述中间指标暂存器N位的上述存取样态;
(2)决定一第二状况是否存在,其中上述第二状况包括:
(D)在上述搜寻指标器的上述存取样态的位已设定;
(E)在上述搜寻指标器的上述位遮罩的位已清除;以及
(F)在上述存取方向上,最大指标暂存器或最小指标暂存器与上述搜寻指标器的上述位遮罩中的位间的差距小于一第四既定值;以及
(3)当上述第二状况存在,预取上述搜寻指标器的上述位遮罩中的位所相关的上述快取线。
35.如权利要求34所述的数据预取方法,其中上述根据所决定的上述存取方向与存取样态,将上述快取线预取至上述快取存储器的步骤还包括:
于上述第二状况存在时,在决定上述第二状况存在以及存取之后,根据上述存取方向,增加或减少上述搜寻指标器的值;以及
重复上述步骤(2)以及(3)。
36.如权利要求35所述的数据预取方法,其中上述根据所决定的上述存取方向与存取样态,将上述快取线预取至上述快取存储器的步骤还包括:
当上述状况(F)为真,停止上述重复步骤。
37.如权利要求35所述的数据预取方法,其中上述根据所决定的上述存取方向与存取样态,将上述快取线预取至上述快取存储器的步骤还包括:
当上述位遮罩的所有位都已测试完,停止上述重复步骤。
38.一种微处理器,包括:
多个核心;
一快取存储器,由上述核心所共享,用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应上述存储器区块的地址中的一个,上述存取要求的地址随着时间函数非单调性地增加或减少;以及
一预取单元,用以:
监视上述存取要求,并维持上述存储器区块的多个地址中的一最大地址以及一最小地址,以及上述最大地址以及最小地址的变化的计数值;
根据上述计数值,决定一存取方向,其中:当上述最大地址的变化的计数值与上述最小地址的变化的计数值之间的差值大于一既定值时,决定上述存取方向是第一方向;以及当上述最小地址的变化的计数值与上述最大地址的变化的计数值之间的差值大于上述既定值时,决定上述存取方向是第二方向;以及
沿着上述存取方向,将上述存储器区块中未命中的快取线预取至上述快取存储器中。
39.如权利要求38所述的微处理器,其中上述预取单元还用以:
维持上述存储器区块中最近被存取的快取线的一历史记录,上述最近被存取的快取线是与上述存取要求的地址相关;
检测一存取样态;以及
根据上述存取样态并沿着上述存取方向,将上述快取存储器内被上述历史记录指示为最近尚未被存取且在上述存储器区块中是未命中的多个快取线预取至上述存储器区块中,
其中第一方向为向上的方向,而第二方向为向下的方向。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510494634.1A CN105183663B (zh) | 2010-03-29 | 2011-03-29 | 预取单元和数据预取方法 |
CN201510101303.7A CN104636274B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
CN201510101351.6A CN104615548B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US31859410P | 2010-03-29 | 2010-03-29 | |
US61/318,594 | 2010-03-29 | ||
US13/033,809 US8645631B2 (en) | 2010-03-29 | 2011-02-24 | Combined L2 cache and L1D cache prefetcher |
US13/033,848 | 2011-02-24 | ||
US13/033,765 | 2011-02-24 | ||
US13/033,848 US8719510B2 (en) | 2010-03-29 | 2011-02-24 | Bounding box prefetcher with reduced warm-up penalty on memory block crossings |
US13/033,809 | 2011-02-24 | ||
US13/033,765 US8762649B2 (en) | 2010-03-29 | 2011-02-24 | Bounding box prefetcher |
Related Child Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510101351.6A Division CN104615548B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
CN201510101303.7A Division CN104636274B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
CN201510494634.1A Division CN105183663B (zh) | 2010-03-29 | 2011-03-29 | 预取单元和数据预取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102169429A CN102169429A (zh) | 2011-08-31 |
CN102169429B true CN102169429B (zh) | 2016-06-29 |
Family
ID=44490596
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510101303.7A Active CN104636274B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
CN201510494634.1A Active CN105183663B (zh) | 2010-03-29 | 2011-03-29 | 预取单元和数据预取方法 |
CN201110077108.7A Active CN102169429B (zh) | 2010-03-29 | 2011-03-29 | 预取单元、数据预取方法以及微处理器 |
CN201510101351.6A Active CN104615548B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510101303.7A Active CN104636274B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
CN201510494634.1A Active CN105183663B (zh) | 2010-03-29 | 2011-03-29 | 预取单元和数据预取方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510101351.6A Active CN104615548B (zh) | 2010-03-29 | 2011-03-29 | 数据预取方法以及微处理器 |
Country Status (2)
Country | Link |
---|---|
CN (4) | CN104636274B (zh) |
TW (5) | TWI519955B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8959320B2 (en) * | 2011-12-07 | 2015-02-17 | Apple Inc. | Preventing update training of first predictor with mismatching second predictor for branch instructions with alternating pattern hysteresis |
US9442759B2 (en) * | 2011-12-09 | 2016-09-13 | Nvidia Corporation | Concurrent execution of independent streams in multi-channel time slice groups |
US9772845B2 (en) | 2011-12-13 | 2017-09-26 | Intel Corporation | Method and apparatus to process KECCAK secure hashing algorithm |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
CN104133780B (zh) | 2013-05-02 | 2017-04-05 | 华为技术有限公司 | 一种跨页预取方法、装置及系统 |
US9891916B2 (en) * | 2014-10-20 | 2018-02-13 | Via Technologies, Inc. | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
CN105653199B (zh) * | 2014-11-14 | 2018-12-14 | 群联电子股份有限公司 | 数据读取方法、存储器存储装置及存储器控制电路单元 |
EP3049915B1 (en) * | 2014-12-14 | 2020-02-12 | VIA Alliance Semiconductor Co., Ltd. | Prefetching with level of aggressiveness based on effectiveness by memory access type |
US10152421B2 (en) * | 2015-11-23 | 2018-12-11 | Intel Corporation | Instruction and logic for cache control operations |
CN106919367B (zh) * | 2016-04-20 | 2019-05-07 | 上海兆芯集成电路有限公司 | 侦测自修正程序码的处理器与方法 |
US10579522B2 (en) * | 2016-09-13 | 2020-03-03 | Andes Technology Corporation | Method and device for accessing a cache memory |
US10353601B2 (en) * | 2016-11-28 | 2019-07-16 | Arm Limited | Data movement engine |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10725685B2 (en) * | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
CN109857786B (zh) * | 2018-12-19 | 2020-10-30 | 成都四方伟业软件股份有限公司 | 页面数据填充方法及装置 |
CN111797052B (zh) * | 2020-07-01 | 2023-11-21 | 上海兆芯集成电路股份有限公司 | 系统单芯片以及系统存储器加速存取方法 |
KR102253362B1 (ko) * | 2020-09-22 | 2021-05-20 | 쿠팡 주식회사 | 전자 장치 및 이를 이용한 정보 제공 방법 |
CN112416437B (zh) * | 2020-12-02 | 2023-04-21 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
WO2022233391A1 (en) * | 2021-05-04 | 2022-11-10 | Huawei Technologies Co., Ltd. | Smart data placement on hierarchical storage |
CN114116529A (zh) * | 2021-12-01 | 2022-03-01 | 上海兆芯集成电路有限公司 | 快速加载装置和数据高速缓存方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5003471A (en) * | 1988-09-01 | 1991-03-26 | Gibson Glenn A | Windowed programmable data transferring apparatus which uses a selective number of address offset registers and synchronizes memory access to buffer |
CN1168729A (zh) * | 1994-10-17 | 1997-12-24 | 艾利森电话股份有限公司 | 处理存储器数据的系统和方法及包括该系统的通讯系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6484239B1 (en) * | 1997-12-29 | 2002-11-19 | Intel Corporation | Prefetch queue |
US6810466B2 (en) * | 2001-10-23 | 2004-10-26 | Ip-First, Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
JP4067887B2 (ja) * | 2002-06-28 | 2008-03-26 | 富士通株式会社 | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 |
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7237065B2 (en) * | 2005-05-24 | 2007-06-26 | Texas Instruments Incorporated | Configurable cache system depending on instruction type |
US20070186050A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for data lines |
CN101689144B (zh) * | 2007-06-19 | 2013-07-24 | 富士通株式会社 | 信息处理装置及其控制方法 |
US8103832B2 (en) * | 2007-06-26 | 2012-01-24 | International Business Machines Corporation | Method and apparatus of prefetching streams of varying prefetch depth |
CN100449481C (zh) * | 2007-06-29 | 2009-01-07 | 东南大学 | 具有多通道指令预取功能的存储控制电路 |
US8161243B1 (en) * | 2007-09-28 | 2012-04-17 | Intel Corporation | Address translation caching and I/O cache performance improvement in virtualized environments |
US7890702B2 (en) * | 2007-11-26 | 2011-02-15 | Advanced Micro Devices, Inc. | Prefetch instruction extensions |
US8140768B2 (en) * | 2008-02-01 | 2012-03-20 | International Business Machines Corporation | Jump starting prefetch streams across page boundaries |
JP2009230374A (ja) * | 2008-03-21 | 2009-10-08 | Fujitsu Ltd | 情報処理装置,プログラム,及び命令列生成方法 |
US7958317B2 (en) * | 2008-08-04 | 2011-06-07 | International Business Machines Corporation | Cache directed sequential prefetch |
US8402279B2 (en) * | 2008-09-09 | 2013-03-19 | Via Technologies, Inc. | Apparatus and method for updating set of limited access model specific registers in a microprocessor |
US9032151B2 (en) * | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
CN101887360A (zh) * | 2009-07-10 | 2010-11-17 | 威盛电子股份有限公司 | 微处理器的数据预先撷取器及方法 |
CN101667159B (zh) * | 2009-09-15 | 2012-06-27 | 威盛电子股份有限公司 | 传送请求区块的高速缓存系统及方法 |
-
2011
- 2011-03-29 TW TW103128257A patent/TWI519955B/zh active
- 2011-03-29 CN CN201510101303.7A patent/CN104636274B/zh active Active
- 2011-03-29 TW TW104118873A patent/TWI534621B/zh active
- 2011-03-29 CN CN201510494634.1A patent/CN105183663B/zh active Active
- 2011-03-29 CN CN201110077108.7A patent/CN102169429B/zh active Active
- 2011-03-29 TW TW105108032A patent/TWI574155B/zh active
- 2011-03-29 TW TW104118874A patent/TWI547803B/zh active
- 2011-03-29 CN CN201510101351.6A patent/CN104615548B/zh active Active
- 2011-03-29 TW TW100110731A patent/TWI506434B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5003471A (en) * | 1988-09-01 | 1991-03-26 | Gibson Glenn A | Windowed programmable data transferring apparatus which uses a selective number of address offset registers and synchronizes memory access to buffer |
CN1168729A (zh) * | 1994-10-17 | 1997-12-24 | 艾利森电话股份有限公司 | 处理存储器数据的系统和方法及包括该系统的通讯系统 |
EP0787326B1 (en) * | 1994-10-17 | 2002-03-13 | Telefonaktiebolaget Lm Ericsson | System and method for processing of memory data and communication system comprising such system |
Also Published As
Publication number | Publication date |
---|---|
TWI547803B (zh) | 2016-09-01 |
CN102169429A (zh) | 2011-08-31 |
TW201535119A (zh) | 2015-09-16 |
CN105183663B (zh) | 2018-11-27 |
CN104615548B (zh) | 2018-08-31 |
TW201447581A (zh) | 2014-12-16 |
TW201535118A (zh) | 2015-09-16 |
TW201135460A (en) | 2011-10-16 |
TWI574155B (zh) | 2017-03-11 |
TW201624289A (zh) | 2016-07-01 |
TWI534621B (zh) | 2016-05-21 |
CN104636274B (zh) | 2018-01-26 |
CN105183663A (zh) | 2015-12-23 |
CN104636274A (zh) | 2015-05-20 |
TWI506434B (zh) | 2015-11-01 |
CN104615548A (zh) | 2015-05-13 |
TWI519955B (zh) | 2016-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102169429B (zh) | 预取单元、数据预取方法以及微处理器 | |
CN1296827C (zh) | 一种使用数据地址增加组相关存储器的访问速度的方法 | |
US6611910B2 (en) | Method for processing branch operations | |
JP3542020B2 (ja) | 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理を実行するプロセッサ装置およびプロセッサ制御方法 | |
KR100747127B1 (ko) | 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬 | |
CN1632877B (zh) | 可变延滞时间高速缓冲存储器及提供数据的方法 | |
US8677049B2 (en) | Region prefetcher and methods thereof | |
JPH1074166A (ja) | 多重レベル・ダイナミック・セット予測方法および装置 | |
US8499123B1 (en) | Multi-stage pipeline for cache access | |
US7047362B2 (en) | Cache system and method for controlling the cache system comprising direct-mapped cache and fully-associative buffer | |
US6651162B1 (en) | Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache | |
CN105814549A (zh) | 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统 | |
US7711904B2 (en) | System, method and computer program product for executing a cache replacement algorithm | |
US7769954B2 (en) | Data processing system and method for processing data | |
CN104854556A (zh) | 建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体 | |
US8595465B1 (en) | Virtual address to physical address translation using prediction logic | |
CN115934170A (zh) | 预取方法及装置、预取训练方法及装置、存储介质 | |
CN114116529A (zh) | 快速加载装置和数据高速缓存方法 | |
CN101916184B (zh) | 更新微处理器中的分支目标地址快取的方法及其微处理器 | |
US20230205699A1 (en) | Region aware delta prefetcher | |
US11481331B2 (en) | Promoting prefetched data from a cache memory to registers in a processor | |
CN115391239A (zh) | 一种基于局域算法的高速缓存动态数据预取方法、系统、设备及存储介质 | |
CN111984323A (zh) | 将微操作分配到微操作高速缓存器的处理设备及其操作方法 | |
CN116627505A (zh) | 指令缓存及操作方法、处理器核及指令处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |