一种数据预取方法和装置与流程

文档序号:19042567发布日期:2019-11-05 23:17阅读:184来源:国知局
一种数据预取方法和装置与流程

本发明涉及通信领域,尤其涉及一种数据预取方法和装置。



背景技术:

在硬件多线程处理器中数据传输开销性能影响很大,那么,如何降低数据传输开销对性能的影响成为学术界和工业界都致力于解决的问题。现有解决方案主要是通过数据预取来降低数据传输开销。然而,现有的数据预取都是通过访存请求和预取指令而实现,即在接收到访存请求后,需要等待处理单元发送的预取指令,然后再响应该预取指令,以实现对数据的预取。然而,在实际中发现在上述数据预取技术由于需要接收处理单元发送的预取指令,从而会导致数据预取的效率较低。



技术实现要素:

本发明实施例提供了一种数据预取方法和装置,可以提高数据预取的效率。

第一方面,本发明实施例提供一种数据预取方法,包括:

在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;

若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

在第一方面的第一种可能的实现方式中,所述判断所述访存请求所访问的数据块是否满足预先设置的推送条件,包括:

判断所述访存请求所访问的数据块是否有被访存请求访问的记录,若是,则更新所述数据块对应的计数器,并判断所述数据块对应的计数器当前值是否超过预设阈值,若是,则确定所述数据块满足预先设置的推送条件。

结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述访存请求所访问的数据块包括至少两个数据块;

所述判断所述访存请求所访问的数据块是否满足预先设置的推送条件,包括:

针对所述访存请求所访存的每个数据块判断是否满足预先设置的推送条件;

所述若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块,包括:

若所述至少两个数据块中存在满足所述推送条件的目标数据块时,从所述目标数据块所在的下一级存储中读取所述目标数据块,并将所述目标数据块推送到所述上一层模块。

结合第一方面或者第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述方法还包括:

当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若是,则禁止所述下一级存储向所述上一层模块进行所述数据块的数据回填,并向所述上一层模块发送回填确认信号。

结合第一方面,在第一方面的第四种可能的实现方式中,所述在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件,包括:

当存储控制器接收到所述上一层模块发送的所述访存请求时,获取所述访存请求所访问的数据块的内存地址,并判断所述内存地址是否满足预先设置的推送条件;

所述若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块,包括:

若所述内存地址满足所述推送条件时,向所述内存地址所在的下一级存储发送包括所述内存地址的内容分发访存请求,以根据所述内容分发访存请求将所述数据块推送到所述上一层模块。

第二方面,本发明实施例提供一种数据预取装置,包括:判断单元和推送单元,其中:

所述判断单元,用于在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;

所述推送单元,用于若所述判断单元判断所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

在第二方面的第一种可能的实现方式中,所述判断单元用于判断所述访存请求所访问的数据块是否有被访存请求访问的记录,若是,则更新所述数据块对应的计数器,并判断所述数据块对应的计数器当前值是否超过预设阈值,若是,则确定所述数据块满足预先设置的推送条件。

结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述访存请求所访问的数据块包括至少两个数据块;

所述判断单元用于针对所述访存请求所访存的每个数据块判断是否满足预先设置的推送条件;

所述推送单元用于若所述判断单元判断所述至少两个数据块中存在满足所述推送条件的目标数据块时,从所述目标数据块所在的下一级存储中读取所述目标数据块,并将所述目标数据块推送到所述上一层模块。

结合第二方面或者第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述装置还包括:

发送单元,用于当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若是,则禁止所述下一级存储向所述上一层模块进行所述数据块的数据回填,并向所述上一层模块发送回填确认信号。

结合第二方面,在第二方面的第四种可能的实现方式中,所述判断单元用于当存储控制器接收到所述上一层模块发送的所述访存请求时,获取所述访存请求所访问的数据块的内存地址,并判断所述内存地址是否满足预先设置的推送条件;

所述推送单元用于若所述内存地址满足所述推送条件时,向所述内存地址所在的下一级存储发送包括所述内存地址的内容分发访存请求,以根据所述内容分发访存请求将所述数据块推送到所述上一层模块。

上述技术方案中,在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。这样可以实现在数据预取过程中只需要接收到访存请求就实现数据预取,而不需要像现有技术那样等待处理单元发送预取指令才可以进行数据预取,从而本发明实施例可以提高数据预取的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数据预取方法的流程示意图;

图2是本发明实施例提供的另一种数据预取方法的流程示意图;

图3是本发明实施例提供的一种数据块的信息示意图;

