分布式共享存储器系统中的对象一致性的制作方法

文档序号:17486305发布日期:2019-04-20 06:51阅读:286来源:国知局
分布式共享存储器系统中的对象一致性的制作方法

本文中描述的示例一般地涉及可配置的计算资源并且尤其涉及共享存储器系统。



背景技术:

多个计算资源常常被分组成大计算资源集以完成各种计算任务。这些资源可分布在许多物理计算资源(诸如服务器)上。利用一些分布式计算资源,存储器跨系统分布。此类系统有时被称为分布式共享存储器(dsm)系统。一般而言,dsm系统使程序地址空间散布在许多物理计算资源(诸如服务器)之上。因此,可动态地改变计算任务以及尤其是分配给这些任务的存储器的范围和大小。

附图说明

图1图示了示例第一系统。

图2图示了示例存储器映射。

图3图示了示例跟踪地址空间。

图4图示了图1的系统的第一示例节点。

图5图示了第一示例技术。

图6图示了第二示例技术。

图7图示了图1的系统的示例节点。

图8图示了第三示例技术。

图9图示了第四示例技术。

图10图示了存储介质的示例。

图11图示了示例计算平台。

具体实施方式

一般而言,本公开为dsm系统内的节点提供对象粒度一致性。更具体地,可实现本公开以提供用于多个线程协作以访问dsm系统中的对象(或多个对象)的机制。一般而言,dsm系统可提供系统的节点可访问的储存器(例如,物理计算机可读介质储存器等)。特别地,节点可通过网络结构访问dsm(以及存储在dsm上的对象)。各种现代数据库、应用服务器或实时决策支持系统可以依靠dsm来动态地改变其操作的范围、大小和速度。因此,这些节点中的每一个均可通过主机结构接口(hfi)来访问dsm以执行涉及存储在dsm上的对象的各种任务(例如,计算线程等)。hfi维护包括存储在dsm内的对象的位置和所有权的指示的跟踪地址空间(tas)。在节点上执行的应用可协作以通过hfi的高速缓存代理来访问对象。高速缓存代理可维护tsa和在tsa内指示的所有权信息。尽管在下面对此进行更详细的描述,然而这时给出更彻底的说明。

一般而言,在节点的处理元件(例如,中央处理单元(cpu)、cpu的核心等)上执行的线程可请求对象的所有权并且还确定对象协作以在dsm系统中访问此类对象的所有权(例如,读取/写入权限等)。重要的是要注意;线程可以是来自单个应用的线程或来自多个应用的线程。此外,可在系统中的同一节点上或者在系统中的不同节点上执行线程。线程可以向节点的hfi发送控制信号或信息元素。节点可以授予基于tsa访问对象的权限或者可以利用系统内的另一hfi(例如,在多节点系统的情况下)协调访问。因此,节点可在dsm的虚拟域之上扩展高速缓存一致性。更具体地,节点内的hfi管理tsa以针对dsm内的对象协调高速缓存一致性。

现在参考附图,其中相似的附图标记用于自始至终指代相似的元件。在以下描述中,出于说明的目的,阐述了许多具体细节以便提供对其的透彻理解。然而,显然的是,可在没有这些具体细节的情况下实践新颖实施例。在其他实例中,已知的结构和设备被以框图形式示出以便方便其描述。意图是为了提供透彻描述,使得在权利要求的范围内的所有修改、等同物和替代方案被充分地描述。

附加地,可以参考变量,诸如“a”、“b”、“c”,其用于表示可以实现多于一个组件的组件。重要的是要注意,不一定需要多个组件,并且进一步地,在实现多个组件的情况下,它们不必是相同的。替代地,使用变量来引用图中的组件是为了呈现的方便和清楚而做的。

图1图示了示例系统100,其中节点101-1、101-2、101-3、101-4至101-n可访问分布式共享存储器(dsm)节点105。注意的是,尽管dsm在本文中被指示并描述为“节点”,然而它可散布在系统100的许多节点上。换句话说,dsm105可被实现成使地址空间散布在服务器的集群上。

此外,注意的是,节点101-1至101-n以及dsm节点105可被实现在分解物理元件的池上,或者由分解物理元件的池组织,所述分解物理元件诸如例如为数据中心中的服务器等。示例在这些上下文中不受限制。

节点101-1至101-n和dsm节点105经由结构102(有时称为网络)耦合。一般而言,dsm节点105是其中可存储对象110-1、110-2、110-3至110-m的物理计算机可读存储位置(例如,服务器等)的合集。注意的是,对象110-1至110-m可以是要存储在dsm内的各种元件中的任一个。然而,仅出于示例和讨论的目的,对象110-1至110-m可以是信息元素、数据结构、数据库、应用、虚拟机、容器、数据存储(store)、软件构造等。示例在此上下文中不受限制。

应当领会的是,可将dsm节点105实现为作为单个存储器存储寻址的许多物理上分离的存储器存储(例如,服务器等)。更具体地,dsm节点105内的存储器可作为单个地址空间被寻址。

此外,节点101-1至101-n可以各自试图访问存储在dsm内的(一个或多个)对象110-1至110-m。例如,在单个节点上执行的多个线程(例如,参考图4-6和图9)可协调以访问同一对象。作为另一示例,在多个节点上执行的线程(例如,参考图7-8)可协调以访问同一对象。本公开提供节点101-1至101-n以协作并协调对象110-1至110-m的访问和/或缓存。因此,节点101-1至101-n被配置成对dsm节点105中的对象110-1至110-m来说具有对象粒度一致性。一般而言,节点101-1至101-n中的每一个经由hfi耦合到结构102。hfi管理节点存储器空间(参考图2)内的tsa(参考图3)以协调对象110-1至110-m的访问和一致性。

更具体地转向图2,提供了示例节点存储器映射200(也称为“存储器空间”或“地址空间”)的框图。一般而言,存储器映射200可对应于本地节点存储器。例如,节点101-1至101-m可使一定量的本地存储器(例如,ram等)被分离到块210中。这些块中的一个对应于tas201。例如,块210-1、210-2、210-3、210-4、210-5、210-6、210-7、210-8、210-9和210-10被表示。注意的是,在许多典型的实施方式中,存储器映射200可以包括多于所描绘的十(10)个块。然而,出于呈现的清楚的目的,描绘了仅这十个块。块210-1至210-10中的每一个均可对应于节点(例如,节点101-1至101-n中的一个)内的可寻址存储器的区域。例如,块210-1至210-10可对应于vga孔(hole)存储器位置、pam孔存储器位置、isa孔存储器位置、低dram(例如,<2mb等)存储器位置、tseg存储器位置、meseg存储器位置、pcie配置存储器位置、mmio存储器位置、高dram(例如,>2mb等)。

附加地,如指出的,块210中的至少一个对应于tas201。例如,块210-8被描绘为与tas201相对应。一般而言,tas201(并且因此块210-8)包括许多高速缓存行(例如,参考图3),其中的每一个表示对象110-1至110-m中的一个。

常规计算系统经由存储器代理(或主机代理)(诸如例如,存储器访问芯片组(例如,北桥、南桥等))向存储器块210提供访问和一致性。本公开提供用于每个节点(例如,参考图4和图7)访问并控制tas201的tas缓存代理。因此,主机代理不控制或者管理tas201。

此外,在一些实施方式(例如,多节点一致性实施方式等)中多个块210可表示tas201。例如,块210能被放在一边并对应于用于系统100中的每个节点的tas201。如描绘的,存储器映射200可包括与tas201-n相对应的另一块210-8n。因此,tas201能对应于第一节点(例如,本地节点、节点101-1等),然而tas201-n能对应于第二节点(例如,节点101-n等)。

更具体地转向图3,描绘了示例tas201的框图。如陈述的,tas201是每个节点(例如,节点101-1至101-n)内的本地存储器的块,其中tas201内的每一行(或条目)对应于dsm节点105中的对象110-1至110-m。更具体地,tas201包括高速缓存行220-1至220-m。高速缓存行220-1至220-m中的每一个均对应于对象110-1至110-m。例如,描绘了高速缓存行220-1、220-2、220-3至220-m。在一些示例中,每个高速缓存行220-1至220-m可包括dsm节点105内的对应对象110-1至110-m的位置的指示以及所有权的指示(例如,访问对象的当前线程)。在一些示例中,每个高速缓存行220-1至220-m可能具有64个字节的限制。

此外,值得注意的是,高速缓存行220-1至220-m可表示不同大小的对象。例如,高速缓存行220-1可对应于对象110-1,高速缓存行220-2可对应于对象110-2,高速缓存行220-3可对应于对象110-3,并且高速缓存行220-m可对应对象110-m。实际上,对象110-1至110-m中的任一个可具有不同的大小(例如,以字节为单位等)。例如,对象110-3被描绘为具有与其他块不同的大小。然而,本公开假设tas内的高速缓存行(例如,高速缓存行220-1至220-m)可以不管对象的大小都保持相同。

图4图示了示例节点101。这里描绘的节点101可对应于图1的系统100的节点101-1至101-n中的任一个。示例在此上下文中不受限制。节点101包括许多处理元件411和本地存储器440。在此示例中,节点101被描绘为包括处理元件411-1和411-2。注意的是,节点101能包括比描绘的更多或更少的处理元件。在一些示例中,处理元件可以是cpu、cpu核心等同时本地存储器可以是ram。

此外,节点101包括hfi430以将节点101耦合到结构102。hfi包括用于管理tas201的hfi缓存代理432,然而节点101包括用于管理本地存储器440的平衡方面的一致性的本地缓存代理413。

一般而言,hfi缓存代理432基于各种一致性协议(诸如例如,mesi协议、moesi协议等)中的任一种为tas201实现高速缓存一致性。此外(如关于图7-8更详细地描述的),hfi缓存代理432可作为用于系统100的其他节点中的hfi的远程代理。注意的是,对tas201的访问不产生实际的数据移动,而是仅仅在处理元件411-1、411-2与hfi430之间产生高速缓存一致性信令。

图5-6描绘了用于访问dsm节点105中的对象110-1110-m的技术。特别地,图5描绘了其中处理元件411-1出于只读目的访问对象110-1的技术500,然而图6描绘了其中处理元件411-1独占地或者出于读取/写入目的访问对象110-1的技术600。参考图4中描绘的节点101对这些技术进行描述。然而,注意的是,能实现这些技术以访问任何dsm系统中的对象,并且特别地,以在dsm系统中在对象级别下提供高速缓存一致性。此外,值得注意的是,技术500和600是在所有权请求之间没有冲突的上下文中描述的。然而,图9描绘了包括所有权请求之间的示例冲突的技术。

更具体地转向图5和技术500。技术500可在圆圈5.1处开始。在圆圈5.1处,处理元件411-1发出对对象110-1的读取请求(例如,读取tas201@220-1)。更具体地,在处理元件411-1上执行的元件(例如,线程、应用等)发出对tas201的高速缓存行220-1中的对象(例如,对象110-1)的读取请求。

