store_buffermerge的实现方法及系统技术方案

技术编号:32785172 阅读:54 留言:0更新日期:2022-03-23 19:44
本发明专利技术涉及CPU技术领域,具体涉及一种store_buffer merge的实现方法及系统,包括store_buffer模块、pipeline模块、miss queue模块和refill模块。本发明专利技术对store数据提供一个时间窗口给后面的同一cacheline的store指令来merge,从而充分利用pipeline资源,把更多的pipeline资源给其他请求使用。从而提供CPU的整体性能。在store buffer entry项快用完的时候强制地让store buffer的entry项上Pipeline,而不再等待更年轻的store来merge;一个store buffer entry项被分配后,在一定的cycle数后,强制地让store buffer的entry项上Pipeline,而不再等待更年轻的store来merge,进而提供了CPU的整体性能。进而提供了CPU的整体性能。进而提供了CPU的整体性能。

【技术实现步骤摘要】
store_buffer merge的实现方法及系统


[0001]本专利技术涉及CPU
,具体涉及一种store_buffer merge的实现方法及系统。

技术介绍

[0002]store指令retire后,数据会保存在store_buffer中,根据数据的相关性,前后的几笔store指令的数据往往会是同一cacheline内部,如果每笔store指令都单独的去上pipeline,则占据pipeline的数量会很多,如果对store数据提供一个时间窗口给后面的同一cacheline的store指令来merge,这样多比store指令就可以merge在一起,这样就可以做到多个store指令在store_buffer中上Pipeline的次数大大降低,从而充分利用pipeline资源,把更多的pipeline资源给其他请求使用。从而提供CPU的整体性能。
[0003]如果提供merge的时间窗口太长,可能导致store_buffer的entry被占满,而导致已经retire的数据不能正常的从store queue中保存到store_buffer中,从导致store queue的entry不能被deallocate,这会对CPU的整体性能有一定的影响,为了解决该问题,提出两种办法:(1)在store buffer entry项快用完的时候强制地让store buffer的entry项上Pipeline,而不再等待更年轻的store来merge。(2)一个store buffer entry项被分配后,在一定的cycle数后,强制地让store buffer的entry项上Pipeline,而不再等待更年轻的store来merge。

技术实现思路

