一种支持非阻塞缺失处理的缓冲方法

文档序号:10593823阅读:207来源:国知局
一种支持非阻塞缺失处理的缓冲方法
【专利摘要】本发明公开了一种支持非阻塞缺失处理的缓冲方法,所述方法在处理器遇到请求发生缺失的时候,通过缓冲将缺失的请求暂存在缺失指令队列中,允许流水线继续发送后续无关的请求,将缺失代价隐藏在不相关请求的正常处理中,通过降低缓冲缺失代价来降低存储器的访问延时。本发明针对多个缺失请求发生了重叠,通过缺失缓冲可以进行多重判断,对多个缺失请求进行统一存储,从而进一步降低实际的缺失代价。本发明具有广泛适用性,可运用于各种多核芯片缓冲设计中,能够提高流水处理的效率。
【专利说明】
一种支持非阻塞缺失处理的缓冲方法
技术领域
[0001]本发明涉及计算机存储技术领域,具体涉及一种支持非阻塞缺失处理的缓冲方法。
【背景技术】
[0002]对于允许乱序执行支持流水的处理器,为了维护数据的一致性,往往采用阻塞的缓冲的设计,即当有请求在缓冲中缺失时,停顿流水线,等待数据从下一级存储体返回时,该请求才算处理完成,流水线才能继续处理下一个请求,返回数据的时间决定了阻塞缓冲的效率。
[0003]但是,在缓冲缺失时停顿流水线是十分浪费资源的行为,如何提高处理器的处理效率,是亟需解决的一个问题。

【发明内容】

