CN114691024A - 数据预取的方法、装置和设备 - Google Patents

数据预取的方法、装置和设备 Download PDF

Info

Publication number
CN114691024A
CN114691024A CN202011641633.2A CN202011641633A CN114691024A CN 114691024 A CN114691024 A CN 114691024A CN 202011641633 A CN202011641633 A CN 202011641633A CN 114691024 A CN114691024 A CN 114691024A
Authority
CN
China
Prior art keywords
data
storage medium
length
prefetching
prefetch
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.)
Pending
Application number
CN202011641633.2A
Other languages
English (en)
Inventor
王海昕
董如良
吴沛
涂剑洪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011641633.2A priority Critical patent/CN114691024A/zh
Priority to EP21914426.8A priority patent/EP4261670A4/en
Priority to PCT/CN2021/142166 priority patent/WO2022143692A1/zh
Publication of CN114691024A publication Critical patent/CN114691024A/zh
Priority to US18/344,417 priority patent/US20230350807A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种数据预取的方法,在预取数据之前,先获取第一数据访问请求,并根据第一数据访问请求以及数据生命周期确定数据预取策略,从而根据该数据预取策略将存储在第二存储介质的第一数据集存储至第一存储介质中,其中,第一数据集中包括至少一个数据,数据预取策略至少包括预取长度,而数据生命周期用于指示数据在第一存储介质中存储的时长,第二存储介质的读写访问速率低于第一存储介质。如此,通过采用自适应的方式动态调整单次预取数据的预取长度,可以根据上一数据访问请求,为下一数据访问请求提前预取合适长度的数据至第一存储介质,而从而可以尽可能避免出现单次预取数据过多或者单次预取数据过少。

Description

