预取单元、数据预取方法以及微处理器技术

技术编号:6523576 阅读:330 留言:0更新日期:2012-04-11 18:40
一种预取单元、数据预取方法以及微处理器。该预取单元用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应存储器区块的地址中的一个,并且存取要求的地址随着时间函数非单调性地增加或减少。当接收到存取要求时,预取单元将维持储存装置中的存取要求的一最大地址以及一最小地址,以及最大地址以及最小地址的变化的计数值、维持存储器区块中最近被存取的快取线的一历史记录,其与最近被存取的快取线以存取要求的地址相关。预取单元亦依据计数值决定一存取方向、根据历史记录决定一存取样态、并且根据存取样态并沿着存取方向,将快取存储器内尚未被历史记录指示为已存取的快取线预取至存储器区块中。

【技术实现步骤摘要】

本专利技术涉及一般微处理器的快取存储器,特别是涉及将数据预取至微处理器的快取存储器。
技术介绍
以最近的计算机系统而言,在快取失败(cache miss)时,微处理器存取系统存储器所需的时间,会比微处理器存取快取存储器(cache)多上一或两个数量级。因此,为了提高快取命中率(cache hit rate),微处理器整合了预取技术,用来测试最近数据存取样态 (examine recent data access patterns),并且企图预测哪一个数据为程序下一个存取的对象,而预取的好处已是众所皆知的范畴。然而,申请人注意到某些程序的存取样态并不为现有微处理器的预取单元所能检测的。例如,图1所示为当执行的程序包括经由存储器进行一序列的储存操作时,第二级快取存储器(L2 Cache)的存取样态,而图中所描绘的为各时间的存储器地址。由图1可知, 虽然总趋势为随着时间而增加存储器地址,即由往上的方向,然而在许多状况下,所指定的存取存储器地址亦可较前一个时间往下,而非总趋势的往上,使其不同于现有预取单元实际所预测的结果。虽然就数量相对大的样本而言,总趋势是朝一个方向前进,但现有预取单元在本文档来自技高网...

【技术保护点】
1.一种预取单元,设置于具有一快取存储器的一微处理器中,包括:其中上述预取单元用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应上述存储器区块的地址中的一个,并且上述存取要求的地址随着时间函数非单调性地增加或减少;一储存装置;以及一控制逻辑,耦接至上述储存装置,其中当接收到上述存取要求时,上述控制逻辑则用以:维持上述储存装置中的上述存取要求的一最大地址以及一最小地址,以及上述最大地址以及最小地址的变化的计数值;维持上述存储器区块中最近被存取的快取线的一历史记录,上述最近被存取的快取线是与上述存取要求的地址相关;根据上述计数值,决定一存取方向;根据上述历史记录,决定一存取样态;以及...

【技术特征摘要】
2010.03.29 US 61/318,594;2011.02.24 US 13/033,765;1.一种预取单元,设置于具有一快取存储器的一微处理器中,包括其中上述预取单元用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应上述存储器区块的地址中的一个,并且上述存取要求的地址随着时间函数非单调性地增加或减少;一储存装置;以及一控制逻辑,耦接至上述储存装置,其中当接收到上述存取要求时,上述控制逻辑则用以维持上述储存装置中的上述存取要求的一最大地址以及一最小地址,以及上述最大地址以及最小地址的变化的计数值;维持上述存储器区块中最近被存取的快取线的一历史记录,上述最近被存取的快取线是与上述存取要求的地址相关;根据上述计数值,决定一存取方向; 根据上述历史记录,决定一存取样态;以及根据上述存取样态并沿着上述存取方向,将上述快取存储器内尚未被上述历史记录指示为已存取的快取线预取至上述存储器区块中。2.如权利要求1所述的预取单元,其中上述控制逻辑还用以在上述存储器区块中最近被存取的快取线的数量大于一既定值之前,暂缓上述预取的操作。3.如权利要求2所述的预取单元,其中上述既定值至少为9。4.如权利要求2所述的预取单元,其中上述既定值至少为上述存储器区块中快取线的数量的百分之十。5.如权利要求1所述的预取单元,其中为了根据上述计数值决定上述存取方向,上述控制逻辑用以当上述最大地址的变化的计数值与上述最小地址的变化的计数值之间的差值大于一既定值时,决定上述存取方向是向上;以及当上述最小地址的变化的计数值与上述最大地址的变化的计数值之间的差值大于上述既定值时,决定上述存取方向是向下。6.如权利要求1所述的预取单元,其中上述控制逻辑还用以在上述最大地址的变化的计数值与上述最小地址的变化的计数值间的差值的绝对值大于一既定值之前,暂缓上述预取操作。7.如权利要求1所述的预取单元,其中上述历史记录包括一位遮罩,上述位遮罩用以指出上述最近被存取的快取线,并且上述最近被存取的快取线是与上述存储器区块的地址所相关; 当接收到上述存取要求时,上述控制逻辑还用以 计算上述位遮罩中的上述最近被存取的快取线的一中间指标暂存器;以及当上述中间指标暂存器的左侧的上述位遮罩的N位与上述中间指标暂存器的右侧的上述位遮罩的N位匹配时,为多个个不同的位周期中的每一个,增加上述位周期所相关的一匹配计数器的计数值,其中N为上述位周期中的位数。8.如权利要求1所述的预取单元,其中为了根据上述位遮罩决定上述存取样态,上述控制逻辑用以检测上述位周期的一个所相关的上述匹配计数器与上述位周期的其它者所相关的上述匹配计数器之间的差值是否大于一既定值;以及决定被上述位遮罩的上述中间指标暂存器的其中一侧的N位所指定的上述存取样态, 其中N为上述位周期的一个的位数,上述位周期的上述一个所具有的相关匹配计数器与上述位周期的其它者所具有的相关匹配计数器之间的差值大于上述既定值。9.如权利要求8所述的预取单元,其中为了根据上述存取样态并沿着上述存取方向, 将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,上述控制逻辑用以沿着上述存取方向,分派一搜寻指标器以及距离上述中间指标器N位的上述存取样态;以及当上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。10.如权利要求9所述的预取单元,其中为了根据上述存取样态并沿着上述存取方向, 将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,上述控制逻辑用以根据上述存取方向,增加/减少上述搜寻指标器的值;以及当增加/减少后的上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述已增加/减少的上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。11.如权利要求10所述的预取单元,其中上述控制逻辑还用以重复上述增加上述搜寻指标器的值以及进行预取的操作,直到一状况出现,其中上述状况包括当上述存取方向是向上时,上述搜寻指标器上的上述位遮罩之中的位与在上述最大地址所相关的上述位遮罩之中的位之间的距离大于一第二既定值;以及当上述存取方向是向下时,上述搜寻指标器上的上述位遮罩之中的位与上述最小地址所相关的上述位遮罩中的位之间的距离大于上述第二既定值。12.如权利要求7所述的预取单元,其中上述控制逻辑还用以在上述不同位周期的一个所相关的上述匹配计数器与上述不同位周期的其它者所相关的上述匹配计数器之间的差值大于一既定值之前,暂缓上述预取操作。13.如权利要求1所述的预取单元,其中上述位周期为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.如权利要求M所述的数据预取方法,其中为了根据上述位遮罩决定上述存取样态包括检测上述位周期的一个所相关的上述匹配计数器与上述位周期的其它者所相关的上述匹配计数器之间的差值是否大于一既定值;以及决定被上述位遮罩的上述中间指标暂存器的其中一侧的N位所指定的上述存取样态, 其中N为上述位周期之一中的位的号码,上述位周期的上述一个所具有的相关匹配计数器与上述位周期的其它者所具有的相关匹配计数器之间的差值大于上述既定值的上述计数器关于上述所有其他清楚位周期之间的差。26.如权利要求25所述的数据预取方法,其中为了根据上述存取样态并沿着上述存取方向,将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,上述控制逻辑用以沿着上述存取方向,分派一搜寻指标器以及距离上述中间指标器N位的上述存取样态;以及当上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。27.如权利要求26所述的数据预取方法,其中为了根据上述存取样态并沿着上述存取方向,将上述存储器区块中被上述位遮罩标指为最近尚未被存取的快取线预取至上述快取存储器中,还包括根据上述存取方向,增加/减少上述搜寻指标器的值;以及当增加/减少后的上述搜寻指标器上的上述存取样态中的位指示一存取时,预取上述已增加/减少的上述搜寻指标器上的上述位遮罩中的上述位所相关的快取线。28.如权利要求27所述的数据预取方法,还包括重复上述增加上述搜寻指标器的值以及进行预取的操作,直到一状况出现,其中上述状况包括当上述存取方向是向上时,上述搜寻指标器上的上述位遮罩之中的位与在上述最大地址所相关的上述位遮罩之中的位之间的距离是大于一第二既定值;以及当上述存取方向是向下时,上述搜寻指标器上的上述位遮罩之中的位与上述最小地址所相关的上述位遮罩之中的位之间的距离是大于上述第二既定值。29.如权利要求M所述的数据预取方法,还包括在上述不同位周期的一个所相关的上述匹配计数器与上述不同位周期的其它者所相关的上述匹配计数器之间的差值大于一既定值之前,暂缓上述预取操作。30.如权利要求18所述的数据预取方法,其中上述位周期为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.如权利要求33所述的数据预取方法,其中上述根据所决定的上述存取方向与存取样态,将上述快取线预取至上述快取存储器的步骤还包括于上述第二状况存在时,在决定上述第二状况存在以及存取之后,根据上述存取方向, 增加/减少上述搜寻指标器的值;以及重复上述步骤O)以及⑶。36.如权利要求35所述的数据预取方法,其中上述根据所决定的上述存取方向与存取样态,将上述快取线预取至上述快取存储器的步骤还包括当上述状况(F)为真,停止上述重复步骤。37.如权利要求35所述的数据预取方法,其中上述根据所决定的上述存取方向与存取样态,将上述快取线预取至上述快取存储器的步骤还包括当上述位遮罩的所有位都已测试完,停止上述重复步骤。38.一种微处理器,包括 多个核心;一快取存储器,由上述核心所共享,用以接收对一存储器区块的多个地址的多个存取要求,每一存取要求对应上述存储器区块的地址中的一个,上述存取要求的地址随着时间函数非单调性地增加或减少;以及一预取单元,用以监视上述存取要求,并维持上述存储器区块中的一最大地址以及一最小地址,以及上述最大地址以及最小地址的变化的计数值; 根据上述计数值,决定一存取方向;以及沿着上述存取方向,将上述存储器区块中未命中的快取线预取至上述快取存储器中。39.如权利要求38所述的微处理器,其中上述预取单元还用以维持上述存储器区块中最近被存取的快取线的一历史记录,上述最近被存取的快取线是与上述存取要求的地址相关;根据上述历史记录,决定一存取样态;以及根据上述存取样态并沿着上述存取方向,将上述快取存储器内被上述历史记录指示为最近尚未被存取且在上述存储器区块中是未命中的多个快取线预取至上述存储器区块中。40.一种微处理器,包括 一第一级快取存储器; 一第二级快取存储器;以及一预取单元,用以检测出现在上述第二级快取存储器中的最近存取要求的一方向以及样态,以及根据上述方向以及样态,将多个快取线预取至上述第二级快取存储器中;从上述第一级快取存储器,接收上述第一级快取存储器所接收的一存取要求的一地址,其中上述地址与一快取线相关;决定在上述方向中所相关的快取线之后被上述样态所指出的一个或多个快取线;以及导致上述一个或多个快取线被预取至上述第一级快取存储器中。41.如权利要求40所述的微处理器,其中为了检测出现在上述第二级快取存储器中上述最近存取要求的上述方向以及样态,上述预取单元用以检测一存储器区块的上述方向以及样态,上述存储器区块是可被上述微处理器存取的存储器范围的一小集合;为了决定在上述方向中所相关的快取线之后被上述样态所指出的一个或多个快取线, 上述预取单元用以放置上述样态至上述存储器区块,使得上述地址位于上述样态中;以及沿着上述方向,由上述地址开始搜寻,直到遇到上述样态所指出的一快取线。42.如权利要求41所述的微处理器,其中 上述样态包括快取线的一顺序;其中为了放置上述样态至上述存储器区块,使得上述地址位于上述样态中,上述预取单元用以藉由上述顺序将上述样态转移至上述存储器区块。43.如权利要求41所述的微处理器,其中出现在上述第二级快取存储器中的上述存储器区块的上述最近存取要求的上述地址随着时间函数而非单调性地增加以及减少。44.如权利要求43所述的微处理器,其中出现在上述第二级快取存储器中的上述存储器区块的上述最近存取要求的上述地址可为非连续的。45.如权利要求40所述的微处理器,还包括 多个核心;其中上述第二级快取存储器以及预取单元是由上述核心所共享;以及每一上述核心包括上述第一级快取存储器的一不同的范例。46.如权利要求40所述的微处理器,其中为了导致上述一个或多个快取线被预取至上述第一级快取存储器中,上述预取单元用以提供上述一个或多个快取线的地址至上述第一级快取存储器,其中上述第一级...

【专利技术属性】
技术研发人员:罗德尼E虎克约翰M吉尔
申请(专利权)人:威盛电子股份有限公司
类型:发明
国别省市:71

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1