平码五不中公式规律
  • / 16
  • 下载费用:30 金币  

内存数据预取方法和装置.pdf

关 键 ?#21097;?/dt>
内存 数据 方法 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
摘要
申请专利号:

CN201410157970.2

申请日:

2014.04.18

公开号:

CN103914394A

公开日:

2014.07.09

当前法律状态:

授权

有效性:

有权

法?#19978;?#24773;: 授权|||实质审查的生效IPC(主分类):G06F 12/02申请日:20140418|||公开
IPC分类号: G06F12/02; G06F12/08 主分类号: G06F12/02
申请人: 龙芯中科技术有限公司
发明人: 黄帅; 王焕东; 陈新科; 陈厦
地址: 100095 北京市海淀区中关村环保科技示范园龙芯产业园2号楼
优?#28909;ǎ?/td>
专利代理机构: 北京同立钧成知识产权代理有限公司 11205 代理人: 刘芳
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201410157970.2

授权公告号:

103914394B||||||

法律状态公告日:

2017.06.23|||2014.08.06|||2014.07.09

法律状态类?#20572;?/td>

授权|||实质审查的生效|||公开

摘要

本发明提供一种内存数据预取方法和装置。该方法包括:向内存发送预取命令;将N个预取地址分别写入一个N项?#28909;?#20808;出队列FIFO的每一项中,其中,N≥1;从所述内存一次获取存储在所述N个预取地址的N个数据项;将所述N个数据项存储于所述N项FIFO的每一项中。通过一个预取命令就可以将一个N项FIFO填满,可极大的减少现有技术中来自多个FIFO的多个访存请求交叉冲突的问题,相对于现有技术的方案最多可以减少N-1次页冲突次数,从而可极大的缩短内存数据返回时延,减少内存功率的消耗。

权利要求书

权利要求书
1.  一种内存数据预取方法,其特征在于,包括:
向内存发送预取命令;
将N个预取地址分别写入一个N项?#28909;?#20808;出队列FIFO的每一项中,其中,N≥1;
从所述内存一次获取存储在所述N个预取地址的N个数据项;
将所述N个数据项存储于所述N项FIFO的每一项中。

2.  根据权利要求1所述的方法,其特征在于,所述将N个预取地址分别写入一个N项FIFO的每一项中,包括:
将所述N个预取地址分别写入所述N项FIFO的N个地址存储单元中,所述N个地址存储单元中设有与所述N个预取地址对应的N个地址有效位;并将与所述N个预取地址对应的所述N个地址有效位均置为有效;
相应的,所述将所述N个数据项存储于所述N项FIFO的每一项中,包括:
将所述N个数据项分别存储于所述N项FIFO的N个数据存储单元中,所述N个数据存储单元中设有与所述N个数据项对应的N个数据有效位;并将与所述N个数据项对应的所述N个数据有效位置为有效。

3.  根据权利要求2所述的方法,其特征在于,还包括:
接收高速缓存缺失命令,所述高速缓存缺失命令中包含缺失地址;
若判断出所述缺失地址与所述N个地址存储单元中的首个预取地址相同,且所述首个预取地址对应的地址有效位为有效,则判定为命中预取数据;
将所述首个预取地址所对应的地址有效位置为无效。

4.  根据权利要求3所述的方法,其特征在于,所述将所述首个预取地址所对应的地址有效位置为无效之后,还包括:
若与所述缺失地址相同的所述首个预取地址的地址有效位为无效,且与所述首个预取地址对应的数据项的数据有效位为有效,则将所述数据项返回高速缓冲存储器;
在将所述数据项返回所述高速缓冲存储器后,将所述数据项对应的数据有效位置为无效。

5.  根据权利要求3所述的方法,其特征在于,还包括:
若判断出所述缺失地址与所述N个地址存储单元中的首个预取地址不相同,则判定为没有命中预取数据。

6.  根据权利要求2-5?#25105;?#25152;述的方法,其特征在于,所述向内存发送预取命令包括:
判断出所述N个预取地址对应的地址有效位均为无效,且所述N个数据项的对应的数据有效位均为无效?#20445;?#21521;所述内存发送所述预取命令。

7.  一种内存数据预取装置,其特征在于,包括:
发送模块,用于向内存发送预取命令;
写入模块,用于将N个预取地址分别写入一个N项?#28909;?#20808;出队列FIFO的每一项中,其中,N≥1;
获取模块,用于从所述内存一次获取存储在所述N个预取地址的N个数据项;
存储模块,用于将所述N个数据项存储于所述N项FIFO的每一项中。

