一种非阻塞Cache替换信息表超前精确更新装置及方法

文档序号:829261 发布日期:2021-03-30 浏览:31次 >En<

阅读说明:本技术 一种非阻塞Cache替换信息表超前精确更新装置及方法 (Advanced accurate updating device and method for non-blocking Cache replacement information table ) 是由 张骏 田泽 陈佳 韩立敏 裴希杰 任向隆 于 2020-12-05 设计创作,主要内容包括:本发明涉及一种非阻塞Cache替换信息表超前精确更新装置及方法。本发明装置包括替换操作模块和缺失状态保持寄存器单元,该更新装置还包括了替换信息超前计算和控制单元以及目标替换信息保持寄存器,替换信息超前计算和控制单元与替换操作模块连接,缺失状态保持寄存器单元的每一个入口接目标替换信息保持寄存器。本发明根据应用程序实际访存行为和顺序对非阻塞Cache替换信息表进行精确更新,从而更好的捕捉数据局部性,提升Cache空间的利用和命中率。(The invention relates to a device and a method for accurately updating a non-blocking Cache replacement information table in advance. The device comprises a replacement operation module and a missing state holding register unit, and further comprises a replacement information advanced calculation and control unit and a target replacement information holding register, wherein the replacement information advanced calculation and control unit is connected with the replacement operation module, and each inlet of the missing state holding register unit is connected with the target replacement information holding register. The method accurately updates the non-blocking Cache replacement information table according to the actual access behavior and the actual sequence of the application program, thereby better capturing the data locality and improving the utilization and hit rate of the Cache space.)

一种非阻塞Cache替换信息表超前精确更新装置及方法

技术领域

本发明涉及计算机硬件技术领域,尤其涉及一种非阻塞Cache替换信息表超前精确更新装置及方法。

背景技术

非阻塞Cache是高性能微处理器片上存储系统的关键部件,实现了常用数据的缓冲,已经被公认有很好的隐藏了片外大容量主存访问的长延迟,并且已经广泛应用于CPU、DSP、GPU的等几乎所有类型的核心处理芯片中。但是,对于微处理器来说,上电运行后,数据Cache将立即被访存数据填满,除非由于Cache一致性操作导致的Cache作废,几乎没有空行等待返回的主存数据写入,而直接写入一个Cache空行是延迟最小的。一种简单直接的做法是每当发生缺失时,根据Cache替换算法提前找到并作废目标替换块,等待返回的主存数据写入。但是由于一次片外主存访问通常耗费100-200个内核时钟周期,考虑到在这期间可能产生多次存储器访问,提前作废Cache数据可能会破坏数据的局部性,尤其在当前Cache设计具备流水、非阻塞、多内核共享的情况下更是如此(一个Cache数据块宽度通常大于一次数据访问宽度)。因此,现有的Cache替换算法都是等数据从主存返回后才判断有没有空闲Cache行,如果没有空行,再根据Cache替换算法选择目标替换块进行Cache替换,而执行替换算法选择目标块,以及更新替换信息都将会产生延迟。

尤其对于非阻塞Cache来说,要求其在容忍多个Load缺失的同时仍然保持在Cache命中情况下向处理器提供数据的能力。而缺失状态保持寄存器单元(MSHR)中挂起的多个Load缺失都需要在更新Cache数据块时更新LRU替换信息表,关键问题是多个Load缺失返回的数据是串行的(地址相同的Load缺失已经在MHSR中进行合并),在更新Cache数据块和Cache替换算法单元(LRU)替换信息表也必然是串行的,因为LRU替换信息表的更新必须建立在上一次LRU替换信息表更新结果的基础上。因此,虽然非阻塞Cache从片内到片外具备在连续向处理器内核提供数据的同时更加充分利用外部存储器带宽的能力,但是外部存储器数据从片外回到片内后却要串行的更新LRU替换信息表。显然,如果为了严格保证Cache替换信息更新的精确性,就必须保证更新顺序与存储器访问顺序一致,而这种串行的非阻塞Cache替换信息更新机制将延长处理器内核最终得到数据的时间,即使这些数据可以通过Cache非阻塞机制在不需要访问外部存储器时就能通过Cache命中得到。

