CN116848516A - 分布式缓存系统和数据缓存方法 - Google Patents

分布式缓存系统和数据缓存方法 Download PDF

Info

Publication number
CN116848516A
CN116848516A CN202180093084.6A CN202180093084A CN116848516A CN 116848516 A CN116848516 A CN 116848516A CN 202180093084 A CN202180093084 A CN 202180093084A CN 116848516 A CN116848516 A CN 116848516A
Authority
CN
China
Prior art keywords
data
time
node
request
target data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180093084.6A
Other languages
English (en)
Inventor
何涛
于东浩
兰可嘉
李瑛�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116848516A publication Critical patent/CN116848516A/zh
Pending legal-status Critical Current

Links

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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating

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

一种分布式缓存系统和数据缓存方法,涉及存储领域,用于提高分布式缓存系统的带宽。分布式缓存系统包括数据管理节点、数据请求节点和存储器,数据管理节点用于对存储器中的数据进行缓存一致性管理;数据请求节点用于向数据管理节点发送第一请求消息(S401),第一请求消息中包括第一时间和存储器中的第一地址,第一请求消息用于请求缓存第一地址中的目标数据;第一时间用于指示目标数据在数据请求节点中缓存的失效时间;数据管理节点还用于向数据请求节点发送第一响应消息,并根据第一时间更新第二时间(S402),其中,第一响应消息中包括目标数据,第二时间用于指示目标数据被其他节点缓存的最晚失效时间。

Description

分布式缓存系统和数据缓存方法 技术领域
本申请涉及存储领域,尤其涉及一种分布式缓存系统和数据缓存方法。
背景技术
分布式缓存系统包括数据管理节点和多个数据请求节点,数据管理节点负责管理地址空间(多个地址)中的数据,多个数据请求节点可以向数据管理节点请求缓存某一地址中的数据,即可以在多个数据请求节点缓存同一数据的多个副本。
为了保证多个副本与原始数据的缓存一致性,如果该地址中的数据失效(例如发生了写操作),则数据管理节点向缓存了副本的数据请求节点发送消息,以通知该地址中的数据已经失效。当需要通知的数据请求节点的数目较多时,会明显降低整个系统的带宽。
发明内容
本申请实施例提供一种分布式缓存系统和数据缓存方法,用于提高分布式缓存系统的带宽。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种分布式缓存系统,包括数据管理节点、数据请求节点和存储器,数据管理节点用于对存储器中的数据进行缓存一致性管理;数据请求节点用于向数据管理节点发送第一请求消息,第一请求消息中包括第一时间和存储器中的第一地址,第一请求消息用于请求缓存第一地址中的目标数据;第一时间用于指示目标数据在数据请求节点中缓存的失效时间;数据管理节点还用于向数据请求节点发送第一响应消息,并根据第一时间更新第二时间,其中,第一响应消息中包括目标数据,第二时间用于指示目标数据被其他节点缓存的最晚失效时间。
本申请实施例提供的分布式缓存系统,通过数据请求节点在向数据管理节点请求缓存数据时,二者即完成了在数据请求节点中缓存的数据的失效时间的协商,当失效时间达到时,数据请求节点中缓存的数据自动失效,数据管理节点与存储节点之间无需再针对数据失效进行交互,因此不会降低系统带宽,并且针对一个地址只用记录一个最大失效时间,资源开销较小。
在一种可能的实施方式中,数据管理节点包括:时间本地代理和本地代理;本地代理用于对存储器中的数据进行缓存一致性管理;时间本地代理用于接收第一请求消息,从本地代理获取目标数据,发送第一响应消息,以及根据第一时间更新第二时间。本地代理仍然负责缓存一致性管理,即仍采用MESI协议通信以兼容现有技术,新增的时间本地代理负责时间戳协议的通信或称负责时间管理,还负责与本地代理按照MESI协议通信。
在一种可能的实施方式中,第一时间为相对时间,第一响应消息中还包括第三时间,第三时间为第一时间减去数据管理节点与数据请求节点之间传输时延后的时间。方便数据请求节点确定缓存的目标数据失效的绝对时间。
在一种可能的实施方式中,第一时间为绝对时间。
在一种可能的实施方式中,数据管理节点还包括第一缓存代理;第一缓存代理用于在第二时间之前向本地代理请求独占地读目标数据;本地代理还用于向时间本地代理请求无效被其他节点缓存的目标数据;时间本地代理还用于在第二时间之后向本地代理指示被其他节点缓存的目标数据已经无效;本地代理还用于向第一缓存代理发送目标数据。也就是说,在数据管理节点中的缓存代理请求独占地读目标数据时,本地代理要在所有其他节点缓存的目标数据已经无效之后把目标数据发送给本地代理。
在一种可能的实施方式中,数据请求节点,还用于在第一缓存代理请求独占地读目标数据之后,并且第二时间之前,向数据管理节点请求缓存第一地址中的目标数据;数据管理节点,还用于在第二时间之后向数据请求节点发送目标数据。即在第二时间之前不再允许新的数据管理节点请求缓存第一地址中的目标数据,可以指示数据请求节点不断重新请求直到第二时间结束,或者,阻塞到第二时间之后向数据管理节点返回第一地址中的目标数据。可以防止再延长第二时间,避免数据管理节点中的第一缓存代理无法尽快独占地读目标数据。
在一种可能的实施方式中,数据请求节点包括:时间缓存代理和第二缓存代理;第二缓存代理用于向时间缓存代理请求缓存目标数据;时间缓存代理用于向数据管理节点发送第一请求消息,接收第一响应消息,并向第二缓存代理发送目标数据。第二缓存代理仍然负责缓存一致性管理,即仍采用MESI协议通信以兼容现有技术,新增的时间缓存代理负责时间戳协议的通信或称负责时间管理,还负责与第二缓存代理按照MESI协议通信。
在一种可能的实施方式中,时间缓存代理还用于在第一时间之后向第二缓存代理请求无效缓存的目标数据。数据请求节点在达到第一时间以后,缓存的目标数据即失效。
第二方面,提供了一种数据缓存方法,包括:数据请求节点向数据管理节点发送第一请求消息,第一请求消息中包括第一时间和存储器中的第一地址,第一请求消息用于请求缓存第一地址中的目标数据;第一时间用于指示目标数据在数据请求节点中缓存的失效时间;数据管理节点用于对存储器中的数据进行缓存一致性管理;数据管理节点向数据请求节点发送第一响应消息,并根据第一时间更新第二时间,其中,第一响应消息中包括目标数据,第二时间用于指示目标数据被其他节点缓存的最晚失效时间。
在一种可能的实施方式中,数据管理节点向数据请求节点发送第一响应消息,并根据第一时间更新第二时间,包括:数据管理节点的时间本地代理从数据管理节点的本地代理获取目标数据,发送第一响应消息,以及根据第一时间更新第二时间,其中,本地代理用于对存储器中的数据进行缓存一致性管理。
在一种可能的实施方式中,第一时间为相对时间,第一响应消息中还包括第三时间,第三时间为第一时间减去数据管理节点与数据请求节点之间传输时延后的时间。
在一种可能的实施方式中,第一时间为绝对时间。
在一种可能的实施方式中,还包括:数据管理节点的第一缓存代理在第二时间之前向本地代理请求独占地读目标数据;本地代理向时间本地代理请求无效被其他节点 缓存的目标数据;时间本地代理在第二时间之后向本地代理指示被其他节点缓存的目标数据已经无效;本地代理向第一缓存代理发送目标数据。
在一种可能的实施方式中,还包括:数据请求节点在第一缓存代理请求独占地读目标数据之后,并且第二时间之前,向数据管理节点请求缓存第一地址中的目标数据;数据管理节点在第二时间之后向数据请求节点发送目标数据。
在一种可能的实施方式中,数据请求节点向数据管理节点发送第一请求消息,包括:数据请求节点的第二缓存代理向数据请求节点的时间缓存代理请求缓存目标数据;时间缓存代理向数据管理节点发送第一请求消息。
在一种可能的实施方式中,还包括:时间缓存代理在第一时间之后向第二缓存代理请求无效缓存的所述目标数据。
第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,指令在分布式缓存系统上运行,使得分布式缓存系统执行第二方面及其任一实施方式所述的方法。
第四方面,提供了一种包含指令的计算机程序产品,该指令在分布式缓存系统上运行,使得分布式缓存系统执行第二方面及其任一实施方式所述的方法。
关于第二方面至第四方面的技术效果参照第一方面及其任一实施方式的技术效果。
附图说明
图1为本申请实施例提供的一种多个内核的处理器的结构示意图;
图2为本申请实施例提供的一种分布式缓存系统的架构示意图;
图3为本申请实施例提供的另一种分布式缓存系统的架构示意图;
图4为本申请实施例提供的一种数据缓存方法的流程示意图一;
图5为本申请实施例提供的一种数据缓存方法的流程示意图二;
图6为本申请实施例提供的一种数据缓存方法的流程示意图三;
图7为本申请实施例提供的一种数据缓存方法的流程示意图四。
具体实施方式
首先对本申请涉及的一些概念进行描述:
缓存一致性:处理器的运行速度相对于存储器(或称内存)的读写速度快很多,处理器对存储器进行读写操作时,如果等待读写操作完成后再处理其他任务,将会降低处理器的工作效率。因此,在处理器的内核和存储器之间可以设置缓存(例如一级缓存或二级缓存),缓存的读写速度快于存储器的读写速度而慢于处理器的运行速度。当处理器向存储器中写数据时,可以将数据先写入缓存然后就可以处理其他任务,由直接存储器访问(direct memory access,DMA)器件来将数据存储至存储器;同理,当处理器读存储器中的数据时,由DMA器件先将数据从存储器写入缓存,再由处理器从缓存中读取数据。
如图1所示,对于包括多个内核的处理器11来说,针对每个内核会设置缓存12,当同一处理器的不同内核通过各自的缓存12存储了存储器13中同一地址的数据的副本时,这些副本就与原始数据存在缓存一致性问题,当原始数据发生修改(或称无效)时,这些副本也要重新更新,否则会出现缓存的副本与原始数据不一致的问题。
如图2所示,对于分布式缓存系统来说,包括数据管理节点21、数据请求节点22 和存储器23。数据请求节点22可以有一个或多个,数据管理节点21和数据请求节点22可以为位于不同主机(host)的处理器。数据管理节点21和数据请求节点22中都包括内核(未示出)和缓存,数据管理节点21负责对存储器23中的数据进行缓存一致性管理,当多个缓存(包括数据管理节点21中的缓存以及数据请求节点22中的缓存)中存储了存储器23中同一地址的数据的副本时,这些副本同样与原始数据存在缓存一致性问题。
要求缓存一致性的设备可以遵守修改独占共享无效(modified exclusive shared invalid,MESI)协议,在MESI协议中规定了缓存线(cache line)(缓存中的最小缓存单位)的四种状态,包括:独占(exclusive,E)态、修改(modified,M)态、共享(shared,S)态和无效(invalid,I)态。其中,E态表示该缓存线有效,缓存中数据和存储器中数据一致,数据只存在于本地缓存中,缓存的数据可以称为E态数据,数据管理节点21有权限申请E态;M态表示该缓存线有效,数据被修改了,缓存中数据和存储器中数据不一致,缓存的数据可以称为M态数据,数据管理节点21有权限申请M态;S态表示该缓存线有效,缓存中数据和存储器中数据一致,数据存在于多个缓存中,缓存的数据可以称为S态数据,数据管理节点21和数据请求节点22都有权限申请S态;I态表示该缓存线无效,即数据不存储在缓存中而是被直接使用,该数据可以称为I态数据,数据管理节点21和数据请求节点22都有权限申请I态。
本申请实施例涉及的处理器可以是一个芯片。例如,可以是现场可编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
本申请实施例涉及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是闪存(Flash)。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率(double data rate,DDR)存储器、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
如图2所示,对于分布式缓存系统来说,数据管理节点11中负责对存储器中的数据进行缓存一致性管理的模块为本地代理(home agent,HA),数据管理节点21和数据请求节点22中负责对应缓存的MESI状态管理的模块为缓存代理(cache agent,CA),例如,处理器0中的CA0负责处理器0中的缓存0的MESI状态管理,处理器1中的CA1负责处理器1中的缓存1的MESI状态管理,处理器2中的CA2负责处理器2中的缓存2的MESI状态管理,处理器0中的CA3负责处理器3中的缓存3的MESI状 态管理。
当数据管理节点21或数据请求节点22要将某个缓存中的数据存储至存储器中的某个地址时,或者,当数据管理节点21或数据请求节点22要将存储器中某个地址的数据存储至缓存中时,对应的CA根据MESI协议向HA请求对应的权限,以保证缓存一致性。
例如,当处理器0要将缓存0中的数据存储至存储器23中某个地址时,处理器0中的CA0可以向处理器0中的HA发送修改消息,以将M态数据写入存储器23中。当处理器1要将缓存1中的数据存储至存储器23中某个地址时,处理器1中的CA1可以向处理器0中的HA发送修改消息,以将M态数据写入存储器23中。
再例如,当处理器0要将存储器23中某个地址的数据存储至缓存0中时,处理器0中的CA0可以向处理器0中的HA发送读独占(read exclusive,RE)消息以请求读取E态数据,或者,处理器0中的CA0可以向处理器0中的HA发送读共享(read shared,RS)消息以请求读取S态数据。当处理器1要将存储器23中某个地址的数据存储至缓存1中时,处理器1中的CA1可以向处理器0中的HA发送读共享(read shared,RS)消息以请求读取S态数据。
再例如,当处理器0要直接使用存储器23中某个地址的数据而不必存储至缓存0中时,处理器0中的CA0可以向处理器0中的HA发送读无效(read invalid,RI)消息以请求读取I态数据。当处理器1要直接使用存储器23中某个地址的数据而不必存储至缓存1中时,处理器1中的CA1可以向处理器0中的HA发送读无效(read invalid,RI)消息以请求读取I态数据。
对于HA来说,为了保证多个副本的缓存一致性,HA维护一个目录,用于记录某个地址中的数据的MESI状态,该目录可以采用精确记录方式或模糊记录方式:
对于精确记录方式来说,如果某个CA向HA请求缓存某一地址中的数据,则HA在目录中建立一个向量,该向量指示该地址中的数据的MESI状态以及请求缓存该地址中的数据的CA的标识。如果有多个CA请求缓存同一地址中的数据,则HA会针对该地址建立多个向量。
对于模糊记录方式来说,HA在目录中针对每个被请求缓存数据的地址分配一个向量,该向量指示该地址中的数据的MESI状态,即如果有多个CA请求缓存同一地址中的数据,则HA会针对该地址建立一个向量。
数据请求节点无权限向数据管理节点请求读取E态数据,数据请求节点有权限向数据管理节点请求读取I态数据或读取S态数据。
如果数据请求节点向数据管理节点请求读取I态数据,即数据请求节点直接使用存储器的某一地址中的数据而不进行缓存,在这些场景下,如果该地址中的数据失效(例如发生了写操作),则HA不必通知该数据请求节点该地址中的数据已经失效。
如果数据请求节点向数据管理节点请求读取S态数据,即数据请求节点会缓存存储器的某一地址中的数据,如果该地址中的数据失效(例如发生了写操作),则HA根据目录向缓存了该地址中的数据的CA发送无效侦听请求消息,以通知各个CA该地址中的数据已经失效。
对于精确记录方式来说,当整个分布式缓存系统的规模较大时,HA需要记录的 向量数目非常多,导致目录资源开销非常大;另外,HA管理的目录结构一旦确定就限制了可以接入的数据请求节点的数目,因此扩展性非常有限。
对于模糊记录方式来说,HA需要向所有CA广播或者向一部分CA组播无效侦听请求消息,即需要通知的CA的数目较多,而其中很多CA并未缓存该地址中的数据,因此有很多无效侦听请求消息是无效的,在大规模的分布式缓存系统中会经过长距离长时间传输,明显降低整个系统的带宽,并且为了避免冲突,有可能HA与CA经过多次握手或者需要网络保序的限制。虽然相对于精确记录方式减小了目录资源,但是对于大规模的分布式缓存系统来说目录资源的开销还是非常大。另外,与精确记录方式类似的,HA管理的目录结构一旦确定就限制了可以接入的数据请求节点的数目,因此扩展性非常有限。
为此,本申请实施例提供了一种分布式缓存系统和数据缓存方法,适用于前文所述的数据请求节点向数据管理节点请求读取S态数据的场景。由各个数据请求节点中的CA分别通知数据管理节点中的HA缓存同一地址中的数据的失效时间,当达到某个数据请求节点缓存数据的失效时间时,该数据请求节点缓存的数据自动失效,当达到同一地址中的数据被缓存的最晚失效时间时,数据管理节点的HA即能够确定该地址中的数据被缓存的副本都已经失效。即通过数据请求节点侧缓存的数据的失效时间以及数据管理节点侧的数据的最晚失效时间,实现数据自动失效,数据管理节点与存储节点之间无需进行交互,不会降低系统带宽,并且针对一个地址只用记录一个最大失效时间,资源开销较小。
如图3所示,可以在数据管理节点21增加时间本地代理(time home agent,THA)(例如CPU0中的THA),在数据请求节点22增加时间缓存代理(time cache agent,TCA)(例如CPU1中的TCA1,CPU2中的TCA2),HA的缓存一致性管理功能以及CA的MESI状态管理功能参照图2描述,与图2的区别在于,HA与CA之间的直接通信变为通过THA和TCA来间接通信,新增的THA和TCA负责时间戳协议的通信或称负责时间管理,THA还负责与HA按照MESI协议通信,TCA还负责与CA按照MESI协议通信。
具体的,数据管理节点和数据请求节点执行如图4所示的一种数据缓存方法:
S401、数据请求节点向数据管理节点发送第一请求消息。
第一请求消息中包括第一时间和存储器中的第一地址,第一请求消息用于请求缓存第一地址中的目标数据,或者说,第一请求消息用于请求从第一地址读取S态数据,该第一请求消息可以为读取S态数据(RS)消息。
第一时间用于指示目标数据在数据请求节点中缓存的失效时间,即在第一时间过后,数据请求节点缓存的目标数据变为无效。第一时间可以为相对时间(例如当前时刻的X毫秒之后)或者绝对时间(例如X点X分X秒X微秒)。
具体的,数据请求节点的CA向TCA请求缓存第一地址中的目标数据,TCA向数据管理节点的THA发送第一请求消息,数据管理节点的THA接收到第一请求消息后,向数据管理节点的HA请求缓存第一地址中的目标数据。
示例性的,如图5所示,对于CPU1向CPU0请求读取S态数据来说,CPU1中的CA1向CPU1中的TCA1发送RS1消息,该RS1消息中包括第一地址。TCA1建立第 一映射表(图中指“建表1”)并向CPU0中的THA发送RS2消息。该第一映射表指示CA1标识与THA标识的映射关系,便于后续从THA接收响应消息时,根据该第一映射表确定应该将响应消息转发给CA1。该RS2消息中包括第一地址和第一时间1,示例性的,第一时间1可以为时间T1。CPU0中的THA接收RS2消息后,建立第二映射表(图中指“建表2”)并向CPU0中的HA发送RS3消息。该第二映射表指示HA标识与TCA1标识的映射关系,便于后续从HA接收响应消息时,根据该第二映射表确定应该将响应消息转发给TCA1。该RS3消息中包括第一地址。
类似地,如图5所示,对于CPU2向CPU0请求读取S态数据来说,CPU2中的CA2向CPU2中的TCA2发送RS4消息,该RS4消息中包括第一地址。TCA2建立第三映射表(图中指“建表3”)并向CPU0中的THA发送RS5消息。该第三映射表指示CA2标识与THA标识的映射关系,便于后续从THA接收响应消息时,根据该第三映射表确定应该将响应消息转发给CA2。该RS5消息中包括第一地址和第一时间2,示例性的,第一时间2可以为时间T2。CPU0中的THA接收RS5消息后,建立第四映射表(图中指“建表4”)并向CPU0中的HA发送RS6消息,该第四映射表指示HA标识与TCA2标识的映射关系,便于后续从HA接收响应消息时,根据该第四映射表确定应该将响应消息转发给TCA2。该RS6消息中包括第一地址。
S402、数据管理节点向数据请求节点发送第一响应消息,并根据第一时间更新第二时间。
其中,第二时间用于指示目标数据被其他节点(指缓存了目标数据的数据请求节点)缓存的最晚失效时间。如果有多个数据请求节点请求缓存同一地址中的目标数据,每个数据请求节点都会发送各自的第一时间,则数据管理节点选择最晚的第一时间来更新第二时间,在第二时间之后,数据管理节点可以确定各个数据请求节点缓存的目标数据已经失效,在图5的示例中,第二时间即为时间T2。需要说明的是,数据管理节点根据第一时间更新第二时间可以位于步骤S401或步骤S402,本申请不作限定。
第一响应消息中包括目标数据,可选的,当第一时间为相对时间时,第一响应消息中还可以包括第三时间,第三时间为第一时间减去数据管理节点与数据请求节点之间传输时延后的时间,方便数据请求节点确定缓存的目标数据失效的绝对时间,该绝对时间与数据管理节点保持一致。
具体的,数据管理节点的HA向数据管理节点的THA发送目标数据,数据管理节点的THA向数据请求节点的TCA发送第一响应消息,并根据第一时间更新第二时间,数据请求节点的TCA向数据请求节点的CA发送目标数据。
示例性的,如图5所示,对于CPU1向CPU0请求读取S态数据来说,CPU0中的HA向CPU0中的THA发送D1消息,该D1消息中包括目标数据。CPU0中的THA向CPU1中的TCA1发送D2消息(即第一响应消息),该D2消息中包括目标数据,可选的,可以包括第三时间1。CPU1中的TCA1向CPU1中的CA1发送D3消息,该D3消息中包括目标数据。
类似地,如图5所示,对于CPU2向CPU0请求读取S态数据来说,CPU0中的HA向CPU0中的THA发送D4消息,该D4消息中包括目标数据。CPU0中的THA向CPU2中的TCA2发送D5消息(即第一响应消息),该D5消息中包括目标数据, 可选的,可以包括第三时间2。CPU2中的TCA2向CPU2中的CA2发送D6消息,该D6消息中包括目标数据。
在第一时间之后,数据请求节点可以无效缓存的目标数据,具体的,数据请求节点的TCA向数据请求节点的CA请求无效缓存的目标数据。
示例性的,如图5所示,对于CPU1向CPU0请求读取S态数据来说,在时间T1之后,CPU1中的TCA1向CPU1中的CA1发送无效侦听请求消息(Snp1)以请求无效缓存的目标数据,CPU1中的CA1清除缓存中存储的目标数据后,向CPU1中的TCA1发送无效侦听响应消息(Rsp1),CPU1中的TCA1删除第一映射表(图中指“删表1”)。
类似地,如图5所示,对于CPU2向CPU0请求读取S态数据来说,在时间T2之后,CPU2中的TCA2向CPU2中的CA2发送无效侦听请求消息(Snp2)以请求无效缓存的目标数据,CPU2中的CA2清除缓存中存储的目标数据后,向CPU2中的TCA2发送无效侦听响应消息(Rsp2),CPU2中的TCA2删除第三映射表(图中指“删表3”)。
在第二时间之后,数据管理节点确定被所有数据请求节点缓存的目标数据均已经失效,此时,数据管理节点可以删除该目标地址相关的映射表。
示例性的,如图5所示,CPU0可以在时间T2以后删除第二映射表(图中指“删表2”)以及第四映射表(图中指“删表4”)。
另外,如果数据管理节点中的CA在第二时间之前向数据管理节点中的HA请求独占地读目标数据,即请求读取E态数据(RE),则HA向数据管理节点中的THA请求无效被其他节点缓存的目标数据,THA在第二时间之后向HA指示被其他节点缓存的目标数据已经无效,由HA向数据管理节点中的CA发送目标数据,即实现了数据管理节点中的CA独占地读目标数据。
示例性的,如图6所示,CPU0中的CA0在时间T2之前向CPU0中的HA发送RE1消息,以请求独占地读目标数据,CPU0中的HA向CPU0中的THA发送无效侦听请求消息(Snp3)以请求无效被其他节点缓存的目标数据,CPU0中的THA在时间T2之后向CPU0中的HA发送无效侦听响应消息(Rsp3),CPU0中的HA向CPU0中的CA0发送D7消息,该D7消息中包括目标数据。
进一步地,如果数据管理节点中的CA在第二时间之前向数据管理节点中的HA请求独占地读目标数据,则在第二时间之前阻塞数据请求节点请求缓存第一地址中的目标数据。即在第二时间之前不再允许新的数据管理节点请求缓存第一地址中的目标数据,可以指示数据请求节点不断重新请求直到第二时间结束,或者,阻塞到第二时间之后向数据管理节点返回第一地址中的目标数据。可以防止再延长第二时间,避免数据管理节点中的CA无法尽快独占地读目标数据。
示例性的,如图7所示,假设CPU0中的CA0在时间T2之前向CPU0中的HA在第二时间之前请求独占地读目标数据,CPU0中的HA向CPU0中的THA发送了无效侦听请求消息(Snp3),然后CPU1向CPU0请求读取S态数据,CPU1中的CA1向CPU1中的TCA1发送RS1消息,TCA1向CPU0中的THA发送RS2消息,则CPU0中的THA在第二时间后向CPU0中的HA发送RS3消息,CPU0中的HA向CPU0中的THA发送D1消息,CPU0中的THA向CPU1中的TCA1发送D2消息,CPU1中的TCA1向CPU1中的CA1发送D3消息。
本申请实施例提供的分布式缓存系统和数据缓存方法,通过数据请求节点在向数据管理节点请求缓存数据时,二者即完成了在数据请求节点中缓存的数据的失效时间的协商,当失效时间达到时,数据请求节点中缓存的数据自动失效,数据管理节点与存储节点之间无需再针对数据失效进行交互,因此不会降低系统带宽,并且针对一个地址只用记录一个最大失效时间,资源开销较小。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,指令在分布式缓存系统上运行,使得分布式缓存系统执行图4中的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,指令在分布式缓存系统上运行,使得分布式缓存系统执行图4中的方法。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或 无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

  1. 一种分布式缓存系统,其特征在于,包括数据管理节点、数据请求节点和存储器,所述数据管理节点用于对所述存储器中的数据进行缓存一致性管理;
    所述数据请求节点用于向所述数据管理节点发送第一请求消息,所述第一请求消息中包括第一时间和所述存储器中的第一地址,所述第一请求消息用于请求缓存所述第一地址中的目标数据;所述第一时间用于指示所述目标数据在所述数据请求节点中缓存的失效时间;
    所述数据管理节点还用于向所述数据请求节点发送第一响应消息,并根据所述第一时间更新第二时间,其中,所述第一响应消息中包括所述目标数据,所述第二时间用于指示所述目标数据被其他节点缓存的最晚失效时间。
  2. 根据权利要求1所述的分布式缓存系统,其特征在于,所述数据管理节点包括:时间本地代理和本地代理;
    所述本地代理用于对所述存储器中的数据进行缓存一致性管理;
    所述时间本地代理用于接收所述第一请求消息,从所述本地代理获取所述目标数据,发送所述第一响应消息,以及根据所述第一时间更新所述第二时间。
  3. 根据权利要求1-2任一项所述的分布式缓存系统,其特征在于,所述第一时间为相对时间,所述第一响应消息中还包括第三时间,所述第三时间为所述第一时间减去所述数据管理节点与所述数据请求节点之间传输时延后的时间。
  4. 根据权利要求1-2任一项所述的分布式缓存系统,其特征在于,所述第一时间为绝对时间。
  5. 根据权利要求2-4任一项所述的分布式缓存系统,其特征在于,所述数据管理节点还包括第一缓存代理;
    所述第一缓存代理用于在所述第二时间之前向所述本地代理请求独占地读所述目标数据;
    所述本地代理还用于向所述时间本地代理请求无效被其他节点缓存的所述目标数据;
    所述时间本地代理还用于在所述第二时间之后向所述本地代理指示被其他节点缓存的所述目标数据已经无效;
    所述本地代理还用于向所述第一缓存代理发送所述目标数据。
  6. 根据权利要求5所述的分布式缓存系统,其特征在于,
    所述数据请求节点,还用于在所述第一缓存代理请求独占地读所述目标数据之后,并且所述第二时间之前,向所述数据管理节点请求缓存所述第一地址中的目标数据;
    所述数据管理节点,还用于在所述第二时间之后向所述数据请求节点发送所述目标数据。
  7. 根据权利要求1-6任一项所述的分布式缓存系统,其特征在于,所述数据请求节点包括:时间缓存代理和第二缓存代理;
    所述第二缓存代理用于向所述时间缓存代理请求缓存所述目标数据;
    所述时间缓存代理用于向所述数据管理节点发送所述第一请求消息,接收所述第一响应消息,并向所述第二缓存代理发送所述目标数据。
  8. 根据权利要求7所述的分布式缓存系统,其特征在于,所述时间缓存代理还用于在所述第一时间之后向所述第二缓存代理请求无效缓存的所述目标数据。
  9. 一种数据缓存方法,其特征在于,包括:
    数据请求节点向数据管理节点发送第一请求消息,所述第一请求消息中包括第一时间和存储器中的第一地址,所述第一请求消息用于请求缓存所述第一地址中的目标数据;所述第一时间用于指示所述目标数据在所述数据请求节点中缓存的失效时间;所述数据管理节点用于对所述存储器中的数据进行缓存一致性管理;
    所述数据管理节点向所述数据请求节点发送第一响应消息,并根据所述第一时间更新第二时间,其中,所述第一响应消息中包括所述目标数据,所述第二时间用于指示所述目标数据被其他节点缓存的最晚失效时间。
  10. 根据权利要求9所述的方法,其特征在于,所述数据管理节点向所述数据请求节点发送第一响应消息,并根据所述第一时间更新第二时间,包括:
    所述数据管理节点的时间本地代理从所述数据管理节点的本地代理获取所述目标数据,发送所述第一响应消息,以及根据所述第一时间更新所述第二时间,其中,所述本地代理用于对所述存储器中的数据进行缓存一致性管理。
  11. 根据权利要求9-10任一项所述的方法,其特征在于,所述第一时间为相对时间,所述第一响应消息中还包括第三时间,所述第三时间为所述第一时间减去所述数据管理节点与所述数据请求节点之间传输时延后的时间。
  12. 根据权利要求9-10任一项所述的方法,其特征在于,所述第一时间为绝对时间。
  13. 根据权利要求10-12任一项所述的方法,其特征在于,还包括:
    所述数据管理节点的第一缓存代理在所述第二时间之前向所述本地代理请求独占地读所述目标数据;
    所述本地代理向所述时间本地代理请求无效被其他节点缓存的所述目标数据;
    所述时间本地代理在所述第二时间之后向所述本地代理指示被其他节点缓存的所述目标数据已经无效;
    所述本地代理向所述第一缓存代理发送所述目标数据。
  14. 根据权利要求13所述的方法,其特征在于,还包括:
    所述数据请求节点在所述第一缓存代理请求独占地读所述目标数据之后,并且所述第二时间之前,向所述数据管理节点请求缓存所述第一地址中的目标数据;
    所述数据管理节点在所述第二时间之后向所述数据请求节点发送所述目标数据。
  15. 根据权利要求9-14任一项所述的方法,其特征在于,所述数据请求节点向数据管理节点发送第一请求消息,包括:
    所述数据请求节点的第二缓存代理向所述数据请求节点的所述时间缓存代理请求缓存所述目标数据;
    所述时间缓存代理向所述数据管理节点发送所述第一请求消息。
  16. 根据权利要求15所述的方法,其特征在于,还包括:
    所述时间缓存代理在所述第一时间之后向所述第二缓存代理请求无效缓存的所述目标数据。