8.  根据权利要求7所述的装置,其特征在于,还包括:置位模块;
其中,所述写入模块具体用于将所述N个预取地址分别写入所述N项FIFO的N个地址存储单元中,所述N个地址存储单元中设有与所述N个预取地址对应的N个地址有效位,所述置位模块将与所述N个预取地址对应的所述N个地址有效位均置为有效;
相应的,所述存储模块具体用于将所述N个数据项分别存储于所述N项FIFO的N个数据存储单元中,所述N个数据存储单元中设有与所述N个数据项对应的N个数据有效位,所述置位模块将与所述N个数据项对应的所述N个数据有效位置为有效。

9.  根据权利要求8所述的装置,其特征在于,所述装置还包括接收模块,用于接收高速缓存缺失命令,所述高速缓存缺失命令中包含缺失地址;
所述装置还包括判断模块,用于在判断出所述缺失地址与所述N个地址存储单元中的首个预取地址相同,且所述首个预取地址对应的地址有效位为有效?#20445;?#21028;定为命中预取数据;所述置位模块还用于将所述首个预取地址对应的地址有效位置为无效。

10.  根据权利要求9所述的装置,其特征在于,所述装置还包括数据返回模块,用于当与所述缺失地址相同的所述首个预取地址的地址有效位为无 效,且与所述首个预取地址对应的数据项的数据有效位为有效?#20445;?#23558;所述数据项返回高速缓冲存储器;
所述置位模块还用于在所述数据返回模块将所述数据项返回所述高速缓冲存储器后,将所述数据项对应的数据有效位置为无效。

11.  根据权利要求9所述的装置,其特征在于,所述判断模块还用于在判断出所述缺失地址与所述N个地址存储单元中的所述首个预取地址不相同?#20445;?#21028;定为没有命中预取数据。

12.  根据权利要求8-11?#25105;?#25152;述的装置,其特征在于,所述发送模块具体用于在判断出所述N个预取地址的地址有效位均为无效,且所述N个数据项对应的数据有效位均为无效?#20445;?#21521;所述内存发送所述预取命令。

13.  一种内存数据预取装置,其特征在于,包括至少一个N项?#28909;?#20808;出队列FIFO,其中,N≥1,所述N项FIFO包括:
地址存储器,用于存储N个预取地址,以及分别与所述N个预取地址对应的N个地址有效位;
数据存储器,用于存储N个数据项,以及分别与所述N个数据项对应的N个数据有效位?#40644;?#20013;,所述N个数据项从内存中的所述N个预取地址中一次性获取。

14.  根据权利要求13所述的装置,其特征在于,当所述地址存储器中写入所述N个预取地址?#20445;?#25152;述N个地址有效位均置于有效状态?#22351;备?#36895;缓存的缺失地址与所述地址存储器中的首个预取地址相同,且所述首个预取地址对应的地址有效位处于有效状态?#20445;?#25152;述首个预取地址的地址有效位置为无效。

15.  根据权利要求13所述的装置,其特征在于,当所述数据存储器中写入所述N个数据项?#20445;?#25152;述N个数据有效位均置于有效状态;当与首个预取地址对应的数据项返回高速缓冲存储器后,所述数据项对应的数据有效位置为无效。

16.  根据权利要求13-15?#25105;?#25152;述的装置,其特征在于,当所述N个预取地址对应的N个地址有效位均为无效,且所述N个数据项的对应的N个数据有效位均为无效?#20445;?#25152;述内存数据预取装置向所述内存发送所述预取命令。

说明书

说明书内存数据预取方法和装置
技术领域
本发明涉及计算机存储技术,尤其涉及一种内存数据预取方法和装置。
背景技术
预取技术是利用处理器访存行为的时间和空间局部性,在处理器发生高速缓冲存储器缺失前预测需要的数据,并提前取回至离高速缓冲存储器较近的位置,在发生高速缓冲存储器缺失?#20445;?#20808;查看预取的地址,如果命中则直接返回数据,可以极大的缩小访存延迟,减少存储器缓存缺失引起的流水线停顿,从而提高系统的性能。
为了减小?#28304;?#29702;器?#24067;?#35774;计的影响,目前通常在内存控制器中增加流预取模块(stream buffer),其主要组成部分为一个?#28909;?#20808;出队列(FIFO,First Input First Output),FIFO一般包含N项,每一项包含一个地址存储单元,一个有效位和一个高速缓冲存储器?#26800;?#25968;据,如图1所示的FIFO包含4项,每一项包含一个地址存储单元,一个有效位和一个高速缓存行数据,每当检测到高速缓冲存储器缺失?#20445;瑂tream buffer向内存发出预取命令,以将下一高速缓冲存储器?#26800;?#25968;据预取至stream buffer,该预取过程将?#20013;?#21040;FIFO填满。
对于多组stream buffer结构,针对数据流的访存请求之间存在访存冲突?#20445;?#22810;个访存冲突的访存请求交叉访问内存将导致大量的页打开和页关闭操作,增加内存数据返回时延,同时增加内存功率消耗。
发明内容
本发明提供一种内存数据预取方法和装置,?#36816;?#30701;内存数据返回时延,减少内存功率的消耗。
第一方面,本发明提供一种内存数据预取方法,包括:
向内存发送预取命令;
将N个预取地址分别写入一个N项?#28909;?#20808;出队列FIFO的每一项中,其中,N≥1;
从所述内存一次获取存储在所述N个预取地址的N个数据项;
将所述N个数据项存储于所述N项FIFO的每一项中。
在第一方面的第一种可能的实现方式中,所述将N个预取地址分别写入一个N项FIFO的每一项中,包括:
将所述N个预取地址分别写入所述N项FIFO的N个地址存储单元中,所述N个地址存储单元中设有与所述N个预取地址对应的N个地址有效位;并将与所述N个预取地址对应的所述N个地址有效位均置为有效;
相应的,所述将所述N个数据项存储于所述N项FIFO的每一项中,包括:
将所述N个数据项分别存储于所述N项FIFO的N个数据存储单元中,所述N个数据存储单元中设有与所述N个数据项对应的N个数据有效位;并将与所述N个数据项对应的所述N个数据有效位置为有效。
根据第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:
接收高速缓存缺失命令,所述高速缓存缺失命令中包含缺失地址;
若判断出所述缺失地址与所述N个地址存储单元中的首个预取地址相同,且所述首个预取地址对应的地址有效位为有效,则判定为命中预取数据;
将所述首个预取地址所对应的地址有效位置为无效。
根据第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将所述首个预取地址所对应的地址有效位置为无效之后,还包括:
若与所述缺失地址相同的所述首个预取地址的地址有效位为无效,且与所述首个预取地址对应的数据项的数据有效位为有效,则将所述数据项返回高速缓冲存储器;
在将所述数据项返回所述高速缓冲存储器后,将所述数据项对应的数据有效位置为无效。
根据第一方面的第二种可能的实现方式,在第四种可能的实现方式中,还包括:
若判断出所述缺失地址与所述N个地址存储单元中的首个预取地址不相 同,则判定为没有命中预取数据。
结?#31995;?#19968;方面的第二种至第四种可能的实现方式,在第五种可能的实现方式中,所述向内存发送预取命令包括:
判断出所述N个预取地址对应的地址有效位均为无效,且所述N个数据项的对应的数据有效位均为无效?#20445;?#21521;所述内存发送所述预取命令。
第二方面,本发明提供一种内存数据预取装置,包括:
发送模块,用于向内存发送预取命令;
写入模块,用于将N个预取地址分别写入一个N项?#28909;?#20808;出队列FIFO的每一项中,其中,N≥1;
获取模块,用于从所述内存一次获取存储在所述N个预取地址的N个数据项;
存储模块;用于将所述N个数据项存储于所述N项FIFO的每一项中。
在第二方面的第一种可能的实现方式中,还包括:置位模块;
其中,所述写入模块具体用于将所述N个预取地址分别写入所述N项FIFO的N个地址存储单元中,所述N个地址存储单元中设有与所述N个预取地址对应的N个地址有效位,所述置位模块将与所述N个预取地址对应的所述N个地址有效位均置为有效;
相应的,所述存储模块具体用于将所述N个数据项分别存储于所述N项FIFO的N个数据存储单元中,所述N个数据存储单元中设有与所述N个数据项对应的N个数据有效位,所述置位模块将与所述N个数据项对应的所述N个数据有效位置为有效。
根据第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括接收模块,用于接收高速缓存缺失命令,所述高速缓存缺失命令中包含缺失地址;
所述装置还包括判断模块,用于在判断出所述缺失地址与所述N个地址存储单元中的首个预取地址相同,且所述首个预取地址对应的地址有效位为有效?#20445;?#21028;定为命中预取数据;所述置位模块还用于将所述首个预取地址对应的地址有效位置为无效。
根据第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括数据返回模块,用于当与所述缺失地址相同的所述首个预取 地址的地址有效位为无效,且与所述首个预取地址对应的数据项的数据有效位为有效?#20445;?#23558;所述数据项返回高速缓冲存储器;
所述置位模块还用于在所述数据返回模块将所述数据项返回所述高速缓冲存储器后,将所述数据项对应的数据有效位置为无效。
根据第二方面的第二种可能的实现方式,在第四种可能的实现方式中,所述判断模块还用于在判断出所述缺失地址与所述N个地址存储单元中的首个预取地址不相同?#20445;?#21028;定为没有命中预取数据。
结?#31995;?#20108;方面的第一种可能的实现方式至第四种可能的实现方式,在第五种可能的实现方式中,所述发送模块具体用于在判断出所述N个预取地址的地址有效位均为无效,且所述N个数据项对应的数据有效位均为无效?#20445;?#21521;所述内存发送所述预取命令。
第三方面,本发明提供一种内存数据预取装置,包括至少一个N项?#28909;?#20808;出队列FIFO,其中,N≥1,所述N项FIFO包括:
地址存储器,用于存储N个预取地址,以及分别与所述N个预取地址对应的N个地址有效位;
数据存储器,用于存储N个数据项,以及分别与所述N个数据项对应的N个数据有效位?#40644;?#20013;,所述N个数据项从内存中的所述N个预取地址中一次性获取。
在第三方面的第一种可能的实现方式中,当所述地址存储器中写入所述N个预取地址?#20445;?#25152;述N个地址有效位均置于有效状态?#22351;备?#36895;缓存的缺失地址与所述地址存储器中的首个预取地址相同,且所述首个预取地址对应的地址有效位处于有效状态?#20445;?#25152;述首个预取地址的地址有效位置为无效。
在第三方面的第二种可能的实现方式中,当所述数据存储器中写入所述N个数据项?#20445;?#25152;述N个数据有效位均置于有效状态;当与首个预取地址对应的数据项返回高速缓冲存储器后,所述数据项对应的数据有效位置为无效。
结?#31995;?#19977;方面至第三方面的第二种可能的实现方式,在第三种可能的实现方式中,当所述N个预取地址对应的N个地址有效位均为无效,且所述N个数据项的对应的N个数据有效位均为无效?#20445;?#25152;述内存数据预取装置向所述内存发送所述预取命令。
本发明提供的内存数据预取方法和装置,通过向内存发送预取命令;将 N个预取地址分别写入一个N项?#28909;?#20808;出队列FIFO的每一项中,其中,N≥1;从所述内存一次获取存储在所述N个预取地址的N个数据项;将所述N个数据项存储于所述N项FIFO的每一项中。通过一个预取命令就可以将一个N项FIFO填满,当内存数据预取装置中包含有多个FIFO?#20445;?#36825;种预取命令最多导致一次页冲突,可极大的减少现有技术中来自多个FIFO的多个访存请求交叉冲突的问题,相对于现有技术的方案最多可以减少N-1次页冲突次数,从而可极大的缩短内存数据返回时延,减少内存功率的消耗。
附图说明
图1为现有技术的流预取的模块中FIFO的结构示意图;
图2为本发明内存数据预取方法实施例一的流程图;
图3为本发明内存数据预取方法实施例二的流程图;
图4为本发明一实施例中FIFO中地址存储单元的结构示意图;
图5为本发明一实施例中FIFO中数据存储单元的结构示意图;
图6为本发明内存数据预取方法实施例三的流程图;
图7为本发明内存数据预取装置实施例一的结构示意图;
图8为本发明内存数据预取装置另一实施例的结构示意图;
图9为本发明内存数据预取装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提?#28388;?#33719;得的所有其他实施例,都属于本发明保护的范围。
图2为本发明内存数据预取方法实施例一的流程图。如图2所示,本实施例提供的方法具体可以由内存数据预取装置执行,内存数据预取装置可以设置在距离高速缓存较近的位置,例如可以设置在内存控制器上。本实施例提供的内存数据预取方法具体可?#22253;?#25324;:
步骤101、向内存发送预取命令,来一次性获取存储在内存中N个预取 地址中的数据,以在高速缓冲存储器缺失?#20445;?#21521;其提供数据。
步骤102、将N个预取地址分别写入一个N项FIFO的每一项中,其中,N≥1。
步骤103、从所述内存一次获取存储在所述N个预取地址的N个数据项。
步骤104、将所述N个数据项存储于所述N项FIFO的每一项中。
本实施例的技术方案,通过一个预取命令即可将一个N项FIFO填满,当内存数据预取装置中包含有多个FIFO?#20445;?#36825;种预取命令最多导致一次页冲突,可极大的减少现有技术中来自多个FIFO的多个访存请求交叉冲突的问题,相对于现有技术的方案最多可以减少N-1次页冲突次数,从而缩短内存数据返回时间,减少对正常访存请求和其他预取命令的影响。
图3为本发明内存数据预取方法实施例二的流程图。如图3所示,在上述实施例的基础上,本实施例提供的方法中,上述步骤102具体可以为:
步骤202、将所述N个预取地址分别写入所述N项FIFO的N个地址存储单元中,所述N个地址存储单元中设有与所述N个预取地址对应的N个地址有效位;并将与所述N个预取地址对应的所述N个地址有效位均置为有效。
在本发明的一个实施例中,如图4所示,其为项数为4的FIFO中包括的4个地址存储单元,每个地址存储单元中包括预取地址和对应的地址有效位。
具体地,向内存发送预取命令后,会将4个预取地址一一写入4个地址存储单元,即,图4中的地址存储单元41中写入预取地址i,地址存储单元42中写入预取地址i+1,地址存储单元43中写入预取地址i+2和地址存储单元44中写入预取地址i+3;并将相应的地址有效位a均设置为有效。
在一个实施例中,例如可以以a为1来表示地址有效位为有效,a为0来表示地址有效位为无效。
相应的,上述步骤104可以为:
步骤203、将所述N个数据项分别存储于所述N项FIFO的N个数据存储单元中,所述N个数据存储单元中设有与所述N个数据项对应的N个数据有效位;并将与所述N个数据项对应的所述N个数据有效位置为有效。
在本发明的一个实施例中,如图5所示,其为项数为4的FIFO中的4个数据存储单元,每个数据存储单元中包括数据项和对应的数据有效位。
具体地,从内存一次获取到存储在4个预取地址的4个数据项后,将4 个数据项分别存储在4项FIFO的4个数据存储单元中,并将对应的4个数据有效位b设置为有效,即,接收到图5中数据存储单元51中的数据项i,数据存储单元52中的数据项i+1,数据存储单元53中的数据项i+2和数据存储单元54中的数据项i+3?#20445;?#23558;相应的数据有效位b置为有效。
在一个实施例中,例如可以以b为1来表示数据有效位为有效,b为0来表示数据有效位为无效。
对于数据存储单元而言,当数据项?#29615;?#22238;给高速缓冲存储器后,其有效位才会被置为无效,即,在将数据返回给高速缓冲存储器后,将相应的有效位置为0。
上述步骤101具体可以为:
步骤201、判断出所述N个预取地址对应的地址有效位均为无效,且所述N个数据项的对应的数据有效位均为无效?#20445;?#21521;所述内存发送所述预取命令。
具体的,为了防止数据溢出,在判断出N个预取地址的地址有效位均为无效,且N个数据项的数据有效位均为无效?#20445;?#21521;内存发送预取命令。也就是说,内存数据预取装置在判断出FIFO中的所有预取地址被命中、且所有的数据项中的数据?#29615;?#22238;给高速缓冲存储器后,向内存发送预取命令。
本实施例的技术方案,通过一个预取命令就可以将一个FIFO填满,并将预取地址与数据项分开存放,并分别设置地址有效位和数据有效位,不同于现有技术中stream buffer的预取地址与数据项共用一个有效位,且有效位只有在内存数据返回stream buffer后才被置为有效,解决了现有技术中,若高速缓存缺失命令到来时内存数据还未返回stream buffer,则会直接到内存中取数据而导致的同一预取地址的数据取两遍,且stream buffer中的数据也不会被使用,浪费内存带宽的问题,从而缩短内存数据返回时延,减少内存功率的消耗。
图6为本发明内存数据预取方法实施例三的流程图。如图6所示,在上述实施例的基础上,本实施例提供的方法进一?#20132;?#21487;?#22253;?#25324;:
步骤301、接收高速缓存缺失命令,所述高速缓存缺失命令中包含缺失地址。
步骤302、若判断出所述缺失地址与所述N个地址存储单元中的首个预 取地址相同,且所述首个预取地址对应的地址有效位为有效,则判定为命中预取数据。
可以理解的是,若判断出所述缺失地址与所述N个地址存储单元中的首个预取地址不相同,则判定为没有命中预取数据。
也就是说,内存数据预取装置在判定预取数据是否被命中?#20445;?#38656;要将缺失地址与N个地址存储单元中的首个预取地址(例如为首个地址存储单元的预取地址)进行比较,若缺失地址与首个预取地址相同,且首个预取地址有效,则认为预取数据被命中。
步骤303、将所述首个预取地址所对应的地址有效位置为无效。
具体的,地址有效位只有在接收到高速缓存缺失命令后,判断出缺失地址与N个地址存储单元中的首个预取地址相同,且首个预取地址的地址有效位为有效,即,命中预取数据?#20445;?#25165;会被置为无效,即,在命中预取数据后,首个预取地址的地址有效位才会被置为0。
步骤304、若与所述缺失地址相同的所述首个预取地址的地址有效位为无效,且与所述首个预取地址对应的数据项的数据有效位为有效,则将所述数据项返回高速缓冲存储器。
步骤305、在将所述数据项返回所述高速缓冲存储器后,将所述数据项对应的数据有效位置为无效。
需要说明的是,本实施例中,只有在预取地址已经被命中且数据已经从内存返回到内存数据预取装置后,才可将数据项中的数据返回高速缓冲存储器。
本实施例的技术方案,在接收到高速缓存缺失命令后,若判?#20808;?#22833;地址与N个地址存储单元中的首个预取地址相同,且首个预取地址有效,则判定为命中预取数据,并在命中预取数据后,将首个预取地址的地址有效位置为无效。将预取地址与数据项分开存放,并分别设置有效位,不同于现有技术中stream buffer的预取地址与数据项共用一个有效位,且有效位只有在内存数据返回stream buffer后才被置为有效,解决了现有技术中,若高速缓存缺失命令到来时内存数据还未返回stream buffer,则会直接到内存中取数据而导致的同一预取地址的数据取两遍,且stream buffer中的数据也不会被使用,浪费内存带宽的问题,从而缩短内存数据返回时延,减少内存功率的消耗。
图7为本发明内存数据预取装置实施例一的结构示意图。如图7所示,本实施例提供的内存数据预取装置10具体可?#22253;?#25324;:
发送模块11,用于向内存发送预取命令;
写入模块12,用于将N个预取地址分别写入一个N项FIFO的每一项中,其中,N≥1;
获取模块13,用于从所述内存一次获取存储在所述N个预取地址的N个数据项;
存储模块14,用于将所述N个数据项存储于所述N项FIFO的每一项中。
在另一实施例中,所述内存数据预取装置10还可?#22253;?#25324;置位模块15,如图8所示?#40644;?#20013;,所述写入模块12具体可以用于将所述N个预取地址分别写入所述N项FIFO的N个地址存储单元中,所述N个地址存储单元中设有与所述N个预取地址对应的N个地址有效位,所述置位模块15将与所述N个预取地址对应的所述N个地址有效位均置为有效。
相应的,所述存储模块14具体可以用于将所述N个数据项分别存储于所述N项FIFO的N个数据存储单元中,所述N个数据存储单元中设有与所述N个数据项对应的N个数据有效位,所述置位模块15将与所述N个数据项对应的所述N个数据有效位置为有效。
进一步地,所述内存数据预取装置10还可?#22253;?#25324;接收模块16,用于接收高速缓存缺失命令,所述高速缓存缺失命令中包含缺失地址;判断模块17,用于在判断出所述缺失地址与所述N个地址存储单元中的首个预取地址相同,且所述首个预取地址对应的地址有效位为有效?#20445;?#21028;定为命中预取数据;所述置位模块15还可以用于将所述首个预取地址对应的地址有效位置为无效。所述判断模块17还可以用于在判断出所述缺失地址与所述N个地址存储单元中的首个预取地址不相同?#20445;?#21028;定为没有命中预取数据。
进一步,所述内存数据预取装置10还可?#22253;?#25324;数据返回模块18,用于当与所述缺失地址相同的所述首个预取地址的地址有效位为无效,且与所述首个预取地址对应的数据项的数据有效位为有效?#20445;?#23558;所述数据项返回高速缓冲存储器;所述置位模块15还可以用于在所述数据返回模块18将所述数据项返回所述高速缓冲存储器后,将所述数据项对应的数据有效位置为无效。
具体的,所述发送模块11具体可以用于在判断出所述N个预取地址的 地址有效位均为无效,且所述N个数据项对应的数据有效位均为无效?#20445;?#21521;所述内存发送所述预取命令。
需要说明的是,内存数据预取装置10可以设置在距离高速缓存较近的位置,例如可以设置在内存控制器上。
本实施例的内存数据预取装置,可用于执行上述方法实施例的技术方案,其实现原理及技术效果类似,此处不再赘述。
图9为本发明内存数据预取装置实施例二的结构示意图。如图9所示,本实施例提供的内存数据预取装置20具体可?#22253;?#25324;至少一个N项FIFO,其中,N≥1,所述N项FIFO包括:
地址存储器21,用于存储N个预取地址,以及分别与所述N个预取地址对应的N个地址有效位;数据存储器22,用于存储N个数据项,以及分别与所述N个数据项对应的N个数据有效位?#40644;?#20013;,所述N个数据项从内存中的所述N个预取地址中一次性获取。
具体的,地址存储器包括N个如图4所示的地址存储单元,当所述地址存储器21中写入所述N个预取地址?#20445;?#25152;述N个地址有效位均置于有效状态?#22351;备?#36895;缓存的缺失地址与所述地址存储器21中的首个预取地址相同,且所述首个预取地址对应的地址有效位处于有效状态?#20445;?#25152;述首个预取地址的地址有效位置为无效;数据存储器包括N个如图5所示的数据存储单元,当所述数据存储器22中写入所述N个数据项?#20445;?#25152;述N个数据有效位均置于有效状态;当与首个预取地址对应的数据项返回高速缓冲存储器后,所述数据项对应的数据有效位置为无效。
进一步地,当所述N个预取地址对应的N个地址有效位均为无效,且所述N个数据项的对应的N个数据有效位均为无效?#20445;?#25152;述内存数据预取装置20向所述内存发送所述预取命令。
也就是说,在本实施例中,将预取地址与数据项分开存放,并分别设置有效位,即,地址有效位和数据有效位。对于预取地址而言,在每次预取命令发出后,即将N个的预取地址同时写入地址存储器,并将N个预取地址对应的地址有效位均置为有效,例如,置为1;当N个预取地址中的某一个被命中后,其有效位才会被置为无效,例如,置为0。对于数据项而言,当对应某个数据项的内存数据从内存返回后,与该数据项对应的数据有效位被置 为有效,例如置为1,?#22791;?#25968;据发?#36879;?#39640;速缓冲存储器?#20445;?#19982;该数据项对应的数据有效位被置为无效,例如置为0。
需要说明的是,内存数据预取装置可以设置在距离高速缓存较近的位置,例如可以设置在内存控制器上。
本实施例的内存数据预取装置,可用于执行上述方法实施例的技术方案,其实现原理及技术效果类似,此处不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,?#23548;?#23454;现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或?#33268;?#30340;相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的?#38382;健?
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据?#23548;?#30340;需要选择其中的部?#21482;?#32773;全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用?#24067;?#30340;?#38382;?#23454;现,也可以采用?#24067;?#21152;软件功能单元的?#38382;?#23454;现。
上述以软件功能单元的?#38382;?#23454;现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地?#31169;?#21040;,为描述的方便和简洁,仅以上述各功能模块的划分进?#33455;?#20363;说明,?#23548;?#24212;用中,可以根据需要而将上述功能分 配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用?#36816;?#26126;本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修?#27169;?#25110;者对其中部?#21482;?#32773;全部技术特征进?#26800;?#21516;替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

关于本文
本文标题:内存数据预取方法和装置.pdf
链接地址:http://www.pqiex.tw/p-6115746.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
平码五不中公式规律 极速11选5是哪办的 股票融资技巧_杨方配资开户 近期股票行情大盘走势 河南十一选五基本走势图文库 体育彩票11选5开奖结果 516棋牌游戏大厅地址 超级大乐透17144开奖直播 波克棋牌老版本下载 3d组选389前后 三峡新材股票涨跌