经由计算机总线对持久性存储器的控制的制作方法

文档序号:11234027阅读:869来源:国知局
经由计算机总线对持久性存储器的控制的制造方法与工艺

发明领域

本发明大体上涉及计算机系统和用于计算机系统的操作的方法,并且更具体地涉及计算机系统中的持久性存储器设备的使用。

背景

术语“持久性存储器”用于本说明书的上下文和权利要求中以表示支持数据到存储器的随机存取写入和从存储器的随机存取读取以及在电源关闭时保留数据的任何种类的半导体存储器。当前使用的持久性存储器的示例包括各种类型的非易失性随机存取存储器(nvram)(包括闪速存储器)以及电池支持的ram设备。新型的持久性存储器在研发中,诸如最近由intel和microntechnology公布的“3dxpoint”存储器。

概述

在下文描述的本发明的实施方式提供用于经由计算机总线与持久性存储器设备交互的改进技术。

因此,根据本发明的实施方式提供了存储器设备,其包括具有存储器地址空间的目标存储器以及易失性缓冲存储器,该易失性缓冲存储器被耦合以接收通过总线写入到存储器设备以用于在存储器地址空间中的指定地址中存储的数据。存储器控制器被配置为经由总线接收刷新(flush)指令并响应于该刷新指令以将在存储器地址空间内具有指定地址的在缓冲存储器中保存的数据立即刷新到目标存储器。

在公开的实施方式中,目标存储器包括持久性存储器。

在一个实施方式中,刷新指令使存储器控制器将在刷新指令先前投递(posted)的写入命令中通过总线传送到目标存储器的所有数据刷新到目标存储器。可选地,刷新指令识别在存储器地址空间内将被刷新的范围,并使存储器控制器将保存在被识别的范围内的具有指定地址的在缓冲存储器中的数据立即刷新到目标存储器。通常,存储器控制器被配置为响应于刷新指令来刷新仅在被识别的范围内的数据,同时将在被识别范围之外的具有指定地址的其它数据留在缓冲存储器中,而不立即刷新到目标存储器。

在所公开的实施方式中,存储器控制器被配置为在将数据刷新到目标存储器后通过总线将完成消息发送到刷新指令的发送者。

在一个实施方式中,数据和刷新指令通过其写入的总线是计算机的外围组件总线,该总线具有总线地址空间,其中,将被刷新的范围根据存储器页面被识别,并且存储器控制器被配置为将存储器页面的被识别的范围从总线地址空间转换成存储器块,以用于在存储器地址空间中刷新。

在一些实施方式中,存储器控制器被配置为识别在存储器地址空间内的多个区并被配置为将各自的刷新属性与这些区相关联,其中,刷新指令使存储器控制器根据各自的刷新属性刷新在任何给定区内的具有指定地址的在缓冲存储器中保存的数据。在一个实施方式中,各自的刷新属性指示给定区是否对应于目标存储器中包括持久性存储器的范围。

根据本发明的实施方式还提供计算装置,其包括上面所描述的存储器设备和网络接口控制器(nic),该网络接口控制器被耦合以经由网络从对等节点接收远程直接存储器存取(rdma)写入包,该写入包包含将被写入到存储器设备的数据并指定数据将被写入的地址,以及该网络接口控制器被耦合以接收rdma刷新包,并且该网络接口控制器被配置为响应于rdma写入包和rdma刷新包来通过总线将数据和刷新指令传送到存储器设备。

通常,数据和刷新指令从nic被传送到存储器设备,并且数据由存储器控制器从缓冲存储器刷新到目标存储器,而不生成对耦合到装置中的总线的中央处理单元(cpu)的中断。

在一些实施方式中,nic被配置为通过在nic和对等节点之间建立的传输服务实例来从对等节点接收rdma写入包和rdma刷新包,其中,存储器设备中的存储器区与传输服务实例相关联,其中,写入包使nic将数据写入到相关联的存储器区,并且其中,刷新包使nic发布与相关联的存储器区有关的刷新指令。在公开的实施方式中,nic被配置为将各自的刷新属性与存储器区相关联,并且刷新指令使存储器控制器根据相关联的刷新属性刷新由nic写入到存储器区内的指定地址的数据。

在公开的实施方式中,装置包括部署在对等节点处的对等nic,其中,对等nic被配置为响应于由运行在对等节点上的进程提交到对等nic的rdma写入和刷新工作请求,通过网络传输rdma写入包和rdma刷新包。

根据本发明的实施方式,另外提供存储器设备,其包括具有存储器地址空间的目标存储器以及易失性缓冲存储器,该易失性缓冲存储器被耦合以接收通过总线在事务包中写入到存储器设备的数据以用于在存储器地址空间内的指定地址中存储,每个事务包包括事务描述符,其包括刷新标志。存储器控制器被配置为经由总线接收刷新指令并响应于该刷新指令以立即将缓冲存储器中保存的、对于其的刷新标志在将其传送到存储器设备的事务包中被设置的数据刷新到目标存储器。

在公开的实施方式中,存储器控制器被配置为响应于刷新指令来仅刷新对于其刷新标志被设置的数据,同时将在其中刷新标志未被设置的事务包中到达的其它数据留在缓冲存储器中,而不立即刷新到目标存储器。

在一个实施方式中,事务描述符包括“nosnoop”属性字段,其包括刷新标志。

根据本发明的实施方式还提供计算装置,其包括上面所描述的存储器设备和网络接口控制器(nic),该网络接口控制器被耦合以经由网络接收远程直接存储器存取(rdma)写入包,该写入包包含将被写入到存储器设备的数据、指定数据将被写入的地址,并指示数据将被刷新到目标存储器,并且该网络接口控制器被耦合以在接收rdma写入包后接收rdma刷新包,并且该网络接口控制器被配置为响应于rdma写入包来通过总线将数据在其中刷新标志被设置的事务包中传送到存储器设备,并响应于rdma刷新包将刷新指令传送到存储器设备。

根据本发明的实施方式另外提供用于在存储器设备中的数据存储的方法,该存储器设备包括目标存储器和易失性缓冲存储器。方法包括在易失性缓冲存储器中接收通过总线写入到存储器设备的数据,以用于在存储器设备的存储器地址空间内的指定地址中存储。刷新指令经由总线被接收。响应于刷新指令,在存储器地址空间内具有指定地址的在缓冲存储器中保存的数据被立即刷新到目标存储器。

根据本发明的实施方式还另外提供用于在存储器设备中的数据存储的方法,该存储器设备包括目标存储器和易失性缓冲存储器。方法包括在易失性缓冲存储器中接收通过总线在事务包中被写入到存储器设备的数据,以用于在存储器设备的存储器地址空间内的指定地址中存储,每个事务包包括事务描述符,其包括刷新标志。刷新指令经由总线被接收。响应于刷新指令,在将数据传送到存储器设备的事务包中设置刷新标志的、在缓冲存储器中保存的数据被立即刷新到目标存储器。

从结合附图进行的本发明的实施方式的以下详细描述中,本发明将得到更完全地理解,其中:

附图简述

图1是根据本发明的实施方式示意地示出计算机系统的方框图;

图2是根据本发明的实施方式示意性示出用于控制持久性存储器设备的方法的流程图;

图3是根据本发明的实施方式示意性示出用于被写入到存储器设备的数据的远程刷新的方法的梯形图。

实施方式的详细描述

使用持久性存储器的软件应用一般依赖于以下假设:一旦数据已经被写入到持久性存储器设备,该数据将实际上保存。换句话说,该应用假设写操作已经被提交到持久性存储器并且将保持不受任何随后的断电或其他系统故障的影响。

然而,实际上,这种假设不总是正确的,特别是当持久性存储器设备由投递式(posted)写入操作经由诸如pci或计算机中的其它外围组件总线的总线访问时。持久性存储器设备常常包括易失性随机存取存储器(ram),其作为缓冲器用于接收通过总线写入到存储器设备的数据。设备中的存储器控制器决定何时将数据刷新到持久性存储器,并可能并不立即这样做。因此,在通过pcie总线将数据写入到持久性存储器设备后,投递写入操作的实体一般不确保数据实际上已经从缓冲器被提交到持久性存储器中。

作为另一个示例,当诸如网络接口控制器(nic)的外围设备通过总线将数据写入到持久性系统存储器时,数据沿着诸如在属于总线的根复合体的缓存中的易失性存储器中的路径被缓存。总线将立即向投递写入操作的设备返回确认,并且设备通常不接收数据实际上已经从缓存被刷新到持久性存储器的任何确认。

本文描述的本发明的实施方式通过提供设备架构和技术来解决这些困难,该设备架构和技术使得实体能够通过总线将数据写入到持久性存储器设备以确保数据实际上已经被刷新到持久性存储器。这些技术可通过诸如应用程序的软件实体和诸如nic的硬件实体来应用,该软件实体和硬件实体将数据写入到这样的持久性存储器设备并从这样的持久性存储器设备读取数据。

当由nic应用时,所公开的技术可用于实现由跨网络的对等节点发起的远程直接存储器存取(rdma)操作,同时最小化或完全消除对中断与这些操作有关的中央处理单元(cpu)的需要。在对等节点处部署的对等nic可被配置为响应于由运行在对等节点上的应用程序提交到对等nic的rdma写入和刷新工作请求而通过网络传输rdma写入和刷新包。在接收侧的nic然后在向对等nic发信号通知已经完成操作之前验证数据已经被写入并实际上刷新到持久性存储器。

所公开的实施方式在通过诸如pcie总线的外围组件总线存取和控制持久性存储器设备中是特别有用的,并且因此实现在标准计算机系统中的持久性存储器的更通用、规模扩大的用途。此外,这些实施方式的原理可通过其它种类的总线加以必要的变更来被应用,其它种类的总线诸如双列直插式存储器模块(dimm),其通常用于中央处理器(cpu)和系统存储器之间的通信。

另外,尽管所公开的实施方式主要涉及数据到持久性存储器的刷新,但是本文描述的刷新技术和语义可类似地用于确保数据仅仅被刷新成一致的,即,从诸如缓存的任何中间缓冲器刷新到诸如主机系统存储器的目标存储器,其中,确保数据对于在计算机上运行的其它应用和设备是可见的。主机计算机上的任何给定的存储器区的刷新性质(例如,刷新操作是否使数据被刷新到持久性存储器或仅仅被刷新成一致的)可在主机计算机上被本地设置,这取决于应用和系统需求。在这个模型中,当对等nic通过网络将rdma刷新操作引导到主机计算机上的特定存储器区时,nic操作的语义对区的实际刷新性质是不可知的。

因此,在随后的描述中的“持久性存储器”的引用应作为刷新到无论是否是持久性的目标存储器的更一般的示例被理解。出于同样的原因,术语“缓冲器”应被理解为不仅是指与给定存储器设备中的目标存储器特定相关联的ram缓冲器,而且还指任何种类的缓存或其中可在刷新到目标存储器之前暂时保存数据的其它存储器。下文描述的一些实施方式利用“持久性标志”,但是该术语也应当被理解为“刷新标志”的一个示例,其用于标记在给定事务中的数据以用于立即刷新,如下文所述。

在所公开的实施方式中,持久性存储器设备包括易失性缓冲存储器,其接收由储存发起者通过总线写入的数据,以用于在持久性存储器的存储器地址空间内的指定地址中储存。在将数据写入到总线后,发起者将刷新指令发送到持久性存储器设备。这个刷新指令可应用到在该刷新指令之前投递的写入命令中通过总线传送到存储器设备的所有数据,或者其可指示应被刷新到持久性存储器的、缓冲存储器中的特定数据(但是可能不是所有数据)。响应于这个刷新指令,持久性存储器设备中的存储器控制器立即实施所请求的刷新操作。如果刷新指令应用到存储器地址空间中的指定范围,则在该范围之外的数据可留在缓冲存储器中(至少暂时地)而不立即刷新到持久性存储器。在将数据刷新到持久性存储器后,存储器控制器通过总线将完成消息发送到发起者。