[0004]本发明要解决的技术问题是:本发明提出了一种支持非阻塞缺失处理的缓冲方法,通过缓冲对流水线中缺失的请求进行缓存并进行管理,并对DDR返回的请求进行处理。
[0005]如果处理器能在等待返回数据的同时,继续发送下一个请求,可以大大提高处理效率。而非阻塞缓冲的策略就是在处理器遇到长延迟访存操作,即请求发生缺失的时候,通过缓冲的将缺失的请求暂存在缺失指令队列中,允许流水线继续发送后续无关的请求,将缺失代价隐藏在不相关请求的正常处理中,通过降低缓冲缺失代价来降低存储器的访问延时。同阻塞缓冲相比较,非阻塞缓冲技术虽然增加了专门用于放置缺失指令的存储体,但是请求处理速度的大幅提升,面积的增加是微不足道的。
[0006]本发明所采用的技术方案为:
一种支持非阻塞缺失处理的缓冲方法,所述方法在处理器遇到请求发生缺失的时候,通过缓冲将缺失的请求暂存在缺失指令队列中,允许流水线继续发送后续无关的请求,将缺失代价隐藏在不相关请求的正常处理中,通过降低缓冲缺失代价来降低存储器的访问延时。
[0007]所述缓冲用来对流水线中缺失的请求进行缓存并进行管理,并对DDR返回的请求进行处理。
[0008]所述缓冲与主控流水线相连,存储缺失请求,同时与DDR返回数据处理线关联,当DDR返回数据后,对缺失请求进行暂存后,连续处理返回缺失请求的同行请求。
[0009]所述缓冲整体由控制模块与存储体组成,多条流水线公用一个缓冲,不同的缺失请求经过控制模块选择进入存储体,当缺失请求从DDR返回时,经过缺失请求返回处理模块,再发往控制模块,对相关的缺失请求进行统一处理。
[0010]所述缓冲的深度根据实际情况中的缺失请求数量灵活设定。
[0011]所述缓冲设置时,将缓冲存储体平均分成四个区域,每个区域深度为4,每部分记录一个第一次缺失请求数据及其最多3个相关缺失数据,当流水线中有不同于前面四个缺失请求的缺失到来时,进行判断,缺失存入相关缺失数目较少的区域,同时缺失地址存入寄存器中。
[0012]所有流水线公用一个缺失缓冲,多条流水线同时向缺失缓冲发送缺失请求,要实现非阻塞缓冲就需要考虑缺失请求集中发送的情况,为了增强缺失缓冲的多缺失请求处理能力,在缺失请求发送至缺失缓冲的控制模块时,采用一种轮转机制来实现缺失请求的顺序与入缓冲中:
当缺失请求集中发送时同一拍最多有4个请求发往缺失缓冲,首先,通过与缺失地址寄存器比较,如果是不多于四个的新缺失请求或是之前请求的相关请求,我们将这些请求发往4个预存PreBUF,否则发送Busy信号至流水线暂停发送缺失请求;
然后按照默认顺序,从PreBUFO至PreBUF3每拍写一个缺失请求数据到存储体;
当第一拍结束后,PreBUFO中的缺失请求已经写入到存储体,轮转机制将PreBUFl设为高优先级,第二拍时,将PreBUFl中的缺失请求写入存储体,同时,如果有新的流水线O的缺失请求,因为PreBUFO已经清空,则可以同时存入新的缺失请求,这样的好处在于如果流水线O有连续的缺失请求集中发送,此时不需要停顿流水线,新的缺失请求可以暂存在PreBUF中,体现了非阻塞传输的优点;
同理,第三拍时,会优先处理PreBUF2中的缺失请求,按照0_1_2_3的顺序轮转进行写入存储体操作,与只要出现缺失,流水线就产生停顿相比较,在缺失请求密集发送的时候,可以提高流水线非相关请求传输效率。
[0013]返回的缓冲能够接收来自DDR返回的各种请求,包括缺失请求,不可缓冲请求,与输出缓冲在结构上类似,但功能相反,存储体的结构上采用了异步FIFO实现。
[0014]在功能上,返回缓冲需要对DDR返回的连续几拍请求进行组合为一个请求放入存储体,实际操作中,需要根据返回请求的信息位确定返回请求的实际位宽。
[0015]在缺失处理的实现中,需要明确相关处理的前后关系,通过状态机维护处理的顺序性,避免出现数据一致性问题。
[0016]本发明的有益效果为:
本发明针对多个缺失请求发生了重叠,通过缺失缓冲可以进行多重判断,对多个缺失请求进行统一存储,从而进一步降低实际的缺失代价。本发明具有广泛适用性,可运用于各种多核芯片缓冲设计中,能够提高流水处理的效率。
【附图说明】
[0017]图1为本发明缺失缓冲结构示意图;
图2为返回缓冲结构图示意图;
图3为处理状态机不意图。
【具体实施方式】
[0018]下面结合说明书附图,根据【具体实施方式】对本发明进一步说明:
实施例1:
一种支持非阻塞缺失处理的缓冲方法,所述方法在处理器遇到长延迟访存操作,即请求发生缺失的时候,通过缓冲将缺失的请求暂存在缺失指令队列中,允许流水线继续发送后续无关的请求,将缺失代价隐藏在不相关请求的正常处理中,通过降低缓冲缺失代价来降低存储器的访问延时。同阻塞缓冲相比较,非阻塞缓冲技术虽然增加了专门用于放置缺失指令的存储体,但是请求处理速度的大幅提升,面积的增加是微不足道的。
[0019]实施例2
在实施例1的基础上,本实施例所述缓冲用来对流水线中缺失的请求进行缓存并进行管理,并对DDR返回的请求进行处理。
[0020]实施例3
如图1所示,在实施例2的基础上,本实施例所述缓冲与主控流水线相连,存储缺失请求,同时与DDR返回数据处理线关联,当DDR返回数据后,对缺失请求进行暂存后,连续处理返回缺失请求的同行请求。
[0021 ] 实施例4
在实施例3的基础上,本实施例所述缓冲整体由控制模块与存储体组成,多条流水线公用一个缓冲,不同的缺失请求经过控制模块选择进入存储体,当缺失请求从DDR返回时,经过缺失请求返回处理模块,再发往控制模块,对相关的缺失请求进行统一处理。
[0022]实施例5
在实施例4的基础上,本实施例所述缓冲的深度可以根据实际情况中的缺失请求数量灵活设定,举例深度设为16,缓冲只用来存储数据,缺失请求的地址和其他信息使用缺失地址寄存器存储。
[0023]实施例6
在实施例4或5的基础上,本实施例6综合效率与面积的考虑,所述缓冲设置时,将缓冲存储体平均分成四个区域,每个区域深度为4,每部分记录一个第一次缺失请求数据及其最多3个相关缺失数据,当流水线中有不同于前面四个缺失请求的缺失(缺失5)到来时,进行判断,缺失5可以存入相关缺失数目较少的区域,同时缺失地址存入寄存器中。在不增加存储体面积的前提下能够存储更多的缺失请求。
[0024]实施例7
在实施例4的基础上,本实施例所有流水线公用一个缺失缓冲,多条流水线可以同时向缺失缓冲发送缺失请求,要实现非阻塞缓冲就需要考虑缺失请求集中发送的情况,为了增强缺失缓冲的多缺失请求处理能力,在缺失请求发送至缺失缓冲的控制模块时,采用一种轮转机制来实现缺失请求的顺序写入缓冲中。
[0025]以多条流水线与缺失缓冲相连为例,当缺失请求集中发送时同一拍最多有4个请求发往缺失缓冲,
首先,通过与缺失地址寄存器比较,如果是不多于四个的新缺失请求或是之前请求的相关请求,我们将这些请求发往4个预存PreBUF,否则发送Busy信号至流水线暂停发送缺失请求;
然后按照默认顺序,从PreBUFO至PreBUF3每拍写一个缺失请求数据到存储体;
当第一拍结束后,PreBUFO中的缺失请求已经写入到存储体,轮转机制将PreBUFl设为高优先级,第二拍时,将PreBUFl中的缺失请求写入存储体,同时,如果有新的流水线O的缺失请求,因为PreBUFO已经清空,则可以同时存入新的缺失请求,这样的好处在于如果流水线O有连续的缺失请求集中发送,此时不需要停顿流水线,新的缺失请求可以暂存在PreBUF中,体现了非阻塞传输的优点;
同理,第三拍时,会优先处理PreBUF2中的缺失请求,按照0_1_2_3的顺序轮转进行写入存储体操作,与只要出现缺失,流水线就产生停顿相比较,在缺失请求密集发送的时候,可以提高流水线非相关请求传输效率。
[0026]实施例8
在实施例7的基础上,本实施例返回的缓冲能够接收来自DDR返回的各种请求,包括缺失请求,不可缓冲请求等,与输出缓冲在结构上类似,但功能相反,因为具有全局缓冲与DDR的相关联的接口,而两者时钟不同,在交互的过程中容易因为异步逻辑产生误差,因此在存储体的结构上仍采用了异步FIFO实现,在此不再详述。
[0027]实施例9
在实施例7的基础上,本实施例在功能上,由于DDR的位宽较小,返回缓冲需要对DDR返回的连续几拍请求进行组合为一个请求放入存储体,实际操作中,需要根据返回请求的信息位确定返回请求的实际位宽,返回缓冲结构如图2所示。
[0028]实施例10
在实施例7的基础上,本实施例在缺失请求处理的过程中,存在两部分相关,即缺失返回数据与缺失缓冲中数据的相关及流水线缺失的相关;缺失引起的行替换数据与流水线中相关数据相关。因此在缺失处理的实现中,需要明确相关处理的前后关系,通过状态机维护处理的顺序性,避免出现数据一致性问题,处理状态机如图3所示。
[0029]以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
【主权项】
1.一种支持非阻塞缺失处理的缓冲方法,其特征在于:所述方法在处理器遇到请求发生缺失的时候,通过缓冲将缺失的请求暂存在缺失指令队列中,允许流水线继续发送后续无关的请求,将缺失代价隐藏在不相关请求的正常处理中,通过降低缓冲缺失代价来降低存储器的访问延时。2.根据权利要求1所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:所述缓冲用来对流水线中缺失的请求进行缓存并进行管理,并对DDR返回的请求进行处理。3.根据权利要求2所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:所述缓冲与主控流水线相连,存储缺失请求,同时与DDR返回数据处理线关联,当DDR返回数据后,对缺失请求进行暂存后,连续处理返回缺失请求的同行请求。4.根据权利要求3所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:所述缓冲整体由控制模块与存储体组成,多条流水线公用一个缓冲,不同的缺失请求经过控制模块选择进入存储体,当缺失请求从DDR返回时,经过缺失请求返回处理模块,再发往控制模块,对相关的缺失请求进行统一处理。5.根据权利要求4所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:所述缓冲的深度根据实际情况中的缺失请求数量灵活设定。6.根据权利要求4或5所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:所述缓冲设置时,将缓冲存储体平均分成四个区域,每个区域深度为4,每部分记录一个第一次缺失请求数据及其最多3个相关缺失数据,当流水线中有不同于前面四个缺失请求的缺失到来时,进行判断,缺失存入相关缺失数目较少的区域,同时缺失地址存入寄存器中。7.根据权利要求4所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:所有流水线公用一个缺失缓冲,多条流水线同时向缺失缓冲发送缺失请求,在缺失请求发送至缺失缓冲的控制模块时,采用一种轮转机制来实现缺失请求的顺序写入缓冲中: 当缺失请求集中发送时同一拍最多有4个请求发往缺失缓冲,首先,通过与缺失地址寄存器比较,如果是不多于四个的新缺失请求或是之前请求的相关请求,我们将这些请求发往4个预存PreBUF,否则发送Busy信号至流水线暂停发送缺失请求; 然后按照默认顺序,从PreBUFO至PreBUF3每拍写一个缺失请求数据到存储体; 当第一拍结束后,PreBUFO中的缺失请求已经写入到存储体,轮转机制将PreBUFl设为高优先级,第二拍时,将PreBUFl中的缺失请求写入存储体,同时,如果有新的流水线O的缺失请求,因为PreBUFO已经清空,则可以同时存入新的缺失请求,这样的好处在于如果流水线O有连续的缺失请求集中发送,此时不需要停顿流水线,新的缺失请求可以暂存在PreBUF中,体现了非阻塞传输的优点; 同理,第三拍时,优先处理PreBUF2中的缺失请求,按照O-1 _2_3的顺序轮转进行写入存储体操作。8.根据权利要求7所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:返回的缓冲能够接收来自DDR返回的各种请求,包括缺失请求,不可缓冲请求,与输出缓冲在结构上类似,但功能相反,存储体的结构上采用了异步FIFO实现。9.根据权利要求7所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:在功能上,返回缓冲需要对DDR返回的连续几拍请求进行组合为一个请求放入存储体,实际操作中,需要根据返回请求的信息位确定返回请求的实际位宽。10.根据权利要求7所述的一种支持非阻塞缺失处理的缓冲方法,其特征在于:在缺失处理的实现中,需要明确相关处理的前后关系,通过状态机维护处理的顺序性,避免出现数据一致性问题。
【文档编号】G06F9/38GK105955711SQ201610258964
【公开日】2016年9月21日
【申请日】2016年4月25日
【发明人】马志超, 李仁刚, 童元满
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1