存储器节点控制器

文档序号:1432167 发布日期:2020-03-17 浏览:14次 >En<

阅读说明:本技术 存储器节点控制器 (Memory node controller ) 是由 乔纳森·柯蒂斯·比尔德 罗克萨娜·鲁西托鲁 柯蒂斯·格伦·邓纳姆 于 2018-07-05 设计创作,主要内容包括:一种用于数据处理网络的节点的存储器节点控制器,所述网络包括至少一个计算设备和至少一个数据资源,每个数据资源通过物理地址来寻址。所述节点被配置为将所述至少一个计算设备与所述至少一个数据资源耦合。所述数据处理网络的元件经由系统地址空间来寻址。所述存储器节点控制器包括:到所述至少一个数据资源的第一接口;到所述至少一个计算设备的第二接口;以及系统地址到物理地址转换器缓存,所述系统地址到物理地址转换器缓存被配置为将所述系统地址空间中的系统地址转换为所述至少一个数据资源的物理地址空间中的物理地址。(A memory node controller for a node of a data processing network, the network comprising at least one computing device and at least one data resource, each data resource being addressed by a physical address. The node is configured to couple the at least one computing device with the at least one data resource. The elements of the data processing network are addressed via a system address space. The memory node controller includes: a first interface to the at least one data resource; a second interface to the at least one computing device; and a system address to physical address translator cache configured to translate a system address in the system address space to a physical address in a physical address space of the at least one data resource.)

存储器节点控制器

有关联邦政府赞助的研究或开发的声明

本发明是根据由DOE授予的Fast Forward 2合同在美国政府支持下做出的。美国政府享有本发明的特定权利。

技术领域

本公开涉及对数据处理网络中的物理设备存储器的控制。

背景技术

数据处理系统可以包括各种类型的多个计算设备和不同类型的多个存储器资源。例如,系统可以包括动态随机存取存储器(DRAM)、块设备、远程直接存储器存取(RDMA)装置、位于硬件加速器上的存储器以及其他类型的易失性和非易失性存储器。数据处理系统内的存储器和其他资源通过系统地址空间来寻址,而每个存储器设备通过物理地址空间来寻址。

通过对操作系统的软件调用,或者通过软件介导转换过程(software mediatedtranslation process)的硬件缓存,可以静态地执行系统地址与对应的物理地址之间的映射。特别是当在多个处理核心或多个进程之间共享存储器资源时并且当存储器资源具有不同的特性时,这样的方法不提供存储器的最佳使用。

具体实施方式

虽然可以以许多不同的形式具体实现本发明,但是在附图中示出并将在本文中详细地描述具体实施例,同时应理解,本公开将被认为是本发明的原理的示例,而不旨在将本发明限于所示和所述的具体实施例。在下面的描述中,相似的附图标记可以用于描述附图的若干视图中的相同的、类似的或对应的部分。

在本文档中,诸如第一和第二、顶部和底部等的关系术语可以仅用于将一个实体或动作与另一实体或动作区分开,而不一定在这样的实体或动作之间要求或者暗示任何实际的这种关系或次序。术语“包含”、“包含有”、“包括”、“包括有”、“有”、“具有”或其任何其他变型旨在涵盖非排他性包括,使得包含元素的列表的过程、方法、物品或装置不仅包括那些元素,还可以包括未明确列出的或者为这样的过程、方法、物品或装置所固有的其他元素。在没有更多约束的情况下,继之以“包含...一”的元素不排除在包含该元素的过程、方法、物品或装置中存在附加相同的元素。

贯穿本文档对“一个实施例”、“某些实施例”、“实施例”、“(一个或多个)实现方式”、“(一个或多个)方面”或类似的术语的引用意味着连同该实施例一起描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,这样的短语贯穿本说明书在各个地方中的出现不一定全部参考同一实施例。此外,可以在一个或多个实施例中以任何适合的方式组合特定特征、结构或特性而没有限制。

如本文所使用的术语“或”将被解释为包括性的或者意指任何一个或任何组合。因此,“A、B或C”意指“以下项中的任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元素、功能、步骤或行为的组合以某种方式固有地相互排斥时才会发生此定义的例外。另外,除非另外陈述或者从上下文中清楚,否则语法连词旨在表达结合从句、句子、单词等的任何且所有反意连词(disjunctive)和连词(conjunctive)组合。因此,术语“或”通常应该被理解为意指“和/或”等。

本文提及的所有文档都特此通过引用整体地并入。除非另外明确地陈述或者从文本中清楚,否则对单数项目的引用应该被理解为包括复数项目,并且反之亦然。

单词“大约”、“近似”、“基本上”等当伴随数值时,将被解释为指示如本领域的普通技术人员应领会的偏差以出于预定目的令人满意地操作。值和/或数值的范围在本文中仅作为示例被提供,而不对所述的实施例的范围构成限制。本文提供的任何和所有示例或示例性语言(“例如”、“诸如”等)的使用仅仅旨在更好地阐明实施例,而不对实施例的范围造成限制。说明书中的语言不应被解释为将任何未要求保护的元素指示为对实施例的实践必不可少。

为了图示的简单和清楚,可以在图之间重复附图标记以指示对应或相似的元素。许多细节被阐述以提供对本文描述的实施例的理解。可以在没有这些细节的情况下实践实施例。在其他情况下,尚未详细地描述公知的方法、程序和组件以避免使所描述的实施例模糊。描述不应被认为限于本文描述的实施例的范围。

在以下描述中,应理解的是,诸如“第一”、“第二”、“顶部”、“底部”、“上”、“下”、“在…上方”、“在…下方”等的术语是方便的单词,而不应被解释为限制性术语。另外,可以在本文中可互换地使用术语装置和设备。

系统

图1是与本公开的实施例一致的数据处理网络的示意性图示。参考图1,数据处理网络包括多个处理器核心100、110。在图1的示例中,图示了两个这样的处理器核心,但是(如通过虚线框112示意性地示出的)可以提供更多的处理器核心。替代地,系统可以包括仅一个处理器核心。

处理器核心被布置为根据虚拟存储器地址来处理数据。例如,处理器核心中的每一个均可以例如在操作系统或所谓的管理程序的控制下根据相应的虚拟存储器地址空间中的虚拟存储器地址来处理数据,所述操作系统或所谓的管理程序向正在由不同的处理器核心执行的进程分配虚拟存储器地址空间,部分地作为用于避免与意外地或恶意地访问适合正在由处理器核心中的另一个执行的进程的数据的一个处理器核心相关联的进程的技术。

第一层存储器地址转换

数据处理网络的元件(诸如存储器和其他资源)可通过系统地址空间中的系统地址进行寻址。存储器地址转换装置被提供来在虚拟存储器地址空间中的虚拟存储器地址与系统地址空间中的系统地址之间转换。此系统地址空间可以经由间接手段或者经由将此系统地址空间作为匿名物理空间来访问的处理设备被访问(即,用于处理设备的物理存储器被虚拟化)。系统地址是第一层的“输出”存储器地址。系统地址可以表示能用来以物理方式对物理存储器设备或其他可寻址单元进行寻址的物理地址。替代地,系统地址可以表示在用于访问物理存储器设备或其他可寻址单元之前需要地址转换的另一阶段的地址。从地址转换技术的角度来看,这些选项是等效的。也就是说,地址转换技术从虚拟存储器地址开始并且产生系统存储器地址。对系统地址的地址转换的另一阶段由存储器节点控制器160和170提供。在此示例中,传递给存储器节点控制器的地址在范围内。然而,在替代实施例中,传递给存储器节点控制器的地址由位于MNC层顶部上的常规基于页面的虚拟存储器系统提供。在此实现方式中,基于页面的虚拟存储器层会将它们视为物理设备地址,但是MNC会将这些视为系统地址。

在图1中,地址转换由所谓的范围表缓冲器(RTB)105、115执行。这执行虚拟存储器地址空间中的虚拟存储器地址与系统(输出)地址空间中的系统存储器地址之间的地址转换。处理器核心中的每一个均具有相应的范围表缓冲器。范围表缓冲器的操作在共同未决的专利申请No.15/649,930中进行了详细的描述,其特此通过引用整体地并入本文。然而,可以使用其他地址转换技术,诸如例如转换后备缓冲器(TLB)。

旁路逻辑108、118被提供来当地址转换使得虚拟存储器地址等同于对应的系统存储器地址时选择性地绕过RTB 105、115。旁路电路或逻辑可通过将在下面讨论的控制信号109、119来控制。当旁路逻辑被启用时,RTB 105、115不执行任何转换,或者由RTB 105、115执行的转换被忽视并且虚拟存储器地址由旁路路线104、114提供以用作输出存储器地址。

处理器核心100、110在此示例中被实现或者制作在集成电路基板上,并且可以都(或全部,在不止两个的情况下)被设置在同一集成电路基板上。这些设备在图1中被称为“片上”。

另外片上提供的是用于为由要在下面讨论的存储器系统所保持的数据的子集(诸如最近访问的子集和/或推测地取出的子集)提供临时暂存器的缓存和/或系统缓存存储器130。如图1中所示,处理器核心100和110共享公共缓存/系统缓存130。然而,在其他示例中可以提供不止一个缓存,并且另一缓存140用虚线示出以图示这样的布置。在一个实施例中,可以利用虚拟索引和系统地址标签来与缓存/系统缓存130并行地访问缓存。

在一个实施例中,缓存/系统缓存130(140)根据由RTB 105、115生成的系统(输出)存储器地址来操作。在另一实施例中,与RTB 105、115并行地访问第一级缓存。

虚线150指示片上设备与片外设备之间的逻辑边界,但是应领会的是,这仅仅是示例并且在图1中在同一集成电路上或者作为不同的电路示出的模块中的任一个的实现方式是系统设计者的事情。因此,图1表示可以如何实现片上和片外组件的分离的示意性示例。

存储器节点控制器

提供了片外一个或多个存储器节点控制器160、170,其进而访问一个或多个相应的物理设备180、190,例如随机存取存储器(DRAM)、相变存储器(PCM)和高带宽存储器(HBM)。考虑到物理设备180、190在物理地址空间中操作,存储器节点控制器160、170的功能可以包括:(a)如果需要转换的另一阶段则将系统(输出)存储地址转换为物理设备存储器地址,以及(b)管理需要访问物理设备180、190中的哪一个以便实现要求的存储器存取操作。

以上提及的转换操作(a)是第二层地址转换并且可以使用要在下面讨论的技术或者通过已知的存储器地址转换技术来执行。可以使用例如存储在存储器节点控制器160、170中的一个或多个处的表或目录来执行用于管理应该访问物理设备180、190中的哪一个的管理操作(b)以指示物理地址空间在物理设备和进而存储器节点控制器之间的分区。

在图1的示例中,提供了两个存储器节点控制器。如果存储器节点控制器中的一个(诸如存储器节点控制器160)接收到对与由另一存储器节点控制器(诸如存储器节点控制器170)处理的地址有关的存储器存取事务的请求,则第一存储器节点控制器160可以经由数据连接165与另一存储器节点控制器170进行通信,从而传递与该事务有关的系统地址并且请求由第二存储器节点控制器170执行该事务。

本公开涉及存储器节点控制器(MNC)。根据某些实施例,MNC提供专用硬件机制来收集并使用元数据,包括诸如重用距离的性能统计。元数据用于在可用技术中提供存储器页面的更好放置。

如上所述,MNC将数据处理网络的系统地址空间的至少一个分区映射到物理设备存储器空间。MNC提供从系统地址空间到资源中的物理空间的映射功能,所述资源诸如例如DRAM设备、块设备、远程直接存储器存取(RDMA)装置或位于硬件加速器上的存储器。RDMA装置可以是用于远程存储器存取的任何存储器或存储设备。MNC提供用于进行以下各项的功能:写入到系统地址、维护跨存储器结构的页面级别所有权、经由元数据跟踪将页面最佳地置于存储器中、以及将数据向前馈送到快速片上存储器。MNC用硬件加以实现并且可以是具有附加功能的集成电路的一部分。例如,可以从网络表或硬件描述语言(HDL)表示合成MNC。

根据某些实施例,MNC将诸如存储装置、存储器或网络接口控制器(NIC)之类的资源的单个抽象提供到单个系统地址空间中。

根据某些实施例,MNC提供用于将在MNC页面级的存储器视为在多个MNC之间“可共享”的手段。

根据某些实施例,MNC提供写时复制(Copy-on-Write)装置的第二层。

根据某些实施例,MNC提供用于执行单个复制操作的高效手段。这个可以被例如提供给加速器设备的所有级别并且可以经由NIC提供。

根据某些实施例,MNC是遵循存储器服务器模型配置的存储器结构的一部分,其中存储器结构为来自数据处理网络的各种本地或远程计算设备的存储器请求服务。

图2是与本公开的实施例一致的数据处理网络200的框图。数据处理网络200包括第一存储器节点控制器(MNC 0)160以及可选地一个或多个第二存储器节点控制器,诸如MCN 1 170。MNC 160包括耦合到多个其他功能块的控制逻辑204。

设备接口206使得MNC 160能够与多个计算设备208和210以及诸如硬件加速器这样的其他设备交互。计算设备可以是片上的或片外的。系统200被配置为网络,其中MNC 160和170提供将计算设备(诸如208和210)与存储器资源互连的网络节点。在一个实施例中,设备接口206符合‘快速***组件互连(Peripheral Component Interconnect Express)’(PCIe)标准。PCIe是用于互连计算机中的内部设备的非专有标准。例如,设备接口206可以包括PCIe根联合体(root complex),其使得能够与多个计算机元件或虚拟化PCIe设备连接。当使用多个MNC节点时,该节点是PCIe标准中的‘多根(multi-root)’。然而,MNC还可支持顾客操作系统的单根虚拟化以便于向后兼容性。MNC网络上的设备经由虚拟化硬件介导PCI设备树被识别。

IO控制器

MNC 160还包括I/O控制器(IOC)212。IOC 212是使得能够连接到片外组件的通用互连或总线。这个可以是具有协议的定制物理层,其使得能够对命令做出响应或者传输命令。例如,命令可以是指令集架构(ISA)级存储器指令。例如,IOC 212可以在诸如PCIe-v4结构这样的标准结构下操作。根据由MNC和整体系统所要求的特性,可以使用其他物理层。IOC212使得能能够与其他MNC设备进行通信。

存储器控制器

MNC 160还包括存储器/存储组件,诸如使得能够与存储设备216耦合的存储器控制器214(诸如一个或多个DRAM控制器)、用于与块设备220耦合的块设备控制器218(诸如例如SATA控制器)。每个设备被映射到可由操作系统进一步虚拟化的存储器的物理范围。

附加IO控制器222使得能够连接到诸如网络接口控制器224这样的设备。

在图2中所示的实施例中,MNC 160还包括加速器物理存储器226、用作用于数据重排、存储器内计算并用于NIC和RDMA事务的本地缓冲器的快速本地存储器232(诸如例如组合式DRAM/NV 3-D集成存储器)。

物理设备配置设置(PDSC)存储器

配置数据被存储在物理设备配置设置(PDCS)存储器228中。例如,可以在PDCS存储器228中存储通过系统地址空间对加速器物理存储器226的映射。物理设备配置信息经由固件接口、板上非易失性存储器(诸如SPI闪存或等同物)、小型持久可移动存储装置(诸如microSD卡)或可传送用于物理映射配置及诸如信道和中断分配这样的其他配置的信息的任何其他方法被提供给MNC。物理设备(诸如SATA、PCIe、SSD、DRAM和其他设备)被从虚拟系统地址范围映射到物理设备范围。

在一个实施例中,PDSC存储器存储告诉MNC有关网络上存在的设备的信息。这使得设备能够将彼此实际上从指定的存储器空间“映射”到其操作系统和文件系统中。

与存储设备有关的信息是稍微不同的,并且告诉MNC什么设备被附连、其特性以及要为它们分配什么总线通道或信道。此外,对于PCIe加速器,可能需要提供其他配置数据以及该加速器设备的系统地址映射,使得可将它映射到主机操作系统的系统地址空间中以用于虚拟化。

总之,PDSC存储器中的配置信息给MNC提供使外部设备动作并且将诸如加速器、计算设备和网络接口控制器这样的设备映射到系统地址空间以使得能实现虚拟化所需的信息。这种信息可以补充或者替换内核内的传统设备配置。

可以容易地在启动时通过握手发现其他存储器节点控制器,但是也可以在配置信息中直接地指定它们。

系统到物理转换(STP)缓存结构

系统到物理转换(STP)缓存结构230持有将系统地址映射到各种设备上的物理页面的转换结构。此结构的示例实现方式是稀疏哈希图,其中最频繁地使用的N个转换驻留在静态随机存取存储器(SRAM)中,同时溢出通过STP缓存移动到由MNC存储器控制器214分配的DRAM。在一些实施例中,STP缓存中的SRAM可以足够大以存储大多数的地址转换。从系统地址到物理地址的转换可以经由哈希图被执行,并且在一些哈希图实现方式中,可在单个时钟周期边缘上被执行。

缓存

