CN112416259A - 数据访存方法和数据访存装置 - Google Patents
数据访存方法和数据访存装置 Download PDFInfo
- Publication number
- CN112416259A CN112416259A CN202011410176.6A CN202011410176A CN112416259A CN 112416259 A CN112416259 A CN 112416259A CN 202011410176 A CN202011410176 A CN 202011410176A CN 112416259 A CN112416259 A CN 112416259A
- Authority
- CN
- China
- Prior art keywords
- node
- home node
- data
- storage
- home
- 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
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/0614—Improving the reliability of storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据访存方法和数据访存装置。该数据访存方法包括:在多处理器***中提供一致性家结点域,其中,该一致性家结点域包括多个家结点,多个家结点包括第一主家结点和至少一个镜像家结点,第一主家结点和至少一个镜像家结点分别配置于不同处理节点,至少一个镜像家结点管理的存储空间与第一主家结点管理的存储空间具有一致性。该数据访存方法通过创建镜像家结点,可以将远端访问转换为本地访问。
Description
技术领域
本公开的实施例涉及一种数据访存方法和数据访存装置。
背景技术
多处理器***可以采用对称多处理(Symmetric Multi Processing,SMP)架构或非一致性内存访问(Non-Uniform Memory Access,NUMA)架构,其中,SMP架构指多处理器***中的多个处理器对称工作,各处理器共享相同的物理内存,每个处理器访问内存中的任何地址所需时间是相同的;NUMA架构指多处理器***包括多个处理节点,每个处理节点包括至少一个处理器,每个节点具有独立的本地内存、输入输出槽口等,处理节点之间可以通过互联开关(Crossbar Switch)进行连接和信息交互,每个处理节点的处理器可以访问整个***的内存。
发明内容
本公开至少一实施例提供一种数据访存方法,应用于多处理器***,其中,所述多处理器***包括多个处理节点,每个所述处理节点包括存储器且配置有至少一个家结点,每个所述处理节点的家结点用于管理每个所述处理节点的存储器的至少部分存储空间,每个所述处理节点的存储器在所述多个处理节点之间共享,所述方法包括:在所述多处理器***中提供一致性家结点域,其中,所述一致性家结点域包括多个家结点,所述多个家结点包括第一主家结点和至少一个镜像家结点,所述第一主家结点和所述至少一个镜像家结点分别配置于不同处理节点,所述至少一个镜像家结点管理的存储空间与所述第一主家结点管理的存储空间具有一致性。
例如,在本公开至少一实施例提供的数据访存方法中,在所述多处理器***中提供一致性家结点域,包括:基于所述第一主家结点的存储空间信息创建所述至少一个镜像家结点;维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性。
例如,在本公开至少一实施例提供的数据访存方法中,所述多个处理节点包括第一处理节点,所述第一主家结点配置于所述第一处理节点,基于所述第一主家结点的存储空间信息创建所述至少一个镜像家结点,包括:获取所述第一主家结点管理的存储空间信息;根据所述第一主家结点管理的存储空间信息,在不同于所述第一处理节点的至少一个处理节点上分别创建所述至少一个镜像家结点,其中,所述至少一个镜像家结点为所述第一主家结点的镜像,配置为执行所述至少一个处理节点对所述第一主家结点管理的存储空间的数据访存操作。
例如,在本公开至少一实施例提供的数据访存方法中,在不同于所述第一处理节点的至少一个处理节点上分别创建所述至少一个镜像家结点为响应于对所述第一处理节点的访问需求而执行的。
例如,在本公开至少一实施例提供的数据访存方法中,根据所述第一主家结点管理的存储空间信息,在不同于所述第一处理节点的至少一个处理节点上分别创建所述至少一个镜像家结点,包括:根据所述第一主家结点管理的存储空间信息,确定所述第一主家结点管理的存储空间的至少部分数据;在所述至少一个处理节点中为所述至少部分数据分配存储空间,以创建所述至少一个镜像家结点;对所述至少一个镜像家结点管理的存储空间进行地址配置,其中,所述至少一个镜像家结点用于管理所述至少一个处理节点中的所述至少部分数据对应的存储空间。
例如,在本公开至少一实施例提供的数据访存方法中,对所述至少一个镜像家结点管理的存储空间进行地址配置,包括:配置所述至少部分数据在所述至少一个处理节点中对应的虚拟地址为所述至少部分数据在所述第一处理节点中对应的虚拟地址;配置所述至少部分数据对应的虚拟地址在所述至少一个处理节点中映射至所述至少部分数据在所述至少一个处理节点中的存储空间。
例如,在本公开至少一实施例提供的数据访存方法中,在所述至少一个处理节点中为所述至少部分数据分配存储空间,以创建所述至少一个镜像家结点,包括:在所述至少一个处理节点中为所述至少部分数据分配存储空间,将所述至少部分数据分别存入所述至少一个处理节点的存储空间,以创建所述至少一个镜像家结点。
例如,在本公开至少一实施例提供的数据访存方法中,所述至少一个镜像家结点为所述至少一个处理节点中独立的家结点,或者所述至少一个镜像家结点通过对所述至少一个处理节点中已配置的家结点扩展得到。
例如,在本公开至少一实施例提供的数据访存方法中,维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性,包括:对所述多个家结点管理的存储空间设置状态位,所述状态位用于指示所述多个家结点管理的所述至少部分数据对应的存储空间在所述一致性家结点域中的访问状态;在所述数据访存操作过程中标记所述数据访存操作对应的存储空间的状态位,并根据所述状态位的变化执行相应操作,维护所述一致性家结点域的存储空间一致性。
例如,在本公开至少一实施例提供的数据访存方法中,对所述多个家结点管理的存储空间设置状态位,包括:将所述多个家结点中的每个家结点管理的所述至少部分数据对应的存储空间划分为多个存储行;对每个存储行设置状态位,所述状态位用于指示所述每个存储行在所述一致性家结点域中的访问状态。
例如,在本公开至少一实施例提供的数据访存方法中,每个所述处理节点包括至少一个处理器,所述处理器包括缓存,将所述多个家结点中的每个家结点管理的所述至少部分数据对应的存储空间划分为多个存储行,包括:将所述每个家结点管理的所述至少部分数据对应的存储空间以所述缓存的数据传输单位为粒度进行划分,得到所述每个家结点对应的多个存储行。
例如,在本公开至少一实施例提供的数据访存方法中,所述多个家结点包括第一家结点,所述第一家结点为所述第一主家结点或所述至少一个镜像家结点中的任意一个,且所述第一家结点配置于发起所述数据访存操作的处理节点,所述数据访存操作包括数据写入操作和数据读取操作,所述状态位包括有效状态和无效状态,在所述数据访存操作过程中标记所述数据访存操作对应的存储空间的状态位,并根据所述状态位的变化执行相应操作,维护所述一致性家结点域的存储空间一致性,包括:响应于数据写入操作,将所述数据写入操作对应的存储行的状态位仅在所述第一家结点中设置为有效状态;响应于数据读取操作,判断所述数据读取操作对应的存储行的状态位,响应于所述数据读取操作对应的存储行的状态位为有效状态,则直接读取数据;响应于所述数据读取操作对应的存储行的状态位为无效状态,则从所述一致性家结点域中所述数据读取操作对应的存储行的状态位为有效状态的家结点中读取数据。
例如,在本公开至少一实施例提供的数据访存方法中,所述有效状态包括独占状态,所述独占状态表示所述独占状态对应的存储行在所述一致性家结点域中具有独占权限,将所述数据写入操作对应的存储行的状态位仅在所述第一家结点中设置为有效状态,包括:响应于接收到所述处理节点的独占请求,由所述第一家结点解析所述独占请求,以得到所述独占请求对应的存储行信息,根据所述存储行信息构建独占权限请求,由所述第一家结点向所述多个家结点发送所述独占权限请求,以使得所述多个家结点中除所述第一家结点外的其他家结点将所述存储行信息对应的存储行的状态位标记为无效状态;将所述第一家结点中的所述存储行信息对应的存储行的状态位标记为独占状态。
例如,在本公开至少一实施例提供的数据访存方法中,所述有效状态还包括共享状态,所述共享状态表示所述共享状态对应的存储行在所述一致性家结点域中具有相同的数据,响应于所述数据读取操作对应的存储行的状态位为无效状态,则从所述一致性家结点域中所述数据读取操作对应的存储行的状态位为有效状态的家结点中读取数据,包括:响应于接收到所述处理节点的读取请求,由所述第一家结点解析所述读取请求,以得到所述读取请求对应的存储行信息;根据所述存储行信息构建共享请求,由所述第一家结点向所述多个家结点发送共享请求,以获得所述多个家结点中所述存储行信息对应的存储行的状态位为独占状态的存储数据;将所述存储数据存入所述第一家结点中所述存储行信息对应的存储行,并将所述第一家结点中所述存储行信息对应的存储行的状态位标记为共享状态。
例如,在本公开至少一实施例提供的数据访存方法中,将所述其他家结点中所述存储行信息对应的存储行的状态位为独占状态的家结点作为第二家结点,由所述第一家结点向所述多个家结点发送共享请求,以获得所述多个家结点中所述存储行信息对应的存储行的状态位为独占状态的存储数据,包括:响应于接收到所述第一家结点发送的共享请求,由所述第二家结点解析所述共享请求,以得到所述读取请求对应的存储行信息;获取所述存储行信息在所述第二家结点所属的处理节点中对应的最新写入数据;将所述第二家结点中与所述存储行信息对应的存储行的存储数据更新为所述最新写入数据,并将所述第二家结点中所述存储行信息对应的存储行的状态位标记为共享状态;由所述第二家结点将所述最新写入数据发送至所述第一家结点。
例如,在本公开至少一实施例提供的数据访存方法中,所述数据访存操作还包括缓存替换操作,在所述数据访存操作过程中标记所述数据访存操作对应的存储空间的状态位,并根据所述状态位的变化执行相应操作,维护所述一致性家结点域的存储空间一致性,还包括:响应于缓存替换操作,将所述一致性家结点域中所述缓存替换操作对应的存储行的状态位均处理为有效状态。
例如,在本公开至少一实施例提供的数据访存方法中,所述有效状态包括共享状态,所述缓存包括多个缓存行,响应于缓存替换操作,将所述一致性家结点域中所述缓存替换操作对应的存储行的状态位均处理为有效状态,包括:确定所述缓存替换操作对应的被替换的缓存行的缓存数据是否为新写入数据,响应于所述缓存数据为新写入数据,将所述一致性家结点域中所述缓存替换操作对应的存储行的存储数据均更新为所述新写入数据,并将所述一致性家结点域中所述缓存替换操作对应的存储行均标记为共享状态;响应于所述缓存数据不是新写入数据,将所述一致性家结点域中所述缓存替换操作对应的存储行均标记为共享状态。
例如,在本公开至少一实施例提供的数据访存方法还包括:响应于所述至少一个处理节点对所述第一主家结点管理的存储空间执行数据访存操作,通过所述至少一个处理节点中的镜像家结点管理的存储空间完成所述访问操作。
例如,在本公开至少一实施例提供的数据访存方法中,所述多处理器***的架构为非一致性内存访问架构。
本公开至少一实施例提供一种数据访存装置,应用于多处理器***,其中,所述多处理器***包括多个处理节点,每个所述处理节点包括存储器且配置有至少一个家结点,每个所述处理节点的家结点用于管理每个所述处理节点的存储器的至少部分存储空间,每个所述处理节点的存储器在所述多个处理节点之间共享,所述装置包括:处理单元,配置为在所述多处理器***中提供一致性家结点域,其中,所述一致性家结点域包括多个家结点,所述多个家结点包括第一主家结点和至少一个镜像家结点,所述第一主家结点和所述至少一个镜像家结点分别配置于不同处理节点,所述至少一个镜像家结点管理的存储空间与所述第一主家结点管理的存储空间具有一致性。
例如,本公开至少一实施例提供一种数据访存装置中,所述处理单元包括创建子单元和维护子单元,所述创建子单元配置为基于所述第一主家结点的存储空间信息创建所述至少一个镜像家结点;所述维护子单元配置为维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性。
本公开至少一实施例提供一种数据访存方法,包括:在第一处理节点提供第一主家结点,在第二处理节点提供第一镜像家结点,其中,所述第一处理节点包括第一存储器,所述第一存储器被所述第一处理节点和所述第二处理节点共享,所述第一主家结点用于管理所述第一存储器的至少部分存储空间;维护所述第一主家结点管理的存储空间和所述第一镜像家结点管理的存储空间一致性。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为NUMA***的示意性结构图;
图2为本公开至少一实施例提供的一种数据访存方法的示意性流程图;
图3A为本公开至少一实施例提供的一种数据访存方法中步骤S101的示意性流程图;
图3B为本公开一实施例提供的示例性的一致性家结点域示意图;
图4A为本公开至少一实施例提供的一种数据访存方法中步骤S102的示意性流程图;
图4B为本公开一实施例提供的一致性家结点域信息交互示意图;
图4C为本公开一实施例提供的缓存替换操作过程中一致性家结点域信息交互示意图;
图4D为本公开一实施例提供的缓存替换操作过程中一致性家结点域信息交互示意图;
图5为本公开至少一实施例提供的另一种数据访存方法的示意性流程图;
图6为本公开至少一实施例提供的一种数据访存装置的示意性框图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
对称多处理(SMP)架构也称一致性内存访问(Uniform Memory Access,UMA)架构,采用SMP架构的多处理器***的主要特征为共享,也即***中所有资源(例如处理器、内存、输入/输出接口)都是共享的。但也正是由于这种特征导致采用SMP架构的***的扩展能力非常有限,由于每个处理器必须通过相同的内存总线访问相同的内存资源,因此随着处理器数量的增加,内存访问冲突将迅速增加,最终导致处理器资源浪费,处理器性能的有效性大大降低。
为解决SMP架构在扩展能力上的限制,提供了非一致性内存访问(NUMA)架构,这种架构可以将大量处理器组合在一个***中,每个处理器可以访问整个***的内存,也就是说,全***的内存在物理上是分布的。并且,访问本地内存(处理器所在节点的内存)的速度远高于访问远端内存(除处理器所在节点外的其他节点的内存)的速度。
图1为一种NUMA***的示意性结构图。如图1所示,该NUMA***包括N个处理节点,每个处理节点包括多个处理器,每个处理节点包括缓存(例如第一级缓存、第二级缓存等)、存储器(例如图1所示的内存)。每个节点的处理器访问不同节点的内存时的延迟不同,例如,当节点0的处理器访问节点0的内存时的访问延迟最短,性能最高;当节点0的处理器访问除节点0外的其他节点(例如节点N)的内存时的访问延迟较长,性能较差,并且,访问延迟与节点之间的距离呈正相关,也即节点之间的距离(Node Distance)越长,访问延迟也越大。
对于多处理器***,由于***包括了多个处理器,且每个处理器的缓存中缓存的数据为***共享内存中某一物理位置存储的内存数据的镜像,以用于加快***的处理速度,因此对于多处理器***,其缓存一致性包括缓存和内存一致性以及多个处理器之间的缓存一致性。
在多处理器***中,对于每个处理节点所包括的多个处理器之间或多核处理器的多个处理器内核之间,通常采用家结点(Home Node,又可以称为Home Agent)实现多处理器***的缓存一致性以及内存和缓存之间的一致性。例如,当发生数据访存操作时,通过家结点执行缓存一致性并通过对应的内存控制器完成内存与处理器之间的数据交换。
在多处理器***中,每个处理节点可以包括至少一个家结点,每个家结点负责管理该处理处理节点的存储器的至少部分存储空间的缓存一致性。对于某个家结点所管理的存储空间来说,该存储空间中的每个物理地址对应唯一一个家结点,并且由该家结点处理该物理地址的数据访问及数据访问过程中的缓存一致性维护。
例如,当某一处理器对某个物理地址发起数据访存操作时,若该物理地址对应的家结点与发起访存操作的处理器属于同一个节点,则数据访存操作属于本地(Local)访问,访问延迟最短,性能最高;若该物理地址对应的家结点与发起访问的处理器不属于同一个节点,则数据访存操作属于远端(Remote)访问,访问延迟较长,性能降低。
本公开至少一实施例提供一种数据访存方法,该数据访存方法包括:在多处理器***中提供一致性家结点域,其中,该一致性家结点域包括多个家结点,该多个家结点包括第一主家结点和至少一个镜像家结点,第一主家结点和至少一个镜像家结点分别配置于不同处理节点,至少一个镜像家结点管理的存储空间与第一主家结点管理的存储空间具有一致性。
本公开至少一实施例还提供对应于上述数据访存方法的数据访存装置。
该数据访存方法通过创建镜像家结点,将远端访问转换为本地访问,降低远端访问的访问延迟,解决NUMA***中数据访存延迟不均匀的问题。
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
例如,本公开至少一实施例所提供的数据访存方法应用于多处理器***,例如,该多处理器***的架构可以采用非一致性内存访问(NUMA)架构。
例如,该多处理器***包括多个处理节点,每个处理节点包括存储器且配置有至少一个家结点,每个处理节点的家结点用于管理每个处理节点的存储器的至少部分存储空间,每个处理节点的存储器在多个处理节点之间共享。例如,多个处理节点可以为如图1中所示的NUMA架构的N个节点,每个处理节点可以包括至少一个(例如多个)处理器和存储器,还可以根据需要包括输入输出槽口等,不同的处理节点之间可以通过互联开关等方式进行连接和信息交互,每个处理节点的处理器可以访问整个***的内存。
例如,本公开至少一实施例提供的数据访存方法包括:在多处理器***中提供一致性家结点域,其中,该一致性家结点域针对该多处理器***的虚拟空间,包括多个家结点,该多个家结点包括第一主家结点(Host Home Node)和至少一个镜像家结点(MirrorHome Node),第一主家结点和镜像家结点分别配置于不同处理节点,镜像家结点管理的存储空间与第一主家结点管理的存储空间具有一致性。
在多处理器***中,每个物理地址由一个家结点处理该物理地址的数据访存及缓存一致性维护,因而可以通过在本地构建待访问的远端节点(与发起访问的处理器所在处理节点不同的处理节点)的家结点的镜像,将远端访问转换为本地访问。
例如,本公开至少一实施例提供的数据访存方法还包括:响应于至少一个处理节点对第一主家结点管理的存储空间执行数据访存操作,通过至少一个处理节点中的镜像家结点管理的存储空间完成访问操作。
例如,如图1所示,当节点1需要访问节点2的数据时,可以通过在节点1中的基于节点2的家结点创建的镜像家结点完成数据访存操作,从而将节点1与节点2之间的远端访问转换为节点1的本地访问,例如,由此可以显著降低远端访问的访问延迟,提升***性能。
图2为本公开至少一实施例提供的一种数据访存方法的示意性流程图。如图2所示,数据访存方法的一个示例可以具体包括步骤S101-步骤S102。
在步骤S101,基于第一主家结点的存储空间信息创建至少一个镜像家结点。
在步骤S102,维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性。
例如,多个处理节点包括第一处理节点和第二处理节点,第一主家结点配置于第一处理节点,对应地在第二处理节点创建对应于该第一主家结点的一个镜像家结点(第一镜像家结点)。第一处理节点包括第一存储器,第二处理节点包括第二存储器,第一存储器和第二存储器被第一处理节点和第二处理节点共享。第一主家结点用于管理第一存储器的至少部分(例如全部)存储空间(第一存储空间)。在一个示例中,该第一镜像家结点同样用于管理该第一存储空间,且保持第一主家结点和第一镜像家结点之间的一致性;在另一个示例中,该第一镜像家结点用于管理与该第一存储空间呈镜像的位于第二存储器中的第二存储空间,且保持第一主家结点和第一镜像家结点之间的一致性以及保持二者管理的第一存储空间和第二存储空间之间的一致性。
例如,如图3A所示,数据访存方法中的步骤S101的一个示例可以具体包括步骤S1011-步骤S1012。
例如,创建镜像家结点时,首先在步骤S1011,获取第一主家结点管理的存储空间信息。例如,所获取的存储空间信息可以包括第一主家结点管理的存储空间的多个物理地址的数量、多个物理地址中所存储的多个存储数据、多个存储数据对应的虚拟地址等信息。
接着,在步骤S1012,根据第一主家结点管理的存储空间信息,在不同于第一处理节点的至少一个处理节点上分别创建至少一个镜像家结点。
例如,每个镜像家结点为第一主家结点的镜像,配置为执行该镜像家结点所在的处理节点对第一主家结点管理的存储空间的数据访存操作。
例如,在一些示例中,可以预先根据经验将基于第一主家结点创建的镜像家结点配置于至少一个处理节点上;例如,在另一些示例中,在不同于第一处理节点的至少一个处理节点上分别创建至少一个镜像家结点为响应于对第一处理节点的访问需求而执行的,也就是说,当某个处理节点具有对第一处理节点的访问需求时,动态地在该处理节点处创建第一主家结点的镜像家结点,并在后续数据访存过程中,该处理节点对第一处理节点中第一主家结点所管理的存储空间的访问由该处理节点中创建的镜像节点完成。
例如,步骤S1012可以包括:根据第一主家结点管理的存储空间信息,确定第一主家结点管理的存储空间的至少部分数据;在选择的处理节点中为该部分数据对应地分配存储空间,以在处理节点中创建镜像家结点;对该镜像家结点管理的存储空间进行地址配置。例如,该镜像家结点用于管理对应的处理节点中的该部分数据对应的存储空间。
例如,对每个镜像家结点管理的存储空间进行地址配置,可以包括:配置作为处理对象的至少部分数据在至少一个处理节点中对应的虚拟地址为该部分数据在第一处理节点中对应的虚拟地址;配置该部分数据对应的虚拟地址在至少一个处理节点中映射至该部分数据在镜像家结点所在的处理节点中的存储空间。
在上述镜像家结点创建方法中,镜像家结点不需预先存储第一主家结点管理的存储空间的存储数据,而是预先配置好该存储数据的地址映射关系,在数据访存过程中,若数据访存操作对应的数据在镜像家结点中不存在,则由镜像家结点先从第一主家结点处获取该数据并存入预先分配好的存储空间中,以备后续数据访存时使用。这种镜像家结点创建方法根据数据访存需要在镜像家结点处存储第一主家结点中的存储数据,减少存储空间的占用的同时降低数据访问延迟。
例如,在一些实施例中,可以预先将第一主家结点管理的至少部分数据在镜像家结点所管理的存储空间中生成“备份”,从而在数据访存过程中,不需再去第一主家结点处获取数据,进一步降低访存延迟,大幅提升多处理器***的***性能。
例如,在处理节点中为第一主家结点管理的至少部分数据分配存储空间,以创建镜像家结点,可以包括:在处理节点中为该部分数据分配存储空间,将该部分数据分别存入该处理节点的存储空间,以创建对应的镜像家结点。
在该镜像家结点创建方法中,镜像家结点所管理的存储空间为第一主家结点所管理的存储空间的备份,使得多处理器***中的远端访问的访问延迟大幅降低,并且客观上增加了***中的数据备份,从而可以在一定程度提升多处理器***的可靠性、可用性和可维修性(RAS,reliability,availability and serviceability)潜力。
例如,镜像家结点可以为该镜像家结点所在的处理节点中独立的家结点,或者镜像家结点可以通过对该镜像家结点所在的处理节点中已配置的家结点扩展得到。也就是说,在某一处理节点中创建的镜像家结点可以为该处理节点中新增的独立的家结点模块,或者可以通过对该处理节点中已配置的家结点模块进行扩展,以使其完成镜像家结点的功能。
图3B为本公开一实施例提供的示例性的一致性家结点域示意图。如图3B所示,多处理器***的一个可能的一致性家结点域可以包括处理节点0-处理节点3,还包括分别配置于处理节点0的第一主家结点、配置于处理节点1的镜像家结点1、配置于处理节点2的镜像家结点2和配置于处理节点3的镜像家结点3,镜像家结点1、镜像家结点2和镜像家结点3基于第一主家结点管理的存储空间信息创建,且第一主家结点管理的存储空间和镜像家结点1、镜像家结点2和镜像家结点3分别管理的存储的空间具有一致性。
下面结合图3B说明数据访存方法的一个示例中的步骤S101的实现过程。
例如,当处理节点1的处理器(例如独立的处理器或多核处理器的某一处理器内核)需要访问处理节点0中第一主家结点管理的存储空间中的存储数据时,例如当前运行程序需要在一定时间中持续访问处理节点0中第一主家结点管理的存储空间,可以在处理节点1中基于第一主家结点管理的存储空间信息构建镜像家结点1。例如,首先处理节点1获取处理节点0中第一主家结点管理的存储空间的多个物理地址的数量及多个物理地址中的多个存储数据,需要指出的是,为方便描述,本公开将存储器物理地址对应的存储数据为空的状态也视为一种存储数据。例如,第一主家结点管理的存储空间包括100个物理地址,则处理节点1获取100个物理地址中的100个存储数据,并在处理节点1中为这100个存储数据分配存储空间,将这100个存储数据存入处理节点1的存储器中;之后,处理节点1对获取的这100个存储数据进行地址配置,例如,配置这100个存储数据对应的虚拟地址为这100个存储数据在第一主家结点中的虚拟地址,配置译址寄存器,使得这100个存储数据对应的虚拟地址在处理节点1中映射至这100个存储数据在处理节点1中的存储空间,从而完成镜像家结点1的创建。
在数据访存过程中,镜像家结点1管理的这100个存储数据的虚拟地址不发生变化,但映射关系发生变化,在地址译码时,处理节点1中的这100个存储数据对应的虚拟地址会映射至这100个存储数据在处理节点1中的存储位置,而不会映射至处理节点0,从而实现处理节点1对处理节点0的远端访问转换为处理节点1对处理节点1的本地访问,降低访问延迟。
同样的,当处理节点2、处理节点3需要访问处理节点0中的第一主家结点管理的存储空间时,可以在处理节点2、处理节点3中创建镜像家结点2和镜像家结点3,创建过程同镜像家结点1的创建过程相同,这里不再赘述。
需要说明的是,镜像家结点1、镜像家结点2及镜像家结点3的创建也可以预先执行,例如,根据经验等判断处理节点1、处理节点2和处理节点3同处理节点0中第一主家结点管理的存储空间的数据访存操作发生概率较大,可以预先在处理节点1、处理节点2和处理节点3处创建镜像家结点1、镜像家结点2及镜像家结点3,以将处理节点1、处理节点2和处理节点3对处理节点1的远端访问转换为本地访问,降低访问延迟,提升多处理器***的***性能。
由于镜像家结点所管理的存储空间为第一主家结点所管理的存储空间的备份,从而在多处理器***中出现了一个物理地址中的存储数据对应了多个配置于不同处理节点中的家结点的情况,也即是多处理器***中同一个存储数据可能有多个副本共存于不同的家结点中,因此维护第一主家结点和对应的镜像家结点管理的存储空间一致性对于数据访存操作的正常执行来说就显得至关重要,对于第一主家结点和对应的镜像家结点管理的存储空间中的同一个存储数据,在不同处理节点中不应当出现不一致的值。
图4A为本公开至少一实施例提供的一种数据访存方法中步骤S102的示意性流程图。如图4A所示,数据访存方法中的步骤S102的一个示例可以具体包括步骤S1021-步骤S1022,在该方法中通过设置状态位,并且例如通过状态位来来协调、管理各个家结点(主家结点与镜像家结点)之间的操作,从而维持家结点之间的一致性,以避免冲突。
在步骤S1021,对多个家结点管理的存储空间设置状态位。
例如,状态位用于指示多个家结点管理的至少部分数据对应的存储空间在一致性家结点域中的访问状态。
例如,步骤S1021可以包括:将多个家结点中的每个家结点管理的至少部分数据对应的存储空间划分为多个存储行;对每个存储行设置状态位,该状态位用于指示每个存储行在一致性家结点域中的访问状态。
例如,多处理器***中的每个处理节点包括至少一个处理器,每个处理器包括一级或多级缓存,由于家结点用于管理存储空间的缓存一致性,而缓存是以缓存行(Cacheline)为单位进行数据读取、数据写入操作,因此可以将家结点管理的存储空间以缓存行为单位进行存储空间划分。
例如,将多个家结点中的每个家结点管理的至少部分数据对应的存储空间划分为多个存储行,可以包括:将每个家结点管理的至少部分数据对应的存储空间以缓存的数据传输单位为粒度进行划分,得到每个家结点对应的多个存储行。
例如,缓存的数据传输单位(也即缓存行)为32比特,那么可以将每个家结点管理的至少部分数据对应的存储空间以32比特为单位进行划分,得到每个家结点对应的多个存储行,进而对每个存储行设置状态位,标记每个存储行在一致性家结点域中的访问状态。例如,家结点维护内存/缓存一致性采用基于目录的一致性协议,也即每个存储行对应有一个目录项,用于记录存储行在不同缓存中的状态等信息,状态位也可以记录于每个存储行的目录项中。
在步骤S1022,在数据访存操作过程中标记数据访存操作对应的存储空间的状态位,并根据状态位的变化执行相应操作,维护一致性家结点域的存储空间一致性。
例如,多个家结点包括第一家结点,第一家结点为一致性家结点域中的第一主家结点或任一个镜像家结点,且第一家结点配置于发起数据访存操作的处理节点。
例如,状态位包括有效状态和无效状态,其中,有效状态表示该状态位对应的存储行处于可以执行数据访存操作的状态,无效状态表示该状态位对应的存储行不可以执行数据访存操作,例如,该状态位对应的存储行中的存储数据不存在或无法被访问。
例如,数据访存操作包括数据写入操作和数据读取操作。
例如,步骤S1022可以包括:响应于数据写入操作,将数据写入操作对应的存储行的状态位仅在第一家结点中设置为有效状态;响应于数据读取操作,判断数据读取操作对应的存储行的状态位,响应于数据读取操作对应的存储行的状态位为有效状态,则直接读取数据;响应于数据读取操作对应的存储行的状态位为无效状态,则从一致性家结点域中数据读取操作对应的存储行的状态位为有效状态的家结点中读取数据。
例如,有效状态包括独占(Exclusive)状态,存储行处于独占状态表示该存储行在一致性家结点域中具有独占权限,也即在一致性家结点域中仅有一个家结点中的该存储行的状态位为独占状态,其他家结点中该存储行的状态位均为无效状态,此时具有处于独占状态的存储行的家结点可以开启该家结点对应的缓存中,该存储行对应的缓存行的独占权限,从而处理器可以对该缓存行执行写入操作。
例如,有效状态还包括共享(Share)状态,存储行处于共享状态表示该存储行在一致性家结点域中具有相同的数据,也即是在不同家结点的存储空间中,该存储行对应的存储数据均相同。
例如,若缓存是基于目录一致性协议实现缓存一致性,则每个缓存行也具有缓存状态位,缓存状态位用于标记每个缓存行在多处理器***中的多个缓存中的访问状态。例如,缓存状态位可以包括独占状态(Exclusive)、共享状态(Share)、修改状态(Modified,用于表示对应的缓存行中的缓存数据已被重写,与内存中的存储数据不同)以及无效状态(Invalid)。由于家结点用于管理、维护其所管理的存储空间的缓存一致性,因而缓存行的缓存状态位的转换由家结点控制。
例如,若缓存行的缓存状态位为无效状态或共享状态,当需要对该缓存行执行写入操作时,需要将该缓存行的缓存状态位转换为独占状态,而缓存行的缓存状态位由该缓存行对应的家结点控制,因此需要家结点将该缓存行对应的存储行的状态位标记为独占状态,并将一致性家结点域中的其他家结点中该存储行的状态位标记为无效状态,使得其他家结点中该存储行处于无法访问的状态,保证在发生数据写入操作时,仅有一个存储行具有写入权限。
例如,将数据写入操作对应的存储行的状态位仅在第一家结点中设置为有效状态,可以包括:响应于接收到处理节点的独占请求,由第一家结点解析独占请求,以得到独占请求对应的存储行信息,根据存储行信息构建独占权限请求,由第一家结点向多个家结点发送独占权限请求,以使得多个家结点中除第一家结点外的其他家结点将存储行信息对应的存储行的状态位标记为无效状态;将第一家结点中的存储行信息对应的存储行的状态位标记为独占状态。
例如,由于一致性家结点域中某个家结点所在的处理节点发起了数据写入请求,从而导致其他家结点中,数据写入请求对应的存储行的状态位处于无效状态,则在这些其他家结点中,当处理节点向该其他家结点发起读取请求时,由于存储行的状态位为无效状态,则会在一致性家结点域中广播读取请求,以从一致性家结点域中数据读取操作对应的存储行的状态位为独占状态或共享状态的家结点中读取数据。
例如,若一致性家结点域中的数据读取操作对应的存储行的状态位存在独占状态,则可以从一致性家结点域中数据读取操作对应的存储行的状态位为独占状态的家结点或该家结点对应的缓存中读取数据;若一致性家结点域中数据读取操作对应的存储行的状态位不存在独占状态,也即其他家结点中数据读取操作对应的存储行的状态位存在共享状态,则可以从数据读取操作对应的存储行的状态位为共享状态的任一个其他家结点或任一个其他家结点对应的缓存中获取读取数据。
例如,响应于数据读取操作对应的存储行的状态位为无效状态,则从一致性家结点域中所述数据读取操作对应的存储行的状态位为有效状态的家结点中读取数据,可以包括:响应于接收到处理节点的读取请求,由第一家结点解析读取请求,以得到读取请求对应的存储行信息;根据存储行信息构建共享请求,由第一家结点向多个家结点发送共享请求,以获得多个家结点中存储行信息对应的存储行的状态位为独占状态的存储数据;将存储数据存入第一家结点中存储行信息对应的存储行,并将第一家结点中存储行信息对应的存储行的状态位标记为共享状态。
例如,将其他家结点中存储行信息对应的存储行的状态位为独占状态的家结点作为第二家结点。由第一家结点向多个家结点发送共享请求,以获得多个家结点中存储行信息对应的存储行的状态位为独占状态的存储数据,可以包括:响应于接收到第一家结点发送的共享请求,由第二家结点解析共享请求,以得到读取请求对应的存储行信息;获取存储行信息在第二家结点所属的处理节点中对应的最新写入数据;将第二家结点中与存储行信息对应的存储行的存储数据更新为最新写入数据,并将第二家结点中存储行信息对应的存储行的状态位标记为共享状态;由第二家结点将最新写入数据发送至第一家结点。
图4B为本公开一实施例提供的一致性家结点域信息交互示意图。如图4B所示,该一致性家结点域中包括配置于处理节点0的家结点0和配置于处理节点1的家结点1,例如,家结点0为主家结点,家结点1为基于家结点0的存储空间信息创建的镜像家结点,创建过程可以参考步骤S101,这里不再赘述。位于处理节点0、家结点0、处理节点1和家结点1下的四条直线:过程(a)、过程(b)、过程(c)和过程(d)分别表示处理节点0、家结点0、处理节点1和家结点1在数据访存操作过程中的状态位变化。
例如,数据访存操作对应的存储行为第一存储行,数据访存操作对应的缓存行为第一缓存行,图中分别使用字母M/S/E/I表示修改、共享、独占以及无效等状态,具体而言,过程(a)和过程(c)上的字母M/E/S/I分别表示第一缓存行的状态位为修改状态/独占状态/共享状态/无效状态,过程(b)和过程(d)上的字母E/S/I分别表示第一存储行的状态位分别为独占状态/共享状态/无效状态。例如,第一存储行在家结点0、家结点1中的初始状态位均为共享状态(S),第一缓存行在处理节点0、处理节点1中的初始状态位均为无效状态(I)。
下面以图4B为例,具体说明数据写入操作和数据读取操作过程中,一致性家结点域中的信息交互流程及相应的状态位变化。
例如,当处理节点1中处理器或处理器内核发出对于由家结点0管理的第一缓存行的数据写入请求,或预测对于该第一缓存行大概率会发生数据写入操作时,由于查询得到该处理节点1已经建立对于家结点0的镜像家结点1,由此改为通过该家结点1进行本地读写,之后查询状态位得到第一缓存行处于无效状态,则处理节点1会向家结点1发起独占请求;当家结点1接收到处理节点1发送的独占请求时,家结点1首先解析独占请求,以得到独占请求对应的存储行信息,也即得到第一存储行信息,之后,家结点1根据第一存储行信息构建独占权限请求,并向家结点0发送该独占权限请求以请求独占权限;当家结点0接收到独占权限请求时,首先,家结点0将家结点0中第一存储行信息对应的处理节点0中存储器中的存储行的状态位标记为无效状态(S->I),以使得家结点0中第一存储信息对应的存储行处于无法访问状态,之后,家结点0向家结点1发送独占回复;当家结点1接收到家结点0发送的独占回复时,家结点1将家结点1中第一存储行信息对应的处理节点1中存储器中的存储行的状态位标记为独占状态(S->E),再将独占回复发送至处理节点1中的第一缓存行,以使得第一缓存行的缓存状态位由无效状态变更为独占状态(I->E)。此时,可以对处理节点1中的第一缓存行执行数据写入操作,同时避免对处理节点0中的第一缓存行的数据被其他操作修改,例如,执行数据写入操作后的第一缓存行的缓存状态位由独占状态变为修改状态(E->M);进一步地,之后可以选择时机将上述数据写操作对于第一存储行的操作结果同步至处理节点0。
例如,需要读取处理节点0中的第一缓存行的缓存数据时,由于第一缓存行处于无效状态(I),则由处理节点0中处理器或处理器内核向家结点0发送读取请求;当家结点0接收到处理节点0发送的读取请求时,首先家结点0解析读取请求,以得到读取请求对应的存储行信息,也即第一存储行信息,之后,家结点0根据第一存储行信息构建共享请求,并向家结点1发送共享请求;当家结点1接收到共享请求时,首先解析共享请求,以得到共享请求对应的第一存储行信息,之后,家结点1从处理节点1的缓存中获取该第一存储行信息对应的缓存行的最新写入数据,并将缓存中对应的缓存行的缓存状态位从修改状态变更为共享状态(M->S),之后,家结点1将家结点1中与第一存储行信息对应的存储行的存储数据更新为该最新写入数据,并将家结点1中第一存储行信息对应的存储行的状态位标记为共享状态(E->S),之后,家结点1将最新写入数据发送至家结点0;当家结点0接收到最新写入数据后,将该最新写入数据存入家结点0中第一存储行信息对应的第一存储行,并将家结点0中第一存储行的状态位标记为共享状态(I->S),同时,家结点0将该最新写入数据发送至处理节点0,并将第一缓存行的缓存数据更新为该最新写入数据并将缓存状态位由无效状态变更为共享状态(I->S)。
缓存的工作原理要求缓存尽量保存最新数据,例如,当处理器由于操作向缓存传送新的数据,而缓存中可用位置已被占满时,就会产生缓存替换的问题。当发生缓存替换时,如果缓存中的缓存数据为新写入数据,例如,缓存替换操作对应的缓存行的缓存状态位为修改状态,也即该缓存行发生了重写操作,需要将缓存行中的最新写入数据记录在内存中,以保证内存、缓存的一致性,而由于一致性域中的多个家结点的存储空间需要具有一致性,因此当发生缓存替换操作时,需要保持一致性家结点域中的多个家结点中对应位置的存储行均具有最新写入数据,且该存储行的状态位均处于有效状态。
例如,在一些示例中,数据访存操作还包括缓存替换操作,步骤S1022还可以包括:响应于缓存替换操作,将一致性家结点域中缓存替换操作对应的存储行的状态位均处理为有效状态。
例如,有效状态包括共享状态,处理器中的缓存包括多个缓存行,响应于缓存替换操作,将一致性家结点域中缓存替换操作对应的存储行的状态位均处理为有效状态,可以包括:确定缓存替换操作对应的被替换的缓存行的缓存数据是否为新写入数据,响应于缓存数据为新写入数据,将一致性家结点域中缓存替换操作对应的存储行的存储数据均更新为新写入数据,并将一致性家结点域中缓存替换操作对应的存储行均标记为共享状态;响应于缓存数据不是新写入数据,将一致性家结点域中缓存替换操作对应的存储行均标记为共享状态。
图4C为本公开一实施例提供的缓存替换操作过程中一致性家结点域信息交互示意图。图4C中的附图标记的含义与图4B相同,这里不再赘述。
例如,缓存替换操作对应的第一存储行在家结点0中的初始状态位为无效状态(I),缓存替换操作对应的第一缓存行在处理节点0中的初始状态位为无效状态(I),缓存替换操作对应的第一缓存行在处理节点1中的初始状态位为独占状态(E),也即第一缓存行的缓存数据不是新写入数据,缓存替换操作对应的第一存储行在家结点1中的初始状态位为独占状态(E)。
下面以图4C为例,具体说明缓存替换操作过程中,当缓存替换操作对应的第一缓存行的缓存数据不是新写入数据时,一致性家结点域中的信息交互流程及相应的状态位变化。
例如,当家结点1接收到处理节点1的处理器或处理器内核发出对于由家结点0管理的第一缓存行的缓存替换请求时,由于查询得到该处理节点1已经建立对于家结点0的镜像家结点1,由此改为通过该家结点1进行本地读写,之后查询状态位得到第一缓存行的缓存状态位为独占状态,也即第一缓存行的缓存数据不是新写入数据,家结点1根据第一缓存行对应的第一存储行信息构建更新请求,并将更新请求发送至家结点0;家结点0接收到更新请求后,将家结点0中第一存储行信息对应的处理节点0中存储器中的存储行的状态位从无效状态变更为共享状态(I->S),并向家结点1发送更新回复;当家结点1接收到更新回复时,家结点1将第一存储行信息对应的处理节点1中存储器中的存储行的状态位从独占状态变更为共享状态(E>S),并向第一缓存行发送缓存替换回复,以使得第一缓存行的缓存状态位从独占状态变更为共享状态(E>S),最终使得一致性家结点域中的所有家结点中,第一存储行信息对应的存储行的状态位均标记为共享状态。
图4D为本公开一实施例提供的缓存替换操作过程中一致性家结点域信息交互示意图。图4D中的附图标记的含义与图4B相同,这里不再赘述。
例如,缓存替换操作对应的第一存储行在家结点0中的初始状态位为无效状态(I),缓存替换操作对应的第一缓存行在处理节点0中的初始状态位为无效状态(I),缓存替换操作对应的第一缓存行在处理节点1中的初始状态位为修改状态(M),也即第一缓存行的缓存数据为新写入数据,缓存替换操作对应的第一存储行在家结点1中的初始状态位为独占状态(E)。
下面以图4D为例,具体说明缓存替换操作过程中,当缓存替换操作对应的第一缓存行的缓存数据为新写入数据时,一致性家结点域中的信息交互流程及相应的状态位变化。
例如,当家结点1接收到处理节点1的处理器或处理器内核发出对于由家结点0管理的第一缓存行的缓存替换请求时,获取缓存替换操作对应的第一存储行信息,由于第一缓存行的缓存状态位为修改状态,也即第一缓存行的缓存数据为新写入数据,同时获取该新写入数据并将该新写入数据连同第一存储行信息一起发送至家结点0;当家结点0接收到该新写入数据时,将家结点0中第一存储行信息对应的处理节点0中存储器中的存储行的存储数据更新为该新写入数据,并将家结点0中第一存储行信息对应的存储行的状态位从无效状态变更为共享状态(I->S),向家结点1发送更新回复;当家结点1接收到更新回复时,将家结点1中第一存储行信息对应的处理节点1中存储器中的存储行的状态位从独占状态变更为共享状态(E->S),并向处理节点1中的第一缓存行发送缓存替换回复,以使得处理节点1中的第一缓存行的缓存状态位从修改状态变更为共享状态(M->S),最终使得一致性结点域中的所有家结点中的第一存储行信息对应的存储行的状态位均转换为共享状态。
图5为本公开至少一实施例提供的另一种数据访存方法的示意性流程图。
例如,如图5所示,本公开至少一实施例提供的数据访存方法包括步骤S20-S40。
在步骤S20,在第一处理节点提供第一主家结点。
在步骤S30,在第二处理节点提供第一镜像家结点。
在步骤S40,维护第一主家结点管理的存储空间和第一镜像家结点管理的存储空间一致性。
例如,第一处理节点包括第一存储器,第二处理节点包括第二存储器,第一存储器和第二存储器被第一处理节点和第二处理节点共享,例如第一处理节点和第二处理节点可以通过适当的方式(例如总线)彼此通信,第一主家结点用于管理第一存储器的至少部分存储空间,第一镜像家结点与第一主家结点管理的存储空间至少部分相同或相对应。
例如,第一镜像家结点为第一主家结点的镜像,基于第一主家结点的存储空间信息创建,创建过程可以参考步骤S101,这里不再赘述。
第一主家结点用于管理第一存储器的至少部分(例如全部)存储空间(第一存储空间)。在一个示例中,该第一镜像家结点同样用于管理该第一存储空间,且保持第一主家结点和第一镜像家结点之间的一致性;在另一个示例中,该第一镜像家结点用于管理与该第一存储空间呈镜像的位于第二存储器中的第二存储空间,且保持第一主家结点和第一镜像家结点之间的一致性以及保持二者管理的第一存储空间和第二存储空间之间的一致性。上述第一处理节点和第二处理节点可以位于同一多处理器***,但是本公开的实施例不限于此,也可以是位于其他***之中。
例如,维护第一主家结点和第一镜像家结点的存储空间一致性的具体执行过程可以上文中参考步骤S102以及附图4A-图4D等的描述,这里不再赘述。
在上述实施例中,还可以进一步在更多的其他处理节点提供第一主家结点的镜像节点,例如,在第三处理节点提供第二镜像家结点,第三处理节点包括第三存储器,由此还进一步维护第一主家结点管理的存储空间和第二镜像家结点管理的存储空间一致性,相应地维护了第一镜像家结点管理的存储空间和第二镜像家结点管理的存储空间一致性。
与上述的数据访存方法相对应,本公开至少一实施例还提供一种数据访存装置,图6为本公开至少一实施例提供的一种数据访存装置的示意性框图。
例如,该数据访存装置应用于多处理器***,例如,该多处理器***包括多个处理节点,每个处理节点包括存储器且配置有至少一个家结点,每个处理节点的家结点用于管理每个处理节点的存储器的至少部分存储空间,每个处理节点的存储器在多个处理节点之间共享。
例如,如图6所示,数据访存装置700包括处理单元701。
处理单元701配置为在多处理器***中提供一致性家结点域。例如,一致性家结点域包括多个家结点,多个家结点包括第一主家结点和至少一个镜像家结点,第一主家结点和至少一个镜像家结点分别配置于不同处理节点,至少一个镜像家结点管理的存储空间与第一主家结点管理的存储空间相同,且至少一个镜像家结点与第一主家结点具有一致性。
例如,在一些实施例中,处理单元701包括创建子单元702和维护子单元703。创建子单元702配置为基于第一主家结点的存储空间信息创建至少一个镜像家结点。维护子单元703配置为维护第一主家结点和至少一个镜像家结点管理的存储空间一致性。
例如,处理单元701可以至少部分通过硬件、固件或软件,或这些方式的任何组合实现,本公开的实施例对此不作限制;对应地,创建子单元702和维护子单元703可以至少部分通过硬件、固件或软件,或它们的任何组合实现,本公开的实施例对此不作限制。例如,当这些单元至少部分通过软件实现时,相应地计算机的执行代码存储在存储器之中,并且在需要时被相应地处理器执行。
需要说明的是,处理单元701用于实现上述数据访存方法,创建子单元702用于实现图2所示的步骤S101,维护子单元703用于实现图2所示的步骤S102。从而关于处理单元701的具体说明可以参考上述数据访存方法的相关描述,关于创建子单元702的具体说明可以参考上述数据访存方法的实施例中图2所示的步骤S101的相关描述,关于维护子单元703的具体说明可以参考上述数据访存方法的实施例中图2所示的步骤S102的相关描述。此外,数据访存装置可以实现与前述数据访存方法相似的技术效果,在此不再赘述。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种数据访存方法,应用于多处理器***,其中,所述多处理器***包括多个处理节点,每个所述处理节点包括存储器且配置有至少一个家结点,每个所述处理节点的家结点用于管理每个所述处理节点的存储器的至少部分存储空间,每个所述处理节点的存储器在所述多个处理节点之间共享,
所述方法包括:
在所述多处理器***中提供一致性家结点域,其中,所述一致性家结点域包括多个家结点,所述多个家结点包括第一主家结点和至少一个镜像家结点,所述第一主家结点和所述至少一个镜像家结点分别配置于不同处理节点,所述至少一个镜像家结点管理的存储空间与所述第一主家结点管理的存储空间具有一致性。
2.根据权利要求1所述的方法,其中,在所述多处理器***中提供一致性家结点域,包括:
基于所述第一主家结点的存储空间信息创建所述至少一个镜像家结点;
维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性。
3.根据权利要求2所述的方法,其中,所述多个处理节点包括第一处理节点,所述第一主家结点配置于所述第一处理节点,
基于所述第一主家结点的存储空间信息创建所述至少一个镜像家结点,包括:
获取所述第一主家结点管理的存储空间信息;
根据所述第一主家结点管理的存储空间信息,在不同于所述第一处理节点的至少一个处理节点上分别创建所述至少一个镜像家结点,
其中,所述至少一个镜像家结点为所述第一主家结点的镜像,配置为执行所述至少一个处理节点对所述第一主家结点管理的存储空间的数据访存操作。
4.根据权利要求3所述的方法,其中,在不同于所述第一处理节点的至少一个处理节点上分别创建所述至少一个镜像家结点为响应于对所述第一处理节点的访问需求而执行的。
5.根据权利要求3所述的方法,其中,根据所述第一主家结点管理的存储空间信息,在不同于所述第一处理节点的至少一个处理节点上分别创建所述至少一个镜像家结点,包括:
根据所述第一主家结点管理的存储空间信息,确定所述第一主家结点管理的存储空间的至少部分数据;
在所述至少一个处理节点中为所述至少部分数据分配存储空间,以创建所述至少一个镜像家结点;
对所述至少一个镜像家结点管理的存储空间进行地址配置,
其中,所述至少一个镜像家结点用于管理所述至少一个处理节点中的所述至少部分数据对应的存储空间。
6.根据权利要求5所述的方法,其中,对所述至少一个镜像家结点管理的存储空间进行地址配置,包括:
配置所述至少部分数据在所述至少一个处理节点中对应的虚拟地址为所述至少部分数据在所述第一处理节点中对应的虚拟地址;
配置所述至少部分数据对应的虚拟地址在所述至少一个处理节点中映射至所述至少部分数据在所述至少一个处理节点中的存储空间。
7.根据权利要求5所述的方法,其中,在所述至少一个处理节点中为所述至少部分数据分配存储空间,以创建所述至少一个镜像家结点,包括:
在所述至少一个处理节点中为所述至少部分数据分配存储空间,将所述至少部分数据分别存入所述至少一个处理节点的存储空间,以创建所述至少一个镜像家结点。
8.根据权利要求1-7任一项所述的方法,其中,所述至少一个镜像家结点为所述至少一个处理节点中独立的家结点,或者
所述至少一个镜像家结点通过对所述至少一个处理节点中已配置的家结点扩展得到。
9.根据权利要求5所述的方法,其中,维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性,包括:
对所述多个家结点管理的存储空间设置状态位,所述状态位用于指示所述多个家结点管理的所述至少部分数据对应的存储空间在所述一致性家结点域中的访问状态;
在所述数据访存操作过程中标记所述数据访存操作对应的存储空间的状态位,并根据所述状态位的变化执行相应操作,维护所述一致性家结点域的存储空间一致性。
10.根据权利要求9所述的方法,其中,对所述多个家结点管理的存储空间设置状态位,包括:
将所述多个家结点中的每个家结点管理的所述至少部分数据对应的存储空间划分为多个存储行;
对每个存储行设置状态位,所述状态位用于指示所述每个存储行在所述一致性家结点域中的访问状态。
11.根据权利要求10所述的方法,其中,每个所述处理节点包括至少一个处理器,所述处理器包括缓存,
将所述多个家结点中的每个家结点管理的所述至少部分数据对应的存储空间划分为多个存储行,包括:
将所述每个家结点管理的所述至少部分数据对应的存储空间以所述缓存的数据传输单位为粒度进行划分,得到所述每个家结点对应的多个存储行。
12.根据权利要求10所述的方法,其中,所述多个家结点包括第一家结点,所述第一家结点为所述第一主家结点或所述至少一个镜像家结点中的任意一个,且所述第一家结点配置于发起所述数据访存操作的处理节点,
所述数据访存操作包括数据写入操作和数据读取操作,
所述状态位包括有效状态和无效状态,
在所述数据访存操作过程中标记所述数据访存操作对应的存储空间的状态位,并根据所述状态位的变化执行相应操作,维护所述一致性家结点域的存储空间一致性,包括:
响应于数据写入操作,将所述数据写入操作对应的存储行的状态位仅在所述第一家结点中设置为有效状态;
响应于数据读取操作,判断所述数据读取操作对应的存储行的状态位,
响应于所述数据读取操作对应的存储行的状态位为有效状态,则直接读取数据;
响应于所述数据读取操作对应的存储行的状态位为无效状态,则从所述一致性家结点域中所述数据读取操作对应的存储行的状态位为有效状态的家结点中读取数据。
13.根据权利要求12所述的方法,其中,所述有效状态包括独占状态,所述独占状态表示所述独占状态对应的存储行在所述一致性家结点域中具有独占权限,
将所述数据写入操作对应的存储行的状态位仅在所述第一家结点中设置为有效状态,包括:
响应于接收到所述处理节点的独占请求,由所述第一家结点解析所述独占请求,以得到所述独占请求对应的存储行信息,
根据所述存储行信息构建独占权限请求,由所述第一家结点向所述多个家结点发送所述独占权限请求,以使得所述多个家结点中除所述第一家结点外的其他家结点将所述存储行信息对应的存储行的状态位标记为无效状态;
将所述第一家结点中的所述存储行信息对应的存储行的状态位标记为独占状态。
14.根据权利要求13所述的方法,其中,所述有效状态还包括共享状态,所述共享状态表示所述共享状态对应的存储行在所述一致性家结点域中具有相同的数据,
响应于所述数据读取操作对应的存储行的状态位为无效状态,则从所述一致性家结点域中所述数据读取操作对应的存储行的状态位为有效状态的家结点中读取数据,包括:
响应于接收到所述处理节点的读取请求,由所述第一家结点解析所述读取请求,以得到所述读取请求对应的存储行信息;
根据所述存储行信息构建共享请求,由所述第一家结点向所述多个家结点发送共享请求,以获得所述多个家结点中所述存储行信息对应的存储行的状态位为独占状态的存储数据;
将所述存储数据存入所述第一家结点中所述存储行信息对应的存储行,并将所述第一家结点中所述存储行信息对应的存储行的状态位标记为共享状态。
15.根据权利要求14所述的方法,其中,将所述其他家结点中所述存储行信息对应的存储行的状态位为独占状态的家结点作为第二家结点,
由所述第一家结点向所述多个家结点发送共享请求,以获得所述多个家结点中所述存储行信息对应的存储行的状态位为独占状态的存储数据,包括:
响应于接收到所述第一家结点发送的共享请求,由所述第二家结点解析所述共享请求,以得到所述读取请求对应的存储行信息;
获取所述存储行信息在所述第二家结点所属的处理节点中对应的最新写入数据;
将所述第二家结点中与所述存储行信息对应的存储行的存储数据更新为所述最新写入数据,并将所述第二家结点中所述存储行信息对应的存储行的状态位标记为共享状态;
由所述第二家结点将所述最新写入数据发送至所述第一家结点。
16.根据权利要求11所述的方法,其中,所述数据访存操作还包括缓存替换操作,
在所述数据访存操作过程中标记所述数据访存操作对应的存储空间的状态位,并根据所述状态位的变化执行相应操作,维护所述一致性家结点域的存储空间一致性,还包括:
响应于缓存替换操作,将所述一致性家结点域中所述缓存替换操作对应的存储行的状态位均处理为有效状态。
17.根据权利要求16所述的方法,其中,所述有效状态包括共享状态,所述缓存包括多个缓存行,
响应于缓存替换操作,将所述一致性家结点域中所述缓存替换操作对应的存储行的状态位均处理为有效状态,包括:
确定所述缓存替换操作对应的被替换的缓存行的缓存数据是否为新写入数据,
响应于所述缓存数据为新写入数据,将所述一致性家结点域中所述缓存替换操作对应的存储行的存储数据均更新为所述新写入数据,并将所述一致性家结点域中所述缓存替换操作对应的存储行均标记为共享状态;
响应于所述缓存数据不是新写入数据,将所述一致性家结点域中所述缓存替换操作对应的存储行均标记为共享状态。
18.根据权利要求9-17任一项所述的方法,还包括:
响应于所述至少一个处理节点对所述第一主家结点管理的存储空间执行数据访存操作,通过所述至少一个处理节点中的镜像家结点管理的存储空间完成所述访问操作。
19.根据权利要求1-7或9-17任一项所述的方法,其中,所述多处理器***的架构为非一致性内存访问架构。
20.一种数据访存装置,应用于多处理器***,其中,所述多处理器***包括多个处理节点,每个所述处理节点包括存储器且配置有至少一个家结点,每个所述处理节点的家结点用于管理每个所述处理节点的存储器的至少部分存储空间,每个所述处理节点的存储器在所述多个处理节点之间共享,
所述装置包括:
处理单元,配置为在所述多处理器***中提供一致性家结点域,其中,所述一致性家结点域包括多个家结点,所述多个家结点包括第一主家结点和至少一个镜像家结点,所述第一主家结点和所述至少一个镜像家结点分别配置于不同处理节点,所述至少一个镜像家结点管理的存储空间与所述第一主家结点管理的存储空间具有一致性。
21.根据权利要求20所述的装置,其中,所述处理单元包括创建子单元和维护子单元,
所述创建子单元配置为基于所述第一主家结点的存储空间信息创建所述至少一个镜像家结点;
所述维护子单元配置为维护所述第一主家结点和所述至少一个镜像家结点管理的存储空间一致性。
22.一种数据访存方法,包括:
在第一处理节点提供第一主家结点,
在第二处理节点提供第一镜像家结点,其中,所述第一处理节点包括第一存储器,所述第一存储器被所述第一处理节点和所述第二处理节点共享,所述第一主家结点用于管理所述第一存储器的至少部分存储空间;
维护所述第一主家结点管理的存储空间和所述第一镜像家结点管理的存储空间一致性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011410176.6A CN112416259B (zh) | 2020-12-04 | 2020-12-04 | 数据访存方法和数据访存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011410176.6A CN112416259B (zh) | 2020-12-04 | 2020-12-04 | 数据访存方法和数据访存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416259A true CN112416259A (zh) | 2021-02-26 |
CN112416259B CN112416259B (zh) | 2022-09-13 |
Family
ID=74829160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011410176.6A Active CN112416259B (zh) | 2020-12-04 | 2020-12-04 | 数据访存方法和数据访存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416259B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115394392A (zh) * | 2022-08-31 | 2022-11-25 | 西安交通大学 | 一种医疗数据的共享***及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101135953A (zh) * | 2007-08-17 | 2008-03-05 | 杭州华三通信技术有限公司 | 存储控制***及其处理节点 |
CN102447609A (zh) * | 2010-09-30 | 2012-05-09 | ***通信集团公司 | 一种虚拟化资源***中虚拟节点的部署方法及装置 |
CN102591800A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种弱一致性存储模型的数据访存***和方法 |
CN102945139A (zh) * | 2011-09-12 | 2013-02-27 | 微软公司 | 存储设备驱动器和集群参与 |
CN103744799A (zh) * | 2013-12-26 | 2014-04-23 | 华为技术有限公司 | 一种内存数据访问方法、装置和*** |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
CN111143244A (zh) * | 2019-12-30 | 2020-05-12 | 海光信息技术有限公司 | 计算机设备的内存访问方法和计算机设备 |
-
2020
- 2020-12-04 CN CN202011410176.6A patent/CN112416259B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101135953A (zh) * | 2007-08-17 | 2008-03-05 | 杭州华三通信技术有限公司 | 存储控制***及其处理节点 |
CN102447609A (zh) * | 2010-09-30 | 2012-05-09 | ***通信集团公司 | 一种虚拟化资源***中虚拟节点的部署方法及装置 |
CN102945139A (zh) * | 2011-09-12 | 2013-02-27 | 微软公司 | 存储设备驱动器和集群参与 |
CN102591800A (zh) * | 2011-12-31 | 2012-07-18 | 龙芯中科技术有限公司 | 一种弱一致性存储模型的数据访存***和方法 |
CN103744799A (zh) * | 2013-12-26 | 2014-04-23 | 华为技术有限公司 | 一种内存数据访问方法、装置和*** |
CN104899160A (zh) * | 2015-05-30 | 2015-09-09 | 华为技术有限公司 | 一种缓存数据控制方法、节点控制器和*** |
CN111143244A (zh) * | 2019-12-30 | 2020-05-12 | 海光信息技术有限公司 | 计算机设备的内存访问方法和计算机设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115394392A (zh) * | 2022-08-31 | 2022-11-25 | 西安交通大学 | 一种医疗数据的共享***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112416259B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6651145B1 (en) | Method and apparatus for scalable disambiguated coherence in shared storage hierarchies | |
US7680987B1 (en) | Sub-page-granular cache coherency using shared virtual memory mechanism | |
JP5153172B2 (ja) | アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム | |
US8176259B2 (en) | System and method for resolving transactions in a cache coherency protocol | |
US20050160238A1 (en) | System and method for conflict responses in a cache coherency protocol with ordering point migration | |
US20170192886A1 (en) | Cache management for nonvolatile main memory | |
JPH05128071A (ja) | 多重プロセツサ・システムの性能の最適化装置及び方法 | |
CN111143244B (zh) | 计算机设备的内存访问方法和计算机设备 | |
CN103294612A (zh) | 一种在多级缓存一致性域***局部域构造Share-F状态的方法 | |
US7395374B2 (en) | System and method for conflict responses in a cache coherency protocol with ordering point migration | |
US20020078305A1 (en) | Method and apparatus for invalidating a cache line without data return in a multi-node architecture | |
CN109117416B (zh) | 插槽间的数据迁移或交换的方法和装置以及多处理器*** | |
JP2005519391A (ja) | 共有ベクトルの増加を伴わないdsmマルチプロセッサシステムにおけるキャッシュコヒーレンスのための方法およびシステム | |
JP2002157164A (ja) | データ一貫性メモリ管理システム及び方法及び関連するマルチプロセッサネットワーク | |
CN114416387A (zh) | 基于同构多核的多操作***及通信方法、芯片 | |
US7143245B2 (en) | System and method for read migratory optimization in a cache coherency protocol | |
EP3249539B1 (en) | Method and device for accessing data visitor directory in multi-core system | |
US8145847B2 (en) | Cache coherency protocol with ordering points | |
CN112416259B (zh) | 数据访存方法和数据访存装置 | |
US8090914B2 (en) | System and method for creating ordering points | |
US20140281266A1 (en) | Maintaining Coherence When Removing Nodes From a Directory-Based Shared Memory System | |
KR101695845B1 (ko) | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 | |
US7818391B2 (en) | System and method to facilitate ordering point migration | |
JP2023543231A (ja) | スケーラブル領域ベースのディレクトリ | |
KR20000016945A (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 |