当刷新指令识别在存储器地址空间内的特定范围,其使存储器控制器将在被识别的范围内的具有指定地址的在缓冲存储器中保存的数据刷新到持久性存储器。通常,其中范围将被刷新的总线地址空间根据存储页面被识别,并且存储器控制器将用于刷新的存储页面的被识别的范围从总线地址空间转换成存储器地址空间中的存储器块。在这些实施方式中的存储器控制器包括在硬件逻辑和/或软件中实现的逻辑组件,其在本文中被称作“持久性代理”,其负责与数据到持久性存储器的刷新相关的管理、地址转换和消息传递。

在其它实施方式中,储存发起者通过总线在事务包中将数据写入到持久性存储器设备,该事务包包括包含持久性标志的事务描述符,即,描述符中可由发起者设置以标记用于从缓冲器到持久性存储器的立即刷新的数据的一个或多个位。发起者然后通过总线发送刷新指令,这使存储器控制器将保存在缓冲存储器中的数据立即刷新到持久性存储器,其持久性标志在将数据传送到存储器设备的事务包中被设置。

图1是根据本发明的实施方式示意地示出计算机系统20的方框图。系统20包括计算机22和24,其作为网络26的节点被连接。为了简单起见,仅两台计算机22和24在图1中被示出,并且仅计算机22的组件被详细示出。实际上,系统20通常包括大量的计算机,每个可以以类似于计算机22的方式来构建和操作。网络26是分组数据网络,诸如适当的infiniband或以太网,其能够进行rdma传输。

计算机22包括cpu28和系统存储器30。根复合体32用作存储器30的存储器控制器并且还将cpu28和存储器30耦合到外围组件总线34,诸如pcie总线。存储器30通常包括在dimm封装中的一个或多个集成电路芯片,包括持久性存储器(pmem)37。cpu28和根复合体32包括各自的存储器缓存35和36,存储器缓存35和36用作将被储存在存储器30的地址空间内的指定地址中的数据的缓冲器。

计算机22通过nic38被连接到网络26,nic38与对等节点的nic通信,其包括计算机24的nic39。nic38和nic39通过在nic之间建立的传输服务实例交换rdma请求和响应。在infiniband和一些其它rdma协议的背景下,传输服务实例采取队列对(qp)的形式,这使运行在计算机22上的软件进程与计算机24上的进程能够交换数据和指令。

计算机22还包括被连接到总线34的持久性存储器设备40。设备40包括一个或多个存储器芯片,一个或多个存储器芯片包括持久性存储器42和通常包括ram的易失性缓冲存储器(vmem)44。存储器控制器46通过总线34接收和发送数据和指令并控制持久性存储器42和缓冲存储器44的操作,包括数据从缓冲存储器到持久性存储器的指定刷新。在其中总线34被配置为pcie总线的图示实施方式中,这些数据和指令以事务级包(tlp)的形式通过总线34被传送。这种包也被简称为事务包。

设备40将存储器地址空间暴露在总线34上,使得包括软件进程和诸如nic38的硬件部件的其他实体能够经由总线从地址空间中的指定地址读取或写入到地址空间中的指定地址。在一些实施方式中,设备40使用内部地址来在持久性存储器42中存储和接收数据,该内部地址与在这些读取和写入操作中使用的总线地址空间中的地址不同。在一些这样的情况下,控制器46维护用于在总线地址空间和内部地址空间之间转换的地址转换表和地址转换逻辑。用于使用和维护这样的表的方案例如在2015年11月30日提交的美国专利申请14/953,462中被描述,其被转让给本专利申请的受让人并且其公开内容通过引用被并入本文。通常,控制器46的功能包括总线34上的数据事务的粒度和持久性存储器42中存储的可能更大或更小的数据块的粒度之间的转换,数据事务的粒度通常以页来表达(例如,如在pcie标准中使用的4kb的单位)。

在一些实施方式中,如下文进一步描述的,控制器46包括持久性代理(pa)48,其处理与从缓冲存储器44到持久性存储器42的数据的刷新有关的命令的消息传递和执行。pa48可作为控制器46的逻辑和处理组件的一部分在合适的嵌入式处理器上以软件或固件或以硬件逻辑来实现。用作系统存储器30的控制器的根复合体32通常包括类似的pa48,如可能是nic38和总线34上的其它组件。

pa48提供消息传递接口,其使得总线34上诸如nic38的实体能够将刷新指令传递到持久性存储器设备40。这些指令可以涉及到在总线34上的所有先前投递的写入,或者它们可以识别设备40的存储器地址空间内的将被刷新到持久性存储器42的范围。如前所述,将被刷新的范围通常根据总线34的总线地址空间中的页来指定,并且pa48将该范围转换为用于在设备40的存储器地址空间内刷新的存储器块。为了有效和可靠的消息流控制,pa48可以向nic38和其它总线实体发布持久性信用,其在刷新指令被提交时被消耗。在将指定范围内的数据刷新到持久性存储器42之后,pa48通过总线34向刷新指令的发送者发送完成消息,并发布附加信用以供后续使用。

作为由pa48提供的持久性消息传递接口的替代或除其之外,在总线34上传送的tlp的报头内的一个或多个位(例如报头的事务描述符字段中的一个或多个位)可以被定义为持久性标志。在pciexpress基本规范(版本3.0,2010年11月10日由pci-sig出版)中,事务描述符在2.2.6节中被定义为tlp报头的一部分,其用于运载在总线上的请求者和完成者之间的事务信息。事务描述符的“属性”字段包括四个位,其中之一可以被设置为将给定tlp中的数据标记为需要持久性存储。例如,只要总线34上的实体被编程为将它如此识别,则在2.2.6.5节中定义的“nosnoop”属性字段可以被用于这个目的。该方法的优点在于,其利用现有的总线协议特征,而不需要定义新的消息传递接口。

因此,当nic38(或总线34上的另一实体)在寻址到存储器设备40的写入tlp中通过总线34传送数据时,nic可在tlp描述符中设置持久性标志以标记持久性地数据。存储器设备40中的控制器46跟踪其中保存这种标记数据的缓冲器44中的地址范围。在投递写入操作之后,nic38通过总线34向设备40发送刷新指令,例如,具有设置了相同持久性标志的零长度读取。控制器46识别这个刷新指令,并将在缓冲存储器44中保存的所有标记的数据立即刷新到持久性存储器42。在将标记数据刷新到持久性存储器42之后,控制器46通过总线34发送寻址到刷新指令的发起者的完成消息,诸如对零长度读取的响应。

图2是根据本发明的实施方式示意性示出用于控制持久性存储器设备40的方法的流程图。为了完整性,该方法结合了上述两种持久性控制协议的特征:持久性代理48和用于持久性的事务包的标记之间的消息传递接口。可选地,这些协议中的任一个可独立于其它协议而单独在计算机22中使用。此外,虽然为了清楚和方便起见具体参考设备40描述了该方法,但是,它可以可选地应用于将持久性数据写入系统存储器30以及其它总线连接的持久性存储器组件。

当设备40通过总线34接收tlp时,图2的方法在tlp接收步骤50处启动。在解析步骤52处,控制器46读取tlp报头以便确定所请求的操作的类型。当tlp是写入包时,在持久性检查步骤54处,控制器46检查事务描述符以确定持久性标志是否被设置。如果没有被设置,则在投递式写入步骤56处,存储器设备40将tlp处理为包含在tlp有效载荷中的数据的普通的投递式写入。在这种情况下,数据可被写入缓冲存储器44,并且然后根据由控制器46设置的优先级被刷新到持久性存储器42,而没有立即刷新或在故障情况下的持久性的任何保证。如果持久性标志被设置,并且数据被写入缓冲存储器44,则控制器46在持久性写入步骤58处标记用于刷新的数据。

另一方面,当在步骤52处发现在步骤50处接收的tlp不是写入包时,在刷新检查步骤60处,控制器46检查tlp以确定其是否包含刷新指令。如果不包含,则控制器46在非刷新操作步骤62处继续由tlp指示的适当操作,例如数据读取操作。否则,控制器将根据刷新指令继续将数据从缓冲存储器44刷新到持久性存储器42。

