WO2021143154A1 - 一种缓存管理方法及装置 - Google Patents

一种缓存管理方法及装置 Download PDF

Info

Publication number
WO2021143154A1
WO2021143154A1 PCT/CN2020/113309 CN2020113309W WO2021143154A1 WO 2021143154 A1 WO2021143154 A1 WO 2021143154A1 CN 2020113309 W CN2020113309 W CN 2020113309W WO 2021143154 A1 WO2021143154 A1 WO 2021143154A1
Authority
WO
WIPO (PCT)
Prior art keywords
data block
processor
data
memory
numa node
Prior art date
Application number
PCT/CN2020/113309
Other languages
English (en)
French (fr)
Inventor
宋昌
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP20913453.5A priority Critical patent/EP4024213B1/en
Publication of WO2021143154A1 publication Critical patent/WO2021143154A1/zh
Priority to US17/687,996 priority patent/US11928061B2/en

Links

Images

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0877Cache access modes
    • 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/0893Caches characterised by their organisation or structure
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Definitions

  • Symmetric multiprocessing is a commonly used multi-processor computer hardware architecture. Under the symmetric multi-processor architecture, the status of each processor is equal, and the use of resources is the same. Most current multi-processor systems use a symmetric multi-processing architecture, which is also called a symmetric multi-processing system (Symmetric multiprocessing system). In this system, there are more than one processor, these processors are connected to the same shared main memory, and controlled by a single operating system. In the case of multi-core processors, the symmetric multi-processing architecture treats each core as an independent processor. On a symmetric multiprocessing system, with the support of the operating system, whether the process is in user space or core space, it can be allocated to any processor to run. Therefore, the stroke can be moved between different processors to achieve load balance and improve the efficiency of the system.
  • the replacement priority of the data block is refreshed to the initial value, so that the data block can be stored in the cache space for a longer time, conforming to the law of memory access locality, which is beneficial to Improve the efficiency of the computing system.
  • the method further includes: the first processor adjusts the replacement priority of other data blocks in the first cache space.
  • adjusting the replacement priority of other data blocks in the first buffer space includes: increasing the replacement priority in the first buffer space by intervening the aforementioned initial value and current The priority of the replacement of other data blocks between the values.
  • the above solution discloses a method for adjusting the replacement priority of other data blocks when adjusting the replacement priority corresponding to the data block accessed by the processor in the cache replacement strategy provided by the present application. Since in the strategy provided by this application, each data block has an initial replacement priority, by adjusting the replacement priority of other data blocks, the data block with a smaller initial replacement priority can be prevented from being accessed by the processor for a long time. It can be replaced under the circumstances, so that the strategy provided by this application has a better effect and improves the efficiency of the computing system.
  • the above solution divides the cache space according to the memory of different NUMA nodes, so that different sets of cache lines in the cache space correspond to the memory of different NUMA nodes.
  • the processor processes a data block, according to the NUMA node to which the data block belongs, the data block is stored in the corresponding cache line set.
  • This solution ensures the proportion of data in the memory of a remote NUMA node in the cache space, thereby reducing the overhead of processor access and improving the efficiency of the computing system.
  • the present application provides a data management method, which is applied to a computing system using a NUMA architecture.
  • the computing system includes a first memory set and a second memory set, wherein the memory distribution in the first memory set In each NUMA node, the storage capacity of the memory in the first memory set is small, but the processor can access the memory in the first memory set faster; while the storage capacity of the memory in the second memory set is larger, but The processor accesses the memory in the second memory set at a slower speed; the method includes: the first processor receives an access request for the first data block; when the first data block is stored in the first memory, updating the memory in the first memory The replacement priority of the storage item.
  • the first data block when the first data block is not stored in the first memory, it is first determined whether there is storage space in the first memory for storing the first data block. In the storage space, the data block stored in the storage entry with the highest replacement priority is replaced; the first data block to be read is stored in the first memory, and the replacement priority of the storage entry is updated.
  • the first data block to be accessed can be stored in the first memory when the first data block is not stored in the first memory, so that the processor can continue to access the first data block subsequently. And check whether there is enough storage space before writing the first data block in the first memory, and replace the data block stored in the storage entry with the highest replacement priority when there is not enough storage space, which can improve the calculation The stability and efficiency of the system.
  • the present application provides a data management device applied to a computing system.
  • the computing system includes multiple NUMA nodes, each NUMA node includes a processor and a memory, and each memory is used to store data blocks,
  • the data management device is set in the first NUMA node, and includes: a receiving module for receiving an operation request of a first data block; a processing module for processing the first data block and according to the access attribute of the first data block , Allocate the replacement priority of the first data block in the first cache space, where the first cache space is the cache space in the first NUMA node, and the access attribute of the first access block includes the NUMA node that the first data block belongs to The distance from the first NUMA node, the home NUMA node of the first data block is the NUMA node pointed to by the home memory address of the first data block.
  • the access attribute of the first data block further includes any one or any combination of the following factors: the access of the home NUMA node of the data management device to the first data block Delay; the number of times the data management device accesses the memory of the NUMA node of the first data block within the preset time; the cache loss rate corresponding to the data block in the memory of the NUMA node that the data management device accesses the first data block within the preset time .
  • the processing module is specifically configured to: determine whether the first cache space stores the first data block; in the case where it is determined that the first cache space does not store the first data block , Write the first data block into the first cache space; allocate the initial replacement priority for the first data block in the first cache space.
  • the processing module is further configured to: determine that the second data block in the first cache space currently has the highest replacement priority, and remove the second data block from the first Remove from the cache space.
  • the processing module is configured to: determine whether the first cache space stores the first data block; in the case where it is determined that the first cache space stores the first data block, The replacement priority of the first data block in the first buffer space is refreshed from the current value to the initial value.
  • the processing module is further configured to: adjust the update priority of other data blocks in the first cache space.
  • the processing module is further configured to: adjust the replacement priority of other data blocks whose replacement priority in the first buffer space is between the initial value and the current value .
  • the present application provides a computing system that includes multiple NUMA nodes, each NUMA node includes a processor and a memory; the processor in each NUMA node is used to receive operation requests for data blocks, and process The data block; wherein, when the first processor in the first NUMA node of the multiple NUMA nodes is processing the operation request for the first data block, it is also used to allocate the first data block according to the access attribute of the first data block
  • the replacement priority of the data block in the first cache space where the first cache space is the cache space in the first NUMA node, and the access attribute of the first data block includes the home NUMA node and the first NUMA node of the first data block
  • the distance between the NUMA node attributable to the first data block is the NUMA node pointed to by the attribution memory address of the first data block.
  • the access attribute of the first data block includes any one or any combination of the following factors: the access of the home NUMA node of the first processor to access the first data block Delay; the number of times the first processor accesses the memory of the NUMA node belonging to the first data block within the preset time; the first processor accesses the cache corresponding to the data block in the memory of the NUMA node belonging to the first data block within the preset time Loss rate.
  • the first processor is further configured to: determine that the second data block in the first cache space currently has the highest replacement priority; Remove from a cache space.
  • the first processor is configured to: determine whether the first cache space stores the first data block; in the case where it is determined that the first cache space stores the first data block, The replacement priority of the first data block in the first buffer space is updated from the current value to the initial value.
  • the first processor is further configured to: adjust the replacement priority of other data blocks in the first cache space.
  • the present application provides a storage medium used to store a computer program.
  • the computer program When the computer program is read and executed by a processor, the computer device can implement such things as the first, second, and third aspects.
  • the data management method described in the aspect can be implemented using any suitable computer program.
  • FIG. 1 is a schematic structural diagram of a computer device using NUMA architecture provided by an embodiment of the present application.
  • FIG. 2 is a schematic diagram of a replacement priority configured for each data block in a cache space provided by an embodiment of the present application.
  • Fig. 3 is a schematic flowchart of an embodiment of the present application.
  • FIG. 12 is a flowchart of another embodiment provided by this application.
  • FIG. 13 is a flowchart of another embodiment provided by this application.
  • the cache space of a NUMA node in the computing system includes 6 cache lines, which are used to store data block 0-data block 5 respectively.
  • the processor sets a replacement priority for each data block in the cache space, and determines the replacement order of each data block according to the replacement priority.
  • the replacement priority values corresponding to data block 0-data block 5 in the storage space are 0-5, respectively.
  • the computing system can obtain the distance of each NUMA node through the Basic Input/Output System (BIOS), thereby determining the distance between a selected NUMA node and the memory of each NUMA node, and based on these The distance assigns different initial replacement priorities to the data blocks in the memory in each NUMA node.
  • BIOS Basic Input/Output System
  • the initial replacement priority of the data blocks in these 4 groups of memory can be based on The distance is set to 0 from far to near, Where A is the number of NUMA nodes in the computing system, and ⁇ i is a parameter.
  • the delay L i of the selected processor to access the data block in the memory of a certain NUMA node and the selected processor to access the memory within a preset period of time can also be used.
  • the number of data blocks in N i determines the initial priority corresponding to the memory.
  • the initial replacement priority corresponding to the data block in the memory can be determined according to the result of N i *L i.
  • the setting and updating of the replacement priority needs to consider the possibility of the data block being accessed by the processor. Since in steps S301 and S302, the processor requests to access the data block 4 and the data block 4 is hit in the cache, according to the principle of memory access locality, the data block 4 is more likely to be accessed again by the processor later. Therefore, the replacement priority of data block 4 needs to be adjusted. Since in this application, the initial replacement priority corresponding to each data block is different, in order to prevent the data block with a lower initial replacement priority from being replaced even if it is not accessed by the processor for a long time, When adjusting the replacement priority of the cache line storing the data block 4, the replacement priority of other cache lines can be adjusted together.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

为了减少NUMA架构下异地访存的数量和开销,本申请提供一种数据管理方法,该方法运用于计算系统,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存,每个内存用于存储数据块。在该方法中,某个NUMA节点中的处理器接收对数据块的操作请求,该处理器处理该数据块,并根据该数据块的访问属性,分配该数据块在该NUMA节点的缓存空间中的替换优先级,其中,该数据块的访问属性包括该数据块的归属NUMA节点与该NUMA节点之间的距离。通过为数据块分配替换优先级,可以使得距离当前NUMA节点较远的内存中的数据块更容易保存在该NUMA节点的缓存空间中,从而降低NUMA架构下的计算系统由于异地访存所带来的访问开销。

Description

一种缓存管理方法及装置 技术领域
本申请涉及计算机领域,特别涉及一种非统一内存访问架构(Non-Uniform Memory Access,NUMA)下的缓存管理方法和装置。
背景技术
随着IT技术的迅猛发展,各类IT系统中的数据量越来越大,例如现在一些应用于企业关键业务的服务器,由于这些业务处于企业应用中的核心地位。这就决定了它处理的数据和信息都是用户核心的商业数据和信息,而且通常都是海量的。从目前一些关键业务领域最常见的三大类应用:在线交易、商业分析和数据库来看,即使应用于一家普通企业,其所处理的数据量可能也十分惊人,就更不用说它们在银行、电信、证券等行业运行时,动辄就要面对TB或PB级的数据量了。如此规模的数据量,又关系到商业用户的生产、运营和决策效率,势必要求其承载平台要有非常出色的高性能处理能力,而且随着HANA等大规模内存数据库应用的兴起,对单台服务器系统的内存容量也提出了很高的要求,因此需要在单台服务器中集成更多的处理器,更多的内存以达到业务运行所需的高性能,大容量的要求。
为了在单台服务器中集成多个处理器,需要能够支持多进程(Multiprocessing)的系统架构。其中,多进程也称为多元处理,是指在一个单一计算系统中,使用两个及两个以上的中央处理器(central processing unit,CPU),并可以将计算工作分配给这些处理器。由此,衍生出了多CPU互联技术,即通过CPU之间的连接线,例如高速互联通道(quick path interconnect,QPI)将多个CPU互相连接,使多个物理CPU可以通过这些连接线相互连接,形成一个资源共享的服务器系统。
对称多处理(symmetric multiprocessing,SMP),是一种常用的多处理器的计算机硬件架构。在对称多处理器的架构下,每个处理器的地位都是平等的,对资源的使用权限相同。当前多数的多处理器系统,都采用对称多处理架构,也被称为对称多处理系统(Symmetric multiprocessing system)。在这个系统中,拥有超过一个以上的处理器,这些处理器都连接到同一个共享的主存上,并由单一操作系统来控制。在多核心处理器的例子中,对称多处理架构,将每一个核心都当成是独立的处理器。在对称多处理系统上,在操作系统的支持下,无论行程是处于用户空间,或是核心空间,都可以分配到任何一个处理器上运行。因此,行程可以在不同的处理器间移动,达到负载平衡,使系统的效率提升。
非统一内存访问架构(Non-uniform memory access,NUMA)是一种为多处理器的计算机设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在NUMA架构下,处理器访问与该处理器位于相同节点的内存的速度比非本地内存(即内存位于另一个节点,或者是多个处理器之间共享的内存)快一些。非统一内存访问架构的特点是:被共享的内存物理上是分布式的,所有这些内存的集合就是全局地址空间。所以处理器访问这些内存的时间是不一样的,显然访问本地内存的速度要比访问全局共享内存或远程访 问外地内存要快些。由于在NUMA架构中内存被分成了本地内存和异地内存,而CPU访问异地内存相对于访问本地内存具有更低的访存带宽和更高的访问延迟。随着系统中CPU总个数的增加,异地访存延迟与带宽的限制将严重影响系统的整体性能。
为了减少CPU访问内存中的数据所需的平均时间,计算系统通常会设置缓存(Cache),用于存储常使用的数据。缓存也被称为缓存空间、高速缓存,因为处理器访问缓存的速度仅次于处理器访问处理器中的寄存器的速度。且缓存的容量通常远小于内存,因此缓存通常用于保存CPU近期将要用的数据与指令。由于程序的访存局部性原理,因此Cache能够有效减少内存访问次数,从而缓解内存墙问题。然而,当前对缓存的主要管理算法为最近最少使用算法(Least Recently Used,LRU),即LRU替换算法。LRU替换算法是指选择最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当需要淘汰一个页面时,选择现有缓存的页面里t值最大的,即最近最少使用的页面予以淘汰。
然而,在NUMA架构下采用传统的LRU替换算法管理缓存无法获得系统性能最优的方案。
发明内容
本申请提出一种新的缓存替换策略,用于对缓存中的数据进行管理,可以在采用NUMA架构的计算系统中提高系统的性能。
第一方面,本申请提供一种数据管理方法,该方法应用于计算系统,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存,每个内存用于存储数据块,该方法包括:第一处理器接收对第一数据块的操作请求,该第一处理器为第一NUMA节点中的处理器;第一处理器处理第一数据块,并根据该第一数据块的访问属性,分配第一数据块在第一缓存空间中的替换优先级,其中,该第一缓存空间为第一NUMA节点中的缓存空间,第一访问块的访问属性包括第一数据块归属NUMA节点与第一NUMA节点之间的距离,该第一数据块的归属NUMA节点为第一数据块的归属内存地址所指向的NUMA节点。
由于现有技术对于计算系统的缓存管理通常采用的是LRU算法等策略,利用计算系统的访存局部性原理将处理器经常访问的数据块留在缓存空间中。而在采用NUMA架构的计算系统中,LRU替换算法等策略没有考虑到处理器在访问不同NUMA节点的内存时,所产生的访问开销是不同的。在本申请的技术方案中,处理器在对操作请求指向的数据块进行处理的同时,根据该数据块的访问属性分配该数据块在缓存空间里的替换优先级,而访问属性包括该数据块所归属的NUMA节点与处理器所在的NUMA节点之间的距离。通过采用上述技术方案,将数据块所归属的NUMA节点与处理器所在的NUMA节点之间的距离纳入缓存替换策略所考虑的因素,有利于在采用NUMA架构的计算系统中处理器减少对远端NUMA节点内存的访问,从而可以提高计算系统的效率。
根据第一方面,在本申请一种可能的实现方式中,第一数据块的归属NUMA节点距离第一NUMA节点越远,该第一数据块的替换优先级越低,而替换优先级越低指示数据块在缓存空间中保存越久。
上述技术方案进一步限定了根据NUMA节点之间的距离确定替换优先级的方法以及替换优先级的作用。通过采用上述技术方案,将距离处理器所在的NUMA节点距离的较远的 NUMA节点中的数据块赋予较低的替换优先级,使得这部分数据块在缓存空间中保存较久,有利于使计算系统降低因为处理器访问距离较远的NUMA节点中的内存而产生的访问开销,从而提高计算系统的效率。
根据第一方面,在本申请另一种可能的实现方式中,第一数据块的访问属性还包括以下因素的任意之一或任意组合:第一处理器访问第一数据块的归属NUMA节点的访问延迟;预设时间内第一处理器访问第一数据块的归属NUMA节点的内存的次数;预设时间内第一处理器访问第一数据块的归属NUMA节点的内存中的数据块对应的缓存丢失率。
上述技术方案公开了访问属性还可以包括的影响因素。通过根据这些影响因素的任意之一或者任意组合确定数据块在缓存空间中的替换优先级,有利于在决定缓存中的数据替换策略时综合考虑访存局部性以及发生缓存未命中时处理器访问内存所产生的开销,从而提升缓存对于处理器访问数据的作用,并提高计算系统的效率。
根据第一方面,在本申请另一种可能的实现方式中,第一处理器处理第一数据块,并根据该第一数据块的访问属性,分配第一数据块在第一缓存空间中的替换优先级,包括:第一处理器确定第一缓存空间是否保存第一数据块;在第一处理器确定第一数据块没有保存第一数据块的情况下,将第一数据块写入第一缓存空间;第一处理器为第一数据块分配在第一缓存空间中的初始替换优先级。
根据上述方案,当处理器所需要访问的数据块未保存在缓存空间时,将该数据块存入缓存空间并分配初始优先级,便于处理器在后续的访问中可以直接从缓存空间中读取该数据,从而可以进一步提高计算系统的效率。
根据第一方面,在本申请另一种可能的实现方式中,当第一处理器将第一数据块写入第一缓存空间之前,该方法还包括:第一处理器确定第一缓存空间中的第二数据块当前具有最高的替换优先级,并将该第二数据块从第一缓存空间中移除。
根据上述方案,可以在将处理器访问的数据块写入缓存空间之前先将当前替换优先级最高的数据块从缓存空间中移除,可以避免因为缓存空间没有足够的存储空间存储处理器访问的数据块,也可以将不太需要存放在缓存空间中的数据块移除,从而可以提高计算系统的稳定性和效率。
根据第一方面,在本申请另一种可能的实现方式中,第一处理器处理第一数据块,并根据该第一数据块的访问属性,分配第一数据块在第一缓存空间中的替换优先级,包括:第一处理器确定第一缓存空间是否保存第一数据块;在第一处理器确定第一缓存空间保存第一数据块的情况下,将第一数据块在第一缓存空间中的替换优先级由当前值刷新为初始值。
根据上述方案,当数据块被处理器访问时,将该数据块的替换优先级刷新为初始值,可以使该数据块更久地保存在缓存空间中,符合访存局部性的规律,从而有利于提高计算系统的效率。
根据第一方面,在本申请另一种可能的实现方式中,该方法还包括:第一处理器调整第一缓存空间中其它数据块的替换优先级。
根据第一方面,在本申请另一种可能的实现方式中,调整第一缓存空间中其它数据块的替换优先级,包括:调高第一缓存空间中的替换优先级介入上述初始值和当前值之间的其他数据块的替换优先级。
上述方案公开了本申请所提供的缓存替换策略中,在调整处理器所访问的数据块对应的替换优先级时,对其他数据块替换优先级的调整方法。由于在本申请所提供的策略中,各个数据块具有初始的替换优先级,因此通过对其他数据块替换优先级的调整,可以使初始替换优先级较小的数据块在长期不被处理器访问的情况下可以被替换出去,从而使本申请所提供的策略具有更好的效果,提高了计算系统的效率。
第二方面,本申请提供一种数据管理方法,该数据管理方法应用于计算系统,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存,每个内存用于存储数据块,该方法包括:第一处理器接收对第一数据块的操作请求,该第一处理器为第一NUMA节点中的处理器;该第一处理器将第一数据块写入第一缓存空间中的第一缓存行集合中,其中,该第一缓存空间为第一NUMA节点中的缓存空间,该第一缓存行集合与第一数据块的归属NUMA节点对应。
上述方案将缓存空间根据不同NUMA节点的内存进行分割,使得缓存空间内不同的缓存行集合对应不同NUMA节点的内存。当处理器处理数据块时,根据该数据块所归属的NUMA节点,将该数据块存入对应的缓存行集合中。该方案确保较远NUMA节点的内存中的数据在缓存空间中的比例,从而可以降低处理器访存产生的开销,提高了计算系统的效率。
第三方面,本申请提供一种数据管理方法,该数据管理方法应用于采用NUMA架构的计算系统,该计算系统包括第一存储器集合和第二存储器集合,其中,第一存储器集合中的存储器分布在各个NUMA节点中,第一存储器集合中的存储器的存储容量较小,但是处理器访问第一存储器集合中的存储器的速度较快;而第二存储器集合中的存储器的存储容量较大,但是处理器访问第二存储器集合中存储器的速度较慢;该方法包括:第一处理器接收对第一数据块的访问请求;当第一数据块存储于第一存储器中时,更新第一存储器中存储条目的替换优先级。
通过为第一存储器中的各个存储条目设置替换优先级并根据处理器的访问情况对替换优先级进行更新,有利于节省因处理器访存而产生的开销,从而提高计算系统的效率。
根据第三方面,在本申请一种可能的实现方式中,当第一数据块没有存储在第一存储器中时,先确定第一存储器中是否有存储空间用于存储第一数据块,如果没有存储空间,则将当前替换优先级最高的存储条目中存储的数据块替换出去;再将待读取的第一数据块存入第一存储器中,并更新存储条目的替换优先级。
通过上述方法,可以在第一数据块没有存储在第一存储器中时将待访问的第一数据块存入第一存储器中,便于处理器后续继续访问第一数据块。并在第一存储器中写入第一数据块之前检查是否有足够的存储空间,并在没有足够的存储空间时将当前替换优先级最高的存储条目中存储的数据块替换出去,从而可以提高计算系统的稳定性和效率。
第四方面,本申请提供一种数据管理装置,该数据管理装置应用于计算系统,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存,每个内存用于存储数据块,该数据管理装置设置于第一NUMA节点中,包括:接收模块,用于接收第一数据块的操作请求;处理模块,用于:处理第一数据块,并根据该第一数据块的访问属性,分配该第一数据块在第一缓存空间中的替换优先级,其中,该第一缓存空间为第一NUMA节点中的缓存空间,第一访问块的访问属性包括第一数据块归属NUMA节点与第一NUMA节点 之间的距离,该第一数据块的归属NUMA节点为第一数据块的归属内存地址所指向的NUMA节点。
根据第四方面,在本申请一种可能的实现方式中,第一数据块的归属NUMA节点距离第一NUMA节点越远,该第一数据块的替换优先级越低,而替换优先级越低指示数据块在缓存空间中保存越久。
根据第四方面,在本申请另一种可能的实现方式中,第一数据块的访问属性还包括以下因素的任意之一或任意组合:数据管理装置访问第一数据块的归属NUMA节点的访问延迟;预设时间内数据管理装置访问第一数据块的归属NUMA节点的内存的次数;预设时间内数据管理装置访问第一数据块的归属NUMA节点的内存中的数据块对应的缓存丢失率。
根据第四方面,在本申请另一种可能的实现方式中,处理模块具体用于:确定第一缓存空间是否保存第一数据块;在确定第一缓存空间未保存第一数据块的情况下,将该第一数据块写入第一缓存空间;为第一数据块分配在第一缓存空间中的初始替换优先级。
根据第四方面,在本申请另一种可能的实现方式中,处理模块还用于:确定第一缓存空间中的第二数据块当前具有最高的替换优先级,将第二数据块从第一缓存空间中移除。
根据第四方面,在本申请另一种可能的实现方式中,处理模块用于:确定第一缓存空间是否保存第一数据块;在确定第一缓存空间保存该第一数据块的情况下,将该第一数据块在第一缓存空间中的替换优先级由当前值刷新为初始值。
根据第四方面,在本申请另一种可能的实现方式中,处理模块还用于:调整第一缓存空间中的其它数据块的更新优先级。
根据第四方面,在本申请另一种可能的实现方式中,处理模块还用于:调整第一缓存空间中的替换优先级介于初始值和当前值之间的其它数据块的替换优先级。
第五方面,本申请提供一种数据管理装置,该数据管理装置用于计算系统,该计算系统包括多个NUMA节点,该NUMA节点包括处理器和内存,每个内存用于存储数据块,该数据管理装置设置于第一NUMA节点中,该数据处理装置包括:接收模块,用于接收对第一数据块的操作请求;处理模块,用于将第一数据块写入第一缓存空间中的第一缓存行集合中,其中,该第一缓存空间为第一NUMA节点中的缓存空间,第一缓存行集合与第一数据块的归属NUMA节点对应。
第六方面,本申请提供一种数据管理装置,该数据管理装置用于采用NUMA架构的计算系统,该计算系统包括第一存储器集合和第二存储器集合,其中,第一存储器集合中的存储器分布在各个NUMA节点中,第一存储器集合中的存储器的存储容量较小,但是处理器访问第一存储器集合中的存储器的书读较快;第二存储器集合中的存储器的存储容量较大,但是处理器访问第二存储器集合中的存储器的速度较慢;该数据块处理装置设置于第一NUMA节点中,该数据管理装置包括:接收模块,用于接收对第一数据块的访问请求;处理模块,用于当第一数据块存储于第一存储器中时,更新第一存储器中的存储条目的替换优先级。
根据第六方面,在本申请一种可能的实现方式中,处理模块还用于:当第一数据块没有存储在第一存储器中时,先确定第一存储器中是否有存储空间用于存储第一数据块,如果没有存储空间,则将当前替换优先级最高的存储条目中存储的数据块替换出去;再 将待读取的第一数据块存入第一存储器中,并更新存储条目的替换优先级。
第七方面,本申请提供一种计算系统,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存;每个NUMA节点中的处理器用于接收对数据块的操作请求,并处理该数据块;其中,多个NUMA节点中的第一NUMA节点中的第一处理器在处理对第一数据块的操作请求时,还用于根据第一数据块的访问属性,分配该第一数据块在第一缓存空间中的替换优先级,其中,第一缓存空间时第一NUMA节点中的缓存空间,第一数据块的访问属性包括第一数据块的归属NUMA节点与第一NUMA节点之间的距离,第一数据块的归属NUMA节点为第一数据块的归属内存地址所指向的NUMA节点。
根据第七方面,在本申请一种可能的实现方式中,第一数据块的归属NUMA节点距离第一NUMA节点越远,第一数据块的替换优先级越低,而替换优先级越低指示数据块在缓存空间中保存越久。
根据第七方面,在本申请另一种可能的实现方式中,第一数据块的访问属性包括以下因素的任意之一或任意组合:第一处理器访问第一数据块的归属NUMA节点的访问延迟;预设时间内第一处理器访问第一数据块的归属NUMA节点的内存的次数;预设时间内第一处理器访问第一数据块的归属NUMA节点的内存中的数据块对应的缓存丢失率。
根据第七方面,在本申请另一种可能的实现方式中,第一处理器用于:确定第一存储空间是否保存第一数据块;在确定第一存储空间未保存第一数据块的情况下,将第一数据块写入第一缓存空间;为第一数据块分配在第一缓存空间中的初始替换优先级。
根据第七方面,在本申请另一种可能的实现方式中,第一处理器还用于:确定第一缓存空间中的第二数据块当前具有最高的替换优先级;第二数据块从第一缓存空间中移除。
根据第七方面,在本申请另一种可能的实现方式中,第一处理器用于:确定第一缓存空间是否保存第一数据块;在确定第一缓存空间保存第一数据块的情况下,将第一数据块在第一缓存空间中的替换优先级由当前值更新为初始值。
根据第七方面,在本申请另一种可能的实现方式中,第一处理器还用于:调整第一缓存空间中其它数据块的替换优先级。
根据第七方面,在本申请另一种可能的实现方式中,第一处理器用于:调高第一缓存空间中的替换优先级介于初始值和当前值之间的其他数据块的替换优先级。
第八方面,本申请提供一种计算系统,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存,每个NUMA节点中的处理器用于接收对数据块的操作请求,并处理该数据块;其中,多个NUMA节点中的第一NUMA节点中的第一处理器在处理对第一数据块的操作请求时,还用于将第一数据块写入第一缓存空间中的第一缓存行集合中,其中,第一缓存空间为第一NUMA节点中的缓存空间,第一缓存行集合与第一数据块的归属NUMA节点对应。
第九方面,本申请提供一种计算系统,该计算系统用于采用NUMA架构的计算系统,该计算系统包括第一存储器集合和第二存储器集合,其中,第一存储器集合中的存储器分布在各个NUMA节点中,第一存储器集合中的存储器的存储容量较小,但是处理器访问第一存储器集合中的存储器的书读较快;第二存储器集合中的存储器的存储容量较大,但是处理器访问第二存储器集合中的存储器的速度较慢;每个NUMA节点中的处理器用于 接收对数据块的操作请求,并处理该数据块;其中,多个NUMA节点中的第一NUMA节点中的第一处理器在处理对第一数据块的操作请求时,还用于当第一数据块存储于第一存储器中时,更新第一存储器中的存储条目的替换优先级。
根据第九方面,在本申请一种可能的实现方式中,第一处理器还用于:当第一数据块没有存储在第一存储器中时,先确定第一存储器中是否有存储空间用于存储第一数据块,如果没有存储空间,则将当前替换优先级最高的存储条目中存储的数据块替换出去;再将待读取的第一数据块存入第一存储器中,并更新存储条目的替换优先级。
第十方面,本申请提供一种计算机装置,该计算机装置包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于执行存储器中的计算机程序以实现如第一方面、第二方面和第三方面所述的数据管理方法。
第十一方面,本申请提供一种存储介质,该存储介质用于存储计算机程序,该计算机程序被处理器读取并执行时,可以使计算机装置实现如第一方面、第二方面和第三方面所述的数据管理方法。
附图说明
图1是本申请实施例提供的一种采用NUMA架构的计算机装置的结构示意图。
图2是本申请实施例提供的一种缓存空间中各个数据块配置有替换优先级的示意图。
图3是本申请的一个实施例的流程示意图。
图4是本申请所提供的一种缓存地址的组成部分的示意图。
图5是本实施例中一种缓存空间中的数据块的替换优先级更新的示意图。
图6是本实施例中一种缓存空间中数据块的替换优先级进行调整的方法的示意图。
图7是本申请所提供的另一个实施例的流程示意图。
图8是本实施例中的一种数据块的替换优先级更新的示意图。
图9是本实施例中一种缓存空间中数据块的替换优先级进行调整的方法的示意图。
图10是本实施例中的另一种缓存空间中的数据块的替换优先级更新的示意图。
图11是本申请提供的另一种缓存空间的示意图。
图12是本申请所提供的另一个实施例的流程图。
图13是本申请所提供的另一个实施例的流程图。
图14是本申请所提供的另一个实施例的流程示意图。
图15是本申请所提供的一种数据管理装置的示意图。
图16是本申请所提供的一种计算系统的结构示意图。
具体实施方式
在当前的技术方案中,对于在NUMA架构下优化异地访存的方法主要是通过软件的方案来进行内存分配的优化,主要包括通过操作系统(Operation System,OS)内核中的内存管理模块,以及NUMA感知(NUMA-Aware)内存分配加速库两个方面进行优化。
在Linux内核中的首次接触(First-Touch)内存管理方法中,该内存分配方法将第一次产生页面错误(Page Fault)的内存页分配到与相应线程相同的NUMA节点上。通过这种方法,使得第一次访问的数据之后还是会被相同的线程访问,以此减小异地访存。
然而,First-Touch内存分配方法仅利用第一次访存信息去预测程序后续的访存特点,具有一定的局限性,对系统的优化空间有限。而在大多数真实的应用中,往往存在着大量的多线程共享数据,该方案无法有效减少共享数据对NUMA架构异地访存的影响。
图1是本申请实施例提供的一种采用NUMA架构的计算机装置的结构示意图。如图1所示,该计算机装置包括多个处理器011和多个存储器012,并且,多个处理器011和多个存储器012组成多个节点,每个节点至少包括一个处理器011和一个存储器012,其中,该存储器012既可以是内存,也可以是外存储器,本申请不对此进行限定。此外,每个节点中还包括缓存,用于存储处理器经常访问的数据,以减少处理器访问数据所产生的时延和开销。
其中,节点也可以称为非一致性内存访问节点。每个节点中的处理器011和包括内存在内的存储器012之间通过总线连接,各个节点的处理器之间通过高速互联总线(比如快速路径互连(quick path interconnect,QPI)总线)连接,且该高速互联总线的传输速率低于节点内处理器和内存之间连接的总线的传输速率。需要说明的是,图1中仅示出了一个节点的处理器与其他节点的处理器的连接关系。
由于节点间总线的传输速率低于节点内处理器和内存之间的总线的传输速率,且处理器访问其他节点的内存时,数据传输的距离也高于同节点的处理器与内存之间的距离。因此,在NUMA架构下,处理器访问本节点的内存中的数据的时延小于访问其他节点的内存的时延。而当处理器访问两个其他节点的内存时,考虑到数据传输距离的因素,则该处理器访问较近的节点的内存中的数据的时延小于访问较远的节点的内存中的数据的时延。因此,为了减少计算系统中因为处理器访问内存数据产生的时延,需要在将处理器经常调用的数据放入缓存,增加计算系统的缓存命中率的同时,尽量减少因为发生缓存未命中而需要访问与处理器距离较远的节点中的内存的概率。
在LRU替换算法中,仅仅考虑缓存中的缓存行自上次被访问以来所经历的时间,而没有考虑到缓存行中的数据所在的内存距离处理器的距离。本申请为了解决上述问题,降低因处理器访问内存产生的时延,引入了替换优先级的概念,用于作为计算系统确定如何替换缓存中的缓存行的依据。
图2是本申请实施例提供的一种缓存空间中的数据块配置有替换优先级的示意图。
如图2所示,计算系统中的一个NUMA节点中的缓存空间中包括6个缓存行,分别用来存放数据块0-数据块5。在本申请中,为了更好对缓存空间进行管理,处理器为缓存空间中的各个数据块设置了替换优先级,并根据该替换优先级确定各个数据块的替换顺序。如图2所示,存储空间中的数据块0-数据块5对应的替换优先级的数值分别为0-5。需要指出的是,为了便于说明,在本申请中,以缓存空间中替换优先级的数值越大的数据块越优先被替换为例进行说明,即缓存空间中替换优先级数值最大的数据块5最优先被替换,但实际上也可以将替换策略设定为替换优先级的数值越小的数据块越优先被替换,本申请不对此进行限定。
在本申请中,对于存储空间中的各个数据块,计算系统会为这些数据块分配初始替换优先级,并且这些数据块的替换优先级后续会根据处理器对缓存空间的访问情况发生变化。而数据块的初始替换优先级是根据该数据块的访问属性来确定的,即当该数据块被写入缓存空间时,计算系统会根据该数据块的访问属性分配该数据块在缓存空间中的 替换优先级。
需要指出的是,由于每个NUMA节点中都包括处理器以及对应的缓存空间,因此,同一个缓存空间相对于NUMA架构下不同NUMA节点中的处理器,该缓存中的数据块的替换优先级的设置是不同的。本申请为了方便说明,将讨论缓存空间相对于同一NUMA节点的处理器的情况下,各个数据块的替换优先级的设置以及更新策略,但本申请不对此进行限定。另外,本申请主要采用了处理器为缓存空间中的数据块设置并更新替换优先级的表述方式进行说明,实际上,也可以认为是处理器为缓存空间中存储数据块的缓存行设置替换并更新替换优先级,两种表述方式在本质上是相同的,本申请不对此进行限定。
缓存空间中的数据块的初始优先级是根据该数据块的访问属性来确定的,而数据块的访问属性主要与该数据块所归属的NUMA节点相关。其中,数据块所归属的NUMA节点为数据块归属内存地址所指向的NUMA节点。具体来说,缓存空间中的数据块是为了便于处理器访问,根据一定的策略将处理器需要经常访问的数据块从内存中复制一份并写入缓存空间而得到的。而当数据块从内存中复制并写入缓存空间时,内存中仍将继续存储着该数据块。计算系统可以根据该数据块在内存中的地址确定该内存地址所指向的NUMA节点。也就是说,数据块所归属的NUMA节点是指存储该数据块的内存所在的NUMA节点。
对于数据块的初始替换优先级的设置,本申请提供了多种方法用来根据数据块的访问属性确定数据块的初始替换优先级。
在一种确定初始替换优先级的方法中,数据块的访问属性包括该数据块的归属NUMA节点与选定的NUMA节点之间的距离,即基于存储该数据块的内存所在的NUMA节点与选定NUMA节点之间的距离确定该内存中的数据块在写入缓存空间时的初始替换优先级,其中,本申请中选定的NUMA节点是指当前正在进行数据访问操作的NUMA节点,选定的处理器是指当前正在进行数据访问操作的处理器,该选定的NUMA节点或者处理器可以是计算系统中任一NUMA节点或处理器。NUMA节点之间的距离可以采用不同的方法来确定,例如,可以将数据块所归属的内存与选定NUMA节点中的处理器的距离作为NUMA节点间的距离。由于在NUMA架构下,对于选定NUMA节点中的处理器来说,该处理器访问本NUMA节点的内存时,访问速度相对较快,时延也相对较低;而当该处理器访问临近NUMA节点的内存时,访问速度相对较慢,时延比起访问本节点的内存也有所提高。而当该处理器访问更远距离节点的内存时,随着数据传输距离的增加,访问速度会进一步变慢,而时延也会进一步提高。根据上述特点,如果选定的处理器由于待读取数据块没有在缓存中命中而需要从远距离NUMA节点的内存中获取时,需要花费大量的开销。因此,在本申请中,计算系统为距离选定的NUMA节点较远的NUMA节点中的内存中的数据块设置较低的初始替换优先级,使得这些内存中的数据块存入选定NUMA节点的缓存空间中后,不容易被替换;相对的,计算系统为距离选定的NUMA节点较近的NUMA节点中的内存及选定的NUMA节点中的内存中的数据块设置较高的初始替换优先级,使得这些内存中的数据块存入缓存后,可以优先被替换。
具体来说,计算系统可以通过基本输入输出系统(Basic Input/Output System,BIOS)获取各个NUMA节点的距离,从而确定某个选定的NUMA节点与各个NUMA节点内存 之间的距离,并根据这些距离为每个NUMA节点中的内存中的数据块分配不同的初始替换优先级。在本申请一种可能的实现方式中,假设系统中根据与选定NUMA节点的距离将各个NUMA节点中的内存分为4组,则这4组内存中的数据块的初始替换优先级可以根据距离由远到近分别设置为0,
Figure PCTCN2020113309-appb-000001
其中A为该计算系统中NUMA的节点数,α i为参数,当i越大时,α i越小,从而使得距离选定的NUMA节点越近的内存中的数据块所对应的初始替换优先级越大。可选的,可以调整α i的取值,使得数据块的初始替换优先级为整数,以方便后续调整。
类似的,也可以基于不同数据块所归属的NUMA节点与选定的NUMA节点的相对距离来为数据块分配不同的初始替换优先级。此处的NUMA节点与选定节点的相对距离,既可以是上文提到的数据块所在的内存与选定NUMA节点中的处理器的相对距离,也可以是与选定NUMA节点中的缓存之间的相对距离,本申请不对此进行限定。
在另一种确定初始替换优先级的方法中,数据块的访问属性包括以下因素任意之一或者任意组合:选定NUMA节点的处理器访问数据块归属的NUMA节点的访问延迟、预设时间内选定NUMA节点的处理器访问数据块归属NUMA节点的内存的次数、预设时间内第一处理器访问第一数据块归属NUMA节点的内存中的数据块对应的缓存丢失率。即可以基于程序访存特点,根据一段时间周期内选定NUMA节点中的处理器访问不同内存中的数据块对计算系统整体应用性能的比例,动态调整各内存中的数据块对应的初始替换优先级。
具体来说,在本申请一种可能的实现方式中,可以为每一个内存设定对应的缓存未命中(Miss,也称作丢失)影响因子,某一内存的缓存Miss影响因子Fi可以定义为访问该内存中的数据在缓存中所产生的Miss率与访问该内存的延迟的乘积。假设选定NUMA节点的处理器对于某一NUMA节点的内存的访问延迟为L i,一段预设的时间周期内该处理器访问该内存中的数据块的缓存Miss率为β i,则该内存的Miss影响因子为Fi=β i*L i。同时,整个系统在该时间周期内缓存Miss影响因子可表示为:
Figure PCTCN2020113309-appb-000002
由于每个内存的缓存Miss影响因子和整个系统的缓存Miss影响因子可以根据上述公式计算得出,因此,某个内存中的数据块对应的初始替换优先级可以根据该内存的缓存Miss影响因子占整个系统的缓存Miss影响因子的比例或者通过比较某个内存的缓存Miss影响因子与其他内存的缓存Miss影响因子得出。
在本申请另一种可能的实现方式中,也可以利用选定的处理器访问某一NUMA节点的内存中的数据块的延迟L i以及一段预设的时间周期内选定处理器访问该内存中的数据块的次数N i来确定该内存对应的初始优先级。示例的,可以根据N i*L i的结果来确定该内存中的数据块对应的初始替换优先级。
需要指出的是,本申请为了方便说明,后续将以缓存空间中包括6个缓存行为例介绍本申请技术方案,实际上本申请对缓存空间中的缓存行数量并不限定。以及在本申请中,替换优先级既可以设置为整数,也可以设置为非整数,本申请为了方便说明,在后续的实施例中将采用将替换优先级设置为整数的方式进行说明,实际上本申请对替换优先级数值的形式不进行限定。
图3是本申请的一个实施例的流程示意图。
如图3所示,本实施例包括以下步骤:
S301:第一处理器接收对第一数据块的访问请求。
处理器在运行程序指令时,时常需要调用内存中的数据块。而由于处理器访问缓存的速度相比访问内存中的数据更快,因此当处理器需要读取数据时,会首先尝试从该处理器对应的缓存中获取数据。具体来说,当第一NUMA节点中的第一处理器接收到针对第一数据块的操作请求后,该第一处理器将先访问第一NUMA节点中的第一缓存空间,并确定第一数据块是否存储在该缓存空间中。
S302:确定访问请求所对应的第一数据块在第一缓存空间中命中。
结构上,缓存空间可以包括若干个缓存行或者缓存块(cache block),其中,每个缓存行具有连续内存地址的若干存储单元,可以用来存储数据块。例如,在32位计算系统中,每个缓存行存储的数据块大小大约是一个双字,即8个字节。也就是说,每个双字在缓存中具有唯一的块偏移。
进一步的,图4是一种缓存地址的组成部分的示意图。如图4所示,计算系统的缓存的地址共有m位,可形成M=2 m个不同的地址。计算系统的缓存被组织成一个有S=2 s个缓存组(Cache Set)的数组,每个组包含E个缓存行。每个行时有一个B=2 b字节的数据块组成的,一个有效位(valid bit)指示这个行是否包含有意义的习性,还有t=m-(b+s)个标记位(tag bit)是当前块的内存地址的位的一个子集,地址的标记位、组索引以及块偏移唯一地标识存储在这个缓存行中存储的数据块。缓存地址还可以包括字节偏移,用来指示数据块中的数据所存储的具体位置。
下面简要地描述一种缓存空间的工作流程。例如,缓存空间包括四个缓存行,每个缓存行可以用于存储16字节的数据,因此共有64字节的存储空间。该缓存使用写回(write back)策略以保证数据一致性。系统启动时,缓存空间中没有任何数据。之后,数据逐渐被写入或换出缓存。当处理器执行数据读取指令时,控制逻辑可以采用如下流程:第一,用数据读取指令中的索引定位到相应的缓存行;第二,用标签尝试匹配该缓存行的对应标签值,如果存在这样的匹配,称为命中;否则称为未命中;第三、如果在第二步命中,则根据块偏移将已定位缓存行内的特定数据段取出,发送给处理器;第四、如果在第二步中未命中,先用该地址(标签+索引)从内存读取数据并载入到当前缓存行,再利用块偏移将位于此缓存行内的数据块取出,送回处理器。需要注意的是,读入的数据会覆盖之前的内容。为保证数据一致性,必须先将数据块内的现有内容写回内存。另外,即使处理器请求的数据的容量小于缓存行所存储的数据的大小,缓存仍必须在读取数据的时候把整个缓存行都填充满。缓存空间中数据的读取是按缓存行大小为边界对齐的。对于大小为16字节的缓存行,任何因为0x0000、或0x0001、或0x0002、或0x0003造成的未命中,都会导致位于内存0x0000—0x0003的全部四个字被读入块中。例如,此时处理器请求的地址在0x0020到0x0023之间,或在0x0004到0x0007之间,或在0x0528到0x052B之间,或在0x05EC到0x05EF之间,均会命中。其余地址则全部未命中。而处理器执行数据写入指令时,控制逻辑依如下流程:用索引定位到相应的缓存块。用标签尝试匹配该缓存块的对应标签值。其结果为命中或未命中。如命中,用块内偏移定位此块内的目标字。然后直接改写这个字。如未命中,依系统设计不同可有两种处理策略,分别称为按写分配(Write allocate)和不按写分配(No-write allocate)。如果是按写分配,则先如处理读未命中一样,将未命中数据读入缓存,然后再将数据写到被读入的字单元。 如果是不按写分配,则直接将数据写回内存。
根据上述的缓存工作流程,第一处理器根据访问请求中所携带的第一数据块的信息,确定访问请求所对应的第一数据块在第一缓存空间中命中。
为了便于说明,图5示出了本实施例中各个数据块当前的替换优先级以及当访问请求所对应的数据在缓存中命中时各个数据块的替换优先级发生的变化情况。其中,图5的第一行表示的是各个数据块对应的初始替换优先级,图5的第二行表示的是各个数据块当前的替换优先级。如图5所示,数据块0-5所对应的初始替换优先级的数值分别是0、2、3、5、1和6。根据前文所述,这些数据块对应的初始替换优先级是根据这些数据块的访问属性确定的,而数据块的访问属性包括下列因素的至少一种或者组合:数据块归属的NUMA节点与第一NUMA节点之间的距离,第一处理器访问数据块的归属NUMA节点的访问延迟,预设时间内第一处理器访问数据块的归属NUMA节点的内存次数,预设时间内第一处理器访问数据块的归属NUMA节点的内存中的数据对应的缓存丢失率。
而数据块0-数据块5所对应的当前的替换优先级的数值分别为0、2、3、5、4和6。由于数据块0对应的替换优先级的数值最小,数据块5对应的替换优先级的数值最大,则数据块5最优先被替换,而数据块0最不优先被替换。
假设访问请求中所指示的第一数据块为数据块4。而由于数据块4在缓存空间中,因此确定访问请求所指示的待访问数据在缓存中命中。
S303:更新缓存空间中的数据块的优先级。
在本发明中,替换优先级的设定和更新需要考虑该数据块被处理器访问的可能性。由于在步骤S301和S302中,处理器要求访问数据块4且数据块4在缓存中被命中,根据访存局部性原理,数据块4后续被处理器再次访问的可能性较高。因此,需要调整数据块4的替换优先级。而由于在本申请中,各个数据块对应的初始替换优先级是不同的,为了防止初始替换优先级较低的数据块即使长时间不被处理器访问也不会被替换出去的情况发生,在调整存有数据块4的缓存行的替换优先级时,可以一并调整其他缓存行的替换优先级。
图6示出一种当请求所述访问的数据块在缓存空间中命中时,缓存空间中的数据块的替换优先级更新的方法。如图6所示,在该数据块的替换优先级更新策略中,涉及3种数据块:第一种是被命中的数据块,由于在本实施例中,数据块对应的替换优先级大于等于该数据块初始的替换优先级,因此,当需要调整被命中的数据块的替换优先级时,可以将该数据块的替换优先级设置为该数据块的初始替换优先级。如果被命中的数据块的替换优先级等于该数据块的初始替换优先级,则不对该数据块的替换优先级进行调整。
第二种数据块是替换优先级介于被命中的数据块对应的数据块的初始替换优先级和当前替换优先级之间的数据块。即第二种数据块当前的替换优先级大于等于被命中数据块的初始替换优先级,且小于被命中数据块当前的替换优先级。对于第二种数据块,可以将这些数据块的替换优先级增加一个预设值。为了方便说明,本申请以增加的预设值是1为例进行说明,但本申请不对增加的预设值的具体数值进行限定。
第三种数据块是除了当前被命中的数据块以及第二种数据块以外的数据块。这些数据块当前的替换优先级小于被命中的数据块的初始替换优先级,或者大于被命中的数据块当前的替换优先级。由于他们的替换优先级不受到被命中数据块的替换优先级调整的 影响,因此可以不调整第三种缓存行的替换优先级。
上述调整缓存空间中的数据块的优先级的方法仅为示例,实际上也可以采用其他方法,例如,可以调高缓存空间中除了被命中数据块以外的所有数据块的替换优先级,本申请对此不作限定。
图5的第三行是调整后的各个数据块的替换优先级。如图5所示,数据块4是处理器所访问的数据块,因此数据块4是上述第一种数据块,需要将数据块4的替换优先级的数值调整为数据块4的初始替换优先级的数值,即将替换优先级的数值从4调整为1。而由于数据块4的初始替换优先级是1,而数据块4当前的替换优先级是4,因此第二类数据块是当前替换优先级介于替换优先级1和4之间的数据块,即数据块1和数据块2,对上述第二种数据块的替换优先级进行调高处理,使得数据块1和数据块2的替换优先级的数值由2和3分别调整为3和4。第三类数据块是数据块0、数据块3和数据块5,对这三个数据块的替换优先级不作调整。
S304:第一处理器处理第一数据块。
当对数据块的替换优先级进行调整后,处理器对第一数据块进行处理。
需要指出的是,本实施例上述步骤的顺序仅为示例,本申请不对这些步骤的顺序进行限定。实际上,这些步骤中的部分步骤的顺序是可以调整的,例如可以先执行步骤S304,再执行步骤S303,即处理器先处理所访问的第一数据块,再调整各个数据块所对应的替换优先级的数值。
图7是本申请所提供的另一个实施例的流程示意图。如图7所示,该实施例包括以下步骤:
S401:第一处理器接收对第一数据块的访问请求。
该步骤可参考步骤S301,本申请不在此进行赘述。
S402:确定访问请求所对应的第一数据块没有在缓存空间中命中。
与步骤S302相反,确定访问请求所对应的数据没有存储在缓存空间中,即请求访问的第一数据块在缓存空间中未命中。
S403:判断缓存空间中是否有剩余空间。
当发生缓存未命中情况时,第一处理器需要从内存中获取数据,并且要将获取的数据写入缓存中,以便后续可以更高效地对该数据进行调用。
缓存可以分为多个层级。层级越小,距离处理器就越近,容量也更小。当前的计算系统中通常包括3级缓存,其中,一级缓存(Level 1,L1)一般与处理器同片封装,其访问速度几乎和寄存器一样快,通常是2-4个时钟周期,大小约为8KB-128KB。二级缓存(Level 2,L2)可以在处理器芯片内部,也可以在处理器芯片外部,访问速度大约是10个时钟周期,大小约为64KB-8MB。三级缓存(Level 3,L3)通常在芯片外部被多核处理器共享,访问速度大约是30-40个时钟周期,大小约为4MB-128MB。在部分NUMA系统中,计算系统还可以包括四级缓存(Level 4,L4),作为多个NUMA节点的远程缓存,大小会进一步大于L3。
由于缓存的大小相比内存较小,因此当发生缓存未命中的情况,第一处理器需要将获取的数据写入缓存空间时,可能会出现缓存当前的容量已经被内存中的数据写满的情况,而导致没有可用的缓存行用来存储从内存中获取的数据,因此,需要先判断缓存空 间中是否还有剩余空间。
S404:如果缓存空间中没有剩余空间,则将替换优先级最高的数据块替换出去。
在步骤S403中,第一处理器在将获取的数据写入缓存时,需要先判断缓存空间当前是否有剩余空间来存储获取的数据。当缓存空间中没有剩余空间时,需要将部分缓存行中存储的数据块删除,以便提供存储空间用于存储获取的数据。而此时删除缓存空间中现存的哪部分数据,需要根据计算系统的缓存替换策略来确定。在本申请中,由于设置了替换优先级,可以根据该替换优先级决定被替换的数据块。
图8是本实施例中的一种数据块的替换优先级更新的示意图。其中,图8中的第一行和第二行分别表示缓存空间中的各个数据块的初始替换优先级和当前替换优先级。如图8所示,在写请求之前,缓存中共有6个缓存行,分别用于存储数据块0-数据块5,且数据块0-数据块5对应的初始替换优先级和当前替换优先级的数值分别为0-5。若该缓存只能存储6个缓存行,且发生了缓存未命中时,需要替换已经存储在缓存中的某个数据块,以提供空间用于存储访问请求在内存中命中的数据。而由于数据块5当前的替换优先级是5,为该缓存空间中替换优先级最高的数据块,因此此时将数据块5从缓存空间中替换出去。
在本申请一种可能的实现方式中,计算系统中的缓存还包括受害者缓存(victim cache)。受害者缓存是一个与直接匹配或低相联缓存并用的、容量很小的全相联缓存。当一个数据块被替换出缓存时,并不直接丢弃该数据,而是暂时将该数据存入受害者缓存。如果受害者缓存已满,再替换掉其中一项。当进行缓存标签匹配时,在与索引指向标签匹配的同时,并行查看受害者缓存,如果在受害者缓存发现匹配,就将其此数据块与缓存中的不匹配数据块做交换,同时返回给处理器。设置受害者缓存的意图是弥补因为低相联度造成的频繁替换所损失的时间局部性。
S405:将访问的第一数据块放入缓存空间中。
在发生缓存未命中时,需要将访问请求对应的在内存中命中的数据存入缓存中。无论是在S403步骤中判断缓存中有剩余空间的情况,或者是虽然在S403步骤中判断没有缓存空间,但是在步骤S404中将替换优先级最高的数据块替换出去而产生剩余空间的情况,由于缓存中具有剩余空间,因此可以将访问请求对应的数据块放入缓存中。
S406:更新缓存空间中的数据块的替换优先级。
图9是当访问请求所对应的数据在缓存中未命中时,对缓存中的数据块的替换优先级进行更新的方法。如图9所示,当将内存中命中的数据块写入缓存行时,需要确定该数据块对应的初始替换优先级,并根据该初始替换优先级调整缓存中的其他数据块的替换优先级。其中,该数据块对应的初始替换优先级可以根据前面提到的策略,即根据该数据块的访问属性确定该数据块的初始替换优先级。
对于该缓存空间中的其他数据块,需要根据数据块当前的替换优先级与当前访问的数据块的初始替换优先级的关系进行调整。在本申请一种可能的实现方式中,对于当前的替换优先级大于等于当前访问的数据块的初始替换优先级的数据块,将这些数据块当前的替换优先级增加预设值,作为更新后的替换优先级。而对于替换优先级小于当前访问的数据块初始优先级的数据块,这些数据块的替换优先级保持不变。
上述调整缓存空间中的数据块的优先级的方法仅为示例,实际上也可以采用其他方 法,例如,可以调高缓存空间中除了当前访问的数据块以外的所有数据块的替换优先级,本申请对此不作限定。
图10是本实施例中的另一种数据块的替换优先级更新的示意图。
在图10中,缓存空间中原有6个缓存行存储着数据块,并且有空闲的缓存行可以存储更多的数据块。当发生了缓存Miss时,将内存中命中的数据块(以下称为新加块)写入缓存空间的缓存行中。为了对缓存空间中数据块的替换优先级进行调整,首先根据新加块的访问属性确定新加块对应的初始替换优先级,并将该新加块的替换优先级调整为该初始替换优先级。以新加块对应的初始替换优先级的数值是1为例,由于数据块1-数据块5当前的替换优先级的数值分别为1-5,大于等于新加块对应的初始替换优先级,因此需要分别加预设值作为更新后的替换优先级。而数据块0当前的替换优先级为0,小于新加块的初始替换优先级,因此不需要调整数据块0的替换优先级。
而在图8中,缓存空间中原有6个缓存行,并且该缓存空间只可以存储6个缓存行。参见步骤S404,当发生了缓存Miss时,将当前替换优先级最高的数据块5从缓存空间中替换出去,从而为当前命中的数据块提供缓存空间中的存储空间。和图10类似,当确定新加块所对应的初始替换优先级为1时,由于数据块1-数据块4当前的替换优先级分别为优先级1-优先级4,大于等于新加块的初始替换优先级,因此需要分别加预设值作为更新后的替换优先级。而数据块0当前的替换优先级为0,小于等于新加块的初始替换优先级,因此不需要调整数据块0的替换优先级。
S407:第一处理器处理第一数据块。
图11是本申请提供的另一种的缓存空间的示意图。
如图12所示,本申请将缓存空间进行分割,形成多个缓存区域,每个缓存区域包括多个缓存行,因此也可以称为缓存行集合。不同的缓存区域用于存储不同的内存里的数据,而各个缓存区域中的数据互不影响。
图12是本申请提供的另一个实施例的流程图。
如图12所示,该实施例包括以下步骤:
S1210:第一处理器接收对第一数据块的操作请求,该第一处理器为第一NUMA节点中的处理器。
在本实施例中,缓存空间被分割成多个缓存区域,分别对应不同的内存。因此当第一处理器需要将第一数据块写入缓存中时,首先需要确定该第一数据块所在的内存,以选择对应的缓存区域来写入。
S1220:第一处理器将第一数据块写入第一缓存空间中的第一缓存行集合中,其中,第一缓存空间为第一NUMA节点中的缓存空间,第一缓存行集合与第一数据块的归属NUMA节点内存对应。
当确定了第一数据块所归属的NUMA节点后内存,第一处理器确定内存该NUMA节点对应的第一缓存行集合,并将该第一数据块写入第一缓存行集合中未占用的缓存行中。
在本申请的一种实现方式中,当第一缓存行集合已经被占满时,根据预设的替换策略选择缓存行集合中所存储的一个数据块,并将该数据块替换出缓存空间。其中,预设的替换策略既可以是现有的LRU替换算法等策略,也可以是本申请所提供的根据替换优 先级的大小确定待替换的数据块的策略,本申请不对此进行限定。
需要指出的是,本申请虽然以NUMA架构下缓存中的数据替换策略为例进行说明,实际上,在NUMA架构下,任何需要保存经常处理器访问的数据,以减少未命中时从其他存储器获取数据所产生的开销的存储器,均可以采用本申请所给出的数据替换策略。例如,采用NUMA架构的计算系统可以利用容量大的机械硬盘保存该计算系统的所有数据,而利用容量较小,但读取速度快的固态硬盘(solid state disk,SSD)来保存处理器经常需要读取的数据。在这种情况下,SSD中的数据替换策略也可以采用本申请所给出的方案来实现。而在这种场景下,SSD中的存储条目相当于上述实施例中缓存中的缓存行,而各个NUMA节点的机械硬盘相当于上述实施例中的内存。
图13是本申请提供的另一个实施例的流程示意图。该实施例应用于采用NUMA架构的计算系统,该计算系统包括第一存储器集合和第二存储器集合,其中,第一存储器集合和第二存储器集合中的存储器都分布在各个NUMA节点中。其中,第一存储器集合中的存储器的存储容量较小,但是处理器访问第一存储器集合中的存储器的速度较快;而第二存储器集合中的存储器的存储容量较大,但是处理器访问第二存储器集合中存储器的速度较慢。因此,第一存储器集合主要用来存储处理器需要频繁处理的数据,也称为热数据;而第二存储器集合需要存储处理器访问频率较低的数据,也称为冷数据。由于第一存储器集合中的存储器的存储容量较小,因此所存储的数据需要根据处理器的访问频率等因素进行替换,该实施例将给出适用于NUMA架构下的计算系统的一种替换策略。
S1301:第一处理器接收对第一数据块的访问请求。
该NUMA架构的计算系统中的第一节点包括第一处理器、第一存储器集合中的第一存储器以及第二存储器集合中的第二存储器。第二存储器集合中的各个存储器中的数据块相对于选定的处理器具有相应的初始替换优先级。
当该第一处理器需要访问数据时,将先从第一存储器中查找该第一数据块是否存储在第一存储器中。同时,第一数据块存储在第一存储器中集合中的第二存储器中。
S1302:确定第一数据块存储在第一存储器中。
S1303:更新第一存储器中的数据块的替换优先级。
当读操作请求对应的数据存储在第一存储器中,可以参考步骤S303中更新数据块的替换优先级的方法,更新第一存储器中各个数据块的替换优先级。即根据待访问的第一数据块的访问属性将第一数据块的替换优先级调整为第一数据块对应的初始替换优先级,调高当前替换优先级介于第一数据块的初始替换优先级以及当前的替换优先级之间的数据块的替换优先级。
S1304:第一处理器处理该第一数据块。
图14是本申请提供的另一个实施例的流程示意图。
S1401:第一处理器接收对第一数据块的访问请求。
与图13所提供的系统架构类似,该NUMA架构的计算系统中的第一节点包括处理器、第一存储器集合中的第一存储器,以及第二存储器集合中的第二存储器,其中,第一数据块存储在第二存储器中。第二存储器集合中的各个存储器中的数据块相对于选定的处理器具有相应的初始替换优先级。
S1402:确定第一数据块没有存储在第一存储器中。
S1403:确定第一存储器中是否有存储空间用于存储第一数据块。
S1404:如果没有足够的存储空间,将当前替换优先级最高的数据块替换出去。
S1405:将待读取的第一数据块存入第一存储器中,并更新第一存储器中的数据块的替换优先级。
当将待读取的第二存储块存入第一存储器中的存储条目时,可以参考步骤S406中更新数据块的替换优先级的方法,更新第一存储器中各个数据块的替换优先级。即将第一存储器中第一数据块的替换优先级更新为第一数据块对应的初始替换优先级,并调高当前的替换优先级介于该初始替换优先级以及第一数据块当前的替换优先级之间的数据块的替换优先级。
S1406:第一处理器处理该第一数据块。
图15是本申请的实施例提供的一种数据管理装置的示意图。该数据管理装置用于计算系统中,该计算系统包括多个NUMA节点,每个NUMA节点包括处理器和内存,该数据管理装置为多个NUMA节点中的第一NUMA节点的处理器。如图15所示,该数据管理装置包括:
接收模块1510,用于接收对第一数据块的操作请求;
处理模块1520,用于:处理第一数据块,并根据该第一数据块的访问属性,分配第一数据块在第一缓存空间中的替换优先级,其中,第一缓存空间为第一NUMA节点中的缓存空间,该第一数据块的访问属性包括第一数据块的归属NUMA节点与第一NUMA节点之间的距离,该第一数据块的归属NUMA节点为第一数据块的归属内存地址所指向的NUMA节点。
图15所示的数据管理装置还用于执行图3、图7、图12、图13和图14所公开的方法。具体的,接收模块1510用于执行步骤S301,S401,S1201,S1301和S1401,处理模块用于执行步骤S302-S304,S402-S407,S1202,S1302-S1304和S1402-S1406,本申请在此不再赘述。
图16为依据本申请的实施例提供的计算系统1610的结构示意图。本实施例中的计算系统1610可以是上述各实施例中的计算系统的其中一种具体实现方式。
如图16所示,该计算系统1610包括计算机装置1600,该计算机装置1600包括处理器1601,处理器1601与存储器1605连接。处理器1601可以为现场可编程门阵列(英文全称:Field Programmable Gate Array,缩写:FPGA),或数字信号处理器(英文全称:Digital Signal Processor,缩写:DSP)等计算逻辑或以上任意计算逻辑的组合。处理器1601也可以为单核处理器或多核处理器。
存储器1605可以是随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、带电可擦可编程只读存储器(Electrically Erasable Programmable read only memory,EEPROM)、寄存器或者本领域熟知的任何其它形式的存储介质,存储器可以用于存储程序指令1607,该程序指令1607被处理器1607执行时,处理器1601执行上述实施例中的所述的方法。
连接线1609用于在计算机装置的各部件之间传递信息,连接线1609可以使用有线 的连接方式或采用无线的连接方式,本申请并不对此进行限定。连接1609还连接有网络接口1604。
网络接口1604使用例如但不限于电缆或电绞线一类的连接装置,来实现与其他设备或网络1611之间的通信,网络接口1604还可以通过无线的形式与网络1611互连。
本申请实施例的一些特征可以由处理器1601执行存储器1605中的程序指令或者软件代码来完成/支持。存储器1605上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图15所示的接收模块1510和处理模块1520。
在本申请的一个实施例中,当存储器1605加载程序指令后,处理器1601执行存储器中的上述功能/逻辑模块相关的事务。
可选地,该计算机装置1600还可以包括辅助存储器1602和输入/输出接口1603,辅助存储器1602用于辅助存储器1605存储程序指令。输入/输出接口1603用于与计算机装置1600外部的设备进行交互,以获取外部设备输入的数据或向外部设备输出数据。
此外,图16仅仅是一个计算系统1610的例子,计算系统1610可能包含相比于图16展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图16中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。例如,存储器和处理器可以在一个模块中实现,存储器中的指令可以是预先写入存储器的,也可以是后续处理器在执行的过程中加载的。
本申请实施例还提供了一种计算机存储介质,所述存储介质内存储有计算机程序,所述计算机程序用于执行本申请提供的存储器的数据管理方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机装置上运行时,使得计算机装置执行本申请实施例提供的存储器的数据管理方法。

Claims (28)

  1. 一种数据管理方法,其特征在于,所述方法应用于计算系统,所述计算系统包括多个非统一内存访问NUMA节点,每个NUMA节点包括处理器和内存,所述方法包括:
    第一处理器接收对第一数据块的操作请求,所述第一处理器为第一NUMA节点中的处理器;
    所述第一处理器处理所述第一数据块,并根据所述第一数据块的访问属性,分配所述第一数据块在第一缓存空间的替换优先级,其中,所述第一缓存空间为所述第一NUMA节点中的缓存空间,所述第一数据块的访问属性包括所述第一数据块的归属NUMA节点与所述第一NUMA节点之间的距离,所述第一数据块的归属NUMA节点为所述第一数据块的归属内存地址所指向的NUMA节点。
  2. 根据权利要求1所述的数据管理方法,其特征在于,所述第一数据块的归属NUMA节点距离所述第一NUMA节点越远,所述第一数据块的替换优先级越低,所述替换优先级越低指示数据块在缓存空间中保存越久。
  3. 根据权利要求1或2所述的数据管理方法,其特征在于,所述第一数据块的访问属性还包括以下因素的任意之一或任意组合:
    所述第一处理器访问所述第一数据块的归属NUMA节点的访问延迟;
    预设时间内所述第一处理器访问所述第一数据块的归属NUMA节点的内存的次数;
    预设时间内所述第一处理器访问所述第一数据块的归属NUMA节点的内存中的数据块对应的缓存丢失率。
  4. 根据权利要求1-3任一项所述的数据管理方法,其特征在于,所述第一处理器处理所述第一数据块,并根据所述第一数据块的访问属性,分配所述第一数据块在第一缓存空间中的替换优先级,包括:
    所述第一处理器确定所述第一缓存空间是否保存所述第一数据块;
    在所述第一处理器确定所述第一缓存空间未保存所述第一数据块的情况下,所述第一处理器将所述第一数据块写入所述第一缓存空间;
    所述第一处理器为所述第一数据块分配在所述第一缓存空间中的初始替换优先级。
  5. 根据权利要求4所述的数据管理方法,其特征在于,所述第一处理器将所述第一数据块写入所述第一缓存空间之前,所述方法还包括:
    所述第一处理器确定所述第一缓存空间中的第二数据块当前具有最高的替换优先级;
    将所述第二数据块从所述第一缓存空间中移除。
  6. 根据权利要求1-3任一项所述的数据管理方法,其特征在于,所述第一处理器处理所述第一数据块,并根据所述第一数据块的访问属性,分配所述第一数据块在第一缓存空间中的替换优先级,包括:
    所述第一处理器确定所述第一缓存空间是否保存所述第一数据块;
    在所述第一处理器确定所述第一缓存空间保存所述第一数据块的情况下,所述第一处理器将所述第一数据块在所述第一缓存空间中的替换优先级由当前值刷新为初始值。
  7. 根据权利要求6所述的数据管理方法,其特征在于,所述方法还包括:
    所述第一处理器调整所述第一缓存空间中其它数据块的替换优先级。
  8. 根据权利要求7所述的数据管理方法,其特征在于,所述第一处理器调整所述第一缓存空间中其它数据块的替换优先级包括:
    调高所述第一缓存空间中的替换优先级介于所述初始值和所述当前值之间的其他数据块的替换优先级。
  9. 一种数据管理装置,其特征在于,所述数据管理装置应用于计算系统,所述计算系统包括多个非统一内存访问NUMA节点,每个NUMA节点包括处理器和内存,所述数据管理装置设置于第一NUMA节点中,所述数据管理装置包括:
    接收模块,用于接收对第一数据块的操作请求;
    处理模块,用于处理所述第一数据块,并根据所述第一数据块的访问属性,分配所述第一数据块在第一缓存空间的替换优先级,其中,所述第一缓存空间为所述第一NUMA节点中的缓存空间,所述第一数据块的访问属性包括所述第一数据块的归属NUMA节点与所述第一NUMA节点之间的距离,所述第一数据块的归属NUMA节点为所述第一数据块的归属内存地址所指向的NUMA节点。
  10. 根据权利要求9所述的数据管理装置,其特征在于,所述第一数据块的归属NUMA节点距离所述第一NUMA节点越远,所述第一数据块的优先级越低,所述替换优先级越低指示数据块在缓存空间中保存越久。
  11. 根据权利要求9或10所述的数据管理装置,其特征在于,所述第一数据块的访问属性还包括以下因素的任意之一或任意组合:
    所述数据管理装置访问所述第一数据块的归属NUMA节点的访问延迟;
    预设时间内所述数据管理装置访问所述第一数据块的归属NUMA节点的内存的次数;
    预设时间内所述数据管理装置访问所述第一数据块的归属NUMA节点的内存中的数据对应的缓存丢失率。
  12. 根据权利要求9-11任一项所述的数据管理装置,其特征在于,
    所述处理模块用于:确定所述第一缓存空间是否保存所述第一数据块;
    在确定所述第一缓存空间未保存所述第一数据块的情况下,将所述第一数据块写入所述第一缓存空间;
    为所述第一数据块分配在所述第一缓存空间中的初始替换优先级。
  13. 根据权利要求12所述的数据管理装置,其特征在于,所述处理模块还用于:
    确定所述第一缓存空间中的第二数据块当前具有最高的替换优先级;
    将所述第二数据块从所述第一缓存空间中移除。
  14. 根据权利要求9-11任一项所述的数据管理装置,其特征在于,
    所述处理模块用于:确定所述第一缓存空间是否保存所述第一数据块;
    在确定所述第一缓存空间保存所述第一数据块的情况下,将所述第一数据块在所述第一缓存空间中的替换优先级由当前值刷新为初始值。
  15. 根据权利要求14所述的数据管理装置,其特征在于,
    所述处理模块还用于:调整所述第一缓存空间中其它数据块的更新优先级。
  16. 根据权利要求15所述的数据管理装置,其特征在于,
    所述处理模块用于:调整所述第一缓存空间中的替换优先级介于所述初始值和所述 当前值之间的其它数据块的替换优先级。
  17. 一种计算系统,其特征在于,所述计算系统包括多个非统一内存访问NUMA节点,每个NUMA节点包括处理器和内存;
    每个NUMA节点中的处理器用于接收对数据块的操作请求,并处理所述数据块;其中,所述多个NUMA节点中的第一NUMA节点中的第一处理器在处理对第一数据块的操作请求时,还用于根据所述第一数据块的访问属性,分配所述第一数据块在第一缓存空间的替换优先级,其中所述第一缓存空间为所述第一NUMA节点中的缓存空间,所述第一数据块的访问属性包括所述第一数据块的归属NUMA节点与所述第一NUMA节点之间的距离,所述第一数据块的归属NUMA节点为所述第一数据块的归属内存地址所指向的NUMA节点。
  18. 根据权利要求17所述的计算系统,其特征在于,所述第一数据块的归属NUMA节点距离所述第一NUMA节点越远,所述第一数据块的替换优先级越低,所述替换优先级越低指示数据块在缓存空间中保存越久。
  19. 根据权利要求17或18所述的计算系统,其特征在于,所述第一数据块的访问属性还包括以下因素的任意之一或任意组合:
    所述第一处理器访问所述第一数据块的归属NUMA节点的访问延迟;
    预设时间内所述第一处理器访问所述第一数据块的归属NUMA节点的内存的次数;
    预设时间内所述第一处理器访问所述第一数据块的归属NUMA节点的内存中的数据块对应的缓存丢失率。
  20. 根据权利要求17-19任一项所述的计算系统,其特征在于,所述第一处理器用于:
    确定所述第一缓存空间是否保存所述第一数据块;
    在确定所述第一缓存空间未保存所述第一数据块的情况下,将所述第一数据块写入所述第一缓存空间;
    为所述第一数据块分配在所述第一缓存空间中的初始替换优先级。
  21. 根据权利要求20所述的计算系统,其特征在于,所述第一处理器还用于:
    确定所述第一缓存空间中的第二数据块当前具有最高的替换优先级;
    将所述第二数据块从所述第一缓存空间中移除。
  22. 根据权利要求17-19任一项所述的计算系统,其特征在于,所述第一处理器用于:
    确定所述第一缓存空间是否保存第一数据块;
    在确定第一缓存空间保存所述第一数据块的情况下,将所述第一数据块在所述第一缓存空间中的替换优先级由当前值更新为初始值。
  23. 根据权利要求22所述的计算系统,其特征在于,所述第一处理器还用于:
    调整所述第一缓存空间中其它数据块的替换优先级。
  24. 根据权利要求23所述的计算系统,其特征在于,所述第一处理器用于:
    调高所述第一缓存空间中的替换优先级介于所述初始值和所述当前值之间的其他数据块的替换优先级。
  25. 一种计算机装置,其特征在于,所述计算机装置包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中的计算机程序以实现如权利要求1-8任一项所述的数据管理方法。
  26. 一种数据管理方法,其特征在于,所述方法用于计算系统,所述计算系统包括多个非统一内存访问NUMA节点,每个NUMA节点包括处理器和内存,每个内存用于保存数据块,所述方法包括:
    第一处理器接收对第一数据块的操作请求,所述第一处理器为第一NUMA节点中的处理器;
    所述第一处理器将所述第一数据块写入所述第一缓存空间中的第一缓存行集合中,其中,所述第一缓存空间为所述第一NUMA节点中的缓存空间,所述第一缓存行集合与所述第一数据块的归属NUMA节点对应。
  27. 一种数据管理装置,其特征在于,所述数据管理装置用于计算系统,所述计算系统包括多个非统一内存访问NUMA节点,每个NUMA节点包括处理器和内存,每个内存用于存储数据块,所述数据管理装置设置于第一NUMA节点中,所述数据管理装置包括:
    接收模块,用于:接收对第一数据块的操作请求;
    处理模块,用于:将所述第一数据块写入所述第一缓存空间中的第一缓存行集合中,其中,所述第一缓存空间为所述第一NUMA节点中的缓存空间,所述第一缓存行集合与所述第一数据块的归属NUMA节点对应。
  28. 一种计算系统,其特征在于,所述计算系统包括多个非统一内存访问NUMA节点,每个NUMA节点包括处理器和内存,
    每个NUMA节点中的处理器用于接收对数据块的操作请求,并处理器所述数据块;其中,所述多个NUMA节点中的第一NUMA节点在处理对第一数据块的操作请求时,还用于将所述第一数据块写入所述第一缓存空间中的第一缓存行集合中,其中,所述第一缓存空间为所述第一NUMA节点中的缓存空间,所述第一缓存行集合与所述第一数据块的归属NUMA节点对应。
PCT/CN2020/113309 2020-01-16 2020-09-03 一种缓存管理方法及装置 WO2021143154A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP20913453.5A EP4024213B1 (en) 2020-01-16 2020-09-03 Cache management method and device
US17/687,996 US11928061B2 (en) 2020-01-16 2022-03-07 Cache management method and apparatus

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202010047039 2020-01-16
CN202010047039.4 2020-01-16
CN202010291665.8A CN113138851B (zh) 2020-01-16 2020-04-14 一种数据管理方法、相关装置及系统
CN202010291665.8 2020-04-14

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/687,996 Continuation US11928061B2 (en) 2020-01-16 2022-03-07 Cache management method and apparatus

Publications (1)

Publication Number Publication Date
WO2021143154A1 true WO2021143154A1 (zh) 2021-07-22

Family

ID=76809506

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/113309 WO2021143154A1 (zh) 2020-01-16 2020-09-03 一种缓存管理方法及装置

Country Status (4)

Country Link
US (1) US11928061B2 (zh)
EP (1) EP4024213B1 (zh)
CN (1) CN113138851B (zh)
WO (1) WO2021143154A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778693A (zh) * 2021-11-12 2021-12-10 北京壁仞科技开发有限公司 缓存操作方法、缓存操作装置、电子设备及处理器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112565437B (zh) * 2020-12-07 2021-11-19 浙江大学 一种面向跨界服务网络的服务缓存方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109388490A (zh) * 2017-08-07 2019-02-26 杭州华为数字技术有限公司 一种内存分配方法和服务器
US10325343B1 (en) * 2017-08-04 2019-06-18 EMC IP Holding Company LLC Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform
CN110098945A (zh) * 2018-01-30 2019-08-06 华为技术有限公司 应用于节点系统的数据处理方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100518207B1 (ko) * 2003-08-05 2005-10-04 전주식 비균등 메모리 접근 다중 프로세서 시스템 및 이의 원격캐쉬 교체 방법
US20120311269A1 (en) * 2011-06-03 2012-12-06 Loh Gabriel H Non-uniform memory-aware cache management
CN103544269B (zh) 2013-10-17 2017-02-01 华为技术有限公司 目录的存储方法、查询方法及节点控制器
US20150262632A1 (en) * 2014-03-12 2015-09-17 Fusion-Io, Inc. Grouping storage ports based on distance
CN108900570B (zh) * 2018-05-30 2020-11-03 南京邮电大学 一种基于内容价值的缓存替换方法
US10534710B2 (en) * 2018-06-22 2020-01-14 Intel Corporation Non-volatile memory aware caching policies

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10325343B1 (en) * 2017-08-04 2019-06-18 EMC IP Holding Company LLC Topology aware grouping and provisioning of GPU resources in GPU-as-a-Service platform
CN109388490A (zh) * 2017-08-07 2019-02-26 杭州华为数字技术有限公司 一种内存分配方法和服务器
CN110098945A (zh) * 2018-01-30 2019-08-06 华为技术有限公司 应用于节点系统的数据处理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP4024213A4 *
WU JUNJIE, ET AL.: "Pre-Promotion with Arbitrary Strides in Non-uniform Caches", JOURNAL OF FRONTIERS OF COMPUTER SCIENCE & TECHNOLOGY, vol. 4, no. 7, 1 January 2010 (2010-01-01), pages 577 - 588, XP055829732, ISSN: 1673-9418, DOI: 10.3778/j.issn.1673-9418.2010.07.001 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113778693A (zh) * 2021-11-12 2021-12-10 北京壁仞科技开发有限公司 缓存操作方法、缓存操作装置、电子设备及处理器
CN113778693B (zh) * 2021-11-12 2022-02-08 北京壁仞科技开发有限公司 缓存操作方法、缓存操作装置、电子设备及处理器

Also Published As

Publication number Publication date
CN113138851B (zh) 2023-07-14
EP4024213A1 (en) 2022-07-06
CN113138851A (zh) 2021-07-20
US20220188230A1 (en) 2022-06-16
US11928061B2 (en) 2024-03-12
EP4024213B1 (en) 2023-11-29
EP4024213A4 (en) 2022-12-14

Similar Documents

Publication Publication Date Title
CN107102955B (zh) 用于存储子系统的关联和原子回写高速缓冲存储系统和方法
EP3414665B1 (en) Profiling cache replacement
CN102804152B (zh) 对存储器层次结构中的闪存的高速缓存一致性支持
US7552288B2 (en) Selectively inclusive cache architecture
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
US8464009B2 (en) Method for memory interleave support with a ceiling mask
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US9501419B2 (en) Apparatus, systems, and methods for providing a memory efficient cache
US11928061B2 (en) Cache management method and apparatus
WO2019128958A1 (zh) 缓存替换技术
WO2024045585A1 (zh) 用于并行处理器中动态共享存储空间的方法及相应处理器
WO2024066195A1 (zh) 缓存管理方法及装置、缓存装置、电子装置和介质
US7702875B1 (en) System and method for memory compression
US20060123196A1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US20200167286A1 (en) Increasing the lookahead amount for prefetching
CN116795767A (zh) 一种基于CHI协议的多核Cache共享一致性协议构建方法
CN105488012B (zh) 一种基于独占数据的一致性协议设计方法
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
US20230138215A1 (en) Memory system controlling nonvolatile memory
WO2023241655A1 (zh) 数据处理方法、装置、电子设备以及计算机可读存储介质
US20230100746A1 (en) Multi-level partitioned snoop filter
US20230052700A1 (en) Memory expansion with persistent predictive prefetching
JP7337228B2 (ja) メモリシステムおよび制御方法
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20913453

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020913453

Country of ref document: EP

Effective date: 20220329

NENP Non-entry into the national phase

Ref country code: DE