[0004]针对现有技术的不足,本专利技术公开了一种store_buffer merge的实现方法及系统,用于解决上述问题。
[0005]本专利技术通过以下技术方案予以实现:
[0006]第一方面,本专利技术提供了一种store_buffer merge的实现方法,包括以下步骤:
[0007]S1初始化,Store指令从store queue进入store buffer后,判断store buffer entry项的使用情况,并做相应处理;
[0008]S2store_buffer发出read请求,上pipeline,判断在D_cache中命中M/E态或S态,并做相应处理;
[0009]S3miss queue entry项向L2发出reload请求,L2返回reload E态数据的同时唤醒在store buffer中的那边miss命中S态的store_buffer entry项;
[0010]S4reload数据回填refill_buffer,上pipeline,在store_buffer中检测是否有同一cacheline的数据需要store,并做相应处理。
[0011]更进一步的,所述方法中,如果store buffer entry项快用完,则强制要求store指令尽快进入pipeline流水,将store buffer entry空出来。
[0012]更进一步的,所述方法中,如果store buffer entry项还有2个以上的entry项没有还处于empty,则给新进的entry延时一段时间后再去上pipeline,后面如果出现相同地址的store指令和该entry则进行merge。
[0013]更进一步的,所述方法中,如果在D_cache中命中M/E态,则store_buffer接着发出write的请求,将数据写入D_cache中,并将cacheline的状态修改为E态。
[0014]更进一步的,所述方法中,如果在D_cache中没有命中,或命中的时S态,则向miss queue中请求分配一个entry项。
[0015]更进一步的,所述方法中,L2返回reload E态数据的同时唤醒在store buffer中的那边miss命中S态的store_buffer entry项,且给refill上pipeline几个时钟周期的merge窗口后,进行唤醒store_buffer entry项并上pipeline。
[0016]更进一步的,所述方法中,reload数据回填refill_buffer后,refill立马上pipeline,此时pipeline在store_buffer中检测是否有同一cacheline的数据需要store,如果存在则会将store的数据一同merge进来一同写入D_cache中,同时deallocation掉store_buffer和refill_buffer entry项。
[0017]第二方面,本专利技术提供了一种store_buffer merge的实现系统,所述系统用于实现第一方面所述的store_buffer merge的实现方法,包括store_buffer模块、pipeline模块、miss queue模块和refill模块。
[0018]更进一步的,所述store_buffer模块,用于在store queue完成sta和std操作后,得到毕业模块的确认该store指令的store数据可以往memory中写时,就会将该store的数据写入store_buffer中;
[0019]store_buffer则根据在D_cache的命中状态,确定是否直接将store的数据写入D_cache还是请求分配missq entry项,然后等L2返回reload数据,由refill上pipeline,和refill数据一同merge写入D_cache中;
[0020]所述pipeline模块,用于指令上pipeline之后的数据访问,如果Miss新missq中请求分配一个entry项,refill上pipeline,如果store_buffer中有和该地址一致的数据需要store,则两数据进行merge后一同写入D_cache中;
[0021]所述miss queue模块,用于完成D_cache miss后向l2发出reload的请求;
[0022]所述refill模块,用于接收L2返回的数据后,refill_buffer上pipeline。
[0023]本专利技术的有益效果为:
[0024]本专利技术对store数据提供一个时间窗口给后面的同一cacheline的store指令来merge,这样多比store指令就可以merge在一起,这样就可以做到多个store指令在store_buffer中上Pipeline的次数大大降低,从而充分利用pipeline资源,把更多的pipeline资源给其他请求使用。从而提供CPU的整体性能。
[0025]本专利技术在store buffer entry项快用完的时候强制地让store buffer的entry项上Pipeline,而不再等待更年轻的store来merge;一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种store_buffer merge的实现方法,其特征在于,所述方法包括以下步骤:S1初始化,Store指令从store queue进入store buffer后,判断store buffer entry项的使用情况,并做相应处理;S2store_buffer发出read请求,上pipeline,判断在D_cache中命中M/E态或S态,并做相应处理;S3miss queue entry项向L2发出reload请求,L2返回reload E态数据的同时唤醒在store buffer中的那边miss命中S态的store_buffer entry项;S4reload数据回填refill_buffer,上pipeline,在store_buffer中检测是否有同一cacheline的数据需要store,并做相应处理。2.根据权利要求1所示的一种store_buffer merge的实现方法,其特征在于,所述方法中,如果store buffer entry项快用完,则强制要求store指令尽快进入pipeline流水,将store buffer entry空出来。3.根据权利要求2所示的一种store_buffer merge的实现方法,其特征在于,所述方法中,如果store buffer entry项还有2个以上的entry项没有还处于empty,则给新进的entry延时一段时间后再去上pipeline,后面如果出现相同地址的store指令和该entry则进行merge。4.根据权利要求1所示的一种store_buffer merge的实现方法,其特征在于,所述方法中,如果在D_cache中命中M/E态,则store_buffer接着发出write的请求,将数据写入D_cache中,并将cacheline的状态修改为E态。5.根据权利要求4所示的一种store_buffer merge的实现方法,其特征在于,所述方法中,如果在D_cache中没有命中,或命中的时S态,则向miss queue中请求分配一个entry项。6.根据权利要求1所示的一种store_buffer merge的实现方法,其特征在于,所述方法中,L2返回reload E态数据的同时唤醒在store buffer中的那边miss命中S态的store_b...

【专利技术属性】
技术研发人员:李长林刘磊
申请(专利权)人:广东赛昉科技有限公司
类型:发明
国别省市:

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

1