数据预取的方法、装置和设备
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据预取方法、装置和设备。
背景技术
通常情况下,处理器(如CPU、GPU等)访问不同类型的存储介质的速率存在差异。以高速缓存(cache)以及内存(main memory)为例,处理器访问高速缓存中数据的速率通常远远高于处理器访问内存中数据的速率。因此,在处理器进行数据访问之前,可以预先将内存中的数据,预先写入至高速缓存中,这种数据处理方式可以称之为“预取”,可以使得处理器能够直接从高速缓存中访问到相应数据,提高处理器的数据访问效率。但是,传统的预取方法往往是将固定长度的数据,无法保证数据预取的有效性,影响数据处理的性能。因此,如何提供一种更有效的数据预取方法成为亟待解决的技术问题。
发明内容
本申请提供了一种数据预取的方法、装置、设备、计算机可读存储介质以及计算机程序产品,以采用自适应的方式动态调整单次预取数据的预取长度,避免单次预取数据过多而导致预取数据浪费,以及单次预取数据过少而降低处理器的性能。
第一方面,提供一种数据预取方法,在预取数据之前,可以先获取第一数据访问请求,并根据该第一数据访问请求以及数据生命周期确定数据预取策略,从而可以根据该数据预取策略将存储在第二存储介质的第一数据集存储至第一存储介质中,其中,第一数据集包括至少一个数据,数据预取策略至少包括预取长度,而数据生命周期用于指示数据在第一存储介质中存储的时长,第二存储介质的读写访问速率低于第一存储介质。
由于第一存储介质中的数据生命周期,可以反映数据在第一存储介质中的更迭状态,即可以反映第一存储介质中的数据每隔多长时间变化一次,也就是说数据生命周期可以反映第一存储介质中数据变更的规律。基于该数据生命周期所计算出的预取长度,能够契合第一存储介质中的数据更迭规律,从而可以为下一数据访问请求提前预取合适长度的数据至第一存储介质。如此,通过采用自适应的方式动态调整单次预取数据的预取长度,不仅可以尽可能避免出现单次预取数据过多而造成预取数据浪费、挤占第一存储介质的存储空间,也可以尽可能避免出现单次预取数据过小导致数据访问性能较低。
在一种可能的实施方式中,在确定数据预取策略时,还可以结合第一数据访问请求、数据生命周期以及上述第一数据访问请求所属顺序流的属性进行确定,其中,该顺序流包括多个逻辑访问地址LBA连续的数据访问请求,而第一数据访问请求为该多个逻辑区块地址连续的数据访问请求中任意一个。如此,可以针对于不同顺序流的数据访问请求,确定出不同的数据预取策略,例如,可以为不同顺序流的下一数据访问请求确定不同的单次预取数据的预取长度等,从而为数据访问请求确定的单次预取长度的精度可以达到更高水平。其中,顺序流的属性具体可以是包括多个数据访问请求的平均数据访问长度以及该顺序流的已持续时长。其中,平均数据访问长度,可以是通过对多个数据访问请求分别请求访问的数据长度进行求和后再求平均值;顺序流的已持续时长,是指当前已被执行的多个数据访问请求分别持续的时长总和。
在一种可能的实施方式中,在确定数据预取策略时,具体可以是根据第一数据访问请求,确定预取数据在第二存储介质中的起始存储位置,从而从该起始存储位置及其之后的一些数据均为此次预取的数据;同时,可以根据数据生命周期,计算出预取数据的预取长度,从而可以将从该起始存储位置开始的预设长度的数据作为预取数据,并被存储至第一存储介质中。如此,可以根据第一数据访问请求以及数据生命周期,为下一数据访问请求确定需要预取的数据。
在一种可能的实施方式中,在根据预取策略将存储在第二存储介质的第一数据集存储至第一存储介质之前,还可以获取预取长度上限,即为顺序流预取数据的总长度不超过该预取长度上限,从而在确定单次预取数据的预取长度时,可以获取顺序流的已预取长度,并计算出预取长度上限与该已预取长度之间的差值,然后当基于前述方式所确定出的单次预取数据的预取长度大于该差值时,则将预取长度更新为该差值,如此,可以避免此次预取长度过大而导致为该顺序流预取的总长度过长,从而可以尽可能减少预取浪费。进一步的,当单次预取数据的预取长度不大于该差值时,则确定基于前述方式所确定出的单次预取数据的预取长度从第二存储介质中预取数据。
在一种可能的实施方式中,在为顺序流确定预取长度上限时,具体可以是根据顺序流的已访问数据长度以及预取长度基数进行确定。例如,当顺序流的已访问数据长度小于该预取长度基数时,则该顺序流的预取长度上限为该预取长度基数;而当顺序流的已访问数据长度大于该预取长度基数但是小于2倍的预取长度基数时,则该顺序流的预取长度上限可以被调整为预取长度基数的2倍;而当顺序流的已访问数据长度大于2倍的预取长度基数但是小于3倍的预取长度基数时,则该顺序流的预取长度上限可以被调整为预取长度基数的3倍,依此类推。当然,顺序流的预取长度上限也可以是采用其它方式进行确定,本申请对此并不进行限定。
在一种可能的实施方式中,在计算出预取长度基数时,具体可以是基于历史时间段内的多个顺序流的访问数据长度,计算出预取长度基数,其中,基于计算出的预取长度基数为该历史时间段内的多个顺序流预取数据至第一存储介质时,预取数据浪费的数据量总和最小。如此,可以实现预取长度基数的确定,以便于进一步确定出当前时间段内的顺序流的预取长度上限。
在一种可能的实施方式中,顺序流的属性值,如顺序流的数据访问速率等,在没有发生变化时,则每次预取数据的预取长度可以为相同长度,而当顺序流的属性值发生变化后,可以基于变化后的属性值调整单次预取数据的预取长度。如此,可以实现预取数据的动态调整。
在一种可能的实施方式中,数据生命周期可以是根据预设时间段内的第二数据集进行计算的。具体的,可以计算出预设时间段内的第二数据集在第一存储介质中存储时长的平均值,从而可以将该平均值作为数据生命周期,该第二数据集中包括至少一个数据。如此,通过数据统计以及相应的计算,即可确定出数据在第一存储介质中的存储时长,也即确定出数据生命周期。
在一种可能的实施方式中,数据生命周期也可以是实时计算出的。具体的,可以获取第一存储介质的容量以及第一存储介质的数据写入带宽,从而可以根据该第一存储介质的容量以及第一存储介质的数据写入带宽,计算出数据生命周期,例如可以是将第一存储介质的容量与第一存储介质的数据写入带宽的比值作为数据生命周期等。
在一些可能的实施方式中,第一存储介质为缓存,第二存储介质为硬盘,或者,第一存储介质为内存,而第二存储介质为硬盘。当然,在其它可能的实施方式中,第一存储介质为缓存,第二存储介质可以是硬盘等。本实施例中,第一存储介质的数据读写访问速率高于第二存储介质的数据读写访问速率,但是并不限定第一存储介质与第二存储介质的具体实现。
第二方面,本申请提供一种数据预取的装置,所述功耗管理装置包括用于执行第一方面或第一方面任一种可能实现方式中的数据预取的方法的各个模块。
第三方面,本申请提供一种设备,包括处理器和存储器;所述存储器,用于存储计算机指令;所述处理器,用于根据所述计算机指令执行如第一方面或第一方面任一种可能实现方式中的数据预取的方法的操作步骤。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一种可能实现方式中的所述的方法的操作步骤。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一种可能实现方式中的所述的方法的操作步骤。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供一种系统架构的示意图;
图2为本申请实施例提供的一种数据预取的方法流程示意图;
图3为本申请提供的一种数据预取的装置的结构示意图;
图4为本申请提供的一种设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请中的技术方案进行描述。
实际应用时,处理器所需访问的数据可能存储于读性能较高的存储介质中,也可能存储于读性能较低的存储介质中,因此,可以通过数据预取的方式,预先将读性能较差的存储介质中的数据写入至读性能较高的存储介质中,这样,处理器在需要进行数据访问时,可以从读性能较高的存储介质中访问到其所需的数据,从而可以加快处理器的数据访问效率。
以将内存(main memory)中的数据预取到缓存(cache)中为例。如图1所示,为本申请实施例提供的一示例性系统架构图。该系统包括应用100、处理器200、缓存300以及内存400。其中,缓存300以及内存400中存储有数据,并且,处理器200访问缓存300中数据的速率通常高于处理器200访问内存400中数据的速率,相应的,基于实际应用中的成本等因素考虑,缓存300所能存储的数据量通常也小于内存400所能存储的数据量。
其中,应用100可以根据业务需求,向处理器200发送读数据请求,以请求处理器200向应用100反馈相应的数据。处理器200可以先查询缓存300中是否存储有应用100所请求的数据,若存在,则处理器200访问缓存300中的相应数据并将其反馈给应用100;而若不存在,则处理器200可以继续查询内存400中是否存储有应用100所请求的数据,并将在内存400中查询到的数据反馈给应用100。若在内存400中仍然未查找到数据,则处理器200可以从硬盘中继续查找,或者向应用100返回查找失败。
实际应用时,应用100所请求数据的数据量可能较大,因此,处理器200可以将应用100下发的读数据请求拆分成多个数据访问请求(或者称之为读IO请求或数据访问请求的子请求),并对多个数据访问请求进行逐个处理,在缓存300或内存400中访问各个数据访问请求所请求的数据。拆分后的每个数据访问请求的大小可以相同也可以不相同,本实施例不对拆分后的读数据请求的大小进行限定。其中,拆分得到的多个数据访问请求的访问地址(例如,逻辑区块地址(logic block address,LBA))是连续的,而这种访问地址连续的多个数据访问请求可以被称为顺序流。比如,当应用100需要播放1024M(兆)大小的单个视频文件时,假设该单个视频文件的视频数据在存储时的逻辑区块地址连续,则,应用100可以向处理器200发送1024个数据访问请求,并且每个数据访问请求用于请求处理器200反馈1M的视频数据,即第一个数据访问请求可以用于请求从起始逻辑地址开始的连续1M视频数据,第二个数据访问请求用于从上一结束逻辑地址开始继续请求连续1M的视频数据,依此类推,此时,上述多个数据访问请求则可以称为顺序流。
由于处理器200访问缓存300的速率高于处理器200访问内存400的速率,因此,在处理器200访问数据之前,可以预先将处理器200需要访问的数据从内存400中写入至缓存300,这样,处理器200可以在缓存300中访问到其所需的数据,从而实现处理器200访问数据的效率。
其中,在将内存400中的数据预取至缓存300的过程中,预取器201可以根据处理器200执行的上一个数据访问请求,预测处理器200在执行下一个数据访问请求时所需访问的数据,并将预测出的预取数据推荐给缓存300,如将预取数据在内存400中的起始存储地址以及数据长度等信息推荐给缓存300。这样,缓存300可以先查找自身存储的数据中是否包括预取器201推荐的预取数据。若包括,则缓存300可以结束预取操作;而若不包括,则缓存300可以从内存400中查找该数据,并将查找到的数据写入至缓存300中。这样,处理器200在执行下一个数据访问请求时,可以直接从缓存300中查找到其所需访问的数据,而无需从内存400中进行查找。当然,在其它实施方式中,也可以是由预取器201从内存400中访问数据,并将访问到的数据预取至缓存300中。
为了解决传统技术的问题,本申请实施例提供了一种数据预取方法,以尽可能避免每次预取数据时发生预取数据过多或者预取数据过少。具体实现时,预取器201可以根据上一个数据访问请求以及缓存300对应的数据生命周期,为下一个数据访问请求计算出预取数据的预取长度,从而基于该预取长度将内存400中相应的数据集预取至缓存300中。由于缓存300中数据的生命周期,可以反映数据在缓存300中的更迭状态。数据生命周期,可以反映缓存300中的数据每隔多长时间变化一次,也就是说数据生命周期可以反映缓存中数据变更的规律。基于该数据生命周期所计算出的单次预取数据的预取长度,可以契合缓存300中的数据更迭规律,从而可以为顺序流提前预取合适长度的预取数据。如此,通过采用自适应的方式动态调整单次预取数据的预取长度,不仅可以尽可能避免出现单次预取数据过多而造成预取数据浪费、挤占缓存空间,也可以尽可能避免出现单次预取数据过小而降低处理器200的性能。
其中,预取器201可以由软件实现。例如,预取器201可以作为功能模块,部署于缓存300中,用于在处理器200进行数据访问之前,及时将内存400中的数据预取至缓存300中;当然,预取器201也可以是独立于缓存300进行部署,如部署在处理器200所在的物理设备等。可选地,该预取器201可以运行在用户态,用以限制预取器201访问数据的能力,如限制预取器201访问缓存300中存储的数据等。
可选地,为了提升预取器201的运算能力,也可以利用单独的硬件实现预取器201的功能。例如,该预取器201可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
值得注意的是,图1所示的系统架构仅作为一种示例,并不用于限定本申请实施例所适用的系统架构局限于图1所示示例。比如,在其它可能的系统架构中,还可以包括硬盘等设备,而预取器201可以将硬盘中的数据预取至内存400中,或者,将硬盘中的数据预取至缓存300中等。
下面,参见图2所示,为本申请实施例中一种数据预取方法的流程示意图,该方法可以应用于包括如图1所示的系统架构,或者应用于其它可适用的系统架构中,本实施例对此并不进行限定。以应用于图1所示系统架构为例,如图2所示,数据预取方法具体可以由图1中预取器201或者该预取器201所在设备执行,具体方法包括:
S201:获取第一数据访问请求。
实际应用中,顺序流通常包括多个数据访问请求,并可以由处理器200依次执行。处理器200在执行每个数据访问请求时,可以将正在执行的数据访问请求发送给预取器201(为便于描述,以下将该数据访问请求称之为第一数据访问请求),以便由预取器201基于当前处理器200正在执行的第一数据访问请求,预测处理器200在执行该顺序流的下一个数据访问请求时所需访问的数据,并将第二存储介质(如可以是图1中的内存400)中存储的该数据预取至读写访问速率更高的第一存储介质(如可以是图1中的缓存300)。这样,处理器200在执行下一数据访问请求时,可以直接从第二存储介质中访问其所需的数据,以使得处理器200访问数据的速率能够达到较高水平。
实际应用时,第一存储介质具体可以是缓存,而第二存储介质可以是访问速率较低的内存(如同步动态随机存取存储器、动态随机存取存储器等),或者可以是访问速率更低的硬盘。或者,第一存储介质具体可以是内存,而第二存储介质可以是访问速率较低的硬盘等。本实施例中,处理器200访问第一存储介质的速率高于处理器200访问第二存储介质的速率,而对于第一存储介质与第二存储介质在实际应用时的具体组合方式,本实施例对此并不进行限定。
S202:根据第一数据访问请求以及数据生命周期,确定数据预取策略,其中,该数据预取策略包括预取长度,该数据生命周期用于指示数据在第一存储介质中存储的时长。
其中,所确定的数据预取策略中预取数据的预取长度,可以是基于第一存储介质中数据的生命周期进行确定。通常情况下,第一存储介质虽然具有较高的数据读写性能,但是其存储空间通常较小,因此,第一存储介质中的数据通常难以长时间存储于第一存储介质中,当其在第一存储介质中的停留时长达到预设时长后可能会被淘汰,此时,第一存储介质中不再存储该数据。相应的,数据在第一存储介质中的存储时长,即为该数据生命周期,其可以反映第一存储介质中数据的更迭情况,而数据的更迭与写入第一存储介质中的预取数据有关,因此,预取器201可以基于数据生命周期计算出单次预取数据的预取长度。
作为一种确定预取长度的示例,第一存储介质对应的数据生命周期,可以与单次预取数据的预取长度之间存在映射关系,该映射关系可以通过统计第一存储介质在历史时间段内的预取数据的数据生命周期以及该历史时间段内的预取数据对应的最佳预取长度进行建立,其中,基于该最佳预取长度为历史时间段内的顺序流预取数据,可以尽可能使得该历史时间段内的预取数据不存在预取浪费以及预取不足,或者出现预取浪费以及预取不足的数据量最小。这样,预取器201在获得当前第二存储介质中数据的生命周期后,可以根据该映射关系,查找出该数据生命周期所对应的单次预取数据的预取长度。
其中,数据在第一存储介质中的数据生命周期,可以是通过数据统计或者计算的方式进行确定。
具体的,当通过数据统计确定数据生命周期时,预取器201可以统计预设时间段内的第二数据集在第一存储介质中的生命周期,并计算出该预设时间段内第二数据集中的至少一个数据的生命周期的平均值,从而可以将计算得到的平均值作为当前第一存储介质对应的数据生命周期。可选地,也可以是对预设时间段内的数据生命周期进行函数拟合等方式得到当前第一存储介质对应的数据生命周期等,本实施例对此并不进行限定。其中,该预设时间段例如可以是过去的一段时间,如距离当前时刻最近的1小时等。
在一种实现方式中,图1所示的系统架构中还可以包括监控模块202以及中间参数计算模块203。其中,该监控模块202可以用于对存储于第一存储介质中的数据进行监控,从而预取器201所统计的历史时间段内的数据生命周期,可以是由监控模块202提供。进一步的,图1所示的系统架构中还包括中间参数计算模块203,而预取器201针对于历史时间段内的数据生命周期所执行的上述计算过程,可以交由中间参数计算模块203完成。具体的,监控模块202可以将监控得到的多个历史时间段内的数据生命周期,提供给中间参数计算模块203,并由中间参数计算模块203计算出该多个历史时间段内的数据生命周期的平均值。这样,预取器201可以从中间参数计算模块203获取到第一存储介质中数据的生命周期(也即为中间参数计算模块203所计算出的平均值)。如此,可以缓解预取器201的计算压力,降低对于预取器201的计算性能要求。
而当通过数据计算的方式确定数据生命周期时,预取器201可以获取第一存储介质的容量以及当前时刻第一存储介质的数据写入带宽,从而可以根据第一存储介质的容量大小以及数据写入带宽,计算出第一存储介质对应的数据生命周期,如可以是将第一存储介质的容量与数据写入带宽之间的比值,作为第一存储介质对应的数据生命周期等。当然,获取数据生命周期的具体实现方式并不局限于上述示例,本实施例对此并不进行限定。
实际应用时,同一顺序流包括的数据访问请求之间可能存在差异,比如同一顺序流中的不同数据访问请求所请求的数据量存在差异等,从而预取器201在为顺序流确定单次预取数据的长度时,还可以结合数据生命周期以及该顺序流的属性进行确定。
在一种可能的实施方式中,顺序流的属性可以是该顺序流包括的多个数据访问请求的平均数据访问长度(S)以及该顺序流的已持续时长(t),从而预取器201可以获取S和t,并通过下述公式(1)为该顺序流计算出单次预取数据的预取长度(P)。其中,平均数据访问长度(S),可以是通过对多个数据访问请求分别请求访问的数据长度进行求和后再求平均值得到;顺序流的已持续时长(t),是指当前已被执行的多个数据访问请求分别持续的时长总和。
Figure BDA0002880148560000071
可选的,计算单次预取数据的预取长度(P),也可以是由其它模块/设备(如图1所示的系统架构中的预取长度计算模块204)完成。例如,监控模块202可以监控顺序流的已持续时长以及处理器200在执行该顺序流的每个数据访问请求时所访问的数据长度,并将监控得到的多个数据长度提供给中间参数计算模块203,以便由中间参数计算模块203计算出多个数据访问请求的平均数据访问长度(S),同时,监控模块202将监控得到的顺序流的已持续时长(t)提供给预取长度计算模块204;然后,预取长度计算模块204可以根据中间参数计算模块203计算出的S以及监控模块202提供的t,通过公式(1)计算出单次预取数据的预取长度(P)。这样,预取器201可以直接从预取长度计算模块204中获取到单次预取数据的预取长度(P)。
在图1所示的系统架构中,是以监控模块202、中间参数计算模块203以及预取长度计算模块204独立于预取器201为例进行示例性说明。实际应用时,也可以将这些模块(或者部分模块)集成于预取器201中,从而监控模块202、中间参数计算模块203以及预取长度计算模块204所执行的监控以及计算等功能,也可以是由预取器201实现,如由预取器201完成上述计算P值的过程。
值得注意的是,上述计算P值的过程仅作为一种实现示例,在其它可能的实施方式中,预取器201也可以是根据顺序流的属性以及数据生命周期采用其它方式计算出单次预取数据的预取长度,本实施例对此并不进行限定。
S203:根据预取策略将存储在第二存储介质的数据集存储至第一存储介质,所述第二存储介质的读写访问速率低于第一存储介质。
预取器201在确定预取的数据集时,可以根据处理器200发送的第一数据访问请求,解析出被访问数据在第二存储介质中的逻辑起始地址、数据长度等信息。这样,预取器201可以根据解析出的逻辑地址以及数据长度,确定被访问数据在第二存储介质中的逻辑结束地址(当然,若该部分数据之前已经被预取器预取至第一存储介质中,处理器200可以直接从第一存储介质中访问该部分数据)。由于顺序流包括的多个数据访问请求通常是对第二存储介质中连续逻辑地址的数据进行访问,因此,预取器201可以为该顺序流的下一数据访问请求(以下称之为第二数据访问请求),定位出预取数据的起始存储位置,该起始存储位置例如可以是上述逻辑结束地址,从而预取器201在确定预取数据的预取长度后,可以将第二存储介质中从逻辑结束地址之后的该预取长度的数据集(也即预取数据)写入第一存储介质中,或者将该数据集推荐给第一存储介质,以便由第一存储介质主动从第二存储介质中拉取该数据集。示例性,预取器201所确定的数据预取策略还可以用于指示该数据集。
进一步的,由于预取器201确定预取的数据集以及将该数据集由第二存储介质写入第一存储介质的过程需要一定耗时,而在此过程中,处理器200可能已经执行完第一数据访问请求并开始执行第二数据访问请求,这使得在处理器200基于第二数据访问请求在第一存储介质中访问数据之前,预取器201可能尚未及时将数据预取至第一存储介质中(也即出现预取伪命中),从而处理器200可能需要从第二存储介质中访问数据。此时,对于处理器200从第二存储介质中所访问到的数据,再将其预取至第一存储介质后会导致该部分数据存在预取浪费。基于此,在一些可能的实施方式中,预取器201在确定预取数据时,可以调整预取的数据集在第二存储介质中的起始存储位置。比如,预取器201根据第一数据访问请求可以确定处理器200所访问的数据在第二存储介质中的逻辑结束地址为0x6000000,若预取器201从0x6000001开始预取数据,则可能导致0x6000001等多个逻辑地址的数据未及时写入第一存储介质中,从而该部分数据在整个数据生命周期内可能不会被处理器200访问(处理器200已经从第二存储介质中访问到该部分数据),使得该部分数据浪费第一存储介质的存储资源,出现预取伪命中。因此,预取器201可以从0x6001000(或者其它逻辑地址)开始预取数据集,并将数据集写入至第一存储介质中。此时,处理器200可以从第二存储介质中访问0x6000001至0x6000111的数据,而能够从第一存储介质中访问到0x6001000以及其之后的数据,如此,可以避免0x6000001至0x6000111的数据因为未及时写入第一存储介质而不被处理器200访问,从而造成预取数据浪费、挤占第一存储介质的存储空间。
示例性的,预取器201可以是根据第一数据访问请求的数据访问时间来对预取数据的起始存储位置进行调整。比如,预取器201还可以从该第一数据访问请求中解析出数据访问时间等信息,从而可以根据该数据访问时间以及当前时刻,确定调整后的预取数据的起始存储位置。比如,当前时刻与数据访问时间之间的时间间隔越大,则确定调整前后的起始存储位置之间的间隔也越大等。当然,也可以是基于其它方式确定调整后的预取数据的起始存储位置等,本实施例对此并不进行限定。
本实施例中,不仅可以通过上述过程为顺序流确定单次预取数据的预取长度,还可以进一步为该顺序流确定预取数据的总预取长度,即多个单次预取数据的预取长度之和,示例性的,基于第一数据访问请求以及数据生命周期所确定出的数据预取策略,还可以包括顺序流的预取长度上限。如此,可以尽可能避免为该顺序流的预取的数据总量过多而造成预取浪费或者出现预取的数据总量不足。
为此,本实施例还可以进一步包括如下步骤:
S204:获取顺序流的预取长度上限。
在一种可能的实施方式中,预取器201可以获取预取长度基数Lbase以及为该顺序流的已访问数据长度A。其中,顺序流的已访问数据长度A,是指该顺序流包括的已被执行的多个数据访问请求分别请求访问的数据长度总和。这样,根据Lbase以及A,可以计算出该顺序流对应的预取长度上限L,也即计算出为该顺序流预取的最大数据量。例如,可以是通过下述公式(2)以及公式(3)计算出L:
Figure BDA0002880148560000091
L=Lbase*N (3)
其中,N通过对A与Lbase的比值进行向上取整得到。当A与Lbase的比值在区间[0,1]时,可该顺序流的预取长度上限为Lbase;当A与Lbase的比值在区间(1,2]时,该顺序流的预取长度上限为2Lbase;当A与Lbase的比值在区间(2,3]时,该顺序流的预取长度上限为3Lbase,依此类推。在其它实施方式中,预取器201也可以是通过图1中的中间参数计算模块203计算出L等。
作为一种示例,Lbase的取值可以是根据历史时间段内的顺序流的访问数据长度进行计算得到。
具体的,监控模块202可以按照预设时间粒度(如10秒的时长等),划分得到多个历史时间窗口,假设当前时刻为10:00:50,则监控模块可以按照10秒钟的时间粒度,划分得到10:00:40~10:00:50的历史时间窗口、10:00:30~10:00:40的历史时间窗口、10:00:20~10:00:30的历史时间窗口、10:00:10~10:00:20的历史时间窗口以及10:00:00~10:00:10的历史时间窗口等,并分别获取各个历史时间窗口内的多个顺序流最终所访问的数据长度。然后,中间参数计算模块203可以通过下述公式(4)以及公式(5)计算得到预取长度基数Lbase
Figure BDA0002880148560000092
Lbase=argminWaste(x) (5)
其中,Li是指历史时间窗口内统计的第i条顺序流长度,n是指历史时间窗口所包含的顺序流的数量,x即为所要计算出的长度基数Lbase,Waste(x)为预取数据的浪费值。基于公式(4)以及公式(5)所计算出的Lbase,可以使得基于该Lbase为历史时间窗口内的顺序流在第二存储介质中预取数据时,可以使得预取数据浪费的数据量总和最小。
其中,中间参数计算模块203可以分别针对于每个历史时间窗口计算出一个Lbase,并根据计算得到的多个Lbase,确定出最终的Lbase。例如,中间参数计算模块203可以将Lbase大于第一预设值并且该Lbase对应的Waste(x)小于第二预设值的Lbase作为最终的Lbase,或者可以是将多个Lbase的平均值作为最终的Lbase,或者是通过投票的方式,将多个Lbase中相同数量最多的Lbase作为最终的Lbase等。
而在其它示例中,也可以统计出各个历史时间窗口内的顺序流所访问的数据长度,并将出现次数最多的数据访问长度作为Lbase的取值等;或者,Lbase的取值可以是经验值,由技术人员预先设定于预取器201中。本实施例中,对于如何确定Lbase的取值并不进行限定。
相应的,顺序流的预取长度上限除了可以通过上述过程计算得到,也可以是经验值,并由技术人员预先完成设定等。本实施例中,对于如何确定顺序流的预取长度上限并不进行限定。
S205:基于获取的顺序流的预取长度上限对单次预取数据的预取长度进行校验和调整。
本实施例中,在通过上述Lbase以及A为该顺序流计算出预取数据的预取长度上限L后,还可以利用该L对单次预取数据的预取长度P进行校验和调整。具体的,预取器201可以在确定出数据集的预取长度P后,计算该顺序流的预取长度上限L与已预取的数据长度Lhistory之间的差值,并比较计算出的单次预取数据的预取长度P是否大于该差值。若不大于,则可以基于计算出的P值从第二存储介质中预取相应的数据集至第一存储介质,而若大于,表明利用计算出的P值预取数据后,会使得该顺序流的总预取数据的长度超过预取长度上限L,此时,预取器201可以减小这次预取数据时的预取长度P值,具体可以是将当前计算出的预取长度P调整为顺序流的预取长度上限L与已预取的数据长度Lhistory之间的差值,从而使得P、Lhistory与L之间满足下述公式(6)。
Lhistory+P≤L (6)
通过上述对P值的校验和调整,可以尽可能避免为该顺序流预取数据的数据量过多而导致预取浪费。
本实施例中,在计算出单次预取数据的预取长度P后,后续每次均可以基于该预取长度P为顺序流预取数据。当然,在一些实施方式中,也可以每次对单次预取数据的预取长度P值进行重新计算,或者,可以是对上一次单次预取数据的预取长度P进行相应调整,并将调整后的预取长度P作为此次预取数据的预取长度。
比如,实际应用时,顺序流的属性可能会不断发生变化,如顺序流的已持续时长(t)逐渐递增、处理器200已经执行的多个数据访问请求的平均数据访问长度(S)存在波动等,因此,当基于顺序流的属性为该顺序流计算出单次预取数据的预取长度P时,预取器201可以根据变化后的属性重新计算出新的预取长度P值,并利用新计算出的预取长度P值预取相应数据。或者,预取器201可以对上一次预取数据时所采用的预取长度P值进行调整,并将调整后的预取长度P值作为此次预取数据的预取长度,如可以是根据S/t值的变化比例,对上一次预取数据时所采用的预取长度P值进行相应的增大或者减小等。
本实施例中,基于数据生命周期,可以反映第一存储介质中的数据每隔多长时间变化一次,也就是说数据生命周期可以反映第一存储介质中数据变更的规律,从而根据该数据生命周期所计算出的预取长度,能够契合第一存储介质中的数据更迭规律,并可以为下一数据访问请求提前预取合适长度的数据至第一存储介质。如此,通过采用自适应的方式动态调整单次预取数据的预取长度,不仅可以尽可能避免出现单次预取数据过多而造成预取数据浪费、挤占第一存储介质的存储空间,也可以尽可能避免出现单次预取数据过小导致数据访问性能较低。
需要说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本申请的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
上文中结合图1至图2,详细描述了本申请所提供的数据预取的方法,下面将结合图3至图4,描述根据本申请所提供的数据预取的装置和设备。
图3为本申请提供的一种数据预取的装置结构示意图,该装置300可以包括:
获取模块301,用于获取第一数据访问请求;
确定模块302,用于根据所述第一数据访问请求和数据生命周期确定数据预取策略,所述数据预取策略包括预取长度,所述数据生命周期用于指示数据在第一存储介质中存储的时长;
存储模块303,用于根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质,所述第二存储介质的读写访问速率低于所述第一存储介质,所述第一数据集包括至少一个数据。
应理解的是,本申请实施例的装置300可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图2所示的数据预取的方法时,装置300及其各个模块也可以为软件模块。
在一种可能的实施方式中,所述确定模块302,具体用于根据所述第一数据访问请求、数据生命周期以及所述第一数据访问请求所属顺序流的属性,确定数据预取策略,所述顺序流包括多个逻辑区块地址LBA连续的数据访问请求,所述第一数据访问请求为所述多个LBA连续的数据访问请求中任意一个。其中,所述顺序流的属性包括所述多个数据访问请求的平均数据访问长度以及所述顺序流的已持续时长。
在一种可能的实施方式中,所述确定模块302,具体用于:
根据所述第一数据访问请求,确定所述数据集在所述第二存储介质中的起始存储位置;
根据所述数据生命周期,计算所述数据集的预取长度,所述数据集包括从所述第二存储介质中从所述起始存储位置开始的预取长度的数据。
在一种可能的实施方式中,所述获取模块301,还用于在根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质之前,获取获取预取长度上限,并获取所述顺序流的已预取长度;
所述装置300还包括:
更新模块304,用于当所述预取长度大于所述预取长度上限与所述已预取长度之间的差值时,将所述预取长度更新为所述差值。
在一种可能的实施方式中,所述装置300还包括:
计算模块305,用于根据所述顺序流的已访问数据长度与预取长度基数,计算出所述顺序流的预取长度上限。
在一种可能的实施方式中,所述计算模块305,还用于基于历史时间段内的多个顺序流的访问数据长度,计算出所述预取长度基数;其中,基于所述预取长度基数为所述历史时间段内的多个顺序流预取数据至所述第一存储介质时,预取数据浪费的数据量总和最小。
在一种可能的实施方式中,所述装置300还包括调整模块306,用于当所述顺序流的属性值发生变化时,利用变化后的属性值调整所述预取长度。
在一种可能的实施方式中,所述数据生命周期根据预设时间段内第二数据集在所述第一存储介质中存储时长的平均值确定,所述第二数据集包括至少一个数据。
在一种可能的实施方式中,所述获取模块301,还用于获取所述第一存储介质的容量以及所述第一存储介质的数据写入带宽;
所述装置300还包括计算模块305,用于根据所述第一存储介质的容量以及所述数据写入带宽,计算出所述数据生命周期。
在一种可能的实施方式中,所述第一存储介质为缓存,所述第二存储介质为内存;
或,所述第一存储介质为内存,所述第二存储介质为硬盘。
根据本申请实施例的装置300可对应于执行本申请实施例中描述的方法,并且装置300中的各个单元的上述和其它操作和/或功能分别为了实现图2中的各个方法的相应流程,为了简洁,在此不再赘述。
图4为本申请提供的一种设备400的示意图,如图所示,所述设备400包括处理器401、存储介质402、通信接口403和内存单元404。其中,处理器401、存储介质402、通信接口403、内存单元404通过总线405进行通信,也可以通过其他手段实现通信。该存储器402用于存储指令,该处理器401用于执行该存储器402存储的指令。该存储器402存储程序代码,且处理器401可以调用存储器402中存储的程序代码执行以下操作:
获取第一数据访问请求;
根据所述第一数据访问请求和数据生命周期确定数据预取策略,所述数据预取策略包括预取长度,所述数据生命周期用于指示数据在第一存储介质中存储的时长;
根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质,所述第二存储介质的读写访问速率低于所述第一存储介质,所述第一数据集包括至少一个数据。
应理解,在本申请实施例中,该处理器401可以是CPU,该处理器401还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立器件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
该存储器402可以包括只读存储器和随机存取存储器,并向处理器401提供指令和数据。存储器402还可以包括非易失性随机存取存储器。例如,存储器402还可以存储设备类型的信息。
该存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
该通信接口403用于与设备400连接的其它设备进行通信,如设备400可以通过通信接口403获取第一数据访问请求等。该总线405除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线405。
应理解,根据本申请实施例的设备400可对应于本申请实施例中的装置300,并可以对应于执行根据本申请实施例中图2所示方法中的相应主体,并且设备400中的各个模块的上述和其它操作和/或功能分别为了实现图2中的各个方法的相应流程,为了简洁,在此不再赘述。
此外,本申请还提供了一种设备,该设备中可以包括上述图4所示的设备400,该设备可以实现图2中的各个方法的相应流程,为了简洁,在此不再赘述。
此外,本申请还提供了一种计算机程序产品,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solidstate disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
另外需说明的是,以上所描述的装置实施例仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。另外,本申请提供的装置附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (22)

