一种非阻塞数据Cache结构的制作方法


一种非阻塞数据cache结构
技术领域
1.本发明涉及计算机硬件技术领域,特别涉及一种非阻塞数据cache结构。


背景技术:



2.在一般的处理器中,通常采用阻塞的cache(高速缓存)结构以保持高速缓存数据的一致性。当数据加载指令引起d-cache(数据高速缓存)缺失时,暂停处理器流水线,直到需要的数据从下一级存储空间中取出送入处理器,流水线才会继续处理下一个请求。因此cache的缺失代价取决于低一级存储空间返回所需数据的时间。从中可以看出,传统处理器中阻塞cache的效率是非常低的,而非阻塞cache解决了这一问题。
3.非阻塞cache在处理器发出缺失的请求时,通过将该缺失指令请求经由缺失处理模块处理,而不暂停处理器流水线,后续无关的指令得以继续被处理,当所需的数据块从下一级存储空间取出并送入处理器之后,整个非阻塞cache处理流程才算结束。
4.非阻塞数据cache的本质为无关的缺失数据访存指令在非阻塞处理模块中进行重叠,间接地隐藏了cache的缺失代价。但是,如果后续的指令与在非阻塞处理模块中的缺失指令相关,那么处理器的流水线仍然需要暂停,直到上一条缺失指令处理完毕。因此,非阻塞数据cache所能隐藏的缺失指令数量由发生缺失后不相关的指令数量决定。
5.在实现非阻塞数据cache时必须考虑到处理器集中大量地对数据进行存取的情况,这会考验非阻塞cache应对突发请求的处理能力。因此,非阻塞cache需要具备支持多条缺失指令重叠处理的能力,非阻塞数据cache与低一级的存储器支持流水处理以进一步降低cache的缺失代价。


技术实现要素:



