一种改进的高速缓存伪最近最少使用数据替换方法与流程

文档序号:14724232发布日期:2018-06-19 03:36阅读:434来源:国知局

本发明涉及处理器高速缓存替换部件以及未命中时的替换方法。并特别地涉及N路组相连(N≥4)架构以及采用伪最近最少使用(LRU)替换策略的高速缓存数据替换部件和替换方法。



背景技术:

现代处理器体系结构通常将高速缓存(cache)作为内存数据的备份,处理器进行数据读取时,通常先在读取速度更快的高速缓存中进行读取,以缩短数据获取的周期,从而加快处理器运行速度。作为内存数据的备份场所,高速缓存和内存之间的映射通常可以分为全相联映射,直接相联映射和组相联映射。相较于全相连映射和直接相联映射,组相连映射在大多数应用场合尤其多处理器架构中可以提供更加好的性能,因此一般被用作现代处理器高速缓存和内存之间的映射方式。据一个组(set)中所含有路(way)的数量N的不同,可以将高速缓存称作N路组联映射高速缓存,简称N路组相联高速缓存。通常而言,N是2的k次方(k≥1,且k是整数)。例如,N等于2,4,8,16等等。

当处理器访问高速缓存时,如果发生数据未命中,此时如果高速缓存还拥有未被使用的可使用单元,则将新数据从内存中取出放入高速缓存;而此时如果高速缓存内的可使用单元都被占用,则必须选择一条数据并将其从高速缓存中拿出,从而释放存储单元来存储从内存中拿出的未命中数据。对于后一种情况,高速缓存替换部件需要按照一定方式来决定拿出哪条数据,也就是高速缓存的数据替换方法。

对于N路组相连高速缓存来讲,最近最少使用替换方法由于其遵循时间局部性原则而产生较好的效果,是最为常用的替换方法。最近最少使用替换方法需要保存数据的先后访问次序从而找出最近最少使用的数据进行踢出。在N=2时,因为每个组中仅有两路数据,可以很简单的用1位来标识最近使用的路从而实现最近最少使用替换。然而当N>2时,要保持数据的访问先后顺序栈,对于数字逻辑硬件来说开销就变得格外大,即要完成操作,又要存储信息。通常的做法是,采用可以近似最近最少使用替换方法的伪最近最少使用替换方式来达到目的。其通常而言可以是一个树型数据结构的控制单元。对于N路组相联高速缓存,通常额外含有N-1个控制位即N-1个寄存器来进行伪最近最少使用替换方法实现。例如图1展示了4路组相联一个组内4路的树型管理结构。图1中,树型结构的非叶节点即为控制位,一共有3个控制位。“X”代表每个控制位的值,可以是0,也可以是1,不能是其它值。一般而言,它是一个1比特的寄存器。a到c是每个控制位的别名,如a代表这个树型结构的根节点,b代表a的左子节点,以此类推。4个叶子节点分别代表该组内的第1到第4路,在图中分别为way1到way4。

某一时刻(这一时刻树型结构中每个节点的“X”并不会对分析造成影响)某4路组相连某一组的树型结构如图1所示。如果下一时刻需要访问way3(第3路),从根节点分析,由于way3在根节点的右子树,则a的“X”置位1,分析节点从根节点转到其右子节点c,又由于way3在c的左子树,则c所在节点的“X”置位0。其它节点的更新也是一样的,如果在分析节点的左子树,则将分析节点的值置位“0”,如果在分析节点的右侧,则将分析节点的值置位“1”。在某一组的所有路都存储数据后,新的数据到来寻找替换的路时,需要按照与访问相反的顺序进行。在访问完way3后,如果此时要选择一路进行替换,则先将分析节点置位根节点a,a为“1”,那么就进入a的左子树进行替换选择,分析节点置位a的左子节点b,此时再根据b的值进行替换,如果b的值为“1”,则替换way1,如果b的值为0,则替换way2。

上述是通常的伪最近最少使用替换方法及其实现,根据上述节点更新以及替换节点的选择方法,在某一时刻,依次访问way3,way1,way2,way4后,树中各节点的值为a、b以及c均是“1”。此时,如果新的数据到来,需要选择某一路进行替换的话,按照原来的法则,应该替换way1(a的值为1,选择左子树,b的值为1,选择左子树,即way1),而事实上,根据LRU替换方法,way3才是被替换的对象,这就引入了错误。



技术实现要素:

本发明旨在在很小的额外硬件需求下改进这一错误的发生,使之更加贴近LRU替换方法。由于路数N为2时,可以用简单的1比特来标识访问次序从而完成最近最少使用替换,因此本发明只考虑在路数N≥4且N是2的k次幂(k是整数)的高速缓存下的改进。

在路数N≥4(且N是2的整数次幂)时,以根节点为第1层,其树型控制结构有M(M=logN,其中logN以2为底)层。其中第M层并不会引入错误的发生。而是从第1层到第M-1层的所有控制节点,由于访问顺序的影响,会产生错误的被踢出数据所在路的指示。引入(N/2-1)组移位寄存器共((N*logN)/2-1)个寄存器来进行辅助记录(logN以2位底),同时引入(2*N-4)个标志位来进行标记。引入错误的每个控制节点(第1到M-1层的所有节点)均含有一个移位寄存器。在这些辅助移位寄存器和标志位的帮助下,可以使伪最近最少使用替换方法更加贴近最近最少使用替换方法,从而改善处理器性能。

高速缓存替换部件不再只以树型结构来完成被替换数据的选择,而是根据树型节点的记录以及辅助移位寄存器的记录来完成被替换数据的选择。并且辅助移位寄存器给出的指示优先级要高于树型节点记录所给出的指示。如果某一个错误引入节点它的辅助移位寄存器记录值只含有1个0或者只含有1个1,那么不管该节点在树状结构中的值是多少,在进行替换数据选择时,都分别选择它的左子树和右子树所在根节点作为下一个分析节点。在相联度较高时,位于上层(更靠近根节点)的错误引入节点它的辅助移位寄存器内的值由于访问的无规律性,很难达到只有1个0或者只有1个1的情况。在这种情况下,可以放松此条件至有2个0或者2个1就可以分别选择左子树或右子树的根节点作为下一个分析节点。

附图说明

图1是某一时刻某4路组相连高速缓存某一组的树型控制结构。圆形的是控制节点,方形的代表第一路(way1)至第四路(way4)。

图2是某一时刻某4路组相连高速缓存某一组的树型控制结构。椭圆形的是引入错误的控制节点;圆形的是未引入错误的控制节点;方形的代表第一路(way1)至第四路(way4),三角形的内表示标志位,双向箭头表示标志位和引入错误的控制节点的对应关系。

图3是某一时刻某8路组相连高速缓存某一组的树型控制结构。对于不同图形部分的含义同图2。

图4是含有处理器核心以及高速缓存两个部分的处理器的常见结构。

具体实施方式

在一个树型控制结构中,每一个叶子节点(标识高速缓存某一路)均含有1到2个标志位,即每一路有一个或者两个标志位。如果只有1位,则标志位的值是0或者1,如果有两位,则这两个标志位的值分别为0和1。这是由于对不同的引入错误的节点而言,其标志位不一定相同。

标志位命名方式如下:以所分析的引入错误的节点为根节点,在其左子树的所有路,对其而言标志位均为0,而在其右子树的所有路,对其而言,标志位都为1。这样,除了路1以及路N只含有一个标志位分别为0和1以外,其它路均含有2个标志位0和1,分别针对不同的错误引入节点。同一路针对同一错误引入节点的标志位也可能和这一路针对其它错误节点的标志位相同,从而实现标志位复用。图2和图3分别显示了4路以及8路组相联结构下的树型控制结构以及针对每个错误引入节点的标志位。其中,圆形表示非引入错误控制节点,椭圆形表示错误引入的控制节点,方形表示每一路,每一路下面三角形内的数字,表示标志位。双向箭头是标志位和错误引入节点的对应。

图4显示的是一个常见处理器的部分结构框图。图中,401是处理器核心,402是高速缓存部分。403是高速缓存的数据存储部分,包含用于一致性协议的指示位等。图示展示了一个多路组相联结构(每一路以序号404标识),这部分存储只涉及到内存数据的存储以及完成高速缓存一致性的标志位存储。405是高速缓存的数据替换部件。405根据406即树型控制节点存储来进行被替换数据的选择,高速缓存的每一组均有一组标志寄存器即407来标识树型控制节点的值。在高速缓存数据已满并且发生数据未命中时,从根节点开始,依次判断每一个控制节点的值来选择相应的路并将其内容踢出。本专利的创新点在于引入结构407和408,它便是所引入的用来移位寄存器组,高速缓存的每一组(set)中的错误引入节点均含有一组移位寄存器409。同时,在407中含有每一路针对每个错误引入节点的标志位。在进行高速缓存数据访问的时候,除了更新407中的树状控制节点外,还需要将407中每一路针对每个错误引入节点的标志位在408中相应错误引入节点的寄存器组内进行更新。在进行替换数据选择的时候,如果当前分析节点的辅助移位寄存器内的记录值达到预先定义的要求,替换部件需要优先选择辅助移位寄存器所标示的左子树或者右子树。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1