图4是本发明实施例提供的一种内容分发访存请求携带的信息示意图;

图5是本发明实施例提供的一种处理器的结构示意图;

图6是本发明实施例提供的一种数据预取装置的结构示意图;

图7是本发明实施例提供的另一种数据预取装置的结构示意图;

图8是本发明实施例的一种数据预取装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,图1是本发明实施例提供的一种数据预取方法的流程示意图,如图1所示,包括以下步骤:

101、在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件。

其中,上述上一层模块可以是寄存器,或者上述上一层模块可以是上述数据块所在的下一级存储的上一级存储,例如:上述数据块所在的下一级存储为缓存系统或者存储系统中的第2层,那么,上述上一层模块就可以是该缓存系统或者存储系统中的第1层。

另外,上述推送条件可以是预先设置的允许将数据块预取给上一层模块的允许条件。例如:当上述数据块被访存请求所访存的次数大于预设阈值时,则确定该数据块满足推送条件,或者当上述数据块为预先指定的特定数据块时,则确定该数据块满足推送条件等等,本实施例中,上述推送条件还可以根据用户或者设备需求而设定不同的推送条件,对此本实施例中不作限定。

102、若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

本实施例中,上述下一级存储可以任何存储有上述数据块的存储模块,例如:上述下一级存储可以是本地核的私有存储模块,或者上述下一级存储可以是非本地核的私有存储模块,例如:处理于同一存储级的远端存储模块。

通过上述步骤就可以实现在接收访存请求后,只需要对访存请求所访问的数据块进行推送条件的判断,当满足推送条件时,就可以将数据块推送给上一层模块,即实现将数据块预取给上一层模块,从而可以提高数据预取的效率。另外,由于本实施例中数据预取不是需要接收处理单元发送的预取指令,这样本实施例中的数据预取就不需要处理单元的控制,从而实现数据预取过程中数据存储逻辑自主的将数据自下往上推送。其中,上述处理单元可以是处理器中用于进行数据处理的处理单元。

本实施例中,上述方法可以应用于任何处理器芯片,例如:硬件多线程处理器。

本实施例中,在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。这样可以实现在数据预取过程中只需要接收到访存请求就实现数据预取,而不需要像现有技术那样等待处理单元发送预取指令才可以进行数据预取,从而本发明实施例可以提高数据预取的效率。

请参阅图2,图2是本发明实施例提供的另一种数据预取方法的流程示意图,如图2所示,包括以下步骤:

201、在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件,若是,则执行步骤202。

其中,上述访存请求可以是上一层模块发生数据缺失时发送的访存请求。另外,上述数据块可以理解为上述访存请求所访存的数据所有的数据块,且数据块可以理解为缓存块或者缓存行。

本实施例中,上述判断所述访存请求所访问的数据块是否满足预先设置的推送条件的步骤,可以包括:

判断所述访存请求所访问的数据块是否有被访存请求访问的记录,若是,则更新所述数据块对应的计数器,并判断所述数据块对应的计数器当前值是否超过预设阈值,若是,则确定所述数据块满足预先设置的推送条件。

其中,上述被访存请求访问的记录可以是本地记录的,任何访存请求所访存的记录,即该记录并不限定是上述上一层模块发送的访存请求访存的记录。上述更新所述数据块对应的计数器可以是将更新该计数器的计数值,例如:增1,或者更新所述数据块对应的计数器的计数状态。

该实施方式中,可以为每一个数据块配置一个计数器,该计数器用于记录数据块被访存请求访问的记录。另外,本实施例中,数据块被访存请求访存的次数还可以理解为数据块的热度(使用频度),这样可以理解当数据块的热度比较高时,才将数据块推送给上一层模块。

该实施方式中,当判断所述访存请求所访问的数据块没有被访存请求访问的记录时,则无法上述数据块为首次访问,可以将该数据块的内存地址插入到用于记录数据块的访问记录的部件中,例如:记录在热点数据识别部件中,该部件可以记录各数据块的访问记录,同时,还可以记录各数据块的(Status)值,其中,该状态值用于表示数据块是否满足推送条件。例如:如3所示,该部件中记录数据块的信息包括内存地址、计数器和状态值,其中,内存地址为数据块的内存地址,计数器表示数据块当前被访问的次数,状态值表示数据块是否满足推送条件。且上述部件可以是记录多个数据块的信息,那么,当上述数据块为首次访问时,可以按一定的规则插入到上述热点数据识别部件中,这里的插入规则可以是按优先级或者访问频度,也可以是按先进先出的规则。

202、从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

本实施例中,若上述数据块不满足上述推送条件时,本实施例中,可以结束流程,其中,附图中以结束流程为例进行举例。或者,若上述数据块不满足上述推送条件时,可以按照传统的预取技术对上述数据块进行预取。

本实施例中,上述访存请求所访问的数据块可以包括至少两个数据块;

上述判断所述访存请求所访问的数据块是否满足预先设置的推送条件的步骤,可以包括:

针对所述访存请求所访存的每个数据块判断是否满足预先设置的推送条件;

步骤202可以包括:

若所述至少两个数据块中存在满足所述推送条件的目标数据块时,从所述目标数据块所在的下一级存储中读取所述目标数据块,并将所述目标数据块推送到所述上一层模块。

该实施方式中可以实现当访存请求所访问的数据块为多个数据块时,可以对每个数据块进行推送条件的判断,从而选择出满足推送条件的数据块推送给上一层模块。

该实施方式中,上述从所述目标数据块所在的下一级存储中读取所述目标数据块,并将所述目标数据块推送到所述上一层模块的步骤可以包括:

向所述目标数据块所在的下一级存储发送携带有该目标数据块的内存地址的内容分发访存请求,所述下一级存储根据该内容分发访存请求将该目标数据推送给上述上一层模块。

另外,上述内容分发访存请求可以携带如图4所示的信息,如图4所示,该内容分发访存请求携带的硬件线程ID或者处理器核ID,其中,该硬件线程ID或者处理器核ID上述访存请求对应的硬件线程ID或者处理器核ID,以及还可以携带数据块的内存地址,以及操作类型信息,例如:Load类型表示数据块是只读共享,即当前分发预取的数据块只能进行只读共享的操作。

本实施例中,上述方法还可以包括如下步骤:

203、当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若是,则禁止所述下一级存储向所述上一层模块进行所述数据块的数据回填,并向所述上一层模块发送回填确认信号。

其中,上述数据回填可以上一层模块发生数据缺失时,由该上一层模块的下一级存储将缺失的数据发送给上一层模块的过程。另外,上述数据块当前是否正在往上推送可以理解为上述数据块当前是否正在往上述上一层模块推送,若是,则由于上一层模块缺失的数据块当前正在往上推送,从而可以不需要进行数据回填,但需要向上一层模块发送回填确认(Ack)信号,以用于唤醒可能被暂停的上一层模块,且还可以将回填数据选通信号设置为信号。

另外,该实施方式中,当判断出上述数据块满足上述推送条件时,可以为该数据块的状态(Status)值设置为有效,当数据块的状态值为有效时,则可以确定该数据块正在往上推送。若数据块的状态值为无效,则无法该数据块没有往上推送,例如:数据块不满足上述推送条件。

该实施方式中,当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若否,则向上一层模块回填该数据块。例如:数据块的状态值为无效时,就可以判断所述数据块当前没有往上推送。

该实施方式中,上述当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填可以理解为,下一级存储接收到上一层模块发送的上述访存请求后,接收到处理单元发送的回填指令(或者预取指令),当接收到该回填指令时就确定所述下一级存储需要向所述上一层模块进行所述数据块的数据回填。具体可以是上一层模块发生数据缺失时,上一层模块向存储控制器发送上述访存请求,存储控制器将该访存请求发送给上述下一级存储,同时,本方法中还可以执行步骤201,即对访存请求所访问的数据块进行推送条件的判断。

由于,本实施例中在接收到访存请求后就执行步骤201,这样当数据块满足上述推送条件时,就可以直接执行步骤202执行,而在执行步骤202时,可能还没有接收到或者没有响应处理单元发送的回填指令(或者预取指令)。从而当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,数据块当前可能正在往上推送,这样就可以禁止所述下一级存储向所述上一层模块进行所述数据块的数据回填,并向所述上一层模块发送回填确认信号。

本实施例中,步骤201可以包括:

当存储控制器接收到所述上一层模块发送的所述访存请求时,获取所述访存请求所访问的数据块的内存地址,并判断所述内存地址是否满足预先设置的推送条件;

步骤202可以包括:

若所述内存地址满足所述推送条件时,向所述内存地址所在的下一级存储发送包括所述内存地址的内容分发访存请求,以根据所述内容分发访存请求将所述数据块推送到所述上一层模块。

该实施方式中,当下一级存储接收到上述内容分发访存请求时,就可以根据该内容分发访存请求将所述数据块推送到所述上一层模块。