缓存130和140可以是用于便于往返MNC 160的数据传输的近网络边缘数据缓存。这些被称为数据交付缓存(DDC)并且可以位于片上。在MNC 160内,存储器被分成表示具体量的存储器(诸如4K区域)的页面,所述页面可以被置于任何类型的物理设备上。将较大的范围分成较小的页面使得能实现改进的存储器技术放置并且为元数据收集提供上限,因为仅需要以页面粒度保持数据。元数据使得存储器节点控制器160能够将物理页面置于最佳存储器/存储技术上(基于某个成本函数),并且另外,使用“前馈”方法来将页面放置到片上缓存。在前馈方法中,MNC(以某个种粒度)将对核心和应用最佳(即,基于带宽要求、重用距离等)的数据页面馈送到在核心上正好需要它的高带宽/低延迟存储器。

网络配置

图3是与本公开一致的并入存储器节点控制器的简化网络300的框图。简化网络300包括节点302、304和306。每个节点包括存储器节点控制器(MNC)。存储器/存储元件308和310在节点302处的MNC-0的归属范围内,正如远程访问设备312(其例如可以经由NIC来访问)一样。对这些元件的访问由MNC-0(302)提供。网络300被布置为集群网络,其中节点302处的MNC-0被配置为向计算设备314、316和318的集群提供存储器/存储资源。这些可以是处理器核心或其他计算设备。类似地,在网络的节点304和306处的MNC将各自为计算设备的集群服务并且控制对专用存储器/存储元件的访问。MNC经由信道324耦合到计算设备314、316和318并且经由信道326耦合到存储器/存储元件308和310。

网络300中MNC 302的功能是为了向本地设备314、316和318或者向经由其他节点304和306耦合的设备提供存储页面。节点302处的MNC-0经由链路320耦合到节点304处的MNC-1并且经由链路322耦合到节点306处的MNC-2。对于本领域的技术人员而言将显而易见的是,可以使用不同的网络拓扑,并且可以使用任何数量的节点、计算机元件和存储器/存储设备。

在操作中,从计算设备发送到MNC的请求引用系统地址。从MNC发送到存储器/存储资源的请求引用物理(或网络)地址。MNC被配置为执行从系统地址到物理地址的转换。

网络中的存储器存取请求的路由

存储器节点控制器的一个功能是将系统地址转换为物理地址。当在具有存储器节点控制器的网络的数据处理系统中发送要访问特定地址处的存储器的请求时,该请求被路由到适当的MNC。可以使用各种路由技术。实施例可以使用例如如图3中所描绘的集群存储器节点控制器方案。通常,在集群方案中,对于K个MNC中的每一个来说可以有最多N个核心或计算设备。这N个计算机元件将被群集,使得最佳路由是到该本地存储器节点。源自这些核心的每个存储器请求直接地转到最近的MNC。如果请求是对被静态地分配给该MNC的页面的或对从另一MNC动态地共享的页面的,则可以将该请求立即返回给核心。然而,如果另一MNC拥有存储器(例如,由通过一致性协议(诸如例如在图4中示出并在下面讨论的一致性协议)所确定的),则对请求来说在被满足之前有一个附加网络跳。当系统的操作被启动时,每个MNC被分配了可被系统利用的总体系统可寻址空间的区域或分区(同时提供用于重新分区以便于热插拔)。分配给每个存储器节点的分区中的每一个然后被分成页面。此系统的优点是局部性通过存储器请求源自的MNC是隐式的。在没有附加数据的情况下,访问节点的计算设备是已知的(或者至少访问节点的集群是已知的)。使用该信息,MNC可以在存储器网络内迁移数据页面,或者在计算模式授权给它的情况下从分区的所有者中检出它们。

与一些实施例一致,通过受限目录结构便于页面的检出。受限目录结构可以被存储在MNC本地的存储器(诸如图2中的本地存储器232)中,所以受限目录结构是隐式地支持存储器的且受硬件管理的。在另一实施例中,受限目录结构被存储在SRAM或其他快速存储器中,使得当页面被检出时,它们可被送入到目录结构中。

再次参考图3,当来自核心或计算设备的访问系统地址处的存储器的请求从该计算元件到达存储器网络300的MNC时,使用系统地址来执行路由计算。由于接收到请求的MNC仅对全局地址空间的一部分进行寻址,所以可能需要将请求路由到网络中的另一MNC。如果当前MNC不控制包含地址的存储器分区,则请求被转发到适当的MNC。例如,来自计算机元件314的访问节点304处的MCN-1的主分区中的地址的请求被节点302处的MNC-0接收并且经由链路320转发到节点304处的MNC-1。

当地址在从核心到MNC的请求中到达时,针对该地址执行路由计算。如果地址在当前存储节点的分区外,则可以通过查阅目录以确定页面是否被从其外部系统地址分区主节点检入来并行地执行用于路由的范围查找。

与为系统地址确定路由并行地,能根据实现方式要求而执行两个操作中的一个。首先,能查阅哈希以查看页面(假定读取地址在系统地址空间的当前存储器节点的分区外)是否被从其主节点检出并且当前驻留在当前节点中(执行地址计算的节点)。另一选项是为了使用类似目录的方法学,所述方法学将请求数据分组发送到系统地址分区的主节点,然后该节点确定页面是否被更近的节点检出。在此方法中,始发MNC(即从计算设备接收到请求的第一节点)被编码在分组中。此方法在节点在本地被检出的情况下可能要求一个附加网络跳,但是有减少的总体数据移动的好处,同时保留与请求套接字进行数据交织的好处。