1.一种数据预取的方法,其特征在于,所述方法包括:
获取第一数据访问请求;
根据所述第一数据访问请求和数据生命周期确定数据预取策略,所述数据预取策略包括预取长度,所述数据生命周期用于指示数据在第一存储介质中存储的时长;
根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质,所述第二存储介质的读写访问速率低于所述第一存储介质,所述第一数据集包括至少一个数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一数据访问请求和数据生命周期确定数据预取策略,包括:
根据所述第一数据访问请求、所述数据生命周期以及所述第一数据访问请求所属顺序流的属性,确定所述数据预取策略,所述顺序流包括多个逻辑区块地址LBA连续的数据访问请求,所述第一数据访问请求为所述多个LBA连续的数据访问请求中任意一个,所述顺序流的属性包括所述多个数据访问请求的平均数据访问长度以及所述顺序流的已持续时长。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一数据访问请求和数据生命周期确定数据预取策略,包括:
根据所述第一数据访问请求,确定所述数据集在所述第二存储介质中的起始存储位置;
根据所述数据生命周期,计算所述数据集的预取长度,所述数据集包括从所述第二存储介质中从所述起始存储位置开始的预取长度的数据。
4.根据权利要求1至3任一项所述的方法,其特征在于,在根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质之前,所述方法还包括:
获取预取长度上限;
获取顺序流的已预取长度;
当所述预取长度大于所述预取长度上限与所述已预取长度之间的差值时,将所述预取长度更新为所述差值。
5.根据权利4所述的方法,其特征在于,所述方法还包括:
根据所述顺序流的已访问数据长度与预取长度基数,计算出所述顺序流的预取长度上限。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
基于历史时间段内的多个顺序流的访问数据长度,计算出所述预取长度基数;
其中,基于所述预取长度基数为所述历史时间段内的多个顺序流预取数据至所述第一存储介质时,预取数据浪费的数据量总和最小。
7.根据权利要求2至6任一项所述的方法,其特征在于,所述方法还包括:
当所述顺序流的属性值发生变化时,利用变化后的属性值调整所述预取长度。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述数据生命周期根据预设时间段内第二数据集在所述第一存储介质中存储时长的平均值确定,所述第二数据集包括至少一个数据。
9.根据权利要求1至7任一项所述的方法,其特征在于,所述方法还包括:
获取所述第一存储介质的容量以及所述第一存储介质的数据写入带宽;
根据所述第一存储介质的容量以及所述数据写入带宽,计算出所述数据生命周期。
10.根据权利要求1至9任一项所述的方法,其特征在于,
所述第一存储介质为缓存,所述第二存储介质为内存;
或,所述第一存储介质为内存,所述第二存储介质为硬盘。
11.一种数据预取的装置,其特征在于,所述装置包括:
获取模块,用于获取第一数据访问请求;
确定模块,用于根据所述第一数据访问请求和数据生命周期确定数据预取策略,所述数据预取策略包括预取长度,所述数据生命周期用于指示数据在第一存储介质中存储的时长;
存储模块,用于根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质,所述第二存储介质的读写访问速率低于所述第一存储介质,所述第一数据集包括至少一个数据。
12.根据权利要求11所述的装置,其特征在于,所述确定模块,具体用于根据所述第一数据访问请求、所述数据生命周期以及所述第一数据访问请求所属顺序流的属性,确定所述数据预取策略,所述顺序流包括多个逻辑区块地址LBA连续的数据访问请求,所述第一数据访问请求为所述多个逻辑区块地址LBA连续的数据访问请求中任意一个,所述顺序流的属性包括所述多个数据访问请求的平均数据访问长度以及所述顺序流的已持续时长。
13.根据权利要求11或12任一项所述的装置,其特征在于,所述确定模块,具体用于:
根据所述第一数据访问请求,确定所述数据集在所述第二存储介质中的起始存储位置;
根据所述数据生命周期,计算所述数据集的预取长度,所述数据集包括从所述第二存储介质中从所述起始存储位置开始的预取长度的数据。
14.根据权利要求11至13任一项所述的装置,其特征在于,所述获取模块还用于在根据所述预取策略将存储在第二存储介质的第一数据集存储至第一存储介质之前,获取预取长度上限以及顺序流的已预取长度;
所述装置还包括:更新模块,用于当所述预取长度大于所述预取长度上限与所述已预取长度之间的差值时,将所述预取长度更新为所述差值。
15.根据权利14所述的装置,其特征在于,所述装置还包括:
计算模块,用于根据所述顺序流的已访问数据长度与预取长度基数,计算出所述顺序流的预取长度上限。
16.根据权利要求15所述的装置,其特征在于,所述计算模块,还用于基于历史时间段内的多个顺序流的访问数据长度,计算出所述预取长度基数;其中,基于所述预取长度基数为所述历史时间段内的多个顺序流预取数据至所述第一存储介质时,预取数据浪费的数据量总和最小。
17.根据权利要求12至16任一项所述的装置,其特征在于,所述装置还包括调整模块,用于当所述顺序流的属性值发生变化时,利用变化后的属性值调整所述预取长度。
18.根据权利要求11至17任一项所述的装置,其特征在于,所述数据生命周期根据预设时间段内第二数据集在所述第一存储介质中存储时长的平均值确定,所述第二数据集包括至少一个数据。
19.根据权利要求11至17任一项所述的装置,其特征在于,所述获取模块,还用于获取所述第一存储介质的容量以及所述第一存储介质的数据写入带宽;
所述装置还包括计算模块,用于根据所述第一存储介质的容量以及所述数据写入带宽,计算出所述数据生命周期。
20.根据权利要求11至19任一项所述的装置,其特征在于,
所述第一存储介质为缓存,所述第二存储介质为内存;
或,所述第一存储介质为内存,所述第二存储介质为硬盘。
21.一种设备,其特征在于,包括处理器和存储器;
所述存储器,用于存储计算机指令;
所述处理器,用于根据所述计算机指令执行如权利要求1至10任一项所述方法的操作步骤。
22.一种计算机可读存储介质,其特征在于,包括指令,所述指令用于实现如权利要求1至10中任一项所述方法的操作步骤。
CN202011641633.2A 2020-12-31 2020-12-31 数据预取的方法、装置和设备 Pending CN114691024A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202011641633.2A CN114691024A (zh) 2020-12-31 2020-12-31 数据预取的方法、装置和设备
EP21914426.8A EP4261670A4 (en) 2020-12-31 2021-12-28 DATA PRE-EXTRACTION METHOD AND APPARATUS, AND DEVICE
PCT/CN2021/142166 WO2022143692A1 (zh) 2020-12-31 2021-12-28 数据预取的方法、装置和设备
US18/344,417 US20230350807A1 (en) 2020-12-31 2023-06-29 Data Prefetch Method and Apparatus, and Device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011641633.2A CN114691024A (zh) 2020-12-31 2020-12-31 数据预取的方法、装置和设备