其中,上述获取所述访存请求所访问的数据块的内存地址可以是接收上述存储控制器发送的访存请求所访问的数据块的内存地址。例如:存储控制器在接收到上述访存请求时,将该访存请求发送给下一级存储,以及将该访存请求所访问的数据块的内存地址发送给执行步骤201装置,这样该装置就可以执行步骤201。另外,上述获取所述访存请求所访问的数据块的内存地址还可以是直接从访存请求获取到该数据块的内存地址,例如:步骤201由存储控制器执行。

需要说明的是,本实施例中,上述步骤的实现可以是由存储控制器和下一级存储实现,或者上述步骤的实现可以是在处理器内的访存通路中增加的推送式内容分发预取装置实现的。例如:如图5所示,处理器包括上一层模块101、存储控制器201、下一级存储301、推送式内容分发预取装置401和使能选通信号501,推送式内容分发预取装置401可以包括热点识别装置402和内容分发请求生成装置403,热点识别装置402可以包括更新部件4021和热点数据识别部件4022,其中:

上一层模块101向存储控制器201发送访存请求,存储控制器201可以按传统实现方式,正常处理访存请求,即将访存请求发送给下一级存储301。同时,存储控制器201将访存请求所请求访问的数据块(或缓存块,或缓存行)内存地址发送给推送式内容分发装置401。

接着,在推送式内容分发装置401的热点数据识别装置402中,检查该数据块的内存地址是否被热点数据识别部件4022记录,如果已经被记录,则通过更新部件4021,将数据块对应的计数器(Counter)增1;如果没有记录,则表示是首次访问,则通过更新部件4021,将其按一定的规则插入到热点数据识别部件4022中,这里的插入规则可以是按优先级或者访问频度,也可能是先进先出。

然后,当该数据块的内存地址计数器值超过某一个预定义的阈值,则表示其为热点数据。通过更新部件4021,将热点数据识别部件4022中的对应项的状态(Status)更新为真,即更新有效。

同时,热点数据识别部件4022中的Status输入给内容分发请求生成装置403。若Status为真,则内容分发请求生成装置403将内容分发访存请求发送到存储控制器201,由存储控制器201根据内容分发访存请求访问下一级存储,以将该数据块往上一层模块101推送,即将该数据块分发到其他硬件线程或处理器核或上层存储单元。具体可以是通过使能选通信号501将数据块往上一层模块101推送。另外,下一级存储还可以返回内容分发访存请求的响应消息。

另外,当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,使能选通信号501还可以根据热点数据识别部件4022中状态值,判断是否进行数据回填,当数据块的状态值为有效时,则可以确定该数据块正在往上推送,从而不需要进行回填。若数据块的状态值为无效,则无法该数据块没有往上推送,例如:数据块不满足上述推送条件,从而需要进行数据回填。

另外,在存储控制器中,当推送的分发数据准备就绪后,即推送的数据存储在各个目的节点的写入队列中时,发送分发数据准备就绪信号给推送式内容分发装置。该装置通过更新部件,删除热点数据识别部件中对应的项。推送分发的数据在各个目的节点可以最低优先级插入到写入队列,不会影响后续访存操作的操作延迟。

需要说明的是,本实施例中并不限制存储控制器的物理实现机制,存储控制器在物理上可能是集中式实现,统一管理系统中的多类存储模块;也可能是分布式,即分别管理某个或若干个存储模块。另外,也不限制推送式内容分发装置的物理实现机制,在物理上可能是集中式实现,统一管理整个访存通路。另外,推送式内容分发装置可以位于访存通路中,可以与存储控制器分离实现,也可以与存储控制器合并实现;该装置可以与下一级存储独立实现,此种实现不影响下一级存储的物理实现;也可以与下一级存储合并实现。

本实施例中,在图1所示的实施例的基础上增加了多种可选的实施方式,且都可以实现提高数据预取的效率。

下面为本发明装置实施例,本发明装置实施例用于执行本发明方法实施例一至二实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例一和实施例二。

请参阅图6,图6是本发明实施例提供的一种数据预取装置的结构示意图,如图6所示,判断单元61和推送单元62,其中:

判断单元61,用于在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件。

其中,上述上一层模块可以是寄存器,或者上述上一层模块可以是上述数据块所在的下一级存储的上一级存储,例如:上述数据块所在的下一级存储为缓存系统或者存储系统中的第2层,那么,上述上一层模块就可以是该缓存系统或者存储系统中的第1层。