非阻塞Cache替换信息更新算法可能影响到Cache空间利用率、Cache命中率等多个方面的性能指标,最终影响Cache的整体工作效率,优化非阻塞Cache替换信息更新算法性能对研制高性能CPU、DSP和GPU具有十分重要的理论意义和应用价值。

图1是常规非阻塞Cache访问序列的延迟情况,对Cache的访问请求流包括8个请求,其中请求1、2、5、6、8发生缺失,而3、4、7发生命中。对于非阻塞Cache来说,请求1、2、5、6、8的相关信息会进入MSHR等待数据从外部存储器中返回。而请求3、4、7在MSHR未满的情况下直接访问Cache,获得数据,并基于当前LRU替换信息表的状态对其进行更新,该部分访问延迟和替换信息更新延迟能够被隐藏,但是其更新替换信息表时是不精确的,如图1中红色圆圈位置,请求3更新替换信息表时,替换信息表的状态应该是请求2更新替换信息表后的结果,而实际上,由于发生缺失的请求要等到数据返回后才更新替换信息表,且命中Cache时延迟较小,所以造成请求3更新替换信息表时的状态是请求1更新替换信息表前的结果,请求4和请求7也是同样道理。这样会造成替换信息表的更新顺序与实际应用程序访问存储器的顺序不一致,从而破坏数据局部性。图1中,发生命中的Cache请求(3、4、7)延迟和替换信息表更新延迟能够被隐藏掉。缺失请求的数据返回时更新替换信息表的同时就可以开始下一个缺失请求的片外数据访问,因此更新替换信息表的延迟也能够被隐藏掉,综上,图1中8个Cache访问请求的总延迟是100*5=500。

因此,如果能够在非阻塞Cache的基础上,优化更新替换信息表的方式,使其能够按照真实的存储器访问顺序来进行更新,就能够在Cache替换操作时更加符合应用程序的行为特征,进而更好的捕获应用程序数据在时间和空间上的局部性。

发明内容

本发明为解决背景技术存在的上述问题,而提供一种非阻塞Cache替换信息表超前精确更新装置及方法,根据应用程序实际访存行为和顺序对非阻塞Cache替换信息表进行精确更新,从而更好的捕捉数据局部性,提升Cache空间的利用和命中率。

本发明的技术解决方案是:本发明为一种非阻塞Cache的替换信息表超前精确更新装置,包括替换操作模块和缺失状态保持寄存器单元(MSHR),其特殊之处在于:该更新装置还包括了替换信息超前计算和控制单元(PLU)以及目标替换信息保持寄存器,替换信息超前计算和控制单元与替换操作模块连接,缺失状态保持寄存器单元的每一个入口接目标替换信息保持寄存器,其中:

替换信息超前计算和控制单元在一次外部存储器访问延迟期间,按访存顺序计算缺失状态保持寄存器单元中可能存在的多个Cache缺失的替换目标Cache块地址,将计算出的地址存储在缺失状态保持寄存器单元中;

目标替换信息保持寄存器,用来存储该Cache缺失对应的精确替换目标Cache块行路组信息,以便精确完成对Cache数据阵列的更新。

优选的,替换信息超前计算和控制单元包含两个模块:替换地址超前计算控制模块和替换地址超前计算模块,替换信息超前计算和控制单元接收来自缺失状态保持寄存器单元的缺失访问顺序信息和来自Cache替换算法单元的替换算法目标块输出信息,然后替换地址超前计算模块在替换地址超前计算控制模块的控制下,依次按缺失顺序完成替换目标块信息计算。

优选的,目标替换信息保持寄存器对缺失状态保持寄存器单元中多个Cache缺失的替换目标Cache块地址是提前计算的,Cache替换算法单元替换信息更新是按照程序流的顺序依次进行的,因此无论后续Cache访问操作是否发生命中,都不会影响程序执行的正确性。