Publications (1)

Publication Number Publication Date
CN114691024A true CN114691024A (zh) 2022-07-01

Family

ID=82136317

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011641633.2A Pending CN114691024A (zh) 2020-12-31 2020-12-31 数据预取的方法、装置和设备

Country Status (4)

Country Link
US (1) US20230350807A1 (zh)
EP (1) EP4261670A4 (zh)
CN (1) CN114691024A (zh)
WO (1) WO2022143692A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116340246A (zh) * 2023-05-22 2023-06-27 珠海星云智联科技有限公司 用于直接内存访问读取操作的数据预读方法及介质
CN116800769A (zh) * 2023-08-29 2023-09-22 北京趋动智能科技有限公司 Api远程调用请求的处理方法、处理装置、用户终端及服务器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6760818B2 (en) * 2002-05-01 2004-07-06 Koninklijke Philips Electronics N.V. Memory region based data pre-fetching
JP2008225914A (ja) * 2007-03-13 2008-09-25 Fujitsu Ltd プリフェッチ制御装置、記憶装置システムおよびプリフェッチ制御方法
CN110226158B (zh) * 2017-12-29 2021-06-29 华为技术有限公司 一种数据预取方法、装置和存储设备
CN110837513B (zh) * 2019-11-07 2023-05-12 腾讯科技(深圳)有限公司 一种缓存更新方法、装置、服务器及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116340246A (zh) * 2023-05-22 2023-06-27 珠海星云智联科技有限公司 用于直接内存访问读取操作的数据预读方法及介质
CN116340246B (zh) * 2023-05-22 2023-08-18 珠海星云智联科技有限公司 用于直接内存访问读取操作的数据预读方法及介质
CN116800769A (zh) * 2023-08-29 2023-09-22 北京趋动智能科技有限公司 Api远程调用请求的处理方法、处理装置、用户终端及服务器
CN116800769B (zh) * 2023-08-29 2023-12-29 北京趋动智能科技有限公司 Api远程调用请求的处理方法、处理装置、用户终端及服务器

Also Published As

Publication number Publication date
US20230350807A1 (en) 2023-11-02
EP4261670A1 (en) 2023-10-18
WO2022143692A1 (zh) 2022-07-07
EP4261670A4 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
US10776263B2 (en) Non-deterministic window scheduling for data storage systems
US9164676B2 (en) Storing multi-stream non-linear access patterns in a flash based file-system
US10810125B2 (en) Prefetching data
US9280474B2 (en) Adaptive data prefetching
US8972662B2 (en) Dynamically adjusted threshold for population of secondary cache
RU2438165C2 (ru) Устройство и способы для уменьшения вытеснений в многоуровневой иерархии кэша
US8683136B2 (en) Apparatus and method for improving data prefetching efficiency using history based prefetching
TWI594185B (zh) 資料預取器以及預取資料至快取記憶體的方法
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
WO2022143692A1 (zh) 数据预取的方法、装置和设备
US8560767B2 (en) Optimizing EDRAM refresh rates in a high performance cache architecture
US9836396B2 (en) Method for managing a last level cache and apparatus utilizing the same
US8832414B2 (en) Dynamically determining the profitability of direct fetching in a multicore architecture
US9367466B2 (en) Conditional prefetching
KR20090095633A (ko) 낮은-복잡도 명령 프리패치 시스템을 위한 방법 및 장치
US10599577B2 (en) Admission control for memory access requests
CN112199304B (zh) 数据预取方法及装置
US8250304B2 (en) Cache memory device and system with set and group limited priority and casting management of I/O type data injection
US10261905B2 (en) Accessing cache with access delay reduction mechanism
US20110202727A1 (en) Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache
KR20050084232A (ko) 데이터 프리패치 방법, 프리패치 시스템 및 프로세싱시스템
US20200004636A1 (en) Data Storage System with Strategic Contention Avoidance
CN114461590A (zh) 一种基于关联规则的数据库文件页预取方法及装置
CN115080459A (zh) 缓存管理方法及装置、计算机可读存储介质
US11994993B2 (en) Adaptive prefetcher for shared system cache

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