在MNC内,存在能在硬件中使用来存储寻呼信息的多个数据结构。例如,在一个实施例中,使用稀疏哈希图结构,其可以作为树结构被实现。在对没有物理支持的页面进行写入操作时,在通过优化功能选取的一类存储器中(作为示例很可能首先在DRAM中)创建支持,然而,它能在非易失性介质中容易地创建新脏页面。在读取操作时,发生类似的事情。可以在逐页面基础上执行操作,其中页面是某个粒度(例如4K)下的范围的子集。以这种方式,提供范围转换并且页面被分条/放置在最高效的存储器技术上。在下面参考描述此结构的描绘。每个页面可由MNC放置在存储器网络中的任何地方,而无需核心做出任何改变或者采取任何动作。

由于可以在计算机设备之间共享数据,所以使用一致性协议来防止对包含过期数据的存储页面进行访问。为此,可以使用受限目录结构来存储数据页面的状态。

图4示出与本公开的实施例一致的用于修改的MESI协议的示例状态图400。数据可以被识别为处于四种不同的状态中的一种下:“修改”(M)402、“独占”(E)404、“共享”(S)406和“无效”(I)408。MESI图400图示不同的状态之间的转变。除了诸如页面利用率统计、性能计数器等这样的其他数据之外,还可以通过用于每个页面的元数据中的状态位来指示状态。状态图400图示用于MNC页面共享的修改的MESI协议在MNC网络内被管理。

例如,不是来自当前MNC的分区的检出页面被称为“外来”页面并且其检出状态被记录在MNC的目录中,所述目录可以被存储在本地存储器中。对于当前MNC的分区中的页面,即当前MNC为主分区MNC的页面,在页面元数据内指示检出状态。

例如,当页面被分配时,可在“独占”状态(E)404下从主分区MNC最初检出它。在已发生写入之后,状态变成“修改”(M)。在页面已被同步回到主分区MNC之后,状态返回到“共享”(S)406。

如果页面在它处于“独占”(E)状态404或“共享”(S)状态406下时被取消分配,则状态被改变为“无效”(I)408。可选地,可通过“重新验证”指令将页面返回到“共享”(S)状态406。

一旦在目录结构中需要空间或者如果在共享状态下从其他节点请求页面,则检出页面将最终被迁移回到主分区MNC。将页面移回到主分区MNC类似于将数据从标准缓存写回到存储器。然而,MNC可以使页面保持在持久存储器或易失性存储器中,其作为检出页面的状态被指示在元数据中。

每个MNC在启动时或在重新协商过程期间被分配了完整系统地址空间的分块或分区。示例系统地址范围可以是:{base_address+0)→{base_address+n)。此分区在MNC后面被进一步细分成物理地址(或在NIC的情况下为网络地址)。MNC控制对在它后面的能够存储数据的所有资源的访问,并且将系统地址空间映射到那些资源中的物理或网络地址。也可以将文件系统和联网功能性映射到此地址空间中。具有板上存储器的加速器也被映射到此地址空间中并且可以通过接口从其虚拟地址空间访问,而无需了解系统地址空间。

在处理器核心上开始,使用范围转换缓冲器(RTB)或转换后备缓冲器(TLB)来将请求中的虚拟存储器地址转换为系统地址空间中的地址。请求然后被发送到存储器节点控制器。

在第一实施例中,在MNC之间划分存储器空间,使得在引导之后存在固定静态映射。此方法具有对路由计算并且始终转到正确的节点来说快速的优点。然而,此方法对于片上路由来说或者对于优化存储器放置来说可能不是最佳的。固定计算次优的一个原因是它增加片上存储器业务,所述片上存储器业务能以其他方式被用于核心到核心(或线程到线程)通信。另一原因是利用N个核心支持片上集群局部性所需的开销在每个存储器请求情况下是log2(N)。请求将被加标签以指示其来源,然后传送到MNC。例如,当简单性比开销更重要时,可以使用此方法。

在另一实施例中,假定了每K个MNC将有N个核心,并且这N个核心将被群集,与全连接网格相反。在此方法中,路由路径从集群起通过一个或多个缓存(包括任何DDC)并且然后到与该集群相关联的片外互连控制器。例如,此互连可以利用PCIe或其他物理层。MNC被各自分配了静态系统地址分区。可以在引导配置或系统重置之后做这个,以便于存储装置/存储器的热添加/去除/插拔。在MNC处,系统地址范围被进一步细分成页面,所述页面要么被零分配(用于初始分配)要么指向某个设备上的物理存储器。此路由路径的优点是请求的来源在业务源中是隐式的。例如,在没有进一步信息或元数据的情况下已知哪一个核心集群隐式地创建了业务。捕获并记录始发核心否则将要求至少足够的位以按每个存储器请求对节点内的集群的数量进行编码。使用局部性信息,MNC网络可迁移网络内的虚拟页面,或者在计算模式授权给它的情况下从系统地址分区的所有者中检出它们。

通过软件感知来便于此基础设施的高效使用。考虑到在N个MNC之间拆分系统地址空间,并且这些MNC基于例如物理局部性被连接到计算设备,任务可被调度使得它们在连接到控制已经分配的系统和物理存储器的MNC或者至少连接到附近的MNC的计算设备上被执行。这确保低延迟通信。

图5是与本公开一致的数据处理网络500的框图。数据处理网络500包括在虚拟存储器空间504中操作的核心或计算设备502。在所示的实施例中,系统地址空间被划分成三个分区R1、R2和R3。系统500还包括与系统存储器分区508(R1)相关联的MNC 506、与系统存储器分区512(R2)相关联的MNC 510以及与系统存储器分区516(R3)相关联的MNC 514。MNC506控制对存储器资源518的访问,所述存储器资源518存储在此示例中具有物理地址P1、P2、P3和P4的页面520。MNC 506将分区R1中的系统地址转换为存储器资源518中的物理地址。类似地,MNC 510控制对存储器资源522的访问,所述存储器资源522存储在此示例中具有物理地址P5、P6、P7和P8的页面524。MNC 510将分区R2中的系统地址转换为存储器资源522中的物理地址。MNC 514控制对存储器资源526的访问,所述存储器资源526存储在此示例中具有物理地址P9、P10、P11和P12的页面528。MNC 514将分区R3中的系统地址转换为存储器资源526中的物理地址。以这种方式,48K地址空间被拆分成四个16K分区并且每个16K分区被拆分成在物理资源之间分配的四个4K页面。

当核心502发出要访问空间504中的虚拟地址处的数据的请求时,虚拟地址被转换为范围表缓冲器530中的系统地址。如果在本地缓存中未找到该地址,则系统地址被传递给耦合到核心502的MNC。在此示例中,系统地址被传递给MNC-1(510)。MNC-1(510)确定系统地址是否在分区R2中。如果系统地址是在分区R2中,则522的对应存储器资源与该存储器资源中的物理地址一起被识别,并且该物理地址处的数据被访问。可以通过链路532确认存储器写入访问。通过链路532返回从存储器资源读取的数据。

如果系统地址不在分区R2中,则控制该分区的MNC被识别并且请求被转发到所识别的为请求服务的MNC。对请求的任何响应经由链路532被返回给核心502。

在某些实施例中,使用存储在系统到物理转换(STP)缓存(例如,图2中的230)中的数据结构来在MNC内在系统地址与物理地址之间做出转换。数据结构可以是使用页面条目的掩码哈希查找的表。例如,可以用系统地址与作为二的幂的页面大小之间的逻辑与运算来计算页面编号。RTP缓存中的示例页面条目可以包含表1中所示的信息。

表1.

Figure BDA0002362670640000151

在一个实施例中,使用三个指针来支持写时复制,一个指针指向作为当前干净物理副本(头)的条目,一个指针是父并且一个指针是子。这使得更新过程能够被优化。其他变化对于本领域的技术人员而言将是显而易见的。

可以通过使用伙伴存储器分配方案或可以通过稀疏树表示的其他方案来高效地处理存储器分配。系统地址范围的压缩(重新排序)可例如通过发信号通知OS找到包含系统地址的处理线程并且然后更改系统地址范围来完成。此过程可以是费时的。然而,对于大系统地址空间(诸如64位),除非当前系统变得非常更大,否则这不太可能发生。

页面信息被存储在存储器中。在硬件的最简单实现方式中,条目被用于每个页面。例如,如果单个MNC被分配了100TB地址分区并且如果页面大小被选择为2MB,则即使设备完全满了,表也会适合小64MB SRAM结构。如果要存储其他元数据则要求附加空间。然而,在一个实施例中,通过将空页面压缩到零页面范围中来减小表的大小。在另一实施例中,转换数据可以是持久的或者具有第二副本以确保持久性。

图6是与本公开的实施例一致的用于在路由存储器存取请求的数据处理网络中通过一个或多个计算设备来访问一个或多个数据资源的方法的流程图600。紧跟开始块602之后,在块604处将数据处理网络的元件映射到系统地址空间。在块606处,将系统地址空间的范围或区域分配给数据处理网络的存储器节点控制器。例如,可以将第一分区分配给第一存储器节点控制器MNC-1,并且将第二分区分配给第二存储器节点控制器MNC-2。在块608处,在MNC-1处接收要在系统地址空间中的系统地址处访问数据处理网络的元件的请求。当系统地址在MNC-1的分区中时,如通过来自判定块610的肯定分支所描绘的,在块612处使用MNC-1来为请求服务。当系统地址不在MNC-1的分区中时,如通过来自判定块610的否定分支所描绘的,流程继续到判定块614。如果系统地址被与第一存储器节点控制器动态地共享,如通过来自判定块614的肯定分支所描绘的,则在块612处再次使用MNC-1来为请求服务。如果系统地址未被与第一存储器节点控制器动态地共享,如通过来自判定块614的否定分支所描绘的,则在块616处将请求转发到MNC以得到系统地址,在块616处请求被服务。过程在块618处终止。MNC-1通过在块620处识别适当的数据资源并且在块622处将系统地址转换为数据资源中的物理地址来为请求服务。例如,可以通过访问表或目录来做这个。请求的服务在块624处完成并且过程在块618处终止。

一些实施例涉及与本公开的实施例一致的用于路由存储器存取请求的方法。该方法适用于如上面参考图3所描述的集群存储器节点控制器方案。通常,在集群方案中,对于K个MNC中的每一个来说可以可以有最多N个核心或计算设备。这N个计算机元件将被群集,使得最佳路由是到该本地存储器节点。要访问资源系统地址的存储器请求被MNC接收。源自这些核心的每个存储器请求直接地转到最近的MNC,所以请求来自MNC的本地集群中的核心。在块620处确定到保持所请求的页面的适当的数据资源的信道。如果请求是针对被静态地分配给该MNC的页面的或者针对从另一MNC动态地共享的页面的,则可以将该请求立即返回给核心。然而,如果另一MNC拥有存储器(例如,由通过一致性协议所确定的),则对于请求来说在被满足之前有一个附加网络跳。当系统的操作被启动时,每个MNC被分配了可被系统利用的总体系统可寻址空间的区域(同时提供用于重新分区以便于热插拔)。分配给每个存储器节点的分区中的每一个然后均被分成页面。此系统的优点是局部性通过存储器请求源自的MNC是隐式的。在没有附加数据的情况下,访问节点的计算设备是已知的(或者至少访问节点的集群是已知的)。使用该信息,MNC可在存储器网络内迁移数据页面,或者在计算模式授权给它的情况下从分区的所有者中检出它们。

MNC可从另一存储器节点控制器的系统地址空间中分配存储器以在其系统地址转换表内使用,从而将一个系统地址重定向到另一系统地址。例如,对于碎片整理操作,第一MNC可以能在第二MNC的系统地址空间分区中分配存储器,其中第一MNC将显示如在第一MNC中从第二MNC检出的这些页面。第一MNC将像页面原先那样保持页面的物理存储器支持。一旦在适当的表中送入从第二MNC分配的地址范围,就可以改变范围表条目内的偏移以指向新系统地址范围。此时被先前使用的系统地址范围现在空闲。来自第二MNC的新系统地址范围以及组成该地址范围的所述多个页面现在空闲以根据一致性协议、元数据或调度算法独立地迁移。

系统可以被配备有系统缓存结构,被称为数据传递缓存(DDC)。在此实施例中,系统存储器请求被同时地发送到DDC和MNC。如果MNC已将页面注册为存在于DDC中,则该行被从DDC服务并从MNC忽视。如果该行存在于MNC中则请求在MNC中被服务。应该显而易见的是,MNC之间的同步能采取目录或过滤器机制的形式。示例实施例实现发送/确认系统,其中一旦MNC已从DDC接收到页面被安装了的确认,DDC就才开始为页面服务。连同确认一起DDC将从MNC决定要将页面推送到DDC时接收未完成的存储器请求。

如本文所呈现的本公开的各种实施例和示例被理解为图示本公开而不限制本公开,并且关于本公开的范围是非限制性的。

在所附独立和从属权利要求中陈述本公开的另外特定的且优选的方面。从属权利要求的特征可以酌情并且按照除权利要求中显式地阐述的那些以外的组合与独立权利要求的特征组合。

可以在集成电路中实现一个或多个存储器节点控制器。例如,可以将电路定义为硬件描述语言(HDL)的指令集,其可以被存储在非暂时性计算机可读介质中。可以经由计算机可读介质或者经由诸如有线或无线网络这样的其他手段来分发指令。指令可以用于控制集成电路的制造或设计,并且可以与其他指令组合。

尽管已在本文中参考附图详细地描述了本发明的说明性实施例,然而应当理解的是,本发明不限于那些精确的实施例,并且在不脱离如由所附权利要求所限定的本发明的范围和精神的情况下,可通过本领域的技术人员在其中实现各种改变和修改。

应领会的是,上述设备、系统和方法是通过示例而不是通过限制来阐述的。在缺少相反的显式指示情况下,可以在不脱离本公开的范围的情况下对所公开的步骤进行修改、补充、省略和/或重新排序。许多变化、添加、省略和其他修改对于本领域的普通技术人员而言将是显而易见的。另外,除非明确地要求特定次序或者另外从上下文中清楚,否则以上描述和附图中的方法步骤的次序或呈现不旨在要求执行所叙述的步骤的这种次序。

除非明确地提供了不同的含义或者另外从上下文中清楚,否则本文描述的实现方式的方法步骤旨在包括与以下权利要求的专利性一致的使这样的方法步骤被执行的任何适合的方法。

应该进一步领会的是,以上方法作为示例被提供。在缺少相反的显式指示情况下,可以在不脱离本公开的范围的情况下对所公开的步骤进行修改、补充、省略和/或重新排序。

应领会的是,上述方法和系统是通过示例而不是通过限制来阐述的。许多变化、添加、省略和其他修改对于本领域的普通技术人员而言将是显而易见的。另外,除非明确地要求特定次序或者从上下文中清楚,否则以上描述和附图中的方法步骤的次序或表示不旨在要求执行所叙述的步骤的次序。因此,虽然已示出并描述了特定实施例,但是对于本领域的技术人员而言将显而易见的是,可以在不脱离本公开的范围的情况下做出形式和细节上的各种改变和修改,并且形式和细节上的各种改变和修改旨在形成如由以下权利要求所限定的本公开的一部分,以下权利要求将在法律所允许的最广泛意义上进行解释。

已在本文中详细地描述的各种代表性实施例已通过示例而不是通过限制来呈现。应理解的是,可以在所描述的实施例的形式和细节上做出各种改变,从而产生保持在所附权利要求的范围内的等同实施例。

因此,在以下编号的项目中陈述所公开的实施例的一些特征:

1.一种用于具有至少一个计算设备和至少一个数据资源的数据处理网络的节点的存储器节点控制器,所述节点被配置为将所述至少一个计算设备与所述至少一个数据资源和所述数据处理网络的可经由系统地址空间寻址的元件耦合,所述存储器节点控制器包括:到所述至少一个数据资源的第一接口,其中所述至少一个数据资源中的每一个均经由物理地址空间来寻址;到所述至少一个计算设备的第二接口;以及系统地址到物理地址转换器缓存,所述系统地址到物理地址转换器缓存被配置为将所述系统地址空间中的系统地址转换为所述至少一个数据资源中的一数据资源的物理地址空间中的物理地址。

2.根据项目1所述的存储器节点控制器,进一步包括:物理设备配置设置(PDCS)存储器,所述PDCS存储器存储指示所述数据处理网络的元件到所述系统地址空间中的映射的信息。

3.根据项目1所述的存储器节点控制器,其中所述至少一个数据资源包括远程网络,并且其中所述第一接口包括网络接口卡。

4.根据项目1所述的存储器节点控制器,其中所述第一接口包括到另一存储器节点控制器的接口。

5.根据项目4所述的存储器节点控制器,其中所述系统地址空间包括多个地址分区,并且其中所述存储器节点控制器与所述多个地址分区中的第一地址分区相关联,并且所述另一存储器节点控制器与所述多个地址分区中的第二地址分区相关联。

6.根据项目1所述的存储器节点控制器,其中所述第二接口包括到处理器核心的接口。

7.根据项目1所述的存储器节点控制器,其中所述第二接口包括到硬件加速器的接口。

8.根据项目1所述的存储器节点控制器,其中所述第一接口包括到存储器设备或存储设备的接口。

9.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质具有表示根据项目1所述的存储器节点控制器系统的硬件描述语言的指令。

10.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质具有表示根据项目1所述的存储器节点控制器的网表。