一种实现上述的非阻塞Cache的替换信息表超前精确更新的方法,其特殊之处在于:该方法步骤如下:

1)在一次外部存储器访问延迟期间,替换信息超前计算和控制单元按访存顺序计算缺失状态保持寄存器单元中可能存在的多个Cache缺失的替换目标Cache块地址,将计算出的地址存储在缺失状态保持寄存器单元中;

2)然后,缺失状态保持寄存器单元根据返回数据地址依次进行Cache替换信息更新操作,实现对非阻塞Cache替换信息表内容的精确更新,从而减少Cache抖动,提升Cache命中率;

3)如果目标替换信息保持寄存器中对应的Cache行数据为脏,则替换信息超前计算和控制单元主动发起写回操作,将脏数据提前写回主存,以便在缺失状态保持寄存器单元中对应的Cache缺失数据返回后直接写入对应Cache行,降低Cache访问缺失总延迟。

本发明的提供的一种非阻塞Cache的替换信息表超前精确更新装置及方法(PLUA),在在常规非阻塞Cache的基础上为替换操作模块增加替换信息超前计算和控制单元(PLU),同时,PLUA还为缺失状态保持寄存器单元(MSHR)的每一个入口增加接入对应的目标替换信息保持寄存器。因此本发明能够支持对多个Cache访问缺失的替换信息进行计算,并在这些Cache访问缺失对应的存储器数据返回前,就能够根据MSHR中挂起的Cache缺失信息主动依次精确的计算所有Cache缺失数据返回应该写入的目标Cache数据块地址,然后将该Cache数据块地址保存在MSHR中新增加的域中,并同时更新LRU替换信息供后续Cache缺失计算替换目标地址时使用,缺失数据返回后直接根据MSHR中的目标Cache数据块地址写入对应的Cache数据块中。

由于PLUA依次进行Cache替换信息更新操作,能够实现对非阻塞Cache替换信息表内容的精确更新,从而减少Cache抖动,提升Cache命中率。另外,由于串行更新LRU替换信息的延迟相对于外部存储器访问延迟要小很多,因此这种方式能够隐藏MSHR中所有Cache缺失造成的串行LRU替换信息更新延迟。

附图说明

图1是现有非阻塞Cache替换信息更新示意图;

图2是本发明的装置结构图;

图3是本发明的方法更新示意图。

具体实施方式

本发明提供了一种非阻塞Cache的替换信息表超前精确更新装置,包括替换操作模块、缺失状态保持寄存器单元(MSHR)、替换信息超前计算和控制单元(PLU)以及目标替换信息保持寄存器,替换信息超前计算和控制单元与替换操作模块连接,缺失状态保持寄存器单元的每一个入口接目标替换信息保持寄存器,其中:

替换信息超前计算和控制单元在一次外部存储器访问延迟期间,按访存顺序计算缺失状态保持寄存器单元中可能存在的多个Cache缺失的替换目标Cache块地址,将计算出的地址存储在缺失状态保持寄存器单元中;

目标替换信息保持寄存器,用来存储该Cache缺失对应的精确替换目标Cache块行路组信息,以便精确完成对Cache数据阵列的更新。

进一步的,替换信息超前计算和控制单元包含两个模块:替换地址超前计算控制模块和替换地址超前计算模块,替换信息超前计算和控制单元接收来自缺失状态保持寄存器单元的缺失访问顺序信息和来自Cache替换算法单元的替换算法目标块输出信息,然后替换地址超前计算模块在替换地址超前计算控制模块的控制下,依次按缺失顺序完成替换目标块信息计算。

进一步的,目标替换信息保持寄存器对缺失状态保持寄存器单元中多个Cache缺失的替换目标Cache块地址是提前计算的,Cache替换算法单元替换信息更新是按照程序流的顺序依次进行的,因此无论后续Cache访问操作是否发生命中,都不会影响程序执行的正确性。

