CN116340203A - 数据预读取方法、装置、处理器及预取器 - Google Patents
数据预读取方法、装置、处理器及预取器 Download PDFInfo
- Publication number
- CN116340203A CN116340203A CN202111602772.9A CN202111602772A CN116340203A CN 116340203 A CN116340203 A CN 116340203A CN 202111602772 A CN202111602772 A CN 202111602772A CN 116340203 A CN116340203 A CN 116340203A
- Authority
- CN
- China
- Prior art keywords
- address
- data
- read
- memory
- processor
- 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 82
- 230000015654 memory Effects 0.000 claims abstract description 222
- 239000000758 substrate Substances 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 22
- 238000013500 data storage Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 18
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 8
- 239000007787 solid Substances 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012216 screening Methods 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
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000010410 layer Substances 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
- 238000005192 partition Methods 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本申请涉及数据存储领域,尤其涉及一种数据预读取方法、装置、处理器及预取器。
背景技术
内存墙(memory wall)是指由于内存的性能提升与处理器的性能提升不匹配,内存的性能较低阻碍了处理器性能发挥的瓶颈的现象。为解决内存墙的问题,处理器会预测接下来的内存访问,如处理器确定将所需数据的内存地址,并将内存地址指示的存储空间中存储的业务数据读取到缓存(cache)中。然而,处理器仅能将未命中的数据读取到缓存中,导致缓存在数据访问过程中缓存命中率较低。因此,如何提供一种更高效的数据预读取方法成为亟待解决的技术问题。
发明内容
本申请提供一种数据预读取方法、装置、处理器及预取器,解决了数据访问过程中,缓存命中率较低的问题。
为达到上述目的,本申请采用如下技术方案。
第一方面,本申请提供了一种数据预读取方法,该数据预读取方法由处理器执行,或者支持实现该数据预读取方法的物理设备,例如该物理设备包括芯片系统。该数据预读取方法包括:首先,处理器获取用于请求内存中待读取数据的数据访问请求;其次,当在处理器的缓存中未命中待读取数据,处理器依据前述待读取数据的内存地址确定预读取地址,该预读取地址用于指示内存中与待读取数据具有关联关系的数据。最后,处理器将内存中预读取地址指示的数据写入缓存。处理器的缓存中不仅可以存储待读取数据,还存储了预读取地址指示的数据,提高了在数据读取过程中处理器的缓存命中率;另外,由于处理器可以在缓存中未命中待读取数据的情况下,依据待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据从内存写入缓存,提高了处理器在数据访问过程中的缓存命中率,从而提高了处理器的数据访问效率以及处理器的数据访问性能。
在一种可选的实现方式中,处理器依据待读取数据的内存地址确定预读取地址,包括:处理器将待读取数据的内存地址与全局记忆缓存(global history buffer,GHB)进行匹配,确定预读取地址;GHB用于指示在一个统计周期内,与待读取数据的内存地址关联的其他地址。处理器基于缓存中未命中数据的内存地址,确定一个或者多个预读取地址,并将该一个或多个预读取地址指示的数据从内存写入缓存,避免了预取器只能将单个内存地址指示的数据预读取到缓存导致的命中率(hit rate)较低的问题,提高了在数据读取过程中,处理器的缓存命中率,进而,提高了处理器的数据读取效率和处理器的数据访问性能。
在另一种可选的实现方式中,处理器将待读取数据的内存地址与GHB进行匹配,确定预读取地址,包括:第一,处理器获取统计周期内的统计信息,该统计信息包括缓存的预读取正确率和预读取覆盖率中至少一种。第二,处理器依据统计信息从历史地址信息中确定检索地址空间;该检索地址空间包括待读取数据的内存地址,该历史地址信息用于指示在统计周期内,缓存中多个未命中数据的内存地址的顺序。第三,处理器依据检索地址空间和GHB确定预读取地址。处理器利用在一个统计周期的统计信息确定检索地址空间,从而获取到预读取地址,在参考统计周期内的内存地址顺序的情况下,有利于提高处理器进行数据预读取的准确率,从而提高缓存命中率。
在另一种可选的实现方式中,处理器依据统计信息从历史地址信息中确定检索地址空间,包括:处理器依据统计信息确定检索地址长度,并依据检索地址长度和待读取数据的内存地址,从历史地址信息中确定检索地址空间。其中,检索地址长度用于指示与GHB进行匹配的内存地址的数量。基于统计信息确定检索地址长度,还参照历史地址信息,有利于处理器调整预读取正确率和预读取覆盖率,提高处理器的缓存命中率。
在另一种可选的实现方式中,处理器依据统计信息确定检索地址长度,包括:若统计信息满足预读取参考条件,将处理器中记录的历史检索长度作为检索地址长度;预读取参考条件包括缓存的参考正确率和参考覆盖率中至少一种。若统计信息不满足预读取参考条件,依据统计信息更新历史检索长度获得检索地址长度。处理器通过对检索地址长度进行控制,以对缓存的预读取正确率和预读取覆盖率进行均衡,从而提高缓存的预读取性能。
处理器调整检索地址长度的原则可以是:以保证缓存的预读取正确率为前提,从而对检索地址长度进行调整,即在缓存的预读取正确率达到一定阈值的情况下,尽量提高缓存的预读取覆盖率。但在一种可能的实现方式中,处理器调整检索地址长度的原则也可以是:在缓存的预读取覆盖率达到一定阈值的情况下,尽量提高缓存的预读取正确率。也就是说,处理器可以依据缓存的统计信息来对预读取正确率和预读取覆盖率进行均衡,提高了处理器中缓存的整体读取效率,进而提升处理器的数据访问性能。
第二方面,本申请提供了一种数据预读取装置,该数据预读取装置应用于处理器,该数据预读取装置包括用于执行第一方面或第一方面任一种可能实现方式中的数据预读取方法的各个模块。
示例的,数据预读取装置包括:收发单元,地址匹配单元以及预读取单元。其中,收发单元,用于获取数据访问请求,该数据访问请求用于请求内存中待读取数据;地址匹配单元,用于若在处理器的缓存中未命中待读取数据,依据待读取数据的内存地址确定预读取地址,该预读取地址用于指示与待读取数据存在关联关系的数据;预读取单元,用于将预读取地址指示的数据写入缓存。
有益效果可以参见第一方面中任一方面的描述,此处不再赘述。所述数据预读取装置具有实现上述第一方面中任一方面的方法实例中行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请提供了一种处理器,该处理器包括:接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的信号并传输至控制电路,或将来自控制电路的信号发送给处理器之外的其它设备,控制电路通过逻辑电路或执行代码指令用于实现第一方面中任一方面中任一种可能实现方式的方法。有益效果可以参见第一方面中任一方面的描述,此处不再赘述。
第四方面,本申请提供一种计算机可读存储介质,存储介质中存储有计算机程序或指令,当计算机程序或指令被处理器执行时,实现第一方面和第一方面中任一种可能实现方式中的方法。
第五方面,本申请提供一种计算机程序产品,该计算程序产品包括指令,当计算机程序产品在主机或网卡上运行时,使得主机或网卡执行该指令,以实现第一方面和第一方面中任一种可能实现方式中的方法。
第六方面,本申请提供一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面及其第一方面任意可能的实现方式中的方法。
第七方面,本申请提供一种预取器,包括:存储器,用于存储计算机指令;处理器,用于从存储器中调用并运行该计算机指令,以执行上述第一方面及其第一方面任意可能的实现方式中的方法。
可选的,该预取器还可以包括通信接口,如该通信接口用于获取前述方面所述的数据访问请求,获取将数据访问请求所指示的待读取数据发送到预取器之外的其他设备。
另外,该预取器可以被设置在预取系统中,如该预取系统可以是指存储系统,如集中式存储系统或分布式存储系统。该预取系统还可以是指服务器,如应用服务器或文件服务器。以上预取系统仅为本实施例提供的示例,不应理解为对本申请的限定,如预取系统还可以是指个人移动设备,如手机、平板或笔记本电脑等。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请提供的一种数据存储系统示意图;
图2为本申请提供的一种处理器的结构示意图;
图3为本申请提供的一种缓存的划分示意图;
图4为本申请提供的一种数据预读取方法的流程示意图一;
图5为本申请提供的一种处理器内部的软件信息示意图;
图6为本申请提供的一种数据预读取方法的流程示意图二;
图7为本申请提供的一种数据预读取装置的结构示意图;
图8为本申请提供的一种预取系统的结构示意图。
具体实施方式
本实施例提供了一种数据预读取方法,该数据预读取方法包括:首先,处理器获取用于请求内存中待读取数据的数据访问请求;其次,当在处理器的缓存中未命中待读取数据,处理器依据前述待读取数据的内存地址确定预读取地址,该预读取地址用于指示内存中与待读取数据具有关联关系的数据。最后,处理器将内存中预读取地址指示的数据写入缓存。
在本实施例中,处理器的缓存中不仅可以存储待读取数据,还存储了预读取地址指示的数据,提高了在数据读取过程中处理器的缓存命中率;另外,由于处理器可以在缓存中未命中待读取数据的情况下,依据待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据从内存写入缓存,提高了处理器在数据访问过程中的缓存命中率,从而提高了处理器的数据访问效率以及处理器的数据访问性能。
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍。
图1为本申请提供的一种数据存储系统示意图,该数据存储系统包括计算设备100和存储系统120。在图1所示的应用场景中,用户通过应用程序来存取数据。运行这些应用程序的计算机可以被称为“计算设备”。计算设备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硬盘框再通过RDMA端口与引擎121连接。
在一种可选的实现方式中,存储系统120为盘控一体的集中式存储系统,存储系统120中不具有上述的硬盘框122,引擎121用于管理通过硬盘槽连接的多个硬盘。硬盘槽的功能可以由后端接口1214实现。
在另一种可选的实现方式中,图1所示的存储系统120是分布式存储系统,该分布式存储系统包括计算设备集群和存储设备集群,计算设备集群包括一个或多个计算设备,各个计算设备之间可以相互通信。计算设备可以是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,计算设备可以包括处理器、内存和网卡等。其中,处理器是一个CPU,用于处理来自计算设备外部的数据访问请求,或者计算设备内部生成的请求。示例性的,处理器接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存中。当内存中的数据总量达到一定阈值时,处理器将内存中存储的数据发送给存储设备进行持久化存储。除此之外,处理器还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。在一种示例中,任意一个计算设备可通过网络访问存储设备集群中的任意一个存储设备。存储设备集群包括多个存储设备。一个存储设备包括一个或多个控制器、网卡与多个硬盘,该网卡用于与计算设备通信。
在又一种可选的实现方式中,图1所示出的存储系统120可以是指一个服务器,例如,该服务器用于提供计算资源。就一台服务器来说,它可以包含多个处理器或处理器核,每个处理器或者处理核可以是一个计算资源,因此一台服务器可以提供多个计算资源。例如,服务器可以是指应用服务器或文件服务器等。
值的注意的是,以上仅为本实施例提供的应用场景或系统的示例,不应理解为对本申请的限定。
为解决内存的性能提升与处理器的性能提升不匹配的内存墙问题,处理器1212中设置有一个或多个缓存,该缓存可以用于预读取内存1213中存储的数据,以减少处理器1212的处理时延。
图2为本申请提供的一种处理器的结构示意图,图2为上述的处理器1212提供了一种可能的硬件实现方式,该处理器1212包括处理器核(core)1212A、处理器核1212B,以及多级缓存,如图2所示出的一级缓存(L1)、二级缓存(L2)以及与内存1213进行数据交互的最后一级缓存(last level cache,LLC)。值得注意的是,图2仅为本申请实施例提供的示例,在一些可能的示例中,处理器1212还可以包括更多级的缓存,或更少级的缓存。本文中,在不引起误会的情况下,N级缓存可以用LN Cache来表示,N为正整数,例如,一级缓存可以用L1Cache来表示,二级缓存可以用L2 Cache来表示,三级缓存可以用L3 Cache来表示,若本文中的处理器还设置有更多级缓存,如四级缓存,该四级缓存可以用L4 Cache来表示。在另一些示例中,若处理器还设置有“异构缓存”,如,某厂商提出一种“2.5级缓存”,该“2.5级缓存”也可以用L2.5 Cache来表示。
在一种可能的情形中,L2 cache可以由多个CPU共享的,也可以装在主板上。L1cache可以分为指令缓存(instruction cache)和数据缓存(data cache),以便CPU能同时在L1 cache中读取指令和数据。
示例的,处理器1212可以是,但不限于CPU、NPU或GPU等具有神经网络处理能力的处理器,也可以是可以是网络处理器(network processor,NP)等;还可以是数字信号处理器(digital signal processing,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。本申请对此不予限定。
针对于图2所示出的缓存,这里提供了一种缓存分组的实现方式,如图3所示,图3为本申请提供的一种缓存的划分示意图,缓存300可以是指图2中的任意一级缓存,如L1缓存、L2缓存或LLC等,这里以缓存300是L1缓存(L1 cache)为例进行说明,缓存300包括多个缓存组,如图3所示出的缓存组1~缓存组8,每一个缓存组包括一个或多个缓存行(cacheline)。
如图3所示,缓存组3包括128个缓存行(cacheline),假设每个cacheline的行容量(linesize)为64字节(byte,B),则该缓存组3的存储容量为64B×128=8千字节(kilobytes,KB),缓存300的存储容量为8KB×8=64KB。
示例的,缓存300中的一个缓存行(cacheline)映射有内存1213的一段地址空间。例如,一个cacheline映射有内存中的一个或多个存储单元(如,一个cacheline保存有一个存储单元的内存地址),存储单元一般是以字节(通常8个位)为单位,也是最小的寻址单元。
在cacheline中,存储单元的内存地址一般被划分为三个地址区间:标记位(tag,t)、集合索引(set index,s)位和块索引(block index,B)位。其中,内存地址中间的s位决定了该存储单元被映射到哪一个缓存组,而最低的B位决定了该存储单元在cacheline中的偏移量(offset)。标记位(tag)包括有效(valid)位和标签位(tag),valid通常是一位,代表该cacheline是否是有效的(当该cacheline不存在内存映射时,则该cacheline为无效),标签位(tag)是指内存地址中的高t位,标签位(tag)用于校验该cacheline是否是CPU要访问的存储单元。当有效(valid)位和标签位(tag)均校验成功时,则缓存300中的该cacheline命中(简称cache命中或cache hit);当有效(valid)位或标签位(tag)校验失败时,则该缓存300中的该cacheline未命中(简称cache miss)。
一个缓存组中包括的缓存行可以用于预读取数据,如图3所示出的黑色方块(预读取了数据的缓存行)。
缓存的预读取性能可以由预读取正确率和预读取覆盖率来表示。
预读取正确率是指在统计周期内,缓存中被实际用到的cacheline数与总预取的cacheline数的比值。预读取正确率越大,缓存的预读取性能越好。
预读取覆盖率是指在统计周期内,预读取的cacheline中被命中的cacheline数与总的cacheline引用数的比值。预读取覆盖率越大,缓存的预读取性能越好。
值得注意的是,图3仅为本实施例提供的一种示例,不应理解为对本申请的限定,缓存300还可以包括更多或更少的缓存组,每个缓存组也可以包括更多或更少的缓存行,每个缓存行的linesize可以是其他,如8B或32B等,本申请对此不予限定。
下面将结合附图对本申请实施例的实施方式进行详细描述。
图4为本申请提供的一种数据预读取方法的流程示意图一,该数据预读取方法可应用于图1所示出的数据存储系统,如该数据预读取方法可以由图1和图2所示出的处理器1212执行;另外,该数据预读取的过程可以是由处理器1212触发的一个线程(软件单元)执行的。这里以处理器1212执行数据预读取方法为例进行说明,该数据预读取方法包括以下步骤。
S410,处理器1212获取数据访问请求。
该数据访问请求用于请求内存中的待读取数据。
例如,该数据访问请求是指计算设备100向处理器1212发送的,如读输入/输出(input/output,I/O)请求。
又如,该数据访问请求是处理器1212根据本地执行的业务生成的IO请求。
值得注意的是,数据访问请求还可以是存储系统120其他处理器向处理器1212发送的读IO请求,或者写IO请求。
其中,该待读取数据可以存储在内存1213中所包括的多个内存页(page)中,内存页是指内存1213中数据访问的最小单位(或称原子单位),如上述的存储单元。如该待读取数据所占据的存储空间为128KB,每个page提供的存储空间为4KB,则该待读取数据经由32次原子操作被处理器1212读取。
在数据访问过程中,处理器1212的缓存中预读取了一个或多个数据,若处理器1212的缓存中未命中数据访问请求指示的待读取数据,即cache miss了该待读取数据,如图4所示,本实施例提供的数据预读取方法还包括以下步骤。
S420,处理器1212依据待读取数据的内存地址确定预读取地址。
该预读取地址用于指示与待读取数据存在关联关系的数据。示例的,该关联关系是指预读取地址指示的数据与待读取数据可以被连续读取。
如图4所示,预读取地址可以是图4所示出的“1”和“2”。值得注意的是,图4仅为本实施例提供的预读取地址的示例,预读取地址“1”和“2”在内存中的存储单元可以是不连续的,但在处理器1212的本轮数据访问过程中,“1”和“2”指示的数据具有被连续读取的关联关系。
另外,上述的预读取地址“1”和“2”仅为本示例提供的一种可能的实现方式,不应理解为对本申请的限定。在另一些可能的示例中,如上述的预读取地址“1”可以是“00000001”,上述的预读取地址“2”可以是“0000 0011”;又如上述的预读取地址“1”可以是“A”,上述的预读取地址“2”可以是“B”,本申请对预读取地址的表达方式不予限定。
作为一种可选的实现方式,处理器1212维护有全局记忆缓存(global historybuffer,GHB),该GHB用于指示在一个统计周期内,与前述待读取数据的内存地址关联的其他地址。如图5所示,图5为本申请提供的一种处理器内部的软件信息示意图,图5中的A、B、C、D、H1、H2、H3和H4等是指内存地址。
如图5所示,该处理器1212中维护有全局记忆缓存(GHB),该GHB记录了一个统计周期内,按照先进先出(first input first output,FIFO)的多个内存地址的数据读取顺序,如H1地址对应的数据在缓存中未命中,则处理器1212即将读取的下一个数据的内存地址为A。
另外,在处理器1212对内存1213进行数据访问的过程中,每进行一定数量(如1、2或更大等)次数的数据访问,都可以更新GHB所记录的信息。示例的,处理器删除GHB中旧的历史数据,如优先删除先进入GHB中的历史数据。由于GHB一直维护有一个统计周期内多个内存地址的数据读取顺序,处理器1212可以基于GHB进行数据预读取过程,从而提高预取的准确性。
GHB所需的存储空间可以由处理器1212中的缓存提供,也可以由处理器1212中单独设置的存储器实现,如该存储器是指DDR或SDRAM等。
可选的,处理器1212中还可以维护有历史地址信息,该历史地址信息用于指示在统计周期内,缓存中多个未命中数据的内存地址的顺序。该历史地址信息也可以称为未命中地址的历史记录(miss addrss history)。示例的,该多个未命中数据在历史地址信息中可以使用FIFO的方式进行存放,如图5中所示出的H4→H3→H2→H1→A的顺序。
在软件实现中,历史地址信息可以是一个逻辑历史缓存(history buffer)。相应的,在硬件实现上,由于历史地址信息可与GHB的指针头(head pointer)保持一致,则该历史地址信息可以无需单独的硬件支持,而是依赖于为GHB提供存储空间的存储器。
另外,处理器1212还可以维护有一个索引表(index table),该索引表存储有内存1213中的多个内存地址和该内存地址的一个或多个指针。一个指针可以用于定位该内存地址在GHB中的一个位置。
示例的,一个内存地址可以由一个指针来表示,如该索引表是一个哈希表,一个内存地址对应一个哈希值;又如,该索引表是一个利用键-值(key-value,K-V)结构实现的表,内存地址为K-V表中的值(value),指针为K-V表中的键(key),本申请对索引表的具体实现方式不予限定。索引表有利于减少处理器1212进行内存地址匹配所需的数据输入量,提高处理器的数据访问效率,提升处理器的数据访问性能。
针对于处理器1212确定预读取地址的过程,这里提供一种可能的实现方式:处理器1212将前述待读取数据的内存地址与GHB进行匹配,确定一个或多个预读取地址。
示例的,如图5所示,若缓存中未命中的数据对应的内存地址为H1,则处理器1212将该H1与GHB匹配后,确定的预读取地址为A。而处理器1212是否将内存地址为C的数据读取到缓存中,可由缓存的剩余存储容量或处理器1212执行的业务的特征等决定。
这里提供一种可能的具体实现方式,处理器1212将待读取数据的内存地址与GHB进行匹配,可能存在以下几种可能的情形。
情形1:处理器1212对全局记忆缓存进行扫描,确定GHB中在待读取数据的内存地址之后读取的一个或多个地址,并对该一个或多个地址进行筛选后确定预读取地址。
示例的,筛选的过程可以是:处理器选择一个或多个地址中出现频次最高的地址作为预读取地址。
情形2:首先,处理器1212对索引表进行扫描,确定索引表中与该待读取数据的内存地址对应的一个或多个指针。其次,处理器1212依据该一个或多个指针,确定待读取数据的内存地址在GHB中的位置。进而,处理器1212确定GHB中在待读取数据的内存地址之后读取的地址集合,该地址集合包括一个或多个地址,该可以分布在GHB中的不同位置。最后,处理器1212对地址集合包括的地址进行筛选后确定预读取地址。筛选的过程可以参考情形1给出的示例,此处不予赘述。
在情形2中,由于处理器可以依据待读取数据的内存地址,从索引表中确定该内存地址的一个或多个指针,并利用该指针定位GHB中该内存地址的位置,从而确定预读取地址,避免了处理器对GHB进行全局扫描(或称遍历),减小了处理器进行数据预读取所需的时间,提高了数据预读取的效率。
下面在图4提供的数据预读取方法和图5提供的软件实现的基础上,提供一种确定上述的预读取地址的可行实现方式,如图6所示,图6为本申请提供的一种数据预读取方法的流程示意图二,为使附图简洁,图6中的全局记忆缓存仅绘制了图5中的全局记忆缓存的部分内容,但图6中的全局记忆缓存和图5中的全局记忆缓存包括的内容是一致的。针对于处理器确定预读取地址的过程,可包括以下步骤S610~S630。
S610,处理器1212获取统计周期内的统计信息。
该统计周期可以是由处理器1212的数据访问次数确定的,如图6所示,在处理器处理一组IO流的过程中,将当前未命中数据之前的多个数据的数据访问间隔(如100万次数据访问)作为一个统计周期,如当前未命中数据为处理器的第(100万+1)次数据访问,则第1~第100万次数据访问的间隔可作为一个统计周期。
另外,处理器也可以将与当前未命中数据具有一定统计间隔(如20万次)的多个数据访问的间隔作为一个统计周期,如当前未命中数据为处理器的第(120万+1)次数据访问,将第(100万+1)次~第120万次的数据访问间隔作为统计间隔,并将第1~第100万次数据访问的间隔作为一个统计周期。
值得注意的是,统计周期可以是由处理器中一个专用的寄存器确定的,如该寄存器可以通过软件进行配置,以便灵活的控制数据访问的统计周期。
上述统计信息包括缓存的预读取正确率和预读取覆盖率中至少一种。
预读取正确率是指在统计周期内,缓存中被实际用到的cacheline数与总预取的cacheline数的比值。
预读取覆盖率是指在统计周期内,预读取的cacheline中被命中的cacheline数与总的cacheline引用数的比值。
值得注意的是,在本文的下述实施例中以预读取正确率和预读取覆盖率为例进行说明,但本实施例统计信息还可以包括更多的其他数据访问信息,如数据预读取的及时率等,本申请对此不予限定。
S620,处理器1212依据统计信息从历史地址信息中确定检索地址空间。
该检索地址空间是指存储有业务数据的一段地址空间,如该检索地址空间包括前述待读取数据的内存地址。
在一种可能的情形中,该检索地址空间仅包括前述待读取数据的内存地址。如图6所示,若当前未命中数据的地址为A,则检索地址空间仅包括A。
在另一种可能的情形中,该检索地址空间包括前述待读取数据的内存地址和其他内存地址。该其他内存地址可以从前述的历史地址信息查询获得。如图6所示,若当前未命中数据的地址为H1,则检索地址空间可以包括H1和A。
示例的,处理器1212依据统计信息从历史地址信息中确定检索地址空间,可以包括以下过程:处理器1212依据统计信息确定检索地址长度,并依据检索地址长度和待读取数据的内存地址,从历史地址信息中确定检索地址空间。
其中,检索地址长度用于指示与GHB进行匹配的内存地址的数量。在一些情形中,由于历史地址信息中记录的内存地址为统计周期内未命中数据的内存地址,因此,该检索地址空间包括的内存地址实际上是当前未命中数据的历史地址,继而,该检索地址长度也可以称为历史长度(history length)
作为一种可选的实现方式,该检索地址长度是由历史检索长度和前述的统计信息确定的。
示例的,处理器1212中可以运行有一个饱和计数器(saturating counter),为保证处理器的数据预读取性能,处理器1212可以为该饱和计数器添加控制逻辑:饱和计数器根据当前cache是否命中(hit/miss)来决定当前检索地址长度,检索地址长度与预读取的正确率和覆盖率相关。例如,检索地址长度越长,预读取正确率会越高,带来的预读取覆盖率就会变低;检索地址长度越短,预读取正确率会降低,预读取覆盖率会提高。也就是说,饱和计算器可以通过调整检索地址长度的大小来控制缓存的预取正确率和预读取覆盖率。
在一种可能的示例中,若统计信息满足预读取参考条件,处理器1212将处理器中记录的历史检索长度作为检索地址长度。该预读取参考条件包括缓存的参考正确率和参考覆盖率中至少一种。
参考正确率和参考覆盖率可以是处理器1212根据处理器1212的内在逻辑预设的,也可以是根据数据访问请求的类型确定的,还可以是生成数据访问请求的其他设备指定的。例如,参考正确率为45%,参考覆盖率为30%。又如,参考正确率为25%,参考覆盖率为40%。
这里以参考正确率是45%,参考覆盖率是30%为例,下面给出情形1来说明统计信息满足预读取参考条件的示例。
情形1,预读取正确率达到参考正确率、且预读取覆盖率达到参考覆盖率,如预读取正确率为50%、预读取覆盖率为40%,则饱和计数器无需更新检索地址长度,将历史检索长度作为检索地址长度即可。
在另一种可能的示例中,若统计信息不满足预读取参考条件,处理器1212依据统计信息更新历史检索长度获得检索地址长度。
这里以参考正确率是45%,参考覆盖率是30%为例,下面给出情形2~情形4来说明统计信息不满足预读取参考条件的示例。
情形2,预读取正确率达到参考正确率、但预读取覆盖率未达到参考覆盖率,如预读取正确率为50%、预读取覆盖率为20%,则饱和计数器将历史检索长度(如3)降低,获得检索地址长度(如2),以提高缓存的预读取覆盖率。
情形3,预读取正确率未达到参考正确率、而预读取覆盖率达到参考覆盖率,如预读取正确率为40%、预读取覆盖率为40%,则饱和计数器将历史检索长度(如3)增加,获得检索地址长度(如4),以提高缓存的预读取正确率。
情形4,预读取正确率未达到参考正确率、且预读取覆盖率未达到参考覆盖率,如预读取正确率为40%、预读取覆盖率为20%,则饱和计数器将历史检索长度(如3)增加,获得检索地址长度(如4),以提高缓存的预读取正确率。
在本实施例中,处理器通过对检索地址长度进行控制,以对缓存的预读取正确率和预读取覆盖率进行均衡,从而提高缓存的预读取性能。
值得注意的是,上述的情形1~情形4是以保证缓存的预读取正确率为前提,从而对检索地址长度进行调整,即在缓存的预读取正确率达到一定阈值的情况下,尽量提高缓存的预读取覆盖率。但在一种可能的实现方式中,处理器调整检索地址长度的原则也可以是:在缓存的预读取覆盖率达到一定阈值的情况下,尽量提高缓存的预读取正确率。也就是说,处理器可以依据缓存的统计信息来对预读取正确率和预读取覆盖率进行均衡,提高了处理器中缓存的整体读取效率,进而提升处理器的数据访问性能。
在一种可能的情形中,上述的预读取参考条件可以仅包括缓存的参考正确率,或者参考覆盖率。例如,预读取参考条件是指预读取正确率达到参考正确率。又如,预读取参考条件是指预读取覆盖率达到参考覆盖率。关于处理器调整检索地址长度的过程可以参考上述情形1~情形4的相关阐述,此处不予赘述。
另外,当GHB中记录有与检索地址空间关联的多个候选内存地址时,也可以依据这多个候选内存地址的预取系数来更新检索地址长度。例如,GHB中记录有10个候选内存地址,饱和计数器依据这10个候选内存地址的访问时间距离当前未命中数据的访问时间的间隔,为每个候选内存地址设置一个预取系数(或称衰减系数),如间隔越大的候选内存地址的预取系数越小,该候选内存地址对应的数据被预读取到缓存的优先级更低。
请继续参见图6,在处理器1212依据检索地址长度和前述待读取数据的内存地址确定检索地址空间后,处理器1212确定预读取地址的过程还包括以下步骤S630。
S630,处理器1212依据检索地址空间和GHB,确定一个或多个预读取地址。
在一种可选的实现方式中,处理器1212仅确定一个预读取地址,下面提供两个可能的具体示例进行说明。
示例1,若检索地址长度为1,前述待读取数据的内存地址为A,则处理器1212可以从GHB查询到两个候选的内存地址:C和D,由于C出现两次、D出现一次,处理器1212将内存地址C作为预读取地址。
示例2,若检索地址长度为2,前述待读取数据的内存地址为H1,且确定检索地址空间为H1+A,则处理器1212查询GHB确定预读取地址为C。
在另一种可选的实现方式中,若缓存中的剩余存储容量大于一定阈值,处理器1212也可以确定多个预读取地址,此处不再赘述。
请继续参见图4,在处理器1212确定了预读取地址之后,本实施例提供的数据预读取方法还包括以下步骤S430。
S430,处理器1212将内存中一个或多个预读取地址指示的数据写入缓存。
例如,上述的预读取地址可以是指数据在内存中的物理地址,处理器1212可利用直接内存访问(direct memory access,DMA)技术,基于该物理地址将数据写入到缓存,从而节省数据读取的时间,提升处理器的数据访问性能。
在本实施例中,处理器基于缓存中未命中数据的内存地址,确定一个或者多个预读取地址,并将该一个或多个预读取地址指示的数据从内存写入缓存,避免了预取器只能将单个内存地址指示的数据预读取到缓存导致的命中率(hit rate)较低的问题,提高了在数据读取过程中,处理器的缓存命中率,进而,提高了处理器的数据读取效率和处理器的数据访问性能。其中,预取器是基于历史数据进行预测的预取器,例如,在基于马尔可夫(Markov)算法基础上实施改进所获得的预取器。
另外,本申请的上述实施例是以处理器包括的缓存以及与处理器连接的内存为例,来对本申请提供的数据预读取方法来进行说明的。但在一些可能的实现方式中,本申请提供的数据预读取方法还可以应用于任意两级性能不同存储器,如下述的几种可能的示例。
示例1,处理器中的N级缓存和N+1级缓存。
示例2,主机的内存与存储器,该存储器是指用于持久化存储数据的存储器,如机械硬盘、固态硬盘等。
示例3,存储系统中具有缓存功能的SCM和持久化存储器。
示例4,一个存储介质中作用不同的两部分存储区域。如硬盘的不同的存储颗粒,四层式存储单元(quad level cell,QLC)和单层式存储单元(single level cell,SLC),SLC的数据访问速度优于QLC的数据访问速度,处理器可将QLC的数据预读取到SLC中,以提高硬盘的整体访问性能。
值得注意的是,上述几种示例仅为本实施例为说明本申请提供的数据预读取方法的应用场景而给出的示例,本申请提供的数据预读取方法还可以应用于更多种数据预读取的应用场景中,此处不予赘述。
可以理解的是,为了实现上述实施例中功能,存储系统和处理器包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
上文中结合图1至图6,详细描述了根据本申请所提供的数据预读取的方法,下面将结合图7,描述根据本申请所提供的数据预读取装置。
图7为本申请提供的一种数据预读取装置的结构示意图,数据预读取装置700可以用于实现上述方法实施例中处理器的功能,因此也能实现上述方法实施例所具备的有益效果。在本申请的实施例中,该数据预读取装置700可以是处理器1212,还可以是应用于处理器的模块(如芯片)。
如图7所示,数据预读取装置700包括收发单元710、地址匹配单元720、预读取单元730和存储单元740。该数据预读取装置700用于实现上述图4和图6中所示的方法实施例中处理器的功能。在一种可能的示例中,该数据预读取装置700用于实现上述数据预读取方法的具体过程包括以下内容1~3。
内容1,收发单元710,用于获取数据访问请求,该数据访问请求用于请求内存中待读取数据。
内容2,地址匹配单元720,用于若在处理器的缓存中未命中待读取数据,依据待读取数据的内存地址确定预读取地址,该预读取地址用于指示与待读取数据存在关联关系的数据。
内容3,预读取单元730,用于将预读取地址指示的数据写入缓存。
示例的,该预读取地址指示的数据可以存储在存储单元740中,该存储单元740的存储空间可以由缓存提供。
另外,如图7所示,数据预读取装置700包括的存储单元740还可以用于存储全局记忆缓存(GHB),地址匹配单元720还可以用于将待读取数据的内存地址与GHB进行匹配,确定预读取地址。关于地址匹配单元720的具体实现过程可以参考图6所示出的相关内容,此处不予赘述。
当数据预读取装置700用于实现图4所示的方法实施例中处理器1212的功能时:收发单元710用于执行S410,地址匹配单元720用于执行S420、预读取单元730用于执行S430。
当数据预读取装置700用于实现图6所示的方法实施例中处理器1212的功能时:地址匹配单元720用于执行S610~S630。
应理解的是,本发明本申请实施例的数据预读取装置700可以通过CPU实现,也可以通过ASIC实现,或可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、FPGA、通用阵列逻辑(generic array logic,GAL)或其任意组合。数据预读取装置700通过软件实现图4至图6中任一所示的数据预读取方法时,数据预读取装置700及其各个模块也可以为软件模块。
有关上述数据预读取装置700更详细的描述可以直接参考上述图4~图6所示的实施例中相关描述直接得到,这里不加赘述。
示例的,当数据预读取装置700通过硬件实现时,该硬件可以通过处理器实现,如上述的处理器1212等,如该处理器包括接口电路和控制电路。接口电路用于接收来自处理器之外的其它设备的信号并传输至控制电路,或将来自控制电路的信号发送给处理器之外的其它设备。
控制电路通过逻辑电路或执行代码指令用于实现上述实施例中任一种可能实现方式的方法。有益效果可以参见上述实施例中任一方面的描述,此处不再赘述。
本申请还提供一种预取器,该预取器包括处理器和存储器,该处理器可以实现上述实施例提供的数据预读取方法,该存储器用于存储上述的全局记忆缓存(GHB)。作为一种可选的实现方式,在硬件实现上,预取器可以是指封装有一个或多个处理器的芯片或芯片系统。
示例的,当预取器用于实现图4所示的方法时,预取器包括的处理器执行S410~S430所述的方法步骤及其可能的子步骤。在一种可选的情形中,预取器还可以包括通信接口,该通信接口可以用于执行图4所示出的S410。
例如,通信接口用于获取数据访问请求,当在处理器中未命中该数据访问请求所指示的待读取数据时,处理器依据该待读取数据的内存地址确定预读取地址,并将该预读取地址指示的数据从内存写入处理器包括的缓存中。值得注意的是,当预取器包括的存储器是指集成在处理器中的片内存储器(如缓存)时,处理器可以将预读取地址指示的数据写入该预取器包括的存储器中。
另外,当预取器用于实现图6所示的方法时,预取器包括的处理器执行S610~S630所述的方法步骤及其可能的子步骤。
值得注意的是,预取器还可以执行图7所示出的数据预读取装置700的功能,此处不予赘述。
本申请还提供一种预取系统,如图8所示,图8为本申请提供的一种预取系统的结构示意图,该预取系统800包括预取器810和通信接口820。预取器810和通信接口820之间相互耦合。可以理解的是,通信接口820可以用于预取系统800与外部设备进行通信和数据传输。
可选的,预取系统800还可以包括存储器830,用于存储预取器810执行的指令或存储预取器810运行指令所需要的输入数据或存储预取器810运行指令后产生的数据。
当预取系统800用于实现图4或图6所示的方法时,预取器810、通信接口820和存储器830还可以协同实现发送端和接收端执行的数据预读取方法中的各个操作步骤。预取系统800还可以执行图7所示出的数据预读取装置700的功能,此处不予赘述。
本申请实施例中不限定上述通信接口820、预取器810以及存储器830之间的具体连接介质。本申请实施例在图8中以通信接口820、预取器810以及存储器830之间通过总线840连接,总线在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,上述的存储器可以是但不限于:RAM、ROM、PROM、EPROM、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 (12)
1.一种数据预读取方法,其特征在于,所述方法由处理器执行,所述方法包括:
获取数据访问请求,其中,所述数据访问请求用于请求内存中待读取数据;
当在所述处理器的缓存中未命中所述待读取数据,依据所述待读取数据的内存地址确定预读取地址;所述预读取地址用于指示与所述待读取数据存在关联关系的数据;
将所述预读取地址指示的数据写入所述缓存。
2.根据权利要求1所述的方法,其特征在于,
依据所述待读取数据的内存地址确定预读取地址,包括:
将所述待读取数据的内存地址与全局记忆缓存GHB进行匹配,确定所述预读取地址;所述GHB用于指示在一个统计周期内,与所述待读取数据的内存地址关联的其他地址。
3.根据权利要求2所述的方法,其特征在于,
将所述待读取数据的内存地址与GHB进行匹配,确定所述预读取地址,包括:
获取所述统计周期内的统计信息,所述统计信息包括所述缓存的预读取正确率和预读取覆盖率中至少一种;
依据所述统计信息从历史地址信息中确定检索地址空间;所述检索地址空间包括所述待读取数据的内存地址,所述历史地址信息用于指示在所述统计周期内,所述缓存中多个未命中数据的内存地址的顺序;
依据所述检索地址空间和所述GHB,确定所述预读取地址。
4.根据权利要求3所述的方法,其特征在于,
依据所述统计信息从历史地址信息中确定检索地址空间,包括:
依据所述统计信息确定检索地址长度;所述检索地址长度用于指示与所述GHB进行匹配的内存地址的数量;
依据所述检索地址长度和所述待读取数据的内存地址,从所述历史地址信息中确定检索地址空间。
5.根据权利要求4所述的方法,其特征在于,
依据所述统计信息确定检索地址长度,包括:
若所述统计信息满足预读取参考条件,将所述处理器中记录的历史检索长度作为所述检索地址长度;所述预读取参考条件包括所述缓存的参考正确率和参考覆盖率中至少一种;
若所述统计信息不满足所述预读取参考条件,依据所述统计信息更新所述历史检索长度获得所述检索地址长度。
6.一种数据预读取装置,其特征在于,所述装置应用于处理器,所述装置包括:
收发单元,用于获取数据访问请求,其中,所述数据访问请求用于请求内存中待读取数据;
地址匹配单元,用于若在所述处理器的缓存中未命中所述待读取数据,依据所述待读取数据的内存地址确定预读取地址;所述预读取地址用于指示与所述待读取数据存在关联关系的数据;
预读取单元,用于将所述预读取地址指示的数据写入所述缓存。
7.根据权利要求6所述的装置,其特征在于,
所述地址匹配单元,具体用于:将所述待读取数据的内存地址与全局记忆缓存GHB进行匹配,确定所述预读取地址;所述GHB用于指示在一个统计周期内,与所述待读取数据的内存地址关联的其他地址。
8.根据权利要求7所述的装置,其特征在于,
所述地址匹配单元,具体用于:获取所述统计周期内的统计信息,所述统计信息包括所述缓存的预读取正确率和预读取覆盖率中至少一种;
所述地址匹配单元,还具体用于:依据所述统计信息从历史地址信息中确定检索地址空间;所述检索地址空间包括所述待读取数据的内存地址,所述历史地址信息用于指示在所述统计周期内,所述缓存中多个未命中数据的内存地址的顺序;
所述地址匹配单元,还具体用于:依据所述检索地址空间和所述GHB,确定所述预读取地址。
9.根据权利要求8所述的装置,其特征在于,
所述地址匹配单元,具体用于:依据所述统计信息确定检索地址长度;所述检索地址长度用于指示与所述GHB进行匹配的内存地址的数量;
所述地址匹配单元,还具体用于:依据所述检索地址长度和所述待读取数据的内存地址,从所述历史地址信息中确定检索地址空间。
10.根据权利要求9所述的装置,其特征在于,
若所述统计信息满足预读取参考条件,所述地址匹配单元,具体用于:将所述处理器中记录的历史检索长度作为所述检索地址长度;所述预读取参考条件包括所述缓存的参考正确率和参考覆盖率中至少一种;
若所述统计信息不满足所述预读取参考条件,所述地址匹配单元,具体用于:依据所述统计信息更新所述历史检索长度获得所述检索地址长度。
11.一种处理器,其特征在于,包括:接口电路和控制电路;
所述接口电路,用于:接收来自所述处理器之外的其它设备的信号并传输至所述控制电路,或将来自所述控制电路的信号发送给所述处理器之外的其它设备;
所述控制电路,用于:通过逻辑电路或执行代码指令用于实现如权利要求1至5中任一项所述的方法。
12.一种预取器,其特征在于,包括:
存储器,用于存储计算机指令;
处理器,用于从存储器中调用并运行该计算机指令,以执行权利要求1至5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111602772.9A CN116340203A (zh) | 2021-12-24 | 2021-12-24 | 数据预读取方法、装置、处理器及预取器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111602772.9A CN116340203A (zh) | 2021-12-24 | 2021-12-24 | 数据预读取方法、装置、处理器及预取器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116340203A true CN116340203A (zh) | 2023-06-27 |
Family
ID=86875134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111602772.9A Pending CN116340203A (zh) | 2021-12-24 | 2021-12-24 | 数据预读取方法、装置、处理器及预取器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116340203A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117492662A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 预读取的确定方法和装置、存储介质及电子设备 |
-
2021
- 2021-12-24 CN CN202111602772.9A patent/CN116340203A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117492662A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 预读取的确定方法和装置、存储介质及电子设备 |
CN117492662B (zh) * | 2023-12-28 | 2024-04-02 | 苏州元脑智能科技有限公司 | 预读取的确定方法和装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102518095B1 (ko) | 스토리지 장치 및 시스템 | |
JP2019067417A (ja) | 最終レベルキャッシュシステム及び対応する方法 | |
CN109582214B (zh) | 数据访问方法以及计算机系统 | |
US10572378B2 (en) | Dynamic memory expansion by data compression | |
WO2021218038A1 (zh) | 一种存储系统、内存管理方法和管理节点 | |
US20120102273A1 (en) | Memory agent to access memory blade as part of the cache coherency domain | |
WO2019128958A1 (zh) | 缓存替换技术 | |
WO2018090255A1 (zh) | 内存访问技术 | |
US20180032429A1 (en) | Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators | |
WO2023227004A1 (zh) | 内存访问热度统计方法、相关装置及设备 | |
JP2024029007A (ja) | 記憶システムをメインメモリとして使用するための方法および装置 | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
WO2023125524A1 (zh) | 数据存储方法、系统、存储访问配置方法及相关设备 | |
CN116795736A (zh) | 数据预读取方法、装置、电子设备和存储介质 | |
JP7438246B2 (ja) | ハードウェアベースのメモリ圧縮 | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
CN116340203A (zh) | 数据预读取方法、装置、处理器及预取器 | |
CN117992360A (zh) | 存储系统及存储方法 | |
CN115080262A (zh) | 实现内存共享控制的方法、设备、计算机设备和系统 | |
CN112148638A (zh) | 用于存储器页的粒度分配的页表 | |
EP4307129A1 (en) | Method for writing data into solid-state hard disk | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
CN107066208B (zh) | 一种外存设备的非对称读写方法及nvm外存设备 | |
US7383388B2 (en) | Method for storing data | |
US12019545B2 (en) | Memory system and operating method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |