NVRAM路径选择转让专利

申请号 : CN201280076488.5

文献号 : CN104704569B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : D.L.沃伊特

申请人 : 慧与发展有限责任合伙企业

摘要 :

从应用服务器的存储器控制器接收包括地址的存储器存取请求。基于来自存储器存取请求的地址选择到NVRAM的多个路径之一。

权利要求 :

1.一种存取单元,包括:

包括从第一应用服务器的存储器控制器接收存储器存取请求的第一和第二队列的缓冲器单元,存储器存取请求包括地址;

包括均接收第一和第二队列的输出的第三和第四队列的选择单元,第三和第四队列具有到非易失性随机存取存储器NVRAM的分离路径;以及基于来自存储器存取请求的地址选择第一和第二队列的输出中的哪个由第三和第四队列中的每一个接收的路径单元。

2.如权利要求1所述的存取单元,其中,

路径单元包括具有虚拟地址栏、物理地址栏和路径栏的表,虚拟地址栏的条目存储多个存储器存取请求的地址,物理地址栏的条目存储NVRAM的物理地址并且路径栏的条目存储用于选择用于多个存储器存取请求中的至少一个的路径的控制数据,并且虚拟地址栏的条目中的至少一个与物理地址栏的一个条目和路径栏的一个条目相关联。

3.如权利要求2所述的存取单元,其中,

选择单元还包括第一和第二选择器,

第一选择器基于与包括在第一队列中的多个存储器存取请求中的一个的地址相关联的路径栏的控制数据向第三和第四队列中的一个转发第一队列的输出,并且第二选择器基于与包括在第二队列中的多个存储器存取请求中的另一个的地址相关联的路径栏的控制数据向第三和第四队列中的一个转发第二队列的输出。

4.如权利要求3所述的存取单元,其中,

缓冲器单元包括与存取单元的存储器控制器对接的第五队列以转发来自存取单元的处理器和块存储设备中的至少一个的存储器存取请求,并且选择单元包括第三选择器,第三选择器基于与包括在第五队列中的存储器存取请求的地址相关联的控制数据向第三和第四队列中的一个转发第五队列的输出。

5.如权利要求1所述的存取单元,其中,

路径单元确定经由第三和第四队列中的一个到NVRAM的存储器存取请求是否失效,路径单元完成以下中的至少一个:在冗余地存储数据的不同位置处再次访问NVRAM和修改通过存取单元的存储器请求的路径以沿第三和第四队列中的另一个行进,其中第一应用服务器不再次请求存储器存取。

6.如权利要求2所述的存取单元,还包括:

施行与存储器存取请求相关联的数据上的操作的数据变换单元,其中第一、第二、第三和第四队列中的至少一个存储与存储器存取请求相关联的数据;

第一和第二选择器完成以下中的至少一个:基于控制数据向数据变换单元输出和从数据变换单元接收数据,并且路径栏的控制数据指示基于与虚拟地址栏的相关联的地址的数据变换的类型。

7.如权利要求6所述的存取单元,其中,

如果数据与写入请求相关联,数据变换单元在数据被传输到NVRAM之前在数据上进行操作,并且如果数据与读取请求相关联,数据变换单元在从NVRAM接收到数据之后在数据上进行操作。

8.如权利要求2所述的存取单元,其中,

路径单元响应于来自第一应用服务器的存储器控制器的映射命令而向表添加新的条目,并且,路径单元响应于来自第一应用服务器的同步命令而使涉及同步命令并且存储在第一到第四队列处的任何数据齐平。

9.如权利要求8所述的存取单元,其中,

路径单元基于第一和第二队列中的哪个接收到同步命令和包括在同步命令中的地址来确定使通过第一到第四队列中的至少一个的数据齐平的路径,路径单元基于路径包括或者排除用于同步的存取单元的处理器的使用,并且如果处理器包括在同步中,存取单元的处理器记录涉及同步的信息。

10.如权利要求1所述的存取单元,其中,

第一和第二队列中的至少一个接收包括来自第二应用服务器的存储器控制器的地址的存储器存取请求,并且存储器存取请求包括应用服务器身份,路径单元使用身份来区分不同域和服务器中的至少一个的虚拟地址。

11.如权利要求1所述的存取单元,其中,

第三和第四队列中的每一个包括接收请求的多个时隙,其中向第三和第四队列中的每一个中的一个时隙分配第一队列的输出,并且向第三和第四队列中的每一个中的另一时隙分配第二队列的输出,并且第三和第四队列均基于至少一个轮询机制和请求的优先级确定从多个时隙中的哪个输出。

12.一种系统,包括:

多个权利要求4的存取单元;

第一应用服务器和第二应用服务器,第二应用服务器包括第二存储器控制器;

NVRAM;

块存储设备;以及

将第一和第二应用服务器冗余地连接到多个存取单元的多个交换机,其中多个存取单元冗余地连接至块存储设备和NVRAM,并且到NVRAM的所有路径都经由多个存取单元中的至少一个。

13.一种方法,包括:

在存取单元处,从应用服务器的存储器控制器接收包括地址的存储器存取请求;

在存取单元处,参考表以确定非易失性随机存取存储器NVRAM的物理地址和与来自存储器存取请求的地址相关联的路径值;

在存取单元处,基于路径值选择到物理地址的多个路径之一;

如果存储器存取请求涉及写入请求,沿所选路径将随存储器存取请求一起包括的数据写入到NVRAM的物理地址;以及如果存储器存取请求涉及读取请求,读取NVRAM的物理地址处的数据并且将所读数据沿所选路径转发到应用服务器。

14.如权利要求13所述的方法,其中,

到NVRAM的所有路径都经由存取单元,并且接收、参考、选择和转发独立于存取单元的主处理器施行。

15.一种方法,所述方法包括:

监视用于来自多个应用服务器的多个存储器控制器中的至少一个的存储器存取请求的多个传入队列;

如果在多个传入队列中的一个处接收到存储器请求,确定非易失性随机存取存储器NVRAM的物理地址和与包括在存储器存取请求中的地址相关联的控制值;

基于相关联的控制值选择在包括存储器存取请求的传入队列与到NVRAM的多个传出队列之间的多个路径之一;以及沿所选路径在应用服务器的至少一个存储器控制器与NVRAM的物理地址之间传输数据。

说明书 :

NVRAM路径选择

背景技术

[0001] 由于固态存储技术中的新近革新,这样的技术正在被集成到存储器系统中。连接到存储器系统的服务器可能设法将数据写入到固态存储技术或者从其读取数据。系统厂商可能在将这样的技术集成到系统中以提供较低等待时间而同时仍旧维持足够的故障域隔离和实现的简易性方面受到挑战。

附图说明

[0002] 以下详细描述参考附图,其中:
[0003] 图1是与NVRAM和第一应用服务器对接的存取单元的示例框图;
[0004] 图2是存取单元的另一示例框图;
[0005] 图3是包括图1的存取单元的系统的示例框图。
[0006] 图4是包括用于选择NVRAM与应用服务器之间的路径的指令的计算设备的示例框图;以及
[0007] 图5是用于选择NVRAM与应用服务器之间的路径的方法的示例流程图。

具体实施方式

[0008] 在以下描述中给出特定细节以提供实施例的全面理解。然而,将理解的是,可以在没有这些特定细节的情况下实践实施例。例如,系统可以以框图示出以免以非必要的细节使实施例模糊。在其他实例中,可以在没有非必要细节的情况下示出公知的过程、结构和技术以便避免使实施例模糊。
[0009] 诸如非易失性随机存取存储器(NVRAM)(比如忆阻器、自旋力矩和相变存储器)之类的固态存储技术中的新近革新可以为处理器提供向外部存储设备提交存储器存取请求以用于诸如写入/存储和读取/加载操作之类的操作的能力。添加固态存储技术可以将新的层级层置于当前存储层级上方。可能需要新的数据流架构以将该新的层无缝地集成到存储层级中而同时保留诸如存储资源共享、高可用性和完全自主的操作之类的属性。
[0010] 一些解决方案包括直接集成到诸如PCI卡或存储器之类的服务器组件中的固态存储技术。然而,这样的解决方案不可展现出确保与当前盘阵列相关联的高可用性水平所必需的故障域隔离。一些解决方案跨服务器节点分布副本或擦除编码数据分组。然而,该解决方案不支持与固态存储技术相关联的快速响应时间。另外,可以跨服务器或服务器刀锋扩展大型高端存储器系统,并且可以在那些系统内应用独立盘冗余阵列(RAID)和其他故障容许算法。这些系统不可使得能够实现即用分层存储电器的简易使用。
[0011] 本申请的示例可以允许以存储器存取速度选择从应用服务器到NVRAM的路径。另外,如果所选路径失效,还可以以存储器存取速度选择替换路径并且不要求应用服务器重试访问NVRAM。例如,可以通过存取单元从应用服务器的存储器控制器接收包括地址的存储器存取请求。到NVRAM的多个路径之一可以由存取单元基于来自存储器存取请求的地址来选择。
[0012] 在一些示例中,由于应用服务器可以冗余地连接到存取单元并且存取单元可以冗余地连接到NVRAM,因此可以实现足够的网络故障容许水平。通过在NVRAM的控制流中(诸如在映射、非映射和同步命令中)包括控制器,控制器可以提供比如RAID、远程复制、时间点拷贝、精简配给和高速缓存/层次管理的特征。
[0013] 本申请的一些示例可以确保应用服务器与NVRAM之间的低等待时间通信,同时仍旧从存储层级连接性隔离服务器连接性以确保足够的故障容许。同样,可以使得存取单元能够实行自主、故障容许的存储层级操作和丰富数据服务。而且,可以确保应用服务器与存取单元之间的故障隔离并且可以以其可以降低改变期间NVRAM暴露于数据恶化或攻击的风险的这样的方式传送配置改变。故障隔离可以是指具有标识已经在系统内发生的故障的时间、位置和/或类型的能力。故障容许可以是指具有在系统的一部分失效时可能地以降低水平继续操作而不是完全失效的能力。
[0014] 现在参考附图,图1是与NVRAM 150和第一应用服务器140对接的存取单元100的示例框图。存取单元100可以是在控制对存储器的访问中涉及的任何类型的设备,诸如NRAM 150或块存储设备。在图1的实施例中,存取单元100包括缓冲器单元110、路径单元120和选择单元130。NVRAM 150可以包括当电力关断时保留其信息的任何类型的随机存取存储器,诸如基于忆阻器、自旋力矩转移和相变存储器。第一应用服务器140可以是指设法访问NVRAM 150的任何类型的设备,诸如计算机的主处理器或连接到计算机网络的计算机。例如,第一应用服务器140可以主控应用并且通过包括NVRAM 150的地址空间的应用(诸如经由如以下解释的存储器映射存储系统的实现)呈现存储器地址表以供使用。
[0015] 存储器存取请求114可以涉及由第一应用服务器140的存储器控制器142传输的读取或写入请求。存储器控制器142可以是管理去往和来自主存储器的数据流的任何类型的设备并且可以包括用于解释来自中央处理单元(CPU)的请求的逻辑和/或电路以便定位存储器中的数据位置和/或地址。
[0016] 例如,存储器控制器142可以对接在诸如虚拟存储器之类的系统存储器(未示出)与第一应用服务器140的CPU(未示出)之间。涉及读取或写入的机器代码可以由第一应用服务器140的CPU执行,其使CPU访问第一应用服务器140的系统存储器以读取或写入用于给定地址的数据。系统存储器可以将各种形式的计算机数据存储(诸如第一应用服务器140的内部存储器和外部存储器,比如NVRAM 150和/或盘存储)虚拟化成单个表。因此,存储器控制器142可以发现系统存储器的地址映射到NVRAM 150,其可以进而引导存储器控制器142向存取单元100提交存储器存取请求114。
[0017] 第一应用服务器140和存取单元100可以包括例如包括用于实现以下描述的功能性的电子电路的硬件设备,诸如控制逻辑和/或存储器。此外或作为替换,第一应用服务器140和存取单元100可以实现为编码在机器可读存储介质上并且由处理器可执行的一系列指令。类似地,存取单元100的缓冲器、路径和选择单元110、120和130可以包括例如包括用于实现以下描述的功能性的电子电路的硬件设备,诸如控制逻辑和/或存储器。此外或作为替换,存取单元100的缓冲器、路径和选择单元110、120和130可以实现为编码在机器可读存储介质上并且由处理器可执行的一系列指令。
[0018] 存取单元100的缓冲器单元110包括从第一应用服务器140的存储器控制器142接收存储器存取请求114的第一和第二队列112-1和112-2。存储器存取请求包括地址116。存取单元100的选择单元130包括第三和第四队列132-1和132-2,其均可以接收第一和第二队列112-1和112-2的输出。第三和第四队列132-1和132-2具有到NVRAM 150的分离路径。路径单元120基于来自存储器存取请求114的地址116选择第一和第二队列112-1和112-2的输出中的哪个由第三和第四队列132-1和132-2中的每一个接收。在此,示出由第一队列112-1接收的请求114。路径单元120然后读取请求114的地址116并且向选择单元130输出使请求114’被路由至第四队列132-2以用于向NVRAM 150传输的控制数据。以下关于图2更加详细地解释路径单元和选择单元120和130。
[0019] 虽然缓冲器和选择单元110和130被示出为均包括两个队列,但是缓冲器和选择单元110和130的实施例可以包括比两个队列更多或更少的队列。如以上解释的,第一应用服务器140冗余连接到存取单元100并且存取单元100冗余连接到NVRAM 150,以提供足够故障容许。另外,路径单元120以存储器存取速度选择第一和第二队列112-1和112-2之一与第三和第四队列132-1和132-2之一之间的路径,因此减少等待时间。
[0020] 图2是存取单元200的另一示例框图。图2的存取单元200可以至少包括图1的存取单元100的功能性和/或硬件。例如,包括在图2的存取单元200中的缓冲器单元210、路径单元220和选择单元230可以分别包括图1的存取单元100中所包括的缓冲器单元110、路径单元120和选择单元130的功能性。另外,图2的存取单元200还包括数据变换单元240、存储器控制器250和处理器260。虽然图2示出存储器控制器250在处理器260外部,但是实施例还可以包括在处理器260内部的存储器控制器250。
[0021] 数据变换单元240可以包括例如包括用于实现以下描述的功能性的电子电路的硬件设备,诸如控制逻辑和/或存储器。此外或作为替换,数据变换单元240可以实现为编码在机器可读存储介质上并且由处理器可执行的一系列指令或微代码。
[0022] 图2的存储器控制器250可以是管理去往和来自一个或多个存储器的数据流的任何类型的设备,所述一个或多个存储器诸如是处理器260的高速缓存(未示出)、存取单元200的比如RAM的内部存储器(未示出)、经由PCI、SAS和/或SCSI协议与存取单元200对接的比如块存储设备的外部存储器(未示出)等等。处理器260可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)或适合用于检索和执行诸如存取单元200的指令之类的指令的其他硬件设备。
[0023] 在图2中,缓冲器单元210被示出为包括第一队列212-1、第二队列212-2和第五队列212-3。路径单元220被示出为包括表222。另外,选择单元230被示出为包括第一选择器232-1、第二选择器232-2、第三选择器232-3、第三队列234-1和第四队列234-2。选择器232-
1至232-3可以是响应于控制信号选择一个或多个输入以沿一个或多个路径转发的任何类型的设备,所述控制信号可以包括控制数据。此外,存取单元200的端口(未示出)可以与第一到第五队列212-1至212-3和234-1至234-2对接以促进在应用服务器140、NVRAM 150、存储设备和/或存取单元200的内部存储器之间接收和传输数据。第一到第五队列212-1至
212-3和234-1至234-2可以包括用于存储指令和/或数据的硬件,诸如缓冲器。在一个实例中,第一到第五队列212-1至212-3和234-1至234-2可以是每次持有8或更多请求的FIFO队列。
[0024] 缓冲器单元210的第一和第二队列212-1和212-2可以从一个或多个应用服务器(诸如第一和第二应用服务器的存储器控制器)(未示出)接收请求。第五队列212-3可以与存取单元200的存储器控制器250对接并且转发来自存取单元200的处理器260和块存储设备(未示出)中的至少一个的存储器存取请求。例如,存储器控制器250可以具有经由与块存储设备的外围控制器接口(PCI)的直接存储器存取(DMA)。路径单元220读取包括在由缓冲器单元210接收的请求214中的地址216,诸如在第一队列212-1处。包括在路径单元220中的表222具有虚拟地址栏、物理地址栏和路径栏。表222可以是例如哈希表、B树、内容可寻址存储器等等。
[0025] 虚拟地址栏的条目要存储多个存储器存取请求的地址,诸如请求214的地址216。当系统包括多个应用服务器时,存储器存取请求216还可以包括应用服务器身份。路径单元
220可以使用应用服务器身份来区分不同域和服务器中的至少一个的虚拟地址。
[0026] 物理地址栏的条目要存储NVRAM 150的物理地址并且路径栏的条目要存储用于选择用于多个存储器存取请求中的至少一个的路径的控制数据。物理地址可以包括对诸如NVRAM 150之类的组件的索引(reference),和由索引指定的到存储器空间中的偏移。虚拟地址栏的条目中的至少一个与物理地址栏的一个条目和路径栏的一个条目相关联。
[0027] 第一选择器232-1可以基于与包括在第一队列212-1中的多个存储器存取请求中的一个的地址相关联的路径栏的控制数据向第三和第四队列234-1和234-2中的一个转发第一队列212-1的输出。例如,路径单元220可以将表222的地址与包括在第一队列212的请求214中的地址216匹配。接着,路径单元220可以向第一选择器232-1传输存储在路径栏中并且与匹配地址相关联的控制数据。路径单元220还可以向第一选择器232-1传输存储在物理地址栏中并且与匹配地址相关联的NVRAM 150的物理地址,以便为请求214补充NVRAM 150内的正确目的地位置。
[0028] 第二选择器232-2可以基于与包括在第二队列212-2中的多个存储器存取请求中的另一个的地址相关联的路径栏的控制数据向第三和第四队列234-1和234-2中的一个转发第二队列212-2的输出。第三选择器232-3基于与包括在第五队列212-3中的存储器存取请求的地址相关联的控制数据向第三和第四队列234-1和234-2中的一个转发第五队列212-3的输出。
[0029] 数据变换单元240施行与存储器存取请求214相关联的数据上的操作。第一、第二、第三、第四和第五队列212-1至212-3和234-1至234-2中的至少一个存储与存储器存取请求214相关联的数据。第一、第二和第三选择器232-1至232-3基于控制数据完成以下中的至少一个:向数据变换单元240输出和从数据变换单元240接收数据。路径栏的控制数据可以指示基于虚拟地址栏的相关联的地址的数据变换的类型。数据变换的类型的示例可以包括压缩、加密和施行数据上的RAID计算的技术。而且,数据变换单元250可以包括从第一至第三选择器232-1至232-3接收数据和向其输出数据的队列(未示出)。
[0030] 数据变换单元240可以在数据被传输到NVRAM 150之前在数据上进行操作,如果数据与写入请求相关联的话。另外,数据变换单元240还可以在从NVRAM 150接收到数据之后在数据上进行操作,如果数据与读取请求相关联的话。路径单元220可以响应于来自第一应用服务器140的存储器控制器250的映射命令而向表222添加新的条目。术语映射可以是指用于将诸如NVRAM 150之类的设备的一个或多个存储器地址合并到诸如存取单元200的表222之类的另一设备的地址表中的技术。第一应用服务器140可以提交映射命令以创建虚拟化的存储器,如以上关于图1解释的那样。
[0031] 在一些示例中,第一应用服务器140可以实施同步操作,诸如用于确保自主性、一致性、隔离或持久性(ACID)。例如,同步数据可以使得能够实现在电力丢失之后的数据或交易恢复或者保证对数据的相关组的修改以其整体对数据的所有后续消费者可见。
[0032] 例如,路径单元220可以响应于来自第一应用服务器140的同步命令而使涉及同步命令并且存储在第一到第五队列212-1至212-3和234-1以及234-2处的任何数据齐平。例如,路径单元220可以基于第一和第二队列212-1和212-2中的哪个接收到同步命令和包括在同步命令中的地址来确定使通过第一到第五队列212-1至212-3和234-1以及234-2中的至少一个的数据齐平的路径。路径单元220可以基于路径包括或者排除用于同步的存取单元200的处理器260的使用。存取单元200的处理器260可以记录涉及同步的信息,诸如日志或元数据,如果处理器260包括在同步中的话。然而,处理器260可以自由地实施其他操作,如果其不涉及在同步中的话。
[0033] 如图2中所示,第三和第四队列234-1和234-2中的每一个包括接收请求的多个时隙236-1至236-6。向第三和第四队列234-1和234-2中的每一个中的一个时隙236分配第一队列212-1的输出,并且向第三和第四队列234-1和234-2中的每一个中的另一时隙236分配第二队列212-2的输出。类似地,向第三和第四队列234-1和234-2中的每一个中的一个时隙236分配第五队列212-3的输出。因此,第三和第四队列234-1和234-2中的每一个可以从第一、第二和第五队列212-1至212-3中的任一个选择以输出到NVRAM(经由时隙236-1至236-
6),假定路径单元220指引选择器232-1至232-3转发对应输出。
[0034] 第三和第四队列234-1和234-2可以均基于例如轮询机制和/或请求214的优先级确定从多个时隙236-1至236-6中的哪个输出。例如,第三队列234-1可以基于时间增量划分其三个时隙236-1至236-3之间的输出,其中对于向内部路径给出的每一个时间片(时隙236-1),向应用服务器路径给出两个时间片(第二和第三时隙236-2和236-3)。
[0035] 路径单元220可以确定经由第三和第四队列234-1和234-2中的一个到NVRAM的存储器存取请求214是否失效。例如,第三和/或第四队列234-1和234-2可以通知路径单元220访问由表222指示的NVRAM的物理地址的尝试是否或许不能够完成。进而,路径单元220可以修改通过存取单元200的存储器请求214的路径以沿第三和第三队列234-1和234-2中的其他(例如非失效路径)行进。
[0036] 替换地或此外,路径单元220可以设法在冗余地存储数据的不同位置处再次访问NVRAM,假定NVRAM冗余地存储数据。以上失效转移操作可以在应用服务器不再次请求存储器存取的情况下实施,因此帮助减少等待时间并且掩盖来自应用服务器的任何存储器问题或错误。术语失效转移可以是指当之前活动的应用、服务器、系统、硬件组件或网络的故障或异常终止时自动切换到冗余或备用计算机服务器、系统、硬件组件或网络。
[0037] 虽然图2示出接收请求216的第一队列212-1,但是实施例可以包括具有多于或少于三个队列的缓冲器单元210,其中任何队列从一个或多个不同源接收请求。类似地,选择单元230还可以包括与一个或多个不同存储器对接的多于或少于两个的队列和多于或少于三个的选择器。
[0038] 图3是包括图1的存取单元100的系统300的示例框图。然而,系统300还可以包括存取单元100的其他实施例,诸如图2的存取单元200。在图3中,系统300包括NVRAM 150、第一存取单元310-1、第二存取单元310-2、第一应用服务器140-1、第二应用服务器140-2、第一交换机330-1、第二交换机330-2和存储设备340。图3的NVRAM 150可以包括与图1的NVRAM 150类似的功能性和/或硬件。
[0039] 图3的第一和第二应用服务器140-1和140-2可以包括与图1的第一应用服务器140类似的功能性和/或硬件。例如,第一和第二应用服务器140-1和140-2均被示出为包括存储器控制器(MC)142-1和142-2。另外,图3的第一和第二存取单元310-1和310-2可以包括与图1的存取单元100和/或图2的存取单元200类似的功能性和/或硬件。例如,第一和第二存取单元310-1和310-2均被示出为包括缓冲器单元110-1和110-2、路径单元120-1和120-2以及选择单元130-1和130-2。同样,第一应用服务器140-1和第一存取单元310-1的任何操作可以相应地由第二应用服务器140-2和第二存取单元310-2执行。
[0040] 在图3中,第一交换机330-1连接到第一应用服务器140-1、第二应用服务器140-2、第一存取单元310-1和第二存取单元310-2。第二交换机330-2连接到第一应用服务器140-1、第二应用服务器140-2、第一存取单元310-1和第二存取单元310-2。因此,交换机330-1和
330-2将第一和第二应用服务器140-1和140-2冗余地连接到存取单元310-1和310-2。第一和第二交换机330-1和330-2可以是链接网络段或网络设备的任何类型的设备。
[0041] 第一和第二存取单元310-1和310-2均冗余地连接到NVRAM 150和存储设备340。存储设备340可以是任何电子、磁性、光学或其他物理存储设备,诸如硬盘驱动器(HDD)、固态驱动器(SSD)等等。另外,在应用服务器140-1和140-2与NVRAM 150之间不存在直接路径。而是,到NVRAM 150的所有路径都经由多个存取单元310-1和310-2中的至少一个。
[0042] 虽然图3示出NVRAM 150在存取单元310-1和310-2的外部,但是实施例还可以包括在存取单元310-1和310-2内部的NVRAM 150。例如,NVRAM 150可以包括第一和第二存储器设备(未示出),其中两个存储器设备包括NVRAM。存储器设备可以定义诸如独立盘冗余阵列(RAID)之类的结构,和/或诸如分离的SSD等等之类的存储机制。一个存储器设备可以包括在第一存取单元310-1中并且另一个存储器设备可以包括在第二存取单元310-2中。存取单元310-1和310-2中的每一个可以具有到其相应内部存储器设备的直接第一链路(未示出)和到另一存取单元310-1和310-2的间接第二链路以便访问另一存储器设备。
[0043] 块的存储设备340也可以具有类似的冗余设备对,诸如盘驱动器对。实施例可以包括多于或少于两个的驱动器和/或存储器设备。虽然图3示出用于转发数据的两个交换机330-1和330-2,但是实施例可以包括能够处理、路由和/或转发数据的任何类型和/或数目的网络设备,诸如路由器、网关、集线器等等。另外,实施例可以包括比图3中所示的更多或更少的应用服务器140、存取单元310、交换机330、存储设备340等等。
[0044] 图4是包括用于选择NVRAM与应用服务器之间的路径的指令的计算设备400的示例框图。在图4的实施例中,计算设备400包括处理器410和机器可读存储介质420。机器可读存储介质420还包括用于选择NVRAM(未示出)与应用服务器(未示出)之间的路径的指令422、424、426和428。
[0045] 计算设备400可以是例如安全微处理器、笔记本计算机、台式计算机、多合一系统、服务器、网络设备、控制器、无线设备或能够执行指令422、424、426和428的任何其他类型的设备。在某些示例中,计算设备400可以包括或者连接到诸如存储器、控制器等之类的附加组件。
[0046] 处理器410可以是至少一个中央处理单元(CPU)、至少一个基于半导体的微处理器、至少一个图形处理单元(GPU)、微控制器、由微代码控制的专用逻辑硬件或适合用于检索和执行存储在机器可读存储介质420中的指令的其他硬件设备或其组合。处理器410可以提取、解码和执行指令422、424、426和428以实现选择NVRAM与应用服务器之间的路径。作为替换或附加于检索和执行指令,处理器410可以包括至少一个集成电路(IC)、其他控制逻辑、其他电子电路或其组合,其包括用于施行指令422、424、426和428的功能性的许多电子组件。
[0047] 机器可读存储介质420可以是包含或存储可执行指令的任何电子、磁性、光学或其他物理存储设备。因此,机器可读存储介质420可以是例如随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动器、压缩盘只读存储器(CD-ROM)等等。这样,机器可读存储介质420可以是非暂时性的。如以下详细描述的,机器可读存储介质420可以编码有一系列可执行指令以用于选择NVRAM与应用服务器之间的路径。
[0048] 而且,指令422、424、426和428在被处理器(例如经由处理器的一个处理元件或多个处理元件)执行时,可以使处理器施行过程,诸如图4的过程。例如,监视指令422可以由处理器410执行以监视用于来自多个应用服务器的多个存储器控制器(未示出)中的至少一个的存储器存取请求的多个传入队列(未示出)。
[0049] 确定指令424可以由处理器410执行以确定NVRAM的物理地址和与包括在存储器存取请求中的地址相关联的控制值,如果在多个传入队列中的一个处接收到存储器请求的话。选择指令426可以由处理器410执行以基于相关联的控制值选择在包括存储器存取请求的传入队列与到NVRAM的多个传出队列(未示出)之间的多个路径之一。传输数据指令428可以由处理器410执行以沿所选路径在应用服务器的至少一个存储器控制器与NVRAM的物理地址之间传输数据。
[0050] 图5是用于选择NVRAM与应用服务器之间的路径的方法500的示例流程图。尽管以下参考存取单元100描述方法500的执行,但是可以利用用于执行方法500的其他合适组件,诸如存取单元200。此外,用于执行方法500的组件可以在多个设备(例如与输入和输出设备通信的处理设备)之中散布。在某些场景中,协同作用的多个设备可以被视为施行方法500的单个设备。方法500可以以存储在诸如存储介质420之类的机器可读存储介质上的可执行指令的形式和/或以电子电路的形式实现。
[0051] 在块510处,存取单元100从应用服务器140的存储器控制器142接收包括地址116的存储器存取请求114。然后,在块520处,存取单元110参考表222以确定非易失性随机存取存储器(NVRAM)150的物理地址和与来自存储器存取请求114的地址116相关联的路径值。接着,在块530处,存取单元100基于路径值选择到物理地址的多个路径之一并且进行到块540以确定存储器存取请求涉及读取还是写入请求。
[0052] 如果存储器存取请求涉及写入请求,在块550处,存取单元100沿所选路径将随存储器存取请求一起包括的数据写入到NVRAM 150的物理地址。另一方面,如果存储器存取涉及读取请求,在块560处,存取单元100读取NVRAM 150的物理地址处的数据并且将所读数据沿所选路径转发到应用服务器140。到NVRAM 150的所有路径都经由存取单元100。另外,在块510至560处的以上接收、参考、选择和转发操作独立于存取单元100的主处理器施行。
[0053] 根据前文,实施例提供了以存储器存取速度选择从应用服务器到NVRAM的路径而同时仍旧将服务器连接性从存储层级连接性隔离开以确保足够的故障容许的方法和/或设备。另外,如果所选路径失效,可以以存储器存取速度选择替换路径而不要求应用服务器重试访问NVRAM。因此,实施例可以确保应用服务器与NVRAM之间的低等待时间通信同时不在故障容许方面有所妥协。