一种缓存流水线处理方法及装置制造方法及图纸

技术编号:33247548 阅读:16 留言:0更新日期:2022-04-27 18:02
本申请涉及一种缓存流水线处理方法及装置。所述方法重新设计缓存流水线处理框架,在缓存流水线处理框架中,清空和缺失返回处理为独立的请求类型,全部按照与常规读写请求一样的流程处理,所有类型的请求共用流水线,在请求仲裁栈判定优先级。通过这样的统一处理,使得流程一致化,可以有效减少流水线的busy停顿,同时可以明确流水线各栈的功能,避免绝大部分数据旁路。从而节省面积与开销,也可以避免传统设计中某些情况下效率低的问题。免传统设计中某些情况下效率低的问题。免传统设计中某些情况下效率低的问题。

【技术实现步骤摘要】
一种缓存流水线处理方法及装置


[0001]本申请涉及缓存
,特别是涉及一种缓存流水线处理方法及装置。

技术介绍

[0002]随着处理器体系结构和制造工艺的飞速发展,处理器峰值性能与存储器访问带宽之间的差距与日俱增,从而导致了严重的“存储墙”问题。为了缓解“存储墙”问题,在处理器内部设置一个小容量低延迟的缓存成为了一种普遍采用的方案。通过把具有高局部性的数据存放在缓存中,既可以减少访问下游存储设备的次数,变相减少访存带宽需求,同时又为上游设备提供了低延迟获取数据的途径,大大提高了处理速度。
[0003]上游设备访问下游存储设备时,一般首先在缓存中查询,因此需要在缓存中建立一套完整的数据标记、映射、检索和存取的流程。同时,如果未能在缓存中查询到数据,还需要在缺失缓存中暂时记录缺失地址,从下游存储设备中将数据取出后,再返回上游设备。另外,为了满足用户的需求,还需要提供缓存的全局/部分清空和写回功能。
[0004]为了实现上述功能,通常在缓存中采用流水线来分别实现不同的功能模块,提高处理效率。一般情况下,按照访问缓存的流程,主要功能模块包括:请求仲裁、Tag体访问、Tag体命中判定、缺失请求处理、数据体访问、数据返回、保留处理。传统设计中,缓存把读写请求作为流水线的主要处理对象,清空以及缺失请求则作为特殊情况单独处理,而由于清空和缺失请求的优先级一般都高于读写请求,因此当产生该类情况时,会在流水线中间插入这些高优先级请求,从而不可避免地导致流水线出现大量的争用和busy停顿,而争用又进一步产生了仲裁的需求。另外,由于处理这些特殊请求时,需要使用主流水线的部分功能模块,但又并未遵循主流水线的流程,因此流水线各栈的功能无法完全独立,或是经常需要旁路数据,以保证数据一致性。同时,由于处理过程的复杂,使得维护时序变得更加困难。总的来说,传统的流水线设计,在设计复杂度、效率和开销上都有一定的缺陷。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种缓存流水线处理方法及装置。
[0006]一种缓存流水线处理方法,所述方法包括:
[0007]搭建缓存流水线处理框架;所述缓存流水线处理框架中流水线的栈包括:请求仲裁、Tag体访问、Tag体流出、Tag体命中判定、数据体访问、数据体流出以及数据返回仲裁;
[0008]请求仲裁栈中,接收上游网络发送的读写请求、清空处理请求以及Tag体命中判定栈发送的缺失请求,所述请求仲裁栈按照预设优先级依次处理所述读写请求、所述清空处理请求以及所述缺失请求;
[0009]Tag体访问栈中,接收请求仲裁栈发送的Tag体访问请求,并根据Tag体访问请求提取请求地址中Tag体索引位的Tag体数据;
[0010]Tag体流出栈中,在一个时序提供Tag存储体流出数据,以及读出Tag体数据;
[0011]Tag体命中判定栈中,接收Tag体流出栈读出的Tag体数据,将Tag体数据与请求地
址的Tag值部分进行比对,若相同,则输出命中位置信息,若否则输出缺失请求;
[0012]数据体访问栈中,根据Tag体索引位和命中位置信息,读取数据体,并且根据请求类型修改对应的状态位;
[0013]数据体流出栈中,对数据体访问栈中读取的数据体进行EDAC处理;
[0014]数据返回仲裁中,根据请求类型判断数据体流出栈EDAC处理后的数据体以及是发往上游网络的返回数据还是发往下游网络的写回数据。
[0015]在其中一个实施例中,还包括:Tag体访问栈中执行读Tag的读请求、写请求、替换请求和Flush请求,以及写Tag的分配请求;
[0016]Tag体流出栈中执行读Valid的读请求、写请求、替换请求以及Flush请求;执行读Dirty的替换请求以及Flush请求;执行读LRU的读请求、写请求以及替换请求;
[0017]数据体访问栈中执行写Valid的替换请求、分配请求以及Flush请求;执行写Dirty的写请求、分配请求以及Flush请求;执行写LRU的读请求和写请求。
[0018]在其中一个实施例中,还包括:所述缓存流水线处理框架中,当前续请求为写请求时,后续请求为替换请求。
[0019]在其中一个实施例中,还包括:所述清空处理请求、所述缺失请求以及所述读写请求的优先级依次降低。
[0020]在其中一个实施例中,还包括:生成清空处理请求的步骤包括:
[0021]接收控制寄存器清空写回使能信号和写回配置信号后,判断缓存流水线处理框架是否清空,若是,则根据所述写回配置信号的地址范围,判断清空请求类型;所述清空请求包括:大范围清空和小范围清空;
[0022]若清空请求为大范围清空,则遍历缓存,逐行执行操作;
[0023]若清空请求为小范围清空,则根据地址范围,依次查找缓存行。
[0024]在其中一个实施例中,还包括:Tag体访问栈中,接收请求仲裁栈的请求,并判断请求类型;所述请求类型包括:大范围清空回写和一般类型;
[0025]当请求类型为一般类型时,根据地址映射规则,将请求数据中携带的地址的若干位作为一组缓存行的索引,流出至Tag体流出栈读取相应数据;
[0026]当请求类型为大范围清空回写时,将索引值流入至Tag体流出栈读取相应数据。
[0027]在其中一个实施例中,还包括:在Tag体命中判定栈中,接收Tag体流出栈读出的Tag体数据和请求输入,将Tag体数据与请求地址的Tag值部分进行比对,若Tag值命中,则输出命中位置信息和请求输出至数据体访问栈,若Tag值未命中,则对请求类型进行判定;请求类型包括:请求失效和确实缓存。
[0028]一种缓存流水线处理装置,所述装置包括:缓存,所述缓存中执行上述缓存流水线处理方法。
[0029]上述缓存流水线处理方法及装置,重新设计缓存流水线处理框架,在缓存流水线处理框架中,清空和缺失返回处理为独立的请求类型,全部按照与常规读写请求一样的流程处理,所有类型的请求共用流水线,在请求仲裁栈判定优先级。通过这样的统一处理,使得流程一致化,可以有效减少流水线的busy停顿,同时可以明确流水线各栈的功能,避免绝大部分数据旁路。从而节省面积与开销,也可以避免传统设计中某些情况下效率低的问题。
附图说明
[0030]图1为一个实施例中缓存流水线处理方法的结构示意图;
[0031]图2为一个实施例中不同请求类型及其读写Tag体和状态位的说明示意图;
[0032]图3为一个实施例中状态位旁路的说明示意图;
[0033]图4为一个实施例中请求仲裁栈逻辑图;
[0034]图5为一个实施例中清空处理逻辑图;
[0035]图6为一个实施例中Tag体访问栈逻辑图;
[0036]图7为一个实施例中Tag体命中判定栈逻辑图;
[0037]图8为一个实施例中缺失缓冲的结构示意图;
[0038]图9为一个实施例中请求写入子模块逻辑图;
...

