储存存储器直接访问的制作方法

文档序号:11288546阅读:212来源:国知局
储存存储器直接访问的制造方法与工艺



背景技术:

消费者机器可以具有处理器和存储器并且可以运行操作系统和应用。储存提供器可以包括诸如硬盘驱动器阵列的储存设备。消费者机器可以通过诸如光纤通道、互联网小型计算机系统接口(iscsi)、串行连接小型计算机系统接口(sas)等的i/o通道来与储存提供器进行通信。消费者机器可以构建和排队i/o请求。消费者机器还可以高速缓存来自储存提供器的数据,以减少对经常使用的数据的访问时间。处理i/o请求和数据高速缓存可能会消耗消费者机器处理器的资源。

附图说明

下面将参考以下附图描述各种示例。

图1是根据实现的包括储存存储器直接访问(smda)提供器的示例系统的框图。

图2是根据实现的用于对来自消费者机器的固定(pin)命令进行响应的示例方法的流程图。

图3是根据实现的用于对来自消费者机器的解除固定(unpin)命令进行响应的示例方法的流程图。

图4是根据实现的用于监视隐式一致性点条件的示例方法的流程图。

图5是根据实现的用于对多个解除固定命令进行响应的示例方法的流程图。

图6是根据实现的示例smda提供器的框图。

图7是根据实现的用于对固定命令进行响应和用于对解除固定命令进行响应的示例方法的流程图。

图8是示出用经由存储器地址访问smda提供器的储存存储器区域中的数据的示例指令进行编码的非暂时机器可读介质的框图。

具体实施方式

消费者机器(例如,服务器、工作站或其他计算设备)可以具有处理器和存储器。消费者机器的操作系统可以管理存储器并且可以运行应用。消费者机器还可以与包括诸如硬盘驱动器、固态驱动器、硬盘驱动器阵列、磁带驱动器、光盘驱动器等的(一个或多个)储存设备的储存提供器进行通信。消费者机器可以远离储存提供器和/或与储存提供器隔离。消费者机器可以通过诸如光纤通道、互联网小型计算机系统接口(iscsi)、串行连接小型计算机系统接口(sas)等的i/o通道来与储存提供器进行通信。为了执行这样的通信,消费者机器可以构建和排队i/o请求(例如,数据读取、写入、修改),并将i/o请求发送到储存提供器。储存提供器然后可以处理接收到的i/o请求。与消费者机器处理器能够构建和排队i/o请求的速度相比,储存提供器在处理i/o请求时可能较慢,这至少部分是由于储存提供器的(一个或多个)储存设备的访问时间所引起的。由于储存提供器的i/o请求处理速度可能较慢,所以消费者机器可以高速缓存来自储存提供器的数据,以减少常用数据的访问时间。此外,消费者机器处理器可以在写入或修改储存提供器处的数据之前执行数据日志记录,以支持诸如数据更新的原子性之类的事务完整性原则。i/o请求、数据高速缓存和日志记录的管理可以利用消费者机器的处理器资源,但计算资源成本可以被认为至少是可接受的--鉴于相对较慢的储存提供器速度。

诸如非易失性双列直插式存储器模块(nv-dimm)、忆阻存储器、闪存、相变存储器等的非易失性或持久存储器可以用作储存设备,并且更具体地,用作储存提供器的(一个或多个)储存设备。非易失性或持久存储器可比硬盘驱动器、固态驱动器、磁盘阵列、磁带驱动器、光学驱动器等更快,并且可以在速度上与系统存储器相当。因此,在将非易失性或持久性存储器用作储存设备的情况下,由消费者机器处理器管理i/o请求、数据高速缓存和日志记录的计算成本可能是更加明显的。

本申请的示例技术可以涉及储存存储器直接访问(smda)提供器。响应于来自消费者机器的固定命令,smda提供器可以将储存存储器区域固定到消费者机器的存储器地址。储存存储器区域可以对消费者机器可用,以用于经由存储器地址进行数据访问,并且储存存储器区域可以对应于在固定命令中由消费者机器请求的储存设备的储存范围。响应于来自消费者机器的解除固定命令,smda提供器可以原子地提交在储存存储器区域中的数据。因此,对于向消费者机器将储存设备呈现为存储器并且用于从消费者机器卸载诸如事务完整性支持的特征,本申请的技术可能是有用的。

现在参见附图,图1是包括示例储存存储器直接访问(smda)提供器100-1的框图,消费者机器120-1可以用smda提供器100-1来发起和操作smda会话。smda提供器100-1可以包括接口102和smda控制器104。smda提供器100-1可以与储存设备110通信,和/或可以包括储存设备110,储存设备110诸如是硬盘驱动器、固态驱动器、磁盘阵列(例如,小型计算机系统接口或scsi阵列)非易失性或持久存储器(例如,nv-dimm、忆阻存储器、闪存、相变存储器等)或适用于数据的持久储存的其他设备。在一些实现中,可以将smda提供器100-1包括在包括处理器的计算设备中。

smda控制器104可以与接口102通信,并且接口102可以与消费者机器(例如120-1)通信。因此,smda控制器104,并且更一般来讲,smda提供器100-1,可以经由接口102来与消费者机器120-1通信(即,传送数据、机器可读指令等)用于smda会话。例如,在一些实现中,接口102可以是或可以包括存储器总线接口。在一些实现中,接口102可以包括网络接口。

消费者机器120-1可以被包括在诸如服务器、工作站、台式计算机、膝上型计算机、平板计算设备、移动设备等等的计算系统中,或者可以是操作在上述计算系统上的虚拟机器。在一些实现中,消费者机器120-1、smda提供器100-1和储存设备110可以全部被包括或封闭在相同的计算设备中。在一些实现中,smda提供器100-1可以与消费者机器120-1相分离或远离消费者机器120-1。消费者机器120-1可以由用户操作。

如在此下文中将进一步描述的,smda提供器100-1可以在多个相似的smda提供器(例如,100-1至100-n)之中,并且消费者机器120-1可以在多个消费者机器(例如,120-1至120-n)之中。smda提供器100-1至100-n可以彼此通信。消费者机器120-1至120-n可以彼此通信。另外,特定的消费者机器可以与多个smda提供器通信,并且特定的smda提供器可以与多个消费者机器进行通信。在讨论多个smda提供器100-1至100-n与多个消费者机器120-1至120-n之间的关系之前,将首先描述消费者机器120-1和smda提供器100-1之间的smda会话的示例方面。

在一些实现中,可以使用smda应用编程接口(api)的函数调用或命令来执行smda会话。消费者机器120-1可以通过向smda提供器100-1发出smda开始命令来发起smda会话。在一些实现中,消费者机器120-1可以提供会话id与smda开始命令,以用作后续命令的识别参数(例如,固定命令和解除固定命令)。消费者机器120-1可以通过向smda提供器100-1发出smda停止命令连同识别会话id来终止smda会话。在smda会话期间,消费者机器120-1可以发送由smda提供器100-1--并且更具体来讲由smda控制器104--处理的固定命令和解除固定命令。一般取决于储存设备110的速度,smda控制器104可以以同步或异步的方式处理固定和解除固定命令。

smda控制器104可以包括固定模块106以及解除固定模块108,固定模块106用于将储存存储器区域112固定到消费者机器120-1的存储器地址,解除固定模块108用于原子地提交在储存存储器区域中的数据。smda控制器104还可以包括上行调用模块109,用于在检测到影响储存存储器区域112的触发事件的情况下经由接口102向消费者机器120-1发送通知。如本文所使用的,术语“模块”可以指代编码在设备(例如,smda提供器100)的机器可读介质上并且可由设备的处理器执行的指令集。另外或替代地,模块可以包括硬件设备,所述硬件设备包含用于实现下面描述的功能性的电子电路。

固定模块106可以将储存存储器区域112固定(即,映射)到消费者机器120-1的存储器地址,特别是响应于从消费者机器120-1接收的固定命令。从消费者机器接收的固定命令可以伴随有诸如会话id和储存设备110的储存范围113之类的输入参数,其可以由至少一个三元组来识别,所述三元组包括卷id、逻辑块编号和大小。可以从独占标志、初始化标志、只读标志和/或存储器类型中选择其他输入参数。在一些实现中,固定模块106可以异步地处理固定命令(例如,由于较慢速度的储存设备110)。更具体地,在异步模式中,smda提供器100-1可以在接收到固定命令时发送“待定”状态消息,并且在处理固定命令完成时用“成功”状态消息向消费者机器120-1进行回呼。对于异步实现,固定命令输入参数可以包括回呼相关参数,诸如指向回呼例程的指针和针对回呼例程的上下文。现在将参考图2来描述固定模块106的操作和固定命令输入参数的影响。

图2是用于处理从消费者机器(例如,120-1)接收的固定命令的smda提供器(例如,100-1)--并且更具体来讲是smda控制器(例如,104)的固定模块(例如,106)--的示例方法200的流程图。方法200可以以电子电路形式和/或以存储在机器可读存储介质上的可执行指令的形式来实现。在本公开的一些实现中,可以以与图2中所示出的顺序不同的顺序或基本上同时地执行方法200的一个或多个框。在本公开的一些实现中,方法200可以包括比图2中所示出的框更多或更少的框。在一些实现中,方法200的一个或多个框可以以某些次数持续和/或可以重复。

