CN109408412A - 内存预取控制方法、装置及设备 - Google Patents
内存预取控制方法、装置及设备 Download PDFInfo
- Publication number
- CN109408412A CN109408412A CN201811242361.1A CN201811242361A CN109408412A CN 109408412 A CN109408412 A CN 109408412A CN 201811242361 A CN201811242361 A CN 201811242361A CN 109408412 A CN109408412 A CN 109408412A
- Authority
- CN
- China
- Prior art keywords
- data flow
- memory
- access
- streambuf
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
Abstract
本发明实施例提供一种内存预取控制方法、装置及设备,该方法可以包括:根据第一知识产权IP核对内存的访问请求,确定第一数据流;获取所述第一数据流对应的访问间隔时长和所述内存的响应时长;在所述访问间隔时长与所述响应时长之差大于预设阈值时,为所述第一数据流分配流缓冲区,所述流缓冲区用于存储所述第一数据流对应的预取数据。提高了内存预取效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种内存预取控制方法、装置及设备。
背景技术
在内存控制器端通常设置有预取器,在知识产权(intellectual property,简称IP)核访问内存的过程中,预取器可以将内存中的数据预先读取到预取器的流缓冲区中,以使IP核可以在流缓冲区中读取数据,进而降低IP核对内存访问的延迟,IP核可以包括处理器、输入/输出(Input/Output,简称I/O)设备、加速器、网卡等。
在现有技术中,预取器可以根据IP核发送的访问请求进行数据流识别,若预取器确定IP核访问内存中地址连续的数据,则预取器识别得到数据流,并在缓存中为数据流分配流缓冲区。预取器根据该IP核的历史访问请求推测该IP核未来可能访问的数据,并将该IP核未来可能访问的数据从内存预先读取到对应的流缓冲区中,这样,在以后接收到该IP核的访问请求时,可以将流缓冲区中的预先从内存读取的数据返回给该IP核,以降低该IP核对内存的访问延迟。
然而,当预取器识别得到的数据流较多时,则预取器进行内存预取的效率则会降低。
发明内容
本发明实施例提供一种内存预取控制方法、装置及设备,提高了内存预取效率。
第一方面,本发明实施例提供一种内存预取控制方法,包括:
根据第一知识产权IP核对内存的访问请求,确定第一数据流;
获取所述第一数据流对应的访问间隔时长和所述内存的响应时长;
在所述访问间隔时长与所述响应时长之差大于预设阈值时,为所述第一数据流分配流缓冲区,所述流缓冲区用于存储所述第一数据流对应的预取数据。
在一种可能的实施方式中,所述为所述第一数据流分配流缓冲区,包括:
判断缓存中是否存在空闲状态的流缓冲区;
若是,则将空闲状态的流缓冲区中的一个流缓冲区确定为所述第一数据流的流缓冲区;
若否,则根据访问所述内存的数据流对所述内存的访问记录,在所述缓存的流缓冲区中确定第一流缓冲区,并将所述第一流缓冲区确定为所述第一数据流的流缓冲区。
在另一种可能的实施方式中,所述第一流缓冲区对应的数据流与所述第一数据流对内存的访问不存在冲突;
和/或,
所述第一流缓冲区对应的数据流与第二数据流对所述内存的访问不存在冲突,所述第二数据流为直接访问内存的数据流。
在另一种可能的实施方式中,所述获取所述第一数据流对应的访问间隔时长,包括:
获取所述第一数据流对应的至少两个访问请求对应的访问时刻;
根据所述至少两个访问请求对应的访问时刻,确定所述访问间隔时长。
在另一种可能的实施方式中,所述根据第一IP核对内存的访问请求,确定第一数据流,包括:
获取所述第一IP核对所述内存的至少两个访问请求;
若所述至少两个访问请求用于请求内存中同一存储体的同一页中地址连续的内容,则确定得到所述第一数据流。
在另一种可能的实施方式中,所述根据第一知识产权IP核对内存的访问请求,确定第一数据流之前,还包括:
接收所述第一IP核发送的第一访问请求,所述第一访问请求包括所述第一IP核待访问的第一存储体的标识和第一页的标识;
确定所述缓存中的流缓冲区中不包括所述第一存储体的标识和所述第一页的标识对应的数据。
第二方面,本发明实施例提供一种内存预取控制装置,包括第一确定模块、获取模块和分配模块,其中,
所述第一确定模块用于,根据第一知识产权IP核对内存的访问请求,确定第一数据流;
所述获取模块用于,获取所述第一数据流对应的访问间隔时长和所述内存的响应时长;
所述分配模块用于,在所述访问间隔时长与所述响应时长之差大于预设阈值时,为所述第一数据流分配流缓冲区,所述流缓冲区用于存储所述第一数据流对应的预取数据。
在一种可能的实施方式中,所述分配模块具体用于:
判断缓存中是否存在空闲状态的流缓冲区;
若是,则将空闲状态的流缓冲区中的一个流缓冲区确定为所述第一数据流的流缓冲区;
若否,则根据访问所述内存的数据流对所述内存的访问记录,在所述缓存的流缓冲区中确定第一流缓冲区,并将所述第一流缓冲区确定为所述第一数据流的流缓冲区。
在另一种可能的实施方式中,所述第一流缓冲区对应的数据流与所述第一数据流对内存的访问不存在冲突;
和/或,
所述第一流缓冲区对应的数据流与第二数据流对所述内存的访问不存在冲突,所述第二数据流为直接访问内存的数据流。
在另一种可能的实施方式中,所述获取模块具体用于:
获取所述第一数据流对应的至少两个访问请求对应的访问时刻;
根据所述至少两个访问请求对应的访问时刻,确定所述访问间隔时长。
在另一种可能的实施方式中,所述第一确定模块具体用于:
获取所述第一IP核对所述内存的至少两个访问请求;
若所述至少两个访问请求用于请求内存中同一存储体的同一页中地址连续的内容,则确定得到所述第一数据流。
在另一种可能的实施方式中,所述装置还包括接收模块和第二确定模块,其中,
所述接收模块用于,在所述第一确定模块根据第一知识产权IP核对内存的访问请求,确定第一数据流之前,接收所述第一IP核发送的第一访问请求,所述第一访问请求包括所述第一IP核待访问的第一存储体的标识和第一页的标识;
所述第二确定模块具体用于,确定所述缓存中的流缓冲区中不包括所述第一存储体的标识和所述第一页的标识对应的数据。
第三方面,本申请提供一种预取器,包括缓存、流过滤器、时间过滤器、流缓冲管理部件和访问延迟计数器,所述时间过滤器分别与所述流过滤器、所述访问延迟计数器和所述流缓冲管理部件连接,所述流缓冲管理部件还与所述缓存连接,其中,
所述流过滤器用于接收第一知识产权IP核发送的对内存的访问请求,并根据所述访问请求确定第一数据流;
所述访问延迟计数器用于确定所述第一数据流对应的访问间隔时长和所述内存的响应时长;
所述时间过滤器用于在确定所述访问间隔时长与所述响应时长之差大于预设阈值时,生成指示信息,并向所述流缓冲管理部件发送所述指示信息;
所述流缓冲管理部件用于根据所述指示信息在所述缓存中为所述第一数据流分配流缓冲区。
第四方面,本发明实施例提供一种内存预取控制装置,包括存储器和处理器,所述处理器执行所述存储器中的程序指令,用于实现上述第一方面任一项所述的内存预取控制方法。
第五方面,本发明实施例提供一种可读存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于实现上述第一方面任一项所述的内存预取控制方法。
本发明实施例提供的内存预取控制方法,在根据第一IP核发送的访问请求识别得到第一数据流之后,根据第一数据流对应的访问间隔时长与响应时长之差是否大于预设阈值,若是,则说明预取器可以及时的将第一数据流对应的预取数据预先存储至流缓冲区中,该种情况下,再为第一数据流分配流缓冲区,这样,可以避免在为数据流分配缓冲区之后,依然无法在流缓冲区中获取到数据的问题,进一步的,由于仅为识别得到的部分数据流进行预取操作,减小了预取器的工作量,进而提高了预取器的内存预取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的内存预取控制的架构图;
图2为本发明实施例提供的一种内存预取控制方法的流程示意图;
图3为本发明实施例提供的分配流缓冲区方法的流程示意图;
图4为本发明实施例提供的另一种内存预取控制方法的流程示意图;
图5为本发明实施例提供的一种内存预取控制装置的结构示意图;
图6为本发明实施例提供的另一种内存预取控制装置的结构示意图;
图7为本发明实施例提供的内存预取控制装置的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的内存预取控制的架构图。请参见图1,包括IP核、预取器、内存控制器和内存。其中,预取器包括缓存、流过滤器、时间过滤器、流缓冲管理部件和访问延迟计数器。
在实际应用过程中,当IP核需要访问内存时,IP核向预取器发送访问请求,访问请求中包括待访问的内存中的地址。预取器判断流缓冲区中是否包括访问请求中的地址对应的数据,若是,则将流缓冲区中的数据返回给IP核,若否,则通过内存控制器在内存中获取数据,并将在内存中获取得到的数据返回给IP核。同时,预取器还将该IP核的地址、访问请求中包括的地址、以及接收到该访问请求的时刻(或时间戳)对应存储在流过滤器中。
访问延迟计数器可以记录接收到IP核发送的访问请求的时刻、以及向IP核返回数据的时刻,并据此确定内存的平均响应时间。
在预取器接收到一个IP核发送的访问请求后,若预取器判断流缓冲区中不包括访问请求中的地址对应的数据,说明还未识别得到该访问请求对应的数据流,则预取器根据该访问请求中包括的地址、以及流过滤器中该IP核对应的地址,判断该IP核是否访问内存中地址连续的数据。若预取器判断该IP核访问内存中地址连续的数据,则确定识别得到一个数据流;时间过滤器根据流过滤器中该IP核对应的地址的时间戳可以确定该数据流对应的访问间隔时长,时间过滤器还可以在访问延迟计数器中获取内存的响应时长,并根据该数据流对应的访问间隔时长和内存的响应时长确定是否为该数据流分配流缓冲区。
在时间过滤器确定为数据流分配流缓冲区时,时间过滤器可以向流缓冲管理部件发送指示信息,以指示流缓冲管理部件为该数据流分配流缓冲区。流缓冲管理部件中包括地址记录表,该地址记录表中记录了访问内存的各个数据流对内存的访问记录,流缓冲管理部件可以根据各个数据流的访问记录为该数据流分配流缓冲区,以尽量减少不同数据流对内存的访问冲突。
需要说明的是,上述只是以示例的形式示意一种预取器的结构,并非对预取器的结构的限定。例如,图1实施例中所示的预取器中的不同部件可以集成于一个部件中,或者,预取器中的一个部件可以按照功能拆分为多个部件。
在本申请中,在识别得到一个数据流之后,根据该数据流对应的访问间隔时长和内存的响应时长,可以确定预取器是否可以及时将该数据流对应的预取数据(预测的该数据流对应的IP核在未来可能请求的数据)预先存储至流缓冲区中,在确定预取器可以及时将该数据流对应的预取数据预先存储至流缓冲区时(在接收到该数据流对应的访问请求之前将数据存储至流缓冲区中),才为该数据流分配流缓冲区,以避免在为数据流分配缓冲区之后,依然无法在流缓冲区中获取到数据的问题。进一步的,由于仅为识别得到的部分数据流进行预取操作,减小了预取器的工作量,进而提高了预取器的内存预取效率。进一步的,流缓冲管理部件可以根据各个数据流的访问记录为该数据流分配流缓冲区,进而尽量减少不同数据流对内存的访问冲突。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个具体实施例可以相互结合,对于相同或相似的内容,在不同的实施例中不再进行重复说明。
图2为本发明实施例提供的一种内存预取控制方法的流程示意图。请参见图2,该方法可以包括:
S201、根据第一IP核对内存的访问请求,确定第一数据流。
可选的,本发明实施例的执行主体可以为预取器,也可以为设置在预取器中的内存预取控制装置。
例如,内存预取控制装置可以为图1实施例中所示的时间过滤器、流过滤器、访问延迟计数器、以及流缓冲管理部件。
可选的,第一IP核可以为处理器I/O设备、加速器、网卡等。
当然,第一IP核还可以为其它,本发明实施例对此不作具体限定。
可选的,内存包括多个存储体(bank),每个存储体中包括多个页(row)。相应的,访问请求用于请求访问内存中某一存储体中的某一页中的数据。
可选的,第一IP核对内存的访问请求可以包括待访问的存储体的标识和页的标识。
可选的,访问请求中还可以包括待访问的内容在页中的地址。
可选的,预取器可以是在接收到第一IP核的一个访问请求之后,判断缓存中的流缓冲区中不包括第一IP核要请求的数据时,执行S201。
当然,预取器还可以在其它触发条件下执行S201,本发明实施例对此不作具体限定。
可选的,预取器可以根据第一IP核最近发送的N个访问请求中的地址,判断是否能够识别得到第一数据流。
可选的,N为大于或等于2的正整数。
当然,在实际应用过程中,可以根据实际需要设置N的取值,本发明实施例对此不作具体限定。
可选的,可以在图1实施例中所示的流过滤器中获取第一IP核最近发送的N个访问请求的地址。
可选的,若第一IP核最近发送的N个访问请求中的地址连续,则可以确定识别得到第一数据流。
可选的,N个访问请求中的地址连续可以为,N个访问请求中的地址中的存储体的标识相同、页的标识相同,且页中的地址连续。
需要说明的是,地址连续是指相邻的两个地址之间的差值相同。
例如,该差值可以为1、2、3等,当然,在实际应用过程中,可以根据实际需要设置该差值,本发明实施例对此不作具体限定。
例如,若多个访问请求依次请求访问同一存储体的同一页中地址1、地址2、地址3中的数据,则确定该多个访问请求用于请求访问地址连续的内容。若多个访问请求依次请求访问同一存储体的同一页中地址1、地址3、地址5中的数据,则确定该多个访问请求用于请求访问地址连续的内容。
例如,假设N为3,第一IP核最近发送的3个访问请求分别为访问请求1、访问请求2和访问请求3,假设访问请求1用于请求访问存储体1的页1中地址1的数据,访问请求2用于请求访问存储体1的页1中地址2的数据,访问请求3用于请求访问存储体1的页1中地址3的数据,则确定该3个访问请求用于内存中地址连续的数据,即,根据该三个访问请求可以识别得到一个数据流。
可选的,在预取器接收到一个访问请求之后,可以将访问请求中的地址增加预设步长,并将增加了预设步长的地址存储在流过滤器中。例如,增加预设步长之后的地址是指将存储体中的页中的地址增加预设步长。预设步长可以1、2、3等,可以根据实际需要设置该预设步长。
相应的,假设N为2,若预取器接收到一个访问请求中的地址与流过滤器中的地址相同,则预取器可以确定识别得到一个数据流。
S202、获取第一数据流对应的访问间隔时长和内存的响应时长。
可选的,可以获取第一数据流对应的至少两个访问请求对应的访问时刻,根据至少两个访问请求对应的访问时刻,确定访问间隔时长。
可选的,第一数据流对应的至少两个访问请求是指,识别得到所述第一数据流所依据的访问请求。
例如,假设根据访问请求1、访问请求2和访问请求3识别得到第一数据流,则第一数据流对应的至少两个访问请求为访问请求1、访问请求2和访问请求3。
可选的,可以在图1实施例中所示的流过滤器中获取至少两个访问请求对应的访问时刻。
可选的,若至少两个访问请求的个数大于2,则可以获取每两个相邻(地址相邻或者访问时刻相邻)的访问请求之间的间隔时长,并将每两个相邻的访问请求之间的间隔时长的平均值确定为第一数据流对应的访问间隔时长。
可选的,内存的响应时长是指,预取器接收到IP核发送的访问请求与向IP核发送该访问请求对应的数据之间的时长。
可选的,本发明实施例所示的内存的响应时长可以为内存的平均响应时长。
可选的,可以在图1实施例中所示的访问延迟计数器中获取内存的响应时长。
S203、在访问间隔时长与响应时长之差大于预设阈值时,为第一数据流分配流缓冲区,流缓冲区用于存储第一数据流对应的预取数据。
可选的,预设阈值可以为正数。
当然,在实际应用过程中,可以根据实际需要设置该预设阈值,本发明实施例对此不作具体限定。
可选的,预取数据是指预测的、第一IP核在未来可能请求的内存中的数据。
可选的,可以根据第一数据流对应的访问请求,确定该预取数据。
例如,假设第一数据流对应3个访问请求,分别记为访问请求1、访问请求2和访问请求3。假设访问请求1用于请求存储体1的页1中地址1的数据,访问请求2用于请求存储体1的页1中地址2的数据,访问请求3用于请求存储体1的页1中地址3的数据,则可以推测第一IP核在未来可能会请求存储体1的页1中地址4、地址5、地址6等中的数据,则将存储体1的页1中地址4、地址5、地址6等中的数据确定为第一数据流对应的预取数据。
可选的,当访问间隔时长与响应时长之差大于预设阈值时,说明预取器可以及时将第一数据流对应的预取数据预先存储至流缓冲区中,即,在第一IP核请求预取数据之前,预取器可以将预取数据存储至流缓冲区中。
可选的,可以由图1实施例中所示的流缓冲管理部件为第一数据流分配流缓冲区。
需要说明的是,在图3所示的实施例中,对为第一数据流分配流缓冲区的过程进行详细说明,此处不再进行赘述。
本发明实施例提供的内存预取控制方法,在根据第一IP核发送的访问请求识别得到第一数据流之后,根据第一数据流对应的访问间隔时长与响应时长之差是否大于预设阈值,若是,则说明预取器可以及时的将第一数据流对应的预取数据预先存储至流缓冲区中,该种情况下,再为第一数据流分配流缓冲区,这样,可以避免在为数据流分配缓冲区之后,依然无法在流缓冲区中获取到数据的问题,进一步的,由于仅为识别得到的部分数据流进行预取操作,减小了预取器的工作量,进而提高了预取器的内存预取效率。
在上述任意一个实施例的基础上,下面,通过图3所示的实施例对为第一数据流分配流缓冲区的过程进行详细说明。
图3为本发明实施例提供的分配流缓冲区方法的流程示意图。请参见图3,该方法可以包括:
S301、判断缓存中是否存在空闲状态的流缓冲区。
若是,则执行S302。
若否,则执行S303。
可选的,空闲状态的流缓冲区是指没有被任何数据流占用的流缓冲区。
S302、将空闲状态的流缓冲区中的一个流缓冲区确定为第一数据流的流缓冲区。
可选的,在确定缓存中存在空闲状态的流缓冲区时,可以将任意一个空闲状态的流缓冲区确定为第一数据流的流缓冲区。
S303、根据访问内存的数据流对内存的访问记录,在缓存的流缓冲区中确定第一流缓冲区,并将第一流缓冲区确定为第一数据流的流缓冲区。
可选的,内存访问记录可以为数据流对应的访问请求中包括的存储块的地址和页的地址。
可选的,在将第一流缓冲区确定为第一数据流的流缓冲区之后,则第一流缓冲区之前对应的数据流需要直接访问内存。
例如,假设第一流缓冲区对应数据流1,若将第一流缓冲区确定为第一数据流的流缓冲区,则数据流1无法再使用第一流缓冲区,即,数据流1需要直接访问内存。
可选的,确定得到的第一流缓冲区满足如下至少两个条件中的至少一个:
条件1、第一流缓冲区对应的数据流与第一数据流对内存的访问不存在冲突。
可选的,第一流缓冲区对应的数据流是指使用该第一流缓冲区进行数据预取的数据流。即,第一缓冲区对应的数据流预取的数据存储在第一流缓冲区中。
可选的,若两个数据流对应的访问请求用于请求访问内存中同一存储体中的不同页,则说明该两个数据流对内存的访问存在冲突。
可选的,若缓存中多个流缓冲区对应的数据流与第一数据流对内存的访问不存在冲突,则可以根据最近最少使用(Least Recently Used,简称LRU)策略在该多个流缓冲区中确定第一缓冲区,即,将最近使用最少的流缓冲区确定为第一流缓冲区。
例如,假设缓存中包括3个流缓冲区,该3个流缓冲区对应的数据流、以及数据流对应的地址如表1所示:
表1
数据流 | 流缓冲区 | 地址 |
数据流1 | 流缓冲区1 | 存储体1 |
数据流2 | 流缓冲区2 | 存储体2 |
数据流3 | 流缓冲区3 | 存储体3 |
假设新识别得到的第一数据流为数据流4,数据流4对应的地址为存储体3。由表1可知,数据流1和数据流2与数据流4对应的地址不同,因此,数据流1和数据流2与数据流4对内存的访问不存在冲突,因此可以将流缓冲区1或者流缓冲区2确定为第一流缓冲区。可以根据LRU策略在流缓冲区1和流缓冲区2中确定第一流缓冲区。
在上述过程中,数据流3和数据流4访问内存中相同的存储体,若数据流3直接访问内存,则数据流3和数据流4对内存的访问可能出现冲突,通过将数据流3和数据流4均以预取的方式进行内存访问,可以避免数据流3和数据流4对内存的访问出现冲突。
条件2、第一流缓冲区对应的数据流与第二数据流对内存的访问不存在冲突,第二数据流为直接访问内存的数据流。
可选的,第二数据流的访问间隔时长与内存的响应时长之差小于或等于预设阈值,且缓存中不包括第二数据流对应的流缓冲区,即,第二数据流不通过预取的方式访问内存中的数据。
例如,假设已经识别得到4个数据流访问内存,该4个数据流对应的流缓冲区和地址如表2所示:
表2
假设新识别得到的第一数据流为数据流5,数据流5对应的地址为存储体4。由表2可知,数据流1和数据流2与数据流4对应的地址不同,因此,数据流1和数据流2与数据流4对内存的访问不存在冲突,因此可以将流缓冲区1或者流缓冲区2确定为第一流缓冲区。可以根据LRU策略在流缓冲区1和流缓冲区2中确定第一流缓冲区。
在上述过程中,数据流3和数据流4访问内存中相同的存储体,若数据流3和数据流4均直接访问内存,则数据流3和数据流4对内存的访问出现冲突。通过将数据流3以预取的方式进行内存访问,可以降低数据流3和数据流4对内存的访问出现冲突的可能性。
在图3所示的实施例中,可以根据各个数据流对内存的访问记录为该数据流分配流缓冲区,以尽量减少不同数据流对内存的访问冲突。
在上述任意一个实施例的基础上,下面,通过图4所示的实施例,对上述实施例所示的技术方案进行进一步详细说明。
图4为本发明实施例提供的另一种内存预取控制方法的流程示意图。请参见图4,该方法可以包括:
S401、接收第一IP核发送的第一访问请求。
其中,第一访问请求中包括内存中第一存储体的标识和第一页的标识。
可选的,第一访问请求用于请求访问内存中第一存储体的第一页中的数据。
S402、判断流缓冲区中是否存在第一存储体的标识和第一页的标识对应的数据。
若是,则S403。
若否,则执行S404-S411。
S403、将流缓冲区中第一存储体的标识和第一页的标识对应的数据发送给第一IP核。
可选的,在将流缓冲区中第一存储体的标识和第一页的标识对应的数据发送给第一IP核之后,还可以判断该流缓冲区中的数据是否全部被第一IP核访问过,若是,则继续在内存中预取数据,并将预取得到的数据存储至该流缓冲区中。
可选的,最新预取得到的数据可以覆盖该流缓冲区中已经被第一IP核访问过的数据。
S404、在内存中获取第一存储体的标识和第一页的标识对应的数据,并将在内存中获取的数据发送给第一IP核。
S405、根据第一IP核对应的历史访问请求和第一访问请求,判断是否能够识别得到第一数据流。
若是,则执行S406-S410。
若否,则执行S411。
需要说明的是,S405的执行过程可以参见S201的执行过程,此处不再进行赘述。
S406、获取第一数据流对应的访问间隔时长和内存的响应时长。
需要说明的是,S406的执行过程可以参见S202的执行过程,此处不再进行赘述。
S407、判断访问间隔时长与响应时长之差是否大于预设阈值。
若是,则执行S408-S410。
若否,则执行S411。
S408、为第一数据流分配流缓冲区。
需要说明的是,S404与S405-S408可以并行执行,也可以顺序执行,本发明实施例对S404与S405-S408的执行顺序不作具体限定。
需要说明的是,S408的执行过程可以参见S203的执行过程,此处不再进行赘述
S409、根据第一IP核对应的历史访问请求和第一访问请求,确定第一数据流对应的预取数据。
S410、在内存中获取预取数据,并将预取数据存储至第一数据流对应的流缓冲区中。
需要说明的是,在S410之后,在接收到第一IP核后续发送的第一数据流对应的访问请求之后,可以将流缓冲区中预取的数据返回给第一IP核,进而降低第一IP核访问内存的时延。
S411、存储第一访问请求中的地址。
可选的,可以将第一访问请求中的地址存储至流过滤器中。
可选的,可以将第一访问请求中的地址存储至流过滤器中的地址记录表中。
可选的,可以将第一访问请求中的地址增加预设步长之后存储至流过滤器中。
需要说明的是,在判断访问间隔时长与响应时长之差大于预设阈值时,也可以执行S411。
在图4所示的实施例中,在根据第一IP核发送的访问请求识别得到第一数据流之后,根据第一数据流对应的访问间隔时长与响应时长之差是否大于预设阈值,若是,则说明预取器可以及时的将第一数据流对应的预取数据预先存储至流缓冲区中,该种情况下,再为第一数据流分配流缓冲区,这样,可以避免在为数据流分配缓冲区之后,依然无法在流缓冲区中获取到数据的问题,进一步的,由于仅为识别得到的部分数据流进行预取操作,减小了预取器的工作量,进而提高了预取器的内存预取效率。
需要说明的是,图4实施例所示的方法仅是对内存预取进行控制的一种具体实现方式,并非对内存预取进行控制的流程的限定。
图5为本发明实施例提供的一种内存预取控制装置的结构示意图。请参见图5,该内存预取控制装置10可以包括第一确定模块11、获取模块12和分配模块13,其中,
所述第一确定模块11用于,根据第一知识产权IP核对内存的访问请求,确定第一数据流;
所述获取模块12用于,获取所述第一数据流对应的访问间隔时长和所述内存的响应时长;
所述分配模块13用于,在所述访问间隔时长与所述响应时长之差大于预设阈值时,为所述第一数据流分配流缓冲区,所述流缓冲区用于存储所述第一数据流对应的预取数据。
本发明实施例提供的内存预取控制装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述分配模块13具体用于:
判断缓存中是否存在空闲状态的流缓冲区;
若是,则将空闲状态的流缓冲区中的一个流缓冲区确定为所述第一数据流的流缓冲区;
若否,则根据访问所述内存的数据流对所述内存的访问记录,在所述缓存的流缓冲区中确定第一流缓冲区,并将所述第一流缓冲区确定为所述第一数据流的流缓冲区。
在另一种可能的实施方式中,所述第一流缓冲区对应的数据流与所述第一数据流对内存的访问不存在冲突;
和/或,
所述第一流缓冲区对应的数据流与第二数据流对所述内存的访问不存在冲突,所述第二数据流为直接访问内存的数据流。
在另一种可能的实施方式中,所述获取模块12具体用于:
获取所述第一数据流对应的至少两个访问请求对应的访问时刻;
根据所述至少两个访问请求对应的访问时刻,确定所述访问间隔时长。
在另一种可能的实施方式中,所述第一确定模块11具体用于:
获取所述第一IP核对所述内存的至少两个访问请求;
若所述至少两个访问请求用于请求内存中同一存储体的同一页中地址连续的内容,则确定得到所述第一数据流。
图6为本发明实施例提供的另一种内存预取控制装置的结构示意图。在图5所示实施例的基础上,请参见图6,所述内存预取控制装置10还包括接收模块14和第二确定模块15,其中,
所述接收模块14用于,在所述第一确定模块11根据第一知识产权IP核对内存的访问请求,确定第一数据流之前,接收所述第一IP核发送的第一访问请求,所述第一访问请求包括所述第一IP核待访问的第一存储体的标识和第一页的标识;
所述第二确定模块15具体用于,确定所述缓存中的流缓冲区中不包括所述第一存储体的标识和所述第一页的标识对应的数据。
本发明实施例提供的内存预取控制装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本发明实施例还提供一种预取器,包括缓存、流过滤器、时间过滤器、流缓冲管理部件和访问延迟计数器,时间过滤器分别与流过滤器、访问延迟计数器和流缓冲管理部件连接,流缓冲管理部件还与缓存连接。
需要说明的是,预取器的结构可以参见图1,此处不再进行赘述。
流过滤器用于接收第一知识产权IP核发送的对内存的访问请求,并根据访问请求确定第一数据流。可选的,流过滤器可以执行图2实施例中的S201、以及图4实施例中的S401和S405。
访问延迟计数器用于确定第一数据流对应的访问间隔时长和内存的响应时长。可选的,访问延迟计数器可以执行图2实施例中的S202、以及图4实施例中的S406。
时间过滤器用于在确定访问间隔时长与响应时长之差大于预设阈值时,生成指示信息,并向流缓冲管理部件发送指示信息。
流缓冲管理部件用于根据指示信息在缓存中为第一数据流分配流缓冲区。可选的,时间过滤器可以执行图2实施例中的203、图3实施例中的S301-S303、以及图4实施例中的S408。
图7为本发明实施例提供的内存预取控制装置的硬件结构示意图。请参见图7,该内存预取控制装置20可以包括:存储器21和处理器22,其中,存储器21和处理器22通信;示例性的,存储器21和处理器22通过通信总线23通信,所述存储器21用于存储计算机程序,所述处理器22执行所述计算机程序实现上述实施例所示的方法。
本申请提供一种计算机可读存储介质,包括指令,当指令在计算机上运行时使得所述计算机执行上述任意方法实施例提供的内存预取控制方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例方案的范围。
Claims (13)
1.一种内存预取控制方法,其特征在于,包括:
根据第一知识产权IP核对内存的访问请求,确定第一数据流;
获取所述第一数据流对应的访问间隔时长和所述内存的响应时长;
在所述访问间隔时长与所述响应时长之差大于预设阈值时,为所述第一数据流分配流缓冲区,所述流缓冲区用于存储所述第一数据流对应的预取数据。
2.根据权利要求1所述的方法,其特征在于,所述为所述第一数据流分配流缓冲区,包括:
判断缓存中是否存在空闲状态的流缓冲区;
若是,则将空闲状态的流缓冲区中的一个流缓冲区确定为所述第一数据流的流缓冲区;
若否,则根据访问所述内存的数据流对所述内存的访问记录,在所述缓存的流缓冲区中确定第一流缓冲区,并将所述第一流缓冲区确定为所述第一数据流的流缓冲区。
3.根据权利要求2所述的方法,其特征在于,
所述第一流缓冲区对应的数据流与所述第一数据流对内存的访问不存在冲突;
和/或,
所述第一流缓冲区对应的数据流与第二数据流对所述内存的访问不存在冲突,所述第二数据流为直接访问内存的数据流。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述获取所述第一数据流对应的访问间隔时长,包括:
获取所述第一数据流对应的至少两个访问请求对应的访问时刻;
根据所述至少两个访问请求对应的访问时刻,确定所述访问间隔时长。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述根据第一IP核对内存的访问请求,确定第一数据流,包括:
获取所述第一IP核对所述内存的至少两个访问请求;
若所述至少两个访问请求用于请求内存中同一存储体的同一页中地址连续的内容,则确定得到所述第一数据流。
6.一种内存预取控制装置,其特征在于,包括第一确定模块、获取模块和分配模块,其中,
所述第一确定模块用于,根据第一知识产权IP核对内存的访问请求,确定第一数据流;
所述获取模块用于,获取所述第一数据流对应的访问间隔时长和所述内存的响应时长;
所述分配模块用于,在所述访问间隔时长与所述响应时长之差大于预设阈值时,为所述第一数据流分配流缓冲区,所述流缓冲区用于存储所述第一数据流对应的预取数据。
7.根据权利要求6所述的装置,其特征在于,所述分配模块具体用于:
判断缓存中是否存在空闲状态的流缓冲区;
若是,则将空闲状态的流缓冲区中的一个流缓冲区确定为所述第一数据流的流缓冲区;
若否,则根据访问所述内存的数据流对所述内存的访问记录,在所述缓存的流缓冲区中确定第一流缓冲区,并将所述第一流缓冲区确定为所述第一数据流的流缓冲区。
8.根据权利要求7所述的装置,其特征在于,
所述第一流缓冲区对应的数据流与所述第一数据流对内存的访问不存在冲突;
和/或,
所述第一流缓冲区对应的数据流与第二数据流对所述内存的访问不存在冲突,所述第二数据流为直接访问内存的数据流。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述获取模块具体用于:
获取所述第一数据流对应的至少两个访问请求对应的访问时刻;
根据所述至少两个访问请求对应的访问时刻,确定所述访问间隔时长。
10.根据权利要求6-8任一项所述的装置,其特征在于,所述第一确定模块具体用于:
获取所述第一IP核对所述内存的至少两个访问请求;
若所述至少两个访问请求用于请求内存中同一存储体的同一页中地址连续的内容,则确定得到所述第一数据流。
11.一种预取器,其特征在于,包括缓存、流过滤器、时间过滤器、流缓冲管理部件和访问延迟计数器,所述时间过滤器分别与所述流过滤器、所述访问延迟计数器和所述流缓冲管理部件连接,所述流缓冲管理部件还与所述缓存连接,其中,
所述流过滤器用于接收第一知识产权IP核发送的对内存的访问请求,并根据所述访问请求确定第一数据流;
所述访问延迟计数器用于确定所述第一数据流对应的访问间隔时长和所述内存的响应时长;
所述时间过滤器用于在确定所述访问间隔时长与所述响应时长之差大于预设阈值时,生成指示信息,并向所述流缓冲管理部件发送所述指示信息;
所述流缓冲管理部件用于根据所述指示信息在所述缓存中为所述第一数据流分配流缓冲区。
12.一种内存预取控制装置,其特征在于,包括存储器和处理器,所述处理器执行所述存储器中的程序指令,用于实现权利要求1-5任一项所述的内存预取控制方法。
13.一种可读存储介质,其特征在于,所述存储介质用于存储计算机程序,所述计算机程序用于实现权利要求1-5任一项所述的内存预取控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811242361.1A CN109408412B (zh) | 2018-10-24 | 2018-10-24 | 内存预取控制方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811242361.1A CN109408412B (zh) | 2018-10-24 | 2018-10-24 | 内存预取控制方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408412A true CN109408412A (zh) | 2019-03-01 |
CN109408412B CN109408412B (zh) | 2021-04-30 |
Family
ID=65469064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811242361.1A Active CN109408412B (zh) | 2018-10-24 | 2018-10-24 | 内存预取控制方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408412B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023010879A1 (zh) * | 2021-08-04 | 2023-02-09 | 华为技术有限公司 | 内存管理方法、装置和计算机设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630291A (zh) * | 2009-08-03 | 2010-01-20 | 中国科学院计算技术研究所 | 虚拟存储系统和方法 |
CN101751246A (zh) * | 2008-12-15 | 2010-06-23 | 国际商业机器公司 | 预取数据的系统和方法 |
CN102640124A (zh) * | 2009-09-11 | 2012-08-15 | 超威半导体公司 | 用于数据流的储存感知预取 |
CN103226521A (zh) * | 2013-04-18 | 2013-07-31 | 浙江大学 | 多模式数据预取装置及其管理方法 |
US20140181381A1 (en) * | 2007-07-05 | 2014-06-26 | David Anthony Hughes | Pre-Fetching Data into a Memory |
CN105700856A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
CN105718384A (zh) * | 2014-12-05 | 2016-06-29 | 中兴通讯股份有限公司 | 缓存的配置方法及装置 |
CN105930281A (zh) * | 2016-05-12 | 2016-09-07 | 清华大学 | 以配置信息驱动数据访存模式匹配的片上缓存预取机制 |
CN106021128A (zh) * | 2016-05-31 | 2016-10-12 | 东南大学—无锡集成电路技术研究所 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
US20160321183A1 (en) * | 2015-05-01 | 2016-11-03 | Advanced Micro Devices, Inc. | Early cache prefetching in preparation for exit from idle mode |
CN107111451A (zh) * | 2014-12-09 | 2017-08-29 | 英特尔公司 | 用于管理多个顺序写入流的技术 |
CN107861889A (zh) * | 2016-09-21 | 2018-03-30 | 三星电子株式会社 | 存储器模块和包括该存储器模块的计算机系统 |
-
2018
- 2018-10-24 CN CN201811242361.1A patent/CN109408412B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140181381A1 (en) * | 2007-07-05 | 2014-06-26 | David Anthony Hughes | Pre-Fetching Data into a Memory |
CN101751246A (zh) * | 2008-12-15 | 2010-06-23 | 国际商业机器公司 | 预取数据的系统和方法 |
CN101630291A (zh) * | 2009-08-03 | 2010-01-20 | 中国科学院计算技术研究所 | 虚拟存储系统和方法 |
CN102640124A (zh) * | 2009-09-11 | 2012-08-15 | 超威半导体公司 | 用于数据流的储存感知预取 |
CN103226521A (zh) * | 2013-04-18 | 2013-07-31 | 浙江大学 | 多模式数据预取装置及其管理方法 |
CN105718384A (zh) * | 2014-12-05 | 2016-06-29 | 中兴通讯股份有限公司 | 缓存的配置方法及装置 |
CN107111451A (zh) * | 2014-12-09 | 2017-08-29 | 英特尔公司 | 用于管理多个顺序写入流的技术 |
CN105700856A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 根据记忆体存取类型的效益并配合积极层级的预取 |
US20160321183A1 (en) * | 2015-05-01 | 2016-11-03 | Advanced Micro Devices, Inc. | Early cache prefetching in preparation for exit from idle mode |
CN105930281A (zh) * | 2016-05-12 | 2016-09-07 | 清华大学 | 以配置信息驱动数据访存模式匹配的片上缓存预取机制 |
CN106021128A (zh) * | 2016-05-31 | 2016-10-12 | 东南大学—无锡集成电路技术研究所 | 一种基于步幅和数据相关性的数据预取器及其预取方法 |
CN107861889A (zh) * | 2016-09-21 | 2018-03-30 | 三星电子株式会社 | 存储器模块和包括该存储器模块的计算机系统 |
Non-Patent Citations (2)
Title |
---|
张凯: "基于多核_众核体系结构构建高性能网络系统的研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
张杰: "一种高速数据存储方法的研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023010879A1 (zh) * | 2021-08-04 | 2023-02-09 | 华为技术有限公司 | 内存管理方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109408412B (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9386117B2 (en) | Server side data cache system | |
US9229751B2 (en) | Apparatus and method for managing virtual memory | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
CN103902467B (zh) | 压缩内存访问控制方法、装置及系统 | |
CN111124951B (zh) | 管理数据访问的方法、设备和计算机程序产品 | |
US20170139610A1 (en) | System and methods for multi-level key-value store | |
CN108900626B (zh) | 一种云环境下数据存储方法、装置及系统 | |
CN105335308B (zh) | 对存储设备的访问信息处理方法和装置、系统 | |
US20170206164A1 (en) | System and methods for adaptive multi-level cache allocation for kv store | |
CN104809076A (zh) | Cache的管理方法及装置 | |
CN109154912A (zh) | 根据另一个高速缓存中条目的可用性替换高速缓存条目 | |
CN111737168A (zh) | 一种缓存系统、缓存处理方法、装置、设备及介质 | |
CN110297787A (zh) | I/o设备访问内存的方法、装置及设备 | |
CN109213695A (zh) | 缓存管理方法、存储系统以及计算机程序产品 | |
CN109446114A (zh) | 一种空间数据缓存方法、装置和存储介质 | |
US7660964B2 (en) | Windowing external block translations | |
JP2003228461A (ja) | ディスクアレイ装置のディスクキャッシュ管理方法 | |
CN115712583A (zh) | 一种提升分布式缓存跨节点访问性能的方法及装置、介质 | |
Englert et al. | Reordering buffer management for non-uniform cost models | |
CN104714898B (zh) | 一种Cache的分配方法和装置 | |
CN109408412A (zh) | 内存预取控制方法、装置及设备 | |
US10360158B2 (en) | Snoop filter with stored replacement information, method for same, and system including victim exclusive cache and snoop filter shared replacement policies | |
CN106326143B (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及系统 | |
KR20190013049A (ko) | 모놀리식 3차원 집적 기술 기반 캐시 메모리 및 이의 제어 방법 | |
CN109491785A (zh) | 内存访问调度方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |