CN111406251B - 数据预取方法及装置 - Google Patents

数据预取方法及装置 Download PDF

Info

Publication number
CN111406251B
CN111406251B CN201980003468.7A CN201980003468A CN111406251B CN 111406251 B CN111406251 B CN 111406251B CN 201980003468 A CN201980003468 A CN 201980003468A CN 111406251 B CN111406251 B CN 111406251B
Authority
CN
China
Prior art keywords
data
node
cache
written
cache node
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.)
Active
Application number
CN201980003468.7A
Other languages
English (en)
Other versions
CN111406251A (zh
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 CN111406251A publication Critical patent/CN111406251A/zh
Application granted granted Critical
Publication of CN111406251B publication Critical patent/CN111406251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

本申请公开了一种数据预取方法,包括:主节点接收缓存节点1在将接收到的数据处理完后发送的写入请求;主节点执行确定缓存节点2是否需要对待写入数据进行数据预取操作的动作;当确定缓存节点2需要对待写入数据进行数据预取操作时,所述主节点向缓存节点2发送待写入数据。采用本申请实施例有利于提高进行数据预取时刻的准确性和确定性,并降低了进行数据预取的时延。

Description

数据预取方法及装置
本申请要求于2019年03月29日提交中国专利局、申请号为201910259338.1、申请名称为“数据预取方法及装置”的中国专利申请以及于2018年8月24日提交专利局、申请号为201810974252.2的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信领域,尤其涉及一种数据预取方法及装置。
背景技术
多核(包括多处理器)系统内一般具有多个层级的缓存,用于存储诸如程序指令、程序执行的过程数据或者下一层级缓存中被频繁引用的数据等。下级缓存中的一个或多个数据在上一层级的各个缓存都有可能存在副本;当某一层的数据副本发生改变时,为了保证多个层级中缓存的同一数据的一致性,可通过缓存一致性机制来完成,即缓存一致性机制可通过在多核系统中传播数据变更消息来维护和保证不同位置、不同缓存中数据的一致性。
其中,每个处理器内核都有本地缓存以及维护本地缓存一致性的硬件模块,将该硬件模块和本地缓存统称为缓存节点,将处理器内核称为计算节点。
缓存一致性主要用于多核CPU系统中,而数据预取(也即指令的预处理)是针对其中的某个CPU或核而言的。数据预取是指利用程序执行的局部性,对某个CPU核中连续的相邻指令进行分析,预测在接下来的时刻极有可能执行的指令,从而根据预测的结果提前从内存中获取相关的待处理的数据,进而通过数据获取的提前量来消除数据在传输路径上的时延,以达到降低整体系统处理时延的目的。但是该方式具有以下缺点:1、指令预测仅局限于同一个缓存节点内,而且通过对当前缓存节点的连续N个指令的分析,才能预测接下来可能的待执行指令所需的数据,存在发起数据预取时刻的不确定性;2、预取结果存在不确定性:尽管通常需要预判多个指令有可能提升预测结果的准确性,但仍然无法达到100%;3、时延大:对于多缓存节点协同的时候,只有在某个缓存节点处理完指令并更新了数据后,其他缓存节点才可能通过指令预取得到正确数据。如图1a所示,缓存节点1产生新的数据后需要将该数据写入主节点,向主节点发送写数据请求;缓存节点2要想获得缓存节点1生产的数据,必须等到主节点将缓存节点1的指令执行完毕后,主节点才能开始处理缓存节点2的读数据请求(即图1a中从主节点收到读数据请求到发出第一响应消息所经过的时间为阻塞时间),并且主节点处理读数据请求会产生额外延时,如图1a中的灰色长方形所表示的时间。
发明内容
本申请实施例提供一种数据预取方法及装置,有利于提高进行数据预取时刻的准确性和预测结果的确定性,并降低了进行数据预取的时延。
第一方面,本申请实施例提供一种数据预取方法,该方法应用于数据预取系统,该数据预取系统包括主节点和多个缓存节点,该方法包括:
主节点接收缓存节点1发送的写入请求;其中,该写入请求中携带待写入数据、数据预取标识、数据预取的节点号;主节点根据数据预取标识向数据预取的节点号指示的缓存节点2发送第一侦听消息,该第一侦听消息携带有预取询问标识,该预取询问标识用于指示缓存节点2执行确定其是否需要对待写入数据进行数据预取操作的步骤;主节点接收缓存节点2发送的第一侦听响应消息,该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息;当主节点确定缓存节点2需要对待写入数据进行数据预取操作时,主节点向缓存节点2发送携带待写入数据的响应消息,缓存节点1和缓存节点2为多个缓存节点中的两个不同的节点。
在此需要说明的是,缓存节点1向主节点发送写入请求,具体是缓存节点1在将接收到的数据处理完后向主节点发送写入请求。其中,待写入数据为缓存节点1将接收到的数据处理完后得到的数据。
其中,第一侦听响应消息为缓存节点2根据预取询问标识确定是否需要对待写入数据进行数据预取操作后发送的。
在现有技术中,主节点根据历史一个或多个指令预测缓存节点是否需要对数据进行预取。由于是采用预测的方式,因此导致缓存节点进行数据预取的时刻不确定和缓存节点是否进行数据预取的结果不确定。而在本申请中,主节点接收到缓存节点1的写入请求后,就向缓存节点2发送侦听消息,以询问缓存节点2是否需要进行数据预取,如果需要则主节点向缓存节点2发送数据。相对于现有技术中通过指令预测缓存节点是否需要进行数据预取的方式,本申请是通过直接询问缓存节点是否需要对数据进行预取,如果需要则向缓存节点发送数据。本申请的方式有利于使得是否进行数据预取的结果及预取时刻更加精确,并且不局限于一个缓存节点内,同时降低了时延。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点2是否需要对待写入数据进行数据预取操作(例如第一预取结果标识的取值为第一预设阈值,以指示缓存节点2需要对待写入数据进行数据预取操作;第二预取结果标识的取值为第二预设阈值,以指示缓存节点不需要对待写入数据进行数据预取操作);或者,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点2是否需要对待写入数据进行数据预取操作的信息(例如第一侦听响应消息包括第二预取结果标识,以指示缓存节点2需要对待写入数据进行数据预取操作;第一侦听响应消息中未包括第二预取结果标识,以指示缓存节点2不需要对待写入数据进行数据预取操作)。通过指示信息告知主节点缓存节点2是否需要对待写入数据进行数据预取操作这种方式,相对于通过指令预测是否需要进行数据预取这种方式会更加精确,不会产生误差。
在一种可能的实施例中,数据预取系统还包括多个计算节点,多个计算节点与多个缓存节点一一对应,缓存节点1对应的计算节点用于对接收到的数据执行第一操作,缓存节点2对应的计算节点用于对接收到的数据执行第二操作,该接收到的数据在被执行完第一操作后会大概率地被执行第二操作。
其中,接收到的数据在被执行第一操作后会大概率地被执行第二操作包括:缓存节点1可根据接收到数据的类型确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据对接收到的数据的处理流程确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据实际的硬件资源来确定接收到的数据在被执行第一操作后会大概率地被执行第二操作。比如用户购买云资源时只购买了存储资源,因此在接收到报文后只对报文进行存储。
需要说明的是,对于缓存节点1来说,接收到的数据为缓存节点1对应的计算节点发送的数据;对于缓存节点2来说,接收到的数据为缓存节点1将接收到的数据处理完后得到的数据。
由于缓存节点1知道缓存节点2大概率地对待写入数据进行第二操作,因此当主节点接收到缓存节点1的写入请求后,会直接向缓存节点2发送侦听请求,询问缓存节点2是否需要对待写入数据进行数据预取操作,若主节点确定缓存节点2需要对待写入数据进行数据预取操作,则主节点向缓存节点2发送待写入数据。缓存节点2能在第一时间得到待写入数据,进而提高了效率。
在一种可能的实施例中,数据预取系统还包括存储节点,写入请求还包括数据写入地址,数据写入地址为待写入数据写入存储节点时在存储节点中的存储地址;该方法还包括:若主节点根据指示信息确定缓存节点2不需要对待写入数据进行数据预取操作,则主节点将待写入数据和数据写入地址缓存至主节点的缓存中,其中,数据写入地址为待写入数据在存储节点中的存储地址。主节点保存待写入数据的目的是在后续缓存节点需要读取待写入数据时,主节点不需要向其他缓存节点发送数据读取请求以请求获取待写入数据,可以直接向需要该待写入数据的缓存节点发送该写入数据,提高了数据读取速率。
在一个可能的实施例中,在主节点向缓存节点1和缓存节点2分别发送完成消息和响应消息的同时,主节点向存储节点发送数据更新消息,以将待写入数据更新至存储节点中数据写入地址对应的存储空间中,在可以节省主节点的存储空间的同时,能够及时更新存储节点中数据写入地址对应的空间中的数据,使得后续缓存节点在读取数据写入地址对应的空间中的数据时,可以保证获得数据都是最新的。
在一种可能的实施例中,主节点向缓存节点2发送第一侦听消息的同时,该方法还包括:主节点向其他缓存节点发送第二侦听消息,第二侦听消息用于指示其他缓存节点删除原数据,原数据为在主节点接收到待写入数据之前数据写入地址对应的数据;其中,其他缓存节点为多个缓存节点中除了缓存节点1和缓存节点2之外的缓存节点。主节点向其他缓存节点发送用于指示其他缓存节点删除原数据的第二侦听消息的目的是为了其他缓存节点在进行后续的操作时使用的数据是最新的,进而保证后续操作的正确性。
在一种可能的实施例中,在主节点向缓存节点2发送响应消息的同时,该方法还包括:向缓存节点1发送完成消息,完成消息用于告知缓存节点1数据写入完成。现有技术中只有当主节点处理完当前缓存节点的指令后,才能执行其他缓存节点的指令,因此时延大。而在本申请中,由于同时向缓存节点1和缓存节点2发送消息,可以看出在一个指令周期内处理多个指令,因此降低了时延。
需要说明的是,本领域技术人员可以理解,由于硬件所限,通常不可能实现100%的同时,因此,本申请所说的″同时″并非指100%没有时间差,而是一个相对很小的时间差,用于保证两个消息发送尽量同时,从而可以尽快将消息传递给对端,以节省时延,具体的,该时间差可以间隔一个或若干个指令周期。此外,两个消息的发送顺序也不限定,比如主节点发送响应消息在前,发送完成消息在后;或者主节点发送完成消息在前,发送响应消息在后。
在一种可能的实施例中,数据预取系统为处理器,缓存节点以及主节点包括处理器中的高速缓存cache及其控制电路,实现了处理器场景下的数据预取。其中,主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如MSI协议、MSIF协议)进行数据交互。
进一步地,计算节点为处理器中的核(core),比如ARM核或x86核。
在一种可能的实施例中,数据预取系统为集群计算系统,且集群计算系统包括多台处理服务器和存储服务器,缓存节点包括处理服务器中的内存控制器以及内存(比如DDR控制器及DDR存储介质),主节点包括存储服务器中的处理器以及内存,实现了集群计算系统场景下的数据预取。
进一步地,计算节点为处理服务器的处理器。
第二方面,本申请实施例提供另一种数据预取方法,该方法应用于数据预取系统,该数据预取系统包括多个缓存节点和主节点,该方法包括:
缓存节点2接收主节点发送的第一侦听消息,第一侦听消息携带有预取询问标识,预取询问标识用于指示缓存节点2执行确定是否需要对待写入数据进行数据预取操作的步骤;待写入数据为缓存节点1将接收到的数据处理完后得到的数据,缓存节点1和缓存节点2为多个缓存节点中的两个不同的节点;缓存节点2根据预取询问标识确定其是否需要对待写入数据进行数据预取操作;并向主节点发送第一侦听响应消息;该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息,若缓存节点2确定其需要对待写入数据进行数据预取操作且在向主节点发送第一侦听响应消息后,接收主节点发送的响应消息,响应消息携带有待写入数据。通过类似握手的方式确定是否进行数据预取操作的方式,相对于通过指令预测是否需要进行数据预取方式,有利于使得是否进行数据预取的结果及预取时刻更加精确,并且不局限于一个缓存节点内,同时降低了时延。
在一种可能的实施例中,数据预取系统还包括多个计算节点,多个计算节点与多个缓存节点一一对应,缓存节点1对应的计算节点用于对接收到的数据执行第一操作,缓存节点2对应的计算节点用于对接收到的数据执行第二操作,该接收到的数据在被执行完第一操作后会大概率地被执行第二操作。
其中,接收到的数据在执行第一操作后会大概率地执行第二操作包括:缓存节点1可根据接收到数据的类型确定接收到的数据在执行第一操作后会大概率地执行第二操作;或者缓存节点1根据对接收到的数据的处理流程确定接收到的数据在执行第一操作后会大概率地执行第二操作;或者缓存节点1根据实际的硬件资源来确定接收到的数据在执行第一操作后会大概率地执行第二操作。比如用户购买云资源时只购买了存储资源,因此在接收到报文后只对报文进行存储。
需要说明的是,对于缓存节点1来说,接收到的数据为缓存节点1对应的计算节点发送的数据;对于缓存节点2来说,接收到的数据为缓存节点1将接收到的数据处理完后得到的数据。
由于缓存节点1知道缓存节点2大概率地对待写入数据进行第二操作,因此当主节点接收到缓存节点1的写入请求后,会直接向缓存节点2发送侦听请求,询问缓存节点2是否需要对待写入数据进行数据预取操作,若主节点确定缓存节点2需要对待写入数据进行数据预取操作,则主节点向缓存节点2发送待写入数据。缓存节点2能在第一时间得到待写入数据,进而提高了效率。
在一种可能的实施例中,缓存节点2根据预取询问标识确定其是否需要对待写入数据进行数据预取操作,包括:若缓存节点2支持数据预取功能且需要待写入数据;则缓存节点2确定其需要对待写入数据进行数据预取操作;若缓存节点2支持数据预取功能但不需要待写入数据,或者缓存节点2不支持数据预取功能,则缓存节点2确定其不需要对待写入数据进行数据预取操作。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点2是否需要对待写入数据进行数据预取操作(例如第一预取结果标识的取值为第一预设阈值,以指示缓存节点2需要对待写入数据进行数据预取操作;第二预取结果标识的取值为第二预设阈值,以指示缓存节点不需要对待写入数据进行数据预取操作);或者,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点2是否需要对待写入数据进行数据预取操作的信息(例如第一侦听响应消息包括第二预取结果标识,以指示缓存节点2需要对待写入数据进行数据预取操作;第一侦听响应消息中未包括第二预取结果标识,以指示缓存节点2不需要对待写入数据进行数据预取操作)。
在一种可能的实施例中,数据预取系统为处理器,缓存节点以及主节点包括处理器中的高速缓存cache及其控制电路,实现了处理器场景下的数据预取。其中,主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如MSI协议、MSIF协议)进行数据交互。
进一步地,计算节点为处理器中的核(core),比如ARM核或x86核。
在一种可能的实施例中,数据预取系统为集群计算系统,且集群计算系统包括多台处理服务器和存储服务器,缓存节点包括处理服务器中的内存控制器以及内存(比如DDR控制器及DDR存储介质),主节点包括存储服务器中的处理器以及内存,实现了集群计算系统场景下的数据预取。
进一步地,计算节点为处理服务器的处理器。
第三方面,本申请实施例还提供一种主节点,该主节点应用于数据预取系统,该数据预取系统还包括多个缓存节点;主节点包括:
接收单元,用于接收缓存节点1发送的写入请求;其中,写入请求中携带待写入数据、数据预取标识、数据预取的节点号;
发送单元,用于根据数据预取标识向数据预取的节点号指示的缓存节点2发送第一侦听消息,该第一侦听消息携带有预取询问标识,预取询问标识用于指示缓存节点2执行确定其是否需要对待写入数据进行数据预取操作的步骤;其中,缓存节点1和缓存节点2为多个缓存节点中的两个不同的节点;
接收单元,还用于接收缓存节点2发送的第一侦听响应消息;该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息;
确定单元,用于根据指示信息确定缓存节点2是否需要对待写入数据是否进行数据预取操作;
发送单元,还用于当确定单元根据指示信息确定缓存节点2需要对待写入数据进行数据预取操作时,向缓存节点2发送携带待写入数据的响应消息。
在此需要说明的是,缓存节点1向主节点发送写入请求,具体是缓存节点1在将接收到的数据处理完后向主节点发送写入请求。待写入数据为缓存节点1将接收到的数据处理完后得到的数据。
其中,第一侦听响应消息为缓存节点2根据预取询问标识确定是否需要对待写入数据进行数据预取操作后发送的。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点2是否需要对待写入数据进行数据预取操作(例如第一预取结果标识的取值为第一预设阈值,以指示缓存节点2需要对待写入数据进行数据预取操作;第二预取结果标识的取值为第二预设阈值,以指示缓存节点不需要对待写入数据进行数据预取操作);或者,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点2是否需要对待写入数据进行数据预取操作的信息(例如第一侦听响应消息包括第二预取结果标识,以指示缓存节点2需要对待写入数据进行数据预取操作;第一侦听响应消息中未包括第二预取结果标识,以指示缓存节点2不需要对待写入数据进行数据预取操作)。
在一种可能的实施例中,数据预取系统还包括多个计算节点,多个计算节点与多个缓存节点一一对应,缓存节点1对应的计算节点用于对接收到的数据执行第一操作,缓存节点2对应的计算节点用于对接收到的数据执行第二操作,该接收到的数据在被执行完第一操作后会大概率地被执行第二操作。
其中,接收到的数据在被执行第一操作后会大概率地被执行第二操作包括:缓存节点1可根据接收到数据的类型确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据对接收到的数据的处理流程确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据实际的硬件资源来确定接收到的数据在被执行第一操作后会大概率地被执行第二操作。比如用户购买云资源时只购买了存储资源,因此在接收到报文后只对报文进行存储。
在一种可能的实施例中,数据预取系统还包括存储节点,写入请求还包括数据写入地址,数据写入地址为待写入数据写入存储节点时在存储节点中的存储地址;主节点还包括:
缓存单元,用于当确定单元根据指示信息确定缓存节点2不需要对待写入数据进行数据预取操作时,将待写入数据和数据写入地址缓存至主节点的缓存中。
在一种可能的实施例中,发送单元还用于:在向缓存节点2发送第一侦听消息的同时,向其他缓存节点发送第二侦听消息,第二侦听消息用于指示其他缓存节点删除原数据,原数据为在主节点接收到待写入数据之前数据写入地址对应的数据;其中,其他缓存节点为多个缓存节点中除了缓存节点1和缓存节点2之外的缓存节点。
在一种可能的实施例中,发送单元,还用于在向缓存节点2发送响应消息的同时,向缓存节点1发送完成消息,该完成消息用于告知缓存节点1数据写入完成。
需要说明的是,本领域技术人员可以理解,由于硬件所限,通常不可能实现100%的同时,因此,本申请所说的″同时″并非指100%没有时间差,而是一个相对很小的时间差,用于保证两个消息发送尽量同时,从而可以尽快将消息传递给对端,以节省时延,具体的,该时间差可以间隔一个或若干个指令周期。此外,两个消息的发送顺序也不限定,比如主节点发送响应消息在前,发送完成消息在后;或者主节点发送完成消息在前,发送响应消息在后。
在一个可行的实施例中,数据预取系统还包括存储节点,发送单元还用于:
向存储节点发送数据更新消息,以将待写入数据更新至存储节点中数据写入地址对应的存储空间中;其中,该数据更新消息携带有所述待写入数据。
在一种可能的实施例中,数据预取系统为处理器,缓存节点以及主节点包括处理器中的高速缓存cache及其控制电路。主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如MSI协议、MSIF协议)进行数据交互。
进一步地,计算节点为处理器中的核(core),比如ARM核或x86核。
在一种可能的实施例中,数据预取系统为集群计算系统,且集群计算系统包括多台处理服务器和存储服务器,缓存节点包括处理服务器中的内存控制器以及内存(比如DDR控制器及DDR存储介质),主节点包括存储服务器中的处理器以及内存。
进一步地,计算节点为处理服务器的处理器。
第四方面,本申请实施例还提供一种缓存节点,该缓存节点应用于数据预取系统,该数据预取系统还包括主节点和其他多个缓存节点,该缓存节点包括:
接收单元,用于接收主节点发送的第一侦听消息,第一侦听消息携带有预取询问标识,预取询问标识用于指示缓存节点执行确定是否需要对进行数据预取操作的步骤;待写入数据为缓存节点1将接收到的数据处理完后得到的数据,缓存节点1为其他多个缓存节点中的一个;
确定单元,用于根据预取询问标识确定其是否需要对待写入数据进行数据预取操作;
发送单元,用于向主节点发送第一侦听响应消息;该第一侦听响应消息包括用于指示缓存节点是否需要对待写入数据进行数据预取操作;
接收单元,还用于若确定单元确定缓存节点需要对待写入数据进行数据预取操作且在向主节点发送第一侦听响应消息后,接收主节点发送的响应消息,该响应消息携带有待写入数据。
在一种可能的实施例中,数据预取系统还包括多个计算节点,多个计算节点与多个缓存节点一一对应,缓存节点1对应的计算节点用于对接收到的数据执行第一操作,缓存节点对应的计算节点用于对接收到的数据执行第二操作,该接收到的数据在被执行完第一操作后会大概率地被执行第二操作。
其中,接收到的数据在被执行第一操作后会大概率被地执行第二操作包括:缓存节点1可根据接收到数据的类型确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据对接收到的数据的处理流程确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据实际的硬件资源来确定接收到的数据在被执行第一操作后会大概率地被执行第二操作。比如用户购买云资源时只购买了存储资源,因此在接收到报文后只对报文进行存储。
在一种可能的实施例中,确定单元具体用于:若缓存节点支持数据预取功能且需要待写入数据;则确定缓存节点需要对待写入数据进行数据预取操作;若缓存节点支持数据预取功能但不需要待写入数据,或者缓存节点不支持数据预取功能,则确定缓存节点不需要对待写入数据进行数据预取操作。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点是否需要对待写入数据进行数据预取操作(例如第一预取结果标识的取值为第一预设阈值,以指示缓存节点需要对待写入数据进行数据预取操作;第二预取结果标识的取值为第二预设阈值,以指示缓存节点不需要对待写入数据进行数据预取操作);或者,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点是否需要对待写入数据进行数据预取操作的信息(例如第一侦听响应消息包括第二预取结果标识,以指示缓存节点需要对待写入数据进行数据预取操作;第一侦听响应消息中未包括第二预取结果标识,以指示缓存节点不需要对待写入数据进行数据预取操作)。
在一种可能的实施例中,数据预取系统为处理器,缓存节点以及主节点包括处理器中的高速缓存cache及其控制电路。主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如MSI协议、MSIF协议)进行数据交互。
进一步地,计算节点为处理器中的核(core),比如ARM核或x86核。
在一种可能的实施例中,数据预取系统为集群计算系统,且集群计算系统包括多台处理服务器和存储服务器,缓存节点包括处理服务器中的内存控制器以及内存(比如DDR控制器及DDR存储介质),主节点包括存储服务器中的处理器以及内存。
进一步地,计算节点为处理服务器的处理器。
可以看出,在本申请实施例的方案中,主节点接收到缓存节点1发送的写入请求后,通过向缓存节点2发送侦听消息,该侦听消息中的预取询问标识用于指示缓存节点2执行确定是否需要对上述写入请求中的待写入数据进行数据预取操作的操作。缓存节点2向主节点确定其是否需要对待写入数据进行数据预取操作后,向主节点发送侦听响应消息,该侦听响应消息中携带用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息;若根据指示信息确定缓存节点2需要对待写入数据进行数据预取操作,则主节点向缓存节点2发送响应消息,该响应消息携带有上述待写入数据。采用本申请实施例,将数据预取的应用场景扩展到不局限于同一个缓存节点内且进行数据预取时刻是确定的,并达到最早;同时提升数据预取的准确度和进一步降低数据交互时延,当多个缓存节点访问相同地址时,可将处理时延压缩到单个指令周期。
附图说明
图1a为一种数据预取的流程示意图;
图1b为本申请提供的一种侦听和目录相结合实现缓存一致性的方法示意图;
图2a为本申请实施例提供的一种应用数据预取方法的拓扑结构示意图;
图2b为本申请实施例提供的另一种应用数据预取方法的拓扑结构示意图;
图2c为本申请实施例提供的另一种应用数据预取方法的拓扑结构示意图;
图2d为本申请实施例提供的另一种应用数据预取方法的拓扑结构示意图;
图3本申请实施例提供的一种数据预取系统的框架示意图;
图4为本申请实施例提供的一种缓存节点的逻辑功能结构示意图;
图5为本申请实施例提供的一种主节点和存储节点的逻辑功能结构示意图;
图6为本申请实施例提供的一种数据预取方法的流程示意图;
图7为技术效果对比示意图;
图8为本申请实施例提供的一种基于处理器场景的缓存节点的结构示意图;
图9为本申请实施例提供的一种基于处理器场景的主节点和缓存节点的结构示意图;
图10为本申请实施例提供的一种基于集群计算场景的主节点和缓存节点的结构示意图;
图11为一种单级结构的多核系统示意图;
图12为本申请实施例提供的一种数据预取方法的流程示意图;
图13为一种多级结构的多核系统示意图;
图14为本申请实施例提供的一种处理器场景的框架示意图;
图15为本申请实施例提供的一种主节点的结构示意图;
图16为本申请实施例提供的一种缓存节点的结构示意图;
图17为本申请实施例提供的一种数据预取设备的结构示意图。
具体实施方式
下面结合附图对本申请的实施例进行描述。
首先在此介绍现有技术中缓存一致性机制的相关原理。
每个处理器内核都有本地缓存以及维护本地缓存一致性的硬件模块,将该硬件模块和本地缓存统称为缓存节点,将处理器内核称为计算节点。
缓存一致性机制有两种,一种是基于侦听(snoop)的一致性,另一种是基于目录的一致性。在基于侦听的缓存一致性机制中,每个缓存节点(图1b的缓存节点1、缓存节点2)都可以广播数据更新请求,其他缓存节点监控数据更新请求并确定自己是否拥有该数据更新请求对应的数据副本。该侦听机制时延较短,但同时也会带来由于连续性广播数据所造成的带宽占用和可扩展性问题。在基于目录的一致性机制中,多个缓存节点之间共享的数据可以存储在主节点中,主节点可通过目录记录的方式保持众多缓存节点之间的一致性。当一个缓存节点中的数据更新时,主节点可以更新或无效目录中记录的该数据在其他节点的条目,实现全系统的数据副本在单点维护和管理,从而保证各缓存节点间的数据一致性,该目录机制可有效改善侦听机制中广播带来的问题,但由于任何缓存节点更新数据都需要集中的经过目录并一一获得更新许可,导致了较大的访问时延。
为获得以上两种机制的优点,目前一般采用侦听/目录相结合的机制,如修改,拥有,独占,共享,无效(modified,owned,exclusive,shared,invalid,MOESI)或修改,独占,共享,无效,转发(modified,exclusive,shared,invalid,forwarding,MESIF)等,结合图1b对侦听/目录相结合的机制原理进行说明。
图1b中的缓存节点1、缓存节点2和主节点可以属于同一个CPU。主节点为缓存一致性维护节点,并与双倍数据速率(double data rate,DDR)存储介质直接相连。
当缓存节点1发起对某个DDR存储器的地址对应的数据进行读取时,首先缓存节点1向主节点发送数据读取请求;在主节点接收到缓存节点1发送的数据读取请求后,该主节点广播侦听消息到其他缓存节点(图1b为示意方便,仅示出向缓存节点2发送,实际上也会向其他缓存节点发送侦听消息),该侦听消息用于确定其他缓存节点的本地是否存储有上述DDR存储器的地址对应的数据;各缓存节点收到侦听消息后进行对应的处理后向主节点发送侦听响应消息,以缓存节点2为例,若缓存节点2的本地存储有该DDR存储器的地址对应的数据,则上述侦听响应消息中携带有DDR存储器的地址对应的数据;若上述缓存节点2的本地未存储上述DDR存储器的地址对应的数据,则上述侦听响应消息不携带DDR存储器的地址对应的数据。主节点收到所有的其他缓存节点的侦听响应消息后,向上述缓存节点1发送响应消息。若主节点获取上述DDR存储器的地址对应的数据后,上述响应消息携带上述DDR存储器地址对应的数据,且主节点根据需要同步向DDR存储器更新对应的数据。如果在这个过程中主节点收到来自其他缓存节点对相同地址的数据进行读取,则先执行完本次读取请求后再响应其他缓存节点的读取请求。
需要指出的是,上述DDR存储器是DDR1、DDR2、DDR3、DDR4等存储器的统称。
本申请实施例提供的数据预取方法适用于任意两个或多个具有缓存能力并且支持缓存一致性的计算电路之间的通信,计算电路包括但不限定于CPU、图形处理单元(graphics processing unit,GPU)、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(field programmable gate array,FPGA)等。
本申请实施例可承载在任何缓存一致性协议之中进行扩展(如MOESI协议,MESIF)协议等),不限于物理接口形式和互连拓扑结构,即该方法可直接对现有的缓存一致性协议进行增强,也可以重新定义包含本申请关键要素的缓存一致性机制,同时可承载在如外部设备快速互联通道(peripheral component interconnect express,PCIe)架构、以太网(Ethernet)等任意形态的物理接口之上,且无互连拓扑结构限制。
如图2a示意直接互连结构,两个具有缓存能力的计算单元直接互连;或如图2b示意环状/网状互连结构,三个具有缓存能力的计算单元首尾相连组成环状网络;或如图2c示意全互连结构,四个具有缓存能力的计算单元两两相互连接;或如图2d示意任意互连拓扑,任意个具有缓存能力的计算单元之间任意连接。
参见图3,图3为本申请实施例提供的一种数据预取系统的框架示意图。如图3所述,该数据预取系统包括多个计算节点、多个缓存节点、主节点和存储节点。
其中,计算节点与缓存节点相连接,且多个计算节点与多个缓存节点一一对应,多个缓存节点与主节点相连接,主节点与存储节点相连接。多个缓存节点间的数据交互是通过主节点实现的。
其中,缓存节点中任一个缓存节点C可以接收其他缓存节点的数据,或者接收缓存节点C对应的计算节点发送的数据,然后进行处理,处理完成后向主节点发送写入请求。本申请并不限定缓存节点C具体从哪种以及哪个节点接收数据。
主节点用于维护多个缓存节点的缓存一致性。比如当多个缓存节点中任一个缓存节点从其对应的计算节点或者从其他缓存节点得到数据,对该数据进行处理产生新的数据后,都会将该新的数据发送至主节点;再比如当缓存节点中的任一个缓存节点A需要读取数据时,该缓存节点A会向主节点发送数据读取请求,主节点在从其本地或者其他缓存节点中获取缓存节点A所需的数据。换句话说,主节点为多个缓存节点的数据的管理中心。
需要说明的是,主节点可以看成多个缓存节点的下级缓存。
具体地,如图4所示,从逻辑功能上划分,上述多个缓存节点中的每个缓存节点包括多个输入接口401、多个输出接口406、接收电路402、处理逻辑电路404、缓存电路403和发送电路405。
其中,输入接口401全部耦合到内部接收电路402,输出接口406全部耦合到内部发送电路405,用于向主节点请求读取数据或者写入数据,或响应主节点的读取数据请求。输入接口401和输出接口406用于实现前后级缓存节点之间的连接,进而实现不同的拓扑结构,如图2a-图2d所示。
缓存电路403可用于存储易失性数据、指令、频繁访问的存储节点中的数据副本等,其中缓存电路403可全部或部分的嵌入到处理逻辑电路404内部,以便更快速的存取数据。缓存电路403可以为易失性、非易失性存储器。
处理逻辑电路404用于对接收到的数据进行处理,并且判断是否需要预取其他缓存节点产生的数据,处理逻辑电路404为缓存节点的核心。
需要说明的是,多个缓存节点可以组成多个缓存级别,如2级缓存、3级缓存和4级缓存等。
具体地,如图5所示,从逻辑功能上划分,主节点包括多个输入接口501、多个输出接口508、接收电路502、处理逻辑电路504、缓存电路503和发送电路507。存储节点包括存储控制器505、存储电路506。
其中,输入接口501全部耦合到内部接收电路502,输出接口508全部耦合到内部发送电路507,用于向外部缓存节点请求数据,或响应外部缓存节点的数据请求。
缓存电路503可用于存储易失性数据、指令、频繁访问的存储电路506中的数据副本等。缓存电路503可以为易失性、非易失性存储器。
处理逻辑电路504用于处理缓存一致性相关的事务和维护缓存节点间数据一致性,也是执行数据预取的主体。
存储控制器505和存储电路506用于存储程序指令以及程序执行期间的过程数据,其中存储控制器505用于控制和管理流入和流出存储电路506的数据流,在一个实施例中,存储控制器505的功能也可以由处理逻辑电路504实现,以达到更快速访问存储电路506的目的,因此图5中存储控制器505是以虚线框表示的。一般而言,存储电路506可使用易失性存储器和非易失性存储器,非易失性存储器可用于数据的非易失性存储,易失性存储器通常可用于存储程序执行期间的过程数据。
首先需要在此说明的是,多个缓存节点要共享缓存,不可避免多个缓存节点可能会对同一个缓存地址进行操作,当某一个缓存节点对该缓存地址操作完后,修改了该缓存地址对应的存储空间里面的数据,其他缓存节点从该缓存地址取数据时会取不到预期的数据。为了保证一致性,需要有主节点来维护数据的一致性,以保证其他缓存节点取到的数据都是预期的数据。
实施例一
参见图6,图6为本申请实施例提供的一种数据预取方法的流程示意图。该方法应用于数据预取系统,该数据预取系统包括主节点和多个缓存节点。
如图6所示,该方法包括:
S601、主节点接收到缓存节点1在将接收到的数据处理完后发送的写入请求。
需要说明的是,缓存节点对接收到的数据进行的处理包括对接收到的数据进行解封装,得到待写入数据,然后将待写入数据映射到满足缓存节点间传输协议的净荷上,然后填充该协议的报头和速率适配,得到写入请求。
其中,缓存节点1可以接收其他缓存节点的数据;或者上述数据预取系统还包括多个计算节点,该多个计算节点分别与多个缓存节点一一连接,例如,缓存节点1可以与一个计算节点对应,此时,缓存节点1可以接收缓存节点1所对应的计算节点发送的数据,然后进行处理,处理完成后向主节点发送写入请求;本申请并不限定缓存节点1具体从哪种以及哪个节点接收数据。
写入请求携带有待写入数据、数据预取标识、数据预取的节点号。其中,数据预取的节点号用于指示缓存节点2。缓存节点1和缓存节点2为上述多个缓存节点中的两个不同的节点。
S602、主节点从写入请求中获取数据预取标识和数据预取节点号后,根据该数据预取标识向数据预取的节点号所指示的缓存节点2发送第一侦听消息,该第一侦听消息携带有预取询问标识。
其中,预取询问标识用于指示缓存节点2执行确定其是否需要对待写入数据进行数据预取操作的步骤。
在一种可能的实施例中,数据预取系统还包括多个计算节点,多个计算节点与多个缓存节点一一对应,缓存节点1对应的计算节点1用于对接收到的数据执行第一操作,缓存节点2对应的计算节点2用于对接收到的数据执行第二操作,该接收到的数据在被执行完第一操作后会大概率地被执行第二操作。其中,本申请中,″大概率”具体的值并不限定,本领域技术人员可以结合实际产品的需求来定义。具体的,本领域技术人员可以理解,本申请中,数据在被执行完第一操作后,如果会再被执行第二操作,那么缓存节点2的预取操作就会带来收益;否则,如果不会被执行第二操作,那么会白白增加处理的成本(包括处理时间会更长,增加处理功耗),因此,本领域技术人员可以根据实际应用场景来确定一个合理的“概率”,可以理解,在“概率”越大的情况下,带来的收益也会越大,例如,大概率可以为大于80%以上,或者90%以上。
其中,″接收到的数据在被执行第一操作后会大概率地被执行第二操作″可以是通过事先的业务模型来确定。例如,产品人员在设计一种业务模型时,可规定各硬件(如计算节点)的处理能力,例如,设计计算节点1有90%的可能性会接收到语音数据进行处理,处理完后肯定会再转给计算节点2;另外计算节点1有10%的可能性会用于处理其他数据,但处理完后不再转给计算节点2。在这种情况下,数据被执行第一操作后,会有90%的可能性被执行第二操作,就适合使用本申请的方案。
在另一实施例中,″接收到的数据在被执行第一操作后会大概率地被执行第二操作″也可以不是预先定义的模型,而是通过在处理过程中来实现。其中,接收到的数据在被执行第一操作后会大概率地被执行第二操作包括:缓存节点1可根据接收到数据的类型确定接收到的数据在被执行第一操作后会大概率地被执行第二操作(比如说对接收到的数据进行运算,包括整数运算和小数运算,若接收到数据的类型为整数,则在接收数据(即第一操作)后对该数据进行整数运算(即第二操作));或者缓存节点1根据对接收到的数据的处理流程确定接收到的数据在被执行第一操作后会大概率地被执行第二操作;或者缓存节点1根据实际的硬件资源或用户服务(如用户能够使用哪些功能、使用哪些硬件等)来确定接收到的数据在被执行第一操作后会大概率地被执行第二操作,比如用户购买云资源时购买了存储资源,因此在接收报文(即第一操作)后会对报文进行存储(即第二操作);或者,缓存节点1根据历史统计数据得到在自己曾经写入主节点的数据中,被缓存节点2读取的比例,将其作为当前待写入主节点的数据会被缓存节点2再次读取的概率;当这个概率大于某个阈值时,缓存节点1在发往主节点的写入请求中,设置预取标识并指定预取节点号为缓存节点2。
需要说明的是,缓存节点1在向主节点1发送写入请求之前,缓存节点1会根据接收到数据的类型、已知的业务处理流程和/或硬件资源确定接收到数据的大概率地被使用的下一任使用者(比如缓存节点2对应的计算节点)。因此缓存节点1在向主节点发送的写入请求中会携带指示缓存节点2的数据预取的节点号。
比如缓存节点1对应的计算节点对接收到的数据执行第一操作,缓存节点2对应的计算节点对接收到的数据执行第二操作。缓存节点1在向主节点发送写入请求之前,根据接收到数据的类型、已知的业务处理流程和/或硬件资源确定接收到的数据在被执行第一操作后会大概率地被执行第二操作,因此缓存节点1在向主节点发送的写入请求中会携带指示缓存节点2的数据预取的节点号。
在此需要说明的是,主节点接收到缓存节点1发送的写入请求后,向缓存节点2和其他缓存节点广播侦听消息。由于写入请求中携带有数据预取的节点号,且该数据预取节点号所指示的缓存节点为缓存节点2,因此在向缓存节点2发送的侦听消息中携带预取询问标识,该预取询问标识用于指示缓存节点2执行确定是否需要对待写入数据进行数据预取操作的步骤。为了区分,将向其他缓存节点发送的侦听消息称为第二侦听消息,将向缓存节点2发送的侦听消息为第一侦听消息。
其中,其他缓存节点为多个缓存节点中除了缓存节点1和缓存节点2之外的缓存节点。
主节点向其他缓存节点发送的第二侦听消息用于指示其他缓存节点删除其缓存电路中存储的原数据,原数据为主节点接收到待写入数据之前数据写入地址对应的数据。
这样处理的好处是,比如在缓存节点1向主节点发送写入请求之前,部分缓存节点已获取了数据写入地址对应的数据,以供缓存节点对应的计算节点使用。当主节点接收到缓存节点1发送的写入请求后,此时数据写入地址对应的数据发生变化。对于已获取的数据写入地址对应的数据的缓存节点来说,其获取的数据不是预期需要的,因此主节点会向这些缓存节点发送第二侦听消息,以指示这些缓存节点删除该数据写入地址对应的数据。在主节点完成对缓存节点1发送的写入请求中的待写入数据处理后,其他缓存节点可以向主节点发送数据读取请求,以请求获取数据写入地址对应的最新的数据(即待写入数据)。这样可以使得这些缓存节点对同一存储地址获取的数据是一致的。
在一个可能的实施例中,缓存节点2接收到第一侦听消息后,缓存节点2先确定其是否具有数据预取功能,若确定其具有数据预取功能,则缓存节点2再继续确定其是否需要待写入数据,若确定需要待写入数据,则缓存节点2确定其需要对待写入数据进行数据预取操作;若确定缓存节点2具有数据预取功能,但不需要待写入数据,则缓存节点2确定其不需要对待写入数据进行数据预取操作;若确定缓存节点2不具有数据预取功能,则确定缓存节点2不需要对待写入数据进行数据预取操作。
S603、主节点接收缓存节点2发送的第一侦听响应消息,该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息。
其中,第一侦听响应消息有两个功能,一是用于响应第一侦听消息,二是用于指示缓存节点2是否需要对待写入数据进行数据预取操作;若指示缓存节点2需要对待写入数据进行数据预取操作,则第一侦听响应消息的第二个功能可以看成缓存节点2向主节点请求获取待写入数据。
本申请的侦听响应消息与传统的侦听响应消息相比,多了用于指示缓存节点2是否对待写入数据进行数据预取操作的功能。
需要说明的是,当指示信息用于指示缓存节点2需要对待写入数据进行数据预取操作时,该第一侦听响应消息具体是用于响应第一侦听消息和请求获取待写入数据;当指示信息用于指示缓存节点2不需要对待写入数据进行数据预操作时,该第一侦听响应消息具体是用于响应第一侦听消息。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点2是否需要对待写入数据进行数据预取操作。例如第一预取结果标识的取值为第一预设阈值(比如true或1),以指示缓存节点2需要对待写入数据进行数据预取操作;第一预取结果标识的取值为第二预设阈值(比如false或0),以指示缓存节点不需要对待写入数据进行数据预取操作。
在一种可能的实施例中,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点2是否需要对待写入数据进行数据预取操作的信息。例如第一侦听响应消息包括第二预取结果标识,以指示缓存节点2需要对待写入数据进行数据预取操作;第一侦听响应消息中未包括第二预取结果标识,以指示缓存节点2不需要对待写入数据进行数据预取操作。需要解释说明的是,第二预取结果标识每次的取值可以相同,也可以不相同。
需要说明的是,上述数据预取标识、预取询问标识、第一预取结果标识和第二预取结果标识中的部分或者全部可以是不同消息中的同一字段,也即不同的消息中的同一个字段用来表示不同的含义。
在一个实施例中,若确定缓存节点2不需要对待写入数据进行数据预取操作,则主节点将待写入数据及数据写入地址保存至其缓存中。
需要说明的是,主节点的缓存电路中保存有数据与存储地址的对应关系表,数据存储地址为存储节点中的地址。具体地,主节点遍历数据与存储地址的对应关系表,若确定该数据与存储地址的对应关系表中保存有待写入数据的数据写入地址,则将该数据写入地址对应的数据更新为待写入数据。若确定数据与存储地址的对应关系表未保存待写入数据的数据写入地址,则将待写入数据及数据写入地址保存至数据与存储地址的对应关系表中。
S604、当根据指示信息确定缓存节点2需要对待写入数据进行数据预取操作时,主节点向缓存节点2发送携带待写入数据的响应消息。
其中,响应消息携带有待写入数据。若第一侦听响应消息用于指示缓存节点2需要对待写入数据进行数据预取操作时,则第一侦听响应消息可以看成缓存节点2向主节点请求获取待写入数据。同时,这里的响应消息也用于对第一侦听消息进行响应,即具有前述603步骤中提到的用于响应第一侦听消息的功能。
需要说明的是,主节点存储有数据与存储地址的对应关系表,该对应关系表包括数据及对应的存储地址,该存储地址为存储节点中的地址。
在一个可能的实施例中,数据预取系统还包括存储节点,上述写入请求还包括数据写入地址,数据写入地址为待写入数据在存储节点中的存储地址;该方法还包括:
若根据指示信息确定缓存节点2不需要对待写入数据进行数据预取操作,则主节点将待写入数据及数据写入地址保存至主节点的缓存中。若主节点的缓存没有足够的空间来存储待写入数据和/或数据写入地址,则该主节点向存储节点发送数据更新消息,以将待写入数据更新至存储节点中数据写入地址对应的存储空间中。该数据更新消息中携带有待写入数据和数据写入地址。
若在存储节点中数据写入地址对应的存储空间中已存储有数据,将该数据删除并将待写入数据保存到数据写入地址对应的存储空间中;若数据写入地址对应的存储空间未存储数据,则直接将待写入数据存储至数据写入地址对应的存储空间中。
需要说明的是,当其他缓存节点在一段时间内需要反复读取上述待写入数据时,即上述待写入数据为热数据,为了方便其获取待写入数据,上述主节点暂时将该待写入数据存储至数据与存储地址的对应关系表中,主节点可以直接从该对应关系表中获取该待写入数据。当在一段时间内其他缓存节点不需要反复读取上述待写入数据,此时上述待写入数据已是冷数据,为了节省主节点的存储空间,主节点将上述待写入数据写入到上述存储节点中上述数据写入地址对应的存储空间。
在一个可能的实施例中,当多个缓存节点向主节点发送对存储节点中同一地址A对应的存储空间存储的数据进行读取的请求时,主节点首先遍历其存储的数据及其存储地址的对应关系表,确定主节点中是否缓存地址A对应的数据,若主节点中存储有地址A对应的数据,则将该数据同时发送到多个缓存节点;若主节点未缓存地址A对应的数据,则主节点从上述存储节点中获取地址A对应的数据,并将该数据同时发送至上述多个缓存节点。
需要说明的是,主节点的缓存电路中保存有数据与存储地址的对应关系表。数据存储地址为存储节点中的地址。主节点通过该对应关系表来维护多个缓存节点的数据一致性。
在一个可能的实施例中,在主节点向缓存节点2发送响应消息的同时,向缓存节点1发送完成消息,该完成消息用于响应写入请求。换句话说,该完成消息用于告知缓存节点1主节点已完成对待写入数据的写入。
需要说明的是,本领域技术人员可以理解,由于硬件所限,通常不可能实现100%的同时,因此,本申请所说的″同时″并非指100%没有时间差,而是一个相对很小的时间差,用于保证两个消息发送尽量同时,从而可以尽快将消息传递给对端,以节省时延,具体的,该时间差可以间隔一个或若干个指令周期。此外,两个消息的发送顺序也不限定,比如主节点发送响应消息在前,发送完成消息在后;或者主节点发送完成消息在前,发送响应消息在后。
采用本申请的数据预取的方法的有益效果可参见图7。如图7所示,图7中的a图为现有技术中数据预取的示意图,从该图可知现有技术的缺点有:进行数据预取时刻的不确定、是否需要进行数据预取的结果存在不确定性和时延大。图7中的b图为采用本申请的数据预取的方法后的数据预取示意图,从该图可知,数据预取时刻是确定的,如图7所示,本申请方案中:主节点接收到缓存节点1发送的写入请求后,通过向缓存节点2发送侦听消息,该侦听消息中的预取询问标识用于指示缓存节点2执行确定是否需要对上述写入请求中的待写入数据进行数据预取操作的操作。缓存节点2向主节点确定其是否需要对待写入数据进行数据预取操作后,向主节点发送侦听响应消息,该侦听响应消息中携带用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息;若根据指示信息确定缓存节点2需要对待写入数据进行数据预取操作,则主节点向缓存节点2发送响应消息,该响应消息携带有上述待写入数据。采用本申请实施例,将数据预取的应用场景扩展到不局限于同一个缓存节点内且进行数据预取时刻是确定的,并达到最早;同时提升数据预取的准确度和进一步降低数据交互时延,当多个缓存节点访问相同地址时,可将处理时延压缩到单个指令周期。
在一个可能的实施例中,上述数据预取系统为处理器,多个计算节点为处理器中的核(core),缓存节点以及主节点包括处理器中的高速缓存(cache)及其控制电路,存储节点可以为DDR存储介质。主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如修改、共享、无效(Modified SharedInvalid,MSI)协议或修改、共享、无效、转发(Modified Shared Invalid forwarding,MSIF协议))进行数据交互。
实施例二
基于以上实施例,本实施例基于处理器场景对上述方案进行具体介绍。在处理器的场景下,缓存节点(包括cache及其控制电路)可以看成cache电路。如图8所示,该cache电路包括多个输入/输出接口801、收发器802、cache控制电路804、高速存储介质803。其中,输入/输出接口801直接与收发器802耦合,该收发器802与cache控制电路804相连接,多个输入/输出接口801相当于图4中的输入接口401和输出接口406,收发器802相当于图4中的发送电路405和接收电路402。cache控制电路804相当于图4中的处理逻辑电路404,cache控制电路804与高速存储介质803相连接,高速存储介质803相当于图4中的缓存电路403,该高速存储介质803可以为静态随机存取存储器(static random-access memory,SRAM)。
在一个可能的实施例中,上述多个缓存节点中的每个缓存节点包括一个高速存储介质,或者上述多个缓存节点共用一个高速存储介质,该高速存储介质从逻辑上被划分成多个缓存电路,以使多个缓存节点中的每个缓存节点有一个缓存电路供使用。
在处理器的场景下,主节点(包括cache及其控制电路)也可以看成cache电路。如图9所示,该cache电路包括多个输入/输出接口901、收发器902、cache控制电路904、高速存储介质903。其中,输入/输出接口901直接与收发器902耦合,该收发器902与cache控制电路904相连接。多个输入/输出接口901相当于图5中的输入接口501和输出接口506,收发器902相当于图5中的发送电路507和接收电路502。cache控制电路904相当于图5中的处理逻辑电路504,cache控制电路904与高速存储介质903相连接,高速存储介质903相当于图5中的缓存电路503,该高速存储介质903可以为静态随机存取存储器(static random-accessmemory,SRAM)。
存储节点包括存储控制电路906及片外存储介质905,该存储控制电路906相当于图5中的存储控制器505,该片外存储介质905相当于图5中的存储电路506,该片外存储介质905是指处理器的外部存储介质,可以为同步动态随机存储器(synchronous dynamicrandom access memory,SDRAM),例如,具体可以是DDR SDRAM(本申请中也简称“DDR”或者“DDR存储器”)。需要说明的是,SRAM的访存速度最快,SDRAM的访存速度慢于SRAM的访存速度。
在一个可能的示例中,存储节点中存储控制电路906可以嵌入在主节点中的cache控制电路904中。
在一个可能的实施例中,上述存储节点都包括一个片外存储介质,或者上述多个存储节点共用一个片外存储介质,该片外存储介质从逻辑上被划分为多个虚拟存储电路(如片外存储介质中的不同存储区域),以使多个存储节点中的每个存储节点均有一个虚拟存储电路供使用。
对于处理器场景,在一个具体的实施例中,处理器上运行有一个或多个虚拟机(本申请中称“虚拟机组”),此外,由于这些虚拟机用于执行任务,因此,也称“任务机”。各个虚拟机可以共用物理内存,在硬件上可能会是基于处理器的单机系统,但这个单机系统中的内存会被共享,每个虚拟机组有自己的私有内存,同时,虚拟机组之间有共享的内存。
在一种应用场景中,该处理器可以进行视频解码操作,处理器从云端收到码流后,处理器上运行的虚拟机组1用于接收报文,虚拟机组2用于解压缩,虚拟机组3用于解码,虚拟机组4用于后端存储。因此对于视频解码在该处理器上的业务流程为:接收报文、解压缩、解码和存储。
比如缓存节点1对应的core用于运行虚拟机组1,缓存节点2对应的core用于运行虚拟机组2。因此缓存节点1可根据业务流程确定虚拟机组1接收报文后需要将该报文传输至虚拟机组2(即缓存节点1确定其处理完的数据的下一任使用者为缓存节点2或者说缓存节点1处理完的数据会大概率地被缓存节点2使用),以进行解压缩。
再比如,缓存节点1对应的core用于运行虚拟机组1,缓存节点2对应的core用于运行虚拟机组4。虚拟机组1做了网络接收后,需要对接收到报文进行存储,且知道虚拟机自4的能力(比如仅具有存储能力),则说明大概率会把报文发送给用于存储的虚拟机组4。
实施例三
基于上述各实施例,本实施例公开了另一种数据预取系统,在本实施例中,数据预取系统为集群计算系统,且该集群计算系统包括多台处理服务器和存储服务器时,数据预取系统的缓存节点包括处理服务器中的内存控制器以及内存,比如处理服务器中的DDR存储介质及DDR控制器。主节点包括存储服务器中的处理器及内存,存储节点为存储服务器中存储控制器和存储介质组成的电路,比如由固态硬盘(solid state disk,SSD)控制器和SSD存储介质组成的电路。主节点与计算节点之间通过无限带宽(infiniband,IB)总线进行数据交互。
如图10所示,集群计算系统包括处理服务器1、处理服务器2和存储服务器。处理服务器1包括计算节点1以及缓存节点1。其中,计算节点1包括M个core、M个高速缓存、环形总线控制器1、内存接口1、IB接口1和其他接口1;其中,M为大于或者等于1的整数。M个高速缓存中的每个高速缓存包括高速缓存介质及其控制电路,比如cache介质及cache控制电路。M个core与M个高速缓存一一对应连接,M个高速缓存还均与环形总线控制器1连接,内存接口1、IB接口1和其他接口1均与环形总线控制器1连接。缓存节点1包括内存控制器1和内存1。缓存节点1通过其内存控制器1与计算节点1中的内存接口1实现与计算节点1之间的数据交互。
可选地,处理服务器1中的core可以为ARM核或者x86核。
需要说明的是,处理服务器2与处理服务器1具有相同的功能实体或者逻辑电路,这些功能实体或逻辑电路之间的连接关系与处理服务器1中的功能实体或逻辑电路之间的连接关系相同,在此不再叙述。换句话说,处理服务器2包括计算节点2和缓存节点2。处理服务器2包括N个core和N个高速缓存,N个core与N个高速缓存一一对应连接。N个高速缓存为由高速缓存介质及其控制器组成的电路。N为大于或者等于1的整数,N与M相同或者不同。
可选地,处理服务器2中的core可以为ARM核或者x86核。
存储服务器可以包括主节点以及存储节点,其中,主节点包括处理器及内存(图10中所示的内存3);存储节点包括存储控制器和存储介质。其中,对于存储控制器和存储介质,若存储介质为机械硬盘存储介质,则存储控制器为机械硬盘存储控制器;若存储介质为SSD存储介质,则存储控制器为SSD控制器;若存储介质为闪存(flash),则存储控制器为闪存控制器。
主节点中的处理器通过IB总线与计算节点1中的IB接口1连接,由于IB接口1通过环形总线控制器1和内存接口1与缓存节点1的内存控制器1连接,因此可实现主节点和缓存节点1之间的数据交互。主节点还通过IB总线与处理服务器2的计算节点2的IB接口2连接,由于IB接口2和内存接口2均与环形总线控制器2连接,且内存接口2与缓存节点2中的内存控制器2相连接,因此可实现主节点与缓存节点2之间的数据交互。
具体地缓存节点1的内存控制器1接收到计算节点1通过内存接口1传输的数据后,该内存控制器1对该数据进行处理,数据处理完后内存控制器1通过内存接口1、环形总线控制器1和IB接口基于IB总线向主节点发送写入请求,该写入请求携带有待写入数据、数据预取标识、数据预取节点号和数据写入地址;其中待写入数据为处理完后的数据,数据预取节点号所指示的缓存节点为缓存节点2,数据写入地址为待写入数据在存储节点的存储介质中的存储地址。
主节点接收到缓存节点1的写入请求后,从写入请求中获取待写入数据、数据预取节点号,数据预取标识和数据写入地址,并向数据预取节点号所指示的缓存节点2发送第一侦听消息,该第一侦听消息携带有预取询问标识。具体地,主节点中的处理器通过IB总线经处理服务器2的IB接口2将第一侦听消息发送至处理服务器2中的环形总线控制器2,该环形总线控制器2通过内存接口2向缓存节点2的内存控制器2发送第一侦听消息。
主节点中的处理器接收缓存节点2的内存控制器2发送的第一侦听响应消息后,根据该第一侦听响应消息确定缓存节点2需要对待写入数据是否进行数据预取操作。若确定缓存节点2需要对待写入数据进行数据预取操作,则主节点向缓存节点2发送响应消息,该响应消息携带有待写入数据。其中,主节点向缓存节点2发送响应消息的路径与主节点向缓存节点2发送第一侦听消息的路径相同。若确定缓存节点2不需要对待写入数据进行数据预取操作,则主节点中的处理器将待写入数据及数据写入地址保存到内存3中。如果主节点的内存3没有足够的存储空间存储待写入数据和/或数据写入地址,则将待写入数据保存或者更新至存储节点的存储介质中数据写入地址对应的存储空间中。
同时,主节点的处理器基于IB总线通过IB接口1、环形总线控制器1和内存接口1向缓存节点1的内存控制器1发送完成消息,该完成消息用于告知缓存节点1数据写入完成。
需要说明的是,缓存节点1中的内存1和缓存节点2中的内存2均可以为DDR存储介质。若缓存节点1中的内存1和缓存节点2中的内存2为DDR存储介质,则内存控制器1和内存控制器2为DDR控制器,内存接口1和内存接口2为DDR接口。
需要说明的是,主节点为所有缓存节点(包括处理服务器1中的缓存节点1和处理服务器2中的缓存节点2)共享的数据或数据库的管理节点。其中,该数据库包括该共享的数据。
在一种可能的实施例中,处理服务器1中的其他接口1包括PCIE接口或以太网接口,处理服务器2的其他接口2包括PCIE接口或以太网接口。处理服务器1的缓存节点1通过PCIE接口或以太网接口实现与主节点进行数据交互(即可以不通过IB接口),处理服务器2的缓存节点2通过PCIE接口或以太网接口实现与主节点进行数据交互(即可以不通过IB接口),进而实现对服务器1中的缓存节点1和处理服务器2中的缓存节点2的共享的数据或数据库的管理。其中,该数据库包括该共享的数据。
可以看出,在本申请实施例的方案中,主节点接收到缓存节点1的写入请求后,就向缓存节点2发送第一侦听消息,当确定缓存节点2需要对写入请求中的待写入数据进行数据预取操作时,主节点向缓存节点2发送待写入数据。采用本申请实施例使得数据预取场景未局限于一个缓存节点内,并解决了发起数据预取时刻和预测结果存在不确定性的问题,同时降低了时延。
实施例四
基于上述各实施例,本申请对另一种数据预取系统及数据预取方法进行介绍。参见图11,图11为一种单级结构的数据预取系统示意图。如图11所示,该数据预取系统包括两级缓存,分别为第S-1级缓存和第S级缓存。第S-1级缓存由M1个缓存节点组成,第S级缓存由互连网络和N1个主节点组成,其中,M1、N1和S均为大于或者等于1的整数。主节点在逻辑上和物理上可理解为缓存节点的下一级缓存节点,当存在多个主节点时,各主节点所属的内存进行统一编址,即多个主节点在逻辑上可理解为分布式主节点,同时各主节点管理着缓存节点之间的缓存一致性。互连网络用于为M1个缓存节点和N1个主节点之间的通信提供互连。需要说明的是,这里所说的单级是指在图11中只有一级缓存节点,即S-1级缓存。
需要说明的是,下级缓存可为上级缓存的主节点。例如在多核CPU芯片内,若缓存节点为一级缓存/二级缓存,则主节点为三级缓存,若缓存节点为三级缓存,则主节点为四级缓存,以此类推。缓存节点为多核CPU芯片内的cache,主节点为多核CPU芯片中cache总线的管理节点。这里所说的多核可以是一个CPU中的,还可以是跨CPU的,还可以是跨CPU和加速器的。
参见图12,图12为本申请实施例提供的一种数据读取方法的流程示意图。如图12所示,该方法包括:
S1201、缓存节点C1向目标主节点发送数据读取请求,该数据读取请求用于请求读取目标数据。
其中,上述缓存节点C1为第S-1级缓存包括的M1个缓存节点中的一个,目标主节点为第S级缓存包括的N1个主节点中的一个。上述数据读取请求携带数据读取地址,该数据读取地址为存储节点中的地址,该地址对应的存储空间存储的最新数据即为上述目标数据。
需要说明的是,M1个缓存节点与N1个主节点存在连接关系,因此缓存节点需要读取数据时,可以直接向与其具有连接关系的主节点发送数据读取请求。
S1202、目标主节点判断在其本地的缓存电路中是否缓存有目标数据。
其中,当确定在其本地的缓存电路中缓存有上述目标数据时,上述目标主节点执行步骤S1203;当在确定其本地的缓存电路中未缓存上述目标数据时,上述目标主节点执行步骤S1204。
具体地,目标主节点本地的缓存电路中存储有数据与存储地址的对应关系表。目标主节点先根据数据读取地址遍历上述数据与存储地址对应关系表,确定该对应关系表中是否存储有上述目标数据;若上述对应关系表中存储有上述目标数据,即确定上述目标主节点本地的缓存电路中缓存上述目标数据,上述目标主节点执行步骤S1203;若上述对应关系表中未存储有上述目标数据,即确定上述目标主节点本地的缓存电路中未缓存上述目标数据,上述目标主节点执行步骤S1204。
S1203、目标主节点向缓存节点C1发送第一完成消息。
其中,上述第一完成消息携带有上述目标数据,且该第一完成消息并指示上述缓存节点C1将该目标数据设置为共享状态。
需要说明的是指示上述缓存节点C1将目标数据设置为共享状态的目的为了使与缓存节点C1位于同一CPU的缓存节点或同一系统的缓存节点能够直接获取该目标数据,而不用向主节点发送数据读取请求。
S1204、目标主节点向其他缓存节点发送侦听消息。
其中,上述侦听消息用于指示上述其他缓存节点查询其本地是否缓存有上述目标数据。
需要指出的是,上述其他缓存节点为在上述第S-1级缓存包括的M1个缓存节点中除了上述缓存节点C1之外的缓存节点。
S1205、其他缓存节点中的每个缓存节点向目标主节点发送响应消息。
具体地,若上述其他缓存节点中的一个缓存节点C2缓存有上述目标数据,则该缓存节点C2向目标主节点发送的响应消息携带有上述目标数据;若上述其他缓存节点均未缓存上述目标数据,上述其他缓存节点中的每个缓存节点向目标主节点发送用于告知上述目标主节点其未缓存上述目标数据的响应消息。
S1206、目标主节点判断其他缓存节点中是否缓存目标数据。
其中,当确定上述其他缓存节点缓存有上述目标数据时,上述目标主节点执行步骤S 1207;当确定上述其他缓存节点未缓存上述目标数据时,上述目标主节点执行步骤S1208。
S1207、目标主节点向缓存节点C1发送完成消息。
其中,上述完成消息中携带有上述目标数据,且该完成消息用于请求上述缓存节点C1将上述目标数据设置为共享状态,并将上述数据与存储地址的对应关系表中的数据读取地址对应的数据更新为上述目标数据。
在一个可能的实施例中,若上述目标主节点的缓存电路没有充足的存储空间来存储目标数据时,则将该目标数据存储至上述存储节点中数据读取地址对应的存储空间中。
S1208、若第S级缓存包括的N1个主节点为末端节点,则目标主节点向缓存节点C1发送第二完成消息。
其中,上述第二完成消息携带有上述目标主节点的与数据读取地址对应的数据,其中,目标主节点可以根据数据与存储地址之间的对应关系表来获取数据读取地址对应的数据。
进一步地,若存在下一级缓存(即第S+1级缓存),如图13所示的多级结构,则当上述目标主节点从上述M1个缓存节点(即第S-1级缓存)中未获取目标数据时,目标主节点向上述第S+1级缓存发送数据读取请求,以请求获取上述目标数据。
需要说明的是,若存在第S+1级缓存时,则第S级缓存可以为缓存节点,第S+1级缓存可以为主节点。
第S+1级缓存中的主节点接收到上述数据读取请求时,先判断其本地是否存储目标数据。若本地未存储目标数据,则向其所维护的缓存节点广播侦听消息,以请求获取目标数据。若第S+1级缓存中的主节点接收到其所维护的缓存节点发送的目标数据后,向上述目标主节点发送携带目标数据的响应消息。
上述目标主节点接收上述第S+1级缓存发送的响应消息,并将该响应消息转发至上述缓存节点C1。
在一个可能的实施例中,若上述响应消息携带有上述目标数据,则目标主节点同时根据需求将该目标数据及数据读取地址添加到上述目标主节点本地存储电路的数据及存储地址对应的关系表中。
实施例五
基于上述各实施例,本申请实施例提供了一种处理器,如图14所示,为该处理器的硬件框架示意图。该处理器包括:多个CPU核(core)、多个缓存节点以及主节点,M为大于1的整数。其中上述缓存节点以及主节点包括处理器中的高速缓存(cache)及其控制电路,主节点用于维护多个缓存节点的数据一致性,主节点同时管理存储节点。缓存节点与CPU核之间、缓存节点与缓存节点之间、缓存节点和主节点通过cache总线进行数据交互。
可选地,处理器还可以包括相比于cache速度较低的存储介质(如DDR),在实际中,这些速度较低的存储介质还可以位于处理器外,作为片外存储介质,例如,位于图14中的存储节点上,其中,该存储节点与处理器不在一个芯片上。
其中,上述多个缓存节点可以划分为一级缓存、二级缓存和三级缓存。
一级缓存包括M个缓存节点,该M个缓存节点与M个CPU核一一对应连接,二级缓存包括N个缓存节点,该N个缓存节点可以用于维护一级缓存中的缓存节点的缓存一致性,因此二级缓存中的缓存节点可以看成一级缓存中缓存节点主节点,N为小于M的整数。如图14所示,二级缓存中的1个缓存节点可以维护一级缓存中的2个缓存节点的缓存一致性,比如缓存节点20可以看成缓存节点10和缓存节点11的主节点,缓存节点21可以看成缓存节点12和缓存节点13的主节点。当然二级缓存中的1个缓存节点也可以维护一级缓存中的其他数量的缓存节点的缓存一致性,其他值可以为3,4,5等等,本申请不限定于此。
三级缓存包括t个缓存节点,该t个缓存节点可以用于维护二级缓存中缓存节点的缓存一致性,因此三级缓存中的缓存节点可以看成二级缓存中缓存节点的主节点,t为小于n的整数。如图14所示,三级缓存中的1个缓存节点可以维护二级缓存中的2个缓存节点的缓存一致性,比如缓存节点30可以看成缓存节点20和缓存节点21的主节点。当然二级缓存中的1个缓存节点也可以维护一级缓存中的其他数量的缓存节点的缓存一致性,其他值可以为3,4,5等等,本申请不限定于此。
图14中的主节点为多个缓存节点的cache总线的管理中心,用于维护多个缓存节点(包括一级缓存、二级缓存和三级缓存中的缓存节点)的缓存一致性。该主节点还包括控制器,用于控制管理存储介质。主节点还可以理解为三级缓存的下一级缓存(即四级缓存)。
若缓存节点被划为一级缓存、二级缓存、三级缓存和四级缓存,则图14中的主节点可理解为五级缓存。
其中,对于图14中缓存节点,输入接口为逻辑或物理接口;输出接口为逻辑或物理接口。一级缓存中缓存节点的输入接口/输出接口用于连接如图14所示的CPU核与二级缓存中的缓存节点,二级缓存中缓存节点的输入接口/输出接口用于连接如图14所示的一级缓存中的缓存节点和三级缓存中的缓存节点;三级缓存中的缓存节点的输入接口/输出接口用于连接如图14所示二级缓存中的缓存节点和主节点。同时缓存节点的输入接口全部耦合到其内部接收电路,用于接收CPU核、其他缓存节点和主节点发送的数据或者消息;缓存节点的输出接口全部耦合到其内部发送电路,用于向CPU核、其他缓存节点和主节点发送数据或者消息。
在一个具体的实施例中,如图14所示,若CPU core0需要数据D,CPU core0对应的缓存节点10向其主节点(即缓存节点20)发送数据读取请求,缓存节点20为缓存节点10和缓存节点11的主节点。缓存节点20接收到数据读取请求后,首先确定其本地缓存电路中是否存储有数据D;若缓存节点20的缓存电路中存储有数据D,则缓存节点20直接向缓存节点10发送数据D;若缓存节点20的缓存电路中未存储数据D,则缓存节点20向其维护的缓存节点(即缓存节点10和缓存节点11)广播侦听消息,该侦听消息用于请求获取数据D;缓存节点11向缓存节点20发送侦听响应消息。
若缓存节点11的本地缓存电路存储有数据D,则缓存节点11向缓存节点20发送的侦听响应消息携带有数据D,缓存节点20接收到缓存节点11的侦听响应消息后,向缓存节点10发送响应消息,该响应消息中携带有数据D。
若缓存节点11的本地缓存电路未存储有数据D,在缓存节点20接收到缓存节点11的侦听响应消息后,向缓存节点20的下级节点(即缓存节点30)转发数据读取请求。缓存节点30为缓存节点20和缓存节点21的主节点。缓存节点30接收到数据读取请求后,确定其本地缓存电路是否存储有数据D;若存储有数据D,缓存节点30向缓存节点20发送携带数据D的响应消息;若缓存节点30的本地缓存电路未存储数据D,则向其所维护的缓存节点(即缓存节点20和缓存节点21)广播侦听消息,用于请求数据D。
缓存节点21接收到缓存节点30的侦听消息后,确定其本地的缓存电路是否存储有数据D;若缓存节点21确定其本地缓存电路存储有数据D,则向缓存节点30发送携带数据D的侦听响应消息;若缓存节点21确定其本地未存储数据D,则向其所维护的缓存节点(即缓存节点12和缓存节点13)广播侦听消息,用于请求获取数据D;缓存节点21接收其所维护的缓存节点发送的侦听响应消息;若该侦听响应消息中携带数据D,缓存节点21向缓存节点30发送携带数据D的响应消息;若缓存节点21接收到的侦听响应消息未携带数据D,则缓存节点21确定其所维护的缓存节点的缓存电路中未存储数据D,向缓存节点30发送用于告知未获取数据D的响应消息。
若缓存节点30获取数据D,向缓存节点20发送携带数据D的响应消息;若缓存节点30未获取数据D,则向缓存节点20发送用于告知未获取数据D的响应消息;若缓存节点20获取数据D,向缓存节点10发送携带数据D的响应消息;若缓存节点20未获取数据D,则向缓存节点10发送用于告知未获取数据D的响应消息。
需要说明的是,缓存节点10、缓存节点11、缓存节点12和缓存节点13可以看成图11或图13中的S-1级缓存缓存节点20和缓存节点21可以看成图11或图13中的S级缓存,缓存节点20可以看成缓存节点10和缓存节点11的主节点,缓存节点21可以看成缓存节点12和缓存节点13的主节点。缓存节点30可以看成图10中的S+1级缓存,缓存节点30为缓存节点20和缓存节点21的主节点。
需要说明的是,图10所示的集群计算系统可以按照该方法进行数据的读取,在此不再叙述。
在一个可能的实施例中,本申请实施例提供一种数据预取系统,该数据预取系统包括主节点和多个缓存节点。其中,多个缓存节点包括缓存节点1和缓存节点2。缓存节点1、缓存节点2和主节点所执行的具体步骤可参见图6所示实施例的相关描述,在此不再叙述。
实施例六
基于上述各实施例,本申请实施例提供了一种主节点,如图15所示,为该主节点的结构示意图。该主节点应用于数据预取系统,该数据预取系统还包括多个缓存节点。如图15所示,该主节点1500包括:
接收单元1501,用于接收缓存节点1在将接收到的数据处理完后发送的写入请求;其中,写入请求中携带待写入数据、数据预取标识、数据预取的节点号;待写入数据为缓存节点1将接收到的数据处理完得到的数据;
发送单元1502,用于根据数据预取标识向数据预取的节点号指示的缓存节点2发送第一侦听消息,该第一侦听消息携带有预取询问标识,预取询问标识用于指示缓存节点2执行确定其是否需要对待写入数据进行数据预取操作的步骤;其中,缓存节点1和缓存节点2为多个缓存节点中的两个不同的节点;
接收单元1501,还用于接收缓存节点2发送的第一侦听响应消息;该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息,其中,第一侦听响应消息为缓存节点2根据预取询问标识确定是否需要对待写入数据进行数据预取操作后发送的;
确定单元1503,用于根据指示信息确定缓存节点2是否需要对待写入数据进行数据预取操作;
发送单元1502,还用于若确定单元1503根据指示信息确定缓存节点2需要对待写入数据进行数据预取操作,则向缓存节点2发送携带待写入数据的响应消息。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点2是否需要对待写入数据进行数据预取操作(例如第一预取结果标识的取值为第一预设阈值,以指示缓存节点2需要对待写入数据进行数据预取操作;第一预取结果标识的取值为第二预设阈值,以指示缓存节点2不需要对待写入数据进行数据预取操作);或者,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点2是否需要对待写入数据进行数据预取操作的信息(例如第一侦听响应消息包括第二预取结果标识,以指示缓存节点2需要对待写入数据进行数据预取操作;第一侦听响应消息中未包括第二预取结果标识,以指示缓存节点2不需要对待写入数据进行数据预取操作)。
在一种可能的实施例中,数据预取系统还包括多个计算节点,该多个计算节点与多个缓存节点一一对应;
缓存节点1对应的计算节点用于对接收到的数据执行第一操作,缓存节点2对应的计算节点用于对接收到的数据执行第二操作;接收到的数据在被执行完第一操作后会大概率地被执行第二操作。
在一种可能的实施例中,数据预取系统还包括存储节点,写入请求还包括数据写入地址,数据写入地址为待写入数据写入存储节点时在存储节点中的存储地址;主节点还包括:
缓存单元1504,用于当确定单元1503根据指示信息确定缓存节点2不需要对待写入数据进行数据预取操作时,将待写入数据和数据写入地址缓存至主节点的缓存中。
在一种可能的实施例中,发送单元1502还用于:在向缓存节点2发送第一侦听消息的同时,向其他缓存节点发送第二侦听消息,第二侦听消息用于指示其他缓存节点删除原数据,原数据为在主节点接收到待写入数据之前数据写入地址对应的数据;其中,其他缓存节点为多个缓存节点中除了缓存节点1和缓存节点2之外的缓存节点。
在一种可能的实施例中发送单元1502,还用于在向缓存节点2发送响应消息的同时,向缓存节点1发送完成消息,该完成消息用于告知缓存节点1数据写入完成。
需要说明的是,本领域技术人员可以理解,由于硬件所限,通常不可能实现100%的同时,因此,本申请所说的″同时″并非指100%没有时间差,而是一个相对很小的时间差,用于保证两个消息发送尽量同时,从而可以尽快将消息传递给对端,以节省时延,具体的,该时间差可以间隔一个或若干个指令周期。此外,两个消息的发送顺序也不限定,比如主节点发送响应消息在前,发送完成消息在后;或者主节点发送完成消息在前,发送响应消息在后。
在一个可行实施例中,数据预取系统还包括存储节点,发送单元1502还用于:
向存储节点发送数据更新消息,以将待写入数据更新至存储节点中数据写入地址对应的存储空间中;其中,数据更新消息携带有待写入数据。
在一种可能的实施例中,数据预取系统为处理器,缓存节点以及主节点包括处理器中的高速缓存cache及其控制电路。主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如MSI协议、MSIF协议)进行数据交互。
进一步地,计算节点为处理器中的核(core),比如ARM核或x86核。
在一种可能的实施例中,数据预取系统为集群计算系统,且集群计算系统包括多台处理服务器和存储服务器,缓存节点包括处理服务器中的内存控制器以及内存(比如DDR控制器及DDR存储介质),主节点包括存储服务器中的处理器以及内存。
进一步地,计算节点为处理服务器的处理器。
需要说明的是,接收单元1501用于执行图6所示实施例的步骤S601的相关内容,发送单元1502用于执行图6所示实施例的步骤S602和S604的相关内容,接收单元1501和确定单元1503用于执行图6所示实施例的步骤S603的相关内容。
作为一个示例,该接收单元1501和发送单元1502的位置对应于图9中的输入/输出接口901和收发器902,确定单元1503的位置对应于图9中的cache控制电路904,缓存单元1504的位置对应于图9中的高速存储介质903。换言之,接收单元1501和发送单元1502的功能可以由图9中的输入/输出接口901和收发器902来实现,确定单元1503的功能可以由图9中的cache控制电路904来实现,缓存单元1504的功能可以由图9中的高速存储介质903来实现。当然本申请不限于此。
实施例七
基于上述各实施例,本申请实施例提供了一种缓存节点,如图16所示,为该缓存节点的结构示意图。该缓存节点应用于数据预取系统,该数据预取系统还包括主节点和其他多个缓存节点。如图16所示,该缓存节点1600包括:
接收单元1601,用于接收主节点发送的第一侦听消息,第一侦听消息携带有预取询问标识,预取询问标识用于指示缓存节点执行确定是否需要对待写入数据进行数据预取操作的步骤;其中,该待写入数据为缓存节点1将接收到的数据处理完后得到的数据,缓存节点1为其他多个缓存节点中的一个;
确定单元1602,用于根据预取询问标识确定缓存节点是否需要对待写入数据进行数据预取操作;
发送单元1603,用于向主节点发送第一侦听响应消息;该第一侦听响应消息包括用于指示缓存节点是否需要对待写入数据进行数据预取操作;
接收单元1601,还用于若确定单元1602确定缓存节点2需要对待写入数据进行数据预取操作且在向主节点发送第一侦听响应消息后,接收主节点发送的响应消息,该响应消息携带有待写入数据。
在一种可能的实施例中,数据预取系统还包括多个计算节点,该多个计算节点与多个缓存节点一一对应;
缓存节点1对应的计算节点用于对接收到的数据执行第一操作,缓存节点对应的计算节点用于对接收到的数据执行第二操作;接收到的数据在被执行完第一操作后会大概率地被执行第二操作。
在一种可能的实施例中,确定单元1602具体用于:若缓存节点支持数据预取功能且需要待写入数据;则确定缓存节点需要对待写入数据进行数据预取操作;若缓存节点支持数据预取功能但不需要待写入数据,或者缓存节点不支持数据预取功能,则确定缓存节点不需要对待写入数据进行数据预取操作。
在一种可能的实施例中,指示信息为第一侦听响应消息中包括的第一预取结果标识,该第一预取结果标识的不同值用于指示缓存节点是否需要对待写入数据进行数据预取操作(例如第一预取结果标识的取值为第一预设阈值,以指示缓存节点需要对待写入数据进行数据预取操作;第一预取结果标识的取值为第二预设阈值,以指示缓存节点不需要对待写入数据进行数据预取操作);或者,指示信息为第一侦听响应消息中是否包括第二预取结果标识来表示缓存节点是否需要对待写入数据进行数据预取操作(例如第二侦听响应消息包括第二预取结果标识,以指示缓存节点需要对待写入数据进行数据预取操作;第二侦听响应消息中未包括第二预取结果标识,以指示缓存节点不需要对待写入数据进行数据预取操作)。
在一种可能的实施例中,数据预取系统为处理器,缓存节点以及主节点包括处理器中的高速缓存cache及其控制电路。主节点和缓存节点之间通过cache总线进行数据交互,在协议上主节点和缓存节点之前通过cache一致性协议(比如MSI协议、MSIF协议)进行数据交互。
进一步地,计算节点为处理器中的核(core),比如ARM核或x86核。
在一种可能的实施例中,数据预取系统为集群计算系统,且集群计算系统包括多台处理服务器和存储服务器,缓存节点包括处理服务器中的内存控制器以及内存(比如DDR控制器及DDR存储介质),主节点包括存储服务器中的处理器以及内存。
进一步地,计算节点为处理服务器的处理器。
需要说明的是,接收单元1601、确定单元1602和发送单元1603用于执行图6所示实施例的相关内容。
作为一个示例,该接收单元1601和发送单元1602的位置对应于图8中的输入/输出接口801和收发器802,确定单元1602的位置对应于图8中的cache控制电路804。换言之,接收单元1601和发送单元1603的功能可以由图8中的输入/输出接口801和收发器802来实现,确定单元1602的功能可以由图8中的cache控制电路804来实现。当然本申请不限于此。
实施例八
基于上述各实施例,本实施例提供了一种设备。参见图17,图17为本申请实施例提供的一种设备的结构示意图。该设备1700包括至少一个处理器1701,至少一个存储器1702以及至少一个通信接口1703。所述处理器1701、所述存储器1702和所述通信接口1703通过所述通信总线连接并完成相互间的通信。
处理器1701可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案执行的集成电路。
通信接口1703,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器1702可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1702用于存储执行以上方案的应用程序代码,并由处理器1701来控制执行。处理器1701用于执行存储器1702中存储的应用程序代码。
存储器1702存储的代码可执行以上提供一种数据预取方法,具体包括缓存节点2接收主节点发送的第一侦听消息,第一侦听消息携带有预取询问标识,预取询问标识用于指示缓存节点2执行确定是否需要对待写入数据进行数据预取操作的步骤;待写入数据为缓存节点1将接收到的数据处理完后得到的数据,缓存节点1和缓存节点2为多个缓存节点中的两个不同的节点;缓存节点2根据预取询问标识确定其是否需要对待写入数据进行数据预取操作;并向主节点发送第一侦听响应消息;该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息,若缓存节点2确定其需要对待写入数据进行数据预取操作且在向主节点发送第一侦听响应消息后,接收主节点发送的响应消息,响应消息携带有待写入数据;或者,
存储器1702存储的代码可执行以上提供的另一种数据预取方法,具体包括:主节点接收缓存节点1在将接收到的数据处理完后发送的写入请求;其中,该写入请求中携带待写人数据、数据预取标识、数据预取的节点号;主节点根据数据预取标识向数据预取的节点号指示的缓存节点2发送第一侦听消息,该第一侦听消息携带有预取询问标识,该预取询问标识用于指示缓存节点2执行确定其是否需要对待写入数据进行数据预取操作的步骤;主节点接收缓存节点2发送的第一侦听响应消息,该第一侦听响应消息包括用于指示缓存节点2是否需要对待写入数据进行数据预取操作的指示信息,其中,第一侦听响应消息为缓存节点2根据预取询问标识确定是否需要对待写入数据进行数据预取操作后发送的;当主节点确定缓存节点2需要对待写入数据进行数据预取操作时,主节点向缓存节点2发送携带待写入数据的响应消息,缓存节点1和缓存节点2为多个缓存节点中的两个不同的节点。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,既可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、终端或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质(例如,SSD)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (32)