6.本发明的目的在于提供一种非阻塞数据cache结构,以解决背景技术中的问题。
7.为解决上述技术问题,本发明提供了一种非阻塞数据cache结构,包括数据访存模块、非阻塞缺失处理模块;
8.所述数据访存模块用于处理外部的处理器传递来的访存指令,并将加载流水线划分为3级,主流水线划分为4级;
9.所述非阻塞缺失处理模块用于处理多个缺失指令,并实现多个缺失指令向下一级存储器请求数据的流水处理。
10.在一种实施方式中,所述加载流水线包括读标签操作、读数据操作和数据选择操作;所述主流水线包括读标签操作、读数据操作、数据选择操作和数据写入操作;
11.所述数据写入操作连接l1 d-cache,所述加载流水线中的读标签操作与所述l1 d-cache互连;
12.所述非阻塞缺失处理模块包括缺失处理单元和缺失流水线单元,所述缺失处理单元与所述主流水线中的读标签操作连接;所述加载流水线中的数据选择操作与所述缺失处理单元连接;
13.所述缺失流水线单元的数据流入口与所述缺失处理单元互连,数据流出口与l2 cache互连。
14.在一种实施方式中,所述数据访存模块判断访存指令请求加载的d-cache数据是否被命中,若命中则根据访存指令内的地址信息直接将命中的d-cache数据返回给处理器的内核,若未命中则将缺失指令传入所述非阻塞缺失处理模块中的缺失处理单元。
15.在一种实施方式中,所述非阻塞缺失处理模块在请求加载d-cache数据发生缺失时,对缺失的请求进行处理,缩减缺失指令向下发送读请求的次数以达到降低l2 cache访问时长的目的。
16.在一种实施方式中,所述缺失处理单元用于保存多条缺失指令,通过判断一条缺失指令是首次缺失还是再次缺失,通过合并相关的缺失指令减少重复的缺失访问次数。
17.在一种实施方式中,所述缺失处理单元控制向l2 cache发送缺失请求的时间,使得整个非阻塞缺失处理模块达到最高的效率。
18.在一种实施方式中,所述缺失流水线单元用于依次处理多个访问l2cache的缺失请求,并通过流水线的方式减少平均访问l2 cache的时间。
19.在一种实施方式中,所述缺失流水线单元划分为七个周期;
20.第一周期:发送缺失请求,所述第一周期中l1 d-cache向l2 cache发送缺失请求指令,l2 cache获取缺失指令中的地址信息;
21.第二周期:读取l2 cache的tag,所述第二周期中根据第一周期中获得的缺失数据地址信息,将l2 cache的tag信息读取出;
22.第三周期:判断是否在l2 cache中命中,所述第三周期中,将所述第二周期读取的l2 cache的tag信息与缺失请求指令中的tag信息进行对比;若相同,则代表缺失请求在l2 cache中命中,需要将所需数据从l2 cache存储体中读取出来;
23.第四周期:快慢时钟同步,l2 cache存储体工作的时钟频率为外部处理器时钟频率的一半,所述第四周期用于同步l2 cache与处理器的时钟;
24.第五周期:读取l2 cache数据,由第四周期可知,从l2 cache存储体读取数据需要耗费2个处理器的时钟周期,因此所述第五周期是读出l2 cache的第一个时钟周期;
25.第六周期:读取l2 cache数据,所述第六周期为读出l2 cache第二个时钟周期;
26.第七周期:l2 cache向l1 d-cache返回数据。
27.本发明提供的一种非阻塞数据cache结构,具有以下有益效果:
28.(1)可以在处理器访问d-cache发生缺失时不中断流水线,同时支持连续处理多次缺失请求,并通过将多条相关的缺失请求合并为一次缺失请求的方法,提升非阻塞cache的性能;
29.(2)发明并使用了减少流水线气泡策略,在向下一级存储器请求数据的过程中可以缩短平均访问时间;
30.(3)本发明的缺失流水线划分为八站,使用减少气泡的流水线策略后可以实现同一时钟周期最多同时处理六站数据内容,流水线利用率达到了60.4%。
附图说明
31.图1为本发明提供的一种非阻塞数据cache结构框图;
32.图2为本发明中缺失处理单元的示意图;
33.图3位本发明中缺失流水线单元的时序图。
具体实施方式
34.以下结合附图和具体实施例对本发明提出的一种非阻塞数据cache结构作进一步详细说明。根据下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
35.本发明提供了一种非阻塞数据cache结构,如图1所示,采用两级cache结构,l1数据高速缓存(即l1 d-cache)的大小为32kb,cache块大小为64位,采用两路组相联结构。l2 cache的总容量为1mb,l2 cache的总线接口位宽为256位。l1 d-cache的写入策略是写回不分配,也就是如果l1 d-cache写命中时数据只会写入到l1 d-cache,此时对于l2 cache来说不会有任何操作;直到l1 d-cache由于读缺失的情况下,才会将l1 d-cache的数据写入到l2 cache中。外部处理器发出的d-cache数据访存指令如果在l1 d-cache命中,处理器流水线不会被停止,d-cache数据将从l1 d-cache直接取出并送入处理器的内核进行运算。如果在l1 d-cache中没有命中,那么l1 d-cache会向l2 cache的缓存发送缺失请求。如果缺失请求为写缺失,写缺失数据将被写入l2 cache的写缓存中,在后续处理过程中l2 cache将处理该缺失请求;如果缺失请求为读缺失,l2 cache会比对读缺失请求中的标签(tag)信息判断是否在l2 cache中命中,若命中则直接向l1 d-cache返回数据。
36.上述已经说到非阻塞数据cache结构包括了数据访存模块以及非阻塞缺失处理模块,下面对这两个模块实现方式进行说明。
37.数据访存模块主要针对从处理器传入到l1 d-cache的加载请求指令进行处理。其中包含一条三级流水线:第一级读标签操作(tag),第二级读数据操作,第三级数据选择操作。如果在l1 d-cache中命中,数据将从l1 d-cache直接返回给处理器内核;如果在l1 d-cache中没有命中,缺失指令将送入所述非阻塞缺失处理模块。在从非阻塞缺失处理模块拿到所需的缺失数据后会进入一条四级流水线:第一级读标签操作(tag)、第二级读数据操作、第三级数据选择操作、第四级数据写入操作到l1 d-cache。最后,若需要替换l1 d-cache,则会将脏块写回到l2 cache。
38.非阻塞缺失处理模块主要由缺失处理单元和一条缺失流水线单元组成。图2为所述缺失处理单元的示意图,用于保存多条缺失指令,主要由一个缺失处理寄存器堆和缺失处理状态机实现。所述缺失处理寄存器堆分为两个部分,第一个部分是寄存器主体,用于保存首次缺失的指令以及明确当前正在处理的缺失指令,包括有效位、数据块地址、是否处理等内容;第二部分是访存指令表格,用于保存缺失指令的详细信息,包括有效位、寄存器信息、指令类型、数据偏移等内容。所述缺失处理单元工作机制如下:当缺失请求产生时,缺失处理单元首先查看所述非阻塞缺失处理模块内部是否已经记录了与缺失请求相同的块地址,若没有在当前所述非阻塞缺失处理模块中到与缺失请求相同的地址,那么这次缺失将被标记为首次缺失;如果在缺失处理单元中没有到与缺失请求相同的块地址,则代表此次缺失是再次缺失,该缺失请求的块地址正在被l2 cache处理,此时只需要等待l2 cache处理完毕从下一级存储取回所需数据即可。非阻塞处理模块通过将多条缺失请求合并的方式,可以减少重复的缺失请求,提高缓存效率。
39.本发明在l1 d-cache和l2 cache之间实现了一条缺失流水线单元,l1 d-cache发往l2 cache的缺失请求都通过这一条缺失流水线单元处理。该缺失流水线单元可以依次处理多个互不相关的缺失请求指令,缺失流水线单元的插入使得多个缺失可以重叠处理,减少了l2 cache处理缺失请求的平均时间。普通的流水线有“气泡”过多的问题,即流水线中存在大量空闲“节拍”,导致流水线的效率很低。在本发明中使用减少流水线气泡策略,首先将缺失流水线单元划分为7个周期:
40.第一周期:发送缺失请求。该周期中l1 d-cache向l2 cache发送缺失请求指令,l2 cache获取缺失指令中的地址信息。
41.第二周期:读取l2 cache的tag。该周期中根据第一周期中获得的缺失数据地址信息,将l2 cache的tag信息读取出来。
42.第三周期:判断是否在l2 cache中命中。该周期中,将上一周期读取的l2 cache的tag信息与缺失请求指令中的tag信息进行对比。若相同,则代表缺失请求在l2 cache中命中,需要将所需数据从l2 cache存储体中读取出来。
43.第四周期:快慢时钟同步。在本发明中,l2 cache存储体工作的时钟频率为外部处理器时钟频率的一半,因此本周期的作用是同步l2 cache与处理器的时钟。
44.第五周期:读取l2 cache数据。由第四周期可知,从l2 cache存储体读取数据需要耗费2个处理器的时钟周期,因此第五周期是读出l2 cache的第一个时钟周期。
45.第六周期:读取l2 cache数据。第六周期为读出l2 cache第二个时钟周期。
46.第七周期:l2 cache向l1 d-cache返回数据。
47.图3为缺失流水线单元处理10个缺失请求的时序图,其中miss_4、miss_5、miss_6这三个缺失请求相较于miss_1、miss_2、miss_3要晚一个时钟周期。有6个缺失请求在第一个时钟周期中工作,在第六个时钟周期时,前三个缺失请求都已退出流水线。等待一个时钟周期后非阻塞缺失处理模块会按顺序连续将三个缺失指令miss_7、miss_8、miss_9分三个时钟周期送入缺失流水线单元进行处理。所述缺失流水线单元通过使用一种减少流水线气泡的策略,减少流水线中空闲的时钟周期,最大程度地实现每一时钟周期都有向下一级存储器访问数据的缺失请求参与运作,提升了流水线的效率。
48.上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

技术特征:


1.一种非阻塞数据cache结构,其特征在于,包括数据访存模块、非阻塞缺失处理模块;所述数据访存模块用于处理外部的处理器传递来的访存指令,并将加载流水线划分为3级,主流水线划分为4级;所述非阻塞缺失处理模块用于处理多个缺失指令,并实现多个缺失指令向下一级存储器请求数据的流水处理。2.如权利要求1所述的非阻塞数据cache结构,其特征在于,所述加载流水线包括读标签操作、读数据操作和数据选择操作;所述主流水线包括读标签操作、读数据操作、数据选择操作和数据写入操作;所述数据写入操作连接l1 d-cache,所述加载流水线中的读标签操作与所述l1 d-cache互连;所述非阻塞缺失处理模块包括缺失处理单元和缺失流水线单元,所述缺失处理单元与所述主流水线中的读标签操作连接;所述加载流水线中的数据选择操作与所述缺失处理单元连接;所述缺失流水线单元的数据流入口与所述缺失处理单元互连,数据流出口与l2 cache互连。3.如权利要求2所述的非阻塞数据cache结构,其特征在于,所述数据访存模块判断访存指令请求加载的d-cache数据是否被命中,若命中则根据访存指令内的地址信息直接将命中的d-cache数据返回给处理器的内核,若未命中则将缺失指令传入所述非阻塞缺失处理模块中的缺失处理单元。4.如权利要求3所述的非阻塞数据cache结构,其特征在于,所述非阻塞缺失处理模块在请求加载d-cache数据发生缺失时,对缺失的请求进行处理,缩减缺失指令向下发送读请求的次数以达到降低l2 cache访问时长的目的。5.如权利要求4所述的非阻塞数据cache结构,其特征在于,所述缺失处理单元用于保存多条缺失指令,通过判断一条缺失指令是首次缺失还是再次缺失,通过合并相关的缺失指令减少重复的缺失访问次数。6.如权利要求5所述的非阻塞数据cache结构,其特征在于,所述缺失处理单元控制向l2 cache发送缺失请求的时间,使得整个非阻塞缺失处理模块达到最高的效率。7.如权利要求6所述的非阻塞数据cache结构,其特征在于,所述缺失流水线单元用于依次处理多个访问l2 cache的缺失请求,并通过流水线的方式减少平均访问l2 cache的时间。8.如权利要求7所述的非阻塞数据cache结构,其特征在于,所述缺失流水线单元划分为七个周期;第一周期:发送缺失请求,所述第一周期中l1 d-cache向l2 cache发送缺失请求指令,l2 cache获取缺失指令中的地址信息;第二周期:读取l2 cache的tag,所述第二周期中根据第一周期中获得的缺失数据地址信息,将l2 cache的tag信息读取出;第三周期:判断是否在l2 cache中命中,所述第三周期中,将所述第二周期读取的l2 cache的tag信息与缺失请求指令中的tag信息进行对比;若相同,则代表缺失请求在l2 cache中命中,需要将所需数据从l2 cache存储体中读取出来;
第四周期:快慢时钟同步,l2 cache存储体工作的时钟频率为外部处理器时钟频率的一半,所述第四周期用于同步l2 cache与处理器的时钟;第五周期:读取l2 cache数据,由第四周期可知,从l2 cache存储体读取数据需要耗费2个处理器的时钟周期,因此所述第五周期是读出l2cache的第一个时钟周期;第六周期:读取l2 cache数据,所述第六周期为读出l2 cache第二个时钟周期;第七周期:l2 cache向l1 d-cache返回数据。

技术总结


本发明公开一种非阻塞数据Cache结构,属于计算机硬件领域,包括数据访存模块和非阻塞缺失处理模块。本发明通过使用非阻塞数据Cache结构,可以在发生处理器请求加载高速缓存数据缺失时不暂停数据加载流水线,从而不阻塞处理器,处理器得以执行后续的指令,并且支持连续地处理多条无关的缺失指令,在一定程度上可以掩盖高速缓存数据缺失带来的处理器缺失代价。另外,本发明通过优化非阻塞缺失处理模块,减少缺失流水线单元中的气泡,大大提升了缺失流水线单元的效率,进一步地提升了处理器数据高速缓存的性能。器数据高速缓存的性能。器数据高速缓存的性能。


技术研发人员:

王天烨 钱荣 朱可强 邵健 秦亦灵

受保护的技术使用者:

中电科申泰信息科技有限公司

技术研发日:

2022.08.24

技术公布日:

2022/11/18

本文发布于:2024-09-20 11:57:09,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/1824.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:缺失   数据   所述   流水线
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议