本发明还提供了一种实现上述的非阻塞Cache的替换信息表超前精确更新的方法,该方法步骤如下:

1)在一次外部存储器访问延迟期间,替换信息超前计算和控制单元按访存顺序计算缺失状态保持寄存器单元中可能存在的多个Cache缺失的替换目标Cache块地址,将计算出的地址存储在缺失状态保持寄存器单元中;

2)然后,缺失状态保持寄存器单元根据返回数据地址依次进行Cache替换信息更新操作,实现对非阻塞Cache替换信息表内容的精确更新,从而减少Cache抖动,提升Cache命中率;

3)如果目标替换信息保持寄存器中对应的Cache行数据为脏,则替换信息超前计算和控制单元主动发起写回操作,将脏数据提前写回主存,以便在缺失状态保持寄存器单元中对应的Cache缺失数据返回后直接写入对应Cache行,降低Cache访问缺失总延迟。

下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。

参见图2,本发明提供的具体实施例的非阻塞Cache的替换信息表超前精确更新装置,包括替换操作模块、缺失状态保持寄存器单元(MSHR)、替换信息超前计算和控制单元(PLU)以及目标替换信息保持寄存器,替换信息超前计算和控制单元与替换操作模块连接,缺失状态保持寄存器单元的每一个入口接目标替换信息保持寄存器,替换信息超前计算和控制单元在一次外部存储器访问延迟期间,按访存顺序计算缺失状态保持寄存器单元中可能存在的多个Cache缺失的替换目标Cache块地址,将计算出的地址存储在缺失状态保持寄存器单元中;目标替换信息保持寄存器,用来存储该Cache缺失对应的精确替换目标Cache块行路组信息,以便精确完成对Cache数据阵列的更新。替换信息超前计算和控制单元包含两个模块:替换地址超前计算控制模块和替换地址超前计算模块,替换信息超前计算和控制单元接收来自缺失状态保持寄存器单元的缺失访问顺序信息和来自Cache替换算法单元的替换算法目标块输出信息,然后替换地址超前计算模块在替换地址超前计算控制模块的控制下,依次按缺失顺序完成替换目标块信息计算。目标替换信息保持寄存器对缺失状态保持寄存器单元中多个Cache缺失的替换目标Cache块地址是提前计算的,Cache替换算法单元替换信息更新是按照程序流的顺序依次进行的,因此无论后续Cache访问操作是否发生命中,都不会影响程序执行的正确性。

参见图3,本发明提供的具体实施例的非阻塞Cache替换信息表超前精确更新方法的Cache访问序列延迟情况,同样是8个Cache访问请求,其中请求1、2、5、6、8发生缺失,而3、4、7发生命中。由于请求1发生缺失延迟长达100CLK,在此期间,当MSHR深度为8的情况下,能够连续挂起上述5个Cache访问缺失,并且完成对剩余3个Cache访问请求命中的响应。

由于在Cache缺失时根据Cache替换算法进行替换目标选择和替换信息更新延迟为5,Cache命中时返回数据和替换信息更新延迟为8,则按照PLUA算法所有连续8个Cache访问请求的Cache替换信息计算和更新操作延迟为55CLK,即对Cache替换信息的按顺序精确更新全部都能够在发生Cache访问缺失请求1的数据从主存前完成,而不需要等到实际数据从主存返回后再进行计算。对于发生Cache缺失的请求1、2、5、6、8来说,在它们对应的数据从主存返回前,PLUA算法超前计算出的与其对应的Cache路组替换信息将保留在与之对应的目标替换信息保持寄存器中,待数据返回到Cache时使用。最为关键的是,无论Cache访问请求发生命中或是缺失,每一次Cache访问所使用到的,以及更新的替换信息都是最精确的,完全按照实际应用程序中存储器访问请求顺序进行,避免了不必要的Cache抖动,提升了Cache空间的利用率和Cache命中率。

最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种叠瓦式磁记录磁盘的数据恢复方法、装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类