11.一种数据处理网络,所述数据处理网络包括:第一存储器节点控制器;通过系统地址空间寻址并且包括第一多个数据资源的第一多个可寻址单元,所述第一多个数据资源中的每一个均经由信道耦合到所述第一存储器节点控制器并且通过物理地址空间来寻址;以及第一多个计算设备,所述第一多个计算设备各自耦合到所述第一存储器节点控制器并且被配置为经由所述第一存储器节点控制器访问所述第一多个可寻址单元,其中所述第一存储器节点控制器包括系统地址到物理地址转换器缓存,所述系统地址到物理地址转换器缓存被配置为将从所述第一多个计算设备中的一计算设备接收的系统地址转换为所述第一多个数据资源中的一数据资源的地址空间中的物理地址。

12.根据项目11所述的数据处理网络,进一步包括:一个或多个第二存储器节点控制器,所述一个或多个第二存储器节点控制器耦合到所述第一存储器节点控制器;其中所述第一存储器节点控制器被分配所述系统地址空间中的系统地址的第一分区,其中所述一个或多个第二存储器节点控制器中的每一个均被分配所述系统地址空间中的系统地址的第二分区,并且其中所述第一多个计算设备中的一计算设备包括范围表,所述范围表使所述第一存储器节点控制器与所述系统地址的第一分区中的系统地址相关联并且使所述一个或多个第二存储器节点控制器中的每一个与所对应的系统地址的第二分区中的系统地址相关联,并且被配置为向与所述系统地址相关联的所述第一存储器节点控制器和第二存储器节点控制器中的一存储器节点控制器发送要访问所述系统地址处的存储器的请求。

13.根据项目12所述的数据处理网络,进一步包括:第二多个数据资源,所述第二多个数据资源各自经由信道耦合到所述一个或多个第二存储器节点控制器中的第二存储器节点控制器并且具有物理地址空间;以及第二多个计算设备,所述第二多个计算设备各自耦合到所述一个或多个第二存储器节点控制器中的第二存储器节点控制器并且被配置为经由所述系统地址空间来访问所述数据处理网络,其中所述一个或多个第二存储器节点控制器被配置为将所述第二多个计算设备与所述第二多个数据资源耦合。

14.根据项目11所述的数据处理网络,其中第一多个可寻址单元进一步包括硬件加速器。

15.根据项目11所述的数据处理网络,其中第一多个可寻址单元进一步包括网络接口卡。

16.一种用于由数据处理网络中的一个或多个计算设备访问一个或多个数据资源的方法,所述方法包括:将所述数据处理网络的元件映射到系统地址空间;将所述系统地址空间的第一分区分配给所述数据处理网络的第一存储器节点控制器,其中所述一个或多个计算设备和所述一个或多个数据资源耦合到所述第一存储器节点控制器;在所述第一存储器节点控制器处接收要在所述系统地址空间中的系统地址处访问所述数据处理网络的元件的请求;以及当所述系统地址在所述系统地址空间的第一分区中时,由所述第一存储器节点控制器为所述请求服务。

17.根据项目16所述的方法,进一步包括:将所述系统地址空间的第二分区分配给所述数据处理网络的第二存储器节点控制器;以及当所述系统地址在所述系统地址空间的第二分区中时,将所述请求转发到所述第二存储器节点控制器。

18.根据项目16所述的方法,进一步包括:将所述系统地址空间的第二分区分配给所述数据处理网络的第二存储器节点控制器;以及当所述系统地址在所述系统地址空间的第二分区中并且所述系统地址被与所述第一存储器节点控制器动态地共享时,由所述第一存储器节点控制器为所述请求服务。

19.根据项目16所述的方法,其中所述一个或多个数据资源中的每个数据资源经由信道耦合到所述第一存储器节点控制器,并且其中由所述第一存储器节点控制器为所述请求服务包括:识别到与所述系统地址相对应的所述一个或多个数据资源中的一数据资源的信道;将所述系统地址转换为所述数据资源中的物理地址;以及经由所识别的信道来访问所述物理地址处的所述数据资源。

20.根据项目16所述的方法,其中所述系统地址空间的所述第一分区包括第一多个页面,所述方法进一步包括:将所述系统地址空间的第二分区分配给所述数据处理网络的第二存储器节点控制器,其中所述系统地址空间的第二分区包括第二多个页面;监控由耦合到所述第一存储器节点控制器的所述一个或多个计算设备对所述第二多个页面的访问;以及根据所监控的访问将所述第二多个页面中的一页面从所述第二存储器节点控制器迁移到所述第一存储器节点控制器。

21.根据项目20所述的方法,进一步包括:记录经迁移的页面的一致性状态。

22.根据项目16所述的方法,其中所述系统地址空间的第一分区包括多个行,并且其中所述数据处理网络进一步包括数据传递缓存,所述方法进一步包括:监控由耦合到所述第一存储器节点控制器的所述一个或多个计算设备对所述多个行的系统存储器请求;当所述多个行中所请求的行不存在于所述数据传递缓存中时,由所述第一存储器节点控制器为系统存器储请求服务;根据所监控的系统存储器请求将所请求的行从所述第一存储器节点控制器推送到所述数据处理网络的数据传递缓存;以及当所请求的行存在于所述数据传递缓存中时,由所述数据传递缓存为所述系统存储器请求服务。

23.根据项目16所述的方法,进一步包括:将所述系统地址空间的第二分区分配给所述数据处理网络的第二存储器节点控制器,其中所述一个或多个附加数据资源耦合到所述第二存储器节点控制器;并且所述第一存储器节点控制器:在所述系统地址空间的第二分区的地址范围内分配存储器;在所述第一存储器节点控制器的系统地址转换表中输入所分配的地址范围;以及将对所分配的地址范围内的地址的存储器请求引导到所述第二存储器节点控制器。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:增强用户空间与内核空间的隔离性的方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类