另外,上述推送条件可以是预先设置的允许将数据块预取给上一层模块的允许条件。例如:当上述数据块被访存请求所访存的次数大于预设阈值时,则确定该数据块满足推送条件,或者当上述数据块为预先指定的特定数据块时,则确定该数据块满足推送条件等等,本实施例中,上述推送条件还可以根据用户或者设备需求而设定不同的推送条件,对此本实施例中不作限定。

推送单元62,用于若所述判断单元61判断所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

本实施例中,上述下一级存储可以任何存储有上述数据块的存储模块,例如:上述下一级存储可以是本地核的私有存储模块,或者上述下一级存储可以是非本地核的私有存储模块,例如:处理于同一存储级的远端存储模块。

通过上述单元就可以实现在接收访存请求后,只需要对访存请求所访问的数据块进行推送条件的判断,当满足推送条件时,就可以将数据块推送给上一层模块,即实现将数据块预取给上一层模块,从而可以提高数据预取的效率。另外,由于本实施例中数据预取不是需要接收处理单元发送的预取指令,这样本实施例中的数据预取就不需要处理单元的控制,从而实现数据预取过程中数据存储逻辑自主的将数据自下往上推送。其中,上述处理单元可以是处理器中用于进行数据处理的处理单元。

本实施例中,上述装置可以应用于任何处理器芯片,例如:硬件多线程处理器。

本实施例中,在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。这样可以实现在数据预取过程中只需要接收到访存请求就实现数据预取,而不需要像现有技术那样等待处理单元发送预取指令才可以进行数据预取,从而本发明实施例可以提高数据预取的效率。

请参阅图7,图7是本发明实施例提供的另一种数据预取装置的结构示意图,如图7所示,包括:判断单元71和推送单元72,其中:

判断单元71,用于在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件。

其中,上述访存请求可以是上一层模块发生数据缺失时发送的访存请求。另外,上述数据块可以理解为上述访存请求所访存的数据所有的数据块,且数据块可以理解为缓存块或者缓存行。

本实施例中,判断单元71可以用于判断所述访存请求所访问的数据块是否有被访存请求访问的记录,若是,则更新所述数据块对应的计数器,并判断所述数据块对应的计数器当前值是否超过预设阈值,若是,则确定所述数据块满足预先设置的推送条件。

其中,上述被访存请求访问的记录可以是本地记录的,任何访存请求所访存的记录,即该记录并不限定是上述上一层模块发送的访存请求访存的记录。

该实施方式中,可以为每一个数据块配置一个计数器,该计数器用于记录数据块被访存请求访问的记录。另外,本实施例中,数据块被访存请求访存的次数还可以理解为数据块的热度(使用频度),这样可以理解当数据块的热度比较高时,才将数据块推送给上一层模块。

该实施方式中,当判断所述访存请求所访问的数据块没有被访存请求访问的记录时,则无法上述数据块为首次访问,可以将该数据块的内存地址插入到用于记录数据块的访问记录的部件中,例如:记录在热点数据识别部件中,该部件可以记录各数据块的访问记录,同时,还可以记录各数据块的(Status)值,其中,该状态值用于表示数据块是否满足推送条件。例如:如3所示,该部件中记录数据块的信息包括内存地址、计数器和状态值,其中,内存地址为数据块的内存地址,计数器表示数据块当前被访问的次数,状态值表示数据块是否满足推送条件。且上述部件可以是记录多个数据块的信息,那么,当上述数据块为首次访问时,可以按一定的规则插入到上述热点数据识别部件中,这里的插入规则可以是按优先级或者访问频度,也可以是按先进先出的规则。

推送单元72,用于若所述判断单元判断所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

本实施例中,上述访存请求所访问的数据块可以包括至少两个数据块;

判断单元71可以用于针对所述访存请求所访存的每个数据块判断是否满足预先设置的推送条件;

推送单元72可以用于若所述判断单元判断所述至少两个数据块中存在满足所述推送条件的目标数据块时,从所述目标数据块所在的下一级存储中读取所述目标数据块,并将所述目标数据块推送到所述上一层模块。

该实施方式中可以实现当访存请求所访问的数据块为多个数据块时,可以对每个数据块进行推送条件的判断,从而选择出满足推送条件的数据块推送给上一层模块。

本实施例中,所述装置还包括:

发送单元73,用于当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若是,则禁止所述下一级存储向所述上一层模块进行所述数据块的数据回填,并向所述上一层模块发送回填确认信号。

其中,上述数据回填可以上一层模块发生数据缺失时,由该上一层模块的下一级存储将缺失的数据发送给上一层模块的过程。另外,上述数据块当前是否正在往上推送可以理解为上述数据块当前是否正在往上述上一层模块推送,若是,则由于上一层模块缺失的数据块当前正在往上推送,从而可以不需要进行数据回填,但需要向上一层模块发送回填确认(Ack)信号,以用于唤醒可能被暂停的上一层模块。

另外,该实施方式中,当判断出上述数据块满足上述推送条件时,可以为该数据块的状态(Status)值设置为有效,当数据块的状态值为有效时,则可以确定该数据块正在往上推送。若数据块的状态值为无效,则无法该数据块没有往上推送,例如:数据块不满足上述推送条件。

该实施方式中,当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若否,则向上一层模块回填该数据块。例如:数据块的状态值为无效时,就可以判断所述数据块当前没有往上推送。

本实施例中,判断单元71可以用于当存储控制器接收到所述上一层模块发送的所述访存请求时,获取所述访存请求所访问的数据块的内存地址,并判断所述内存地址是否满足预先设置的推送条件;

所述推送单元72用于若所述内存地址满足所述推送条件时,向所述内存地址所在的下一级存储发送包括所述内存地址的内容分发访存请求,以根据所述内容分发访存请求将所述数据块推送到所述上一层模块。

该实施方式中,当下一级存储接收到上述内容分发访存请求时,就可以根据该内容分发访存请求将所述数据块推送到所述上一层模块。

其中,上述获取所述访存请求所访问的数据块的内存地址可以是接收上述存储控制器发送的访存请求所访问的数据块的内存地址。例如:存储控制器在接收到上述访存请求时,将该访存请求发送给下一级存储,以及将该访存请求所访问的数据块的内存地址发送给执行判断单元71。另外,上述获取所述访存请求所访问的数据块的内存地址还可以是直接从访存请求获取到该数据块的内存地址,例如:存储控制器包括判断单元71。

本实施例中,在图6所示的实施例的基础上增加了多种可选的实施方式,且都可以实现提高数据预取的效率。

请参阅图8,图8是本发明实施例的一种数据预取装置的结构示意图,如图8所示,包括:处理器81和存储器82,处理器81用于调用存储器82存储的程序代码执行如下操作:

在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;

若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。

本实施例中,处理器81执行的判断所述访存请求所访问的数据块是否满足预先设置的推送条件的操作,可以包括:

判断所述访存请求所访问的数据块是否有被访存请求访问的记录,若是,则更新所述数据块对应的计数器,并判断所述数据块对应的计数器当前值是否超过预设阈值,若是,则确定所述数据块满足预先设置的推送条件。

本实施例中,上述访存请求所访问的数据块包括至少两个数据块;

本实施例中,处理器81执行的判断所述访存请求所访问的数据块是否满足预先设置的推送条件的操作,可以包括:

针对所述访存请求所访存的每个数据块判断是否满足预先设置的推送条件;

处理器81执行的若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块的操作,可以包括:

若所述至少两个数据块中存在满足所述推送条件的目标数据块时,从所述目标数据块所在的下一级存储中读取所述目标数据块,并将所述目标数据块推送到所述上一层模块。

本实施例中,处理器81执行的操作还可以包括:

当所述下一级存储需要向所述上一层模块进行所述数据块的数据回填时,判断所述数据块当前是否正在往上推送,若是,则禁止所述下一级存储向所述上一层模块进行所述数据块的数据回填,并向所述上一层模块发送回填确认信号。

本实施例中,处理器81执行的在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件的操作,可以包括:

当存储控制器接收到所述上一层模块发送的所述访存请求时,获取所述访存请求所访问的数据块的内存地址,并判断所述内存地址是否满足预先设置的推送条件;

所述若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块,包括:

若所述内存地址满足所述推送条件时,向所述内存地址所在的下一级存储发送包括所述内存地址的内容分发访存请求,以根据所述内容分发访存请求将所述数据块推送到所述上一层模块。

本实施例中,在接收到上一层模块发送的访存请求时,判断所述访存请求所访问的数据块是否满足预先设置的推送条件;若所述数据块满足所述推送条件时,从所述数据块所在的下一级存储中读取所述数据块,并将所述数据块推送到所述上一层模块。这样可以实现在数据预取过程中只需要接收到访存请求就实现数据预取,而不需要像现有技术那样等待处理单元发送预取指令才可以进行数据预取,从而本发明实施例可以提高数据预取的效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存取存储器(Random Access Memory,简称RAM)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1