【技术保护点】

【技术特征摘要】
1.一种缓存流水线处理方法,其特征在于,所述方法包括:搭建缓存流水线处理框架;所述缓存流水线处理框架中流水线的栈包括:请求仲裁、Tag体访问、Tag体流出、Tag体命中判定、数据体访问、数据体流出以及数据返回仲裁;请求仲裁栈中,接收上游网络发送的读写请求、清空处理请求以及Tag体命中判定栈发送的缺失请求,所述请求仲裁栈按照预设优先级依次处理所述读写请求、所述清空处理请求以及所述缺失请求;Tag体访问栈中,接收请求仲裁栈发送的Tag体访问请求,并根据Tag体访问请求提取请求地址中Tag体索引位的Tag体数据;Tag体流出栈中,在一个时序提供Tag存储体流出数据,以及读出Tag体数据;Tag体命中判定栈中,接收Tag体流出栈读出的Tag体数据,将Tag体数据与请求地址的Tag值部分进行比对,若相同,则输出命中位置信息,若否则输出缺失请求;数据体访问栈中,根据Tag体索引位和命中位置信息,读取数据体,并且根据请求类型修改对应的状态位;数据体流出栈中,对数据体访问栈中读取的数据体进行EDAC处理;数据返回仲裁中,根据请求类型判断数据体流出栈EDAC处理后的数据体以及是发往上游网络的返回数据还是发往下游网络的写回数据。2.根据权利要求1所述的方法,其特征在于,Tag体访问栈中执行读Tag的读请求、写请求、替换请求和Flush请求,以及写Tag的分配请求;Tag体流出栈中执行读Valid的读请求、写请求、替换请求以及Flush请求;执行读Dirty的替换请求以及Flush请求;执行读LRU的读请求、写请求以及替换请求;数据体访问栈中执行写Valid的替换请求、分配请求以及Flush请求;执行写Dirty的写请...

【专利技术属性】
技术研发人员:刘胜崔剑峰黄佳帅张洋刘畅李晨曹壮
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1