继续到圆圈5.2,处理元件411-1向hfi430发出读取请求(例如,读取tas201@220-1),并且特别向hfi缓存代理432发出读取请求。

继续到圆圈5.3,hfi缓存代理432访问tas201,确定对象110-1是否可用于像请求那样访问并且发送包括用于访问对象110-1的指示的控制信号。在一些示例中,hfi缓存代理432还可返回“假数据”,类似于存储器控制器中的缓存代理(例如,本地代理、归属代理等)所做的。在一些示例中,如果不支持在圆圈5.2处接收到的命令,则hfi缓存代理432可发出中断(例如,给在处理元件上执行的应用栈等)。

在一些示例中,处理元件411-1以及尤其是在处理元件411-1上执行的线程可停止直到从hfi缓存代理432接收到响应(例如,在圆圈5.3等处)为止来为对象110-1确保一致性。

继续到圆圈5.4、5.5、5.6和5.7,处理元件411-1可发出对对象110-1的读取存储器请求并且接收包括对象110-1的数据或信息元素。在圆圈5.4处,处理元件411-1(或在处理元件411-1上执行的线程)向hfi缓存代理432发出对对象110-1的读取请求。在圆圈5.5处,hfi缓存代理432将读取请求中继到本地缓存代理413。在圆圈5.6处,本地缓存代理413从dsm节点105中检索对象110-1(例如,通过结构102等)并且将对象发送到hfi缓存代理432。在圆圈5.7处,hfi缓存代理432将对象110-1中继到处理元件411-1。

注意的是,可将圆圈5.4、5.5、5.6和5.7重复许多次。例如,处理元件411-1可向对象110-1发出任何数量的读取请求。

继续到块5.8,在完成访问对象110-1时,处理元件411-1可从其(一个或多个)高速缓存中刷新对象110-1。例如,处理元件411-1可发出clflushopt命令以从其高速缓存中刷新对象110-1。此外,处理元件411-1可从其高速缓存使tas201的高速缓存行220-1无效。在这种无效时,任何获取的对高速缓存行的锁定可由hfi缓存代理432释放(例如,以隐式方式等)。

在一些示例中,处理元件411-1可锁定高速缓存行220的容量驱逐。更特别地,当由hfi缓存代理432跟踪的高速缓存行220中的一个(例如,圆圈5.8处的高速缓存行220-1)被从给定核心中驱逐时hfi缓存代理432可(例如,被动地、主动地等)向处理元件(例如,411-1)通知该驱逐。处理元件411-1能确认它实际上释放了对象并且驱逐不是由于容量而导致的。

在一些示例中,高速缓存行220可被标记为“被牵制”或更一般地受软件管理。因此,处理元件以及尤其是高速缓存代理可以在未接收到显式命令的情况下不驱逐高速缓存行。

更具体地转向图6和技术600。技术600可在圆圈6.1处开始。在圆圈6.1处,处理元件411-1发出对对象110-1的读取/写入请求(例如,读取/写入tas201@220-1)。更具体地,在处理元件411-1上执行的元件(例如,线程、应用等)发出对tas201的高速缓存行220-1中的对象(例如,对象110-1)的读取/写入请求。

继续到圆圈6.2,处理元件411-1向hfi430发出读取/写入请求(例如,读取/写入tas201@220-1),并且特别向hfi缓存代理432发出该读取/写入请求。

继续到圆圈6.3,hfi缓存代理432访问tas201,确定对象110-1是否可用于像请求的那样访问并且发送包括用于访问对象110-1的指示的控制信号。在一些示例中,hfi缓存代理432还可返回“假数据”,类似于存储器控制器中的缓存代理(例如,本地代理、归属代理等)所做的。在一些示例中,如果不支持在圆圈6.2处接收到的命令,则hfi缓存代理432可发出中断(例如,给在处理元件上执行的应用栈等)。

在一些示例中,处理元件411-1以及尤其是在处理元件411-1上执行的线程可停止直到从hfi缓存代理432接收到响应(例如,在圆圈6.3等处)为止来为对象110-1确保一致性。

继续到圆圈6.4、6.5、6.6和6.7,处理元件411-1可发出对对象110-1的读取或写入存储器请求并且接收包括对象110-1的数据或信息元素和或对写入的确认的指示。注意的是,在此图中描绘了示例写入请求。然而,也能发出读取请求(例如,参考图5)。在圆圈6.4处,处理元件411-1(或在处理元件411-1上执行的线程)向hfi缓存代理432发出对对象110-1的写入请求。特别地,处理元件411-1可发出(例如,利用对象110-1new等)改写或者改变对象110-1的一部分的命令。在圆圈6.5处,hfi缓存代理432将写入请求中继到本地缓存代理413。在圆圈6.6处,本地缓存代理413将对象110-1new写入到dsm节点105(例如,通过结构102等)并且向hfi缓存代理432发送对写入的确认的指示或重新写入的对象110-1(例如,对象110-1new)。在圆圈6.7处,hfi缓存代理432将写入确认的指示或对象110-1new中继到处理元件411-1。

注意的是,可将圆圈6.4、6.5、6.6和6.7重复许多次。例如,处理元件411-1可向对象110-1发出任何数量的读取和/或写入请求。

继续到块6.8,在完成访问对象110-1时,处理元件411-1可以从其(一个或多个)高速缓存中刷新对象110-1。例如,处理元件411-1可发出从其高速缓存中刷新对象110-1的命令。此外,处理元件411-1可从其高速缓存使tas201的高速缓存行220-1无效。在这种无效时,任何获取的对高速缓存行的锁定可由hfi缓存代理432释放(例如,以隐式方式等)。

在一些示例中,处理元件411-1可锁定高速缓存行220的容量驱逐。更特别地,当由hfi缓存代理432跟踪的高速缓存行220中的一个(例如,圆圈6.8处的高速缓存行220-1)被从给定核心中驱逐时hfi缓存代理432可(例如,被动地、主动地等)向处理元件(例如,411-1)通知该驱逐。处理元件411-1能确认它实际上释放了对象并且驱逐不是由于容量而导致的。

在一些示例中,高速缓存行220可被标记为“被牵制”或更一般地受软件管理。因此,处理元件以及尤其是高速缓存代理可以在未接收到显式命令的情况下不驱逐高速缓存行。

一些现代dsm系统通过结构在同一集群内的不同节点之间暴露存储器。例如,关于图1的dsm系统100,dsm节点105存储器的各部分能被分割并指派给节点101-1至101-n中的每一个。因此,每个节点101-1至101-n的hfi能作为用于管理dsm节点105上的一组对象的一致性的“归属代理”。例如,节点101-1能管理对象110-1和110-2,然而节点101-2能管理对象110-3到110-m。

图7图示了其中多个节点管理dsm中的对象的系统100的示例。更特别地转向此图,描绘了节点101-1和101-2。节点101-1和101-2中的每一个均包括处理元件411和本地存储器440。特别地,节点101-1包括处理元件411-1和本地存储器440-1,然而节点101-2包括处理元件411-2和本地存储器440-2。注意的是,节点101-1和101-2能包括比描绘的更多或更少的处理元件。在一些示例中,处理元件可以是cpu、cpu核心等,然而本地存储器可以是ram。

此外,节点101-1和101-2分别包括hfi430-1和430-2,以将这些节点耦合到结构102。hfi430-1和430-2分别包括hfi缓存代理432-1和432-2。hfi缓存代理432-1和432-2管理与指派给每个节点101-1或101-2的dsm节点105存储器的部分相对应的tas。在下面对此进行更详细的描述。附加地,节点101-1和101-2分别包括本地缓存代理413-1和413-2,以管理本地存储器440-1或440-2的平衡方面的一致性。

如上面所指出的,一些示例可以在节点101之间分割dsm节点105中的存储器(或存储在dsm节点105中的对象)。例如,假定节点101-1管理了对象110-1同时节点101-2管理了对象110-2。每个节点然后将包括tas201(例如,分别为tas201-1和tas201-2)以像本文中所描述的那样管理对对象的访问和对象的高速缓存一致性。hfi缓存代理432-1和432-2可基于各种一致性协议(诸如例如,mesi协议、moesi协议等)中的任一个为tas201-1和201-2实现高速缓存一致性。

然而,当读取或读取/写入请求被hfi缓存代理432接收到时,hfi缓存代理确定感兴趣对象是由它本身还是另一hfi缓存代理管理(例如,基于tas201-1和tas201-2)。可视需要而定通过适当的hfi缓存代理来中继请求。在图8中描绘了描述此过程的示例技术。

特别地,图8描绘了节点101-1的处理元件411-1出于只读目的访问对象110-2的技术800。注意的是,对于此示例来说对象110-2由节点101-2管理,从而按对象粒度图示并描述多节点高速缓存一致性系统。尽管参考图7中描绘的节点101-1和101-2描述此技术,然而能将该技术实现成访问任何dsm系统中的对象,并且特别地,在其中多个节点管理dsm存储器的dsm系统中在对象级别下提供高速缓存一致性。此外,值得注意的是,技术800是在所有权请求之间没有冲突的上下文中描述的。然而,图9描绘了包括所有权请求之间的示例冲突的技术。

更具体地转向图8和技术800。技术800可在圆圈8.1处开始。在圆圈8.1处,处理元件411-1发出对对象110-2的读取请求(例如,读取tas201@220-2)。更具体地,在处理元件411-1上执行的元件(例如,线程、应用等)发出对tas201的高速缓存行220-2中的对象(例如,对象110-1)的读取请求。

继续到圆圈8.2,处理单元411-1向hfi430-1发出读取请求(例如,读取tas201@220-1),并且特别地向hfi缓存代理432-1发出读取请求。

继续到圆圈8.3,hfi缓存代理432-1访问确定对象110-2是由它本身管理还是由另一hfi缓存代理管理。例如,hfi缓存代理432-1可确定tas201的感兴趣高速缓存行(例如,高速缓存行220-2)由远程hfi管理并且将读取请求转发到该远程hfi。在此示例中,在圆圈8.3处,hfi缓存代理432-1确定节点101-2以及尤其是hfi缓存代理432-2管理高速缓存行220-2并且将请求转发到远程hfi缓存代理432-2。

继续到块8.4,远程hfi缓存代理432-2确定对由高速缓存行220-2所引用的对象的可用访问并且向本地hfi缓存代理432-1发送包括用于访问对象110-2的指示的控制信号。该控制信号由本地hfi缓存代理432-1接收并发送到处理元件432-1。在一些示例中,hfi缓存代理432还可返回“假数据”,类似于存储器控制器中的缓存代理(例如,本地代理、归属代理等)所做的。在一些示例中,如果不支持在圆圈8.3处接收到的命令,则hfi缓存代理432可发出中断(例如,给在处理元件上执行的应用栈等)。

在一些示例中,处理元件411-1以及尤其是在处理元件411-1上执行的线程可停止直到从hfi缓存代理432-1接收到响应(例如,在圆圈8.5等处)为止来为对象110-2确保一致性。

继续到圆圈8.6、8.7、8.8、8.9、8.10和8.11,处理元件411-1可发出对对象110-2的读取存储器请求并且接收包括对象110-2的数据或信息元素。在圆圈8.6处,处理元件411-1(或在处理元件411-1上执行的线程)向hfi缓存代理432-1发出对对象110-2的读取请求。在圆圈8.7处,hfi缓存代理432-1将对对象110-2的读取请求转发到远程hfi缓存代理432-2。在圆圈8.8处,hfi缓存代理432-2将读取请求中继到本地缓存代理413-2。在圆圈8.9处,本地缓存代理413-2从dsm节点105中检索对象110-2(例如,通过结构102等)并且将该对象发送到远程hfi缓存代理432-2。在圆圈8.10处,远程hfi缓存代理432-2将对象110-2发送到hfi请求hfi缓存代理432-1。在圆圈8.11处,请求hfi缓存代理432-1将对象110-2中继到处理元件411-1。

注意的是,可将圆圈8.6、8.7、8.8、8.9、8.10和8.11重复许多次。例如,处理元件411-1可向对象110-2发出任何数量的读取请求,所述读取请求可像描述的那样在hfi缓存代理432-1和432-2之间被中继。

继续到块8.12,在完成访问对象110-1时,处理元件411-1可从其(一个或多个)高速缓存中刷新对象110-2。例如,处理元件411-1可发出从其高速缓存中刷新对象110-2的命令。此外,处理元件411-1可从其高速缓存使tas201的高速缓存行220-2无效。在这种无效时,任何获取的对高速缓存行的锁定可由hfi缓存代理(具体地hfi缓存代理432-2)释放。

如指出的,技术500、600和800图示了在对象110与试图访问对象的处理元件411之间没有冲突的示例。然而,实际上,若干处理元件(或在一个或多个处理元件上执行的线程)可以设法同时地访问对象。图9描绘了示例技术900,其中对对象的访问与在先正在进行的访问冲突。参考图4中描绘的节点101对此技术进行描述。然而,注意的是,这些技术能被实现来访问任何dsm系统中的对象,并且特别地,在dsm系统中在对象级别下提供高速缓存一致性。一般而言,此图描绘了处理元件411-1出于独占性(例如,读取/写入)目的访问对象110-1,同时处理元件411-2出于读取(或读取/写入)目的访问同一对象110-1,此访问与由处理元件411-1进行的初始访问冲突。

技术900可在圆圈9.1处开始。在圆圈9.1处,处理元件411-1发出对对象110-1的读取/写入请求(例如,读取/写入tas201@220-1)。更具体地,在处理元件411-1上执行的元件(例如,线程、应用等)发出对tas201的高速缓存行220-1中的对象(例如,对象110-1)的读取/写入请求。

继续到圆圈9.2,处理元件411-1向hfi430发出读取/写入请求(例如,读取/写入tas201@220-1),并且特别向hfi缓存代理432发出该读取/写入请求。

继续到圆圈9.3,hfi缓存代理432访问tas201,确定对象110-1是否可用于像请求的那样访问并且发送包括用于访问对象110-1的指示的控制信号。在一些示例中,hfi缓存代理432还可返回“假数据”,类似于存储器控制器中的缓存代理(例如,本地代理、归属代理等)所做的。在一些示例中,如果不支持在圆圈6.2处接收到的命令,则hfi缓存代理432可发出中断(例如,给在处理元件上执行的应用栈等)。

在一些示例中,处理元件411-1以及尤其是在处理元件411-1上执行的线程可停止直到从hfi缓存代理432接收到响应(例如,在圆圈9.3等处)为止来为对象110-1确保一致性。

继续到圆圈9.4、9.5、9.6和9.7,处理元件411-1可发出对对象110-1的读取或写入存储器请求并且接收包括对象110-1和或对写入的确认的指示的数据或信息元素。注意的是,在此图中描绘了示例写入请求。然而,还能发出读取请求(例如,参考图5)。在圆圈9.4处,处理元件411-1(或在处理元件411-1上执行的线程)向hfi缓存代理432发出对对象110-1的写入请求。特别地,处理元件411-1可发出(例如,利用对象110-1new等)改写或者改变对象110-1的一部分的命令。在圆圈9.5处,hfi缓存代理432将写入请求中继到本地缓存代理413。在圆圈9.6处,本地缓存代理413将对象110-1new写入到dsm节点105(例如,通过结构102等)并且向hfi缓存代理432发送对写入的确认的指示或重新写入的对象110-1(例如,对象110-1new)。在圆圈9.7处,hfi缓存代理432将写入确认的指示或对象110-1new中继到处理元件411-1。

注意的是,可将圆圈9.4、9.5、9.6和9.7重复许多次。例如,处理元件411-1可向对象110-1发出任何数量的读取和/或写入请求。

继续到块9.8,处理元件411-2发出对对象110-1的读取请求(例如,读取tas201@220-1)。更具体地,在处理元件411-2上执行的元件(例如,线程、应用等)发出对tas201的高速缓存行220-1中的对象(例如,对象110-1)的读取请求。注意的是,在处理元件411-1能够读取/写入访问高速缓存行220-1和对象110-1的同时能在任何时间实现圆圈9.8。

继续到圆圈9.9,hfi一致性代理432发送窥探命令(例如,基于mesi、moesi或类似的一致性协议)。在一些示例中,hfi一致性代理432可指示(例如,在处理元件411-1的模型特定寄存器等中)高速缓存行220-1(和此对象110-1)已被窥探并且这种窥探的中断或指示被提供给软件堆栈或应用堆栈。因此,处理元件411-1和411-2以及尤其是在这些处理元件上执行的线程可解决冲突(例如,处理元件411-2可终止其访问高速缓存行220-1的请求,处理元件411-1可终止其对高速缓存行220-1的访问以释放该高速缓存行等)。

图10图示了示例存储介质1000。如图10中所示,存储介质包括存储介质1000。存储介质1000可以包括制品。在一些示例中,存储介质1000可以包括任何非暂时性计算机可读介质或机器可读介质,诸如光学、磁或半导体储存器。存储介质1000可以存储各种类型的计算机可执行指令1002,诸如用于实现技术或技术500、600、800或900的部分的指令。计算机可读或机器可读存储介质的示例可以包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。计算机可执行指令的示例可以包括任何适合类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码、面向对象代码、可视代码等。示例在此上下文中不受限制。

图11图示了示例计算平台1100。在一些示例中,如图11中所示,计算平台1100可以包括处理组件1140、其他平台组件1150或通信接口1160。根据一些示例,计算平台1100可以是被配置成在对象级别下提供高速缓存一致性的dsm系统的节点,诸如图1的系统100的节点101-1、101-2、101-3、101-4、101-n。计算平台1100可以是单个物理服务器或组合逻辑服务器,所述组合逻辑服务器包括由可配置的计算资源的共享池组成的分解组件或元件的组合。

根据一些示例,处理组件1140可以执行用于装置100、101、101-1、101-2、101-3、101-4或101-n和/或存储介质1000的处理操作或逻辑。处理组件1140可以包括各种硬件元件、软件元件或两者的组合。硬件元件的示例可以包括器件、逻辑器件、组件、处理器、微处理器、电路、处理器电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。软件元件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、设备驱动程序、系统程序、软件开发程序、机器程序、操作系统软件、中间件、固件、软件模块、例行程序、子例行程序、函数、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以依照如针对给定示例所期望的任何数量的因素而变化,所述因素诸如期望计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束。

在一些示例中,其他平台组件1150可以包括公共计算元件,诸如一个或多个处理器、多核心处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(i/o)组件(例如,数字显示器)、电源等。存储器单元的示例可以包括但不限于形式为一个或多个更高速存储器单元的各种类型的计算机可读和机器可读存储介质,诸如只读存储器(rom)、随机存取存储器(ram)、动态ram(dram)、双倍数据速率dram(ddram)、同步dram(sdram)、静态ram(sram)、可编程rom(prom)、可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪速存储器、诸如铁电聚合物存储器之类的聚合物存储器、双向存储器、相变或铁电存储器、氧化硅-氮氧化硅(sonos)存储器、磁卡或光学卡、诸如独立磁盘冗余阵列(raid)驱动器之类的设备的阵列、固态存储器设备(例如,usb存储器)、固态驱动器(ssd)以及适于存储信息的任何其他类型的存储介质。

在一些示例中,通信接口1160可以包括用于支持通信接口的逻辑和/或特征。对于这些示例,通信接口1160可以包括根据各种通信协议或标准来操作以通过直接或网络通信链路进行通信的一个或多个通信接口。直接通信可以经由对在诸如与pcie规范相关联的那些之类的一个或多个行业标准(包括后代和变体)中描述的通信协议或标准的使用而发生。网络通信可以经由对诸如在由ieee颁布的一个或多个以太网标准中描述的那些之类的通信协议或标准的使用而发生。例如,一个这种以太网标准可以包括ieee802.3。网络通信还可以根据诸如openflow硬件抽象api规范之类的一个或多个openflow规范而发生。网络通信还可以根据infiniband架构规范或tcp/ip协议而发生。

如上面所提及的,可以在由用于可配置的计算资源的共享池的组成分解组件或元件组成的单个服务器或逻辑服务器中实现计算平台1100。因此,可以在计算平台1100的各种实施例中包括或者省略本文中描述的计算平台1100的功能和/或具体配置,如物理或逻辑服务器所合适地期望的那样。

可以使用分立电路、专用集成电路(asic)、逻辑门和/或单芯片架构的任何组合来实现计算平台1100的组件和特征。进一步地,可以使用微控制器、可编程逻辑阵列和/或微处理器或者在合适适当的情况下使用上述的任何组合来实现计算平台1100的特征。注意的是,硬件、固件和/或软件元件可以在本文中被共同地或单独地称为“逻辑”或“电路”。

应该领会的是,图11的框图中示出的示例性计算平台1100可以表示许多潜在实施方式的一个功能描述性示例。因此,附图中描绘的块功能的划分、省略或包括不会推断会必定在实施例中划分、省略或者包括用于实现这些功能的硬件组件、电路、软件和/或元件。

至少一个示例的一个或多个方面可以通过存储在至少一个机器可读介质上的代表性指令来实现,所述代表性指令表示处理器内的各种逻辑,所述逻辑当由机器、计算设备或系统读取时,使该机器、计算设备或系统制作逻辑以执行本文中描述的技术。称为“ip核”的此类表示可以被存储在有形机器可读介质上并供应给各种客户或制造设施以加载到实际地做出逻辑或处理器的制作机器中。

可以使用硬件元件、软件元件或两者的组合来实现各种示例。在一些示例中,硬件元件可以包括器件、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(asic)、可编程逻辑器件(pld)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例行程序、子例行程序、函数、方法、过程、软件接口、应用程序接口(api)、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号或其任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以依照如针对给定实施方式所期望的任何数量的因素而变化,所述因素诸如期望计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度和其他设计或性能约束。

一些示例可以包括制品或至少一个计算机可读介质。计算机可读介质可以包括用于存储逻辑的非暂时性存储介质。在一些示例中,非暂时性存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写或可重写存储器等。在一些示例中,逻辑可以包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例行程序、子例行程序、函数、方法、过程、软件接口、api、指令集、计算代码、计算机代码、代码段、计算机代码段、单词、值、符号或其任何组合。

根据一些示例,计算机可读介质可以包括用于存储或者维护指令的非暂时性存储介质,所述指令当由机器、计算设备或系统执行时,使该机器、计算设备或系统执行依照所描述的示例的方法和/或操作。指令可以包括任何适合类型的代码,诸如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。可以根据预定义计算机语言、方式或语法来实现指令,以用于指示机器、计算设备或系统执行某个功能。可以使用任何适合的高级、低级、面向对象、可视、编译和/或解释的编程语言来实现指令。

可以使用表达“在一个示例中”或“示例”及其派生词来描述一些示例。这些术语意味着连同该示例一起描述的特定特征、结构或特性被包括在至少一个示例中。短语“在一个示例中”在说明书中的各个地方中的出现不一定全部指代同一示例。

可以使用表达“耦合”和“连接”及其派生词来描述一些示例。这些术语不一定旨在为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”还可以意味着两个或更多个元件彼此不直接接触,但是仍然彼此协作或者交互。

以下示例涉及本文中公开的技术的附加示例。

示例1。一种用于节点的结构中的节点的装置,所述装置包括:主机结构接口(hfi),其用于:接收访问请求,所述访问请求包括用于访问存储在耦合到所述hfi的分布式共享存储器(dsm)节点上的对象的线程的指示;基于跟踪地址空间(tas)确定所述对象的访问是否被允许,所述tas包括一个或多个对象的指示以及用于所述一个或多个对象中的每一个的所有权状态的指示;并且基于所述对象的访问被允许的确定将所述访问请求中继到所述dsm节点。

示例2。根据示例1所述的装置,所述hfi用于接收包括来自所述dsm节点的信息元素的访问请求响应,所述信息元素包括所述对象的至少一部分的指示。

示例3。根据示例1所述的装置,所述访问请求包括用于独占地访问所述对象的指示,所述hfi用于:基于所述tas确定所述对象的独占访问是否被允许;并且基于所述对象的独占访问被允许的确定将所述访问请求中继到所述dsm节点。

示例4。根据示例3所述的装置,所述访问请求包括信息元素,所述信息元素包括所述对象的一部分的指示以及用于将所述对象的所述部分存储在所述dsm上的请求。

示例5。根据示例1所述的装置,所述tas包括一个或多个高速缓存行,所述一个或多个高速缓存行中的每一个均包括存储在所述dsm节点上的对象的指示和所述对象的所有权状态。

示例6。根据示例5所述的装置,所述hfi用于:接收用于使所述一个或多个高速缓存行中的一高速缓存行无效的请求;并且使所述高速缓存行无效。

示例7。根据示例5所述的装置,所述所有权状态包括在耦合到所述hfi的处理元件上执行的线程的指示以及所述线程的访问级别的指示。

示例8。根据示例7所述的装置,所述访问级别包括读取访问或读写访问。

示例9。根据示例1所述的装置,所述hfi基于所述对象的访问未被允许的确定向应用队列发送窥探命令,所述窥探命令包括所述对象的访问被请求的指示。

示例10。根据示例1所述的装置,包括耦合到所述hfi以存储所述tas的存储器。

示例11。一种系统,其包括:处理器,其用于执行多个线程;存储器,其用于存储跟踪地址空间(tas),所述tas包括一个或多个对象的指示以及所述一个或多个对象中的每一个的所有权状态的指示;以及主机结构接口(hfi),所述hfi用于:从所述处理器接收访问请求,所述访问请求包括用于访问所述一个或多个对象中的一个对象的所述多个线程中的一个的指示,所述一个或多个对象中的所述对象被存储在耦合到所述hfi的分布式共享存储器(dsm)节点上;基于所述tas确定所述对象的访问是否被允许;并且基于所述对象的访问被允许的确定将所述访问请求中继到所述dsm节点。

示例12。根据示例11所述的系统,所述hfi用于从所述dsm节点接收访问请求响应,所述访问请求响应包括包含所述对象的至少一部分的指示的信息元素。

示例13。根据示例11所述的系统,所述访问请求包括用于独占地访问所述对象的指示,所述hfi用于:基于所述tas确定所述对象的独占访问是否被允许;并且基于所述对象的独占访问被允许的确定将所述访问请求中继到所述dsm节点。

示例14。根据示例13所述的系统,所述访问请求包括信息元素,所述信息元素包括所述对象的一部分的指示以及用于将所述对象的所述部分存储在所述dsm上的请求。

示例15。根据示例13所述的系统,所述tas包括一个或多个高速缓存行,所述一个或多个高速缓存行中的每一个均包括存储在所述dsm节点上的对象的指示和所述对象的所有权状态。

示例16。根据示例15所述的系统,所述hfi用于:从所述处理器接收用于使所述一个或多个高速缓存行中的一高速缓存行无效的请求;并且使所述高速缓存行无效。

示例17。根据示例15所述的系统,所述所有权状态包括在所述处理元件上执行的线程的指示以及所述线程对所述对象的访问级别的指示。

示例18。根据示例17所述的系统,所述访问级别包括读取访问或读写访问。

示例19。根据示例11所述的系统,所述hfi基于所述对象的访问未被允许的确定向应用队列发送窥探命令,所述窥探命令包括所述对象的访问被请求的指示。