如前所述,本发明的实施方式提供两种互补类型的刷新操作:到pa48的刷新消息,其指定将被刷新到持久性存储器42的存储器范围;以及刷新tlp,诸如零长度读取,其指示先前标记用于持久性的所有数据应该被刷新到持久性存储器。控制器46在刷新类型检查步骤64处检查这两种类型的操作中的哪一种被调用。如果在步骤50处接收的tlp是具有设置了持久性标志的刷新tlp,则控制器46识别当前保存在缓冲存储器44中的所有标记的数据,即,在具有设置了持久性标志的写入tlp中到达的数据,并且在标记的刷新步骤66处将这些数据刷新到持久性存储器42。控制器46然后用指示已标记的数据已被刷新并且现在被存储在持久性存储器42中的tlp来响应nic38。

可选地,如果在步骤50处接收到的tlp包含指定要刷新的存储器范围的消息,则pa48在范围刷新步骤68处将指定范围中的所有数据刷新到持久性存储器42(无论数据是否被标记)。pa48然后向nic38发送完成消息,报告指定范围中的数据现在存储在持久性存储器42中。

上述技术可以用于实现rdma持久性写入语义。这样的语义允许网络26上的对等节点中的nic(诸如计算机24的nic39)将数据写入计算机22上的存储器(诸如设备40或系统存储器30),并接收指示数据实际上已被刷新到持久性存储器42或37的完成报告。为了使计算机22上的实体能够调用这些类型的操作,新的rdma动词可被定义为:rdma刷新,以及可能的rdma持久性写入。这些动词由在计算机22上运行的软件进程在向nic39提交工作请求时使用,这使nic39通过网络26将对应的rdma写入包和rdma刷新包传输到nic38。(后一种包类型在这里被称为“rdma刷新”,因为其与rdma写入操作的关联性,但是它实际上可以作为具有在有效载荷中的刷新控制描述的send包来传输)。

例如,nic39可以通过网络26传输包含将被写入存储器设备40的数据并指定数据将被写入的地址的一个或多个rdma写入包。nic39然后传输指示所有先前投递的写入将被刷新到持久性存储器42或识别存储器设备40中将被刷新到持久性存储器42的地址范围的rdma刷新包。在接收到rdma写入包时,nic38通过总线34将一个或多个对应的写入tlp发送到设备40,设备40可以将数据临时放置在缓冲存储器44中。然后,响应于rdma刷新包,nic38通过总线34向pa48发送刷新消息,该pa48将适当的数据从缓冲存储器44刷新到持久性存储器42。通常,数据和刷新指令从nic38传送到存储器设备40,并且数据被存储器控制器46从缓冲存储器44刷新到持久性存储器42,而不生成对cpu28的中断。

存在rdma刷新包可识别将被刷新的地址范围的各种方式。例如,计算机24上的刷新工作请求可以包括将被刷新为持久性的地址条目的列表,然后该列表被包括(在任何所需的地址转换之后)在由nic39传输的对应rdma刷新包中以及由nic38发送到存储器设备40的刷新消息中。另外或可选地,待刷新的地址的范围可以根据nic39和nic38在发送和接收所讨论的rdma包中使用的qp来识别。例如,在给定qp上接收的rdma刷新包可以使nic38指示pa48刷新在该qp上接收到的所有数据,或者刷新在与qp相关联的特定存储器区中的、在给定qp上接收的所有数据。

在这点上,存储器控制器46通常识别设备40的存储器地址空间内的多个区。每个这样的区可以与给定的qp相关联,并且具有由对应的存储器密钥(mkey)指示的属性,其由包括nic38的计算机22的元件在访问存储器区时使用。根复合体32在其作为系统存储器30的存储器控制器的角色时,可以识别系统存储器中的类似种类的区和属性。在一些实施方式中,每个存储器区的属性包括刷新属性,其向适当的存储器控制器指示如何处理关于该区的刷新命令。例如,刷新属性可以指示给定区是否对应于包括持久性存储器的范围,使得对应的数据被刷新成持久性,或者该区是否仅针对一致性而不是持久性被刷新。对于每个存储器区的刷新属性可以由在cpu28上运行的软件设置,并且因此确定存储器控制器在接收到刷新命令时如何处理每个这样的区中的数据。

可选地,nic39可以传输包含将被写入存储器设备40的数据的一个或多个rdma写入包,其中这些包指定在设备40中数据将被写入的地址,并指示数据将被刷新到持久性存储器。在接收到这些rdma写入包时,nic38通过总线34向设备40发送具有在tlp描述符中设置的持久性标志的一个或多个对应的tlp。nic39然后发送rdma刷新包,这使得nic38向存储器设备40发送刷新tlp,例如具有设置了持久性标志的零长度读取tlp。响应于这些tlp,控制器46将接收数据并将数据刷新到持久性存储器42,如上所述。在这种情况下,同样,数据和刷新指令从nic38传送到存储器设备40,并且数据被控制器46从缓冲存储器44刷新到持久性存储器42,而不生成对cpu28的中断。

在任何情况下(无论所有数据还是指定范围或所有标记的数据都要被刷新),一旦所有所需的数据已被成功地刷新到持久性存储器42,控制器46将通过总线34向nic38报告刷新操作已完成。响应于该报告,nic38将通过网络26将确认包发送回nic39,然后nic39将投递完成报告(通常以完成队列元素[cqe]的形式)。一旦启动数据传输的计算机24上的进程接收到完成报告,它就可以认为数据已经以完全可信度被存储在持久性存储器中。

图3是根据本发明的实施方式示意性示出用于被写入到存储器设备的数据的远程刷新的以上技术的示例实现的梯形图。为了具体性和清楚起见,图3中的操作中涉及的组件被认为是图1所示的那些,如上文所述。然而,可选地,图3中所示的通信和操作的流程可以在本领域中已知的其它类型的系统架构中实现。

作为预备步骤,主机计算机22的cpu28通过向nic38发送注册指令70来将一个或多个存储器区注册在目标存储器中。注册指令包括刷新属性,指示刷新指令在每个存储器区中如何被处理。

主机计算机24的cpu提交rdma写入工作请求72,这使得nic39通过网络26向nic38传输一个或多个rdma写入包74,其包含在工作请求72中指示的数据。当在给定qp上接收到包74时,nic38使用对应的存储器区的存储器密钥(如由注册指令70所指示的),在一个或多个总线事务76上通过总线34将数据写入系统存储器30或设备40中的指定地址。nic38向nic39返回一个或多个rdma写入确认78。在接收到所有rdma写入包74的确认后,nic39向主机计算机24的cpu发布写入完成报告80(诸如cqe)。

在rdma写入工作请求72后,主机计算机24的cpu向nic39提交rdma刷新工作请求82,使得nic39向nic38传输rdma刷新包84。因为将在计算机22中的每个存储器区上执行的刷新操作的性质由注册指令70所指示的相应的刷新属性来确定,所以工作请求82和包84的语义对于将被执行的特定类型的刷新是不可知的(例如,如上所解释的,数据是被刷新成持久性还是一致性)。在接收到rdma刷新包84时,nic38通过总线34启动定向到所讨论的存储器区的刷新事务86。

响应于刷新事务86,存储器控制器(诸如控制器46或根复合体32)执行适当的刷新操作,例如,将缓冲的数据刷新到持久性存储器42或37。在完成刷新时,存储器控制器通过总线34向nic38返回刷新通知88,指示数据已经根据需要被刷新。nic38然后向nic39返回刷新确认90,然后nic39向主机计算机24的cpu发布刷新完成报告92。在这个时刻,启动图3所示的交换的主机进程被确保所讨论的数据已经根据需要全部成功地写入且刷新。

将认识到,以上描述的实施方式是通过示例的方式引用的,并且本发明不限于上文中已经特别示出和描述的那些。相反,本发明的范围包括上文所描述的各种特征的组合和子组合以及本领域技术人员在阅读以上描述之后将想到的且未在现有技术中公开的其变型和修改。

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