方法200可以开始于框202,并且在框204处,smda提供器100-1可以从消费者机器120-1接收固定命令。在一些实现中,固定命令可以包括指定储存设备(例如,110)的特定储存范围(例如,113)的输入参数,并且更具体地,由卷id、逻辑块编号和大小的至少一个三元组来指定储存范围113。在一些实现中,被请求的储存范围113可以是由多个这样的三元组所指定的在储存设备110中的多个位置。消费者机器120-1可以请求储存范围113以便访问其中的数据,或者可以请求储存范围113以便在smda提供器100处分配特定量的储存。

在框206处,固定模块106对固定命令和其中所请求的储存范围进行响应。固定模块106首先分配对应于所请求的储存范围113的储存存储器区域(例如,112)(在图1中通过储存存储器区域112和储存范围113之间的虚线表示对应关系)。例如,在一些实现中,储存存储器区域112和储存范围113可以在大小方面进行对应。在一些实现中,可以从包括在smda提供器100-1中的存储器分配储存存储器区域112。在其中储存设备110是非易失性或持久存储器(例如,nv-dimm、忆阻存储器、闪存、相变存储器等)的实现中,可以从储存设备110分配储存存储器区域112。在分配储存存储器区域112之后,固定模块106将储存存储器区域112固定或映射到消费者机器120-1的存储器地址空间中的存储器地址(即,消费者机器120-1的处理器可寻址的存储器地址)并将存储器地址输出到消费者机器120-1。在一些实现中,(例如,由于存储器分段)可以将储存存储器区域112固定或映射到多个存储器地址。借助于将储存存储器区域112固定(或映射)到消费者机器120-1的存储器地址,消费者机器120-1可以在smda提供器100-1处不是作为i/o操作而是作为存储器操作来执行数据访问(例如,读取、写入、修改等)。

在一些实现中,固定命令可以包括存储器类型输入参数,其可以指定消费者机器120-1期望的存储器属性。示例存储器类型包括持久、暂时或存储器速度。响应于存储器类型输入参数,固定模块106可以基于对存储器类型输入参数的适用性而在框206处从可用存储器设备分配储存存储器区域112。例如,与用于暂时存储器类型输入参数的易失性存储器相反,固定模块106可以从用于持久存储器类型输入参数的非易失性存储器分配储存存储器区域112。作为另一示例,与用于较低速存储器类型输入参数的闪存相反,固定模块106可以从用于高速存储器类型输入参数的忆阻存储器中分配储存存储器区域112。

在框208处,如果固定命令包括作为输入参数的独占标志,则控制可以转到框210(在框208处为“是”)。在框210处,固定模块106防止与smda提供器100-1通信的其它消费者机器(例如,除了发布标志独占的固定命令的消费者机器120-1之外的消费者机器,诸如消费者机器120-n)访问由消费者机器120-1请求的储存设备110的储存范围113、再现对消费者机器120-1独占的储存存储器区域112和/或储存范围113的访问。在一些实现中,当从消费者机器120-1接收到识别独占的储存存储器区域112和/或储存范围113而没有独占标志的固定命令时,可以终止独占性。在一些实现中,如果固定模块106从另一消费者机器接收到识别独占的储存范围113的固定命令,则固定模块106可以(以在下面关于框230所描述的方式)向消费者机器120-1发送上行调用通知,请求消费者机器120-1以上述方式终止独占性。

返回到框208,如果固定命令不包括作为输入参数的独占标志(在框208处为“否”),或者在其他实现中如果固定命令包括共享标志而不是独占标志,那么控制可以转到框212,并且固定模块106可以允许其他消费者机器(例如,120-n)经由固定命令来固定储存范围113的相同或重叠的部分。在消费者机器之间共享储存范围113的至少一部分的情况下,在一些实现中共享的消费者机器可以借助于以下关于框230所描述的上行调用通知来协调对它们之间的共享区域的更新。在框208和框210之后,控制可以转到框214。

在框214处,如果固定命令包括作为输入参数的初始化标志(在框214处为“是”),则控制可以转到框216。在框216处,固定模块106可以用零(或任何其他合适的初始化方案)来初始化储存存储器区域112。借助于初始化储存存储器区域112,为了安全起见,可以擦除从过去的smda会话或其他存储器操作而持久的储存存储器区域112中的内容。在一些实现中,这种安全性可能不是必需的,并且框216认为储存存储器区域112被初始化并且准备好由消费者机器120-1进行访问而无需任何擦除操作。返回框214,如果固定命令不包括初始化标志(在框214处为“否”),则控制可以转到框218。在框218处,固定模块106可以将数据从储存设备110的被请求储存范围113复制到储存存储器区域112。在框218之后,控制可以转到框220。

在框220处,如果固定命令包括作为输入参数的只读标志(在框220处为“是”),则控制可以转到框222。如果固定命令不包括只读标志(在框220处为“否”),则控制可以直接转到框224。在框222处,固定模块106防止对储存存储器区域的数据修改--特别是如果在框218处将数据从储存范围113复制到储存存储器区域的情况下。在框222之后,控制可以转到框224。

在框224处,smda提供器100-1接收或允许消费者机器120-1对储存存储器区域112的数据访问。例如,消费者机器120-1,并且更具体来讲其处理器在框204处将数据访问操作(读取、写入、修改等)寻址到由解除固定模块提供的存储器地址,并且smda控制器104将数据访问引至储存存储器区域112。储存存储器区域112中的数据可以是非持久性的,直到smda控制器104响应于来自消费者机器120-1的解除固定命令才将数据提交为持久性,如下面将要描述的那样。

在框226处,smda控制器204监视触发事件。如果检测到触发事件(在框228处为“是”),则控制可以转到框230,其中上行调用模块109可以向(一个或多个)消费者机器发送上行调用通知。上行调用通知所发送到的特定消费者机器以及上行调用通知的内容可以取决于在框228处检测到的触发事件的类型。现在将描述触发事件的各种示例。

在一些实现中,触发事件可以是来自另一消费者机器(例如,120-n)的访问储存范围113的请求。例如,该请求可以是来自另一消费者机器120-n的固定命令的形式,其识别已经与消费者机器120-1的存储器地址相关联的储存范围113的至少一个重叠部分。作为响应,上行调用模块109可以通知消费者机器120-1:另一消费者机器120-n正在请求访问储存范围113。另外,如果与储存范围113相关联的储存存储器区域112被独占地固定到消费者机器120-1,则上行调用模块109还可以请求消费者机器120-1终止独占固定。

在一些实现中,触发事件可以是储存存储器区域112或储存设备110的储存范围113的非smda访问。只是作为一个示例,非smda访问可以是针对基于scsi阵列的储存设备110的scsii/o操作。作为响应,上行调用模块109可以向消费者机器120-1(以及共享储存存储器范围112的任何其他消费者机器)发送上行调用通知,指示存储器范围113或储存存储器区域112中的数据已经改变。

在一些实现中,触发事件可以是从另一消费者机器(例如,120-n)到smda控制器104的用于(例如,使用解除固定命令)原子地提交在储存存储器区域112中的数据的请求--特别是当消费者机器120-1和另一消费者机器120-n共享储存存储器区域112时。作为响应,上行调用模块109可以发送上行调用通知以通知消费者机器120-1有关储存存储器区域112的待定提交。

在一些实现中,触发事件可以是由smda控制器104调度的储存存储器区域112中的数据的原子提交,以建立一致性点(如下文关于解除固定模块108和图3将描述的那样)。作为响应,上行调用模块109可以发送上行调用通知以通知消费者机器120-1(和共享储存存储器范围112的任何其他消费者机器)有关对储存存储器区域112的待定更新。

方法200可以在框232处结束。在发送固定命令并经由存储器地址访问储存存储器区域112中的数据(即,在框224处)之后的某个点,消费者机器120-1可以发送解除固定命令给smda提供器100-1以提交储存存储器区域112中的数据或释放储存存储器区域112。在一些实现中,如果在诸如电源故障等等之类的影响smda控制器100-1的故障之前smda控制器100-1没有从消费者机器120-1接收到请求以原子地提交数据(即,解除固定命令),则smda控制器100-1可以在这样的故障之后丢弃储存存储器区域112中的数据。在一些情况下,消费者机器120-1可以响应于指示储存存储器区域112中的数据已经改变或被调度为更新的上行调用通知来发送解除固定命令(如上面关于图2的框230所讨论的),并且然后(尽管不是必定的)消费者机器120-1可以发送随后的固定命令以用更新的数据重新固定该储存范围113。

再次参见图1,解除固定模块108可以原子地提交由消费者机器120-1经由存储器地址访问的储存存储器区域112中的数据--特别是响应于从消费者机器120-1接收到的解除固定命令。从消费者机器120-1接收到的解除固定命令可以伴随有输入参数。例如,输入参数可以包括会话id、储存范围113和存储器地址。附加的输入参数可以包括脏标志、一致性点标志、保持固定标志和独占标志。与固定命令一样,在异步实现中,输入参数还可以包括指向回呼例程的指针和针对回呼例程的上下文,并且在接收到解除固定命令时smda提供器100-1可以向消费者机器120-1发送“待定”状态消息,并且在处理解除固定命令完成时(例如,经由回呼例程)发送“成功”状态消息。现在将参照图3来描述解除固定模块108的操作和解除固定命令输入参数的影响。

图3是用于处理从消费者机器(例如,120-1)接收到的解除固定命令的smda提供器(例如,100-1)--并且更具体来讲是smda控制器(例如,104)的解除固定模块(例如,108)--的示例方法300的流程图。方法300可以以电子电路形式和/或以存储在机器可读存储介质上的可执行指令的形式来实现。在本公开的一些实现中,可以以与图3中所示出的顺序不同的顺序或基本上同时地执行方法300的一个或多个框。在本公开的一些实现中,方法300可以包括比图3中所示出的框更多或更少的框。在一些实现中,方法300的一个或多个框可以以某些次数持续和/或可以重复。

方法300可以在框302处开始,并且在框304处,smda提供器100-1可以从消费者机器120-1接收解除固定命令。在一些实现中,解除固定命令可以包括指定包括卷id、逻辑块编号、大小和存储器地址的至少一个四元组的输入参数。四元组可以对应于用先前固定命令所请求的储存范围113和响应于该固定命令而由固定模块106返回的存储器地址。基于解除固定命令和伴随的至少一个四元组,解除固定模块108可以识别和定位要被解除固定的储存存储器区域(例如,112)。

在框306处,如果解除固定命令包括作为输入参数的脏标志(在框306处为“是”),则控制可以转到框308。在框308处,解除固定模块108可以将储存存储器区域数据聚合到由解除固定模块108(在本文中也被称为“隐式一致性点”)所确定的一致性点,并且可以将聚合的储存存储器区域数据原子地提交为持久性。换句话说,解除固定模块108可以延迟提交由解除固定命令所识别的特定储存存储器区域,直到达到隐式一致性点。例如,在一些实现中,可以通过将由多个解除固定命令所识别的多个储存存储器区域的数据更新聚合(或累积、收集、聚合、排队、组合等)到阈值数量(例如,以字节为单位的数量,相应的存储地址或储存范围的数量,或数据更新数量的其它度量)来达到隐式一致性点。在一些实现中,可以通过用脏标志聚合接收到的解除固定命令的阈值数量来达到隐式一致性点。在一些实现中,可以在基于时间的调度上达到隐式一致性点,并且(例如,在其间从接收到的解除固定命令中)聚集储存存储器区域数据直到下一个调度的一致性点。在一些实现中,smda提供器100-1可以在接收到解除固定命令之后但在满足隐式一致性点之前向消费者机器120-1发送“成功”状态消息。一旦已经满足隐式一致性点,则解除固定模块108可以通过诸如以下的技术来将聚集的储存存储器区域数据原子地提交为持久性(在本示例中包括由在框304处接收到的解除固定命令所识别的储存存储器区域112):如果从储存设备110(例如,其中储存设备110是忆阻存储器)分配了一个或多个聚集的储存存储器区域,则设置持久性比特以使一个或多个聚合的储存存储器区域是持久的;将数据从一个或多个聚合的储存存储器区域复制到储存设备110的相应储存范围(例如,其中储存设备110是硬盘驱动器,scsi阵列等)等。在一些实现中,当已经将聚集的储存存储器区域数据成功地提交为持久性时,smda提供器100-1可以用“成功”状态消息向消费者机器120-1进行回呼,以指示已经将数据提交为持久性。在其中smda提供器100-1经历故障(例如,由于电源故障或其他系统故障)但是聚集的储存存储器区域数据未达到隐式一致性点的情况下,由于故障,所以这样的数据可能被认为不可恢复(并且在一些实现中,方法300可以直接进行到框330并结束)。然而,借助于解除固定模块108确定隐式一致性点,smda提供器100-1可以以灵活和有效的方式将数据原子地提交为持久性。

在一些实现中,根据图4中所描绘的示例方法400,解除固定模块108可以针对具有在框304处接收的脏标志的解除固定命令执行框308。方法400可以在框402处开始。在框404处,解除固定模块108可以通过向消费者机器120-1发送诸如例如“成功”消息的状态消息来对解除固定命令进行响应。在框406处,解除固定模块108可以监视是否已经满足或达到隐式一致性点条件。例如,如在上面关于框308所描述的,隐式一致性点条件可以涉及以下中的至少一个:对(一个或多个)储存存储器区域的数据更新的阈值数量、接收到的解除固定命令(具有脏标志)的阈值数量、或基于时间的调度表。与框406同时地或者作为框406的一部分,在一些实现中,解除固定模块108可以聚合对应于至少一个解除固定命令--或者更具体来说对应于识别多个储存存储器区域的多个解除固定命令--的储存存储器区域数据。在框408处,如果满足隐式一致性点条件(在框408处为“是”),则控制可以转到框410,在这里解除固定模块108可以将聚合的储存存储器区域数据原子地提交为持久性,并且在一些实现中,也可以用指示数据已被提交的“成功”状态消息来对消费者机器120-1进行回呼。在另一方面,如果不满足隐式一致性点条件(在框408处为“否”),则控制可以返回到框406,并且解除固定模块可以继续监视是否已经满足隐式一致性点条件。方法400可以在框412处结束。

借助于上述方法400,可以理解的是,smda提供器100-1可以响应于具有脏标志的解除固定命令向消费者机器120-1发送“成功”状态消息(在框404处)而不等待数据提交完成,并且解除固定模块108可以作为后台操作以异步的方式检查(在框406、408处)隐式一致性点是否已被满足或达到。例如,消费者机器120-1在接收到在框404处响应于特定的解除固定命令而发送的状态消息之后,可以执行其他数据更新并发出其他固定或解除固定命令,而不等待在特定解除固定命令中识别的储存存储器区域的数据已被提交的确认。作为另一示例,解除固定模块108可以在后台执行框406、408的同时,根据方法300来处理其他解除固定命令。

再次参见图3,在框308之后,或者如果解除固定命令不包括作为输入参数的脏标志(在框306处为“否”),则控制可以转到框310。在框310处,如果解除固定命令包括作为输入参数的一致性点标志(在框310处为“是”),则控制可以转到框312。例如为了事务一致性的目的,一致性点标志指示消费者机器120-1期望(并且可以等待)储存存储器区域112的数据被提交为持久性。因此,在框312处,解除固定模块108将与消费者机器所请求的一致性点相关联的储存存储器区域数据原子地提交为持久性。这样的一致性点也可以被称为显式一致性点,因为它由消费者机器明确地请求,而不是由解除固定模块108确定为隐式一致性点。在一些实现中,具有一致性点标志的解除固定命令可以识别在诸如根据上述方法400等待隐式一致性点的具有脏标志的解除固定之类的待定解除固定命令中涉及的储存存储器区域,并且解除固定模块108可以中断那个待定解除固定命令以将储存存储器区域数据原子地提交为持久性,正如具有一致性点标志的解除固定命令所显式请求的那样。正如框308,解除固定模块108可以通过切换一个或多个持久性比特、复制数据、或者其他合适的方法来原子地提交数据。在一些实现中,当将与显式一致性点相关联的储存存储器区域数据提交为持久性时,smda提供器100-1可以用“成功”状态消息对消费者机器120-1进行回呼。在框312之后,或者如果解除固定命令不包括作为输入参数的一致性点标志(在框310处为“否”),则控制可以转到框314。

在框314处,如果解除固定命令不包括作为输入参数的保持固定标志(在框314处为“否”),则控制可以转到框316,在那里解除固定模块108可以释放储存存储器区域112。因此,如果解除固定命令不包括脏标志、一致性点标志或保持固定标志,则消费者机器120-1有效地释放(或“忘记”)储存存储器区域112而不进行持久数据更新。在框316之后,控制然后可以转到框324,这将在下面描述。在另一方面,在框314处,如果解除固定命令包括作为输入参数的保持固定标志(在框314处为“是”),那么储存存储器区域保持固定到消费者机器120-1的存储器地址,并且控制可以转到框318。

在框318处,消费者机器120-1可以以与上面关于图2描述的独占标志类似的方式(例如,框208、210和212)改变固定的储存存储器区域112的独占/共享状态。如果解除固定命令包括独占标志(在框318处为“是”),则控制可以转到框320,并且解除固定模块108防止其他消费者机器(例如,120-n)访问储存存储器区域112。如果解除固定命令不包括独占标志(在框318处为“否”),或者在其他实现中包括共享标志,那么控制可以转到框322,并且解除固定模块108可以允许其他消费者机器(例如,120-n)来固定储存存储器区域112或其一部分。在框320和322之后,控制可以转到框324。

在框324处,smda控制器204可以监视触发事件,并且如果检测到触发事件(在框228处为“是”),则控制可以转到框230,在这里上行调用模块109可以向(一个或多个)消费者机器发送上行调用通知。上行调用通知内容和接收者消费者机器可以取决于触发事件的类型。现在将描述各种触发事件。在一些实现中,触发事件可以是在框304处的解除固定命令本身的接收,特别是如果解除固定命令包括脏标志或一致性点标志,并且作为响应,上行调用模块109可以通知与消费者机器120-1共享储存存储器区域112的任何消费者机器被请求解除固定和/或待定数据提交。在一些实现中,触发事件可以是在框318、320和/或322处的储存存储器区域112的固定独占性状态的改变。例如,如果在消费者机器120-1和一个或多个其他消费者机器(例如,120-n)之间共享储存存储器区域112(或其一部分),并且来自消费者机器120-1的解除固定命令包括作为输入参数的独占标志,则上行调用模块可以通知一个或多个其他消费者机器120-n关于独占性的改变,并请求一个或多个其他消费者机器120-n对储存存储器区域112解除固定。方法300可以在框330处结束。

在一些实现中,smda控制器104可以接收来自消费者机器120-1的多个解除固定命令(其也可以被称为数据提交请求),每个解除固定命令识别不同的相应储存存储器区域(未示出)。解除固定模块108可以按照smda控制器104接收到解除固定命令的顺序来原子地提交在不同的相应储存存储器区域中的数据。smda控制器104可以使用任何合适的技术以用于逻辑地管理解除固定命令的顺序。如果多个解除固定命令包括脏标志,则可以将对应于多个解除固定命令的数据更新聚合朝向隐式一致性点,如上文关于框308所描述的那样。

图5是用于对多个解除固定命令进行响应的示例方法500的流程图。方法500可以以电子电路形式和/或以存储在机器可读存储介质上的可执行指令的形式来实现。方法500可以开始于框502,并且在框504处,smda控制器(例如,104),并且更具体地smda控制器104的解除固定模块(例如,108),可以接收多个解除固定命令,所述解除固定命令识别相应储存存储器区域。在框506处,smda控制器104(解除固定模块108)可以按照smda控制器104接收到解除固定命令的顺序来原子地提交相应储存存储器区域的数据。在框508处,方法500可以结束。

如上所述,smda提供器100-1可以在多个类似的smda提供器(例如,100-1至100-n)之中。例如,每个smda提供器可以至少包括接口(如102)和smda控制器(如104)。至少一些smda提供器可以包括相应的储存设备(如110)(或与其通信)。消费者机器120-1可以在多个消费者机器120-1至120-n之中。另外,特定的消费者机器可以与多个smda提供器通信,并且特定的smda提供器可以与多个消费者机器进行通信。在一些实现中,smda提供器(例如,100-1)的smda控制器(例如,104)可以经由smda提供器100-1的接口(例如,102)来与其他smda提供器设备(例如,100-n)协调,以支持共享存储池130。共享存储池130可以是从多个smda提供器的物理储存设备合并的虚拟存储池。在一些实现中,消费者机器120-1至120-n中的任何一个可以向smda提供器100-1至100-n中的任何一个发送固定或解除固定命令(以及smda开始和停止命令)。固定或解除固定命令可以将共享存储池130的储存范围(或可替换地,任何smda提供器的储存设备的储存范围,所述任何smda提供器包括不是接收固定或解除固定命令的smda提供器的smda提供器)识别为输入参数。由于smda提供器100-1至100-n之间的通信和协调,smda控制器(例如,104)可以将其他smda提供器设备中的至少一个(例如,100-n)中的储存存储器区域固定到至少一个消费者机器的存储器地址,并且此外,可以将数据原子地提交到共享存储池130的持久区域。借助于多个smda提供器100-1至100-n和/或多个消费者机器120-1至120-n之间的前述关系和交互,可以容易且有效地实现多个smda提供器和/或多个消费者机器扩展的系统。

图6是包括示例smda提供器600的框图。smda提供器600可以包括与消费者机器通信的接口602。smda提供器600可以包括与接口602通信的smda控制器604。在一些实现中,smda控制器604可以包括固定模块606和解除固定模块608,其每一个可以是编码在设备(例如,smda提供器600)的机器可读介质上并且可由设备的处理器执行的指令集,并且另外或替代地,可以包括硬件设备,所述硬件设备包含用于实现下面描述的功能性的电子电路。固定模块606可以将储存存储器区域固定到消费者机器的存储器地址,储存存储器区域对应于消费者机器所请求的储存设备的储存范围。解除固定模块608可以原子地提交消费者机器经由存储器地址访问的储存存储器区域中的数据。

图7是用于对固定命令进行响应以及用于对解除固定命令进行响应的示例方法700的流程图。尽管下面参照图1的smda控制器104来描述方法700的执行,但是应当理解,方法700的执行可以由诸如图6的smda控制器604之类的其他合适的设备来执行。方法700可以以电子电路形式和/或以存储在机器可读存储介质上的可执行指令的形式来实现。

方法700开始于框702,并且在框704处,响应于来自消费者机器的固定命令,smda控制器104可以将储存存储器区域固定到消费者机器的存储器地址,储存存储器区域对消费者机器可用,以用于经由存储器地址进行数据访问,并且储存存储器区域对应于在固定命令中请求的储存设备的储存范围。在框706处,smda控制器104可以响应于来自消费者机器的解除固定命令,原子地提交在储存存储器区域中的数据。在框708处,当检测到影响储存存储器区域的触发事件时,smda控制器104可以向消费者机器发送上行调用通知。在框710处,方法700可以结束。

图8是图示出根据示例实现的基于处理器的系统800的框图,其包括利用用于经由存储器地址访问smda提供器的储存存储器区域中的数据的指令进行编码的机器可读介质。在一些示例实现中,系统800可以是或可以形成计算设备的一部分,计算设备诸如是服务器、工作站、台式计算机、膝上型计算机、平板计算设备、移动设备等。更具体地,系统800可以是或形成上面关于图1描述的任何消费者机器120-1至120-n的一部分。在一些实现中,系统800是基于处理器的系统,并且可以包括耦合到机器可读介质804的处理器802。处理器802可以包括单核处理器、多核处理器、专用集成电路、现场可编程门阵列和/或适于从机器可读介质804检索和/或执行指令(例如指令806、808、810、812、814)以执行本文所讨论的各种功能的其它硬件设备。另外或替代地,处理器802可以包括用于执行本文所描述的功能性的电子电路,所述功能性包括指令806、808、810、812和/或814的功能性。关于如图8中的方框所表示的可执行指令,应当理解,在替代实现中,包括在一个方框中的可执行指令和/或电子电路的部分或全部可以包括在图中所示出的不同方框中或者包括在未示出的不同方框中。

机器可读介质804可以是适于存储可执行指令的任何介质,诸如随机存取存储器(ram)、电可擦除可编程只读存储器(eeprom)、闪存、硬盘驱动器、光盘等等。在一些示例实现中,机器可读介质804可以是有形的、非暂时介质,其中术语“非暂时”不包括暂时传播信号。可以将机器可读介质804安置在系统800内,如图8中所示,在这种情况下,可以认为可执行指令“安装”在系统800上。替代地,机器可读介质804可以是便携式(例如,外部)储存介质,例如,其允许系统800远程执行指令或从储存介质下载指令。在这种情况下,可执行指令可以是“安装包”的一部分。如在此下文进一步描述的,机器可读介质804可以用可执行指令集806、808、810、812、814进行编码。

指令806当由处理器802执行时可以向smda提供器(诸如上面关于图1描述的smda提供器100-1)发送固定命令,以请求访问储存设备的储存范围。在一些实现中,固定命令可以包括诸如上面关于图2描述的那些之类的输入参数,包括会话id、储存设备的储存范围作为三元组集合(卷id、逻辑块编号和大小)、独占标志、初始化标志、只读标志、存储器类型标志、和/或回呼相关参数。指令808当由处理器802执行时可以从smda提供器接收可由处理器802寻址的存储器地址,存储器地址被映射到对应于固定命令(即,由指令806发送的固定命令)中所请求的储存范围的smda提供器的储存存储器区域。指令810当由处理器802执行时可以经由存储器地址(即,由指令808接收的存储器地址)访问(例如,读取、写入、修改等)储存存储器区域中的数据。指令812当由处理器802执行时可以向smda提供器发送解除固定命令,以请求在储存存储器区域中的数据的原子提交。在一些实现中,解除固定命令可以包括诸如上面关于图3所描述的那些之类的输入参数,包括会话id、储存范围作为四元组集合(卷id、逻辑块编号、大小和存储器地址)、脏标志、一致性点标志、保持固定标志和/或回呼相关参数。指令814当由处理器802执行时可以对来自smda提供器的上行调用通知进行响应。在一些实现中,指令814可以通过向smda提供器发送解除固定命令来释放储存存储器区域从而对上行调用通知进行响应。在一些实现中,指令814可以向smda提供器发送随后的固定命令(即在响应于上行调用通知的解除固定命令之后)以请求访问储存范围。

鉴于前面的描述,可以理解,借助于smda提供器,消费者机器可以访问储存设备中的数据(即,读取、写入、修改等),就像消费者机器正在访问存储器一样。此外,对于数据更新的原子性、数据更新的一致性和消费者机器的隔离的支持可以从消费者机器卸载到smda提供器。因此,消费者机器可以经由smda提供器比用i/o请求更快速且更有效地(例如,以更低的计算成本)更新数据--特别是当储存设备包括高速非易失性或持久存储器设备时。

在前面的描述中,阐述了许多细节以提供对本文所公开的主题的理解。然而,可以在没有这些细节中的一些或全部的情况下实践实现。其他实现可以包括从上述细节而来的修改和变型。旨在以下权利要求涵盖这些修改和变型。

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