1.一种数据预取方法,其特征在于,所述方法应用于数据预取系统,该数据预取系统包括主节点和多个缓存节点,所述方法包括:
所述主节点接收缓存节点1发送的写入请求;其中,所述写入请求中携带待写入数据、数据预取标识、数据预取的节点号;
所述主节点根据所述数据预取标识向所述数据预取的节点号指示的缓存节点2发送第一侦听消息,所述第一侦听消息携带有预取询问标识,所述预取询问标识用于指示所述缓存节点2执行确定是否需要对所述待写入数据进行数据预取操作的步骤;
所述主节点接收所述缓存节点2发送的第一侦听响应消息,所述第一侦听响应消息包括用于指示所述缓存节点2是否需要对所述待写入数据进行数据预取操作的指示信息;
当所述主节点根据所述指示信息确定所述缓存节点2需要对所述待写入数据进行数据预取操作时,所述主节点向所述缓存节点2发送携带所述待写入数据的响应消息;
其中,所述缓存节点1和所述缓存节点2为所述多个缓存节点中的两个不同的节点。
2.根据权利要求1所述的方法,其特征在于:
所述指示信息为第一侦听响应消息中包括的第一预取结果标识,所述第一预取结果标识的不同值用于指示所述缓存节点2是否需要对所述待写入数据进行数据预取操作;
或者,
所述指示信息为通过第一侦听响应消息中是否包括第二预取结果标识来表示所述缓存节点2是否需要对所述待写入数据进行数据预取操作的信息。
3.根据权利要求1或2所述的方法,其特征在于,所述数据预取系统还包括多个计算节点,所述多个计算节点与所述多个缓存节点一一对应;
所述缓存节点1对应的计算节点用于对接收到的数据执行第一操作,所述缓存节点2对应的计算节点用于对所述接收到的数据执行第二操作;所述接收到的数据在被执行完所述第一操作后会大概率地被执行所述第二操作。
4.根据权利要求3所述的方法,其特征在于,所述数据预取系统还包括存储节点,所述写入请求还包括数据写入地址,所述数据写入地址为所述待写入数据写入所述存储节点时在所述存储节点中的存储地址;所述方法还包括:
当所述主节点根据所述指示信息确定所述缓存节点2不需要对所述待写入数据进行数据预取操作时,所述主节点将所述待写入数据和数据写入地址缓存至所述主节点的缓存中,以使所述主节点根据所述数据写入地址将所述待写入数据写入所述存储节点中。
5.根据权利要求4所述的方法,其特征在于,所述主节点向缓存节点2发送第一侦听消息的同时,所述方法还包括:
所述主节点向其他缓存节点发送第二侦听消息,所述第二侦听消息用于指示所述其他缓存节点删除原数据,所述原数据为在所述主节点接收到所述待写入数据之前所述数据写入地址对应的数据;
其中,所述其他缓存节点为所述多个缓存节点中除了所述缓存节点1和缓存节点2之外的缓存节点。
6.根据权利要求5所述的方法,其特征在于,在所述主节点向所述缓存节点2发送响应消息的同时,所述方法还包括:
向所述缓存节点1发送完成消息,所述完成消息用于告知所述缓存节点1数据写入完成。
7.根据权利要求6所述的方法,其特征在于,所述数据预取系统还包括存储节点,所述方法还包括:
所述主节点向所述存储节点发送数据更新消息,以将所述待写入数据更新至所述存储节点中数据写入地址对应的存储空间中;
其中,所述数据更新消息携带有所述待写入数据。
8.根据权利要求7所述的方法,其特征在于,所述第一侦听响应消息为所述缓存节点2根据所述预取询问标识确定是否需要对所述待写入数据进行数据预取操作后发送的。
9.根据权利要求8所述的方法,其特征在于,所述数据预取系统为处理器,所述缓存节点以及所述主节点中每一个包括所述处理器中的高速缓存cache及cache控制电路。
10.根据权利要求8所述的方法,其特征在于,所述数据预取系统为集群计算系统,所述集群计算系统包括多台处理服务器和存储服务器,所述缓存节点包括所述处理服务器中的内存控制器以及内存,所述主节点包括所述存储服务器中的处理器以及内存。
11.一种数据预取方法,其特征在于,所述方法应用于数据预取系统,所述数据预取系统包括主节点和多个缓存节点,所述方法包括:
缓存节点2接收所述主节点发送的第一侦听消息,所述第一侦听消息携带有预取询问标识,所述预取询问标识用于指示所述缓存节点2执行确定是否需要对待写入数据进行数据预取操作的步骤;所述待写入数据为缓存节点1将接收到的数据处理完后得到的数据,所述缓存节点1和缓存节点2为所述多个缓存节点中的两个不同的节点;
所述缓存节点2根据所述预取询问标识确定其是否需要对所述待写入数据进行数据预取操作;
所述缓存节点2向所述主节点发送第一侦听响应消息;所述第一侦听响应消息包括用于指示所述缓存节点2是否需要对所述待写入数据进行数据预取操作的指示信息;
若所述缓存节点2确定其需要对所述待写入数据进行数据预取操作且在向所述主节点发送所述第一侦听响应消息后,接收所述主节点发送的响应消息,所述响应消息携带有所述待写入数据。
12.根据权利要求11所述的方法,其特征在于,所述数据预取系统还包括多个计算节点,所述多个计算节点与所述多个缓存节点一一对应;
所述缓存节点1对应的计算节点用于对接收到的数据执行第一操作,所述缓存节点2对应的计算节点用于对所述接收到的数据执行第二操作;所述接收到的数据在被执行完所述第一操作后会大概率地被执行所述第二操作。
13.根据权利要求11或12所述的方法,其特征在于,所述缓存节点2根据预取询问标识确定其是否需要对所述待写入数据进行数据预取操作,包括:
若所述缓存节点2支持数据预取功能且需要所述待写入数据;则所述缓存节点2确定其需要对所述待写入数据进行数据预取操作;
若所述缓存节点2支持数据预取功能且不需要所述待写入数据,或者所述缓存节点2不支持数据预取功能,则所述缓存节点2确定其不需要对所述待写入数据进行数据预取操作。
14.根据权利要求13所述的方法,其特征在于,
所述指示信息为第一侦听响应消息中包括的第一预取结果标识,所述第一预取结果标识的不同值用于指示所述缓存节点2是否需要对所述待写入数据进行数据预取操作;
或者,
所述指示信息为通过第一侦听响应消息中是否包括第二预取结果标识来表示所述缓存节点2是否需要对所述待写入数据进行数据预取操作的信息。
15.根据权利要求14所述的方法,其特征在于,所述数据预取系统为处理器,所述缓存节点以及所述主节点中每一个包括所述处理器中的高速缓存cache及其控制电路。
16.根据权利要求14所述的方法,其特征在于,所述数据预取系统为集群计算系统,且所述集群计算系统包括多台处理服务器和存储服务器,所述缓存节点包括所述处理服务器中的内存控制器以及内存,所述主节点包括存储服务器中的处理器以及内存。
17.一种主节点,其特征在于,所述主节点应用于数据预取系统,该数据预取系统还包括多个缓存节点,所述主节点包括:
接收单元,用于接收缓存节点1发送的写入请求;其中,所述写入请求中携带待写入数据、数据预取标识、数据预取的节点号;
发送单元,用于根据所述数据预取标识向所述数据预取的节点号指示的缓存节点2发送第一侦听消息,所述第一侦听消息携带有预取询问标识,所述预取询问标识用于指示所述缓存节点2执行确定其是否需要对所述待写入数据进行数据预取操作的步骤;
所述接收单元,还用于接收所述缓存节点2发送的第一侦听响应消息;所述第一侦听响应消息包括用于指示所述缓存节点2是否需要对所述待写入数据进行数据预取操作的指示信息,
所述发送单元,还用于当确定单元根据所述指示信息确定所述缓存节点2需要对所述待写入数据进行数据预取操作时,向所述缓存节点2发送携带所述待写入数据的响应消息;
其中,所述缓存节点1和缓存节点2为所述多个缓存节点中的两个不同的节点。
18.根据权利要求17所述的主节点,其特征在于,
所述指示信息为第一侦听响应消息中包括的第一预取结果标识,所述第一预取结果标识的不同值用于指示所述缓存节点2是否需要对所述待写入数据进行数据预取操作;
或者,
所述指示信息为通过第一侦听响应消息中是否包括第二预取结果标识来表示所述缓存节点2是否需要对所述待写入数据进行数据预取操作的信息。
19.根据权利要求17或18所述的主节点,其特征在于,所述数据预取系统还包括多个计算节点,所述多个计算节点与所述多个缓存节点一一对应;
所述缓存节点1对应的计算节点用于对接收到的数据执行第一操作,所述缓存节点2对应的计算节点用于对所述接收到的数据执行第二操作;所述接收到的数据在被执行完所述第一操作后会大概率地被执行所述第二操作。
20.根据权利要求19所述的主节点,其特征在于,所述数据预取系统还包括存储节点,所述写入请求还包括数据写入地址,所述数据写入地址为所述待写入数据写入所述存储节点时在所述存储节点中的存储地址;所述主节点还包括:
缓存单元,用于当所述确定单元根据所述指示信息确定所述缓存节点2不需要对所述待写入数据进行数据预取操作,将所述待写入数据和数据写入地址缓存至所述主节点的缓存中,以使所述主节点根据所述数据写入地址将所述待写入数据写入所述存储节点中。
21.根据权利要求20所述的主节点,其特征在于,所述发送单元还用于:
在向缓存节点2发送第一侦听消息的同时,向其他缓存节点发送第二侦听消息,所述第二侦听消息用于指示所述其他缓存节点删除原数据,所述原数据为在所述主节点接收到所述待写入数据之前所述数据写入地址对应的数据;
其中,所述其他缓存节点为所述多个缓存节点中除了所述缓存节点1和缓存节点2之外的缓存节点。
22.根据权利要求21所述的主节点,其特征在于,所述发送单元,还用于在向所述缓存节点2发送响应消息的同时,向所述缓存节点1发送完成消息,所述完成消息用于告知所述缓存节点1数据写入完成。
23.根据权利要求22所述的主节点,其特征在于,所述数据预取系统还包括存储节点,所述发送单元还用于:
向所述存储节点发送数据更新消息,以将所述待写入数据更新至所述存储节点中数据写入地址对应的存储空间中;其中,所述数据更新消息携带有所述待写入数据。
24.根据权利要求23所述的主节点,其特征在于,所述第一侦听响应消息为所述缓存节点2根据所述预取询问标识确定是否需要对所述待写入数据进行数据预取操作后发送的。
25.根据权利要求24所述的主节点,其特征在于,所述数据预取系统为处理器,所述缓存节点以及所述主节点中每一个包括所述处理器中的高速缓存cache及其控制电路。
26.根据权利要求24所述的主节点,其特征在于,所述数据预取系统为集群计算系统,且所述集群计算系统包括多台处理服务器和存储服务器,所述缓存节点包括所述处理服务器中的内存控制器以及内存,所述主节点包括存储服务器中的处理器以及内存。
27.一种缓存节点,其特征在于,所述缓存节点应用于数据预取系统,所述数据预取系统还包括主节点和其他多个缓存节点,所述缓存节点包括:
接收单元,用于接收所述主节点发送的第一侦听消息,所述第一侦听消息携带有预取询问标识,所述预取询问标识用于指示所述缓存节点执行确定是否需要对待写入数据进行数据预取操作的步骤;所述待写入数据为缓存节点1将接收到的数据处理完后得到的数据,所述缓存节点1和所述其他多个所述缓存节点中的一个;
确定单元,用于根据所述预取询问标识确定其是否需要对所述待写入数据进行数据预取操作;
发送单元,用于向所述主节点发送第一侦听响应消息;所述第一侦听响应消息包括用于指示所述缓存节点是否需要对所述待写入数据进行数据预取操作的指示信息;
所述接收单元,还用于若所述确定单元确定所述缓存节点需要对所述待写入数据进行数据预取操作且在向所述主节点发送所述第一侦听响应消息后,接收所述主节点发送的响应消息,所述响应消息携带有所述待写入数据。
28.根据权利要求27所述的缓存节点,其特征在于,所述数据预取系统还包括多个计算节点,所述多个计算节点与所述多个缓存节点一一对应;
所述缓存节点1对应的计算节点用于对接收到的数据执行第一操作,所述缓存节点对应的计算节点用于对所述接收到的数据执行第二操作;所述接收到的数据在执行完所述第一操作后会大概率地执行所述第二操作。
29.根据权利要求27或28所述的缓存节点,其特征在于,所述确定单元具体用于:
若所述缓存节点支持数据预取功能且需要所述待写入数据;则确定所述缓存节点需要对所述待写入数据进行数据预取操作;
若所述缓存节点支持数据预取功能但不需要所述待写入数据,或者所述缓存节点不支持数据预取功能,则确定所述缓存节点不需要对所述待写入数据进行数据预取操作。
30.根据权利要求29所述的缓存节点,其特征在于,所述指示信息为第一侦听响应消息中包括的第一预取结果标识,所述第一预取结果标识的不同值用于指示所述缓存节点是否需要对所述待写入数据进行数据预取操作;
或者,
所述指示信息为通过第一侦听响应消息中是否包括第二预取结果标识来表示所述缓存节点是否需要对所述待写入数据进行数据预取操作的信息。
31.根据权利要求30所述的缓存节点,其特征在于,所述数据预取系统为处理器,所述缓存节点以及所述主节点中每一个包括所述处理器中的高速缓存cache及其控制电路。
32.根据权利要求31所述的缓存节点,其特征在于,所述数据预取系统为集群计算系统,且所述集群计算系统包括多台处理服务器和存储服务器,所述缓存节点包括所述处理服务器中的内存控制器以及内存,所述主节点包括存储服务器中的处理器以及内存。
CN201980003468.7A 2018-08-24 2019-08-23 数据预取方法及装置 Active CN111406251B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN2018109742522 2018-08-24
CN201810974252 2018-08-24
CN201910259338 2019-03-29
CN2019102593381 2019-03-29
PCT/CN2019/102285 WO2020038466A1 (zh) 2018-08-24 2019-08-23 数据预取方法及装置

Publications (2)

Publication Number Publication Date
CN111406251A CN111406251A (zh) 2020-07-10
CN111406251B true CN111406251B (zh) 2023-12-08

Family

ID=69592878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980003468.7A Active CN111406251B (zh) 2018-08-24 2019-08-23 数据预取方法及装置

Country Status (4)

Country Link
US (1) US11669453B2 (zh)
EP (1) EP3835959A4 (zh)
CN (1) CN111406251B (zh)
WO (1) WO2020038466A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342709B (zh) * 2021-06-04 2023-02-21 海光信息技术股份有限公司 在多处理器系统中访问数据的方法和多处理器系统
CN113852533B (zh) * 2021-09-27 2022-06-07 北京微纳星空科技有限公司 一种多通道数据通信系统、方法及电子设备
CN114153754B (zh) * 2022-02-08 2022-04-29 维塔科技(北京)有限公司 用于计算集群的数据传输方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0818733A2 (en) * 1996-07-01 1998-01-14 Sun Microsystems, Inc. A multiprocessing system configured to perform software initiated prefetch operations
CN103635887A (zh) * 2013-09-23 2014-03-12 华为技术有限公司 缓存数据的方法和存储系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6954767B1 (en) * 1999-03-31 2005-10-11 Fuji Photo Film Co., Ltd. Server and method for searching for image using image prefetch, designating database and storage devices for searching, and setting retrieval and processing parameters for search
US7124252B1 (en) * 2000-08-21 2006-10-17 Intel Corporation Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US6654857B2 (en) * 2001-06-21 2003-11-25 International Business Machines Corporation Non-uniform memory access (NUMA) computer system having distributed global coherency management
US6760817B2 (en) * 2001-06-21 2004-07-06 International Business Machines Corporation Method and system for prefetching utilizing memory initiated prefetch write operations
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7155572B2 (en) * 2003-01-27 2006-12-26 Advanced Micro Devices, Inc. Method and apparatus for injecting write data into a cache
CN100428193C (zh) * 2004-02-07 2008-10-22 华为技术有限公司 一种在数据存储系统中预取数据的方法
US7360027B2 (en) * 2004-10-15 2008-04-15 Intel Corporation Method and apparatus for initiating CPU data prefetches by an external agent
US7395375B2 (en) * 2004-11-08 2008-07-01 International Business Machines Corporation Prefetch miss indicator for cache coherence directory misses on external caches
US20070239940A1 (en) * 2006-03-31 2007-10-11 Doshi Kshitij A Adaptive prefetching
EP2555129B1 (en) * 2011-08-03 2019-02-06 Amadeus S.A.S. Method and system to maintain strong consistency of distributed replicated contents in a client/server system
US9710533B2 (en) * 2015-06-04 2017-07-18 Codership Oy Efficient buffer pool page pre-fetching for database clusters
US10389839B2 (en) * 2016-06-01 2019-08-20 Intel Corporation Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US10452551B2 (en) * 2016-12-12 2019-10-22 Intel Corporation Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register
US11314648B2 (en) * 2017-02-08 2022-04-26 Arm Limited Data processing
US10802969B2 (en) * 2019-02-04 2020-10-13 Arm Limited Interconnect and method of operation of such an interconnect

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0818733A2 (en) * 1996-07-01 1998-01-14 Sun Microsystems, Inc. A multiprocessing system configured to perform software initiated prefetch operations
CN103635887A (zh) * 2013-09-23 2014-03-12 华为技术有限公司 缓存数据的方法和存储系统

