CN114731282B - 处理非缓存写数据请求的方法、缓存器和节点 - Google Patents
处理非缓存写数据请求的方法、缓存器和节点 Download PDFInfo
- Publication number
- CN114731282B CN114731282B CN201980102202.8A CN201980102202A CN114731282B CN 114731282 B CN114731282 B CN 114731282B CN 201980102202 A CN201980102202 A CN 201980102202A CN 114731282 B CN114731282 B CN 114731282B
- Authority
- CN
- China
- Prior art keywords
- buffer
- data
- node
- address
- request
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种处理非缓存写数据请求的方法、缓存器和节点。该方法包括:缓存器从第一处理器接收第一非缓存写数据请求并向节点发送第一非缓存写数据请求,第一非缓存写数据请求包含第一地址;若缓存器确定缓存器中存储有第一地址,则缓存器向第一处理器获取与第一非缓存写数据请求相对应的第一数据;当缓存器从节点接收到第一数据缓冲区编号时,缓存器向节点发送第一数据。该缓存器在接收到该第一非缓存写数据请求之后,若确定本地存储有第一地址,则可以向该处理器获取第一数据。当该缓存器接受到该第一数据缓冲区编号之后,可以向该节点发送该第一数据,可以提高数据写入的效率,加快写数据进程。
Description
技术领域
本申请涉及缓存器领域,具体涉及一种处理非缓存写点。
背景技术
随着芯片组规模越来越大,芯片之间的通信成本也越来越高。在一个多核多片***中,每次写数据请求都需要交互及握手才能完成。典型的应用场景包括:远程直接数据存取(remote direct memory access,RDMA)的高位宽同地址操作以及低位宽同地址操作。一次完整的写数据操作需要包含如下步骤:
当中央处理器(central processing unit,CPU)有写数据的需求时,该CPU可以通过缓存器向节点发送非缓存写数据请求,该节点可以写入与该非缓存写数据请求相对应的数据,也可以将该数据发往下一个子节点。该节点可以为一个总线节点或者控制器,示例性的,该控制器可以为存储控制器、通用串行总线(universal serial bus,USB)控制器等。该节点可以与子节点组成一个存储***。当缓存器接收到CPU发送的第一非缓存写数据请求之后,该缓存器向节点转发该第一非缓存写数据请求。当节点接收到该第一非缓存写数据请求之后,该节点给CPU分配一个数据缓冲区编号(data buffer ID,DBID),并将该DBID通过缓存器发送给该CPU。该CPU接收到该DBID之后,通过缓存器向节点发送需要写入的第一数据。节点确定该DBID对应的数据缓冲区,并将该第一数据写入该数据缓冲区中。在完成数据写入之后,该节点通过缓存器向CPU发送完成(completion,COMP)响应。
该缓存器需要在接收到该节点发送的DBID之后,才能根据该DBID向该CPU请求与该第一非缓存写数据请求相对应的第一数据。在接收到该第一数据之后该缓存器再向节点发送该第一数据,这样写入数据的效率较低。
发明内容
本申请提供了一种处理非缓存写数据请求的方法及缓存器。在该处理非缓存写数据请求的方法中,该缓存器无需等到接收到该节点发送的第一数据缓冲区编号就可以向处理器获取第一数据,在从节点接收到第一数据缓冲区编号之后,可以立即向该节点发送该第一数据,这样可以加快写数据的进程。
有鉴于此,本申请第一方面提供了一种处理非缓存写数据请求的方法,该方法包括:缓存器从第一处理器接收第一非缓存写数据请求并向节点发送第一非缓存写数据请求,第一非缓存写数据请求包含第一地址,第一非缓存写数据请求用于向节点申请与第一地址对应的第一数据缓冲区编号;若缓存器确定缓存器中存储有第一地址,则缓存器向第一处理器获取与第一非缓存写数据请求相对应的第一数据;当缓存器从节点接收到第一数据缓冲区编号时,缓存器向节点发送第一数据。该缓存器在接收到该第一非缓存写数据请求之后,若确定本地存储有第一地址,则可以立即向该第一处理器获取第一数据,而不需要等到接收到该节点分配的第一数据缓冲区编号之后再向该第一处理器请求第一数据。当该缓存器接收到该第一数据缓冲区编号之后,可以立即向该节点发送该第一数据,这样可以提高数据写入的效率,加快写数据进程。
可选的,结合第一方面,在第一方面的第一种可能的实现方式中,缓存器向第一处理器获取与第一非缓存写数据请求相对应的第一数据包括:缓存器向第一处理器发送第二数据缓冲区编号,以指示第一处理器向缓存器发送第一数据,第二数据缓冲区编号是缓存器根据第一非缓存写数据请求给第一处理器分配的;缓存器从第一处理器接收第一数据。由于该第一处理器对于数据缓冲区编号是哪个设备分配的并不感知,所以,该缓存器可以给该第一处理器分配第二数据缓冲区编号指示该第一处理器发送该第一数据,这样可以使得该第一处理器提前发送该第一数据,加快写数据进程。
可选的,结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该方法还包括:缓存器确定缓存器中存储的第一地址被打上独占标记;缓存器向第一处理器发送第一完成响应,以指示第一处理器释放第一数据占用的缓冲区。当该缓存器确定该第一地址被打上独占标记时,可以在向该第一处理器发送第二数据缓冲区编号的同时向该第一处理器发送第一完成响应。该第一处理器在发送第一数据之后可以立即释放该第一数据占用的缓冲区。可以缓解该第一处理器的压力。若该第一处理器有连续写数据需求,在接收到该第一完成响应之后可以立即发送下一次的非缓存写数据请求。这样可以提高写数据效率。
可选的,结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,缓存器从第一处理器接收第一非缓存写数据请求之前,该方法还包括:缓存器从第二处理器接收第二非缓存写数据请求并向节点发送第二非缓存写数据请求,第二非缓存写数据请求包含第一地址,第一地址用于节点确定缓存器存储的第一地址是否被打上独占标记;缓存器从节点接收第三数据缓冲区编号和第二完成响应,第二完成响应包括独占标记;若缓存器中存储的第一地址未被打上独占标记,则缓存器将第一地址打上独占标记。当该缓存器存储的第一地址没有被打上独占标记时,该缓存器可以向节点请求该独占标记,并将该第一地址打上独占标记。该缓存器将该第一地址打上独占标记之后,该缓存器可以直接向处理器发送完成响应。
可选的,结合第一方面的第二种或第三种可能的实现方式,第一方面的第四种可能的实现方式中,该方法还包括:缓存器从节点接收删除指令;缓存器删除第一地址的独占标记,并向节点发送确认删除指令。当缓存器接收到删除指令之后,该缓存器可以删除该第一地址的独占标记,并向节点发送删除指令,该节点可以根据该删除指令删除该缓存器与该第一地址的对应关系。该节点就可以记录其他缓存器与该第一地址的对应关系,可以提高方案的多样性。
本申请第二方面提供了一种处理非缓存写数据请求的方法,该方法包括:节点从第一缓存器接收第一非缓存写数据请求,第一非缓存写数据请求包含第一地址;节点根据第一非缓存写数据请求给第一处理器分配第一数据缓冲区编号,并向第一缓存器发送第一数据缓冲区编号;当节点从第一缓存器接收到与第一非缓存写数据请求相对应的第一数据时,节点将第一数据写入与第一数据缓冲区编号对应的数据缓冲区中,第一数据是第一缓存器确定第一缓存器中存储有第一地址时,从第一处理器获取的。该第一缓存器在接收到该第一非缓存写数据请求之后,若确定本地存储有第一地址,则可以立即向该第一处理器获取第一数据。而不需要等到接收到该节点分配的第一数据缓冲区编号之后再向该第一处理器请求第一数据。当该缓存器收到该第一数据缓冲区编号时,可以直接向该节点发送该第一数据。该节点收到该第一数据之后可以根据该第一数据缓冲区编号将该第一数据写入该第一数据缓冲区编号对应的数据缓冲区中。可以提高数据写入的效率,加快写数据进程。
可选的,结合第二方面,在第二方面的第一种可能的实现方式中,节点从第一缓存器接收第一非缓存写数据请求之后,该方法还包括:节点确定存储有第一缓存器的编号与第一地址的对应关系,该对应关系指示缓存器存储的第一地址被打上独占标记。当该第一缓存器存储的第一地址被打上独占标记时,该第一缓存器可以给第一处理器分配第二数据缓冲区编号指示该第一处理器发送该第一数据,这样可以使得该第一处理器提前发送该第一数据,加快写数据进程。
可选的,结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,节点从第一缓存器接收第一非缓存写数据请求之前,该方法还包括:节点从第一缓存器接收第二非缓存写数据请求,该第二非缓存写数据请求包含第一地址;节点存储第一缓存器的编号与第一地址的对应关系;节点根据第二非缓存写数据请求分配第三数据缓冲区编号并向第一缓存器发送第三数据缓冲区编号和第二完成响应,第二完成响应包括独占标记。该节点可以将包含有独占标记的第二完成响应发送给第一缓存器,该第一缓存器在接受到该第二完成响应之后可以将本地存储的第一地址打上独占标记。之后,该第一缓存器可以在向该第一处理器发送第二数据缓冲区编号的同时向该第一处理器发送第一完成响应。该第一处理器在发送第一数据之后可以立即释放该第一数据占用的缓冲区。可以缓解该第一处理器的压力。若该第一处理器有连续写数据需求,在接收到该第一完成响应之后可以立即发送下一次的非缓存写数据请求。这样可以提高写数据效率。
可选的,结合第二方面第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,该方法还包括:节点从第二缓存器接收第三非缓存写数据请求,第三非缓存写数据请求包括第一地址,第二缓存器不同于第一缓存器;若节点确定节点存储有第一缓存器的编号与第一地址的对应关系,节点向第一缓存器发送删除指令,删除指令用于指示第一缓存器删除第一地址的独占标记,并向节点发送确认删除指令;节点从缓存器接收确认删除指令;节点根据确认删除指令删除第一缓存器的编号与第一地址的对应关系。当节点接收到第二缓存器的第三非缓存写数据请求时,该节点可以先删除该第一缓存器的编号与第一地址的对应关系,再记录该第二缓存器的编号与该第一地址的对应关系,可以提高方案的多样性。
本申请第三方面提供了一种缓存器,该缓存器包括:管理模块,用于从第一处理器接收第一非缓存写数据请求并向节点发送第一非缓存写数据请求,第一非缓存写数据请求包含第一地址,第一非缓存写数据请求用于向节点申请与第一地址对应的第一数据缓冲区编号;数据处理模块,用于当标记存储模块确定存储有第一地址时,从第一处理器获取与第一非缓存写数据请求相对应的第一数据;数据处理模块,还用于当数据缓冲区编号接收模块接收到第一数据缓冲区编号时,向节点发送第一数据。该管理模块在接收到该第一非缓存写数据请求之后,若标记存储模块确定本地存储有第一地址,则数据处理模块可以立即向该第一处理器获取第一数据。当数据缓冲区编号接收模块接收到该第一数据缓冲区编号之后,该数据处理模块可以立即向该节点发送该第一数据,这样可以提高数据写入的效率,加快写数据进程。
可选的,结合第三方面,在第三方面的第一种可能的实现方式中,缓存器还包括:管理模块,还用于向第一处理器发送第二数据缓冲区编号,以指示第一处理器向缓存器发送第一数据;数据处理模块,还用于从第一处理器接收第一数据。
可选的,结合第三方面第一种可能的实现方式,在第三方面的第二种可能的实现方式中,标记存储模块,还用于确定第一地址被打上独占标记;管理模块,还用于向第一处理器发送第一完成响应,以指示第一处理器释放第一数据占用的缓冲区。
可选的,结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,管理模块,还用于从第二处理器接收第二非缓存写数据请求并向节点发送第二非缓存写数据请求,第二非缓存写数据请求包含第一地址,第一地址用于节点确定缓存器存储的第一地址是否被打上独占标记;数据缓冲区编号接收模块,用于从节点接收第三数据缓冲区编号;标记存储模块,用于从节点接收第二完成响应,第二完成响应包括独占标记;标记存储模块,还用于当标记存储模块存储的第一地址不具有独占标记时,将第一地址打上独占标记。
可选的,结合第三方面的第二种或第三种可能的实现方式,在第三方面的第四种可能的实现方式中,标记存储模块,还用于从节点接收删除指令;标记存储模块,还用于删除第一地址的独占标记,并向节点发送确认删除指令。
本申请第四方面提供了一种节点,该节点包括:请求处理模块,用于从第一缓存器接收第一非缓存写数据请求,第一非缓存写数据请求包含第一地址;数据缓冲模块,用于根据请求处理模块接收到的第一非缓存写数据请求给第一处理器分配第一数据缓冲区编号,并指示管理模块向第一缓存器发送第一数据缓冲区编号;数据缓冲模块,还用于当数据处理模块接收到与第一非缓存写数据请求相对应的第一数据时,将第一数据写入第一数据缓冲区编号对应的数据缓冲区中,第一数据是第一缓存器确定第一缓存器中存储有第一地址时,从第一处理器获取的。该第一缓存器在接收到该第一非缓存写数据请求之后,若确定本地存储有第一地址,则可以立即向该第一处理器获取第一数据。而不需要等到接收到该节点分配的第一数据缓冲区编号之后再向该第一处理器请求第一数据。当该缓存器收到该第一数据缓冲区编号时,可以直接向该节点发送该第一数据。该节点收到该第一数据之后可以根据该第一数据缓冲区编号将该第一数据写入该第一数据缓冲区编号对应的数据缓冲区中。可以提高数据写入的效率,加快写数据进程。
可选的,结合第四方面,在第四方面的第一种可能的实现方式中,管理模块,还用于确定存储有第一缓存器的编号与第一地址的对应关系,对应关系指示缓存器存储的第一地址被打上独占标记。
可选的,结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,请求处理模块,还用于从第一缓存器接收第二非缓存写数据请求,第二非缓存器写数据请求包含第一地址;管理模块,还用于存储第一缓存器的编号与第一地址的对应关系;数据缓冲模块,还用于根据请求处理模块接收到的第二非缓存写数据请求分配第三数据缓冲区编号;管理模块,还用于向第一缓存器发送第三数据缓冲区编号和第二完成响应,第二完成响应包括独占标记。
可选的,结合第四方面第一种或第二种可能的实现方式,在第四方面的第三种可能的实现方式中,请求处理模块,还用于从第二缓存器接收第三非缓存写数据请求,第三非缓存写数据请求包括第一地址,第二缓存器不同于第一缓存器;管理模块,还用于当确定存储有第一缓存器的编号与第一地址的对应关系时,向第一缓存器发送删除指令,删除指令用于指示第一缓存器删除第一地址的独占标记,并向节点发送确认删除指令;管理模块,还用于从缓存器接收确认删除指令;管理模块,还用于根据确认删除指令删除存储的第一缓存器的编号与第一地址的对应关系。
本申请提供了一种处理非缓存写数据请求的方法,该方法包括:缓存器从第一处理器接收第一非缓存写数据请求并向节点发送第一非缓存写数据请求,第一非缓存写数据请求包含第一地址,第一非缓存写数据请求用于向节点申请与第一地址对应的第一数据缓冲区编号;若缓存器确定缓存器中存储有第一地址,则缓存器向第一处理器获取与第一非缓存写数据请求相对应的第一数据;当缓存器从节点接收到第一数据缓冲区编号时,缓存器向节点发送第一数据。该缓存器在接收到该第一非缓存写数据请求之后,若确定本地存储有第一地址,则可以立即向该处理器获取第一数据,而不需要等到接收到该第一数据缓冲区编号之后再向该处理器请求第一数据。当该缓存器接受到该第一数据缓冲区编号之后,可以立即向该节点发送该第一数据,这样可以提高数据写入的效率,加快写数据进程。
附图说明
图1为本申请提供的一种信息处理***一个实施例示意图;
图2为本申请提供的一种处理非缓存写数据请求的方法的一个实施例示意图;
图3为本申请提供的一种处理非缓存写数据请求的方法的一个实施例示意图;
图4为本申请提供的一种处理非缓存写数据请求的方法的一个实施例示意图;
图5为本申请提供的一种处理非缓存写数据请求的方法的一个实施例示意图;
图6为本申请提供的一种缓存器的一个实施例示意图;
图7为本申请提供的一种节点的一个实施例示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
随着芯片组规模越来越大,芯片件通信的成本也越来越高。在一个多核多片***中,每次非缓存写数据都需要交互及握手才能完成。在高性能处理器架构中,典型的应用场景包括:以工作队列元素(work queue element,WQE)为例的高位宽同地址操作,以门铃任务(doorbell)为例的低位宽同地址顺序操作。
图1为本申请提供的一种信息处理***,该***中包括多个缓存器,如图1中的缓存器200,缓存器210……每一个缓存器具有不同的编号,每一个缓存器管理一个或多个处理器,例如,该缓存器200管理处理器101、处理器102……处理器10N。该N个处理器可以通过***总线相连。该缓存器200管理的N个处理器都可以与缓存器200交互。
参见图2,当缓存器管理的处理器有写数据需求时,该处理器在步骤201中,发送第一非缓存写数据请求。当该缓存器接收到该第一非缓存写数据请求时,该缓存器在步骤202中,转发该第一非缓存写数据请求。当该节点接收到给第一非缓存写数据请求之后,根据该第一非缓存写数据请求分配第一数据缓冲区编号。在步骤203中,发送该第一数据缓冲区编号。当缓存器接收到该第一数据缓冲区编号之后,该缓存器在步骤204中,转发该第一数据缓冲区编号。当处理器接收到该第一数据缓冲区编号时,该处理器在步骤205中,发送第一数据。当缓存器接收到该第一数据时,该缓存器在步骤206中,转发第一数据。节点在接收到该第一数据之后,在步骤207中,节点将该第一数据写入该节点。当该节点完成写入之后,在步骤208中,发送第一完成响应。缓存器接收到该第一完成响应之后,在步骤209中,转发第一完成响应。当处理器收到该第一完成响应时,在步骤210中,释放第一数据占用的缓冲区。
该缓存器需要在接收到该节点发送的第一数据缓冲区编号之后,才能根据该第一数据缓冲区编号向该处理器请求与该第一非缓存写数据请求相对应的第一数据。在接收到该第一数据之后,该缓存器再向节点发送该第一数据,这样写入数据的效率较低。
需要说明的是,在图1中,任意一个缓存器管理的N个处理器与该缓存器位于同一个芯片上,并且属于同一个缓存器管理的N个处理器中任意一个处理器发送的非缓存写数据请求的源地址是相同的。该缓存器与节点可能位于一个芯片上,也可能不在同一个芯片上。当该缓存器与节点不在一个芯片上时,该缓存器与节点之间还可以存在协议配置器(protocol adapter,PA)。当该缓存器接收到任意一个处理器的非缓存写数据请求时,该缓存器需要先将该非缓存写数据请求发送至与该缓存器位于同一芯片的源PA,该源PA再将该非缓存写数据请求转发至与节点位于同一芯片的目的PA,该目的PA再将该非缓存写数据请求转发至节点。
需指出的是,非缓存写数据请求包括需要写入的数据的属性、需要写入的目的的地址以及其他基本信息。在节点将需要写入的数据写入过程中,该非缓存写数据请求是必要的。
本申请实施例提供了一种处理非缓存写数据请求的方法。请参见图3,具体地,处理写数据请求的方法包括:
301、第一处理器向缓存器发送第一非缓存写数据请求。
当第一处理器有写数据需求时,该第一处理器向缓存器发送第一非缓存写数据请求。该第一处理器为缓存器管理的处理器中的任意一个处理器。该缓存器从第一处理器接收该第一非缓存写数据请求。该第一非缓存写数据请求包含第一地址,该第一地址指向节点的一段数据缓冲区域,该数据缓冲区域包含多个数据缓冲区,每一个数据缓冲区有一个数据缓冲区编号。该第一非缓存写数据请求用于向节点申请该数据缓冲区域中的一个数据缓冲区。
302、缓存器向节点转发第一非缓存写数据请求。
缓存器向节点转发第一非缓存写数据请求。
303、缓存器确定存储有已被打上独占标记的第一地址。
该缓存器确定本地存储了第一地址,并且该第一地址被打上了独占(exclusive)标记。
需说明的是,MESI协议定义了修改(modified)、独占(exclusive)、分享(share)和无效(invalid)状态。本方案借鉴了该MESI协议,在本方案中,缓存器中的缓存线(cacheline)对于节点中的第一地址只存在独占(exclusive)或无效(invalid)两种状态。当状态为独占时,缓存器中的数据是干净(clean)的,即与节点中的数据是一致的。
只有在缓存器收到节点的独占标记之后,该缓存器中的缓存线对于该第一地址的状态为独占状态。该第一地址在一个时刻只能被一个缓存器的缓存线所独占。当该缓存器确定存储有已被打上独占标记的第一地址时,该缓存器在从任意一个处理器接收到包含该第一地址的非缓存写数据请求时,该缓存器可以直接向该处理器发送数据缓冲区编号和完成响应,从而可以使得该处理器在发送与该写数据请求对应的数据之后立即释放该数据占用的缓冲区。
304、缓存器向第一处理器发送第二数据缓冲区编号和第一完成响应。
当步骤303中,该缓存器确定本地存储有第一地址时,该缓存器向第一处理器发送第二数据缓冲区编号,该第二数据缓冲区编号是该缓存器给该第一处理器分配的。该第二数据缓冲区编号用于指示该第一处理器向该缓存器发送与该第一非缓存写数据请求相对应的第一数据。
若该缓存器确定该缓存器本地存储的第一地址被打上独占标记时,该缓存器可以向该第一处理器发送第二数据缓冲区编号的同时向该第一处理器发送第一完成响应,该第一完成响应用于指示该第一处理器在向缓存器发送第一数据之后释放该第一数据占用的缓冲区。
需要说明的是,该第二数据缓冲区编号是缓存器分配的,处理器对于该数据缓冲区编号是哪个设备分配的并不感知。
305、第一处理器向缓存器发送第一数据。
当第一处理器接收到在步骤304中缓存器发送的第二数据缓冲区编号之后,该第一处理器向缓存器发送第一数据。
306、第一处理器释放第一数据占用的缓冲区。
若该第一处理器在接收到该第二数据缓冲区编号的同时还接收到了第一完成响应,该第一缓存器在步骤305中向缓存器发送第一数据之后,可以立即释放该第一数据占用的缓冲区。
307、节点确定存储有缓存器的编号与第一地址的对应关系。
节点在自己本地的目录(directory)中确定存储有该缓存器的编号与第一地址的对应关系。当节点确定目录中存储有缓存器与第一地址的对应关系时,该节点可以确定该缓存器存储的第一地址被打上独占标记。
需说明的是,步骤307在步骤302之后,但是步骤307与步骤303至步骤306没有时间上的先后顺序。
308、节点向缓存器发送第一数据缓冲区编号。
当节点确定目录中存储有该缓存器的编号与第一地址的对应关系之后,根据步骤302中缓存器发送的第一非缓存写数据请求给该第一处理器分配第一数据缓冲区编号。并向该缓存器发送该第一数据缓冲区编号。
该节点向该缓存器发送第一数据缓冲区编号的同时,该节点也可以向该缓存器发送完成响应,该完成响应中可以携带该独占标记。
309、缓存器向节点发送第一数据。
当缓存器从该节点接收到第一数据缓冲区编号时,该缓存器向节点发送从该第一处理器接收到的第一数据。
310、节点根据第一数据缓冲区编号将第一数据写入该节点。
节点根据第一数据缓冲区编号将该第一数据写入该节点。具体的,该节点根据该第一数据缓冲区编号确定该第一数据缓冲区编号在该节点中对应的数据缓冲区,再将该第一数据写入该数据缓冲区中。
311、节点指示缓存器删除第一地址的独占标记。
可选的,该节点可以指示该缓存器删除该第一地址的独占标记。
具体的可以参见图4,图4以及步骤3111至步骤3115中所述的第一缓存器为图3以及步骤301至步骤311中的缓存器。该节点指示该缓存器删除本地记录的目标标记的具体实现可以为:
3111、节点从第二缓存器接收到第三非缓存写数据请求,第三非缓存写数据请求包括第一地址。
节点从第二缓存器接收到第三非缓存写数据请求,该第二缓存器不同于该第一缓存器。该第二缓存器的编号与第一缓存器的编号不相同。该第三非缓存写数据请求包括第一地址。
3112、节点向第一缓存器发送删除指令。
当节点确定目录中存储有第一缓存器与该第一地址的对应关系时,该节点向该第一缓存器发送删除指令,该删除指令用于指示该第一缓存器删除该第一地址的独占标记。
3113、第一缓存器在本地删除第一地址的独占标记。
第一缓存器删除该第一地址的独占标记。
3114、第一缓存器向节点发送确认删除指令。
该第一缓存器向节点发送确认删除指令,该确认删除指令用于指示该节点删除该节点中存储的第一缓存器的编号与第一地址的对应关系。
3115、节点在目录中删除第一缓存器的编号与第一地址的对应关系。
节点在收到该确认删除指令之后,在本地的目录中删除第一缓存器的编号与第一地址的对应关系。然后记录该第二缓存器的编号与该第一地址的对应关系。
可以理解的是,该节点还可以向该第二缓存器发送数据缓冲区编号和完成响应,该完成响应用于指示该第二缓存器将本地存储的第一地址打上独占标记。
本申请实施例提供了一种处理非缓存写数据请求的方法,该缓存器在接收到该第一非缓存写数据请求之后,若确定本地存储有第一地址,则可以立即向该处理器获取第一数据,而不需要等到接收到该第一数据缓冲区编号之后再向该处理器请求第一数据。当该缓存器接受到改第一数据缓冲区编号之后,可以立即向该节点发送该第一数据,这样可以提高数据写入的效率,加快写数据进程。
同时,当该缓存器确定本地存储的第一地址被打上独占标记时,该缓存器向第一处理器发送第一完成响应,该第一处理器可以将第一数据发出之后立即释放该第一数据占据的缓冲区,这样可以缓解该第一处理器的压力。若该第一处理器有连续写数据需求,在发出该第一数据之后可以马上发出下一次非缓存写数据请求,可以加快写数据进程。
在上述步骤303中,该缓存器需要确定本地存储有已被打上独占标记的第一地址。在此之前,该缓存器需要先从节点获取该独占标记,并在本地存储的第一地址上打上该独占标记。参见图5,在上述处理非缓存写数据请求的方法步骤301之前,该方法还包括:
401、第二处理器向缓存器发送第二非缓存写数据请求。
第二处理器向缓存器发送第二非缓存写数据请求,该第二非缓存写数据请求包含该第一地址。该第二处理器与上述第一处理器可以为相同的处理器,也可以为不同的处理器。若该第一处理器与第二处理器不相同,该第一处理器与第二处理器都为该缓存器管理的处理器。
需说明的是,该缓存器在首次接收到包含第一地址的非缓存写数据请求之后,将该第一地址存储在本地。
402、缓存器向节点发送第二非缓存写数据请求。
缓存器向该节点发送第二非缓存写数据请求。
403、缓存器确定本地存储的第一地址不具有独占标记。
缓存器确定本地存储的第一地址没有被打上独占标记。
404、缓存器向第二处理器发送第四数据缓冲区编号。
缓存器向第二处理器发送第四数据缓冲区编号,该第四数据缓冲区编号为该缓存器给该第二非缓存写数据请求给第二处理器分配的。
需说明的是,当该缓存器在步骤403中确定本地存储的第一地址没有被打上独占标记时,该缓存器只能向该第二处理器发送的第四数据缓冲区编号,而不能向该第二处理器发送完成响应。
405、第二处理器向缓存器发送第二数据。
第二处理器在接收到该第四数据缓冲区编号之后,该第二处理器向该缓存器发送与该第二非缓存写数据请求相对应的第二数据。
406、节点在目录中存储缓存器的编号与第一地址的对应关系。
在步骤402中,节点接收到该缓存器发送的第二非缓存写数据请求之后,该节点确定目录中没有存储关于该第一节点的对应关系时,该节点在目录中存储该缓存器的编号与第一地址的对应关系。
需指出的是,若该节点在接收到该第二非缓存写数据请求之后,该节点确定目录中存储有其他缓存器的编号与该第一地址的对应关系时,节点需要先删除其他缓存器的编号与该第一地址的对应关系,然后再记录该缓存器的编号与第一地址的对应关系,详情请参见步骤3111至步骤3115进行理解,此处不再赘述。
步骤406在步骤402之后,但是步骤405与步骤403至步骤405没有时间上的先后关系。
407、节点向缓存器发送第三数据缓冲区编号和第二完成响应,该第二完成响应包括独占标记。
节点在目录中存储该缓存器的编号与第一地址的对应关系之后,该节点根据该第二非缓存写数据请求给该第二处理器分配第三数据缓冲区编号,并将该第三数据缓冲区编号和携带有独占标记的第二完成响应发送给缓存器。示例性的,该独占标记为一个字符携带在该完成响应中。
408、缓存器向节点发送第二数据。
当缓存器接收到该第三数据缓冲区编号和第二完成响应之后,该缓存器向节点发送该第二数据。
409、缓存器将本地存储的第一地址打上独占标记。
缓存器在本地存储的第一地址打上独占标记。示例性的,若该独占标记为一个字符,则该缓存器在本地存储的第一地址末尾加上该字符,用以标识该缓存器对该第一地址的独占权限。
410、缓存器向第二处理器发送第三完成响应。
当该缓存器在本地存储的第一地址打上独占标记之后,缓存器向第二处理器发送第三完成响应,该第三完成响应用于指示该第二处理器释放该第二数据占用的缓冲区。
411、第二处理器释放第二数据占用的缓冲区。
第二处理器在接收到第三完成响应之后,该第二处理器可以释放该第二数据占用的缓冲区。
412、节点根据第二数据缓冲区编号将该第二数据写入。
节点在接收到该第二数据之后,将该第二数据写入该第二数据缓冲区对应的数据缓冲区中。步骤412在步骤408之后,与步骤409至步骤411没有时间上的先后顺序。
本申请实施例提供了一种处理非缓存写数据请求的方法,该方法中缓存器可以向节点申请第一地址的独占标记,然后将本地存储的第一地址打上独占标记。从而该缓存器在接收到处理器的非缓存写数据请求之后可以直接向处理器发送数据缓冲区编号和完成响应,指示处理器发送与该非缓存写数据请求对应的数据并释放该数据占用的缓冲区,这样可以缓解处理器的压力。当处理器有连续写数据需求时,可以在发出数据之后马上发出下一次非缓存写数据请求,可以加快写数据进程。
本申请实施例提供了一种缓存器,请参阅图6,该缓存器包括管理模块501、标记存储模块502、数据缓冲区编号接收模块503、数据处理模块504。
该管理模块501用于向处理器发送数据缓冲区编号和完成响应,用于从处理器接收非缓存写数据请求,还用于向节点发送非缓存写数据请求。该管理模块501与标记存储模块502互通。该标记存储模块502用于从节点接收完成响应和删除指令,还用于向节点发送确认删除指令。
该数据缓冲区编号接收模块503用于从节点接收数据缓冲区编号,数据处理模块504与数据缓冲区编号接收模块503互通,与管理模块501互通,与标记存储模块502互通。该数据处理模块504用于从处理器接收数据以及向节点发送数据。
具体的,该缓存器中各个模块的功能具体如下:
管理模块501,用于从第一处理器接收第一非缓存写数据请求并向节点发送第一非缓存写数据请求,第一非缓存写数据请求包含第一地址,第一非缓存写数据请求用于向节点申请与第一地址对应的第一数据缓冲区编号。
该管理模块501,还用于向第一处理器发送第二数据缓冲区编号,以指示第一处理器向缓存器发送第一数据。
该管理模块501,还用于向第一处理器发送第一完成响应,以指示第一处理器释放第一数据占用的缓冲区。
该管理模块501,还用于从第二处理器接收第二非缓存写数据请求并向节点发送第二非缓存写数据请求,第二非缓存写数据请求包含第一地址,第一地址用于节点确定缓存器存储的第一地址是否被打上独占标记。
标记存储模块502,用于确定第一地址被打上独占标记。
该标记存储模块502,还用于从节点接收第二完成响应,第二完成响应包括独占标记。
该标记存储模块502,还用于当该标记存储模块502存储的第一地址未被打上独占标记时,将第一地址打上独占标记。
该标记存储模块502,还用于从节点接收删除指令。
该标记存储模块502,还用于删除第一地址的独占标记,并向节点发送确认删除指令。
数据缓冲区编号接收模块503,用于从节点接收第三数据缓冲区编号。
数据处理模块504,用于当标记存储模块502确定存储有第一地址时,从第一处理器获取与第一非缓存写数据请求相对应的第一数据。
该数据处理模块504,还用于当数据缓冲区编号接收模块503接收到第一数据缓冲区编号时,向节点发送第一数据。
该数据处理模块504,还用于从第一处理器接收第一数据。
本申请实施例提供了一种节点,请参阅图7,该节点包括请求处理模块601、管理模块602、数据处理模块603、数据缓冲模块604、请求缓冲模块605。
该请求处理模块601与数据缓冲模块604、请求缓冲模块605分别相连。该请求处理模块601用于从缓存器接收非缓存写数据请求,并将请求发送至数据缓冲模块604和请求缓冲模块605。该数据缓冲模块604用于根据该非缓存写数据请求分配数据缓冲区编号,该请求缓冲模块605用于存储该非缓存写数据请求。该管理模块602与数据缓冲模块604互通,当数据缓冲模块604分配了数据缓冲区编号之后,该管理模块602可以向缓存器发送该数据缓冲区编号。该管理模块602用于向缓存器发送数据缓冲区编号、完成响应以及删除指令。该管理模块602还用于从缓存器接收确认删除指令。该管理模块602与请求处理模块601、数据处理模块603分别互通。该数据处理模块603用于从缓存器接收数据,并将数据发送至数据缓冲模块604。该数据缓冲模块604将数据存储在缓冲区中。该数据缓冲模块604与请求缓冲模块605还可以根据存储的数据和非缓存写数据请求将该数据写入下级节点。
具体的,该节点中各个模块的功能如下:
请求处理模块601,用于从第一缓存器接收第一非缓存写数据请求,第一非缓存写数据请求包含第一地址。
该请求处理模块601,还用于从第一缓存器接收第二非缓存写数据请求,第二非缓存器写数据请求包含第一地址。
该请求处理模块601,还用于从第二缓存器接收第三非缓存写数据请求,第三非缓存写数据请求包括第一地址,第二缓存器不同于第一缓存器。
管理模块602,用于确定存储有第一缓存器的编号与第一地址的对应关系,对应关系指示缓存器存储的第一地址被打上独占标记。
该管理模块602,还用于存储第一缓存器的编号与第一地址的对应关系。
该管理模块602,还用于向第一缓存器发送第三数据缓冲区编号和第二完成响应,第二完成响应包括独占标记。
该管理模块602,还用于当确定存储有第一缓存器的编号与第一地址的对应关系时,向第一缓存器发送删除指令,删除指令用于指示第一缓存器删除第一地址的独占标记,并向节点发送确认删除指令。
该管理模块602,还用于从缓存器接收确认删除指令。
该管理模块602,还用于根据确认删除指令删除存储的第一缓存器的编号与第一地址的对应关系。
数据处理模块603,用于接收与第一非缓存写数据请求相对应的第一数据。
数据缓冲模块604,用于根据请求处理模块接收到的第一非缓存写数据请求给第一处理器分配第一数据缓冲区编号,并指示管理模块向第一缓存器发送第一数据缓冲区编号。
数据缓冲模块604,还用于当数据处理模块接收到与第一非缓存写数据请求相对应的第一数据时,将第一数据写入第一数据缓冲区编号对应的数据缓冲区中,第一数据是第一缓存器确定第一缓存器中存储有第一地址时,从第一处理器获取的。
该数据缓冲模块604,还用于根据请求处理模块接收到的第二非缓存写数据请求分配第三数据缓冲区编号。
需要说明的是,在本申请中,缓存器可以是共享缓存,比如L3缓存;节点可以是存储控制器、总线控制器等,由于缓存器和节点主要由硬件电路实现,上述实施例中缓存器和节点所包含的各种模块(比如管理模块501、标记存储模块502、数据缓冲区编号接收模块503、数据处理模块504,请求处理模块601、管理模块602、数据处理模块603、数据缓冲模块604、请求缓冲模块605等)都是电路模块,对于本领域技术人员来说,在理解电路模块的功能之后设计对应的电路结构是容易的,因此,本申请对于这些电路模块的结构不做进一步说明。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (18)
1.一种处理非缓存写数据请求的方法,其特征在于,所述方法包括:
缓存器从第一处理器接收第一非缓存写数据请求并向节点发送所述第一非缓存写数据请求,所述第一非缓存写数据请求包含第一地址,所述第一非缓存写数据请求用于向所述节点申请与所述第一地址对应的第一数据缓冲区编号;
若所述缓存器确定所述缓存器中存储有所述第一地址,则所述缓存器从所述第一处理器获取与所述第一非缓存写数据请求相对应的第一数据;
当所述缓存器从所述节点接收到所述第一数据缓冲区编号时,所述缓存器向所述节点发送所述第一数据。
2.根据权利要求1所述的处理非缓存写数据请求的方法,其特征在于,所述缓存器向所述第一处理器获取与所述第一非缓存写数据请求相对应的第一数据包括:
所述缓存器向所述第一处理器发送第二数据缓冲区编号,以指示所述第一处理器向所述缓存器发送所述第一数据,所述第二数据缓冲区编号是所述缓存器根据所述第一非缓存写数据请求给所述第一处理器分配的;
所述缓存器从所述第一处理器接收所述第一数据。
3.根据权利要求2所述的处理非缓存写数据请求的方法,其特征在于,所述方法还包括:
所述缓存器确定所述缓存器中存储的所述第一地址被打上独占标记;
所述缓存器向所述第一处理器发送第一完成响应,以指示所述第一处理器释放所述第一数据占用的缓冲区。
4.根据权利要求3所述的处理非缓存写数据请求的方法,其特征在于,所述缓存器从第一处理器接收第一非缓存写数据请求之前,所述方法还包括:
所述缓存器从第二处理器接收第二非缓存写数据请求并向所述节点发送所述第二非缓存写数据请求,所述第二非缓存写数据请求包含所述第一地址,所述第一地址用于所述节点确定所述缓存器存储的所述第一地址是否被打上所述独占标记;
所述缓存器从所述节点接收第三数据缓冲区编号和第二完成响应,所述第二完成响应包括所述独占标记;
若所述缓存器中存储的所述第一地址未被打上所述独占标记,则所述缓存器将所述第一地址打上所述独占标记。
5.根据权利要求3或4所述的处理非缓存写数据请求的方法,所述方法还包括:
所述缓存器从所述节点接收删除指令;
所述缓存器删除所述第一地址的所述独占标记,并向所述节点发送确认删除指令。
6.一种处理非缓存写数据请求的方法,其特征在于,所述方法包括:
节点从第一缓存器接收第一非缓存写数据请求,所述第一非缓存写数据请求包含第一地址;
所述节点根据所述第一非缓存写数据请求给第一处理器分配第一数据缓冲区编号,并向所述第一缓存器发送所述第一数据缓冲区编号;
当所述节点从所述第一缓存器接收到与所述第一非缓存写数据请求相对应的第一数据时,所述节点将所述第一数据写入与所述第一数据缓冲区编号对应的数据缓冲区中,所述第一数据是所述第一缓存器确定所述第一缓存器中存储有所述第一地址时,从所述第一处理器获取的。
7.根据权利要求6所述的处理非缓存写数据请求的方法,其特征在于,所述节点从第一缓存器接收第一非缓存写数据请求之后,所述方法还包括:
所述节点确定存储有所述第一缓存器的编号与所述第一地址的对应关系,所述对应关系指示所述第一缓存器存储的所述第一地址被打上独占标记。
8.根据权利要求7所述的处理非缓存写数据请求的方法,其特征在于,所述节点从第一缓存器接收第一非缓存写数据请求之前,所述方法还包括:
所述节点从所述第一缓存器接收第二非缓存写数据请求,所述第二非缓存写数据请求包含所述第一地址;
所述节点存储所述第一缓存器的编号与所述第一地址的对应关系;
所述节点根据所述第二非缓存写数据请求分配第三数据缓冲区编号并向所述第一缓存器发送所述第三数据缓冲区编号和第二完成响应,所述第二完成响应包括所述独占标记。
9.根据权利要求7或8所述的处理非缓存写数据请求的方法,其特征在于,所述方法还包括:
所述节点从第二缓存器接收第三非缓存写数据请求,所述第三非缓存写数据请求包括所述第一地址,所述第二缓存器不同于所述第一缓存器;
若所述节点确定所述节点存储有所述第一缓存器的编号与所述第一地址的对应关系,所述节点向所述第一缓存器发送删除指令,所述删除指令用于指示所述第一缓存器删除所述第一地址的所述独占标记,并向所述节点发送确认删除指令;
所述节点从所述第一缓存器接收所述确认删除指令;
所述节点根据所述确认删除指令删除所述第一缓存器的编号与所述第一地址的对应关系。
10.一种缓存器,其特征在于,所述缓存器包括:
管理模块,用于从第一处理器接收第一非缓存写数据请求并向节点发送所述第一非缓存写数据请求,所述第一非缓存写数据请求包含第一地址,所述第一非缓存写数据请求用于向所述节点申请与所述第一地址对应的第一数据缓冲区编号;
数据处理模块,用于当标记存储模块确定存储有所述第一地址时,从所述第一处理器获取与所述第一非缓存写数据请求相对应的第一数据;
所述数据处理模块,还用于当数据缓冲区编号接收模块接收到所述第一数据缓冲区编号时,向所述节点发送所述第一数据。
11.根据权利要求10所述的缓存器,其特征在于,
所述管理模块,还用于向所述第一处理器发送第二数据缓冲区编号,以指示所述第一处理器向所述缓存器发送所述第一数据;
所述数据处理模块,还用于从所述第一处理器接收所述第一数据。
12.根据权利要求11所述的缓存器,其特征在于,
所述标记存储模块,用于确定所述第一地址被打上独占标记;
所述管理模块,还用于向所述第一处理器发送第一完成响应,以指示所述第一处理器释放所述第一数据占用的缓冲区。
13.根据权利要求12所述的缓存器,其特征在于,
所述管理模块,还用于从第二处理器接收第二非缓存写数据请求并向所述节点发送所述第二非缓存写数据请求,所述第二非缓存写数据请求包含所述第一地址,所述第一地址用于所述节点确定所述缓存器存储的所述第一地址是否被打上所述独占标记;
所述数据缓冲区编号接收模块,用于从所述节点接收第三数据缓冲区编号;
所述标记存储模块,还用于从所述节点接收第二完成响应,所述第二完成响应包括所述独占标记;
所述标记存储模块,还用于当所述标记存储模块存储的所述第一地址未被打上所述独占标记时,将所述第一地址打上所述独占标记。
14.根据权利要求12或13所述的缓存器,其特征在于,
所述标记存储模块,还用于从所述节点接收删除指令;
所述标记存储模块,还用于删除所述第一地址的所述独占标记,并向所述节点发送确认删除指令。
15.一种节点,其特征在于,所述节点包括:
请求处理模块,用于从第一缓存器接收第一非缓存写数据请求,所述第一非缓存写数据请求包含第一地址;
数据缓冲模块,用于根据所述请求处理模块接收到的所述第一非缓存写数据请求给第一处理器分配第一数据缓冲区编号,并指示管理模块向所述第一缓存器发送所述第一数据缓冲区编号;
所述数据缓冲模块,还用于当数据处理模块接收到与所述第一非缓存写数据请求相对应的第一数据时,将所述第一数据写入所述第一数据缓冲区编号对应的数据缓冲区中,所述第一数据是所述第一缓存器确定所述第一缓存器中存储有所述第一地址时,从所述第一处理器获取的。
16.根据权利要求15所述的节点,其特征在于,
所述管理模块,用于确定存储有所述第一缓存器的编号与所述第一地址的对应关系,所述对应关系指示所述第一缓存器存储的所述第一地址被打上独占标记。
17.根据权利要求16所述的节点,其特征在于,
所述请求处理模块,还用于从所述第一缓存器接收第二非缓存写数据请求,所述第二非缓存器写数据请求包含所述第一地址;
所述管理模块,还用于存储所述第一缓存器的编号与所述第一地址的对应关系;
所述数据缓冲模块,还用于根据所述请求处理模块接收到的所述第二非缓存写数据请求分配第三数据缓冲区编号;
所述管理模块,还用于向所述第一缓存器发送所述第三数据缓冲区编号和第二完成响应,所述第二完成响应包括所述独占标记。
18.根据权利要求16或17所述的节点,其特征在于,
所述请求处理模块,还用于从第二缓存器接收第三非缓存写数据请求,所述第三非缓存写数据请求包括所述第一地址,所述第二缓存器不同于所述第一缓存器;
所述管理模块,还用于当确定存储有所述第一缓存器的编号与所述第一地址的对应关系时,向所述第一缓存器发送删除指令,所述删除指令用于指示所述第一缓存器删除所述第一地址的所述独占标记,并向所述节点发送确认删除指令;
所述管理模块,还用于从所述第一缓存器接收所述确认删除指令;
所述管理模块,还用于根据所述确认删除指令删除存储的所述第一缓存器的编号与所述第一地址的对应关系。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/120252 WO2021097802A1 (zh) | 2019-11-22 | 2019-11-22 | 处理非缓存写数据请求的方法、缓存器和节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114731282A CN114731282A (zh) | 2022-07-08 |
CN114731282B true CN114731282B (zh) | 2023-06-02 |
Family
ID=75979899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980102202.8A Active CN114731282B (zh) | 2019-11-22 | 2019-11-22 | 处理非缓存写数据请求的方法、缓存器和节点 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11789866B2 (zh) |
EP (1) | EP4054140A4 (zh) |
CN (1) | CN114731282B (zh) |
WO (1) | WO2021097802A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855194A (zh) * | 2012-08-08 | 2013-01-02 | 北京君正集成电路股份有限公司 | 数据存储方法和存储器 |
CN103649901A (zh) * | 2013-07-26 | 2014-03-19 | 华为技术有限公司 | 数据发送方法、数据接收方法和存储设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099913B1 (en) * | 2000-08-31 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Speculative directory writes in a directory based cache coherent nonuniform memory access protocol |
US6973536B1 (en) * | 2001-08-31 | 2005-12-06 | Oracle Corporation | Self-adaptive hybrid cache |
JP5049834B2 (ja) * | 2008-03-26 | 2012-10-17 | 株式会社東芝 | データ受信装置、データ受信方法およびデータ処理プログラム |
CN101409715B (zh) * | 2008-10-22 | 2012-04-18 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及*** |
WO2011157150A2 (zh) * | 2011-05-31 | 2011-12-22 | 华为技术有限公司 | 数据处理方法、缓存节点、协作控制器及*** |
US9235519B2 (en) * | 2012-07-30 | 2016-01-12 | Futurewei Technologies, Inc. | Method for peer to peer cache forwarding |
CN103729304B (zh) | 2012-10-11 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN103870204B (zh) * | 2012-12-11 | 2018-01-09 | 华为技术有限公司 | 一种cache中数据写入和读取方法、cache控制器 |
US9170946B2 (en) * | 2012-12-21 | 2015-10-27 | Intel Corporation | Directory cache supporting non-atomic input/output operations |
US10275375B2 (en) * | 2013-03-10 | 2019-04-30 | Mellanox Technologies, Ltd. | Network interface controller with compression capabilities |
US9594707B2 (en) * | 2014-09-02 | 2017-03-14 | Unisys Corporation | Data input/output (I/O) handling for computer network communications links |
WO2016059715A1 (ja) * | 2014-10-17 | 2016-04-21 | 株式会社日立製作所 | 計算機システム |
CN105472023B (zh) * | 2014-12-31 | 2018-11-20 | 华为技术有限公司 | 一种远程直接存储器存取的方法及装置 |
WO2017040706A1 (en) | 2015-09-02 | 2017-03-09 | Cnex Labs, Inc. | Nvm express controller for remote access of memory and i/o over ethernet-type networks |
GR20180100189A (el) * | 2018-05-03 | 2020-01-22 | Arm Limited | Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理*** |
-
2019
- 2019-11-22 CN CN201980102202.8A patent/CN114731282B/zh active Active
- 2019-11-22 WO PCT/CN2019/120252 patent/WO2021097802A1/zh unknown
- 2019-11-22 EP EP19953302.7A patent/EP4054140A4/en active Pending
-
2022
- 2022-05-20 US US17/749,612 patent/US11789866B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855194A (zh) * | 2012-08-08 | 2013-01-02 | 北京君正集成电路股份有限公司 | 数据存储方法和存储器 |
CN103649901A (zh) * | 2013-07-26 | 2014-03-19 | 华为技术有限公司 | 数据发送方法、数据接收方法和存储设备 |
Also Published As
Publication number | Publication date |
---|---|
US11789866B2 (en) | 2023-10-17 |
WO2021097802A1 (zh) | 2021-05-27 |
CN114731282A (zh) | 2022-07-08 |
US20220276960A1 (en) | 2022-09-01 |
EP4054140A1 (en) | 2022-09-07 |
EP4054140A4 (en) | 2022-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10169080B2 (en) | Method for work scheduling in a multi-chip system | |
US9529532B2 (en) | Method and apparatus for memory allocation in a multi-node system | |
JP4235712B2 (ja) | ストレージシステムにおけるデータ転送方法 | |
US10592459B2 (en) | Method and system for ordering I/O access in a multi-node environment | |
US20150254182A1 (en) | Multi-core network processor interconnect with multi-node connection | |
WO2015061971A1 (zh) | 数据处理***和数据处理的方法 | |
US5781741A (en) | Message communications system in a parallel computer | |
US9372800B2 (en) | Inter-chip interconnect protocol for a multi-chip system | |
US10956347B2 (en) | Data transfer device, arithmetic processing device, and data transfer method | |
KR20180071967A (ko) | 데이터 처리 | |
CN111149097B (zh) | 一种主芯片、从芯片及芯片间的dma传输*** | |
JP2021515318A (ja) | NVMeベースのデータ読み取り方法、装置及びシステム | |
KR20150144545A (ko) | 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 | |
US9727521B2 (en) | Efficient CPU mailbox read access to GPU memory | |
US20150177985A1 (en) | Information processing device | |
CN114731282B (zh) | 处理非缓存写数据请求的方法、缓存器和节点 | |
WO2021081944A1 (zh) | 处理非缓存写数据请求的方法、缓存器和节点 | |
TWI493351B (zh) | 通用串列匯流排主機控制方法和通用串列匯流排主機控制器 | |
CN117234972A (zh) | 一种主机数据读取方法及*** | |
JP7363344B2 (ja) | メモリ制御装置、および制御方法 | |
TWI328746B (en) | A system for performing peer-to-peer data transfer | |
JP5958192B2 (ja) | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 | |
CN118175128A (zh) | 数据转发方法、装置及计算机可读存储介质 | |
JP2971119B2 (ja) | 複数プロセッサシステムにおける高速データ転送方式 | |
KR20070079450A (ko) | 이종버스간의 통신 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |