CN110059026A - 一种目录处理方法、装置及存储*** - Google Patents
一种目录处理方法、装置及存储*** Download PDFInfo
- Publication number
- CN110059026A CN110059026A CN201810053677.XA CN201810053677A CN110059026A CN 110059026 A CN110059026 A CN 110059026A CN 201810053677 A CN201810053677 A CN 201810053677A CN 110059026 A CN110059026 A CN 110059026A
- Authority
- CN
- China
- Prior art keywords
- request
- information
- back end
- directory entry
- memory address
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
-
- 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/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种目录处理方法、装置及存储***,用以解决现有目录处理方案存在的目录占用较多缓存的问题。方法包括:第一数据节点接收第二数据节点发送的第一请求;第一数据节点根据第一物理地址中的标签信息和索引信息在第一数据节点的目录中查找匹配的目录项;然后,在未查找到匹配的目录项时根据第一请求创建目录的第一目录项,第一目录项包括标签信息、第一指示信息、第一指针信息和第一状态信息,第一指示信息包含与N个内存地址一一对应的N个指示位,与第一内存地址对应的第一指示位置为有效,第一指针信息用于指示置为有效的指示位对应的内存地址中的数据被第二数据节点读取。
Description
技术领域
本申请实施例涉及存储技术领域,尤其涉及一种目录处理方法、装置及存储***。
背景技术
在存储技术领域,为了实现多个数据节点之间的数据共享,经常会涉及多个数据节点共享内存的场景。比如,在图1所示的分布式共享内存(distributed shared memory,DSM)***中,节点1~节点n共享同一存储空间(共享内存),其中,每个节点可以表示一个具有存储功能的设备;再比如,图2所示的计算机设备的处理器包含多个处理器核,每个处理器核均分配有各自的私有缓存以及双列直插式存储模块(dual-inline-memory-modules,DIMM)。其中,DIMM可视为共享内存,处理器核可通过集成计算机内部网络(integratedcomputer network,ICN)访问其他处理器核的DIMM。
以图2所示的计算机设备为例,由于处理器核可通过ICN访问其他处理器核的DIMM,例如处理器核2可访问处理器核1的DIMM,那么处理器核2可能会对处理器核1的DIMM中的数据做修改,该修改被保存在处理器核2的私有缓存中。也就是说,处理器核1的DIMM中保存的并不是该数据的最新版本。此时,若其他处理器核(例如处理器核n)请求访问该数据,处理器核1可根据自身的私有缓存中保存的目录确定该数据被处理器核2访问过,并指示处理器核n向处理器核2发起侦听,从而获取该数据的最新版本。其中,处理器核1的私有缓存中保存的目录记录有处理器核1的DIMM中保存的数据被其他处理器核访问的情况。
现有技术中,数据节点的缓存中保存的目录的形式可以如图3所示。其中,该目录包含m个Set,每个Set中包含n个Way,其中,Set可以理解为该目录的行向量、Way可以理解为该目录的列向量。不难看出,该目录包括n*m个数据块(block),每个block代表一个目录项。其中,每个目录项包含标签信息Tag、状态信息Sta和指针信息Ptr三个部分,其中Tag用于进行目录项匹配,Sta表示该目录项对应的数据的状态(例如共享状态或独占状态),Ptr表示该目录项对应的数据被哪个数据节点访问。当某个数据节点接收到读取物理地址(physical address,PA)上的数据的请求时,首先根据PA中的索引信息Index查找目录,确定m个Set中和Index匹配的Set;根据PA中的标签信息Tag确定该Set中与Tag匹配的目录项,从而确定与本次请求匹配的目录项;然后,通过该匹配的目录项中的Sta和Ptr可以确定该数据被哪个数据节点访问以及该数据的状态。例如,当Sta为E(即exclusive)、Ptr为P1时,表示该数据被处理器核1(P1)独占。
在上述方案中,若多个内存地址上的数据均被其他数据节点访问过,则需要针对每个内存地址创建一个目录项,从而导致目录占用较多缓存、造成资源浪费。
综上,现有技术中提供的目录处理方案中存在目录占用较多缓存,从而导致资源浪费的问题。
发明内容
本申请实施例提供一种目录处理方法、装置及存储***,用以解决上述目录处理方案存在的目录占用较多缓存,从而导致资源浪费的问题。
第一方面,本申请实施例提供一种目录处理方法,该方法包括如下步骤:第一数据节点接收第二数据节点发送的第一请求,该第一请求用于指示第二数据节点请求读取第一物理地址上的第一数据,其中第一物理地址包含三个部分:标签信息、索引信息和第一关联地址信息,第一关联地址信息用于指示第一物理地址对应第一数据节点的内存的N(N>1)个内存地址中的第一内存地址;第一数据节点根据标签信息和索引信息在第一数据节点的目录中查找匹配的目录项;然后,第一数据节点在未查找到匹配的目录项时根据第一请求创建目录的第一目录项。
其中,第一目录项包括四个部分:标签信息、第一指示信息、第一指针信息和第一状态信息,第一指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第一指针信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取。
采用上述方案,由于创建的第一目录项中包含第一指示信息,第一指示信息包含N个指示位,N个指示位中置为有效的指示位对应的内存地址中的数据被第二数据节点访问。因而,通过第一目录项不仅能记录第一内存地址上的数据被第二数据节点访问的情况,还可以记录N个内存地址中除第一内存地址之外的其他内存地址被第二数据节点访问的情况。也就是说,与现有技术相比,虽然采用上述方案创建的第一目录项中包含第一指示信息,而第一指示信息会占用若干个比特位(例如占用N个比特位),但是,现有技术中创建的一个目录项仅可用于记录一个内存地址上的数据被第二数据节点访问的情况,而上述方案中创建的第一目录项可用于记录N个内存地址上的数据被第二数据节点访问的情况。因而采用上述方案可以减小目录占用的缓存容量,减少资源浪费。
特别地,在第二数据节点连续访问第一数据节点上的多个内存地址上的数据时,此时多个内存地址上的数据是被同一数据节点访问,且访问请求的类型是相同的。因此,多个内存地址中,每N个内存地址被第二数据节点访问的情况可以记录在一个目录项中,从而更大程度地减少目录所占用的缓存。
其中,第一状态信息用于指示第一请求的类型,第一请求的类型为独占请求或共享请求。
在采用上述方案创建第一目录项后,第一数据节点可在接收到其它读取数据的请求时,判断是复用第一目录项记录相关数据的被读取的情况,还是创建新的目录项记录相关数据的被读取的情况。下面列举其中的四种场景:
第一种场景
在一种可能的设计中,在第一数据节点根据第一请求创建目录的第一目录项之后,第一数据节点接收到第二数据节点发送的第二请求,该第二请求与第一请求的类型相同,该第二请求用于指示第二数据节点请求读取第二物理地址上的第二数据,第二物理地址包含标签信息、索引信息和第二关联地址信息,其中的第二关联地址信息用于指示第二物理地址对应N个内存地址中的第二内存地址;第一数据节点根据第二请求在目录中查找匹配的目录项,查找得到第一目录项;然后,第一数据节点可根据第二请求,将第一指示信息中与第二内存地址对应的第二指示位置为有效,从而将第二数据节点读取第二数据的情况记录在第一目录项中。
其中,第一数据节点根据第二请求在目录中查找匹配的目录项,查找得到第一目录项,其具体方式可以是:第一数据节点根据标签信息和索引信息索引得到第一目录项;第一数据节点确定第一目录项中的第一指针信息指示的数据节点为发送第二请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第二请求的类型相同;第一数据节点确定所述第一目录项为匹配的目录项。
在第一种场景中,第二数据节点向第一数据节点发送第二请求,请求读取N个内存地址中的第二内存地址上的数据,且第二请求与第一请求的类型相同。结合以上对第一目录项的结构的介绍可知,在第一种场景中,只需将第一目录项的第一指示信息中与第二内存地址对应的指示位置为有效,即可表示出第二内存地址上的数据被第二数据节点读取,以及读取请求(即第二请求)的类型。通过这种方式,将现有技术中需要通过建立新目录项来记录的数据读取情况,通过修改第一目录项中的第二指示位来表示,从而可以减小目录占用的缓存、避免资源浪费。尤其是在第二数据节点连续访问第一数据节点多个内存地址上的数据时,通过这种方式,可以将多个内存地址中每N个内存地址上的数据被第二数据节点访问的情况记录在一个目录项中,从而更大程度地减小目录占用的缓存。
第二种场景
在一种可能的设计中,在第一数据节点根据第一请求创建目录的第一目录项之后,第一数据节点可接收第二数据节点发送的第三请求,该第三请求与第一请求的类型不相同,该第三请求用于指示第二数据节点请求读取第三物理地址上的第三数据,第三物理地址包含标签信息、索引信息和第三关联地址信息,第三关联地址信息用于指示第三物理地址对应N个内存地址中的第三内存地址;第一数据节点根据第三请求在目录中查找匹配的目录项;然后,第一数据节点在未查找到匹配的目录项时可根据第三请求创建该目录的第二目录项,第二目录项包括标签信息、第二指示信息、第二指针信息和第二状态信息四个部分;其中的第二指示信息包括与N个内存地址一一对应的N个指示位,该N个指示位中与第三内存地址对应的第三指示位置为有效、除第三指示位之外的其他指示位置为无效,其中的第二指针信息用于指示第二指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取,其中的第二状态信息用于指示第三请求的类型。
其中,第一数据节点根据第三请求在目录中查找匹配的目录项,其具体方式可以是:第一数据节点根据标签信息和索引信息查找到第一目录项;第一数据节点确定第一目录项中的第一指针信息指示的数据节点为发送第三请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第三请求的类型不相同;第一数据节点则确定未查找到匹配的目录项。
在第二种场景中,第二数据节点向第一数据节点发送第三请求,读取N个内存地址中的第三内存地址上的数据,且第三请求与第一请求的类型不相同。结合以上对第一目录项的结构可知,由于第一目录项中的第一状态信息指示的是第一请求的类型,若第三请求与第一请求的类型不相同,则无法复用第一目录项来记录第三请求所指示的数据读取情况。
对于在第二种场景中创建的第二目录项,若第一数据节点在创建第二目录项之后,接收到第二数据节点发送的、与第三请求的类型相同的读取请求,以读取N个内存地址中任一内存地址上的数据,则可以复用第二目录项。也就是说,创建的第二目录项虽然占用了第一数据节点的缓存,但是创建的第二目录项仍可以在第一数据节点接收到其他请求时被复用,从而可以达到减小目录占用的缓存的效果。
第三种场景
在一种可能的设计中,在第一数据节点根据第一请求创建目录的第一目录项之后,第一数据节点可接收第三数据节点发送的第四请求,第四请求用于指示第三数据节点请求读取第四物理地址上的第四数据,该第四物理地址包含三个部分:标签信息、索引信息和第四关联地址信息,其中的第四关联地址信息用于指示第四物理地址对应N个内存地址中的第四内存地址;第一数据节点根据第四请求在目录中查找匹配的目录项;然后,第一数据节点在未查找到匹配的目录项时可根据第四请求创建该目录的第三目录项,第三目录项包括标签信息、第三指示信息、第三指针信息和第三状态信息,其中的第三指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第四内存地址对应的第四指示位置为有效、除第四指示位之外的其他指示位置为无效,其中的第三指针信息用于指示第三指示信息中置为有效的指示位对应的内存地址中存储的数据被第三数据节点读取,其中的第三状态信息用于指示第四请求的类型。
其中,第一数据节点根据第四请求在目录中查找匹配的目录项,其具体实现方式可以是:第一数据节点根据标签信息和索引信息查找到第一目录项,然后确定第一目录项中的第一指针信息指示的数据节点不是发送第四请求的第三数据节点;第一数据节点确定未查找到匹配的目录项。
在第三种场景中,第三数据节点向第一数据节点发送第四请求,读取N个内存地址中的第四内存地址上的数据。结合以上对第一目录项的结构可知,由于第一目录项中的第一指针信息指示的是第二数据节点,发送第四请求的第三数据节点与第一指针信息指示的数据节点不同,因而无法复用第一目录项来记录第四请求所指示的数据读取情况。
对于在第三种场景况中创建的第三目录项,若第一数据节点在创建第三目录项之后,接收到第三数据节点发送的、与第四请求的类型相同的读取请求,以读取N个内存地址中任一内存地址上的数据,则可以复用第三目录项。也就是说,创建的第三目录项虽然占用了第一数据节点的缓存,但是创建的第三目录项仍可以在第一数据节点接收到其他请求时被复用,从而可以达到减小目录占用的缓存的效果。
第四种场景
在一种可能的设计中,在第一数据节点根据第一请求创建目录的第一目录项之后,第一数据节点可接收第四数据节点发送的第五请求,该第五请求用于指示第四数据节点请求读取第一数据;第一数据节点根据第五请求在目录查找匹配的目录项,查找得到第一目录项;然后,第一数据节点可在根据第一目录项确定第一数据被第二数据节点读取后,通知第四数据节点向第二数据节点发起侦听,以读取第一数据。
在第四种场景中,第一数据节点接收到第五请求后,通过查找目录得到的第一目录项可以确定:第四数据节点请求读取的第一数据被第二数据节点读取。因此,若要读取到第一数据的最新版本,第四数据节点需向第二数据节点发起侦听,从而获取第一数据。采用这种方式,第一数据节点通过查找匹配的目录项获取相关信息,可以使得第四数据节点获取到第一数据。
此外,在第一数据节点通知第四数据节点向第二数据节点发起侦听并读取到第一数据后,第一数据节点还需记录第一数据被读取的情况,根据第一请求和第五请求的类型的不同,第一数据节点记录第一数据被读取的情况的方式可以是:
方式一
若第五请求的类型为独占请求,第一数据节点根据第五请求,将第一指示信息中的第一指示位置为无效,并创建该目录的第四目录项,该第四目录项包括标签信息、第四指示信息、第四指针信息和第四状态信息;其中,第四指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第四指针信息用于指示第四指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第四状态信息用于指示第五请求的类型。
也就是说,若第五请求为独占请求,则第四数据节点独占第一数据。此时,将第一指示信息中的第一指示位置为无效,即代表此时第二数据节点中不再保存有第一数据的最新版本。而第一数据节点创建的第四目录项,则可用于指示此时第四数据节点独占有第一数据。
方式二
若第五请求的类型为共享请求且第一请求的类型为共享请求,第一数据节点根据第五请求创建该目录的第五目录项,该第五目录项包括标签信息、第五指示信息、第五指针信息和第五状态信息;其中的第五指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第五指针信息用于指示第五指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第五状态信息用于指示第五请求的类型。
也就是说,若第五请求和第一请求均为共享请求,则第四数据节点和第二数据节点均共享有第一数据。由于第二数据节点共享有第一数据的情况已记录在第一目录项中,因此可通过创建第五目录项的方式记录第四数据节点共享有第一数据的情况。
方式三
若第五请求的类型为共享请求且第一请求的类型为独占请求,第一数据节点根据第五请求,将第一指示信息中的第一指示位置为无效,并根据第五请求创建该目录的第六目录项和第七目录项;其中,该第六目录项包括标签信息、第六指示信息、第六指针信息和第六状态信息;其中的第六指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第六指针信息用于指示第六指示信息中置为有效的指示位对应的内存地址中存储的数据被第四数据节点读取,第六状态信息用于指示第五请求的类型。此外,该第七目录项包括标签信息、第七指示信息、第七指针信息和第七状态信息;其中的第七指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第七指针信息用于指示第七指示信息中置为有效的指示位对应的内存地址中存储的数据被第二数据节点读取,第七状态信息用于指示第五请求的类型。
也就是说,若第五请求为共享请求且第一请求为独占请求,则第四数据节点发送第五请求并得到响应后,第四数据节点和第二数据节点均共享有第一数据。第一目录项中记录的第二数据节点独占第一数据的情况已失效,因此可将第一指示信息中的第一指示位置为无效。同时,创建第六目录项和第七目录项,来分别指示第四数据节点和第二数据节点共享第一数据的情况。
需要说明的是,实际实现时,可能仅出现上述四种场景中的一种场景,也可能出现上述四种场景中的多种场景,本申请实施例中对此不做限定。
第二方面,本申请提供了一种目录处理装置,该装置具有实现上述第一方面方法示例的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或所述软件包括一个或多个与上述功能相对应的模块。
在一个可能的设计中,所述目录处理装置的结构中包括收发单元和处理单元,这些单元可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第三方面,本申请实施例还提供了一种目录处理装置,该装置包括存储器、处理器以及通信模块;存储器,用于存储计算机可读程序;处理器,用于调用存储在存储器中的指令,执行上述方法示例中的相应功能;通信模块,用于执行上述方法示例中接收数据和/或发送数据的功能。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述指令在计算机上运行时,使得计算机执行上述第一方面以及第一方面任意可能的设计中的方法。
第五方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品在被计算机调用时,使得计算机执行第一方面以及第一方面任意可能的设计中的方法。
附图说明
图1为现有技术提供的一种DSM***的结构示意图;
图2为现有技术提供的一种计算机设备的结构示意图;
图3为现有技术提供的一种目录处理方案的示意图;
图4为本申请实施例提供的一种存储***的结构示意图;
图5为本申请实施例提供的一种目录处理方法的流程示意图;
图6为本申请实施例提供的一种第一物理地址的结构示意图;
图7为本申请实施例提供的一种第一目录项的结构示意图;
图8为本申请实施例提供的一种根据标签信息和索引信息索引到第一目录项的示意图;
图9为本申请实施例提供的一种第一目录项的结构示意图;
图10为本申请实施例提供的一种第二目录项的结构示意图;
图11为本申请实施例提供的一种第三目录项的结构示意图;
图12为本申请实施例提供的一种修改第一目录项的示意图;
图13为本申请实施例提供的另一种目录处理方法的流程示意图;
图14为本申请实施例提供的第一种目录项的结构示意图;
图15为本申请实施例提供的第二种目录项的结构示意图;
图16为本申请实施例提供的第三种目录项的结构示意图;
图17为本申请实施例提供的第四种目录项的结构示意图;
图18为本申请实施例提供的一种目录处理装置的结构示意图;
图19为本申请实施例提供的另一种目录处理装置的结构示意图;
图20为本申请实施例提供的另一种存储***的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
需要说明的是,本申请中所涉及的多个,是指两个或两个以上。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
首先对本申请实施例的应用场景作简要介绍。
本申请实施例提供的目录处理方案可应用于图4所示的存储***中。
图4所示的存储***包含N个数据节点,即第一数据节点、第二数据节点…第N数据节点。每个数据节点包含处理芯片、自身的私有缓存以及能够与其他数据节点实现数据共享的内存。
在图4所示的存储***中,处理芯片可以是中央处理器(central processingunit,CPU)、图形处理器(graphics processing unit,GPU)、人工智能处理器(artificialintelligence processor,AIP)等处理器,也可以是处理器核(Core)。当处理芯片为处理器时,N个数据节点可以分别属于不同的实体设备,图4所示的存储***可视为图1所示的DSM***;当处理芯片为处理器核时,N个数据节点可以属于同一实体设备,图4所示的存储***可以视为图2所示的计算机设备,此时,N个数据节点的内存可以位于同一存储芯片上,也可以位于不同的存储芯片上。
通过共享内存机制,某个数据节点可访问其他数据节点的内存,也可以对内存中的数据进行修改,并将该修改保存在自身的私有缓存中。例如,第二数据节点对第一数据节点的内存中的数据A做修改,并将该修改保存在第二数据节点的私有缓存中。也就是说,第一数据节点的内存中保存的数据A并不是数据A的最新版本。此时,若其他数据节点,比如第三数据节点,请求访问数据A,第一数据节点需要通过查找自身私有缓存中的目录来确定数据A的最新版本保存在第二数据节点中,并指示第三数据节点向第二数据节点发起侦听,从而获取数据A的最新版本。其中,数据节点的缓存中保存的目录记录有内存数据被其他数据节点访问和修改的情况。
在图4所示的存储***中,对于N个数据节点的共享内存,在数据节点间进行数据的访问和修改时,会涉及的目录的创建和修改操作,从而使得数据节点能够获取到最新版本的数据。
需要说明的是,对于图4所示的存储***中的某个数据节点来说,该数据节点可能还包含私有内存(即,不与其他数据节点共享的内存),由于本申请实施例提供的目录处理方案应用于共享内存场景,因此该部分私有内存不在本申请的考虑范围内。
现有的目录处理方案可以如图3所示。其中,该目录包含n*m个数据块(block),每个block代表一个目录项,每个目录项包含标签信息(Tag)、状态信息(Sta)和指针信息(Ptr)三个部分,其中Tag部分用于进行目录项匹配,Sta表示该目录项对应的数据的状态(例如共享状态或独占状态),Ptr表示该目录项对应的数据被哪个数据节点访问。当某个数据节点接收到读取PA上的数据的请求时,首先根据PA中的Index部分查找目录,确定m个Set中和Index匹配的Set;根据PA中的Tag部分确定该Set中与Tag匹配的目录项,从而确定与本次请求匹配的目录项;然后,通过该匹配的目录项中的Sta部分和Ptr部分可以确定该数据被哪个数据节点访问以及该数据的状态。例如,当Sta为E(即exclusive)、Ptr为P1时,表示该数据被处理器核1(P1)独占。为了使得目录项内容的表达更形象,此目录项的目录项内容也可以用E@P1表示。
在现有的目录处理方案中,对某个数据节点来说,只要该数据节点的内存中某个内存地址上的数据被其他数据节点访问,该数据节点就要为该内存地址创建一个目录项。例如,某个数据节点的内存中包含六个内存地址:内存地址0、内存地址1、内存地址2、内存地址3、内存地址4和内存地址5,其中内存地址0、内存地址4、内存地址5被其他数据节点访问,那么该数据节点需要分别为内存地址0、内存地址4、内存地址5这三个内存地址创建三个目录项。采用如上所述的现有技术方案,会导致目录占用较多缓存、造成资源浪费。
例如,对于包含128个数据节点的存储***来说,假设该***中物理地址为40位(Bit),将其低11Bit作为Set、高29位地址作为Tag。数据节点在查找目录时,先根据11Bit的Index查找到与Index匹配的Set,然后再根据29Bit的Tag查找到匹配的目录项。对于查找到的匹配的目录项,为了区分128个数据节点,其指针Ptr至少占用7Bit;为了区分数据的独占态、单共享态和多共享态,其状态Sta占用2Bit;此外,Tag可占用29Bit。因此,该目录项至少占用38Bit(7Bit+2Bit+29Bit=38Bit)。也就是说,对于一个内存地址来说,需要38Bit的容量来记录其目录项。
由于内存地址众多,一个内存地址相关的目录项就占用38Bit的缓存容量,无疑会导致目录占用较多缓存容量。从另一维度来说,由于数据占用的内存地址的连续性,大部分连续的内存地址对应的目录项的内容是相同的,对于一个相同的目录项内容,却要占用多个目录项来记录,必然会导致目录占用较多缓存容量。目录占用较多缓存容量时,不仅会造成资源浪费,还会影响数据节点的处理速率。
因此,本申请实施例提供一种目录处理方法、装置及存储***,用以解决上述目录处理方案存在的目录占用较多缓存,从而导致资源浪费的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。
参见图5,为本申请实施例提供的目录处理方法的流程示意图。该方法包括如下步骤:
S501:第一数据节点接收第二数据节点发送的第一请求。
S501中,第一请求用于指示第二数据节点请求读取第一物理地址上的第一数据,第一物理地址包含标签信息、索引信息和第一关联地址信息,第一关联地址信息用于指示第一物理地址对应第一数据节点的内存的N个内存地址中的第一内存地址,N>1。
其中,关于第一物理地址和第一内存地址可以做如下理解:第一物理地址是内存中存放第一数据的真实地址,是绝对地址;第一内存地址是程序可识别的一种逻辑地址。内存访问指令(即第一请求)中携带的地址为逻辑地址,第一数据节点的操作***中的内存管理单元将该逻辑地址映射到物理地址后,才可通过第一物理地址实现对第一数据的访问。由于第一物理地址和第一内存地址存在上述映射关系,因此本申请实施例中称“第一物理地址对应第一内存地址”。此外,逻辑地址和物理地址之间的转换为现有技术,此处不再赘述。
本申请实施例中,第一物理地址可以划分为三个部分:标签信息、索引信息和第一关联地址信息。其中,第一关联地址信息用于指示第一物理地址对应第一数据节点的内存的N个内存地址中的第一内存地址。也就是说,第二数据节点请求读取的是第一内存地址上的数据。
示例性地,第一物理地址的结构示意图可以如图6所示。图6中,Tag表示标签信息,Index表示索引信息,Asso表示第一关联地址信息。
此外,第一物理地址中的第一关联地址信息占用的比特位的数量和N有关:由于第一关联地址信息要指示N个内存地址中的第一内存地址,因此,第一关联地址信息占用的比特位的数量需要能够区分出N个内存地址。例如,N为4时,第一关联地址信息占用的比特位的数量至少为2;N为9时,第一关联地址信息占用的比特位的数量至少为3。
以N=4为例,假设N个内存地址分别为A0~A3。此时,第一关联地址信息占用的比特位的数量为2。那么,当第一关联地址信息为00时,第一关联地址信息可以对应N个内存地址中的A0;当第一关联地址信息为01时,第一关联地址信息可以对应N个内存地址中的A1;当第一关联地址信息为10时,第一关联地址信息可以对应N个内存地址中的A2;当第一关联地址信息为11时,第一关联地址信息可以对应N个内存地址中的A3。
需要说明的是,N的数量可以满足2m(m为正整数)的形式,例如可以是4、8、16等,也可以不满足2m的形式,例如可以是5、9、11等。本申请实施例中对此不作具体限定,只要第一关联地址信息占用的比特位的数量需要能够区分出N个内存地址即可。
同样需要说明的是,S501中,N个内存地址可以是连续的内存地址也可以是不连续的内存地址,本申请实施例中对此不做具体限定。
S502:第一数据节点根据索引信息和标签信息在第一数据节点的目录中查找匹配的目录项。
其中,第一数据节点的目录可以包含多个Way和多个Set。在根据索引信息和标签信息查找该目录中匹配的目录项时,先根据索引信息查找多个Set中与索引信息匹配的Set。若未查找到与索引信息匹配的Set,则说明N个内存地址中的任一内存地址均没有被其他数据节点访问过;若查找到与索引信息匹配的Set,则再根据标签信息查找该Set中与标签信息匹配的Way。若查找到与标签信息匹配的Way,则查找到的目录项中包含N个内存地址中任意一个或多个内存地址被其他数据节点访问的情况;若未查找到与标签信息匹配的Way,则说明N个内存地址中的任一内存地址均没有被其他数据节点访问过。
结合以上描述可知,S502中,根据索引信息和标签信息查找第一数据节点的目录,若未查找到匹配的目录项,其含义可以是:对于N个内存地址中的任一内存地址来说,第一数据节点的目录中均没有记录该内存地址相关的目录项。也就是说,N个内存地址中的任一内存地址均没有被其他数据节点访问过。
具体地,若第一数据节点根据第一请求未查找到匹配的目录项,其具体实现形式可以有两种:一、根据索引信息查找第一数据节点的目录,未查找到与索引信息匹配的Set;二、根据索引信息查找第一数据节点的目录,查找到与索引信息匹配的Set。然后,根据标签信息查找该匹配的Set,未查找到与标签信息匹配的Way。
S503:第一数据节点在未查找到匹配的目录项时根据第一请求创建目录的第一目录项。
其中,第一目录项包括标签信息、第一指示信息、第一指针信息和第一状态信息,第一指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第一指针信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取。
下面,对第一目录项中包括的不同信息逐一加以解释。
一、标签信息
第一目录项中的标签信息与第一物理地址中的标签信息的含义相同,即用于根据该标签信息确认与标签信息匹配的目录项。示例性地,标签信息可包含27Bit。
二、第一指针信息
第一目录项中的第一指针信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取。也就是说,第一指针信息需要指示第一指示信息中置为有效的指示位对应的内存地址中的数据被N个数据节点中的哪个数据节点所访问,那么,第一指针信息占用的比特位的数量需要能够区分N个数据节点。
示例性地,若存储***包含64个数据节点,那么为了区分这64个数据节点,第一指针信息至少占用6Bit,000000代表64个数据节点中的第一个数据节点,000001代表64个数据节点中的第二个数据节点……;若存储***包含128个数据节点,那么为了区分这128个数据节点,第一指针信息至少占用7Bit,0000000代表128个数据节点中的第一个数据节点,0000001代表128个数据节点中的第二个数据节点……。
需要说明的是,虽然本申请实施例中的第一指针信息和现有技术中的指针信息(Ptr)在表征形式上是相同的,但是其具体含义却略有不同:现有技术中,某个目录项对应的内存地址上的数据被指针信息(Ptr)指示的数据节点访问;而本申请实施例中,由于一个目录项记录有N个内存地址上的数据被第二数据节点访问的情况,因此第一指针信息指示的数据节点不一定访问过N个内存地址上的所有数据,第一指针信息指示的数据节点具体访问N个内存地址中哪一个或哪几个内存地址上的数据,需要根据第一指示信息包含的N个指示位的有效或无效的情况确定。
三、第一状态信息
本申请实施例中,第一状态信息用于指示第一请求的类型,第一请求的类型可以是独占请求,也可以是共享请求。若第一请求为独占请求,则第一状态信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据处于独占状态;若第一请求为共享请求,则第一状态信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据处于共享状态。
对于数据的独占状态和共享状态,顾名思义,独占状态代表第一指示信息中置为有效的指示位对应的内存地址中的数据被某个数据节点独占,共享状态代表第一指示信息中置为有效的指示位对应的内存地址中的数据被至少一个数据节点共享。具体地,共享状态又可以分为单共享状态和多共享状态。单共享状态代表该数据被一个数据节点共享;多共享状态代表该数据被多个数据节点共享。
为了更清楚地表达第一指示信息中置为有效的指示位对应的内存地址中的数据的状态(即第一状态信息),下面通过表1对第一状态信息的不同含义加以解释。
表1
第一状态信息的编码 | 状态 | 定义 |
11 | 独占状态 | 数据被某个数据节点独占 |
10 | 单共享状态 | 数据被一个数据节点共享 |
01 | 多共享状态 | 数据被多个数据节点共享 |
需要说明的是,在表1中,第一状态信息的不同编码仅为一种示例,实际实现时,不同状态的编码不限于表1中的形式。
四、第一指示信息
本申请实施例中创建的第一目录项,不仅包含标签信息、第一指针信息和第一状态信息,还包含第一指示信息。该第一指示信息包含N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效。由于第一指针信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取,那么,第一指示信息中的指示位按照上述方式置为有效或无效,其含义是:第一指示信息中置为有效的第一指示位对应的第一内存地址中的数据(即第一数据)被第二数据节点读取,第一指示信息中置为无效的指示位对应的内存地址中的数据没有被第二数据节点读取。
示例性地,假设第一指示信息包含4个指示位(即N=4),分别为vld0、vld1、vld2和vld3,这四个指示位分别对应的内存地址为A0、A1、A2和A3。若vld0置为有效,则表示A0上的数据被第二数据节点读取,A1、A2和A3上的数据没有被第二数据节点读取;若vld2置为有效,则表示A2上的数据被第二数据节点读取,A0、A1和A3上的数据没有被第二数据节点读取;若vld0和vld1置为有效,则表示A0和A1上的数据被第二数据节点读取,A2和A3上的数据没有被第二数据节点读取。
不难看出,第一目录项中包含的第一指示信息可用于指示N个内存地址上的数据被第二数据节点访问的情况。也就是说,S503中创建的第一目录项可用于记录N个内存地址上的数据被第二数据节点访问的情况。
需要说明的是,由于第一指示信息中包含N个指示位中的每个指示位仅有有效和无效两种状态,因此每个指示位仅占用1Bit即可,例如某个指示位为1时代表该指示位有效,某个指示位为0时代表该指示位无效。那么,第一指示信息占用的比特位数量为N个即可。
与现有技术相比,虽然本申请实施例中创建的第一目录项中包含第一指示信息,而第一指示信息在第一目录项中多占用N个比特位,但是,现有技术中一个目录项仅用于记录一个内存地址上的数据被其他数据节点(例如第二数据节点)访问的情况,而本申请实施例中创建的第一目录项可用于记录N个内存地址上的数据被第二数据节点访问的情况。
下面将以具体示例说明本申请实施例中创建的目录项为何能减少目录所占用的缓存。假设存储***中包含128个数据节点,那么在创建的目录项中,为了区分这128个数据节点,指针信息至少占用7Bit;为了区分不同的数据状态(例如独占状态、单共享状态、多共享状态),状态信息至少占用2Bit;假设标签信息占用27Bit。那么,采用现有技术提供的方案,记录一个内存地址被其他数据节点访问情况的目录项至少占用36Bit。而采用本申请实施例提供的方案,假设N=4,那么记录四个内存地址被其他数据节点访问情况的目录项至少占用40Bit。若第一数据节点的目录中需要记录11000*16个内存地址的数据(即目录中包含11000个Set,每个Set包含16个Way),那么采用现有技术的方案,第一数据节点的目录占用的缓存容量是11000*16*36Bit≈0.755MB,采用本申请实施例提供的方案,在理想情况下(即每N个内存地址的目录信息均可记录在一个目录项中的情况下),第一数据节点的目录占用的缓存容量是11000*16*40Bit/4≈0.21MB。
由以上示例可知,采用本申请实施例提供的方案,可以减少目录所占用的缓存。尤其是在某个数据节点(例如可以是第二数据节点)连续访问第一数据节点的多个内存地址上的数据时,由于多个内存地址上的数据是被同一数据节点访问,且访问请求的类型是相同的,因而,多个内存地址中,每N个内存地址被该数据节点(例如可以是第二数据节点)访问的情况可以记录在一个目录项中,从而更大程度地减少目录所占用的缓存。
结合以上对第一目录项包含的标签信息、第一指示信息、第一指针信息和第一状态信息的描述,本申请实施例中创建的第一目录项的结构可以如图7所示。图7中,Tag表示标签信息,Sta表示第一状态信息,Ptr表示第一指针信息。此外,在图7所示的第一目录项中,还包含第一指示信息。
通过执行图5所示方法建立第一目录项后,若第一数据节点再次接收到读取N个内存地址中的其他内存地址上的数据的读取请求,或者接收到读取第一内存地址上的数据(即第一数据)的读取请求,则第一数据节点可以根据索引信息和标签信息在目录中查找到第一目录项。然后,第一数据节点可以根据该请求的类型和以及发送该请求的数据节点,判断是否可以复用第一目录项,来记录发送该请求的数据节点对相应数据的访问情况。
示例性地,当第一数据节点接收到的第一请求为独占(Exclusive)请求,第一数据节点根据索引信息和标签信息查找到第一目录项的过程可以如图8所示。图8中,物理地址PA包含标签信息Tag、索引信息Index和关联地址信息Asso。第一数据节点根据其中的索引信息和标签信息查找第一数据节点的目录,可以查找到第一目录项。假设N=4,那么索引到的第一目录项的结构可以如图8所示。其中,Tag表示标签信息,vld0、vld1、vld2和vld3表示第一指示信息包含的四个指示位,Sta表示第一状态信息,Ptr表示第一指针信息。其中,vld0置为有效,表示四个内存地址中的第一内存地址上的数据(即第一数据)被第二数据节点读取;Sta指示的第一状态信息用E表示,代表第一请求为独占请求,即代表第二数据节点独占第一内存地址上的数据(即第一数据);Ptr指示的第一指针信息用P2(即第二数据节点)表示,代表第一内存地址上的数据(即第一数据)被第二数据节点读取。
具体地,若接收到其他数据节点发送的读取请求,第一数据节点根据该请求的索引信息和标签信息查找到第一目录项之后,第一数据节点根据请求的类型和发送方的不同,执行的操作可以分为如下几种情况:
第一种情况
在第一数据节点执行S503根据第一请求创建目录的第一目录项之后,第一数据节点接收第二数据节点发送的第二请求。其中,第二请求与第一请求的类型相同,第二请求用于指示第二数据节点请求读取第二物理地址上的第二数据,第二物理地址包含标签信息、索引信息和第二关联地址信息,第二关联地址信息用于指示第二物理地址对应N个内存地址中的第二内存地址。然后,第一数据节点根据第二请求在目录中查找匹配的目录项,查找得到第一目录项。第一数据节点根据第二请求,将第一指示信息中与第二内存地址对应的第二指示位置为有效。
其中,第一数据节点根据第二请求在目录中查找匹配的目录项,查找得到第一目录项,具体可通过如下方式确定:第一数据节点根据标签信息和索引信息查找到第一目录项;第一数据节点确定第一目录项中的第一指针信息指示的数据节点为发送第二请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第二请求的类型相同;第一数据节点确定所述第一目录项为匹配的目录项。
也就是说,第一数据节点在根据标签信息和索引信息查找到第一目录项之后,是否可以复用第一目录项来记录第二请求所指示的数据读取情况,还需要对第二请求的发送方以及第二请求的类型作出判断:当第二请求的发送方与第一指针信息指示的数据节点(第二数据节点)一致、第二请求的类型与第一状态信息指示的类型(即第一请求的类型)一致时,可以复用第一目录项,即通过将第一指示信息中与第二内存地址对应的第二指示位置为有效,来记录第二请求所指示的数据读取情况。
具体地,若S503中创建的第一目录项的结构为图8中示出的第一目录项的结构,那么在第一种情况中复用第一目录项后,第一目录项的结构可以如图9所示。在图9所示的第一目录项中,与第一内存地址对应的vld0、与第二内存地址对应的vld1均置为有效,以指示第二数据节点(P2)访问了第一内存地址上的第一数据以及第二内存地址上的第二数据,且访问类型为第一请求的类型(即第二请求的类型)。
在第一种情况中,第二数据节点向第一数据节点发送第二请求,请求读取N个内存地址中的第二内存地址上的数据,且第二请求与第一请求的类型相同。结合以上对第一目录项的结构的介绍可知,在这种情况下,只需将第一目录项的第一指示信息中与第二内存地址对应的指示位置为有效,即可表示出第二内存地址上的数据被第二数据节点读取,以及读取请求(即第二请求)的类型。通过这种方式,将现有技术中需要通过建立新目录项来记录的数据读取情况,通过修改第一目录项中的第二指示位来表示,从而可以减小目录占用的缓存、避免资源浪费。尤其是在第二数据节点连续访问第一数据节点多个内存地址上的数据时,通过这种方式,可以将多个内存地址中每N个内存地址上的数据被第二数据节点访问的情况记录在一个目录项中,从而更大程度地减小目录占用的缓存。
第二种情况
在第一数据节点执行S503根据第一请求创建目录的第一目录项之后,第一数据节点接收第二数据节点发送的第三请求。其中,第三请求与第一请求的类型不相同,第三请求用于指示第二数据节点请求读取第三物理地址上的第三数据,第三物理地址包含标签信息、索引信息和第三关联地址信息,第三关联地址信息用于指示第三物理地址对应N个内存地址中的第三内存地址;然后,第一数据节点根据第三请求在目录中查找匹配的目录项;第一数据节点在未查找到匹配的目录项时可根据第三请求创建目录的第二目录项,第二目录项包括标签信息、第二指示信息、第二指针信息和第二状态信息;第二指示信息包括与N个内存地址一一对应的N个指示位,该N个指示位中与第三内存地址对应的第三指示位置为有效、除第三指示位之外的其他指示位置为无效,第二指针信息用于指示第二指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取,第二状态信息用于指示第三请求的类型。
其中,第一数据节点在目录中查找匹配的目录项,具体可通过如下方式确定:第一数据节点根据标签信息和索引信息查找到第一目录项;第一数据节点确定第一目录项中的第一指针信息指示的数据节点为发送第三请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第三请求的类型不相同;第一数据节点则确定未查找到匹配的目录项。
也就是说,第一数据节点在根据标签信息和索引信息查找到第一目录项之后,是否可以复用第一目录项来记录第二请求所指示的数据读取情况,还需要对第二请求的发送方以及第二请求的类型作出判断:当第二请求的发送方与第一指针信息指示的数据节点(第二数据节点)一致,但第二请求的类型与第一状态信息指示的类型(即第一请求的类型)一致时,不可以复用第一目录项。此时,需要创建一个第二目录项,来记录第二数据节点通过第三请求读取第三内存地址上的数据的情况。
具体地,在第二种情况中创建的第二目录项的结构可以参见图10所示。在图10所示的第二目录项中,与第三内存地址对应的vld2置为有效,以指示第二数据节点(P2)访问了第三内存地址上的第三数据,且访问类型为第三请求的类型,例如可以是用S表示的共享型(Share)。
在第二种情况中,第二数据节点向第一数据节点发送第三请求,读取N个内存地址中的第三内存地址上的数据,且第三请求与第一请求的类型不相同。结合以上对第一目录项的结构可知,由于第一目录项中的第一状态信息指示的是第一请求的类型,若第三请求与第一请求的类型不相同,则无法复用第一目录项来记录第三请求所指示的数据读取情况。
对于在第二种情况中创建的第二目录项,若第一数据节点在创建第二目录项之后,接收到第二数据节点发送的、与第三请求的类型相同的读取请求,以读取N个内存地址中任一内存地址上的数据,则可以复用第二目录项。复用第二目录项的方式可参照第一种情况中描述的复用第一目录项的方式,此处不再赘述。也就是说,创建的第二目录项虽然占用了第一数据节点的缓存,但是创建的第二目录项仍可以在第一数据节点接收到其他请求时被复用,从而可以达到减小目录占用的缓存的效果。
第三种情况
在第一数据节点执行S503根据第一请求创建目录的第一目录项之后,第一数据节点接收第三数据节点发送的第四请求。其中,第四请求用于指示第三数据节点请求读取第四物理地址上的第四数据,第四物理地址包含标签信息、索引信息和第四关联地址信息,第四关联地址信息用于指示第四物理地址对应N个内存地址中的第四内存地址。然后,第一数据节点根据第四请求在目录中查找匹配的目录项。第一数据节点在未查找到匹配的目录项时可根据第四请求创建目录的第三目录项,第三目录项包括标签信息、第三指示信息、第三指针信息和第三状态信息,第三指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第四内存地址对应的第四指示位置为有效、除第四指示位之外的其他指示位置为无效,第三指针信息用于指示第三指示信息中置为有效的指示位对应的内存地址中存储的数据被第三数据节点读取,第三状态信息用于指示第四请求的类型。
其中,第一数据节点根据第四请求在目录中查找匹配的目录项,具体实现方式可以是:第一数据节点根据标签信息和索引信息查找到第一目录项;第一数据节点确定第一目录项中的第一指针信息指示的数据节点不是发送第四请求的第三数据节点;第一数据节点确定未查找到匹配的目录项。
也就是说,第一数据节点在根据标签信息和索引信息查找到第一目录项之后,是否可以复用第一目录项来记录第二请求所指示的数据读取情况,还需要对第二请求的发送方以及第二请求的类型作出判断:当第二请求的发送方与第一指针信息指示的数据节点(第二数据节点)不一致时,无论第四请求与第一状态信息指示的类型(即第一请求的类型)是否相同,均不可以复用第一目录项。此时,需要创建一个第三目录项,来记录第三数据节点通过第四请求读取第四内存地址上的数据的情况。
具体地,在第三种情况中创建的第三目录项的结构可以参见图11所示。在图11所示的第三目录项中,与第四内存地址对应的vld3置为有效,以指示第三数据节点(P3)访问了第三内存地址上的第三数据,且访问类型为第三请求的类型。
在第三种情况中,第三数据节点向第一数据节点发送第四请求,读取N个内存地址中的第四内存地址上的数据。结合以上对第一目录项的结构可知,由于第一目录项中的第一指针信息指示的是第二数据节点,发送第四请求的第三数据节点与第一指针信息指示的数据节点不同,因而无法复用第一目录项来记录第四请求所指示的数据读取情况。
对于在第三种情况中创建的第三目录项,若第一数据节点在创建第三目录项之后,接收到第三数据节点发送的、与第四请求的类型相同的读取请求,以读取N个内存地址中任一内存地址上的数据,则可以复用第三目录项。复用第三目录项的方式可参照第一种情况中描述的复用第一目录项的方式,此处不再赘述。也就是说,创建的第三目录项虽然占用了第一数据节点的缓存,但是创建的第三目录项仍可以在第一数据节点接收到其他请求时被复用,从而可以达到减小目录占用的缓存的效果。
第四种情况
在第一数据节点执行S503根据第一请求创建目录的第一目录项之后,第一数据节点接收第四数据节点发送的第五请求。其中,第五请求用于指示第四数据节点请求读取第一数据。第一数据节点根据第五请求在目录查找匹配的目录项,查找得到第一目录项;然后,第一数据节点可在根据第一目录项确定第一数据被第二数据节点读取后,通知第四数据节点向第二数据节点发起侦听,以读取第一数据。
在第四种情况中,第一数据节点接收到第五请求后,通过查找目录得到的第一目录项可以确定:第四数据节点请求读取的第一数据被第二数据节点读取。因此,若要读取到第一数据的最新版本,第四数据节点需向第二数据节点发起侦听,从而获取第一数据。采用这种方式,第一数据节点通过查找匹配的目录项获取相关信息,可以使得第四数据节点获取到第一数据。
此外,在第一数据节点通知第四数据节点向第二数据节点发起侦听之后,第四数据节点获取到第一数据,即第一数据的最新版本保存在第四数据节点中。此时,第一数据节点需要对目录中的第一目录项进行修改,或者创建信息的目录项,来记录第一数据的访问情况的变化。具体地,第一数据节点对目录的处理可根据不同情况分成如下三种方式:
第一种方式
若第五请求的类型为独占请求,第一数据节点根据第五请求,将第一指示信息中的第一指示位置为无效,并创建目录的第四目录项。其中,第四目录项包括标签信息、第四指示信息、第四指针信息和第四状态信息;第四指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第四指针信息用于指示第四指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第四状态信息用于指示第五请求的类型。
也就是说,若第五请求为独占请求,则第四数据节点独占第一数据。此时,将第一指示信息中的第一指示位置为无效,即代表此时第二数据节点中不再保存有第一数据的最新版本。而第一数据节点创建的第四目录项,则可用于指示此时第四数据节点独占有第一数据。
需要说明的是,第一目录项中的第一指示信息包含N个指示位,若将第一指示位置为无效之前,N个指示位中仅有第一指示位置为有效,那么在将第一指示为置为无效后,N个指示位均处于无效状态。此时,第一目录项中的第一指针信息和第一状态信息对N个内存地址均无效,第一数据节点可以将第一目录项删除。在这种情况下,在第一种方式中需要删除一个第一目录项,然后再创建一个第四目录项。因此,为了节省开销、降低第一数据节点的处理负荷,可以通过修改第一目录项的内容来表达出第四数据节点独占有第一数据这一情况,而不必再创建第四目录项。
具体地,上述修改第一目录项的过程可以如图12所示。在图12中,第一目录项包含第四个指示位,在第一指示位置为无效之前,仅有第一指示位(即vld0)置为有效。那么,由于第四数据节点发送第五请求并得到响应后,第四数据节点独占第一数据,因而第一数据节点可将第一目录项的第一指示信息由第二数据节点(P2)修改为第四数据节点(P4),并将第一状态信息修改为独占态(E)(若第一状态信息为独占态则无需修改),从而指示第四数据节点独占有第一数据这一情况。
第二种方式
若第五请求的类型为共享请求且第一请求的类型为共享请求,第一数据节点根据第五请求创建目录的第五目录项,第五目录项包括标签信息、第五指示信息、第五指针信息和第五状态信息;第五指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第五指针信息用于指示第五指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第五状态信息用于指示第五请求的类型。
也就是说,若第五请求和第一请求均为共享请求,则第四数据节点和第二数据节点均共享有第一数据。由于第二数据节点共享有第一数据的情况已记录在第一目录项中,因此可通过创建第五目录项的方式记录第四数据节点共享有第一数据的情况。
第三种方式
若第五请求的类型为共享请求且第一请求的类型为独占请求,第一数据节点根据第五请求,将第一指示信息中的第一指示位置为无效,并根据第五请求创建目录的第六目录项和第七目录项;其中,第六目录项包括标签信息、第六指示信息、第六指针信息和第六状态信息;第六指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第六指针信息用于指示第六指示信息中置为有效的指示位对应的内存地址中存储的数据被第四数据节点读取,第六状态信息用于指示第五请求的类型;第七目录项包括标签信息、第七指示信息、第七指针信息和第七状态信息;第七指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第七指针信息用于指示第七指示信息中置为有效的指示位对应的内存地址中存储的数据被第二数据节点读取,第七状态信息用于指示第五请求的类型。
也就是说,若第五请求为共享请求且第一请求为独占请求,则第四数据节点发送第五请求并得到响应后,第四数据节点和第二数据节点均共享有第一数据。第一目录项中记录的第二数据节点独占第一数据的情况已失效,因此可将第一指示信息中的第一指示位置为无效。同时,创建第六目录项和第七目录项,来分别指示第四数据节点和第二数据节点共享第一数据的情况。
与第一种方式相同的是,如果在将第一指示信息的第一指示位置为无效之前,N个指示位中仅有第一指示位置为有效,则可通过修改第一目录项的方式来指示第二数据节点共享第一数据的情况,而不必再创建第七目录项,以节省开销、降低第一数据节点的处理负荷。具体处理过程可参照实现方式一中的相关描述,此处不再赘述。
下面,对以上描述的四种情况做一些补充说明。
以上列举的四种情况是指(除第一数据节点以外的)其他数据节点在发起对N个内存地址中的任一内存地址上的数据的读取请求后,第一数据节点所执行的操作。若其他数据节点请求读取N个内存地址之外的其他内存地址上的数据,那么根据该请求不会查找到第一目录项,也就不会涉及到第一目录项的修改或复用。
需要说明的是,在其他数据节点连续访问第一数据节点多个内存地址上的数据时,可以将多个内存地址中每N个内存地址上的数据被第二数据节点访问的情况记录在一个目录项中,此时N值越大,节省的缓存容量越多。但是,若其他数据节点访问连续的内存地址的数量较少,此时若N值设置的较大,会出现较多无法复用现有目录项的情况。因此,N值的设置可以根据具体应用场景进行设置。在本申请实施例的具体示例中,通常将N设置为4,主要是考虑到4可以表达成22的形式,即第一关联地址信息可通过2Bit表达,而且当N=4时,适用于多数应用场景。当然,N也可以设置为其他数值,本申请实施例中对此不做具体限定。
同样需要说明的是,虽然第二种情况、第三种情况和第四种情况中均需要创建新的目录项来记录其他数据节点访问第一数据节点的数据的情况,但是在实际实现时,由于读取程序的空间局部性,其他数据节点对第一数据节点的访问通常是对多个连续内存地址的访问。因此,在多数场景下,是可以通过第一种情况中描述的方式,即通过复用第一目录项的方式来记录其他数据节点对第一数据节点的访问情况,因而采用本申请实施例提供的目录处理方式可以达到减小目录占用的缓存的效果。
采用本申请实施例提供的目录处理方法,由于创建的第一目录项中包含第一指示信息,第一指示信息包含N个指示位,N个指示位中置为有效的指示位对应的内存地址中的数据被第二数据节点访问。因而,通过第一目录项不仅能记录第一内存地址上的数据被第二数据节点访问的情况,还可以记录N个内存地址中除第一内存地址之外的其他内存地址被第二数据节点访问的情况。也就是说,与现有技术相比,虽然本申请实施例中创建的第一目录项中包含第一指示信息,而第一指示信息会占用若干个比特位(例如占用N个比特位),但是,现有技术中创建的一个目录项仅可用于记录一个内存地址上的数据被第二数据节点访问的情况,而本申请实施例中创建的第一目录项可用于记录N个内存地址上的数据被第二数据节点访问的情况。因而采用本申请实施例提供的目录处理方法可以减小目录占用的缓存容量,减少资源浪费。
特别地,在第二数据节点连续访问第一数据节点上的多个内存地址上的数据时,此时多个内存地址上的数据是被同一数据节点访问,且访问请求的类型是相同的。因此,多个内存地址中,每N个内存地址被第二数据节点访问的情况可以记录在一个目录项中,从而更大程度地减少目录所占用的缓存。
基于以上实施例,本申请实施例还提供一种目录处理方法,该目录处理方法可视为图5所示方法的一个具体示例。
该方法应用于包含256个处理器的存储***。在该方法中,一个物理地址PA中用于查找目录的域段分别为TagA和IndexA,关联地址为处理器P0的内存地址A0~A3。其中,处理器P0为前述第一数据节点的一个具体示例。参见图13,该方法包括如下步骤:
1、处理器P1发起对A0地址的独占请求,处理器P0则在目录中创建一个目录项:记录TagA,关联地址指示位vld0置为有效,目录项内容为E@P1。
具体地,处理器P1发起对A0地址的独占请求对应的物理地址以及根据该独占请求创建的目录项可以如图14所示。图14中,E代表处理器P1发起的请求为独占请求,P1代表发起请求的处理器为处理器P1,关联地址指示位vld0置为有效代表处理器P1独占A0中的数据。
其中,vld0为前述第一指示位的一个具体示例。在图14所示的目录项中,由于存储***中包含256个处理器,因而目录项内容中的ptr(前述第一指针信息的一个具体示例)占用8Bit;由于请求类型包含独占、单共享和多共享三种,因而目录项内容中的sta(前述第一状态信息的一个具体示例)占用2Bit;由于关联的内存地址A0~A3为四个,因而第一指示信息(vld0、vld1、vld2和vld3)占用4Bit;此外,Tag占用27Bit。
2、处理器P1发起对A2地址的独占请求,处理器P0查找目录后发现TagA命中图14所示的目录项,且关联地址指示位vld2置为无效,则处理器P0在处理器P1获取数据后为其创建A2相关的目录项。由于目录项内容(E@P1)与步骤1创建的目录项(即图14所示的目录项)完全相同,因而可以直接复用步骤1创建的目录项(即图14所示的目录项),只需将关联地址指示位vld2置为有效即可。
具体地,处理器P1发起对A2地址的独占请求对应的物理地址以及根据该请求修改后的目录项可以如图15所示。
3、处理器P3发起对A1地址的独占请求,处理器P0查找目录后发现TagA命中步骤2修改后的目录项(图15所示的目录项),但是该目录的目录项内容为E@P1,而处理器P3发起A1地址的独占请求后,对应的目录项内容应为E@P3,因而无法复用图15所示的目录项,需要创建一个新的目录项。
具体地,处理器P3发起对A1地址的独占请求对应的物理地址以及根据该请求创建的目录项可以如图16所示。图16中,E代表处理器P3发起的请求为独占请求,P3代表发起请求的处理器为处理器P3,关联地址指示位vld1置为有效代表处理器P3独占A1中的数据。
此时,图15所示的目录项和图16所示的目录项同时存储于处理器P0的缓存中。
4、处理器P3发起对A2地址的独占请求,处理器P0通过查找目录发现A2地址上的数据被处理器P1独占,需要发起侦听进行协议处理。协议处理完成后(即处理器P3获取A2地址上的数据后),处理器P1缓存的A2地址上的数据无效,该数据交给处理器P3独占,需要为A2地址创建指向P3独占的目录项。此时,可通过将步骤2修改后的目录项(即图15所示的目录项)中的vld2置为无效,并将步骤3创建的目录项(即图16所示的目录项中)的vld2置为有效,实现上述过程,而无需创建新的目录项。
具体地,将图15所示的目录项中的vld2置为无效,并将图16所示的目录项中的vld2置为有效的过程,可以如图17所示。
需要说明的是,图13所示方法为图5所示方法的一个具体示例,图13所示方法中未详尽描述的实现方式可参见图5所示方法中的相关描述。
基于同一发明构思,本申请实施例还提供了一种目录处理装置,该目录处理装置可以实现图5对应的实施例提供的方法。参阅图18所示,该目录处理装置1800包括:
收发单元1801,用于接收第二数据节点发送的第一请求,第一请求用于指示第二数据节点请求读取第一物理地址上的第一数据,第一物理地址包含标签信息、索引信息和第一关联地址信息,第一关联地址信息用于指示第一物理地址对应装置1800的内存的N个内存地址中的第一内存地址,N>1。
处理单元1802,用于根据标签信息和索引信息在装置1800的目录中查找匹配的目录项。
处理单元1802,还用于在未查找到匹配的目录项时根据第一请求创建目录的第一目录项,第一目录项包括标签信息、第一指示信息、第一指针信息和第一状态信息,第一指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第一指针信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取。
可选地,第一状态信息用于指示第一请求的类型,第一请求的类型为独占请求;或者,第一请求的类型为共享请求。
可选地,收发单元1801还用于:在处理单元1802根据第一请求创建目录的第一目录项之后,接收第二数据节点发送的第二请求,第二请求与第一请求的类型相同,第二请求用于指示第二数据节点请求读取第二物理地址上的第二数据,第二物理地址包含标签信息、索引信息和第二关联地址信息,第二关联地址信息用于指示第二物理地址对应N个内存地址中的第二内存地址;
处理单元1802还用于:根据第二请求在目录中查找匹配的目录项,查找得到第一目录项;根据第二请求,将第一指示信息中与第二内存地址对应的第二指示位置为有效。
可选地,处理单元1802根据第二请求在目录中查找匹配的目录项,查找得到第一目录项时,具体用于:根据标签信息和索引信息查找到第一目录项;确定第一目录项中的第一指针信息指示的数据节点为发送第二请求的第二数据节点;并,确定第一目录项中的第一状态信息指示的第一请求的类型与第二请求的类型相同;确定所述第一目录项为匹配的目录项。
可选地,收发单元1801还用于:在处理单元1802根据第一请求创建目录的第一目录项之后,接收第二数据节点发送的第三请求,第三请求与第一请求的类型不相同,第三请求用于指示第二数据节点请求读取第三物理地址上的第三数据,第三物理地址包含标签信息、索引信息和第三关联地址信息,第三关联地址信息用于指示第三物理地址对应N个内存地址中的第三内存地址;
处理单元1802还用于:根据第三请求在目录中查找匹配的目录项;在未查找到匹配的目录项时根据第三请求创建目录的第二目录项,第二目录项包括标签信息、第二指示信息、第二指针信息和第二状态信息;第二指示信息包括与N个内存地址一一对应的N个指示位,该N个指示位中与第三内存地址对应的第三指示位置为有效、除第三指示位之外的其他指示位置为无效,第二指针信息用于指示第二指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取,第二状态信息用于指示第三请求的类型。
可选地,处理单元1802根据第三请求在目录中查找匹配的目录项时,具体用于:根据标签信息和索引信息查找到第一目录项;确定第一目录项中的第一指针信息指示的数据节点为发送第三请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第三请求的类型不相同;确定未查找到匹配的目录项。
可选地,收发单元1801还用于:在处理单元1802根据第一请求创建目录的第一目录项之后,接收第三数据节点发送的第四请求,第四请求用于指示第三数据节点请求读取第四物理地址上的第四数据,第四物理地址包含标签信息、索引信息和第四关联地址信息,第四关联地址信息用于指示第四物理地址对应N个内存地址中的第四内存地址;
处理单元1802还用于:根据第四请求在目录中查找匹配的目录项;在未查找到匹配的目录项时根据第四请求创建目录的第三目录项,第三目录项包括标签信息、第三指示信息、第三指针信息和第三状态信息,第三指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第四内存地址对应的第四指示位置为有效、除第四指示位之外的其他指示位置为无效,第三指针信息用于指示第三指示信息中置为有效的指示位对应的内存地址中存储的数据被第三数据节点读取,第三状态信息用于指示第四请求的类型。
可选地,处理单元1802根据第四请求在目录中查找匹配的目录项时,具体用于:根据标签信息和索引信息查找到第一目录项;确定第一目录项中的第一指针信息指示的数据节点不是发送第四请求的第三数据节点;确定未查找到匹配的目录项。
可选地,收发单元1801还用于:在处理单元1802根据第一请求创建目录的第一目录项之后,接收第四数据节点发送的第五请求,第五请求用于指示第四数据节点请求读取第一数据;
处理单元1802还用于:根据第五请求在目录中查找匹配的目录项,查找得到第一目录项;
收发单元1801还用于:在处理单元1802根据第一目录项确定所述第一数据被第二数据节点读取后,通知第四数据节点向第二数据节点发起侦听,以读取第一数据。
可选地,处理单元1802还用于:在收发单元1801通知第四数据节点向第二数据节点发起侦听之后,若第五请求的类型为独占请求,则根据第五请求,将第一指示信息中的第一指示位置为无效,并创建目录的第四目录项,第四目录项包括标签信息、第四指示信息、第四指针信息和第四状态信息;第四指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第四指针信息用于指示第四指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第四状态信息用于指示第五请求的类型;或者,
在收发单元1801通知第四数据节点向第二数据节点发起侦听之后,若第五请求的类型为共享请求且第一请求的类型为共享请求,则根据第五请求创建目录的第五目录项,第五目录项包括标签信息、第五指示信息、第五指针信息和第五状态信息;第五指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第五指针信息用于指示第五指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第五状态信息用于指示第五请求的类型;或者,
在收发单元1801通知第四数据节点向第二数据节点发起侦听之后,若第五请求的类型为共享请求且第一请求的类型为独占请求,则根据第五请求,将第一指示信息中的第一指示位置为无效,并根据第五请求创建目录的第六目录项和第七目录项;其中,第六目录项包括标签信息、第六指示信息、第六指针信息和第六状态信息;第六指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第六指针信息用于指示第六指示信息中置为有效的指示位对应的内存地址中存储的数据被第四数据节点读取,第六状态信息用于指示第五请求的类型;第七目录项包括标签信息、第七指示信息、第七指针信息和第七状态信息;第七指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第七指针信息用于指示第七指示信息中置为有效的指示位对应的内存地址中存储的数据被第二数据节点读取,第七状态信息用于指示第五请求的类型。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
同样需要说明的是,目录处理装置1800可以实现图5对应的实施例提供的方法。目录处理装置1800中未详细描述的实现方式可以参照图5对应的实施例提供的方法中的相关描述。
采用目录处理装置1800,由于处理单元1802创建的第一目录项中包含第一指示信息,第一指示信息包含N个指示位,N个指示位中置为有效的指示位对应的内存地址中的数据被第二数据节点访问。因而,通过第一目录项不仅能记录第一内存地址上的数据被第二数据节点访问的情况,还可以记录N个内存地址中除第一内存地址之外的其他内存地址被第二数据节点访问的情况。也就是说,与现有技术相比,虽然目录处理装置1800创建的第一目录项中包含第一指示信息,而第一指示信息会占用若干个比特位(例如占用N个比特位),但是,现有技术中创建的一个目录项仅可用于记录一个内存地址上的数据被第二数据节点访问的情况,而目录处理装置1800创建的第一目录项可用于记录N个内存地址上的数据被第二数据节点访问的情况。因而采用目录处理装置1800创建目录项可以减小目录占用的缓存容量,减少资源浪费。
特别地,在第二数据节点连续访问多个内存地址上的数据时,此时多个内存地址上的数据是被同一数据节点访问,且访问请求的类型是相同的。因此,处理单元1802可将多个内存地址中每N个内存地址被第二数据节点访问的情况可以记录在一个目录项中,从而更大程度地减少目录所占用的缓存。
基于同一发明构思,本申请实施例还提供了一种目录处理装置,该目录处理装置采用图5对应的实施例提供的方法,可以是与图18所示的目录处理装置1800相同的设备。参阅图19所示,目录处理装置1900包括:处理器1901、通信模块1902以及存储器1903,其中:
处理器1901,用于读取存储器1903中的程序,执行下列过程:
通过通信模块1902接收第二数据节点发送的第一请求;其中,该第一请求用于指示第二数据节点请求读取第一物理地址上的第一数据,第一物理地址包含标签信息、索引信息和第一关联地址信息,第一关联地址信息用于指示第一物理地址对应装置的内存的N个内存地址中的第一内存地址,N>1;
然后,根据标签信息和索引信息在装置1900的目录中查找匹配的目录项;
进而在未查找到匹配的目录项时根据第一请求创建目录的第一目录项,第一目录项包括标签信息、第一指示信息、第一指针信息和第一状态信息,第一指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第一指针信息用于指示第一指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取。
可选地,第一状态信息用于指示所述第一请求的类型,第一请求的类型为独占请求或者共享请求。
可选地,处理器1901还用于:
在根据第一请求创建目录的第一目录项之后,通过通信模块1902接收第二数据节点发送的第二请求,该第二请求与第一请求的类型相同,该第二请求用于指示第二数据节点请求读取第二物理地址上的第二数据,第二物理地址包含标签信息、索引信息和第二关联地址信息,第二关联地址信息用于指示第二物理地址对应N个内存地址中的第二内存地址;
然后,根据第二请求在目录中查找匹配的目录项,查找得到第一目录项;进而根据第二请求,将第一指示信息中与第二内存地址对应的第二指示位置为有效。
可选地,处理器1901根据第二请求在目录中查找匹配的目录项,查找得到第一目录项时,具体用于:根据标签信息和索引信息查找到第一目录项;然后,确定第一目录项中的第一指针信息指示的数据节点为发送第二请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第二请求的类型相同确定第一目录项为匹配的目录项。
可选地,处理器1901还用于:在根据第一请求创建目录的第一目录项之后,通过通信模块1902接收第二数据节点发送的第三请求,该第三请求与第一请求的类型不相同,该第三请求用于指示第二数据节点请求读取第三物理地址上的第三数据,第三物理地址包含标签信息、索引信息和第三关联地址信息,第三关联地址信息用于指示第三物理地址对应N个内存地址中的第三内存地址;
然后,根据第三请求在目录中查找匹配的目录项;
进而,在未查找到匹配的目录项时根据第三请求创建目录的第二目录项,第二目录项包括标签信息、第二指示信息、第二指针信息和第二状态信息;第二指示信息包括与N个内存地址一一对应的N个指示位,该N个指示位中与第三内存地址对应的第三指示位置为有效、除第三指示位之外的其他指示位置为无效,第二指针信息用于指示第二指示信息中置为有效的指示位对应的内存地址中的数据被第二数据节点读取,第二状态信息用于指示第三请求的类型。
可选地,处理器1901根据第三请求在目录查找匹配的目录项时,具体用于:根据标签信息和索引信息查找到第一目录项;确定第一目录项中的第一指针信息指示的数据节点为发送第三请求的第二数据节点,并确定第一目录项中的第一状态信息指示的第一请求的类型与第三请求的类型不相同;确定未查找到匹配的目录项。
可选地,处理器1901还用于:在根据第一请求创建目录的第一目录项之后,通过通信模块1902接收第三数据节点发送的第四请求,该第四请求用于指示第三数据节点请求读取第四物理地址上的第四数据,第四物理地址包含标签信息、索引信息和第四关联地址信息,其中的第四关联地址信息用于指示第四物理地址对应N个内存地址中的第四内存地址;
然后,根据第四请求在目录中查找匹配的目录项;
进而,在未查找到匹配的目录项时根据第四请求创建目录的第三目录项,第三目录项包括标签信息、第三指示信息、第三指针信息和第三状态信息,第三指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第四内存地址对应的第四指示位置为有效、除第四指示位之外的其他指示位置为无效,第三指针信息用于指示第三指示信息中置为有效的指示位对应的内存地址中存储的数据被第三数据节点读取,第三状态信息用于指示第四请求的类型。
可选地,处理器1901根据第四请求在目录中查找匹配的目录项时,具体用于:根据标签信息和索引信息查找到第一目录项;确定第一目录项中的第一指针信息指示的数据节点不是发送第四请求的第三数据节点;确定未查找到匹配的目录项。
可选地,处理器1901还用于:在根据第一请求创建目录的第一目录项之后,通过通信模块1902接收第四数据节点发送的第五请求,该第五请求用于指示第四数据节点请求读取第一数据;然后,根据该第五请求在目录中查找匹配的目录项,查找得到所述第一目录项,进而在处理器1901根据第一目录项确定第一数据被第二数据节点读取后,通过通信模块1902通知第四数据节点向第二数据节点发起侦听,以读取第一数据。
可选地,处理器1901还用于:在通过通信模块1902通知第四数据节点向第二数据节点发起侦听之后,若第五请求的类型为独占请求,则根据第五请求,将第一指示信息中的第一指示位置为无效,并创建目录的第四目录项,第四目录项包括标签信息、第四指示信息、第四指针信息和第四状态信息;第四指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第四指针信息用于指示第四指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第四状态信息用于指示第五请求的类型;或者,
在通过通信模块1902通知第四数据节点向第二数据节点发起侦听之后,若第五请求的类型为共享请求且第一请求的类型为共享请求,则根据第五请求创建目录的第五目录项,第五目录项包括标签信息、第五指示信息、第五指针信息和第五状态信息;第五指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第五指针信息用于指示第五指示信息中置为有效的指示位对应的内存地址中的数据被第四数据节点读取,第五状态信息用于指示第五请求的类型;或者,
在通过通信模块1902通知第四数据节点向第二数据节点发起侦听之后,若第五请求的类型为共享请求且第一请求的类型为独占请求,则根据第五请求,将第一指示信息中的第一指示位置为无效,并根据第五请求创建目录的第六目录项和第七目录项;其中,第六目录项包括标签信息、第六指示信息、第六指针信息和第六状态信息;第六指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中与第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第六指针信息用于指示第六指示信息中置为有效的指示位对应的内存地址中存储的数据被第四数据节点读取,第六状态信息用于指示第五请求的类型;第七目录项包括标签信息、第七指示信息、第七指针信息和第七状态信息;第七指示信息包含与N个内存地址一一对应的N个指示位,该N个指示位中的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,第七指针信息用于指示第七指示信息中置为有效的指示位对应的内存地址中存储的数据被第二数据节点读取,第七状态信息用于指示第五请求的类型。
在一种可能的实现方式中,处理器1901可以是CPU、GPU、AIP、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或复杂可编程逻辑器件(complex programmable logicdevice,CPLD)等处理器,也可以是处理器核(Core),本申请中对此不做限定。当处理器1901为CPU、GPU、AIP等处理器时,第一数据节点和第二数据节点可以分别属于不同的实体设备;当处理器1901为处理器核(Core)时,第一数据节点和第二数据节点可以视为同一实体设备中的两个处理器核(Core)。
在装置1900中,处理器1901、通信模块1902以及存储器1903可以由总线作一般性的总线体系结构来实现。根据目录处理装置1900的具体应用和整体设计约束条件,总线可以包括任意数量的互连总线和桥接,具体由处理器1901代表的一个或多个处理器和存储器1903代表的存储器的各种电路链接在一起。总线架构还可以将诸如***设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。通信模块1902可以是多个元件,即包括发送机和接收机,或者包括通信接口,该通信接口具有接收和发送的功能,提供用于在传输介质上与各种其他装置通信的单元。处理器1901负责管理总线架构和通常的处理,存储器1903可以存储处理器1901在执行操作时所使用的数据。
基于以上实施例,本申请还提供一种存储***。参见图20所示,该存储***2000包含图18所示的目录处理装置1800以及与该目录处理装置进行交互的第二数据节点。
综上,本申请实施例提供一种目录处理方法、装置及***,采用本申请实施例提供的方案,可以减小目录占用的缓存容量,减少资源浪费。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘solid state disk(SSD))等。
Claims (21)
1.一种目录处理方法,其特征在于,包括:
第一数据节点接收第二数据节点发送的第一请求,所述第一请求用于指示所述第二数据节点请求读取第一物理地址上的第一数据,所述第一物理地址包含标签信息、索引信息和第一关联地址信息,所述第一关联地址信息用于指示所述第一物理地址对应所述第一数据节点的内存的N个内存地址中的第一内存地址,N>1;
所述第一数据节点根据所述标签信息和所述索引信息在所述第一数据节点的目录中查找匹配的目录项
所述第一数据节点在未查找到匹配的目录项时根据所述第一请求创建所述目录的第一目录项,所述第一目录项包括所述标签信息、第一指示信息、第一指针信息和第一状态信息,所述第一指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第一指针信息用于指示所述第一指示信息中置为有效的指示位对应的内存地址中的数据被所述第二数据节点读取。
2.如权利要求1所述的方法,其特征在于,所述第一状态信息用于指示所述第一请求的类型,所述第一请求的类型为独占请求或者共享请求。
3.如权利要求1或2所述的方法,其特征在于,在所述第一数据节点根据所述第一请求创建所述目录的第一目录项之后,还包括:
所述第一数据节点接收所述第二数据节点发送的第二请求,所述第二请求与所述第一请求的类型相同,所述第二请求用于指示所述第二数据节点请求读取第二物理地址上的第二数据,所述第二物理地址包含所述标签信息、所述索引信息和第二关联地址信息,所述第二关联地址信息用于指示所述第二物理地址对应所述N个内存地址中的第二内存地址;
所述第一数据节点根据所述第二请求在所述目录中查找匹配的目录项,查找得到所述第一目录项;
所述第一数据节点根据所述第二请求,将所述第一指示信息中与所述第二内存地址对应的第二指示位置为有效。
4.如权利要求3所述的方法,其特征在于,所述第一数据节点根据所述第二请求在所述目录中查找匹配的目录项,查找得到所述第一目录项,包括:
所述第一数据节点根据所述标签信息和所述索引信息查找到所述第一目录项;
所述第一数据节点确定所述第一目录项中的所述第一指针信息指示的数据节点为发送所述第二请求的所述第二数据节点;并,确定所述第一目录项中的所述第一状态信息指示的所述第一请求的类型与所述第二请求的类型相同;
所述第一数据节点确定所述第一目录项为匹配的目录项。
5.如权利要求1~4任一项所述的方法,其特征在于,在所述第一数据节点根据所述第一请求创建所述目录的第一目录项之后,还包括:
所述第一数据节点接收所述第二数据节点发送的第三请求,所述第三请求与所述第一请求的类型不相同,所述第三请求用于指示所述第二数据节点请求读取第三物理地址上的第三数据,所述第三物理地址包含所述标签信息、所述索引信息和第三关联地址信息,所述第三关联地址信息用于指示所述第三物理地址对应所述N个内存地址中的第三内存地址;
所述第一数据节点根据所述第三请求在所述目录中查找匹配的目录项;
所述第一数据节点在未查找到匹配的目录项时根据所述第三请求创建所述目录的第二目录项,所述第二目录项包括所述标签信息、第二指示信息、第二指针信息和第二状态信息;所述第二指示信息包括与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第三内存地址对应的第三指示位置为有效、除所述第三指示位之外的其他指示位置为无效,所述第二指针信息用于指示所述第二指示信息中置为有效的指示位对应的内存地址中的数据被所述第二数据节点读取,所述第二状态信息用于指示所述第三请求的类型。
6.如权利要求5所述的方法,其特征在于,所述第一数据节点根据所述第三请求在所述目录中查找匹配的目录项,包括:
所述第一数据节点根据所述标签信息和所述索引信息查找到所述第一目录项;
所述第一数据节点确定所述第一目录项中的所述第一指针信息指示的数据节点为发送所述第三请求的所述第二数据节点;并,确定所述第一目录项中的所述第一状态信息指示的所述第一请求的类型与所述第三请求的类型不相同;
所述第一数据节点确定未查找到匹配的目录项。
7.如权利要求1~6任一项所述的方法,其特征在于,在所述第一数据节点根据所述第一请求创建所述目录的第一目录项之后,还包括:
所述第一数据节点接收第三数据节点发送的第四请求,所述第四请求用于指示所述第三数据节点请求读取第四物理地址上的第四数据,所述第四物理地址包含所述标签信息、所述索引信息和第四关联地址信息,所述第四关联地址信息用于指示所述第四物理地址对应所述N个内存地址中的第四内存地址;
所述第一数据节点根据所述第四请求在所述目录中查找匹配的目录项;
所述第一数据节点在未查找到匹配的目录项时根据所述第四请求创建所述目录的第三目录项,所述第三目录项包括所述标签信息、第三指示信息、第三指针信息和第三状态信息,所述第三指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第四内存地址对应的第四指示位置为有效、除所述第四指示位之外的其他指示位置为无效,所述第三指针信息用于指示所述第三指示信息中置为有效的指示位对应的内存地址中存储的数据被所述第三数据节点读取,所述第三状态信息用于指示所述第四请求的类型。
8.如权利要求7所述的方法,其特征在于,所述第一数据节点根据所述第四请求在所述目录中查找匹配的目录项,包括:
所述第一数据节点根据所述标签信息和所述索引信息查找到所述第一目录项;
所述第一数据节点确定所述第一目录项中的所述第一指针信息指示的数据节点不是发送所述第四请求的所述第三数据节点;
所述第一数据节点确定未查找到匹配的目录项。
9.如权利要求1~8任一项所述的方法,其特征在于,在所述第一数据节点根据所述第一请求创建所述目录的第一目录项之后,还包括:
所述第一数据节点接收第四数据节点发送的第五请求,所述第五请求用于指示所述第四数据节点请求读取所述第一数据;
所述第一数据节点根据所述第五请求在所述目录中查找匹配的目录项,查找得到所述第一目录项;
所述第一数据节点在根据所述第一目录项确定所述第一数据被所述第二数据节点读取后,通知所述第四数据节点向所述第二数据节点发起侦听,以读取所述第一数据。
10.如权利要求9所述的方法,其特征在于,在所述第一数据节点通知所述第四数据节点向所述第二数据节点发起侦听之后,还包括:
若所述第五请求的类型为独占请求,所述第一数据节点根据所述第五请求,将所述第一指示信息中的第一指示位置为无效,并创建所述目录的第四目录项,所述第四目录项包括所述标签信息、第四指示信息、第四指针信息和第四状态信息;所述第四指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第四指针信息用于指示所述第四指示信息中置为有效的指示位对应的内存地址中的数据被所述第四数据节点读取,所述第四状态信息用于指示所述第五请求的类型;或者,
若所述第五请求的类型为共享请求且所述第一请求的类型为共享请求,所述第一数据节点根据所述第五请求创建所述目录的第五目录项,所述第五目录项包括所述标签信息、第五指示信息、第五指针信息和第五状态信息;所述第五指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第五指针信息用于指示所述第五指示信息中置为有效的指示位对应的内存地址中的数据被所述第四数据节点读取,所述第五状态信息用于指示所述第五请求的类型;或者,
若所述第五请求的类型为共享请求且所述第一请求的类型为独占请求,所述第一数据节点根据所述第五请求,将所述第一指示信息中的第一指示位置为无效,并根据所述第五请求创建所述目录的第六目录项和第七目录项;其中,所述第六目录项包括所述标签信息、第六指示信息、第六指针信息和第六状态信息;所述第六指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第六指针信息用于指示所述第六指示信息中置为有效的指示位对应的内存地址中存储的数据被所述第四数据节点读取,所述第六状态信息用于指示所述第五请求的类型;所述第七目录项包括所述标签信息、第七指示信息、第七指针信息和第七状态信息;所述第七指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第七指针信息用于指示所述第七指示信息中置为有效的指示位对应的内存地址中存储的数据被所述第二数据节点读取,所述第七状态信息用于指示所述第五请求的类型。
11.一种目录处理装置,其特征在于,包括:
收发单元,用于接收第二数据节点发送的第一请求,所述第一请求用于指示所述第二数据节点请求读取第一物理地址上的第一数据,所述第一物理地址包含标签信息、索引信息和第一关联地址信息,所述第一关联地址信息用于指示所述第一物理地址对应所述装置的内存的N个内存地址中的第一内存地址,N>1;
处理单元,用于根据所述标签信息和所述索引信息在所述装置的目录中查找匹配的目录项;
所述处理单元,还用于在未查找到匹配的目录项时根据所述第一请求创建所述目录的第一目录项,所述第一目录项包括所述标签信息、第一指示信息、第一指针信息和第一状态信息,所述第一指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第一指针信息用于指示所述第一指示信息中置为有效的指示位对应的内存地址中的数据被所述第二数据节点读取。
12.如权利要求11所述的装置,其特征在于,所述第一状态信息用于指示所述第一请求的类型,所述第一请求的类型为独占请求或者共享请求。
13.如权利要求11或12所述的装置,其特征在于,所述收发单元还用于:
在所述处理单元根据所述第一请求创建所述目录的第一目录项之后,接收所述第二数据节点发送的第二请求,所述第二请求与所述第一请求的类型相同,所述第二请求用于指示所述第二数据节点请求读取第二物理地址上的第二数据,所述第二物理地址包含所述标签信息、所述索引信息和第二关联地址信息,所述第二关联地址信息用于指示所述第二物理地址对应所述N个内存地址中的第二内存地址;
所述处理单元还用于:
根据所述第二请求在所述目录中查找匹配的目录项,查找得到所述第一目录项;
根据所述第二请求,将所述第一指示信息中与所述第二内存地址对应的第二指示位置为有效。
14.如权利要求13所述的装置,其特征在于,所述处理单元根据所述第二请求在所述目录中查找匹配的目录项,查找得到所述第一目录项时,具体用于:
根据所述标签信息和所述索引信息查找到所述第一目录项;
确定所述第一目录项中的所述第一指针信息指示的数据节点为发送所述第二请求的所述第二数据节点;并,确定所述第一目录项中的所述第一状态信息指示的所述第一请求的类型与所述第二请求的类型相同;
确定所述第一目录项为匹配的目录项。
15.如权利要求11~14任一项所述的装置,其特征在于,所述收发单元还用于:
在所述处理单元根据所述第一请求创建所述目录的第一目录项之后,接收所述第二数据节点发送的第三请求,所述第三请求与所述第一请求的类型不相同,所述第三请求用于指示所述第二数据节点请求读取第三物理地址上的第三数据,所述第三物理地址包含所述标签信息、所述索引信息和第三关联地址信息,所述第三关联地址信息用于指示所述第三物理地址对应所述N个内存地址中的第三内存地址;
所述处理单元还用于:
根据所述第三请求在所述目录中查找匹配的目录项;
在未查找到匹配的目录项时根据所述第三请求创建所述目录的第二目录项,所述第二目录项包括所述标签信息、第二指示信息、第二指针信息和第二状态信息;所述第二指示信息包括与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第三内存地址对应的第三指示位置为有效、除所述第三指示位之外的其他指示位置为无效,所述第二指针信息用于指示所述第二指示信息中置为有效的指示位对应的内存地址中的数据被所述第二数据节点读取,所述第二状态信息用于指示所述第三请求的类型。
16.如权利要求15所述的装置,其特征在于,所述处理单元根据所述第三请求在所述目录中查找匹配的目录项时,具体用于:
根据所述标签信息和所述索引信息查找到所述第一目录项;
确定所述第一目录项中的所述第一指针信息指示的数据节点为发送所述第三请求的所述第二数据节点;并,确定所述第一目录项中的所述第一状态信息指示的所述第一请求的类型与所述第三请求的类型不相同;
确定未查找到匹配的目录项。
17.如权利要求11~16任一项所述的装置,其特征在于,所述收发单元还用于:
在所述处理单元根据所述第一请求创建所述目录的第一目录项之后,接收第三数据节点发送的第四请求,所述第四请求用于指示所述第三数据节点请求读取第四物理地址上的第四数据,所述第四物理地址包含所述标签信息、所述索引信息和第四关联地址信息,所述第四关联地址信息用于指示所述第四物理地址对应所述N个内存地址中的第四内存地址;
所述处理单元还用于:
根据所述第四请求在所述目录中查找匹配的目录项;
在未查找到匹配的目录项时根据所述第四请求创建所述目录的第三目录项,所述第三目录项包括所述标签信息、第三指示信息、第三指针信息和第三状态信息,所述第三指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第四内存地址对应的第四指示位置为有效、除所述第四指示位之外的其他指示位置为无效,所述第三指针信息用于指示所述第三指示信息中置为有效的指示位对应的内存地址中存储的数据被所述第三数据节点读取,所述第三状态信息用于指示所述第四请求的类型。
18.如权利要求17所述的装置,其特征在于,所述处理单元根据所述第四请求在所述目录中查找匹配的目录项时,具体用于:
根据所述标签信息和所述索引信息查找到所述第一目录项;
确定所述第一目录项中的所述第一指针信息指示的数据节点不是发送所述第四请求的所述第三数据节点;
确定未查找到匹配的目录项。
19.如权利要求11~18任一项所述的装置,其特征在于,所述收发单元还用于:
在所述处理单元根据所述第一请求创建所述目录的第一目录项之后,接收第四数据节点发送的第五请求,所述第五请求用于指示所述第四数据节点请求读取所述第一数据;
所述处理单元还用于:
根据所述第五请求在所述目录中查找匹配的目录项,查找得到所述第一目录项;
所述收发单元还用于:
在所述处理单元根据所述第一目录项确定所述第一数据被所述第二数据节点读取后,通知所述第四数据节点向所述第二数据节点发起侦听,以读取所述第一数据。
20.如权利要求19所述的装置,其特征在于,所述处理单元还用于:
在所述收发单元通知所述第四数据节点向所述第二数据节点发起侦听之后,若所述第五请求的类型为独占请求,则根据所述第五请求,将所述第一指示信息中的第一指示位置为无效,并创建所述目录的第四目录项,所述第四目录项包括所述标签信息、第四指示信息、第四指针信息和第四状态信息;所述第四指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第四指针信息用于指示所述第四指示信息中置为有效的指示位对应的内存地址中的数据被所述第四数据节点读取,所述第四状态信息用于指示所述第五请求的类型;或者,
在所述收发单元通知所述第四数据节点向所述第二数据节点发起侦听之后,若所述第五请求的类型为共享请求且所述第一请求的类型为共享请求,则根据所述第五请求创建所述目录的第五目录项,所述第五目录项包括所述标签信息、第五指示信息、第五指针信息和第五状态信息;所述第五指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第五指针信息用于指示所述第五指示信息中置为有效的指示位对应的内存地址中的数据被所述第四数据节点读取,所述第五状态信息用于指示所述第五请求的类型;或者,
在所述收发单元通知所述第四数据节点向所述第二数据节点发起侦听之后,若所述第五请求的类型为共享请求且所述第一请求的类型为独占请求,则根据所述第五请求,将所述第一指示信息中的第一指示位置为无效,并根据所述第五请求创建所述目录的第六目录项和第七目录项;其中,所述第六目录项包括所述标签信息、第六指示信息、第六指针信息和第六状态信息;所述第六指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中与所述第一内存地址对应的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第六指针信息用于指示所述第六指示信息中置为有效的指示位对应的内存地址中存储的数据被所述第四数据节点读取,所述第六状态信息用于指示所述第五请求的类型;所述第七目录项包括所述标签信息、第七指示信息、第七指针信息和第七状态信息;所述第七指示信息包含与所述N个内存地址一一对应的N个指示位,该N个指示位中的第一指示位置为有效、除该第一指示位之外的其他指示位置为无效,所述第七指针信息用于指示所述第七指示信息中置为有效的指示位对应的内存地址中存储的数据被所述第二数据节点读取,所述第七状态信息用于指示所述第五请求的类型。
21.一种存储***,其特征在于,包括:如权利要求11~20任一项所述的目录处理装置和第二数据节点。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810053677.XA CN110059026B (zh) | 2018-01-19 | 2018-01-19 | 一种目录处理方法、装置及存储*** |
EP18900608.3A EP3736701B1 (en) | 2018-01-19 | 2018-08-06 | Directory processing method and device, and storage system |
PCT/CN2018/099025 WO2019140885A1 (zh) | 2018-01-19 | 2018-08-06 | 一种目录处理方法、装置及存储*** |
US16/932,318 US11372759B2 (en) | 2018-01-19 | 2020-07-17 | Directory processing method and apparatus, and storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810053677.XA CN110059026B (zh) | 2018-01-19 | 2018-01-19 | 一种目录处理方法、装置及存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110059026A true CN110059026A (zh) | 2019-07-26 |
CN110059026B CN110059026B (zh) | 2021-06-29 |
Family
ID=67301262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810053677.XA Active CN110059026B (zh) | 2018-01-19 | 2018-01-19 | 一种目录处理方法、装置及存储*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US11372759B2 (zh) |
EP (1) | EP3736701B1 (zh) |
CN (1) | CN110059026B (zh) |
WO (1) | WO2019140885A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688329A (zh) * | 2019-09-06 | 2020-01-14 | 无锡江南计算技术研究所 | 一种可同时支持多套Cache数据私有段动态设置的方法 |
CN111930496A (zh) * | 2020-06-18 | 2020-11-13 | 珠海格力电器股份有限公司 | 集成控制方法、装置、楼宇控制***、存储介质及处理器 |
WO2022174705A1 (zh) * | 2021-02-22 | 2022-08-25 | 华为技术有限公司 | 数据处理方法、计算机***和中间设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
CN103970678A (zh) * | 2014-04-21 | 2014-08-06 | 华为技术有限公司 | 目录设计方法及装置 |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
CN106776366A (zh) * | 2016-11-18 | 2017-05-31 | 华为技术有限公司 | 地址访问方法及装置 |
US20170315916A1 (en) * | 2016-04-29 | 2017-11-02 | Huawei Technologies Co., Ltd. | Directory management method, node controller, and system |
CN107368435A (zh) * | 2017-07-19 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种精简目录及利用该精简目录实现Cache一致性监听的方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925537B2 (en) * | 2001-06-11 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants |
US6801984B2 (en) * | 2001-06-29 | 2004-10-05 | International Business Machines Corporation | Imprecise snooping based invalidation mechanism |
US6868485B1 (en) * | 2002-09-27 | 2005-03-15 | Advanced Micro Devices, Inc. | Computer system with integrated directory and processor cache |
US7051163B2 (en) * | 2002-10-03 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | Directory structure permitting efficient write-backs in a shared memory computer system |
US20120159080A1 (en) * | 2010-12-15 | 2012-06-21 | Advanced Micro Devices, Inc. | Neighbor cache directory |
US9292444B2 (en) * | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
CN103500108B (zh) * | 2013-09-27 | 2016-08-10 | 杭州华为数字技术有限公司 | ***内存访问方法、节点控制器和多处理器*** |
CN107315694B (zh) * | 2016-04-22 | 2020-12-15 | 华为技术有限公司 | 一种缓存一致性管理方法及节点控制器 |
US10831664B2 (en) * | 2017-06-16 | 2020-11-10 | International Business Machines Corporation | Cache structure using a logical directory |
US20190236011A1 (en) * | 2018-01-31 | 2019-08-01 | Hewlett Packard Enterprise Development Lp | Memory structure based coherency directory cache |
-
2018
- 2018-01-19 CN CN201810053677.XA patent/CN110059026B/zh active Active
- 2018-08-06 EP EP18900608.3A patent/EP3736701B1/en active Active
- 2018-08-06 WO PCT/CN2018/099025 patent/WO2019140885A1/zh unknown
-
2020
- 2020-07-17 US US16/932,318 patent/US11372759B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101944068A (zh) * | 2010-08-23 | 2011-01-12 | 中国科学技术大学苏州研究院 | 一种共享高速缓存的性能优化方法 |
CN103970678A (zh) * | 2014-04-21 | 2014-08-06 | 华为技术有限公司 | 目录设计方法及装置 |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
US20170315916A1 (en) * | 2016-04-29 | 2017-11-02 | Huawei Technologies Co., Ltd. | Directory management method, node controller, and system |
CN107341114A (zh) * | 2016-04-29 | 2017-11-10 | 华为技术有限公司 | 一种目录管理的方法、节点控制器和*** |
CN106776366A (zh) * | 2016-11-18 | 2017-05-31 | 华为技术有限公司 | 地址访问方法及装置 |
CN107368435A (zh) * | 2017-07-19 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种精简目录及利用该精简目录实现Cache一致性监听的方法 |
Non-Patent Citations (1)
Title |
---|
王恩东等: "《多核处理器目录缓存结构设计》", 《计算机研究与发展》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110688329A (zh) * | 2019-09-06 | 2020-01-14 | 无锡江南计算技术研究所 | 一种可同时支持多套Cache数据私有段动态设置的方法 |
CN110688329B (zh) * | 2019-09-06 | 2021-08-10 | 无锡江南计算技术研究所 | 一种可同时支持多套Cache数据私有段动态设置的方法 |
CN111930496A (zh) * | 2020-06-18 | 2020-11-13 | 珠海格力电器股份有限公司 | 集成控制方法、装置、楼宇控制***、存储介质及处理器 |
WO2022174705A1 (zh) * | 2021-02-22 | 2022-08-25 | 华为技术有限公司 | 数据处理方法、计算机***和中间设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3736701A4 (en) | 2021-03-17 |
US11372759B2 (en) | 2022-06-28 |
EP3736701A1 (en) | 2020-11-11 |
WO2019140885A1 (zh) | 2019-07-25 |
US20200349078A1 (en) | 2020-11-05 |
EP3736701B1 (en) | 2022-04-13 |
CN110059026B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210011888A1 (en) | Intelligent layout of composite data structures in tiered storage with persistent memory | |
CN104679669B (zh) | 高速缓存cache存储器***及访问缓存行cache line的方法 | |
KR101786871B1 (ko) | 원격 페이지 폴트 처리 장치 및 그 방법 | |
CN103473272B (zh) | 数据处理方法、装置及*** | |
US20040243769A1 (en) | Tree based memory structure | |
US10235047B2 (en) | Memory management method, apparatus, and system | |
CN104424105B (zh) | 一种内存数据的读写处理方法和装置 | |
CN105518631B (zh) | 内存管理方法、装置和***、以及片上网络 | |
CN110059026A (zh) | 一种目录处理方法、装置及存储*** | |
CN103329111A (zh) | 一种基于块存储的数据处理方法、装置及*** | |
CN105874758B (zh) | 内存访问方法、交换机及多处理器*** | |
US20240039995A1 (en) | Data access system and method, device, and network adapter | |
US20200349081A1 (en) | Method, apparatus and computer program product for managing metadata | |
US11868631B2 (en) | System startup method and related device | |
CN103297490B (zh) | 信息处理装置、分布式处理***和分布式处理方法 | |
CN115913937B (zh) | 一种容器多网卡网络配置方法、装置、设备及存储介质 | |
CN114625762A (zh) | 一种元数据获取方法、网络设备及*** | |
CN103595720B (zh) | 卸载数据传输方法、装置和客户端 | |
WO2019084789A1 (zh) | 直接存储器访问控制器、数据读取方法和数据写入方法 | |
CN104252416B (zh) | 一种加速器以及数据处理方法 | |
CN113791730B (zh) | 基于双存储池的放置组调整方法、***、装置及存储介质 | |
CN107197000A (zh) | 静态动态混合缓存方法、装置及*** | |
US8645620B2 (en) | Apparatus and method for accessing a memory device | |
CN102833295B (zh) | 分布式缓存***中的数据操作方法和装置 | |
US8055815B2 (en) | Optimal paths with SCSI I/O referrals |
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 |