CN116795736A - 数据预读取方法、装置、电子设备和存储介质 - Google Patents
数据预读取方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116795736A CN116795736A CN202210260418.0A CN202210260418A CN116795736A CN 116795736 A CN116795736 A CN 116795736A CN 202210260418 A CN202210260418 A CN 202210260418A CN 116795736 A CN116795736 A CN 116795736A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- read
- memory
- cache
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 134
- 230000015654 memory Effects 0.000 claims abstract description 323
- 238000013500 data storage Methods 0.000 claims abstract description 9
- 230000008030 elimination Effects 0.000 claims description 29
- 238000003379 elimination reaction Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 10
- 239000000758 substrate Substances 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 34
- 230000006870 function Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 10
- 230000001960 triggered effect Effects 0.000 description 10
- 239000007787 solid Substances 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000011010 flushing procedure Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000010410 layer Substances 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种数据预读取方法、装置、电子设备和存储介质,涉及数据存储领域。在数据访问过程中,若处理器的缓存命中了数据访问请求所需的待读取数据,且该待读取数据未被读取,处理器可根据待读取数据的内存地址从内存提供的多种策略中,选择与该内存地址匹配的第一策略,进而,处理器根据该第一策略和待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据写入处理器的缓存中。处理器无需按照固有的预取方案对数据进行预读取,避免了缓存中存储了大量其他预取方案所带来的无用数据,降低了缓存中的污染,提高了数据访问过程中处理器的缓存命中率,从而提高了处理器的数据访问效率以及处理器的数据访问性能。
Description
技术领域
本申请涉及数据存储领域,尤其涉及一种数据预读取方法、装置、电子设备和存储介质。
背景技术
内存墙(memory wall)是指由于内存的性能提升与处理器的性能提升不匹配,内存的性能较低阻碍了处理器性能发挥的瓶颈的现象。为解决内存墙的问题,处理器采用预取方案将内存中的数据读取到缓存(cache)。预取方案包括硬件预取和软件预取,硬件预取是指处理器根据内存的历史访问信息将内存中数据读取到缓存,软件预取是指处理器根据设定的软件预取指令将内存中数据读取到缓存。
目前的预取方案对流式数据的预读取命中率较高,但在业务数据的数据结构较为复杂的情况下,如链式数据或者树状分布的一组数据等,处理器会按照流失数据的预取方案,将大量无用的数据从内存预读取到缓存中,导致缓存被污染以及缓存命中率降低。因此,如何提供一种更高效的数据预读取方法成为亟待解决的问题。
发明内容
本申请提供一种数据预读取方法、装置、电子设备和存储介质,解决了数据结构较为复杂的情况下,缓存被污染以及缓存命中率降低的问题。
本申请采用如下技术方案。
第一方面,本申请提供了一种数据预读取方法,该数据预读取方法应用于处理器,或者支持实现该处理器实现数据预读取方法的物理设备,例如,该物理设备包括芯片系统。示例的,以处理器执行该数据预读取方法为例进行说明:首先,处理器获取数据访问请求,其中,该数据访问请求用于请求内存中待读取数据。其次,若处理器的缓存命中了待读取数据,且缓存中的待读取数据未被读取,则处理器从内存存储的多种策略中,选择与待读取数据的内存地址匹配的第一策略;该第一策略用于指示将从内存中读取的数据的内存地址。此外,处理器还根据第一策略和内存地址,确定预读取地址,该预读取地址用于指示内存中与待读取数据存在关联关系的数据。最后,处理器将预读取地址指示的数据写入缓存。
在数据访问过程中,若处理器的缓存命中了数据访问请求所需的待读取数据,且该待读取数据未被读取,处理器可根据待读取数据的内存地址从内存提供的多种策略中,选择与该内存地址匹配的第一策略,进而,处理器根据该第一策略和待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据写入处理器的缓存中。由于处理器可在内存提供的多种策略中,选择与待读取数据的内存地址匹配的策略,并根据该匹配到的策略和待读取数据的内存地址确定预读取地址,避免了处理器按照历史访问信息来预测预读取地址,提高了处理器对于数据访问请求所需数据的预测准确率。而且,在通常的技术方案中,如数据结构较为复杂(链式数据或者树状分布的一组数据),处理器依然按照流式数据的预取方案从内存中读取数据,使得缓存被污染;本实施例提供的技术方案中,处理器无需按照固有的预取方案对数据进行预读取,当待读取数据的内存地址不同时,处理器从内存提供的多种策略中确定的策略也不同,避免了缓存中存储了大量其他预取方案所带来的无用数据,降低了缓存中的污染,提高了数据访问过程中处理器的缓存命中率,从而提高了处理器的数据访问效率以及处理器的数据访问性能。
在一种可选的实现方式中,该数据预读取方法还包括:第一,处理器从内存存储的多种策略中,选择与内存地址匹配的第二策略;该第二策略用于指示将从缓存中淘汰的数据的内存地址。第二,处理器根据内存地址和第二策略,确定淘汰地址;该淘汰地址用于指示在设定的条件下,缓存中不再被处理器读取的数据。第三,处理器淘汰缓存中淘汰地址指示的数据。处理器还可在内存提供的多种策略中,选择淘汰缓存中数据所需的第二策略,并根据该第二策略确定在设定的条件下,缓存中不再被处理器读取的数据,也就是说,处理器在数据访问请求所需的数据的数据结构较为复杂的情况下,还可对缓存中的无用数据进行淘汰,从而减少缓存中的无用数据,避免缓存被该无用数据污染,导致缓存命中率降低。
在一种可能的情形中,处理器淘汰缓存中淘汰地址指示的数据的过程,可以包括以下步骤:处理器删除缓存中淘汰地址指示的数据。以及,处理器删除预取数据块表中与淘汰地址关联的信息,该预取数据块表用于指示缓存中存储的数据的内存地址。在本实施例中,处理器在设定的条件下,删除缓存中不再被处理器读取的数据,可以避免缓存被无用数据污染,从而提高缓存的存储资源利用率。而且,处理器还可将缓存中预读取的数据量保持在一个设定的阈值范围内,减少了数据的冲刷导致的缓存失败。还有一种可选的示例,处理器对淘汰地址指示的数据进行淘汰可以是用其他数据将该淘汰地址指示的数据进行覆盖。
在另一种可选的实现方式中,在处理器将预读取地址指示的数据写入缓存之后,该数据预读取方法还包括:处理器将预读取地址写入预取数据块表,该预取数据块表用于指示缓存中存储的数据的内存地址。处理器通过预取数据块表来对缓存中的数据进行记录,在数据访问过程中,处理器查询该预取数据块表可快速定位到待读取的数据,从而提高处理器的数据访问速度。另外,在缓存的数据淘汰过程中,处理器也可根据该预取数据块表快速查询到数据的内存地址,从而删除缓存中的无用数据,提高了缓存的存储资源利用率。
在一些可能的情形中,该预取数据块表包括:预读取地址指示的数据的索引信息。索引信息用于指示缓存中,与预读取地址指示的数据关联的其他数据。示例的,当数据访问请求所需数据的数据结构较为复杂的情况下,处理器可通过该索引信息快速定位缓存中与预读取地址指示的数据关联的其他数据,从而提高处理器的数据访问效率。以及,当处理器淘汰缓存中数据时,处理器也可根据该索引信息确定缓存中将被淘汰的数据的内存地址。
在另一些可能的情形中,该预取数据块表还包括:预读取地址指示的数据的状态信息,该状态信息用于指示预读取地址指示的数据的是否被处理器读取。示例的,若状态信息指示了预读取地址指示的数据已经被处理器读取,则处理器无需去确定新的策略,按照前述的第一策略继续从内存中预读取数据即可,避免了处理器频繁更换数据预读取的策略的过程,提高了缓存的预读取效率以及处理器的数据访问效率。
在又一种可选的实现方式中,在处理器获取数据访问请求之前,该数据预读取方法还包括:首先,处理器获取业务请求。其次,处理器从内存存储的多种策略中,选择与业务请求匹配的第三策略;该第三策略用于指示将读取到缓存的数据的内存地址,将读取到缓存的数据包括业务请求所需的初始数据。此外,处理器根据业务请求包含的根地址和第三策略确定初始读取地址;其中,该根地址用于指示业务请求所需的初始数据,前述的初始读取地址用于指示内存中与初始数据关联的数据,且初始数据关联的数据包括待读取数据。最后,处理器将初始读取地址指示的数据写入缓存。
本实施例中,在处理器读取数据执行业务请求指示的业务之前,还可从内存提供的多种策略中,选择与业务请求匹配的第三策略,如该初始化策略是指处理器执行初始化程序实现的预取策略,进而,处理器根据第三策略和根地址确定初始读取地址,并将初始地址指示的数据写入缓存。因此,处理器在接收到数据访问请求之后可从缓存中查询是否命中了数据访问请求指示的待读取数据,并在缓存命中了待读取数据、且该待读取数据未被处理器读取的情况下,根据多种策略中的其他策略(如前述的第一策略)将内存中预读取地址指示的数据写入缓存,避免了处理器仅能根据流式数据的预取方案从内存中预读取数据,导致数据结构较为复杂的情况下缓存被污染的问题,提高了数据访问过程中的缓存命中率。
在又一种可选的实现方式中,缓存中存储有预取数据组表,以及一个或多个预取组,其中的一个预取组包括前述预读取地址指示的数据。该预取数据组表包含:一个预取组的优先级信息,该优先级信息用于指示一个预取组的淘汰顺序。由于缓存所具有的存储空间较小,通过设定属于同一批次读取到缓存的预取组(如该预取组包括预读取地址指示的一个或多个数据)的优先级,从而在处理器淘汰缓存中数据的过程中,按照多个预取组的优先级信息对缓存中的预取组进行淘汰,避免了缓存的存储资源被持续占用,提高了缓存的存储资源利用率。
在一些可能的情形中,预取数据组表还包含:处理器读取一个预取组所采用的策略的标识。在处理器进行数据访问的过程中,通过对预取组所采用的策略进行标识,有利于针对于多个预取组所采用的策略进行区分,避免了采用不同策略的预取组按照相同的方式进行淘汰,导致缓存中的数据发生紊乱。
在又一种可选的实现方式中,内存中存储有预取程序表,该预取程序表用于指示内存中存储的多个预取程序,一个预取程序对应前述多种策略中的一种策略。预取程序可以包括,但不限于:初始化程序、触发程序和淘汰程序等。在一些情形中,预取程序也可以是指应用组件,或者微服务(micro service)。本实施例通过预取程序来执行数据预读取的策略,避免了处理器和策略不兼容,导致无法实现数据预读取的过程。另外,预取程序也可以是由用户编写的,在一些可行的示例中,预取程序可提供给调用接口,以便用户端或客户端等根据业务请求的类型、缓存的存储空间大小、处理器的架构或者其他信息,对该预取程序进行调整,以避免缓存被污染和提高缓存命中率,从而提高处理器的数据访问性能。
在又一种可选的实现方式中,该数据预读取方法还包括:处理器将多种策略对应的预取程序写入内存,多种策略对应的预取程序包含的第一程序用于支持实现前述的第一策略。在一些可行的示例中,该多种策略对应的预取程序也可以部署在处理器所包含的存储器中。
第二方面,提供了一种数据预读取装置,该数据预读取装置应用于处理器,所述数据预读取装置包括用于执行第一方面或第一方面任一种可能设计中的数据预读取方法的各个模块。示例的,该数据预读取装置包括:获取单元、策略匹配单元、地址查询单元和预读取单元。
获取单元,用于获取数据访问请求,其中,该数据访问请求用于请求内存中待读取数据。策略匹配单元,用于若处理器的缓存命中了待读取数据,且缓存中的待读取数据未被读取,则从内存存储的多种策略中,选择与待读取数据的内存地址匹配的第一策略。第一策略用于指示将从内存中读取的数据的内存地址。地址查询单元,用于根据第一策略和内存地址确定预读取地址,该预读取地址用于指示内存中与待读取数据存在关联关系的数据。预读取单元,用于将预读取地址指示的数据写入缓存。
当数据预读取装置用于实现上述第一方面中任一方面的方法实施例时,有益效果可以参见第一方面中任一方面的描述,此处不再赘述。所述数据预读取装置具有实现上述第一方面中任一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可选的实现方式中,策略匹配单元,还用于从内存存储的多种策略中,选择与内存地址匹配的第二策略,该第二策略用于指示将从缓存中淘汰的数据的内存地址。地址查询单元,还用于根据内存地址和第二策略,确定淘汰地址,该淘汰地址用于指示在设定的条件下,缓存中不再被处理器读取的数据。前述的数据预读取装置还包括:数据淘汰单元,用于淘汰缓存中淘汰地址指示的数据。
在另一种可选的实现方式中,数据淘汰单元,具体用于:删除缓存中淘汰地址指示的数据。以及,删除预取数据块表中与淘汰地址关联的信息,预取数据块表用于指示缓存中存储的数据的内存地址。
在又一种可选的实现方式中,数据预读取装置还包括:索引单元,用于将预读取地址写入预取数据块表,预取数据块表用于指示缓存中存储的数据的内存地址。
在又一种可选的实现方式中,预取数据块表包括:预读取地址指示的数据的索引信息。索引信息用于指示缓存中,与预读取地址指示的数据关联的其他数据。预取数据块表还包括:预读取地址指示的数据的状态信息。状态信息用于指示预读取地址指示的数据的是否被处理器读取。
在又一种可选的实现方式中,获取单元,还用于获取业务请求。策略匹配单元,还用于从内存存储的多种策略中,选择与业务请求匹配的第三策略;该第三策略用于指示将读取到缓存的数据的内存地址,将读取到缓存的数据包括业务请求所需的初始数据。地址查询单元,还用于根据业务请求包含的根地址和第三策略确定初始读取地址;该根地址用于指示业务请求所需的初始数据,初始读取地址用于指示内存中与初始数据关联的数据,初始数据关联的数据包括待读取数据。预读取单元,还用于将初始读取地址指示的数据写入缓存。
在又一种可选的实现方式中,缓存中存储有预取数据组表,以及一个或多个预取组,其中的一个预取组包括预读取地址指示的数据。预取数据组表包含:前述一个预取组的优先级信息,优先级信息用于指示该一个预取组的淘汰顺序。预取数据组表还包含:处理器读取该一个预取组所采用的策略的标识。
在又一种可选的实现方式中,内存中存储有预取程序表,该预取程序表用于指示内存中存储的多个预取程序,一个预取程序对应多种策略中的一种策略。
在又一种可选的实现方式中,数据预读取装置还包括:配置单元,用于将多种策略对应的预取程序写入内存,该多种策略对应的预取程序包含的第一程序用于支持实现第一策略。
第三方面,提供了一种电子设备,包括:存储器和处理器。该存储器,用于存储计算机指令。该处理器,用于从存储器中调用并运行该计算机指令,以执行第一方面中任一项的方法的操作步骤。
示例的,该电子设备可以是指计算设备(如服务器、计算机等),或者存储设备(如集中式存储系统、分布式存储系统)等。
第四方面,提供了一种计算机可读存储介质,该存储介质中存储有计算机程序或指令,当计算机程序或指令被电子设备执行时,执行第一方面中任一项的方法的操作步骤
第五方面,提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算设备执行如第一方面或第一方面任意一种可能的实现方式中所述方法的操作步骤。该计算设备可以是指第三方面提供的电子设备。
第六方面,本申请提供一种芯片,包括控制电路和接口电路,接口电路用于接收来自芯片之外的其它设备的信号并传输至控制电路,或将来自控制电路的信号发送给芯片之外的其它设备,控制电路通过逻辑电路或执行代码指令用于实现上述第一方面或第一方面中任一种可能实现方式中方法的操作步骤。
第七方面,提供了一种数据存储系统,包括:处理器和内存。处理器获取数据访问请求,其中,数据访问请求用于请求内存中待读取数据。若处理器的缓存命中了待读取数据,且缓存中的待读取数据未被读取,则处理器从内存存储的多种策略中,选择与待读取数据的内存地址匹配的第一策略;该第一策略用于指示将从内存中读取的数据的内存地址。处理器根据第一策略和内存地址确定预读取地址;预读取地址用于指示内存中与待读取数据存在关联关系的数据。处理器将预读取地址指示的数据写入缓存。
当数据存储系统用于实现上述第一方面中任一方面的方法实施例时,有益效果可以参见第一方面中任一方面的描述,此处不再赘述。所述数据存储系统具有实现上述第一方面中任一方面的方法实例中行为的功能
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供的一种数据存储系统示意图;
图2为本申请提供的一种处理器的结构示意图;
图3为本申请提供的数据预读取方法的流程示意图一;
图4为本申请提供的数据预读取方法的流程示意图二;
图5为本申请提供的数据预读取方法的流程示意图三;
图6为本申请提供的预取器的结构示意图;
图7为本申请提供的数据结构的示例图;
图8为本申请提供的数据预读取装置的结构示意图。
具体实施方式
在数据访问过程中,若处理器的缓存命中了数据访问请求所需的待读取数据,且该待读取数据未被读取,处理器可根据待读取数据的内存地址从内存提供的多种策略中,选择与该内存地址匹配的第一策略,进而,处理器根据该第一策略和待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据写入处理器的缓存中。由于处理器可在内存提供的多种策略中,选择与待读取数据的内存地址匹配的策略,并根据该匹配到的策略和待读取数据的内存地址确定预读取地址,避免了处理器按照历史访问信息来预测预读取地址,提高了处理器对于数据访问请求所需数据的预测准确率。
而且,在通常的技术方案中,如数据结构较为复杂(链式数据或者树状分布的一组数据),处理器依然按照流式数据的预取方案从内存中读取数据,使得缓存被污染;本实施例提供的技术方案中,处理器无需按照固有的预取方案对数据进行预读取,当待读取数据的内存地址不同时,处理器从内存提供的多种策略中确定的策略也不同,避免了缓存中存储了大量其他预取方案所带来的无用数据,降低了缓存中的污染,提高了数据访问过程中处理器的缓存命中率,从而提高了处理器的数据访问效率以及处理器的数据访问性能。
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍。
图1为本申请提供的一种数据存储系统示意图,该数据存储系统包括计算设备100和存储系统120。在图1所示的应用场景中,用户通过应用程序来存取数据。运行这些应用程序的计算机可以被称为“计算设备”。计算设备100可以是物理机,也可以是虚拟机。物理计算设备包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。在一些可选的情形中,该计算设备100还可称为客户端、用户端或请求端等,不予限定。
在一种可能的示例中,计算设备100通过网络130访问存储系统120以存取数据,例如,该网络130可以包括交换机110。
在另一种可能的示例中,计算设备100也可以通过有线连接与存储系统120通信,例如,通用串行总线(universal serial bus,USB)或快捷外围部件互连标准(PeripheralComponent Interconnect Express,PCIe)总线、融合总线(unified bus,UB或Ubus)等。
图1所示的存储系统120可以是一个集中式存储系统。集中式存储系统的特点是有一个统一的入口,所有从外部设备来的数据都要经过这个入口,这个入口就是集中式存储系统的引擎121。引擎121是集中式存储系统中最为核心的部件,许多存储系统的高级功能都在其中实现。
如图1所示,引擎121中可以有一个或多个控制器,图1以引擎121包含一个控制器为例予以说明。在一种可能的示例中,若引擎121具有多个控制器,任意两个控制器之间可以具有镜像通道,实现任意两个控制器互为备份的功能,从而避免硬件故障导致整个存储系统120的不可用。
引擎121还包含前端接口1211和后端接口1214,其中前端接口1211用于与计算设备100通信,从而为计算设备100提供数据访问服务。而后端接口1214用于与硬盘通信,以扩充存储系统120的容量。通过后端接口1214,引擎121可以连接更多的硬盘,从而形成一个非常大的存储资源池。
在硬件上,如图1所示,控制器至少包括处理器1212、内存1213。处理器1212是一个中央处理单元(central processing unit,CPU),用于处理来自存储系统120外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统120内部生成的请求。示例性的,处理器1212通过前端端口1211接收计算设备100发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存1213中。当内存1213中的数据总量达到一定阈值时,处理器1212通过后端端口将内存1213中存储的数据发送给机械硬盘1211、机械硬盘1222、固态硬盘(solid state drive,SSD)1223或其他硬盘1224中至少一个硬盘进行持久化存储。
内存1213是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random accessmemory,DRAM),或者存储级存储器(storage class memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(random access memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。
另外,内存1213还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是SSD。实际应用中,控制器中可配置多个内存1213,以及不同类型的内存1213。本实施例不对内存1213的数量和类型进行限定。此外,可对内存1213进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存1213中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
内存1213中存储有软件程序,处理器1212运行内存1213中的软件程序可实现对硬盘的管理。例如将硬盘抽象化为存储资源池,并将存储资源池以逻辑单元号(logical unitnumber,LUN)的形式提供给服务器使用等。这里的LUN其实就是在服务器上看到的硬盘。当然,一些集中式存储系统本身也是文件服务器,可以为服务器提供共享文件服务。
如图1所示,在该系统中,引擎121可以不具有硬盘槽位,硬盘需要放置在硬盘框122中,后端接口1214与硬盘框122通信。后端接口1214以适配卡的形态存在于引擎121中,一个引擎121上可以同时使用两个或两个以上后端接口1214来连接多个硬盘框。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIe总线与处理器1212通信。
需要说明的是,图1中只示出了一个引擎121,然而在实际应用中,存储系统中可包含两个或两个以上引擎121,多个引擎121之间做冗余或者负载均衡。
硬盘框122包括控制单元1225和若干个硬盘。控制单元1225可具有多种形态。一种情况下,硬盘框122属于智能盘框,如图1所示,控制单元1225包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘的数据,或者从硬盘读取出来将要发送给控制器的数据。另一种情况下,控制单元1225是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processingunits,NPU)等处理芯片。通常情况下,控制单元1225的数量可以是一个,也可以是两个或两个以上。控制单元1225的功能可以卸载到网卡1226上。换言之,在该种实施方式中,硬盘框122内部不具有控制单元1225,而是由网卡1226来完成数据读写、地址转换以及其他计算功能。此时,网卡1226是一个智能网卡。它可以包含CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘的数据,或者从硬盘读取出来将要发送给控制器的数据。也可以是一个可编程的电子部件,例如DPU。硬盘框122中的网卡1226和硬盘之间没有归属关系,网卡1226可访问该硬盘框122中任意一个硬盘(如图1所示出的机械硬盘1221、机械硬盘1222、固态硬盘1223和其他硬盘1224),因此在存储空间不足时扩展硬盘会较为便捷。
按照引擎121与硬盘框122之间通信协议的类型,硬盘框122可能是串行连接的小型计算机系统接口(serial attached small computer system interface,SAS)的硬盘框,也可能是NVMe(Non-Volatile Memory express)硬盘框以及其他类型的硬盘框。SAS硬盘框,采用SAS3.0协议,每个框支持25块SAS硬盘。引擎121通过板载SAS接口或者SAS接口模块与硬盘框122连接。NVMe硬盘框,更像一个完整的计算机系统,NVMe硬盘插在NVMe硬盘框内。NVMe硬盘框再通过远程直接内存访问(remote direct memory access,RDMA)端口与引擎121连接。
在一种可选的实现方式中,存储系统120为盘控一体的集中式存储系统,存储系统120中不具有上述的硬盘框122,引擎121用于管理通过硬盘槽连接的多个硬盘。硬盘槽的功能可以由后端接口1214实现。
在另一种可选的实现方式中,图1所示的存储系统120是分布式存储系统,该分布式存储系统包括计算设备集群和存储设备集群,计算设备集群包括一个或多个计算设备,各个计算设备之间可以相互通信。计算设备可以是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,计算设备可以包括处理器、内存和网卡等。其中,处理器是一个CPU,用于处理来自计算设备外部的数据访问请求,或者计算设备内部生成的请求。示例性的,处理器接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存中。当内存中的数据总量达到一定阈值时,处理器将内存中存储的数据发送给存储设备进行持久化存储。除此之外,处理器还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。在一种示例中,任意一个计算设备可通过网络访问存储设备集群中的任意一个存储设备。存储设备集群包括多个存储设备。一个存储设备包括一个或多个控制器、网卡与多个硬盘,该网卡用于与计算设备通信。
在又一种可选的实现方式中,图1所示出的存储系统120可以是指一个服务器,例如,该服务器用于提供计算资源。就一台服务器来说,它可以包含多个处理器或处理器核,每个处理器或者处理核可以是一个计算资源,因此一台服务器可以提供多个计算资源。例如,服务器可以是指应用服务器或文件服务器等。
值得注意的是,以上仅为本实施例提供的应用场景或系统的示例,不应理解为对本申请的限定。
为解决内存的性能提升与处理器的性能提升不匹配的内存墙问题,处理器1212中设置有一个或多个缓存,该缓存可以用于预读取内存1213中存储的数据,以减少处理器1212的处理时延。如图2所示,图2为本申请提供的一种处理器的结构示意图,图2中的处理器210为上述的处理器1212提供了一种可能的硬件实现方式,图2中的内存220可实现上述内存1213的功能。
示例的,处理器210可以是,但不限于CPU、NPU或GPU等具有神经网络处理能力的处理器,也可以是可以是网络处理器(network processor,NP)等;还可以是数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。本申请对此不予限定。
该处理器210包括多个处理器核(core),如核211、核212和核213,内存控制器214以及多级缓存,如一级缓存(L1)、二级缓存(L2)以及与内存220进行数据交互的最后一级缓存(last level cache,LLC)。在图2提供的实施例中,LLC是指三级缓存(L3),多个处理器核中的一个处理器核可包括L1、L2以及预取器,如核211包括预取器211A、核212包括预取器212A、核213包括预取器213A。值得注意的是,图2仅为本申请实施例提供的示例,在一些可能的示例中,处理器210还可以包括更多级的缓存,或更少级的缓存。本文中,在不引起误会的情况下,N级缓存可以用LN Cache来表示,N为正整数,例如,一级缓存可以用L1 Cache来表示,二级缓存可以用L2 Cache来表示,三级缓存可以用L3 Cache来表示,若本文中的处理器还设置有更多级缓存,如四级缓存,该四级缓存可以用L4 Cache来表示。在另一些示例中,若处理器还设置有“异构缓存”,如,某厂商提出一种“2.5级缓存”,该“2.5级缓存”也可以用L2.5 Cache来表示。
在一种可能的情形中,L2 cache可以由多个CPU共享的,也可以装在主板上。L1cache可以分为指令缓存(instruction cache)和数据缓存(data cache),以便CPU能同时在L1 cache中读取指令和数据。
内存控制器214用于管理与规划从内存到处理单元之间的数据传输,可以是一个单独的芯片,或集成在处理单元的芯片中。内存控制器(memory controller)214是处理器210内部控制内存220并用于管理与规划从内存220到处理器核间的数据传输的总线电路控制器。通过内存控制器,内存220与处理器核之间可以交换数据。内存控制器可以是一个单独的芯片,并通过系统总线与处理器核连接。本领域技术人员可以知道,内存控制器也可以被集成到处理器210中,也可以被内置于北桥中,还可以是一块独立的内存控制器芯片,本实施例不对内存控制器的具体位置和存在形式进行限定。实际应用中,内存控制器可以控制必要的逻辑以将数据写入内存220或从内存220中读取数据。内存控制器214可以是通用处理器、专用加速器、GPU、FPGA、嵌入式处理器等处理器系统中的内存控制器。
示例的,处理器210能够通过内存控制器214高速访问内存220,对内存220中的任意一个存储单元(如内存页)进行读操作和写操作。
预取器是指处理器210为实现数据预读取功能所采用的硬件或软件单元。在一种情形中,预取器是指处理器中一个电路芯片,通过执行设定的硬件逻辑来实现处理器的数据预读取功能。在另一种情形中,预取器是指处理器基于计算机执行指令实现的软件单元,如该预取器可支持实现多种预取策略(简称:策略),该预取策略是指处理器210为将数据预读取到缓存或删除缓存中已预读取的数据,通过执行内存220中存储的计算机程序(如预取程序)来实现的。
如图2所示,内存220用于存储应用数据、实现预取程序(如预取程序221和预取程序222)的功能所需的程序代码,以及提供为预取程序进行编程所需的接口库。
预取程序还可以是指应用组件、插件,或者微服务等。如图2所示,预取器211A可由预取程序221支持实现,预取器212A可由预取程序222支持实现,预取器213A可由预取程序223支持实现。值得注意的是,图2仅为本实施例提供的示例,不应理解为对本申请的限定,如处理器核为实现数据访问请求所对应的预取策略,可根据数据访问需求调用并执行内存220中任一个预取程序。
为实现预取程序提供的预取策略的功能,处理器210可提供编译器,该编译器用于将预取程序编译为可执行的程序。
在本实施例中,预取策略可以包括,但不限于以下几种类型:初始化策略、触发策略和淘汰策略等。对应的,预取程序可包括,但不限于:初始化程序、触发程序和淘汰程序等。如预取程序221是初始化程序,预取程序222和预取程序223是两个不同的触发程序,预取程序224是淘汰程序。
其中,初始化程序用于支持实现处理器的初始化策略,该初始化策略用于处理器210在接收到业务请求后,为执行该业务请求指示的业务,处理器210从内存220中预读取数据(或称业务所需的初始数据)到缓存(L1、L2和L3中至少一个),从而提高处理器210执行业务请求的效率。
触发程序用于支持实现处理器的数据预读取策略,如数据预读取策略用于在处理器210执行业务的过程中,根据业务的数据访问需求将内存220中的数据读取到缓存中,从而提高处理器的数据访问效率。
淘汰程序用于支持实现处理器的数据淘汰策略,如数据淘汰策略用于在处理器210在业务执行结束后,删除缓存中保存的已预取的数据,从而释放缓存有限的存储空间,提高缓存的存储资源利用率。
在处理器执行业务之前,处理器210可将将多种策略对应的预取程序写入内存220。值得注意的是,该预取程序可以是设定好的,也可以是用户通过调用接口库编程获得的,不予限定。
如图2所示,接口库225也可称为缓存编程接口库,接口库225提供的预取配置接口包括:预取程序的加载接口、数据地址注册接口以及预取的初始化接口等接口。
在一种可能的情形中,处理器210通过加载接口将预取程序加载到内存220,并将预取程序配置到预取程序表,该预取程序表用于指示指示内存中存储的多个预取程序,一个预取程序对应多种策略中的一种策略。
在另一种可能的情形中,处理器210通过数据地址注册接口可以将数据地址及参数注册到预取数据块表,该预取数据块表用于指示缓存中存储的数据的内存地址。值得注意的是,在处理器还未访问业务所需的其他数据时,该预取数据块表也可以称为初始化目标表。
可选的,为提高处理器的安全性能,在处理器接收到多种策略对应的预取程序后,处理器还可判断该多种策略对应的预取程序的合法性:若预取程序合法,则处理器将该预取程序配置到预取程序表中;若预取程序不合法,则处理器不能加载该预取程序。
在又一种可能的情形中,处理器210通过预取的初始化接口主动触发指定数据对应的内存地址的初始化程序。该指定数据对应的内存地址可以是由业务请求确定的,也可以是有用户配置的。在一些情形中,该指定数据对应的内存地址也可以称为根地址,该根地址指示的数据可称为业务请求所需的初始数据。
本实施例通过预取程序来执行数据预读取的策略,避免了处理器和策略不兼容,导致无法实现数据预读取的过程。另外,预取程序也可以是由用户编写的,在上述示例中,预取程序可提供给调用接口,以便用户端或客户端等根据业务请求的类型、缓存的存储空间大小、处理器的架构或者其他信息,对该预取程序进行调整,以避免缓存被污染和提高缓存命中率,从而提高处理器的数据访问性能。
针对于不同的数据结构,如流式数据、链式数据和树状数据,以及其他结构的数据等,预取程序是不同的。进而,在处理器需读取数据并执行业务的过程中,处理器包括的预取器可从内存中多种预取程序提供的策略中选择合适的策略,并根据该策略进行数据预读取、淘汰以及其他数据访问操作,避免处理器仅能按照流式数据的预取方案从内存中读取数据,导致缓存被污染及缓存命中率降低。
在一些情形中,前述多种策略对应的预取程序也可以部署在处理器所包含的存储器中,以提高处理器调用预取程序的速度,从而减少数据预读取的时延,提高处理器的数据访问效率。
为实现数据访问过程中数据的预读取,下面在图1和图2提供的实施例的基础上提供一种可能的实现方式,图3为本申请提供的数据预读取方法的流程示意图一,示例的,该数据预读取方法可应用于图1所示出的存储系统120,并由处理器1212实现;这里以该数据预读取方法也由图2所示出的处理器210实现为例进行说明,如图3所示,内存220提供的多种策略至少包括:策略1至策略4,如该策略3是由前述的预取程序1(初始化程序)实现的。
如图3所示,该数据预读取方法包括以下步骤S310至S340。
S310,处理器210获取业务请求。
业务请求可以是指应用为实现指定的功能所发起的请求。该应用可以是指大数据应用、人工智能应用或云计算应用等,不予限定。
S320,处理器210从内存220存储的多种预取程序对应的策略中,选择与业务请求匹配的策略3。
如该策略3为前述的初始化策略,该初始化策略用于指示将读取到缓存的数据的内存地址,该将读取到缓存的数据包括业务请求所需的初始数据。
S330,处理器210根据业务请求包含的根地址和初始化策略确定初始读取地址。
该根地址用于指示业务请求所需的初始数据,初始读取地址用于指示内存中与初始数据关联的数据,初始数据关联的数据包括处理器的待读取数据。
其中,该初始数据可以存储在内存220中所包括的多个内存页(page)中,内存页是指内存220中数据访问的最小单位(或称原子单位),或称该内存220的一个存储单元。如初始数据所占据的存储空间为64KB,每个page提供的存储空间为4KB,则该待读取数据经由16次原子操作后被处理器210读取。
如图3所示,初始数据为内存220的根地址a指示的存储位置中所存储的数据,初始数据关联的数据包括地址b中存储的数据,如该地址b中存储的数据为前述的待读取数据。当处理器210确定的初始读取地址较多时,待读取数据可以是指其他初始读取地址对应的数据。
S340,处理器210将初始读取地址指示的数据写入缓存。
示例的,初始读取地址指示的数据包括处理器执行业务请求所需的一个或多个数据。
这里以流式(stream)数据为例,处理器顺序访问内存或者以固定的步长顺序访问内存,如遍历一个数组int A[i]:处理器执行预取初始化的过程可以包括:处理器从根地址a开始预取64字节(byte,B)大小的数据,即预取的起始位置为a,预取深度为16(16个int),预取结束位置为A+64B,处理器将预取到缓存的该数据(地址a至地址a+64B对应的数据)记为数据块A1。若处理器还将地址a+64B至地址a+128B对应的数据预读取到缓存,处理器还可将该数据记为数据块A2。
在处理器读取数据执行业务请求指示的业务之前,还可从内存提供的多种策略中,选择与业务请求匹配的初始化策略(或称第三策略),如该初始化策略是指处理器执行初始化程序实现的预取策略,进而,处理器根据初始化策略和根地址确定初始读取地址,并将初始地址指示的数据写入缓存。因此,处理器在接收到数据访问请求之后可从缓存中查询是否命中了数据访问请求指示的待读取数据,并在缓存命中了待读取数据、且该待读取数据未被处理器读取的情况下,根据多种策略中的其他策略(如前述的触发策略)将内存中预读取地址指示的数据写入缓存,避免了处理器仅能根据流式数据的预取方案从内存中预读取数据,导致数据结构较为复杂的情况下缓存被污染的问题,提高了数据访问过程中的缓存命中率。
在处理器执行业务的过程中,为提高处理器中缓存的命中率以及处理器的数据访问效率,本申请提供一种可行的实施例,如图4所示,图4为本申请提供的数据预读取方法的流程示意图二,该数据预读取方法包括以下步骤S410至S440。
S410,处理器获取数据访问请求。
其中,该数据访问请求用于请求内存中待读取数据。
在数据访问过程中,处理器210的缓存中预读取了一个或多个数据(如图4中缓存所包含的数据a和数据b),若处理器210的缓存中未命中数据访问请求指示的待读取数据,即cache miss了该待读取数据。
若处理器的缓存命中了待读取数据,且缓存中的待读取数据未被读取,则执行S420。
S420,处理器从内存存储的多种策略中,选择与待读取数据的内存地址匹配的策略1。
策略1(或称第一策略)用于指示将从内存中读取的数据的内存地址。如策略1是由前述的触发程序(如预取程序222)实现的。关于策略1和预取程序的更多内容可参考前述图2的相关描述,不予赘述。如图4所示,该待读取数据的内存地址为地址b。
另外,若处理器的缓存命中了待读取数据,且缓存中的待读取数据已被读取,说明该待读取数据的内存地址对应的策略1已被触发,处理器无需为该待读取数据触发新的预取策略,如触发程序对应的触发策略,以及淘汰程序对应的淘汰策略。
S430,处理器根据策略1和内存地址确定预读取地址。
该预读取地址用于指示内存中与待读取数据存在关联关系的数据。
如图4所示,该待读取数据的内存地址为地址b,预读取地址可以是图4所示出的“1”、“2”和“3”,其中的预读取地址“1”和“2”在内存中的存储单元可以是连续的,预读取地址“2”和“3”在内存中的存储单元是不连续的。值得注意的是,图4仅为本实施例提供的预读取地址的示例,不应理解为对本申请的限定。
另外,上述的预读取地址“a”、“b”“1”、“2”和“3”仅为本实施例提供的一种可能的示例,不应理解为对本申请的限定。在另一些可能的示例中,如上述的预读取地址“1”可以是“0000 0001”,上述的预读取地址“2”可以是“0000 0011”;又如上述的预读取地址“a”可以是“A”,上述的预读取地址“b”可以是“B”,本申请对预读取地址的表达方式不予限定。
结合图3和图4所提供的实施例,处理器210在同一批次读取的一个或多个数据可以被称为一个预取组,如图4所示,预取组1包括地址“a”和地址“b”所指示的数据,预取组2包括:地址“1”、地址“2”和地址“3”所指示的数据。
可选的,处理器的缓存中存储有预取数据组表。该预取数据组表用于指示缓存中存储的一个或多个预取组的信息,如下表1所示。
表1
预取组 | 程序(策略)标识 | 优先级信息 |
预取组1 | 3 | 2 |
预取组2 | 1 | 3 |
预取组3 | 2 | 1 |
其中,该预取数据组表包含:预取组的优先级信息,该优先级信息用于指示预取组的淘汰顺序。如预取组1的优先级信息为2,指示了在缓存的数据淘汰过程中,该预取组1会在第二顺序被淘汰。
另外,优先级信息可以是指最近最少使用(least recently used,LRU)信息,LRU信息用于指示在缓存的数据淘汰过程中,内存页的置换顺序。如处理器选择内存中最近最久未使用的内存页予以淘汰。在一些可能的具体示例中,LRU信息赋予内存中每个内存页一个访问字段,该访问字段用来记录内存页自上次被访问以来所经历的时间t,当须淘汰缓存中一个内存页时,选择缓存中内存页对应的t值最大的,即最近最少使用的内存页予以淘汰。关于缓存中的数据淘汰过程的更多内容可参照以下图5的相关描述,不予赘述。
由于缓存所具有的存储空间较小,通过设定属于同一批次读取到缓存的预取组(如该预取组包括预读取地址指示的一个或多个数据)的优先级,从而在处理器淘汰缓存中数据的过程中,按照多个预取组的优先级信息对缓存中的预取组进行淘汰,避免了缓存的存储资源被持续占用,提高了缓存的存储资源利用率。
如表1所示,预取数据组表还包含:处理器读取预取组所采用的策略的标识。如预取组2是处理器210基于策略1确定的预读取地址。在处理器进行数据访问的过程中,通过对预取组所采用的策略进行标识,有利于针对于多个预取组所采用的策略进行区分,避免了采用不同策略的预取组按照相同的方式进行淘汰,导致缓存中的数据发生紊乱。
在一些情况下,由于预取组1和预取组2均是由地址a关联的数据,因此,预取组1和预取组2也可认为是同一个大预取组,在数据淘汰的过程中,处理器可将包括该预取组1和预取组2的大预取组一起淘汰。
请继续参见图4,本实施例提供的数据预读取方法还包括以下步骤S440。
S440,处理器将预读取地址指示的数据写入缓存。
在一种可选的示例中,上述的预读取地址可以是指数据在内存220中的物理地址,处理器210可利用直接内存访问(direct memory access,DMA)技术,基于该物理地址将数据写入到缓存,从而节省数据读取的时间,提升处理器的数据访问性能。
在数据访问过程中,若处理器的缓存命中了数据访问请求所需的待读取数据,且该待读取数据未被读取,处理器可根据待读取数据的内存地址从内存提供的多种策略中,选择与该内存地址匹配的第一策略,进而,处理器根据该第一策略和待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据写入处理器的缓存中。由于处理器可在内存提供的多种策略中,选择与待读取数据的内存地址匹配的策略,并根据该匹配到的策略和待读取数据的内存地址确定预读取地址,避免了处理器按照历史访问信息来预测预读取地址,提高了处理器对于数据访问请求所需数据的预测准确率。
在通常的技术方案中,如数据结构较为复杂(链式数据或者树状分布的一组数据),处理器依然按照流式数据的预取方案从内存中读取数据,使得缓存被污染。
相比之下,本实施例提供的技术方案中,处理器无需按照固有的预取方案对数据进行预读取,当待读取数据的内存地址不同时,处理器从内存提供的多种策略中确定的策略也不同,避免了缓存中存储了大量其他预取方案所带来的无用数据,降低了缓存中的污染,提高了数据访问过程中处理器的缓存命中率(hit rate),从而提高了处理器的数据访问效率以及处理器的数据访问性能。
另外,本申请的上述实施例是以处理器包括的缓存以及与处理器连接的内存为例,来对本申请提供的数据预读取方法来进行说明的。但在一些可能的实现方式中,本申请提供的数据预读取方法还可以应用于任意两级性能不同存储器,如下述的几种可能的示例。
示例1,处理器中的N级缓存和N+1级缓存。
示例2,存储系统中具有缓存功能的SCM和持久化存储器。
示例3,计算设备(如主机、服务器等)的内存与存储器,该存储器是指用于持久化存储数据的存储器,如机械硬盘、固态硬盘等。
示例4,一个存储介质中作用不同的两部分存储区域。如硬盘的不同的存储颗粒,四层式存储单元(quad level cell,QLC)和单层式存储单元(single level cell,SLC),SLC的数据访问速度优于QLC的数据访问速度,处理器可将QLC的数据预读取到SLC中,以提高硬盘的整体访问性能。
值得注意的是,上述几种示例仅为本实施例为说明本申请提供的数据预读取方法的应用场景而给出的示例,本申请提供的数据预读取方法还可以应用于更多种数据预读取的应用场景中,如磁盘的数据通过磁盘控制器预取到内存、将计算设备的内存通过DMA技术预取到本地内存、将远端的内存通过RDMA技术预取到本地内存等,不予赘述。
此外,在一些情形中,若在图4所示出的数据预读取方法中,处理器的缓存未命中待读取数据,则处理器从内存中将该待读取数据读取到缓存中,并从缓存中获取该待读取数据,不予赘述。
由于缓存的存储空间是极为有限的,因此,为降低缓存中数据所占用的空间,在图3和图4所示出的方法实施例的基础上,本申请提供一种数据淘汰方案,如图5所示,图5为本申请提供的数据预读取方法的流程示意图三,在处理器210接收到数据访问请求之后,该数据预读取方法包括以下步骤S510至S530。
S510,处理器210从内存220存储的多种策略中,选择与内存地址匹配的策略2。
该策略2用于指示将从缓存中淘汰的数据的内存地址。如策略2是由前述的淘汰程序(如预取程序224)实现的。关于策略和预取程序的更多内容可参考前述图2的相关描述,不予赘述。如图5所示,数据访问请求所需的待读取数据的内存地址为地址b。
S520,处理器210根据内存地址和策略2,确定淘汰地址。
该淘汰地址用于指示在设定的条件下,缓存中不再被处理器读取的数据。该设定的条件可以是用户配置的,也可以是指处理器根据业务类型进行调整的,还可以是处理器根据前述S420确定的策略1进行获得的。
示例的,如图5所示,若待读取数据的内存地址为:地址“b”,该淘汰地址可以为:地址“a”。
S530,处理器210淘汰缓存中淘汰地址指示的数据。
在一种可选的示例中,处理器210可以删除删除缓存中淘汰地址指示的数据。
还有一种可选的示例,处理器对淘汰地址指示的数据进行淘汰可以是用其他数据将该淘汰地址指示的数据进行覆盖。如将内存中其他地址对应的数据写入缓存中地址“a”对应的存储位置。
在本实施例中,处理器在设定的条件下,删除缓存中不再被处理器读取的数据,可以避免缓存被无用数据污染,从而提高缓存的存储资源利用率。而且,处理器还可将缓存中预读取的数据量保持在一个设定的阈值范围内,减少了数据的冲刷导致的缓存失败。还有一种可选的示例,处理器对淘汰地址指示的数据进行淘汰可以是用其他数据将该淘汰地址指示的数据进行覆盖。
作为一种可选的实现方式,处理器通过预取数据块表来对缓存中的数据进行记录。该预取数据块表用于指示缓存中存储的数据的内存地址。
例如,在数据写入过程中,处理器可将预读取地址写入预取数据块表。如此,在数据访问过程中,处理器查询该预取数据块表中记录的内存地址,可快速定位到待读取的数据,从而提高处理器的数据访问速度。
又如,在数据淘汰过程中,处理器删除预取数据块表中与淘汰地址关联的信息。如此,在缓存的数据淘汰过程中,处理器也可根据该预取数据块表快速查询到数据的内存地址,从而删除缓存中的无用数据,提高了缓存的存储资源利用率。
在一些情形中,预取数据块表还可包括其他信息,如下表2所示,表2示出了一种树状结构的数据预读取的信息。其中,父节点A下具有两个子节点:节点B和节点C,节点B为节点C互为兄弟节点,一个节点对应一个数据块。
表2
索引 | 内存地址 | 父索引 | 所属预取组 | 状态信息 |
节点A | P1 | 节点A | 预取组1 | 已触发 |
节点B | P2 | 节点A | 预取组2 | 未触发 |
节点C | P3 | 节点A | 预取组2 | 未触发 |
其中,预读取地址指示的数据的索引信息,该索引信息用于指示缓存中,与预读取地址指示的数据关联的其他数据。如节点B对应的数据的内存地址为P2,节点B的索引信息指示了该数据属于预取组2,节点B的父索引为节点A。此外,假设预置的深度为2(从当前节点A向下一级进行预读取),由于节点B和节点C同属于一个预取组,因此,节点B还有一个同属于父节点A的兄弟节点C。
示例的,当数据访问请求所需数据的数据结构较为复杂的情况下,处理器可通过该索引信息快速定位缓存中与预读取地址指示的数据关联的其他数据,从而提高处理器的数据访问(写入、读取或删除等)的效率。
如表2所示,该预取数据块表还包括:预读取地址指示的数据的状态信息,该状态信息用于指示预读取地址指示的数据的是否被处理器读取。示例的,若状态信息指示了预读取地址指示的数据已经被处理器读取,则处理器无需去确定新的策略,按照前述的策略1继续从内存中预读取数据即可,避免了处理器频繁更换数据预读取的策略的过程,提高了缓存的预读取效率以及处理器的数据访问效率
此外,处理器可以淘汰缓存中的数据,使得缓存中预读取的数据量保持在一个设定的阈值范围内,减少了数据的冲刷导致的缓存失败。
针对于前述处理器执行数据预读取方法的实施例,提供了一种处理器中预取器的软件结构的预取实现方案,如图6所示,图6为本申请提供的预取器的结构示意图,预取器600包括预取配置接口610、预取控制器620、预取编程器630、预取仲裁器640和淘汰器650。
其中,预取配置接口610用于将预取程序加载至内存中。预取控制器620用于执行前述的预取程序。预取编程器630用于对预取程序进行新增、删除或修改等。预取仲裁器640用于判断指定地址的数据是否存储在缓存中、是否有适合优先级的缓存可以替换等信息判断是否需要预取;若需要预取则发起预取请求,以使预取器600将指定地址的数据预取到缓存中。淘汰器650用于根据预取数据组表记录的优先级顺序,对缓存中存储的数据进行淘汰。
下面在图6提供的预取器600的基础上,对本申请提供的数据预读取方法进行说明。
第一步,预取编程器630创建初始化程序、触发程序、淘汰程序等。这里以流式数据为例,顺序访问内存或者以固定的步长顺序访问内存,如遍历一个数组int a[i]:
初始化程序:从地址a开始预取64B大小的数据,即预取的起始位置为a,预取深度为16(16个int),预取结束位置为a+64B,预取到缓存后记为数据块A1。
触发程序:若Ax数据块缓存命中,则从Ax的预取结束位置开始,预取64B的数据,记为数据块Ax+1。
淘汰程序:若Ax数据块缓存命中,则回写/淘汰数据块Ax-1。
第二步,预取器600通过缓存编程接口库进行预取程序加载,预取控制器620收到预取程序后,判断预取程序的合法性,把预取程序分别配置到预取程序表中。处理器还可以指定一个数据地址注册到预取初始化目标表中,当数据地址发生缓存未命中时,可以触发预取初始化程序。此外,用户也可以手动指定数据地址进行预取初始化。
第三步,预取编程器630执行初始化程序。预取编程器630根据数据地址和其指定的预取程序,运行指定预取初始化程序,并以数据地址、和优先级信息作为入参,预取初始化程序会根据用户指定的方法获取到一个或多个预读取地址。如从地址开始预取64B大小的数据快A1,并且将这条预取数据块的信息记录到预取数据块表中,索引记为A1,地址记为数据地址a,父索引为A1,预取组为A,状态信息为未触发。
第四步,预取器600将预读取地址指示的数据加入到预取优先队列,预取优先队列会根据优先级依次将数据交给预取仲裁器640进行仲裁,判断是否需要预取。若是则发起预取请求,否则跳过。
第五步,如果A1数据块发生缓存命中,则预取器600去预取数据块表中查询数据块A1的状态。若状态为已触发,则不进行其他操作;若状态为未触发,则标记A1数据块为已触发,并且运行触发程序(如前述的策略1对应的预取程序)和淘汰程序(如前述的策略3对应的预取程序)。
例如,预取器600执行触发程序:预取器600根据触发程序,获取到新的数据地址a+64B,并标记为数据块A2,并将数据块Ax+1加入预取优先队列。
又如,预取器600执行淘汰程序:预取器600根据淘汰程序,淘汰A0数据块,根据父索引信息A0不存在,跳过。
第六步,如果Ax数据块发生缓存命中,则预取器600去预取数据块表中查询数据块的状态。若状态为触发,则不进行其他操作;若状态为未触发,则标记Ax数据块为已触发,并且运行预取触发程序和预取淘汰程序。
例如,预取器600执行触发程序:预取器600根据触发程序,获取到新的数据地址a+x×64B,并标记为数据块Ax+1,并将数据块Ax+1加入预取优先队列。
又如,预取器600执行淘汰程序:预取器600根据淘汰程序,淘汰Ax-1数据块,根据父索引信息Ax-1的索引通过淘汰器650,修改其LRU优先级到最低,令其可以被优先替换。
第七步,预取优先队列包括一个或多个先入先出(first input first output,FIFO)队列,根据优先级依次提交给预取仲裁器640。
第八步,预取仲裁器640通过判断指定地址是否存在在缓存中、是否有适合优先级的缓存可以替换等信息判断是否需要预取。若需要预取则发起预取请求。
在本实施例中,处理器通过可编程的淘汰程序及其优先级,令开发者可以根据应用的数据结构和实际使用情况,合理的配置淘汰程序,及时将缓存中不再需要的数据缓存淘汰,以便缓存让出存储空间给新的预读取地址指示的数据;此外,处理器还可以让缓存中的数据量大小维持在一个较为稳定的阈值范围内,减少了数据的冲刷导致的缓存失效。
值得注意的是,本申请提供的数据预读取方法还可以应用在访问带宽时延存在差异的场景中,如存储器和优先队列之间。
下面以数据结构为链式结构的二叉树为例,对本申请提供的数据预读取方法进行进一步的说明。
如图7所示,图7为本申请提供的数据结构的示例图,该链式结构的二叉树中,一个节点对应一个数据块,节点A对应的数据块A中包含其子节点B和C对应的指针(如内存地址或其他指示了数据块B和数据块C的信息,如节点B较节点A的偏移信息),各节点之间的关系如下:
1),根节点为节点A,深度为1。
2),节点A包括2个子节点:节点B和节点C,深度为2。节点B和节点C互为兄弟节点。
3),节点B包括1个子节点:节点D,深度为3;节点C包括2个子节点:节点E和节点F,深度为3,节点E和节点F互为兄弟节点。
4),节点E包括1个子节点:节点I,深度为4;节点D包括2个子节点:节点G和节点H,深度为4,节点G和节点H互为兄弟节点。
5),节点H包括1个子节点:节点J,深度为5。
在二叉树上搜索,需要根据data中的一些信息,确定往左子树(如节点B下的多个节点)还是右子树(如节点C下的多个节点)搜索。由于存在分支,处理器可有多种选择。
在情形1中,如果已知大概率走某一分支(如节点B或节点C)的话,则可以仅选择那个分支(如节点B)进行预取。
在情形2中,如果走哪一分支不明确的话,可以预取多个分支。即牺牲预取的精准度,提高覆盖率。
这里以情形2为例进行说明,即左右子树均进行预取。假定预取的深度为3。
初始预取:处理器将数据块A预取到缓存中,根据给定的左右子树指针偏移,获取到左右子树的指针,即预取的起始位置为A,根据左右子树的偏移offset1和offset2,获取到左右子树的节点B和节点C的地址,在按照数据块相同的方法预取进行预取获得数据块D、数据块E和数据块F的地址,再将数据块D、数据块E和数据块F预取到缓存,完成了二叉树中深度为3的数据块预取。
触发描述:若数据块X命中,则处理器根据已在缓存中的2层数据,预取3层数据。如数据块B命中,由于数据块D已在缓存中,处理器根据数据块D中的左右子树信息(前述的偏移),将数据块G和数据块H读取到缓存中。
淘汰描述:若数据块X命中,则淘汰父节点、兄弟节点、兄弟节点的子节点的缓存。如数据块B命中,则处理器删除缓存中已存储的数据块A、数据块C、数据块E和数据块F。
在本实施例中,处理器将缓存中的数据及时淘汰,使得预取数据在此部分仅维持一个较为稳定的大小,减少了对于其他缓存的污染;由于缓存中无用的数据(其他子树对应的数据,如数据块C、数据块E和数据块F)已经被淘汰,使得在数据访问的过程中,处理器无需查询其他子树对应的数据,减少了处理器读取数据的时间,提高了数据访问效率。
可以理解的是,为了实现上述实施例中功能,存储系统和处理器包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
上文中结合图1至图7,详细描述了根据本申请所提供的数据预读取的方法,下面将结合图8,描述根据本申请所提供的数据预读取装置。
图8为本申请提供的一种数据预读取装置的结构示意图,数据预读取装置800可以用于实现上述方法实施例中处理器的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请的实施例中,该数据预读取装置800可以是处理器1212或者处理器210,还可以是应用于处理器的模块(如芯片)。
如图8所示,数据预读取装置800包括获取单元810、策略匹配单元820、地址查询单元830、预读取单元840、存储单元850、索引单元860、配置单元870和数据淘汰单元880。该数据预读取装置800用于实现上述图3至图5中所示的方法实施例中处理器的功能。在一种可能的示例中,该数据预读取装置800用于实现上述数据预读取方法的具体过程包括以下内容:
获取单元810,用于获取数据访问请求,其中,该数据访问请求用于请求内存中待读取数据。策略匹配单元820,用于若处理器的缓存命中了待读取数据,且缓存中的待读取数据未被读取,则从内存存储的多种策略中,选择与待读取数据的内存地址匹配的第一策略;第一策略用于指示将从内存中读取的数据的内存地址。地址查询单元830,用于根据第一策略和内存地址确定预读取地址,该预读取地址用于指示内存中与待读取数据存在关联关系的数据。预读取单元840,用于将预读取地址指示的数据写入缓存。
可选的,存储单元850可用于存储前述实施例中的预取程序表、预取数据组表和预取数据块表。关于预取程序表、预取数据组表和预取数据块表的内容可参考前述图2至图7的相关内容,不予赘述。
索引单元860,用于将预读取地址写入存储单元850中的预取数据块表。
配置单元870,用于将多种策略对应的预取程序写入内存。
数据淘汰单元880,用于淘汰缓存中淘汰地址指示的数据。示例的,该数据淘汰单元880具体用于:删除缓存中淘汰地址指示的数据,以及,删除预取数据块表中与淘汰地址关联的信息。
当数据预读取装置800用于实现前述实施例的方法实施例时,有益效果可以参见前述实施例的描述,此处不再赘述。所述数据预读取装置具有实现上述第一方面中任一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
结合前述图3的方法实施例进行说明,当数据预读取装置800用于实现图3所示的方法实施例时:获取单元810用于执行S310,策略匹配单元820用于执行S320,地址查询单元830用于执行S330,预读取单元840用于执行S340。
结合前述图4的方法实施例进行说明,当数据预读取装置800用于实现图4所示的方法实施例时:获取单元810用于执行S410,策略匹配单元820用于执行S420,地址查询单元830用于执行S430,预读取单元840用于执行S440。
结合前述图5的方法实施例进行说明,当数据预读取装置800用于实现图5所示的方法实施例时:策略匹配单元820用于执行S510,地址查询单元830用于执行S520,数据淘汰单元880用于执行S530。
应理解的是,本发明本申请实施例的数据预读取装置800可以通过CPU实现,也可以通过ASIC实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、FPGA、通用阵列逻辑(generic array logic,GAL)或其任意组合。数据预读取装置800通过软件实现图4至图6中任一所示的数据预读取方法时,数据预读取装置800及其各个模块也可以为软件模块。
图8提供的预读取装置800仅为本实施例提供的示例,在一些情形中,数据预读取装置800可包括更多或更少的软件单元,本申请对此不予限定。有关上述数据预读取装置800更详细的描述可以直接参考上述图2至图7所示的实施例中相关描述直接得到,这里不加赘述。
示例的,当数据预读取装置800通过硬件实现时,该硬件可以通过处理器实现,如上述的处理器210和处理器1212等,如该处理器包括接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的信号并传输至控制电路,或将来自控制电路的信号发送给处理器之外的其它设备。
控制电路通过逻辑电路或执行代码指令用于实现上述实施例中任一种可能实现方式的方法。有益效果可以参见上述实施例中任一种可能实现方式的描述,此处不再赘述。
本申请还提供一种电子设备,该电子设备包括处理器和存储器,该处理器可以实现上述实施例提供的数据预读取方法,如该存储器,用于存储计算机指令;该处理器,用于从存储器中调用并运行该计算机指令,以执行前述实施例提供的数据预读取方法的操作步骤。可选的,该存储器还可用于存储上述的预取数据块表和预取数据组表。作为另一种可选的实现方式,在硬件实现上,电子设备可以是指封装有一个或多个处理器的芯片或芯片系统。其中,上述的存储器可以是但不限于:RAM、ROM、PROM、EPROM、EEPROM(electricallyEPROM,EEPROM)等。可以理解的是,本申请的实施例中的处理器可以是CPU、NPU或GPU,还可以是其它通用处理器、DSP、ASIC、FPGA或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于RAM、闪存、ROM、PROM、EPROM、EEPROM、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于网络设备或终端设备中。当然,处理器和存储介质也可以作为分立组件存在于网络设备或终端设备中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘(digital video disc,DVD);还可以是半导体介质,例如,固态硬盘(solid state drive,SSD)。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。
Claims (21)
1.一种数据预读取方法,其特征在于,所述方法由处理器执行,所述方法包括:
获取数据访问请求,其中,所述数据访问请求用于请求内存中待读取数据;
若所述处理器的缓存命中了所述待读取数据,且所述缓存中的所述待读取数据未被读取,则从所述内存存储的多种策略中,选择与所述待读取数据的内存地址匹配的第一策略;所述第一策略用于指示将从所述内存中读取的数据的内存地址;
根据所述第一策略和所述内存地址确定预读取地址;所述预读取地址用于指示所述内存中与所述待读取数据存在关联关系的数据;
将所述预读取地址指示的数据写入所述缓存。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述内存存储的多种策略中,选择与所述内存地址匹配的第二策略;所述第二策略用于指示将从所述缓存中淘汰的数据的内存地址;
根据所述内存地址和所述第二策略,确定淘汰地址;所述淘汰地址用于指示在设定的条件下,所述缓存中不再被所述处理器读取的数据;
淘汰所述缓存中所述淘汰地址指示的数据。
3.根据权利要求2所述的方法,其特征在于,
所述淘汰所述缓存中所述淘汰地址指示的数据,包括:
删除所述缓存中所述淘汰地址指示的数据;以及,
删除预取数据块表中与所述淘汰地址关联的信息,所述预取数据块表用于指示所述缓存中存储的数据的内存地址。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述将所述预读取地址指示的数据写入所述缓存之后,所述方法还包括:
将所述预读取地址写入预取数据块表,所述预取数据块表用于指示所述缓存中存储的数据的内存地址。
5.根据权利要求4所述的方法,其特征在于,
所述预取数据块表包括:所述预读取地址指示的数据的索引信息;所述索引信息用于指示所述缓存中,与所述预读取地址指示的数据关联的其他数据;
所述预取数据块表还包括:所述预读取地址指示的数据的状态信息;所述状态信息用于指示所述预读取地址指示的数据的是否被所述处理器读取。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在所述获取数据访问请求之前,所述方法还包括:
获取业务请求;
从所述内存存储的多种策略中,选择与所述业务请求匹配的第三策略;所述第三策略用于指示将读取到所述缓存的数据的内存地址,所述将读取到所述缓存的数据包括所述业务请求所需的初始数据;
根据所述业务请求包含的根地址和所述第三策略确定初始读取地址;所述根地址用于指示所述业务请求所需的初始数据,所述初始读取地址用于指示所述内存中与所述初始数据关联的数据,所述初始数据关联的数据包括所述待读取数据;
将所述初始读取地址指示的数据写入所述缓存。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述缓存中存储有预取数据组表,以及一个或多个预取组,其中的一个预取组包括所述预读取地址指示的数据;
所述预取数据组表包含:所述一个预取组的优先级信息,所述优先级信息用于指示所述一个预取组的淘汰顺序;
所述预取数据组表还包含:所述处理器读取所述一个预取组所采用的策略的标识。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述内存中存储有预取程序表,所述预取程序表用于指示所述内存中存储的多个预取程序,一个预取程序对应所述多种策略中的一种策略。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
将所述多种策略对应的预取程序写入所述内存,所述多种策略对应的预取程序包含的第一程序用于支持实现所述第一策略。
10.一种数据预读取装置,其特征在于,所述装置应用于处理器,所述装置包括:
获取单元,用于获取数据访问请求,其中,所述数据访问请求用于请求内存中待读取数据;
策略匹配单元,用于若所述处理器的缓存命中了所述待读取数据,且所述缓存中的所述待读取数据未被读取,则从所述内存存储的多种策略中,选择与所述待读取数据的内存地址匹配的第一策略;所述第一策略用于指示将从所述内存中读取的数据的内存地址;
地址查询单元,用于根据所述第一策略和所述内存地址确定预读取地址;所述预读取地址用于指示所述内存中与所述待读取数据存在关联关系的数据;
预读取单元,用于将所述预读取地址指示的数据写入所述缓存。
11.根据权利要求10所述的装置,其特征在于,所述策略匹配单元,还用于从所述内存存储的多种策略中,选择与所述内存地址匹配的第二策略;所述第二策略用于指示将从所述缓存中淘汰的数据的内存地址;
所述地址查询单元,还用于根据所述内存地址和所述第二策略,确定淘汰地址;所述淘汰地址用于指示在设定的条件下,所述缓存中不再被所述处理器读取的数据;
所述装置还包括:
数据淘汰单元,用于淘汰所述缓存中所述淘汰地址指示的数据。
12.根据权利要求11所述的装置,其特征在于,所述数据淘汰单元,具体用于:删除所述缓存中所述淘汰地址指示的数据;以及,删除预取数据块表中与所述淘汰地址关联的信息,所述预取数据块表用于指示所述缓存中存储的数据的内存地址。
13.根据权利要求10至12中任一项所述的装置,其特征在于,所述装置还包括:
索引单元,用于将所述预读取地址写入预取数据块表,所述预取数据块表用于指示所述缓存中存储的数据的内存地址。
14.根据权利要求13所述的装置,其特征在于,
所述预取数据块表包括:所述预读取地址指示的数据的索引信息;所述索引信息用于指示所述缓存中,与所述预读取地址指示的数据关联的其他数据;
所述预取数据块表还包括:所述预读取地址指示的数据的状态信息;所述状态信息用于指示所述预读取地址指示的数据的是否被所述处理器读取。
15.根据权利要求10至14中任一项所述的装置,其特征在于,所述获取单元,还用于获取业务请求;
所述策略匹配单元,还用于从所述内存存储的多种策略中,选择与所述业务请求匹配的第三策略;所述第三策略用于指示将读取到所述缓存的数据的内存地址,所述将读取到所述缓存的数据包括所述业务请求所需的初始数据;
所述地址查询单元,还用于根据所述业务请求包含的根地址和所述第三策略确定初始读取地址;所述根地址用于指示所述业务请求所需的初始数据,所述初始读取地址用于指示所述内存中与所述初始数据关联的数据,所述初始数据关联的数据包括所述待读取数据;
所述预读取单元,还用于将所述初始读取地址指示的数据写入所述缓存。
16.根据权利要求10至15中任一项所述的装置,其特征在于,所述缓存中存储有预取数据组表,以及一个或多个预取组,其中的一个预取组包括所述预读取地址指示的数据;
所述预取数据组表包含:所述一个预取组的优先级信息,所述优先级信息用于指示所述一个预取组的淘汰顺序;
所述预取数据组表还包含:所述处理器读取所述一个预取组所采用的策略的标识。
17.根据权利要求10至16中任一项所述的装置,其特征在于,所述内存中存储有预取程序表,所述预取程序表用于指示所述内存中存储的多个预取程序,一个预取程序对应所述多种策略中的一种策略。
18.根据权利要求10至17中任一项所述的装置,其特征在于,所述装置还包括:
配置单元,用于将所述多种策略对应的预取程序写入所述内存,所述多种策略对应的预取程序包含的第一程序用于支持实现所述第一策略。
19.一种电子设备,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,用于从存储器中调用并运行该计算机指令,以执行权利要求1至9中任一项所述的方法。
20.一种数据存储系统,其特征在于,包括:处理器和内存;
所述处理器获取数据访问请求,其中,所述数据访问请求用于请求所述内存中待读取数据;
若所述处理器的缓存命中了所述待读取数据,且所述缓存中的所述待读取数据未被读取,则所述处理器从所述内存存储的多种策略中,选择与所述待读取数据的内存地址匹配的第一策略;所述第一策略用于指示将从所述内存中读取的数据的内存地址;
所述处理器根据所述第一策略和所述内存地址确定预读取地址;所述预读取地址用于指示所述内存中与所述待读取数据存在关联关系的数据;
所述处理器将所述预读取地址指示的数据写入所述缓存。
21.一种计算机可读存储介质,其特征在于,所述存储介质中存储有计算机程序或指令,当所述计算机程序或指令被电子设备执行时,实现如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210260418.0A CN116795736A (zh) | 2022-03-16 | 2022-03-16 | 数据预读取方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210260418.0A CN116795736A (zh) | 2022-03-16 | 2022-03-16 | 数据预读取方法、装置、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116795736A true CN116795736A (zh) | 2023-09-22 |
Family
ID=88040441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210260418.0A Pending CN116795736A (zh) | 2022-03-16 | 2022-03-16 | 数据预读取方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795736A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117762350A (zh) * | 2024-01-18 | 2024-03-26 | 四川和恩泰半导体有限公司 | 一种固态硬盘数据读取方法 |
CN118484286A (zh) * | 2024-07-15 | 2024-08-13 | 芯方舟(上海)集成电路有限公司 | 内存数据的读取方法、装置、电子设备及可读存储介质 |
-
2022
- 2022-03-16 CN CN202210260418.0A patent/CN116795736A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117762350A (zh) * | 2024-01-18 | 2024-03-26 | 四川和恩泰半导体有限公司 | 一种固态硬盘数据读取方法 |
CN118484286A (zh) * | 2024-07-15 | 2024-08-13 | 芯方舟(上海)集成电路有限公司 | 内存数据的读取方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989160B2 (en) | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device | |
US10908821B2 (en) | Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system | |
US10289555B1 (en) | Memory read-ahead using learned memory access patterns | |
US9092321B2 (en) | System and method for performing efficient searches and queries in a storage node | |
US9021189B2 (en) | System and method for performing efficient processing of data stored in a storage node | |
US9256527B2 (en) | Logical to physical address mapping in storage systems comprising solid state memory devices | |
US11263149B2 (en) | Cache management of logical-physical translation metadata | |
US8819335B1 (en) | System and method for executing map-reduce tasks in a storage device | |
JP2019067417A (ja) | 最終レベルキャッシュシステム及び対応する方法 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
WO2021218038A1 (zh) | 一种存储系统、内存管理方法和管理节点 | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
KR20220045216A (ko) | 유형화된 메모리 액세스에 대한 유형화되지 않은 메모리 액세스의 맵핑 | |
US11914520B2 (en) | Separate read-only cache and write-read cache in a memory sub-system | |
US8572321B2 (en) | Apparatus and method for segmented cache utilization | |
WO2019128958A1 (zh) | 缓存替换技术 | |
US12007917B2 (en) | Priority scheduling in queues to access cache data in a memory sub-system | |
CN116795736A (zh) | 数据预读取方法、装置、电子设备和存储介质 | |
EP4170506A1 (en) | Systems, methods, and devices for ordered access of data in block modified memory | |
US9104325B2 (en) | Managing read operations, write operations and extent change operations | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
WO2023241655A1 (zh) | 数据处理方法、装置、电子设备以及计算机可读存储介质 | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
KR102725214B1 (ko) | 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법 |
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 |