示例20。根据示例11所述的系统,所述hfi是数据中心的多个节点中的一节点的hfi。

示例21。一种方法,其包括:在主机结构接口(hfi)处接收访问请求,所述访问请求包括用于访问存储在耦合到所述hfi的分布式共享存储器(dsm)节点上的对象的线程的指示;基于跟踪地址空间(tas)确定所述对象的访问是否被允许,所述tas包括一个或多个对象的指示以及用于所述一个或多个对象中的每一个的所有权状态的指示;以及基于所述对象的访问被允许的确定将所述访问请求中继到所述dsm节点。

示例22。根据示例21所述的方法,包括在所述hfi处接收包括来自所述dsm节点的信息元素的访问请求响应,所述信息元素包括所述对象的至少一部分的指示。

示例23。根据示例21所述的方法,所述访问请求包括用于独占地访问所述对象的指示,所述方法包括:基于所述tas确定所述对象的独占访问是否被允许;以及基于所述对象的独占访问被允许的确定将所述访问请求中继到所述dsm节点。

示例24。根据示例23所述的方法,所述访问请求包括信息元素,所述信息元素包括所述对象的一部分的指示以及用于将所述对象的所述部分存储在所述dsm上的请求。

示例25。根据示例21所述的方法,所述tas包括一个或多个高速缓存行,所述一个或多个高速缓存行中的每一个均包括存储在所述dsm节点上的对象的指示和所述对象的所有权状态。

示例26。根据示例25所述的方法,所述方法包括:接收用于使所述一个或多个高速缓存行中的一高速缓存行无效的请求;以及使所述高速缓存行无效。

示例27。根据示例25所述的方法,所述所有权状态包括在耦合到所述hfi的处理元件上执行的线程的指示以及所述线程的访问级别的指示。

示例28。根据示例27所述的方法,所述访问级别包括读取访问或读写访问。

示例29。根据示例21所述的方法,包括基于所述对象的访问未被允许的确定向应用队列发送窥探命令,所述窥探命令包括所述对象的访问被请求的指示。

示例30。一种装置,其包括用于执行根据示例21至29中的任一项所述的方法的部件。

示例31。包括多个指令的至少一个机器可读介质,所述多个指令响应于由主机结构接口(hfi)执行而使所述hfi:接收访问请求,所述访问请求包括用于访问存储在耦合到所述hfi的分布式共享存储器(dsm)节点上的对象的线程的指示;基于跟踪地址空间(tas)确定所述对象的访问是否被允许,所述tas包括一个或多个对象的指示以及用于所述一个或多个对象中的每一个的所有权状态的指示;并且基于所述对象的访问被允许的确定将所述访问请求中继到所述dsm节点。

示例32。根据示例31所述的至少一个机器可读介质,所述指令用于进一步使所述hfi接收包括来自所述dsm节点的信息元素的访问请求响应,所述信息元素包括所述对象的至少一部分的指示。

示例33。根据示例31所述的至少一个机器可读介质,所述访问请求包括用于独占地访问所述对象的指示,所述指令用于进一步使所述hfi:基于所述tas确定所述对象的独占访问是否被允许;并且基于所述对象的独占访问被允许的确定将所述访问请求中继到所述dsm节点。

示例34。根据示例33所述的至少一个机器可读介质,所述访问请求包括信息元素,所述信息元素包括所述对象的一部分的指示以及用于将所述对象的所述部分存储在所述dsm上的请求。

示例35。根据示例31所述的至少一个机器可读介质,所述tas包括一个或多个高速缓存行,所述一个或多个高速缓存行中的每一个均包括存储在所述dsm节点上的对象的指示和所述对象的所有权状态。

示例36。根据示例35所述的至少一个机器可读介质,所述指令用于进一步使所述hfi:接收用于使所述一个或多个高速缓存行中的一高速缓存行无效的请求;并且使所述高速缓存行无效。

示例37。根据示例35所述的至少一个机器可读介质,所述所有权状态包括在耦合到所述hfi的处理元件上执行的线程的指示以及所述线程的访问级别的指示。

示例38。根据示例37所述的至少一种机器可读介质,所述访问级别包括读取访问或读写访问。

示例39。根据示例31所述的至少一个机器可读介质,所述指令用于进一步使所述hfi基于所述对象的访问未被允许的确定向应用队列发送窥探命令,所述窥探命令包括所述对象的访问被请求的指示。

应强调的是,提供了本公开的说明书摘要以遵照37c.f.r.第1.72(b)节,要求说明书摘要将允许读者迅速地探知技术公开的性质。它是本着它不会用于解释或者限制权利要求的范围或含义的理解而提交的。此外,在前面的具体实施方式中,可看到出于使本公开简单化的目的,各种特征在单个示例中被分组在一起。本公开的方法不应被解释为反映所要求保护的示例要求比在每个权利要求中明确地记载的更多特征的意图。相反,如以下权利要求反映的那样,发明主题在于少于单个公开示例的所有特征。因此以下权利要求被特此并入到具体实施方式中,同时每个权利要求自身作为单独的示例。在所附权利要求中,术语“包含”和“其中”分别被用作相应术语“包括”和“其中”的普通英语等同物。此外,术语“第一”、“第二”、“第三”等被仅仅用作标签,而不旨在对其对象强加数值要求。

尽管已经用特定于结构特征和/或方法学行为的语言描述了主题,然而应当理解的是,所附权利要求中定义的主题不一定限于上述的具体特征或行为。相反,上述的具体特征和行为作为实现权利要求的示例形式被公开。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1