Also Published As

Publication number Publication date
US20210224189A1 (en) 2021-07-22
CN111406251A (zh) 2020-07-10
EP3835959A4 (en) 2021-11-10
EP3835959A1 (en) 2021-06-16
US11669453B2 (en) 2023-06-06
WO2020038466A1 (zh) 2020-02-27

Similar Documents

Publication Publication Date Title
US8762651B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
CN111406251B (zh) 数据预取方法及装置
US20130290643A1 (en) Using a cache in a disaggregated memory architecture
US9990292B2 (en) Progressive fine to coarse grain snoop filter
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
CN114153754B (zh) 用于计算集群的数据传输方法、装置及存储介质
CN107341114B (zh) 一种目录管理的方法、节点控制器和系统
KR20180063820A (ko) 메모리에서 어드레스 범위간의 데이터 전송 장치 및 방법
KR102581572B1 (ko) 허브 디바이스 및 그의 작동방법
EP4026005B1 (en) Producer-to-consumer active direct cache transfers
CN113794764A (zh) 服务器集群的请求处理方法、介质和电子设备
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US8510513B2 (en) Network load reducing method and node structure for multiprocessor system with distributed memory
JP6343722B2 (ja) マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
KR20230061398A (ko) 프로세서 기반 디바이스에서의 캐시 코히어런스 프로토콜의 동적 선택을 가이드하기 위한 반복된 판독의 추적
CN113495854A (zh) 主机-设备系统中实现或管理缓存一致性的方法和系统
US8447934B2 (en) Reducing cache probe traffic resulting from false data sharing
US20170185516A1 (en) Snoop optimization for multi-ported nodes of a data processing system
CN110235113B (zh) 存储器控制器和用于数据处理的系统和方法
KR20220119737A (ko) 프로세서 기반 디바이스에서의 캐시 코히어런스 프로토콜의 동적 선택의 제공
KR101419379B1 (ko) 분산 메모리를 가지는 다중 프로세서 시스템을 위한 네트워크 부하 감소 방법 및 노드의 구조
US11914865B2 (en) Methods and systems for limiting data traffic while processing computer system operations
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法

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
GR01 Patent grant
GR01 Patent grant