CN202180093084.6A 2021-05-28 2021-05-28 分布式缓存系统和数据缓存方法 Pending CN116848516A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/096988 WO2022246848A1 (zh) 2021-05-28 2021-05-28 分布式缓存系统和数据缓存方法

Publications (1)

Publication Number Publication Date
CN116848516A true CN116848516A (zh) 2023-10-03

Family

ID=84229468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180093084.6A Pending CN116848516A (zh) 2021-05-28 2021-05-28 分布式缓存系统和数据缓存方法

Country Status (2)

Country Link
CN (1) CN116848516A (zh)
WO (1) WO2022246848A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250311B2 (en) * 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
CN105279034B (zh) * 2015-10-26 2018-11-30 北京皮尔布莱尼软件有限公司 一致性缓存控制系统和方法
EP3333716A1 (en) * 2016-12-12 2018-06-13 Intel Corporation Method and apparatus for memory consistency using cache coherency protocols

Also Published As

Publication number Publication date
WO2022246848A1 (zh) 2022-12-01

Similar Documents

Publication Publication Date Title
US10891228B2 (en) Cache line states identifying memory cache
US9684597B1 (en) Distributed cache coherent shared memory controller integrated with a protocol offload network interface card
US10402327B2 (en) Network-aware cache coherence protocol enhancement
US20150189039A1 (en) Memory Data Access Method and Apparatus, and System
TWI431475B (zh) 用於在本地代理者之記憶體鏡像及遷移之裝置、系統及方法
US20140040561A1 (en) Handling cache write-back and cache eviction for cache coherence
US20150058570A1 (en) Method of constructing share-f state in local domain of multi-level cache coherency domain system
JP3919295B2 (ja) コンピュータノードをコヒーレントドメインと接続するための実質的にメモリレスなコヒーレント変換方法、及びその装置
CN111143244A (zh) 计算机设备的内存访问方法和计算机设备
US20210224189A1 (en) Data prefetching method and apparatus
JP2022528630A (ja) 共有メモリにアクセスするためのシステム、方法、及び装置
EP1304621A2 (en) Updating directory cache
EP2568379B1 (en) Method for preventing node controller deadlock and node controller
JP6343722B2 (ja) マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス
CN109101439B (zh) 一种报文处理的方法及装置
EP3046035B1 (en) Request response method and device based on a node controller
CN116414563A (zh) 内存控制装置、缓存一致性系统和缓存一致性方法
CN110083548B (zh) 数据处理方法及相关网元、设备、系统
CN116848516A (zh) 分布式缓存系统和数据缓存方法
CN108415873B (zh) 转发对监听请求的响应
CN116361235A (zh) 多核处理器同步方法、装置及多核处理器
WO2022174705A1 (zh) 数据处理方法、计算机系统和中间设备
US20210397560A1 (en) Cache stashing system
US6961827B2 (en) Victim invalidation
WO2019149031A1 (zh) 应用于节点系统的数据处理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination