CN110609796A - 用于存储***中预取的方法、设备和计算机程序产品 - Google Patents
用于存储***中预取的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN110609796A CN110609796A CN201810618354.0A CN201810618354A CN110609796A CN 110609796 A CN110609796 A CN 110609796A CN 201810618354 A CN201810618354 A CN 201810618354A CN 110609796 A CN110609796 A CN 110609796A
- Authority
- CN
- China
- Prior art keywords
- prefetch operation
- prefetch
- read request
- window size
- determining
- 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
-
- 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
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6024—History based prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开的实施例涉及用于存储***中预取的方法、设备和计算机程序产品。根据本公开的实施例,预取操作可以被分为两部分:触发部分和执行部分,从而简化了预取过程。根据本公开的实施例还可以支持并发流的预取,抗干扰的能力得到了增强。
Description
技术领域
本公开的实施例总体涉及存储管理,具体涉及存储***中预取的方法、设备和计算机程序产品。
背景技术
预取技术已经广泛地应用到存储***中。在当前的存储***中,预取会从上层应用程序中隐藏磁盘输入输出(I/O)延迟。这对I/O和计算密集型工作负载如科学和工程计算非常有用。如果没有预取,处理器将等待磁盘加载数据,而处理器忙于处理数据时,磁盘空闲。这种交替的空闲和等待浪费***资源。预取可以减少处理器等待时间,并且可以与磁盘并行工作来实现流水线操作。然而,在多样化的工作负载传统的预取算法无法正常地工作。
发明内容
总体上,本公开的实施例提供了用于存储管理的方法、设备和计算机程序产品。
根据本公开的第一方面,提供了计算机实现的方法。该方法包括:接收针对存储器页面的读请求;确定该读请求是否满足针对存储器页面的预取操作的触发条件;响应于该读请求满足触发条件,基于存储器页面的历史预取操作的历史信息,确定该预取操作的窗口大小;以及基于窗口大小触发预取操作的执行。
根据本公开的第二方面,提供了电子设备。该设备包括至少一个处理单元和至少一个存储器。至少一个存储器被耦合到至少一个处理单元并且存储由至少一个处理单元执行的指令。该指令当由至少一个处理单元执行时,使得设备执行动作,动作包括:接收针对存储器页面的读请求响应于要对高速缓存页面上的数据执行操作,确定与高速缓存页面对应的第一高速缓冲页面引用,第一高速缓存页面引用包括指示高速缓存页面的指针值;确定该读请求是否满足针对存储器页面的预取操作的触发条件;响应于该读请求满足触发条件,基于存储器页面的历史预取操作的历史信息,确定该预取操作的窗口大小;以及基于窗口大小触发预取操作的执行。
根据本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行:接收针对存储器页面的读请求;确定该读请求是否满足针对存储器页面的预取操作的触发条件;响应于该读请求满足触发条件,基于存储器页面的历史预取操作的历史信息,确定该预取操作的窗口大小;以及基于窗口大小触发预取操作的执行。
提供发明内容部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了本公开的实施例的存储***构架的示意性框;
图2示出了根据本公开的实施例的方法的流程图;
图3示出了根据本公开的读请求操作序列图;
图4A和4B示出了根据本公开的实施例的存储***性能示意图;以及
图5示出了适合于用来实现本公开实施例的设备的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
本文中使用的术语“存储器页面”描述了包含要读取或写入的数据的固定大小的物理内存块。
本文中使用的术语“预取”可以指代通过计算和访存的重叠,在缓存可能会发生失效之前发出预取请求以便在该数据真正被使用到时己提前将数据块取入缓存,从而避免缓存失效造成的处理器停顿。
传统的预取方法监测所有的文件接入请求并且基于该请求来确定预取操作。表1示出了传统的多个预取执行顺序。
表1
条件 | 情况 |
offset=0&&prev_offset==-1 | 第一次访问该文件 |
offset==prev_offset | 对该文件未对齐的连续读请求 |
offset==prev_offset+1 | 对该文件小的连续读请求 |
表1中的“offset”表示读请求的偏移量,“prev_offset”表示前一读请求的偏移量。
表2示出了传统的预取方法的伪码。
表2
通常,传统的预取方法首先对读请求进行标准化。如果读请求缓冲区高速缓存的数量大于ra_buffer_caches,则它将被截断为ra_buffer_caches。然后将读请求与前方窗口的位置进行比较。一旦它们相交,立即开始一个新的预取I/O,并将新的当前窗口指向原来的前窗,并将新的前窗设置为新提交的I/O区域。
传统的预取方法无条件地由每个读请求触发,执行严格的类型匹配。然而,传统的预取方法存在以下问题:1.在生产环境中存在轻微的干扰,预取窗口关闭并且无法有效支持不同的负载类型;2.预取过于频繁。
由于传统预取方法的核心预取状态包括两个预取窗口:当前窗口和前窗口。两个窗口保持预取。当应用程序访问当前窗口中的数据并逐步推进时,文件***在预先窗口中异步预取I/O以提前从磁盘加载数据。因为读请求和提前窗口都在一个区域中,传统的双窗口场景不能提供确切的异步预取时间。
此外,还需要判断和处理大量的异常。例如,异常可以包括:预取方法被禁用;磁盘设备太忙并且无法立即执行异步预取;文件被缓存并且不需要预取;如果内存压力过大,则降低预取大小;接下来的异步预取已经到来等等。上述逻辑混合在一起,使得传统预取算法非常复杂。
为了至少部分地解决上述以及潜在的问题,本公开的实施例提出了改进的预取方法。根据本公开的实施例,预取操作可以被分为两部分:触发部分和执行部分,从而简化了预取过程。根据本公开的实施例还可以支持并发流的预取,抗干扰的能力得到了增强。
图1示出了本公开的实施例的存储***构架100的示意性框图。如图1所示,存储***构架100可以包括触发模块110、执行模块120以及存储器页面130。可以理解,存储***构架100可以包括任意合适的组件,例如,(多个)磁盘等等。图1所示的组件的数目仅为示例性的而非限制性的。可以理解,触发模块110和执行模块120可以为软件模块和/或硬件模块。本公开的实施例在此方面不受限制。例如,在某些实施例中,触发模块110可以嵌入在读请求函数中,如File_OpenFile::readBlock,并检查目标读请求是否满足预取触发条件。执行模块120逻辑上由一组独立的决策子模块组成,每个子模块匹配并处理一种访问模式。以此方式,如果想要支持新的访问模式,只需添加一个匹配的模式匹配和处理模块。预取逻辑因此变得清晰,简明和有效,从而有效地缩短预取时间。
图2示出了根据本公开的实施例的方法200的流程图。可以理解方法200可以实现在如图1所示的存储***架构100中。
在框210,触发模块210接收针对存储器页面130的读请求。在某些实施例中,触发模块210可以确定该读请求是与哪个存储器页面相关联的。例如,触发模块210可以根据读请求中包括的存储器页面地址信息来确定对应的存储器页面。
在框220,触发模块210判断该读请求是否满足预取操作的触发条件。在某些实施例中,如果该读操作是针对存储器页面130的初始读请求,则该请求可以触发对存储器页面130的预取操作。
在其他实施例中,触发模块210可以基于历史预取操作的历史信息来确定该读请求是否满足预取操作的触发条件。例如,前一次预取操作结束后可以设置标识,用于指示下次预取操作的时间。
以此方式,满足触发条件的读请求可以触发预取操作,而非所有的读请求触发预取操作,从而有效地减少了I/O消耗。
在框230,如果该读操作满足预取操作的触发条件,则执行模块120确定所触发的预取操作的窗口大小。如果该预取是针对存储器页面130的初始预取,也即,不存在针对存储器页面130的预取操作历史信息,则该预取操作的窗口大小可以根据读请求的大小来确定。在某些实施例中,预取操作的窗口大小与读请求的大小可以基于以下公式(1)来确定。
size=read_size*modulus 0 (1)
其中,“size”表示本次预取操作的窗口大小,“read_size”表示读请求的大小,“modulus 0”表示倍数参数,例如2或4。可以理解modulus 0可以取任意合适的值。预取操作的窗口大小与读请求的大小也可以是非线性的关系。
如果所触发的预取操作不是初始预取操作,则执行模块120可以根据历史预取操作来确定预取操作的大小。例如,在某些实施例中,预取操作的窗口大小可以基于以下公式(2)来确定。
size=prev_size*modulus 1 (2)
其中,“size”表示本次预取操作的窗口大小,“prev_size”表示前一次预取操作窗口的大小,“modulus 1”表示倍数参数,例如2。可以理解modulus 1可以取任意合适的值。本次预取操作的窗口大小与前一次预取操作的大小也可以是非线性的关系。
在某些实施例中,如果预取操作为异步预取,则可以置设提前预取量。例如,在某些实施例中,提前预取量可以等于前一次预取操作的窗口大小并且初始预取的提前预取量可以为该初始预取操作的窗口大小与读请求的大小的差值。可以理解,可以设置任意合适的提前预取量。
在某些实施例中,预取窗口的大小可以通过以下公式(3)来确定:
size_actual=min(size/ASYNC_RATIO,ra_buffer_caches) (3)
其中,“size”表示预取操作的窗口大小,“size_actual”表示实际预取操作的窗口大小ASYNC_RATIO可以取值8。当内存充裕时,完全展开异步预取;否则缩减异步预取量至预读大小的约1/8。以此方式,可以在内存紧张时,在不牺牲I/O大小的前提下减少近一半的预取内存消耗。
表3示出了顺序的三次预取操作的信息。应理解,表3示出的数值仅为解释说明之目的,而非限制本发明。
表3
从表3可以看出,针对缓冲区高速缓存0的预取,可以预取到缓冲区高速缓存3。针对缓冲区高速缓存1的预取,可以预取到缓冲区高速缓存7。针对缓冲区高速缓存4的预取,可以预取到缓冲区高速缓存15。在某些实施例中,如果下一读请求是针对缓冲区高速缓存3的预取,则触发模块110可以确定该读请求不满足触发条件,因为缓冲区高速缓存3的内容已经被提前预取,从而有效地减少了I/O消耗。在某些实施例中,预取操作的窗口的大小的上限由缓冲区高速缓存的大小(ra_buffer_caches)确定。
在某些实施例中,针对存储器页面130的读请求是交织的,因此预取操作可以是交织的。如图3所示,读请求序列310、320以及330是顺序的并且是并发的,因此针对存储器页面130的预取操作可以是交织的。可以理解,本公开的实施例可以支持任意合适的预取操作模式。例如,预取操作模式可以是矩阵类型的和/或随机的。在示例性实施例中,通过向执行模块120添加支持不同访问类型的子模块来扩展存储***构架100可以支持的预取模式。
在框240,执行模块120基于窗口的大小来触发执行预取操作。在某些实施例中,如果预取操作为初始预取操作,则启动磁盘I/O来加载当前缓冲区高速缓存,同时应用程序将暂时挂起以等待I/O。在某实施例中,确定要访问的相邻高速缓存并开始同步预取。
在某些实施例中,如果历史信息中有与本次预取操作相关联的标识,则在本次预取操作被触发之后,该标识可以被清除,以避免重复触发。在其他实施例中,在本次预取操作之后,也可以设置针对下一次预取操作的标识。
表4示出了根据本公开的某些实施例的伪码。可以理解,表4中的伪码仅为示例性的,而非限制性的。
表4
图4A和4B示出了根据本公开的实施例的存储***的性能的仿真结果图。图4A示出了在并发读请求序列的情况下,根据本公开的实施例的存储***以及根据传统方法的存储***的性能的仿真结果图。在图4A所示的仿真环境中,读请求的大小为8KB。从图4A可以看出,在单个第一次连续读取中,两种方法的吞吐量都很高。当存在两个并发读取序列交织时,传统方法的吞吐量迅速下降到300M/S和280MBM/S,而根据本公开的实施例的吞吐量不受影响。当达到10个并发读取序列时,传统方法的吞吐量降低到122.9MB/S,而根据本公开的实施例的吞吐量仍然高于353MB/s。
图4B示出了在随机接入读请求序列的情况下,根据本公开的实施例的存储***以及根据传统方法的存储***的性能的仿真结果图。在图4B所示的仿真环境中,创建了一个2G文件,然后通过混合随机访问和顺序访问来访问它。顺序部分从文件的开始处开始并在第1000个MB处结束。随机读取在文件的后半部分。按顺序访问的数据为1000MB,随机访问从1MB逐渐增加到100MB。每个读请求都有一个完整的缓冲区高速缓存8KB。
从图4B可以看出,预取操作的总体I/O吞吐量随着随机访问的增加而降低,并且根据本公开的实施例的预取操作与传统的方法保持相当大的优势。当顺序访问的随机访问比例为1:100时,传统方法的吞吐量为170.18MB/S,根据本公开的实施例的方法的吞吐量为220.15MB/S,根据本公开的实施例的方法性能提高了28.9%。当随机访问比率上升到10:100时,传统方法的吞吐量为50.10MB/S以及根据本公开的实施例的方法的吞吐量为60.39MB/S。根据本公开的实施例的方法性能提高了25.4%。
图5示出了适合于用来实现本公开实施例的电子设备500的示意性框图。如图所示,设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如过程200,可由处理单元501执行。例如,在一些实施例中,过程200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序被加载到RAM 503并由CPU 501执行时,可以执行上文描述的过程200的一个或多个步骤。备选地,在其他实施例中,CPU 501也可以以其他任何适当的方式被配置以实现上述过程。
通过以上描述可以看出,本公开的解决方案适用于如下应用:该应用在虚拟机管理***中,基于目标进程的标识信息对虚拟机进行动态分组。本公开的实施例通过获取目标进程的标识信息;基于目标进程的标识信息从多个虚拟机中确定运行有目标进程的虚拟机;将确定出的虚拟机分到一个虚拟机分组中,从而提高虚拟机配置和管理的效率。
本公开可以是方法、装置、***和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是——但不限于——电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种计算机实现的方法,包括:
接收针对存储器页面的读请求;
确定所述读请求是否满足针对所述存储器页面的预取操作的触发条件;
响应于所述读请求满足所述触发条件,基于所述存储器页面的历史预取操作的历史信息,确定所述预取操作的窗口大小;以及
基于所述窗口大小触发所述预取操作的执行。
2.根据权利要求1所述的方法,其中确定所述预取操作的窗口大小包括:
响应于所述读请求为针对所述存储器页面的初始读请求,基于所述读操作的大小来确定所述窗口大小。
3.根据权利要求1所述的方法,其中确定所述预取操作的窗口大小包括:
确定所述历史信息中与所述预取操作有关的标识是否存在;以及
响应于所述标识的存在,基于所述历史预取操作中的最后预取操作的窗口大小来确定所述窗口大小。
4.根据权利要求3所述的方法,还包括:
响应于完成所述预取操作,清除与所述预取操作有关的标识。
5.根据权利要求1所述的方法,还包括:
响应于完成所述预取操作,设置与下一预取操作有关的标识。
6.根据权利要求1所述的方法,其中所述触发条件至少包括以下中的任一项:
所述读请求为针对所述存储器页面的初始读请求;或
所述历史信息中存在与所述预取操作有关的标识。
7.一种电子设备,包括:
至少一个处理单元;以及
至少一个存储器,其耦合至所述至少一个处理单元并且存储有机器可执行指令,当所述指令由所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:
接收针对存储器页面的读请求;
确定所述读请求是否满足针对所述存储器页面的预取操作的触发条件;
响应于所述读请求满足所述触发条件,基于所述存储器页面的历史预取操作的历史信息,确定所述预取操作的窗口大小;以及
基于所述窗口大小触发所述预取操作的执行。
8.根据权利要求7所述的设备,其中确定所述预取操作的窗口大小包括:
响应于所述读请求为针对所述存储器页面的初始读请求,基于所述读操作的大小来确定所述窗口大小。
9.根据权利要求7所述的设备,其中确定所述预取操作的窗口大小包括:
确定所述历史信息中与所述预取操作有关的标识是否存在;以及
响应于所述标识的存在,基于所述历史预取操作中的最后预取操作的窗口大小来确定所述窗口大小。
10.根据权利要求9所述的设备,所述动作还包括:
响应于完成所述预取操作,清除与所述预取操作有关的标识。
11.根据权利要求7所述的设备,所述动作还包括:
响应于完成所述预取操作,设置与下一预取操作有关的标识。
12.根据权利要求7所述的设备,其中所述触发条件至少包括以下中的任一项:
所述读请求为针对所述存储器页面的初始读请求;或
所述历史信息中存在与所述预取操作有关的标识。
13.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行:
接收针对存储器页面的读请求;
确定所述读请求是否满足针对所述存储器页面的预取操作的触发条件;
响应于所述读请求满足所述触发条件,基于所述存储器页面的历史预取操作的历史信息,确定所述预取操作的窗口大小;以及
基于所述窗口大小触发所述预取操作的执行。
14.根据权利要求13所述的计算机程序产品,其中确定所述预取操作的窗口大小包括:
响应于所述读请求为针对所述存储器页面的初始读请求,基于所述读操作的大小来确定所述窗口大小。
15.根据权利要求13所述的计算机程序产品,其中确定所述预取操作的窗口大小包括:
确定所述历史信息中与所述预取操作有关的标识是否存在;以及响应于所述标识的存在,基于所述历史预取操作中的最后预取操作的窗口大小来确定所述窗口大小。
16.根据权利要求15所述的计算机程序产品,其中所述机器可执行指令在被执行时使机器进一步执行:
响应于完成所述预取操作,清除与所述预取操作有关的标识。
17.根据权利要求13所述的计算机程序产品,其中所述机器可执行指令在被执行时使机器进一步执行::
响应于完成所述预取操作,设置与下一预取操作有关的标识。
18.根据权利要求13所述的计算机程序产品,其中所述触发条件至少包括以下中的任一项:
所述读请求为针对所述存储器页面的初始读请求;或
所述历史信息中存在与所述预取操作有关的标识。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810618354.0A CN110609796B (zh) | 2018-06-15 | 2018-06-15 | 用于存储***中预取的方法、设备和计算机程序产品 |
US16/382,357 US11099996B2 (en) | 2018-06-15 | 2019-04-12 | Method, device, and computer program product for prefetching in storage systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810618354.0A CN110609796B (zh) | 2018-06-15 | 2018-06-15 | 用于存储***中预取的方法、设备和计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110609796A true CN110609796A (zh) | 2019-12-24 |
CN110609796B CN110609796B (zh) | 2023-07-21 |
Family
ID=68839947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810618354.0A Active CN110609796B (zh) | 2018-06-15 | 2018-06-15 | 用于存储***中预取的方法、设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11099996B2 (zh) |
CN (1) | CN110609796B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296692A (zh) * | 2020-09-29 | 2021-08-24 | 阿里云计算有限公司 | 数据读取方法及装置 |
CN116737605A (zh) * | 2023-08-11 | 2023-09-12 | 上海燧原科技有限公司 | 基于芯片多级存储的数据预取方法、装置、设备及介质 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110609796B (zh) * | 2018-06-15 | 2023-07-21 | 伊姆西Ip控股有限责任公司 | 用于存储***中预取的方法、设备和计算机程序产品 |
CN114818454A (zh) * | 2021-01-29 | 2022-07-29 | 伊姆西Ip控股有限责任公司 | 模型训练方法、数据处理方法、电子设备和程序产品 |
US20210286727A1 (en) * | 2021-03-26 | 2021-09-16 | Intel Corporation | Dynamic random access memory (dram) with scalable meta data |
CN114489469B (zh) * | 2021-07-20 | 2022-12-23 | 荣耀终端有限公司 | 一种数据读取方法、电子设备及存储介质 |
CN113672176B (zh) * | 2021-08-13 | 2023-12-29 | 济南浪潮数据技术有限公司 | 一种数据读取方法、***、设备及计算机可读存储介质 |
CN114461588B (zh) * | 2021-08-20 | 2023-01-24 | 荣耀终端有限公司 | 调节预读窗口的方法及电子设备 |
CN114924798B (zh) * | 2022-07-19 | 2022-10-11 | 北京卡普拉科技有限公司 | 针对异步i/o技术的数据预取方法、***、电子设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6484239B1 (en) * | 1997-12-29 | 2002-11-19 | Intel Corporation | Prefetch queue |
US20120054448A1 (en) * | 2010-08-26 | 2012-03-01 | Thompson Stephen P | Method and apparatus for adapting aggressiveness of a pre-fetcher |
US20120072673A1 (en) * | 2010-09-21 | 2012-03-22 | Kai Chirca | Speculation-aware memory controller arbiter |
CN103703440A (zh) * | 2011-07-22 | 2014-04-02 | 国际商业机器公司 | 预取用于使更新轨道离台的数据轨道和奇偶校验数据 |
US20180081814A1 (en) * | 2016-09-22 | 2018-03-22 | International Business Machines Corporation | Quality of cache management in a computer |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6834330B2 (en) | 2002-05-21 | 2004-12-21 | Emc Corporation | Pre-fetch of records identified by an I/O trace |
US8463781B1 (en) | 2002-06-25 | 2013-06-11 | Emc Corporation | Pre-fetch of records identified by an index record |
US7702857B2 (en) * | 2007-08-22 | 2010-04-20 | International Business Machines Corporation | Adjusting parameters used to prefetch data from storage into cache |
US7899996B1 (en) | 2007-12-31 | 2011-03-01 | Emc Corporation | Full track read for adaptive pre-fetching of data |
US8285941B2 (en) * | 2008-02-25 | 2012-10-09 | International Business Machines Corporation | Enhancing timeliness of cache prefetching |
US9026740B1 (en) | 2012-06-13 | 2015-05-05 | Emc Corporation | Prefetch data needed in the near future for delta compression |
US9201573B1 (en) | 2013-03-15 | 2015-12-01 | Emc Corporation | Adaptive GUI pre-fetching |
WO2014201696A1 (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 一种文件读取方法、存储设备及读取*** |
US9747215B2 (en) * | 2015-12-14 | 2017-08-29 | Via Alliance Semiconductor Co., Ltd. | Stride reference prefetcher |
US10496542B1 (en) | 2017-04-27 | 2019-12-03 | EMC IP Holding Company LLC | Input/output patterns and data pre-fetch |
US10713053B2 (en) * | 2018-04-06 | 2020-07-14 | Intel Corporation | Adaptive spatial access prefetcher apparatus and method |
CN110609796B (zh) * | 2018-06-15 | 2023-07-21 | 伊姆西Ip控股有限责任公司 | 用于存储***中预取的方法、设备和计算机程序产品 |
-
2018
- 2018-06-15 CN CN201810618354.0A patent/CN110609796B/zh active Active
-
2019
- 2019-04-12 US US16/382,357 patent/US11099996B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6484239B1 (en) * | 1997-12-29 | 2002-11-19 | Intel Corporation | Prefetch queue |
US20120054448A1 (en) * | 2010-08-26 | 2012-03-01 | Thompson Stephen P | Method and apparatus for adapting aggressiveness of a pre-fetcher |
US20120072673A1 (en) * | 2010-09-21 | 2012-03-22 | Kai Chirca | Speculation-aware memory controller arbiter |
CN103703440A (zh) * | 2011-07-22 | 2014-04-02 | 国际商业机器公司 | 预取用于使更新轨道离台的数据轨道和奇偶校验数据 |
US20180081814A1 (en) * | 2016-09-22 | 2018-03-22 | International Business Machines Corporation | Quality of cache management in a computer |
Non-Patent Citations (1)
Title |
---|
程玉娟: "嵌入式实时操作***MQX的内核分析及应用研究", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296692A (zh) * | 2020-09-29 | 2021-08-24 | 阿里云计算有限公司 | 数据读取方法及装置 |
CN113296692B (zh) * | 2020-09-29 | 2022-08-16 | 阿里云计算有限公司 | 数据读取方法及装置 |
CN116737605A (zh) * | 2023-08-11 | 2023-09-12 | 上海燧原科技有限公司 | 基于芯片多级存储的数据预取方法、装置、设备及介质 |
CN116737605B (zh) * | 2023-08-11 | 2023-11-14 | 上海燧原科技有限公司 | 基于芯片多级存储的数据预取方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20190384711A1 (en) | 2019-12-19 |
CN110609796B (zh) | 2023-07-21 |
US11099996B2 (en) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110609796B (zh) | 用于存储***中预取的方法、设备和计算机程序产品 | |
US20210382719A1 (en) | Apparatuses, methods, and systems for access synchronization in a shared memory | |
US10452551B2 (en) | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register | |
JP7159223B2 (ja) | キャッシュの競合を管理するための方法およびシステム | |
US10956328B2 (en) | Selective downstream cache processing for data access | |
US9158705B2 (en) | Stride-based translation lookaside buffer (TLB) prefetching with adaptive offset | |
US11249909B2 (en) | Systems and methods for adaptive multipath probability (AMP) prefetcher | |
US10664279B2 (en) | Instruction prefetching in a computer processor using a prefetch prediction vector | |
EP3398113A1 (en) | Loop code processor optimizations | |
US20170177361A1 (en) | Apparatus and method for accelerating graph analytics | |
US11068612B2 (en) | Microarchitectural techniques to mitigate cache-based data security vulnerabilities | |
US20200210193A1 (en) | Hardware profiler to track instruction sequence information including a blacklisting mechanism and a whitelisting mechanism | |
WO2017116923A1 (en) | Efficient instruction processing for sparse data | |
US11327768B2 (en) | Arithmetic processing apparatus and memory apparatus | |
CN111857823A (zh) | 用于写回指令执行结果的装置和方法、处理装置 | |
US10891130B2 (en) | Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence | |
US20140229677A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
WO2017116927A1 (en) | Zero cache memory system extension | |
US11093401B2 (en) | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction | |
US10268582B2 (en) | Operating different processor cache levels | |
CN116107927A (zh) | 数据处理装置、数据处理方法和电子设备 | |
CN117632263A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |