控制存储装置的方法、存储器模块和存储系统与流程

文档序号:11864604阅读:238来源:国知局
控制存储装置的方法、存储器模块和存储系统与流程

技术领域

本公开总体上涉及存储器。更具体地,而非限制的方式,本公开中公开的发明方面的特定实施例涉及输入/输出(I/O)通道通信协议,I/O通道通信协议可利用各种编码方法(例如,加扰、比特/字节混合/转换、基于纠错码(ECC)的编码和其他数据保护/编码方案)进行工作。



背景技术:

计算系统可采用通过不同类型的总线与中央处理单元(CPU)或存储器控制器通信的许多不同类型的半导体存储器。这些存储器可包括易失性存储器以及非易失性存储器。可通过诸如一个或多个DRAM模块的随机存取存储器(RAM)来提供易失性存储器。另一方面,可通过固态驱动器(SSD)、通用串行总线(USB)驱动器上的闪速存储器或安全数字(SD)存储卡或微SD存储卡上的闪速存储器来提供非易失性存储器。不同类型的总线可以是计算系统的母板的一部分,并且提供与各个存储器的物理连接,以允许在整个系统中进行相关信息(诸如,命令、地址、数据和状态信息)的通信。

通常,不同的输入/输出(I/O)总线一般支持不同的数据带宽。例如,将CPU连接到系统存储器(诸如,DRAM模块)的主存储器总线或系统存储器I/O总线可支持比另一条I/O总线(也可被称为“扩展总线”)所支持的数据带宽明显高的数据带宽。支持与DRAM模块的通信的系统总线可以能互换地被称为“DRAM总线”、“DRAM接口”、“DRAM存取器接口”或“DRAM通道”。在计算系统中可存在许多不同类型的其他I/O总线。一些I/O总线包括例如外围组件互连(PCI)总线、PCI Express(PCI-E或PCIe)总线、USB总线、串行高级技术附件(SATA)总线等。通常,非易失性存储装置可连接 到各条I/O总线。例如,USB驱动器可连接到USB总线,SSD驱动器可连接到SATA总线。

应理解,各条通信总线(无论是系统存储器总线还是另一条I/O总线)提供支持特定类型的通信协议的接口,该通信协议是针对该总线和连接到该总线的存储器专门定义并且标准化的通信协议。例如,之前被称为电子元件工业联合会(JEDEC)的JEDEC固态技术协会是独立的半导体工程贸易组织和标准化主体,它已经采用并且创建了用于DRAM(诸如,双倍数据速率2、3或4(DDR2/DDR3/DDR4)同步DRAM(SDRAM)存储器)的开放标准。这些标准可指定存储器引出线和存储器总线接口构造—包括地址和数据总线构造以及相关DRAM接口的通信协议(诸如,存储器重置和初始化程序、各种存储器操作的时序要求、各种存储器命令和状态数据的格式、不同存储器读模式和写模式等)。这种标准化的一个优点在于,第三方遵从相关标准制造的存储器模块可用于任何计算系统中,只要该计算系统中的对应存储器总线被设计成支持各个标准化协议即可。然而,另一方面,标准化存储器接口可妨碍针对一种类型的通信总线设计的存储器模块与另一种类型的通信总线一起安装或者与另一种类型的通信总线连接。例如,被设计成利用USB总线操作的装置(例如,USB存储器)不能连接到SATA总线,反之亦然。



技术实现要素:

在一个实施例中,本公开涉及一种控制存储装置的方法,所述方法包括:(i)检测存储装置附连到主机所支持的输入/输出(I/O)接口;(ii)响应于所述检测,指示主机使用I/O接口将数据模式的序列写入存储装置,其中,序列中的数据模式包括各个命令数据的编码版本,其中,在将序列中的数据模式写入预定次数之后,将序列中的下一个数据模式写入存储装置;(iii)将写入的数据模式的包含命令数据的部分存储在存储装置中的可寻址存储器中;(iv)在存储装置通过I/O接口从主机接收控制位模式,其中,控制位模式包括编码的I/O命令;以及(v)使用可寻址存储器中的一个或多个包含命令数据的部分对通过控制位模式接收的I/O命令解码。

在另一个实施例中,本公开涉及一种控制存储装置的方法,所述方法包括:(i)将存储装置配置为可附连到主机所支持的I/O接口并且可通过主机所支持的I/O接口操作,其中,存储装置被配置为将从主机接收的数据存储在 存储装置内的多个缓冲器中;(ii)在存储装置通过I/O接口从主机接收所述多个缓冲器中的一个缓冲器的存储器映射的缓冲器地址以及数据的存储页的编码版本;(iii)将接收的数据的编码版本存储到具有存储器映射的缓冲器地址的缓冲器中;(iv)从主机接收读取存储在存储器映射的缓冲器地址的内容的指令;以及(v)响应于接收到指令,通过I/O接口将存储的接收的数据的编码版本提供到主机。

在另一个实施例中,本公开涉及一种存储器模块,所述存储器模块包括:(i)第一存储部分;(ii)接口单元;(iii)第二存储部分;和(iv)控制单元,连接到第一存储部分、接口单元和第二存储部分。存储器模块中的第一存储部分包括用于存储内容的多个存储器单元。接口单元被配置为允许存储器模块附连到主机所支持的I/O接口并且可通过主机所支持的I/O接口操作。在将存储器模块附连到I/O接口时,存储器模块中的控制单元被操作为:(i)通过I/O接口从主机接收数据模式的序列,其中,序列中的数据模式包括各个命令数据的编码版本,其中,在从主机接收序列中的数据模式预定次数之后,接收序列中的下一个数据模式;(ii)将接收的数据模式的包含命令数据的部分存储在第二存储部分中;(iii)通过I/O接口从主机接收控制位模式,其中,控制位模式包括编码的I/O命令;以及(iv)使用第二存储部分中的一个或多个包含命令数据的部分对通过控制位模式接收的I/O命令解码。

在另外的实施例中,本公开涉及一种存储系统,所述系统包括:(i)I/O接口,支持以针对其定义的传输格式通过其进行电子内容的通信;(ii)处理器,连接到I/O接口并且支持通过I/O接口进行电子内容的通信;(iii)存储装置,连接到I/O接口;以及(iv)装置驱动器,与存储装置关联。在所述系统中,装置驱动器包含程序指令,当处理器执行所述程序指令时,使得处理器执行以下操作:(i)检测存储装置附连到I/O接口;以及(ii)使用I/O接口将数据模式的序列写入存储装置,其中,序列中的数据模式包括各个命令数据的编码版本,其中,在将序列中的数据模式写入预定次数之后,将序列中的下一个数据模式写入存储装置。此外,在所述系统中,存储装置可通过装置驱动器被操作为执行以下操作:(i)将数据模式的包含命令数据的部分存储在存储装置中的可寻址存储器中;(ii)通过I/O接口从处理器接收控制位模式,其中,控制位模式包括编码的I/O命令;以及(iii)使用可寻址存储器中的一个或多个包含命令数据的部分对通过控制位模式接收的I/O命令解 码。

附图说明

在下面的部分中,将参照附图中示出的示例性实施例来描述本公开的发明方面,在附图中:

图1示出根据本公开的一个实施例的系统的高度简化的部分布局;

图2示出图1中的系统的另一个实施例,包含在图1中描绘的存储装置和主机处理器的示例性架构细节;

图3示出根据本公开的一个实施例的通信协议的示例流程图,显示存储装置可被如何训练成对通过DRAM接口从主机接收的编码的命令解码;

图4描绘根据本公开的一个实施例的通信协议的示例流程图,显示存储装置可被如何训练成通过DRAM接口将与存储器操作关联的状态数据提供给主机;

图5示出根据本公开的一个实施例的在协议训练阶段期间示例性的用于控制的基于寄存器的存储构造以及状态数据;

图6示出根据本公开的一个实施例的图2的存储装置中的CAM的简化架构;

图7是示出根据本公开的一个实施例的用户数据可被如何存储在图1和图2的存储装置中的示例流程图;

图8示出根据本公开的特定实施例的可如何使用合适的地址映射和组相关性“组织”图1和图2的存储装置中的非易失性存储器来存储用户数据;以及

图9描绘根据本公开的一个实施例的图1中的系统的整体布局。

具体实施方式

在下面的详细描述中,阐明众多具体细节,以便提供本公开的彻底理解。然而,本领域的技术人员应该理解,所公开的发明方面可在没有这些具体细节的情况下实践。在其他情形中,没有详细描述熟知的方法、程序、组件和电路,以便不混淆本公开。另外,所描述的发明方面可利用任何基于半导体的存储系统来实现,所述存储系统被配置为连接到DRAM存储器接口,而不管所述存储系统是主要包含非易失性存储器,还是具有包含易失性存储器单 元和非易失性存储器单元的混合型存储构造。

在整个本说明书中引用“一个实施例”或“实施例”意指结合该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。因此,在整个本说明书中的各种地方出现短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似意思的其他短语)不一定都是指同一实施例。此外,特定特征、结构或特性可按任何合适方式组合在一个或多个实施例中。另外,根据这里的讨论背景,单数术语可包括复数形式并且复数术语可包括单数形式。类似地,带有连字符的术语(例如,“pre-determined(预定的)”、“form-factor(形状因数)”、“block-based(基于块的)”等)偶尔可与不带连字符的形式(例如,“predetermined(预定的)”、“form factor(形状因数)”、“block based(基于块的)”等)可互换地使用,并且大写的条目(例如,“SSD”、“Control Register”、“Non-Volatile”等)可与非大写形式(例如,“ssd”、“control register”、“non-volatile”等)可互换地使用。这种偶尔可互换的使用不应当被视为彼此不一致。

在开始的时候要注意,这里可以可互换地使用术语“被连结”、“被可操作地连结”、“被连接”、“连接”、“被电连接”等,一般是指以操作方式电气/电子连接的状况。类似地,当第一实体向第二实体电发送和/或从第二实体电接收(无论是通过有线装置还是无线装置)信息信号(无论是包含地址、数据还是控制/状态信息),而不管这些信号的类型(模拟或数字)如何时,第一实体被视为与第二实体“通信”。还要注意,这里示出和讨论的各种附图(包括组件示图)只是出于说明性目的,而没有按比例绘制。

除非明确定义,否则如这里使用的术语“第一”、“第二”等用作在它们之后的名词的标签,并没有隐含任何类型的排序(例如,空间、时间、逻辑等)。

如之前阐述的,将CPU连接到系统存储器(诸如,DRAM模块)的主存储器总线或系统存储器总线可支持比另一条I/O总线所支持的数据带明显高的数据带宽。因此,较慢的I/O总线所支持的较低带宽经常造成能够以高得多的速度操作的I/O存储装置的通信瓶颈。一种这样的存储装置是SSD,SSD是提供内容的非易失性存储的基于块的存储装置。SSD是能够以较高带宽操作的I/O装置,因此,会期望将SSD连接到相对于其他较慢的I/O总线而言较快的系统存储器总线。结果,可显著提高I/O能力和性能(吞吐量和 延迟二者)。

然而,如之前提到的,标准化的存储器接口可妨碍针对一种类型的I/O通信总线设计的存储器模块与另一种类型的I/O通信总线一起安装或者与另一种类型的I/O通信总线连接。例如,为了克服这些限制,可针对DDR存储器通道连接性来修改基于SATA的SSD驱动器的物理连接性,以遵从附连到DRAM存储器通道的JEDEC标准化双列直插存储器模块(DIMM)形状因数。尽管这种修改可以使SSD驱动器可插入(或可兼容)通常用于传统DRAM模块的标准DIMM存储器插槽,但它单独仍然不足以使SSD驱动器可使用用于DRAM接口的JEDEC定义的通信协议来操作。这种不可操作性的一种原因在于,DRAM通道DIMM形状因数SSD(为了简便的缘故,这里也被称为“基于DIMM的SSD”)是基于块的存储装置,它不能在主机的DRAM存储器映射中显现。即便主机将基于DIMM的SSD“识别”为注册的DIMM(RDIMM)、未注册的DIMM(UDIMM)、负载减小的DIMM(LRDIMM)、或任何其他类型的DIMM,基于DIMM的SSD会仍然需要能够“理解”主机所使用的DRAM通道通信协议。因此,基于DIMM的SSD会需要“理解”以针对DRAM接口定义的传输格式从主机接收的数据(无论是控制数据还是用户数据),并且对应地也以针对DRAM接口定义的传输格式来产生响应(诸如,状态数据),以与主机创建功能齐备的、双向通信的“链路”。在这个背景下,基于DIMM的SSD可被视为“非标准化的使用存储装置”,这是因为它不是为了用于不同类型的I/O通道(这里,DRAM通道)而被标准化的,即便使装置物理地适合于附连到其他这种类型的I/O通道。因此,总体上,如同基于DIMM的SSD的“非标准化的使用存储装置”可被标准化成用于一种类型的I/O通道(如同SATA总线或PCIe总线),但不会被标准化成用于另一种类型的I/O通道(如同DRAM通道)。

当在系统中采用编码以在I/O通道(诸如,DRAM通道)上进行数据通信时,会造成问题。在开始的时候要注意,为了简要和便于讨论的缘故,术语“编码”在这里被用作涵盖性术语,是指各种数据保护/编码方案(诸如,加扰、比特/字节混合/转换(可重新组织或重新排列数据以更快地处理或迅速地存储)、基于纠错码(ECC)的编码、数据交织等)。可由主机、基于主机平台的存储器控制器、或主机中的任何其他处理实体来执行编码。应该理解,单个系统可不一定采用这些编码方案中的全部。可选择地,系统可采用除了 这里提到的方案之外的数据保护方案。无论如何,如同术语“编码”一样,术语“编码数据”(或类似意思的其他术语)在这里也可被用作涵盖性术语,是指使用以上提到的数据保护/编码方案中的一种或更多种进行编码并且通过I/O通道(如DRAM通道)以针对该I/O通道定义/标准化的传输格式进行通信的数据(诸如,控制/命令数据、状态数据和用户数据)。

当在标准化的I/O通道(如DRAM通道)上存在编码时,没有针对该I/O通道标准化但附连到该I/O通道的存储装置(如之前提到的基于DIMM的SSD)需要“获知”底层编码方案,以能够对接收到的命令和用户数据解码,并且以主机(或主机存储器控制器)应用的相同编码格式将状态信息正确报告回主机。然而,难以对编码算法进行反向工程。此外,即使算法是已知的,它们的实现方式也会根据不同的计算机供应商/平台而有所不同。例如,一些平台可使用用于加扰器的在启动时生成的随机种子。除非平台允许禁用这种根据启动而随机化的特征,否则这种随机化的加扰可能难以进行反向工程。无论如何,使用基于DIMM的SSD作为示例,经观察,提供获知由可料想到的各计算机供应商/平台实现的DRAM通道编码方案的基于DIMM的SSD可能是不切实际的。

因此,期望设计出用于在标准化的I/O通道(如DDR DRAM通道)上实现非标准化的使用存储装置(如DRAM存储器通道DIMM形状因数SSD),而不需要知道用于该标准化的I/O通道的主机平台存储器控制器所应用的编码方法或算法或者对其进行反向工程。使用基于DIMM的SSD作为示例,应该注意,因为基于DIMM的SSD不同于标准DRAM,所以进一步期望主机能够以主机能识别方式将控制信息发送到基于DIMM的SSD并且从SSD接收状态信息,而不管在DDR通道上使用的编码或数据保护方案如何。

在特定实施例中,本公开提供了一种在不需要对主机所应用的编码方法或算法进行反向工程的情况下能够在主机系统和DDR形状因数SSD之间进行通信的协议。因此,这里描述的协议可对各种加扰、ECC和其他数据保护方案有效。因此,该协议可一般应用于任何编码的I/O接口,包括(例如)基于DIMM的存储装置附连到DDR通道上并且需要与主机交换信息的任何应用。

以下,提供根据本公开的特定实施例的通信协议的简要概述。随后,在对图3至图8的讨论中,给出更多细节。在进一步继续之前,这里应该注意, 为了简便和便于讨论的缘故,在这里的全部讨论中,仅仅使用基于DIMM的SSD作为示例来示出本公开的教导的发明方面,而不失一般性。换句话讲,本公开的教导应用于以下应用:主机和I/O存储装置之间的编码通信将通过连结主机和存储装置的标准化的I/O接口来执行,但存储装置没有针对该特定I/O接口被标准化。因此,本公开的教导允许非标准化的使用存储装置附连到其中存在编码的标准化的I/O通信通道并且能通过该通道来操作。例如,当基于PCIe的SSD驱动器连接于PCIe接口时,它可被视为“标准化的存储装置”。然而,当这种SSD驱动器连接到另一个I/O接口(如JEDEC定义的DRAM接口)时,它可以是“非标准化的使用存储装置”。在该情况下,除了改造SSD驱动器的物理连接性以使该驱动器可使用标准DIMM插槽附连到DRAM通道之外,还会期望使基于DIMM的SSD能够与其主机通信,而不需要SSD得知主机所应用的编码方法或加扰算法或者对其进行反向工程。

本公开提供了有助于通过标准化的I/O通道在非标准化的使用I/O存储装置及其主机之间进行这种编码通信的示例性机制。因此,在这里的讨论中,使用DRAM接口(或DRAM通道)(如图1中的DRAM接口16)作为标准化的I/O接口(或I/O通道)的示例,通过这种DRAM接口通信的编码的DRAM命令是编码的I/O命令的示例,非标准化的使用存储装置(诸如,图1中的存储装置18)可能需要按照本公开的教导进行“解释”,以便能够与主机(如图1中的主机14)进行通信。为了简便的缘故,以下不讨论非标准化的使用存储装置连同它们各自的(标准化)I/O接口的所有可能实现方式。然而,以下使用基于DIMM的SSD的示例提供的细节保持可应用于各种这样的布置。因此,在这里的讨论中,频繁使用替代对应的笼统术语(如“I/O接口”、“I/O通道”和“I/O命令”)的更特定的术语(如“DRAM接口”、“DRAM通道”和“DRAM命令”)不应该被理解为将本公开的教导的可应用性仅限于与标准化DRAM通道连接的基于DIMM的SSD。相反,参照本公开的图1至图9中的示例性实施例讨论的通信协议和数据存储构造可利用合适的修改形式(如有需要)应用于其他类型的I/O存储装置以及其他类型的标准化的I/O接口。

与基于DIMM的SSD进行的数据交换可归为两种类别:(i)控制/状态数据和(ii)用户数据。如果存在基于主机的编码,则控制数据会需要被“解码”并且被基于DRAM存储器通道的SSD理解。另一方面,会需要由SSD 以合适的编码格式来创建状态数据,使主机能够对其解码。在特定实施例中,为了能够传输控制/状态数据,主机可执行如下操作:(i)将命令描述符或值写入基于DIMM的SSD中的一个或多个寄存器;(ii)从一个或多个寄存器读回状态指示符。在特定实施例中,用户数据可被直接存储(包括任何主机供应的编码,诸如,加扰和/或ECC)在SSD中的闪速存储器中。因为用户数据在没有对主机的编码进行任何修改的情况下按照接收的状态存储在SSD中,所以随后每当主机执行存储器读操作时,可未更改地读回用户数据。这种未更改的数据进而容易被主机“识别”并且按照主机的编码算法进行解码。

更一般地,在特定实施例中,可通过以下步骤将控制/状态数据写入基于DIMM的SSD驱动器:发送已知值的协议训练顺序,并且将关联的命令/状态数据以从主机接收的格式存储在基于DIMM的SSD的CAM/寄存器中。为了解释训练之后的将来控制数据,基于DIMM的SSD可利用接收的数据对之前训练值的CAM查询来确定从主机接收的当前编码的命令(作为控制数据的一部分)的含义。SSD还可使用寄存器索引查询来检索存储在其一个寄存器中的合适的状态数据,然后向主机报告状态数据。在一个实施例中,在训练阶段期间,可从主机发送多个控制数据顺序,以创建基于DIMM的SSD中的完整命令描述符。在另一个实施例中,在训练阶段期间,也可发送多个状态数据顺序。

SSD中的基于块的数据存储方法与传统DDR通道DRAM中的基于存储体选择的存储截然不同。因此,可使用略有不同的方法将用户数据写入基于DIMM的SSD/从基于DIMM的SSD读取用户数据。因为主机存储器控制器的数据加扰算法中的地址分量,所以在一个实施例中,会需要通过DRAM存储器通道SSD中的相同物理寻址区域来进行给定的逻辑块地址(LBA)的写和读。这可通过将LBA与给定的物理寻址缓冲器关联并且仅通过给定缓冲器来写和读该LBA来实现。另一方面,当主机存储器控制器采用没有地址依赖性的加扰方案时,可将用户数据写入基于DIMM的SSD中的任何缓冲地址并且从任何缓冲地址读取用户数据。

图1示出根据本公开的一个实施例的系统10的高度简化的部分布局。如图所示,系统10可包括系统存储器单元12,系统存储器单元12通过I/O接口(诸如,DRAM存储器接口16)与处理器或主机14连接并且通信。系统10可以是计算机系统(台式或便携式)、平板计算机、移动装置、视频游戏 单元或控制台、或具有I/O接口(如DRAM接口16)的任何其他类型的计算或数据处理装置。在各种实施例中,系统10可以是机架式服务器系统、独立式系统、或任何其他合适形式的形状因数。在一些实施例中,系统10可被构造为客户端系统,而非服务器系统。

在这里的讨论中,使用术语“系统存储器”来表示通过DRAM接口16与主机14通信的存储器模块。因此,可将系统存储器模块与通过I/O总线(诸如,USB总线、SATA总线、PCIe总线等)与处理器14连接的另一I/O存储器装置/模块(诸如,USB驱动器、硬盘驱动器、SATA驱动器等)区分开。然而,应该注意,术语“系统存储器”不一定意味着系统存储器在物理上比另一非系统I/O存储器更靠近主机14。无论如何,为了便于讨论和绘图,在图1中或任何其他附图中没有示出将系统存储器和另外的I/O存储器连接到处理器14的各种总线桥或总线控制器。然而,应该理解,在系统存储器单元12和处理器14之间可存在额外的控制单元(如总线桥或总线仲裁器)。如图所示,在一个实施例中,系统存储器单元12可包括存储装置18和一个或多个DRAM存储器模块20。在DRAM存储器模块20的情况下,诸如DRAM存储器的类型、DRAM存储器模块的数量、每个DRAM存储器的存储器芯片的数量、每个芯片的存储体的数量和芯片中的存储体的内部构造、或每个芯片的存储容量的细节是不重要的,因此,这里没有提供这些细节。在特定实施例中,本公开的发明方面可在存储装置18中或参照存储装置18来实现。因此,以下参照图2更详细地讨论存储装置18。

这里应该注意,如这里使用的术语“存储装置”是指具有引脚(pin)构造或物理连接性的任何半导体存储器装置,所述引脚构造或物理连接性允许装置能被插入通常用于传统DRAM模块(诸如,DDR DRAM)的基于DARM总线的标准DIMM存储器插槽。因此,按照本公开的特定实施例的存储装置18可包括例如之前提到的DRAM存储器通道DIMM形状因数SSD(基于DIMM的SSD或DDR形状因数SSD)、具有DIMM形状因数的任何基于块的存储装置、被配置为为通过DRAM存储器接口16进行操作的存储装置等。在某些实施例中,存储装置18可仅提供非易失性存储,因此,可主要包括诸如闪速存储器或基于闪存的存储单元、磁性RAM(MRAM)、自旋转移矩MRAM(STT-MRAM)、相变随机存取存储器(PRAM或PCRAM)、电阻型随机存取存储器(RRAM或ReRAM)、导电桥接RAM(CBRAM)等的非易 失性存储器单元。可选择地,在某些其他实施例中,存储装置18可提供混合存储(非易失性以及易失性),因此,可包括易失性存储器单元和非易失性存储器单元二者。这种混合存储装置的示例是包含DRAM以及闪速存储器单元的非易失性DIMM(NVDIMM)。在其他实施例中,存储装置18可以是传统的DDR2/DDR3/DDR4DRAM模块或基于DRAM的三维堆叠(3DS)存储器模块(诸如,高带宽存储器(HBM)模块或混合存储器立方(HMC)存储器模块)。在特定实施例中因为可利用可附连到主机14并且可通过主机14支持的DRAM通道16操作的任何存储器模块来实现根据本公开的教导的协议,所以构成“存储装置”18的存储器模块的类型可以是不重要的。

这里应该注意,在一个实施例中,只有存储装置18可包括系统存储器单元12。在该实施例中,可没有任何额外的DRAM模块20。在另一个实施例中,存储装置18可包括在处理器14的操作控制下的不止一个存储器模块,这些存储器模块可以是相同类型或者可以是不同类型。此外,应该理解,作为图1和图2中或图9中的系统10的一部分示出的单元可本身包含其他复杂组件。然而,因为这些组件与本公开缺乏相关性,所以在这些附图中没有示出这些组件。

存储器单元12和外部主机14之间的系统存储器总线或DRAM总线16可为存储器单元12和主机14之间的数据移动提供宽的高速本地I/O总线。在特定实施例中,DRAM总线或DRAM接口16可提供信令通道,信令通道遵从主机14所支持的相关JEDEC定义的DRAM通道通信协议在处理器14和系统存储器12之间传输控制、状态和用户数据。在特定实施例中,如以下讨论的,在训练阶段期间以及此后的阶段,可使用DRAM接口16的数据总线部分在存储装置18和主机14之间交换命令、状态和用户数据。

图2示出图1中的系统10的另一个实施例,包含在图1中描绘的存储装置18和主机处理器14的示例性架构细节。应该理解,在某些实施例中,存储装置18可包括比图2中示出的组件更多或更少的组件。然而,为了便于引用,参照图2示出和讨论更多相关组件中的一些。如图所示,主机14可包括与存储器控制器24通信的CPU 22。在一个实施例中,CPU可以是通用微处理器。在这里的讨论中,为了便于讨论,可将术语“处理器”和“CPU”互换地使用。然而,应该理解,作为CPU 22的替代,或者除了CPU 22之外,处理器/主机14可包含任何其他类型的处理器(诸如,微控制器、数字信号 处理器(DSP)、图形处理单元(GPU)、专用集成电路(ASIC)处理器、现场可编程门阵列(FPGA)等)。此外,在一个实施例中,处理器/主机14可包括不止一个CPU。处理器14可被配置为根据特定指令集架构(ISA)(诸如,x86指令集架构(32位或64位版本)、ISA、或依赖RISC(精简指令集计算机)ISA的MISPS(无互锁流水线级的微处理器)指令集架构)执行指令并且处理数据。在一个实施例中,主机14可以是具有除了处理器或CPU功能之外的功能的片上系统(SoC)。在该实施例中,例如,存储器控制器功能可被集成在SoC中。可选择地,在特定实施例中,存储器控制器可与CPU 22集成。

通常,存储器控制器24可管理主机/处理器14和系统存储器单元12之间的数据交换。因此,在特定实施例中,存储装置18和主机14之间的数据和控制信息的所有传输可经过存储器控制器24并且由存储器控制器24进行控制。在一个实施例中,存储器控制器24可被配置为对将通过DRAM接口16发送到存储装置18的数据编码。这种编码可包括例如加扰、ECC、比特/字节混合/转换、和/或在系统10中实现的任何其他数据保护方案。类似地,存储器控制器24还可对从存储装置18接收的数据解码,之后将解码后的数据发送到CPU 22,以进行进一步处理。在可选实施例中,可由CPU 22本身执行这种编码和解码,在这种情况下,存储器控制器24可仅仅管理存储器选择、将CPU编码的数据发送到存储装置18、从存储装置18接收编码数据、存储器映射、以及便于CPU与系统存储器单元12中的各种存储器模块通信的其他控制操作。

如图2中所示,主机14可存储与操作系统(OS)关联的程序代码或者对程序代码进行操作,这里,使用虚线框表示操作系统,并且使用参考标号“26”标识操作系统。操作系统26可以是基于的操作系统、基于Mac或OS的操作系统、基于开放源的操作系统(如同)等。操作系统软件26的存储、执行、类型和管理的细节与本公开无关,因此,在这里没有提供这些细节。

在一个实施例中,可通过与存储装置18关联的装置驱动器应用或软件28来促进存储装置18和主机14之间的交互。驱动器软件28可由操作系统26管理并且由CPU 22执行。在一个实施例中,在通过CPU 22执行装置驱动器软件28时,主机14可被配置为执行稍后参照图3、图4和图7讨论的各 种方法步骤。因此,可通过由主机14执行装置驱动器28来实现根据本公开的教导的通信协议。在一个实施例中,装置驱动器28可作为操作系统软件26的一部分来提供。在另一个实施例中,可从外部源(诸如,从存储装置18的制造方/开发方的网站)下载驱动器软件28。在另一个实施例中,装置驱动器28可以是系统基本输入输出系统(BIOS)的一部分。在其他实施例中,例如,当诸如通电时或者使用BIOS启动系统10时存储装置18初始地安装在系统10中时,可由存储装置18本身向主机14提供装置驱动器28。在该情况下,装置驱动器可被存储/供应到存储装置18上。如图2中用符号所示,当存储装置18被初始安装时,可通过DRAM接口16向主机14提供应用编程接口(API)。主机14可使用API来初始化装置训练阶段(稍后讨论),并且执行驱动器软件28来管理存储装置18上的存储器操作。在一个实施例中,可通过稍后讨论的对存储装置18中的一个或多个预定存储位置进行写和读来执行这种训练和其他操作。例如,在一个实施例中,API可将存储装置18中的控制寄存器和状态寄存器作为两个这样的预定存储位置进行暴露。无论如何,如图2中所示,存储装置18还可包含使用虚线框30指示的装置驱动器软件的至少某个部分,以便于存储装置通过基于主机的装置驱动器28与主机14进行通信和交互。

存储装置18可包括主机接口单元32,主机接口单元32提供与高速、大带宽DRAM通道16的电接口,以有助于在存储装置18和主机14之间进行数据传输/移动。在特定实施例中,可在装置驱动器28和/或装置驱动器30的操作控制下,使用主机接口单元32以硬件进行存储装置18和主机14之间的基本寻址和“握手”。如之前提到的,即使存储装置18可具有DIMM形状因数,主机接口单元32也可与传统DRAM模块中的接口单元不同地操作,这是因为,存储装置可以是与具有多个存储体的典型DRAM模块不同的基于块的非易失性存储器装置。然而,如以下参照图8稍后讨论的,在特定实施例中,即使存储装置18主要是基于块的存储装置,也可为存储装置18设计基于存储体的构造。其他类型的I/O存储装置也可以是类似的构造。

当存储装置18是非易失性存储器时,来自主机14的数据可被存储在非易失性存储部分34中,在一个实施例中,非易失性存储部分34可包括多个闪速存储器单元。如之前阐述的,在一个实施例中,存储装置18可以可选地支持提供易失性和非易失性存储的混合存储模型。在该情况下,存储装置18 还可包括如虚线框36指示的DRAM存储器单元。然而,尽管存在DRAM存储器单元36,存储装置18仍然可以不是传统DRAM模块(如图1的DRAM模块20)。存储装置18中的额外的半导体存储元件可包括可寻址存储器(诸如,CAM 38)和寄存器缓冲器单元(RBU)40。在一个实施例中,CAM可以是静态RAM(SRAM)。稍后,参照图6的讨论来提供CAM 38的额外操作细节。在特定实施例中,可由提供内容存储和检索功能的其他类型的可寻址存储器来取代CAM 38。RBU 40可包括一个或多个控制寄存器42、一个或多个状态寄存器44和其他各式各样的寄存器和/或缓冲器46。以下的讨论主要集中在控制寄存器42和状态寄存器44,因此,这里未提供对寄存器/缓冲器46的额外讨论。然而,应该理解,在存储装置18的操作期间,寄存器和缓冲器46可在存储装置18的操作期间提供各种参数或功能的额外运行时间存储作为“便签”存储器。在一个实施例中,框46中的存储缓冲器可不同于稍后参照图8讨论的非易失性存储部分34的缓冲构造。

如图2的实施例中所示,存储装置18还可包括用于存储装置18中的各种组件的操作控制的装置控制器48。装置控制器48可包括:缓冲器管理器50,用于管理对RBU 40中的各种缓冲器和寄存器的读和写;以及非易失性存储器(NVM)控制器52,用于管理对非易失性存储部分34的读和写。在一个实施例中,NVM控制器52可提供包含用于管理存储部分34中的一个或多个闪速存储器单元的内部地址总线、数据总线和控制总线的闪速存储器接口(未示出)。在一个实施例中,装置控制器48中的处理单元54可执行固件级软件来控制缓冲器管理器50和NVM控制器52的操作,并且还管理装置控制器48和存储装置18中的其他电路组件(诸如,CAM38和主机接口单元32)的整体操作。在一个实施例中,可以以硬件、固件和/或软件的组合来实现装置控制器48。因此,存储装置18的功能的某些方面可在运行时编程。尽管图2中未示出,但是装置控制器48还可包括用于存储存储装置18的固件的电可擦除可编程只读存储器(EEROM)。在一个实施例中,EEPROM还可存储装置驱动器软件30的至少某部分。在另一个实施例中,装置控制器48可包括在程序执行期间用作用于处理单元54的便签存储器/缓冲存储器并且用于存储便签值的内部RAM(未示出)。如果在存储装置18中还存在DRAM存储器组件(如DRAM存储器单元36),则装置控制器48还可包括包含用于管理一个或多个DRAM存储器单元的内部寻址、数据总线和控制接 口的DRAM控制器(未示出)。

图3示出根据本公开的一个实施例的通信协议的示例流程图58,显示存储装置(诸如,图1和图2中的存储装置18)可被如何训练成对通过标准化I/O接口(如图1和图2中的DRAM接口16)从主机(诸如,图1和图2中的主机14)接收的编码的命令解码。一些示例性的JEDEC定义的DRAM通道命令包括存储器读命令、存储器写命令、非操作命令、突发终止命令、行激活命令等。图3中示出的方法提供了这样一种机制:存储装置18可在不对主机14采用的编码算法执行任何反向工程或者不对其自身应用任何主机特定的编码的情况下“理解”通过DRAM通道16从主机14接收的编码的命令。图3中的流程图58和(稍后讨论的)图4中的流程图72提供了根据本公开的特定实施例的通信协议的概述。稍后,参照对图5和图6的讨论来提供协议的更多细节。在一个实施例中,可通过存储装置18和主机14的组合来执行图3的流程图58和图4中的流程图72中示出的各种步骤,存储装置18和主机14二者可在由主机14执行的装置驱动器28的操作控制之下。可选择地,在另一个实施例中,因为装置驱动器28与存储装置18关联并且存储装置的操作由装置驱动器28管理,所以图3和图4中的所有步骤可被视为由存储装置18执行。无论如何,在特定实施例中,可不必识别执行根据本公开的教导的通信协议的特定方法步骤或方面的(系统10中的)准确实体。因此,在下面的讨论中可偶尔省去这种识别。

应该注意,在对图3至图9的讨论中只使用参考标号“28”来表示与存储装置18关联并且被配置为当CPU 22执行驱动器软件时可操作地控制存储装置18(以及主机CPU 22和/或存储器控制器24的某些控制)的装置驱动器。尽管在一些实施例中,可存在驻留于存储装置18上的装置驱动器的交换部分(如图2中示出的装置驱动器模块30),并且尽管该装置驱动器30可与主机驻留的驱动器模块28通信/交换以一齐实现根据本公开的教导的通信协议,但是主要为了便于讨论,这里只使用参考标号“28”来表示驱动器应用28、30的这种组合。

参照图3、图4和图7中的方法步骤并且还在对其他附图的讨论期间使用的术语“框”不应该与如“基于块的存储”、“基于块的存储装置”等短语中使用的术语“块”相混淆。短语“基于块的存储”(和类似意思的其他短语)中的术语“块”是本领域的术语,不能与这里的各种附图的讨论背景中的其 他不相关出现的术语“框”互换地使用。如“基于块的存储装置”中的术语“块”保持不同,如可从这里讨论的背景中明显。

现在参照图3,初始地,在框60中,装置驱动器28或主机14(在装置驱动器28的操作控制下)可检测到存储装置18附连到由主机14支持的标准化I/O接口(诸如,DRAM接口16)。这种检测可例如在存储装置18安装在DRAM通道DIMM插槽中的情况下在系统10通电时或者系统10启动时出现。如框62所示,在一个实施例中,存储装置18可以是基于DIMM的SSD。协议训练可例如响应于框60中的检测而开始。如框64所示,作为协议训练的部分,装置驱动器28可指示主机14使用I/O接口(诸如,DRAM接口16)将数据模式的序列写入存储装置18。因此,在特定实施例中,主机14(或者,更具体地讲,存储器控制器24)可以以用于DRAM接口16的JEDEC定义的传输格式将数据模式发送到存储装置18。当主机14采用编码时,序列中的数据模式可包括各个命令数据的编码版本。在本公开的通信协议中,序列中的数据模式(在框64中)可(例如,被主机存储器控制器24)重复写入预定次数(例如,四次),之后将序列中的下一个数据模式写入存储装置18。如框66所示,存储装置18中的装置控制器48可(例如,被装置驱动器28)配置为将写入的序列中的数据模式的包含命令数据的部分存储在存储装置18中的可寻址存储器(诸如,CAM 38)中。因此,存储在CAM 38中的包含命令数据的部分可包含对应I/O命令(诸如,由主机14的存储器控制器24发出的DRAM命令)的编码版本。这种编码版本按照接收的方式(也就是说,在没有进行任何反向工程或者没有对主机特定的编码进行任何修改)被存储在CAM 38中。如稍后讨论的,装置控制器48中的固件可将对应的存储器操作与存储在CAM 38中的每个编码的命令关联。在特定实施例中,可针对从主机接收的数据模式的序列中的每个数据模式执行框64和66中的训练。在这种训练之后,存储装置18中的装置控制器48可通过主机接口单元32从例如主机14中的存储器控制器24接收控制位模式。这种控制位模式可在运行时通过I/O接口(诸如,DRAM接口16)接收(框68)。接收到的控制位模式可包括编码的I/O命令(诸如,DRAM命令),装置控制器48会需要对该命令解码以便执行。这种“解码”可如框70所示执行,也就是说,装置控制器48可使用可寻址存储器(诸如,CAM 38)中之前存储的包含命令数据的部分,在框68中对通过控制位模式接收的I/O命令(诸如,DRAM命令)解 码。因此,基于CAM查询的“解码”允许装置控制器48识别接收到的I/O命令(诸如,DRAM命令)并且按照该命令行动。

图4绘出根据本公开的一个实施例的通信协议的示例流程图72,显示存储装置(诸如,图1和图2中的存储装置18)可被如何训练成通过I/O接口(如图1和图2中的DRAM接口16)将与存储器操作关联的状态数据提供给主机(诸如,图1和图2中的主机14)。图4中的方法涉及将存储装置18训练成针对响应于在图3的框68中接收的编码的I/O命令(诸如,DRAM命令)执行的存储器操作向主机14提供相关状态数据,从这个意义上说,图4中的流程图72可被视为与图3中的流程图58互补。当基于主机的CPU 22或存储器控制器24执行通过DRAM接口16发送的存储器命令的编码时,CPU22或存储器控制器24必须“理解”从存储装置18接收的对应的状态数据并且进一步处理所述状态数据。因此,期望的是,存储装置18能够以主机14识别的编码格式将状态数据供应到主机14。这可使用图4中示出的协议训练在特定实施例中实现。

如之前参照图3中的框60所述,装置驱动器28或主机14(在装置驱动器28的操作控制下)可检测存储装置18附连到主机14所支持的标准化I/O接口(诸如,DRAM接口16)。在进行这种检测时,装置驱动器28可开始协议训练。如框74所示,作为协议训练的部分,装置驱动器28可指示主机14使用I/O接口(诸如,DRAM接口16)将数据模式的序列写入存储装置18。因此,在特定实施例中,主机14(或者,更具体地讲,存储器控制器24)可以以用于DRAM接口16的JEDEC定义的传输格式将数据模式发送到存储装置18。当主机14采用编码时,序列中的数据模式可包括与命令数据关联的各个状态数据的编码版本。在本公开的通信协议中,序列中的数据模式(框74中)可(例如,被主机存储器控制器24)重复写入预定次数(例如,四次),之后将序列中的下一个数据模式写入存储装置18。如框75所示,在一个实施例中,存储装置18可以是基于DIMM的SSD。如框77所示,存储装置18中的装置控制器48可被(例如,装置驱动器28)配置为将序列中的数据模式的包含状态数据的部分存储在存储装置18中的寄存器中。这种寄存器可以是稍后讨论的状态寄存器44或其他寄存器46中的任一个。因此,在特定实施例中,每个状态数据以其主机编码版本(也就是说,没有任何反向工程或者没有对主机特定的编码进行任何修改)进行存储。装置控制器48中的固件 可将对应的DRAM命令与在框77中存储在寄存器中的每个编码的状态数据关联。在特定实施例中,可针对从主机接收的数据模式的序列中的每个数据模式执行框74和77中的训练。在框74和77中进行这种训练之后,存储装置18中的装置控制器48可通过主机接口单元32从例如主机14中的存储器控制器24接收编码的I/O命令(诸如,DRAM命令)(框79)。这种命令可在运行时通过DRAM接口16接收。如图3的实施例中的方法的上下文中所解释,可由装置控制器48使用可寻址存储器(如CAM 38)对接收到的编码的命令解码。因此,装置控制器48可执行与接收到的DRAM命令的解码版本关联的存储器操作(诸如,存储器读操作、存储器写操作等)(框79)。在一个实施例中,装置控制器48可使用缓冲器管理器50访问在框77中存储了包含状态数据的部分的寄存器。在图4中的框81中示出这个方面。如框83所示,基于存储器操作的结果(例如,“成功”、“失败”、“已执行”、“未执行”、“待定”等),装置控制器48可从寄存器中检索包含对应的状态数据的部分。在一个实施例中,缓冲器管理器50可被控制器48配置为使用例如寄存器索引查询来检索合适的包含状态数据的部分。此后,在框85中,装置控制器48可使用主机接口单元32将检索到的包含状态数据的部分提供给主机14(例如,主机中的存储器控制器24),作为对框79中接收的编码的I/O命令(这里,DRAM命令)的响应。因为没有改变检索到的状态数据的主机供应的编码版本,所以存储器控制器24可相应地“识别”状态数据的编码格式并且解码/处理状态数据。

图3和图4简要地示出存储装置18可被如何训练为根据本公开的教导的通信协议的部分,以从主机14接收控制和状态信息的编码版本,从而对将来的存储器命令解码并且以主机可识别的编码格式生成相关状态信息。这种训练允许主机14能够通过标准化I/O接口(诸如,标准化DRAM接口16)将控制信息发送到存储装置18并且从存储装置18接收状态信息。协议训练允许存储装置18对从主机14接收的控制数据解码,以执行主机14发送的编码的存储器命令,并且还创建对应的状态数据以将存储器命令的执行状态报告给主机14。如以上参照图3和图4简要概述,可使用图3的流程图58中示出的基于CAM查询方法来对编码的存储器命令解码,而可使用图4的流程图72中示出的寄存器检索方法以主机可识别的编码格式生成状态数据。因此,基于存储装置18的训练,可有助于使用DRAM通道特定的控制和状态 数据格式通过标准化的DRAM接口16进行主机14和存储装置18之间的通信。

在图5和图6的背景下讨论协议训练之前,现在给出对某些额外实现细节的简要概述。如之前提到的,在特定实施例中,存储装置18可以是作为基于块的装置的DRAM存储器通道DIMM形状因数SSD。因此,尽管被插入DRAM接口16上的DIMM插槽(未示出)中,存储装置18也可不在主机14的DRAM存储器映射中显现。然而,例如,对于装置驱动器28,可以对存储装置的某个部分(诸如,RBU 40中的寄存器和缓冲器)进行物理寻址。因此,装置驱动器28可将访问存储装置18的请求翻译成对RBU 40中的控制/状态/数据寄存器(和/或缓冲器)的写和读。在特定实施例中,装置驱动器28可从操作系统26或系统BIOS接收这些请求。然而,DRAM存储器通道相关芯片选择、体选择和行/列寻址的主机存储器控制器24的实现特定的映射会使对RBU 40中的寄存器/缓冲器的物理寻址变复杂。然而,装置控制器48中的固件可被设计成(例如,通过在系统启动时进行的存储器测试期间与系统BIOS的交互)发现相关存储器通道(上面安装存储装置18)、芯片选择、体选择和行/列寻址方案的存储器控制器24的映射。装置控制器48可随后重新映射发现的地址,使得存储装置18的内部存储器(诸如,RBU 40中的寄存器/缓冲器、非易失性存储器34和易失性存储器36(如果存在的话))被组织成装置驱动器28看到的连续的地址区域。因此,典型的DRAM通道特定的信号(同芯片选择、体选择、行/列地址选通等)可被“另称(aliase)”为对存储装置18中的合适的存储区(非易失性和易失性(如果存在的话))进行寻址(或者映射到合适的存储区)。因此,在以下的讨论中,假设在开始协议训练阶段之前,已经进行发现存储器控制器对用于存储装置18的发现的地址空间的地址映射和重新映射的步骤。

这里,经观察,对于不期望或不可能进行适应存储装置18的BIOS改变的系统,发现引导装载程序应用可安装在主机14上,以正确配置操作系统26和装置驱动器28,以进行与存储装置18的操作。在一个实施例中,可在BIOS指令之后但在传统引导装载程序应用之前,执行发现引导装载程序指令。发现引导装载程序可执行系统发现过程,以使存储器控制器24能够将存储装置18正确“识别”为有效存储器装置。这种发现的作用可以是确定存储装置18被纳入存储器控制器24的存储器映射中的何处,并且确定装置驱动 器28是否可使用该映射来操作存储装置18。发现引导装载程序可修改(供OS 26用来理解存储器映射的)BIOS存储器映射表,以指示OS为存储装置18保留特定的存储器空间。一旦发现引导装载程序已经完成其操作并且已经对BIOS存储器映射表进行了适当修改,就可开始传统的引导装载程序。在一个实施例中,BIOS可使用诸如高级配置和电源接口(ACPI)的机制将存储器映射信息传达给OS 26和装置驱动器28。

在特定实施例中,图3和图4中示出的并且参照图5和图6更详细讨论的控制/状态协议训练可在“链接”主机14和存储装置18的DRAM通道16已经被“训练”之后并且在(如之前讨论地)已经确定主机14的(例如,供OS 26使用的)逻辑地址空间到(如装置驱动器28看到的)基于存储装置的物理地址区域的映射之后开始。在特定实施例中,DRAM通道16的“训练”可包括以下二者:(i)DDR4JEDEC定义的训练;(ii)针对DRAM接口的扩展存储器物理层(PHY)的训练。在一个实施例中,系统BIOS可执行主机14和存储装置18之间的DDR数据路径/通道16的这种训练和校准。

为了使存储装置18准备根据本公开的教导的控制/状态协议训练,也可采用某些额外设计考虑。例如,可以存在必要的“握手”参数(稍后讨论)和关于存储装置18本身的映射信息的非易失性存储。此外,可使用边带通信方法(诸如,在上电自检(POST)期间或在串行存在检测(SPD)(如果得以实现)期间从主机14到DIMM系统管理总线(SMBus)的通信)来执行系统10中的存储装置18存在时的初始化系统BIOS、引导装载程序、或装置驱动器28。在一个实施例中,BIOS、引导装载程序、或装置驱动器28可在装置控制器48中配置可编程逻辑,使存储装置18准备后续控制/状态协议训练。

当初始地检测到存储装置18附连到DRAM接口16时,可执行装置检测、初始化和地址空间映射的以上程序。额外的程序细节可Takefman等人的2014年8月21日公布的第2014/0237176号美国专利申请获得。

在特定实施例中,可用硬件/固件预先构造装置控制器48,以期待来自主机存储器控制器24的按特定顺序/次序的协议训练数据(控制和状态数据)。还可将装置控制器48预先配置为期待主机14将每个协议训练数据重复发送预定次数(稍后讨论)。这种预先构造可以是基于状态机的实现方式,从而使装置控制器48为从主机14期待什么以及按什么顺序/次序做好准备。因为还 可使装置控制器48获知I/O命令/状态信息的类型和在协议训练阶段期间I/O命令/状态信息(诸如,DRAM命令/状态信息)将由主机14发送到装置控制器48的发送次序,所以这种预先构造允许控制器48在训练阶段期间内部“解释”接收到的每个编码的命令和状态数据。例如,如果硬件预先构造指示存储器读命令将是在训练阶段开始时将从主机14接收的第一条命令,则装置控制器148可用硬件/固件构造为通过将适当的内部存储器获取操作分配给在训练阶段期间存储在可寻址存储器(如CAM 38)中的存储器读命令的编码版本来“解释”这条命令。在训练之后,当从运行的主机14接收到编码的命令并且将编码的命令“解码”为存储器读命令时,装置控制器48可仅仅执行命令特定的存储器获取操作,所述存储器获取操作是之前在协议训练阶段期间在内部分配的。存储器获取操作可包括例如地址翻译、对内部非易失性存储器部分34中的特定存储器单元的访问、从访问的存储器单元中检索存储的内容等。以这种方式,可在不需要对编码程序执行任何反向工程的情况下执行接收到的命令。可类似地处理在协议训练阶段期间从主机14接收的每个编码的命令和状态数据。结果,当协议训练完成时,存储装置18准备好通过DRAM接口16与主机14通信,而不管通过DRAM接口16执行的通信的主机特定的编码如何。

倘若存储装置18是基于块的非易失性存储器(诸如,SSD),则可能不需要在训练阶段期间(尤其是当这种信息特别只可应用于传统的基于DRAM的DIMM时)向这种基于块的存储装置发送特定的DRAM通道命令或状态信息。在该情况下,在一个实施例中,JEDEC定义的DRAM通道特定的控制/状态信息的子集可在训练阶段期间发送到存储装置18,并且随后在运行时间期间进行交换。

图5示出根据本公开的一个实施例的在协议训练阶段期间用于控制的示例性的基于寄存器的存储构造和状态数据。在图5中,图2的RBU 40中的各种寄存器被示出为包括控制寄存器42、状态寄存器44和多个其他寄存器46。如之前提到的,在特定实施例中,装置驱动器28和存储装置18之间的“握手”可使装置准备好协议训练模式。例如,在I/O存储装置(诸如,基于DIMM的SSD)的情况下,“握手”可允许驱动器28在训练阶段期间将SSD置于“全局构造”模式。在一个实施例中,RBU 40中的每个寄存器可存储64字节的DRAM突发(非ECC)并且可具有与其关联的偏移地址,如图 5中所示。例如,装置控制器48中的缓冲器管理器50可在内部将十六进制的偏移地址“0x0”与控制寄存器42关联,将偏移地址“0x40”与状态寄存器44关联,等等。然而,当在系统10中存在ECC时,每个寄存器可被配置为接收并且存储最多72个字节,以适应主机ECC数据—64字节的“原始数据”伴随着对应的8字节ECC(每8位原始数据,1位ECC)。例如,在控制寄存器42具有图5的64字节寄存器存储构造的情况下,缓冲器管理器50可被配置为将64字节的原始控制数据存储在控制寄存器42中,而8字节的ECC数据可被存储在RBU 40中的其他寄存器46(诸如,具有偏移地址0x80、0xC0、0x100等的寄存器)中的任一个中。在该情况下,术语“控制寄存器”以及存储ECC部分的寄存器可被统称为控制寄存器42。在训练期间,也可类似地存储72字节的状态数据。因此,在特定实施例中,可不必映射ECC数据。

在特定实施例中,可在驱动器装置握手期间,(通过装置控制器48)将寄存器特定的偏移地址传送到装置驱动器28。此外,存储装置18本身可在主机BIOS中创建的存储器映射中具有与它关联的基地址。在一个实施例中,存储器控制器24可被装置驱动器28可操作地构造,以使用偏移地址结合基地址来访问RBU 40中的特定寄存器。因此,协议训练中的第一步骤可以是建立/创建至少一个控制寄存器42并且将存储器地址(=存储装置的基地址+0x0)与它关联,并且还建立至少一个状态寄存器44并且将对应的存储器地址(=存储装置的基地址+0x40)与它关联,使得在剩余协议训练期间在主机14和基于DIMM的存储装置18之间可发生通信。此后,在协议训练阶段期间,装置驱动器28可指示主机存储器控制器24(例如,通过运行装置驱动器28的OS 26的CPU执行)将(如下讨论的)多个控制/状态位模式写入与控制/状态寄存器关联的存储器地址。

这里应该注意,因为存储装置18不是传统DRAM模块(如图1中的DRAM模块20),所以存储装置18不会识别传统上通过DRAM接口16的地址/命令总线发送的存储器命令和其他控制信号。因此,在本公开的特定实施例中,在协议训练期间和此后的运行时间期间,DRAM接口16的数据总线部分可被存储器控制器24用来将这些信号以二进制形式传送到存储装置18。然而,在传统的DRAM通道通信中,数据正常地作为DRAM突发(诸如,64字节(或72字节,在ECC的情况下))在数据总线上发送。因此,协议训练期间的每个数据(控制或状态)写操作还可被存储器控制器24作为64字 节DRAM突发进行发送。然而,通常,64字节突发中只有第一个字节可包含实际命令或状态信息;其他字节可包含例如无关数据或虚拟数据位,其中,存储器控制器24(例如,根据编码方案下的需要)填充所述无关数据或虚拟数据位,以生成用于控制/状态写操作的64字节突发。因此,根据加扰、位/字节混合/转换、数据交织、ECC、或任何其他类型的编码的水平,在从主机14接收的64个字节之中仅仅1字节可以是控制/状态寄存器中的可用部分。这使用相同的参考标号“88”符号示出,统称为图5中示出的每个寄存器中的存储空间的一个字节。然而,在特定实施例中,可使用数据突发中的不止一个字节来传送“原始”命令/状态数据。

这里应该注意,包含控制或状态数据的每个DRAM突发可在这里被称为“数据模式”。在控制数据的背景下,每个数据模式可被称为“控制位模式”,可包括各个DRAM命令的编码版本。如以下讨论的,存储装置18中的装置控制器48可选择接收到的控制位模式的“包含命令数据的部分”存储在可寻址存储器(如CAM 38)中,供后续在运行时进行查询。因此,尽管术语“控制数据”和“命令数据”在这里一般可互换地使用,但偶尔区分它们,这仅仅是为了示出DRAM命令数据(无论是否被编码)实际可构造从主机接收的整个控制数据模式的小部分。类似地,在状态数据训练的背景下,来自主机14的每个数据模式可包括各个状态数据的编码版本。装置控制器48可随后选择合适的“包含状态数据的部分”并且将其存储在RBU 40中的寄存器中,供后续在运行时查询。

现在,参照控制协议训练阶段,应该注意,可使用每条命令特有的8位数据模式来传送相关的JEDEC定义的(或标准化的)DRAM命令。因此,训练阶段期间的第一步骤是装置驱动器28可操作地构造存储器控制器24(或CPU 22),以将值的范围是0至255的单字节命令数据顺序写入具有偏移地址0x0的控制寄存器42。如上所述,可使用64字节(非ECC)或72字节(ECC)DRAM突发来发送这单个字节。在图5的实施例中,可使用同一控制寄存器42/对同一控制寄存器42进行寻址来存储顺序接的每个控制位模式。在特定实施例中,可将每个字节值重复写入预定次数。在一个实施例中,所述预定次数可以是通过装置驱动器28由用户编程。例如,在一个实施例中,命令数据的每个字节可按以下次序顺序写入四(4)次:0、0、0、0、1、1、1、1、2、2、2、2、…、254、254、254、254、255、255、255、255。在一个实施 例中,除了控制寄存器42之外,即使当所有控制位模式针对同一控制寄存器42被寻址时,缓冲器管理器50也可在内部使用RBU 40中的其他寄存器46来存储同一控制位模式的重复发送。如上所述,在主机14正采用编码的情况下,每个“原始”命令字节可附带ECC和/或被加扰(有可能还被位/字节混合/转换),然后被存储器控制器24作为控制位模式重复发送到存储装置18,该控制位模式可以是64字节(无ECC)或72字节(具有ECC)DRAM突发。对应的控制位模式形式的每个(命令)字节值可被例如发送四次,以避免罕见的位错误。因此,重复发送同一控制位模式可检验数据完整性。如果四个控制位模式不相同,则装置控制器48可针对每个位位置查询四个控制位模式之中的三个匹配模式。另一方面,如果位位置具有两个1和两个0,则装置控制器48可向装置驱动器28报告错误状态。错误状态可指示I/O通道(如DRAM通道16)有可能不能使用或者可表示该I/O通道将需要被重新训练。

在存在编码时,每个控制位模式包括对应命令数据字节的编码版本。然而,因为编码(诸如,加扰、位/字混合/转换、数据交织等),接收到的控制位模式中的包含命令数据的部分的长度可以是不止一个字节。例如,存储器控制器24采用的加扰粒度可以是特定实现方式,并且可导致命令数据分布于64字节(或72字节)控制位模式的较小或较大段上。因此,在接收到控制位模式时,装置控制器48中的逻辑会需要确定控制位模式中的包含命令数据的部分。在一些实施例中,基于获知期望什么命令数据和什么次序,装置控制器48可评估各个控制位模式(存储器控制器24发送的控制位模式的序列)中的命令数据的编码版本的位位置的统计分布,并且可选地还可估计诸如(例如)当存在加扰时分布的随机程度。基于评估和估计(如果有的话),装置控制器48可识别所评估的位位置内的命令数据位。包含识别的这些命令位的数据部分可被视为各个控制位模式的包含命令数据的部分。在特定实施例中,如以下参照图6讨论的,只有包含命令数据的部分(包括识别的数据位)可被存储在CAM 38中。因此,将被存储在CAM 38中的位的数量可取决于主机存储器控制器24采用的加扰水平。

包含命令数据的部分可被视为“训练值”,所述训练值在控制协议训练阶段期间被存储在存储装置18中(更具体地讲,图2和图7的实施例中的CAM38中)。在特定实施例中,(控制位模式的)每个DRAM突发的训练值可根据(如上所述的)加扰水平和其他编码包括以下位数中的一个:64位(无ECC)、 或72位(存在ECC)、或128位(无ECC)、或144位(存在ECC)、或256位(无ECC)、或288位(存在ECC)等。与从主机14接收的每个控制位模式关联的训练值可被存储在CAM 38中。

可针对状态协议训练重复相同的步骤,因此,这里只提供对状态协议的简要讨论。包含状态数据的“训练”数据模式可被写入具有偏移地址0x40的状态寄存器44。如控制位模式的情况一样,每个数据模式可被重复预定次数(如四次)。如上所述,例如,同一数据模式重复发送的预定次数可通过装置驱动器28由用户编程。在状态协议训练的情况下,采集的值(或包含状态数据的部分)有可能可不同于采集的与控制协议训练关联的值,即使训练序列在这两种情况下是相同的:0、0、0、0、1、1、1、1、2、2、2、2、…、254、254、254、254、255、255、255、255。因为数据加扰可具有地址依赖性,并且控制寄存器和状态寄存器具有与其关联的不同存储器地址,所以这些值可以不同。此外,ECC(如果存在的话)可提供发送到存储装置18的状态数据模式的额外差异。因此,会期望分别针对每个寄存器42和44执行数据采集步骤。换句话讲,应该与状态协议训练分开地进行控制协议训练。这里观察到,在一个实施例中,“状态寄存器”可包括寄存器44和RBU 40中的由缓冲器管理器50内部访问的其他寄存器。在特定实施例中,所有包含状态数据的部分可被存储在可被配置为存储256个条目的单个状态寄存器44中,每个条目具有64位(无ECC)/72位(ECC)或更多。可选择地,在其他实施例中,状态寄存器44可仅仅接收基于DRAM突发的状态数据模式(64字节或72字节);包含状态数据的部分可被存储在RBU 40中的其他寄存器46中的一个或多个中。缓冲器管理器50可在内部管理对RBU 40中的各种寄存器的访问并且根据需要检索寄存器存储的内容。

如果以上提到的控制/状态训练中的任一个失败,则会期望等待相对长的时间(诸如,10ms),然后重新开始训练。在特定实施例中,如果在训练阶段期间在2ms内没有接收到值,则存储装置18可被配置为“超时”,并且存储装置18接着可假设训练将重新开始。

一旦针对控制寄存器和状态寄存器的协议训练结束,即刻就存在使主机14和存储装置18通过标准化I/O通道通信的机制,而不管主机特定的编码方案如何。例如,在运行时,(执行装置驱动器28的)主机14可(使用控制数据模式的DRAM突发)将命令字节写入存储装置18上的(代表控制寄存器 42的)偏移地址0x0。在一个实施例中,装置控制器48可首先确定接收到的控制数据模式中的包含命令数据的部分,然后执行所有256个72位(或如之前讨论的用于存储的包含命令数据的部分的任何其他位大小)编码值的CAM查询,以对接收到的包含命令数据的部分“解码”来确定与解码部分关联的各个命令字节。如之前提到的,装置控制器48中的固件可识别执行命令所需的命令字节和关联的存储器操作。以下,参照图6描述CAM查询。类似地,存储装置18可写入/生成主机14可读取的包含合适的状态数据的部分。例如,在命令执行完结时(或当状态信息需要被报告给主机14时的运行时间期间的任何时间),装置控制器48中的固件可基于命令执行的存储器操作的结果来确定报告命令执行结果的合适的状态字节。此后,装置控制器48可执行状态寄存器44或在状态协议训练阶段期间已经存储了包含状态数据的部分的任何其他寄存器的索引查询,以识别/生成将报告回主机14的正确的72位编码值(或如之前讨论的用于存储的包含状态数据的部分的任何其他位大小,)。在运行时,可将识别的包含状态数据的部分写入状态寄存器44或RBU 40中的任何其他寄存器(用作“状态寄存器”)。因为在状态训练阶段期间将识别的值以与初始从存储器控制器24接收的相同的编码格式进行存储,所以存储器控制器24可正确地对它解码(解扰、EEC检验等)并且将状态信息报告给CPU 22。装置驱动器28可将存储器控制器24配置为读取合适的寄存器,以检索存储装置18报告的状态值。相比于解码接收到的控制数据模式所需的两个数据值的比较,状态数据生成不需要这种比较,因此,在特定实施例中,可能没有任何采用用于包含状态数据的部分的基于CAM的存储器的需要。

这里应该注意,通常,一个字节的DRAM突发可包含控制或状态数据。因此,可在控制/状态协议训练期间使用总共256个数据模式。相关字节可以是DRAM突发中的第一个字节。然而,可不是一直这种情况。例如,在一些实施例中,会需要DRAM突发中的不止一个字节来传送控制/状态数据。因此,以上基于256个数据模式的讨论仅仅是示例。在特定实施例中,用于控制和状态协议训练的数据模式的总数可大于或小于256。此外,用于控制协议训练的数据模式的总数可不同于用于状态协议训练的数据模式的总数。另外,在特定实施例中,可存在多个控制寄存器42和多个状态寄存器44,这会增大训练带宽。例如,在多寄存器构造中,每个寄存器可与特定集合或类型的控制/状态信息关联,以增大训练数据的带宽。每个寄存器也可被分配其 自身的存储器地址,并且可被存储器控制器24独立地寻址。

图6示出根据本公开的一个实施例的图2的存储装置18中的CAM 38的简化架构。不同于用户提供存储器地址并且存储器返回存储在该地址的数据字的标准计算机存储器(诸如,RAM或DRAM),CAM 38被设计成使得用户提供数据字并且CAM搜索其整个存储器,以查看数据字存储在存储器中的什么地方。如果发现数据字,则CAM 38可返回发现数据字的CAM 38中的一个或多个存储地址的列表。在一些实施例中,CAM 38还可返回数据字或其他相关的多条数据。基于CAM 38返回的存储地址,装置控制器48可访问CAM 38内的地址并且检索对应数据。因此,在图6的实施例中,CAM 38可接收将被搜索的内容(这里,包含命令数据的部分)作为输入90。如上所述,对于CAM 38的输入90可以是从运行时的主机14接收的控制数据模式中“提取”的包含命令数据的部分。接收到的输入可被存储在CAM 38中的搜索寄存器92中。CAM 38中的逻辑电路(未示出)随后可对CAM存储的内容94执行搜索操作93,在内容94中存储了代表在控制协议训练阶段期间生成的“训练数据”的所有包含命令数据的部分。在之前讨论的控制协议训练示例的背景下,CAM存储的内容94可包括256个条目,每个条目具有64位(无ECC)或72位(具有ECC),或更多位。如果搜索寄存器92中的内容匹配CAM存储的内容94中存在的任何条目,则CAM 38可生成输出96,输出96可提供CAM存储的内容94中匹配位置的地址和/或匹配内容本身。如上所述,匹配内容将是在控制协议训练阶段期间存储的并且匹配CAM输入90的包含命令数据的部分。如之前也曾讨论的,装置控制器48可使用CAM输出96对(在CAM输入90)接收到的包含命令数据的部分解码,以确定与解码部分关联的各个命令字节,并且随后执行命令。这里应该注意,CAM查询可不必在单个时钟周期中出现。此外,具有合适的数据结构(诸如,,在控制协议训练之后,但在查询开始之前,将CAM内容预先组织成树结构)的硬件支持可降低因检索匹配内容带来的性能影响。

图7是示出根据本公开的一个实施例的用户数据可被如何存储在图1和图2的存储装置18中的示例流程图100。如参照图7和图8中的实施例讨论的,用户数据的存储和检索可不同于之前参照图3至图6讨论的控制/状态数据的存储和检索。图7中的流程图100涉及当主机14采用编码时用户数据的存储。在特定实施例中,可由存储装置18(例如,在装置驱动器28、30的 操作控制下由存储装置中的装置控制器48)执行流程图100中示出的各种操作方面。然而,为了使讨论简单和容易,可偶尔省去执行特定方法步骤的一个实体/多个实体的特定识别。再次参照图7,在框101中,存储装置18可被初始配置为可附连主机(诸如,主机14)所支持的I/O接口(如DRAM接口16)并且能通过I/O接口操作。存储装置18还可被配置为将从主机14接收的用户数据存储在存储装置18内的多个缓冲器中。在随后讨论的图8中示出示例性缓冲器构造。在某些实施例中,缓冲器构造可具有多个大小相等的缓冲器。如之前,在特定实施例中,存储装置18可以是在图7中的框102中说明的基于DIMM的SSD。在框104中,例如,作为存储器写操作的部分,存储装置18可通过I/O接口(诸如,DRAM接口16)从主机14接收:(i)存储装置中的多个缓冲器中的一个缓冲器的存储器映射的缓冲器地址和(ii)用户数据的存储页的编码版本。如之前提到的,在从主机14接收的用户数据的编码版本中可存在加扰、ECC、位/字节混合/转换、和/或任何其他类型的数据编码/保护。在特定实施例中,数据的每个存储页的大小可以是4千字节(KB)。在框106中,存储装置18可将接收到的用户数据的编码版本存储到具有(在框104中从主机104接收的)存储器映射的缓冲地址的缓冲器中。因此,用户数据按照接收的情况(包括主机14进行的任何编码并且没有修改主机特定的用编码格式)进行存储。此后,在框108中,存储装置18可从主机14接收指令,以读取与之前框104中接收的存储器映射的缓冲地址相同的存储器映射的缓冲地址存储的内容。作为响应,如框110所示,存储装置18可访问合适的缓冲器(这里,在框106中选择的缓冲器)并且通过I/O接口(诸如,DRAM接口16)将存储的(在框104、106中)之前接收的用户数据的编码版本提供到主机14。因为(在框106中)存储检索到的数据而没有对其编码格式进行任何修改,所以主机存储器控制器24将“识别”在框110中发送到它的编码数据并且能够根据需要对它解码。因此,通过保存存储在存储装置18中的用户数据中的主机特定的编码,可在存储装置18和主机14之间创建基于有效DRAM通道的用户数据通信(存储和检索)机制,而不管主机14采用的特定编码方案并且没有在存储装置18执行反向工程的任何需要。

图8示出根据本公开的特定实施例的可如何使用合适的地址映射和组相关性“组织”图1和图2的存储装置18中的非易失性存储器(诸如,图2中 的NVM存储部分34)来存储用户数据。出于讨论和方便说明的缘故,假设在图8的背景下,存储装置18是基于块的存储装置(诸如,基于DIMM的SSD)。参照图8的实施例讨论的存储构造也可在进行合适的修改(如有需要)的情况下应用于其他类型的存储装置。图8的示例性实施例中的存储部分34显示为被“组织”成两个“存储体”115、117(分别为存储体0和存储体1),从而有效地将SSD的基于块的存储构造“转换”成基于存储体的存储布置(本质上与传统DRAM模块中的存储体类似),但没有在物理上修改存储部分34中的非易失性/闪速存储器单元的构造/架构/布局。换句话讲,存储装置18和存储部分34保持为基于块;图8中的基于存储“体”的布置仅仅是用于将存储装置18中的非易失性存储器34与典型的基于DRAM模块的存储构造“对准”以提供如以下讨论的用户数据的存储的灵活性的(由NVM控制器52或装置控制器48操作管理的)内部机制/技巧。当存储器控制器24希望通过DRAM接口16读/写用户数据时,这些存储体115、117可用作存储装置18中的存储器映射的位置。因为图8的实施例中的存储装置18是基于块的SSD,所以每个存储器映射的位置(或存储体)可具有与其关联的一对I/O缓冲器。每个I/O缓冲器可被配置为用作写缓冲器和读缓冲器。这种基于缓冲器的构造可使主机14能够在相同的位置/缓冲地址读或写数据,以便进行加扰、ECC和/或任何其他基于主机的编码方案来正确工作,尤其是当编码方案(诸如,加扰)具有地址依赖性时。如图8中所示,每个存储体115、117可由两个不同的大小相等的物理“缓冲器”(缓冲器0和缓冲器1)“形成”。结果,在图8中示出总共两个存储体115、117和四个缓冲器119-120、122-123。每个缓冲器119-120、122-123可用作(用于在存储器读操作期间将数据发送到主机的)读缓冲器和(用于在存储器写操作期间从主机接收数据的)写缓冲器。

这里应该注意,图8中示出的存储体115、117可以是基本的逻辑划分,可由装置控制器48(或者,图2中的NVM控制器52)在内部管理,以使主机的存储器控制器24能够分别对每个存储体115、117进行寻址,好像存储体115、117是与DRAM接口16连接的DRAM存储体(如图1中的DRAM模块20中的存储体(未示出))一样。因此,图8中的逻辑划分允许存储器控制器24将NVM存储部分34与典型的基于DIMM的DRAM模块(如模块20)中的基于存储体的存储构造类似地对待。

此外,通过以上提到的布置创建的“缓冲器”119-120和122-123可不同 于图2中的RBU 40中的缓冲器46。例如,图8的实施例中的每个“缓冲器”119-120、122-123可由非易失性存储器34中的多个闪速存储器单元的各个部分形成。另外,每个缓冲器119-120、122-123中的存储器单元可被有效地划分成多个大小相等的“块”或“分区”125-140,来为SSD 18提供必要的基于块的存储。如图8中所示,块125-128涉及缓冲器119,块129-132涉及缓冲器120,块133-136涉及缓冲器122,块137-140涉及缓冲器123。在图8的实施例中,假设每个块与从主机存储器控制器24接收的用户数据的DRAM存储页的大小相等。在一个实施例中,每个存储页可以是4千字节(KB)大小。存储页大小在系统10中可以是固定的并且是预定的,但在不同系统中可以是不同的。因此,每个I/O缓冲器119-120、122-123可以是(用于用户数据的)16KB大小并且可进行操作来存储ECC位(如果有的话)。因此,所有四个I/O缓冲器119-120、122-123可以被(主机OS 26和存储器控制器24)存储器映射到总共64KB的地址空间(16KB/缓冲器x 4个缓冲器)。在一个实施例中,来自主机的存储器控制器24的存储器映射的缓冲地址(图7中的框104中)不仅可识别与给定I/O缓冲器关联的存储体,而且可识别所识别的存储体内的缓冲器本身。例如,如果主机14对存储体15中的缓冲器119执行存储器写操作,则来自主机14的存储器映射的缓冲地址可不仅包括识别与缓冲器119关联的存储体115的地址,而且可包括用于缓冲器119的偏移地址0x0。由主机存储器控制器24在DRAM通道16上发送的这种存储器映射的缓冲地址还可包括用于基于DIMM的SSD 18的系统基地址,该基地址用于识别DRAM通道上的SSD 18。

在图8的实施例中,可使用对应的逻辑块地址(LBA)访问缓冲器中的每个块,并且可使用组相关性向各个物理块分配多个LBA。每个LBA可与块/分区中的数据的4KB的存储页关联。例如,如图8中所示,LBA 0至LBA 3可被分配给存储“体”115中的缓冲器119(偏移地址0x0)中的(分别使用参考标号125-128识别的)块0至3,LBA 4至LBA 7可被分配给存储“体”115中的缓冲器120(偏移地址0x4000)中的(分别使用参考标号129-132识别的)块4至7,LBA 8至LBA 11可被分配给存储“体”117中的缓冲器122(偏移地址0x8000)中的(分别使用参考标号133-136识别的)块8至11,LBA 12至LBA 15可被分配给存储“体”117中的缓冲器123(偏移地址0xC000)中的(分别使用参考标号137-140识别的)块12至15。组相关性 可允许多个不同LBA参考缓冲器中的同一物理块。例如,在图8的实施例中的两个存储体115、117之中总共划分了十六个块的情况下,可使用针对组相关性的对16取余数运算将LBA分配给特定块。因此,如图8中所示,LBA 16可与缓冲器119中的块0(16对16取余数=0)关联,LBA 17可与缓冲器119中的块1(17对16取余数=1)关联,等等。换句话讲,如图8中所示,使用组相关性,LBA0、16、32、48等可被分配给缓冲器119中的同一块0;LBA 1、17、33、49等可被分配给缓冲器119中的同一块1,等等。在特定实施例中,只有当主机14使用的编码方案(诸如,加扰)具有地址依赖性时,才会需要组相关性。如果主机加扰方案没有地址依赖性,则不会需要组相关性。在该情况下,与块/分区关联的多个LBA值可不遵从对16取余数的运算。

经观察,在图8的实施例中,可通过针对读操作和写操作使用不同的LBA,同时对同一位置/缓冲器进行用户数据的写和读。然而,依据特定实施例中的组相关性,内个特定LBA仍然会需要被写入分配给该LBA的同一缓冲器地址或者从这个缓冲器地址读取特定LBA。如之前讨论的,来自主机14的用户数据可以就像它从主机存储器控制器24接收时那样(也就是说,以加扰形式并且包括EEC(如果存在的话))存储在SSD 18上。即使加扰具有地址依赖性,因为一直从同一物理存储器缓冲器位置读回数据,所以之前参照图8的实施例讨论的数据存储方法也会工作。因为从主机14接收的用户数据是在没有进行任何修改的情况下存储的,所以这确保了存储器控制器24将能够正确解扰检索到的数据并且检验读回数据的ECC。

这里,经观察,从主机14接收的用户数据中的额外ECC位会影响图8的基于块的存储构造中的数据块的“对准”。此外,ECC位会影响基于DIMM的SSD 18的随机写/读性能。然而,在特定实施例中,装置/SSD控制器48(或NVM控制器52)可被(诸如,以固件或者在运行时通过装置驱动器28、30)配置为管理缓冲器中的不同块间的这种包含ECC的数据的存储,以促进随机的读/写性能。

图8的示例性实施例中示出的存储器构造可扩展成覆盖8个体(类似于DDR3DRAM)、或16个体(类似于DDR4DRAM)、或任何其他现有的或将来的DRAM存储体构造(或存储容量),以有助于由存储器控制器24通过在DRAM通道16上进行的基于存储体的寻址来存储/检索用户数据,而不管存储装置18并不是传统DRAM模块。

图9描绘根据本公开的一个实施例的图1中的系统10(包含存储装置18)的整体布局。因此,为了便于参考和讨论,在图1和图9中使用相同的参考标号表示相同的系统组件/单元。

在图9中,主机处理器单元14被示出为(通过DRAM接口16)连接到系统存储器单元12以及外围存储单元144、一个或多个输入装置146、一个或多个输出装置147和网络接口单元149。在一些实施例中,系统10可包括所示出的装置或单元的不止一个实例。系统10的一些示例包括计算机系统(台式或便携式)、平板计算机、移动装置、视频游戏单元或控制台、机器到机器(M2M)通信单元、无状态“瘦”客户端系统、或具有DRAM接口(如DRAM接口16)的任何其他类型的计算或数据处理装置。在各种实施例中,系统10可被构造为机架式服务器系统、独立式系统、或任何其他合适形式的形状因数。在一些实施例中,系统10可被构造为客户端系统,而非服务器系统。

在特定实施例中,主机处理器单元14可包括不止一个CPU,和/或系统10可包括(例如,分布式处理构造的)不止一个处理器单元14。之前已经参照图1和图2的讨论提供了主机14的额外细节,因此,这里出于简要的缘故,不重复这些细节。当系统10是多处理器系统时,可存在CPU或处理器的不止一个实例。如之前提到的,主机14可以是片上系统(SoC)。

存储器单元12可包括至少一个基于DIMM的存储装置(如图1和图2中的存储装置18)。存储装置18可以以硬件和/或软件来构造,以按照图3至图8中的实施例来执行控制/状态/用户数据的存储和检索。在特定实施例中,存储器单元12还可包括一个或多个DRAM模块(如图1中的DRAM模块20)。之前还参照图1和图2的讨论给出了可包括存储装置18的存储器单元的各种示例。DRAM存储器模块20可包括传统的DDR2/DDR3/DDR4DRAM模块或基于DRAM的3DS存储器模块(诸如,HBM模块或HMC存储器模块)。另外,在一些实施例中,与单一类型的存储器相比,系统存储器12可包括多种不同类型的半导体存储器。

在各种实施例中,外围存储单元144可包括支持磁性、光学、磁光、或固态存储介质(诸如,硬盘驱动器、光盘(诸如,CD或DVD)、非易失性RAM装置等)。在一些实施例中,外围存储单元144可包括可通过标准小型计算机系统接口(SCSI)、光纤通道接口、(IEEE 1394)接口、或 另外合适的接口连接到处理器14的更复杂的存储装置/系统(诸如,盘阵列(可以是合适的RAID(独立磁盘冗余阵列)构造)或存储区域网(SAN))。在一个实施例中,外围存储单元144可通过标准外围接口(诸如,基于外围组件接口Express(PCI ExpressTM)标准的接口、基于通用串行总线(USB)协议的接口、或基于IEEE 1394协议的接口)连接到处理器14。

在特定实施例中,输入装置146可包括诸如计算机键盘、鼠标或其他指点装置、触摸板、操纵杆、或任何其他类型的数据输入装置的标准输入装置。输出装置147可包括图形/显示装置、计算机屏幕、音频扬声器、警报系统、CAD/CAM(计算机辅助设计/计算机辅助加工)系统、视频游戏站、或任何其他类型的数据输出或处理控制装置。在一些实施例中,输入装置146和输出装置147可通过I/O或外围接口连接到主机处理器单元14。

在一个实施例中,网络接口149可与主机处理器单元14通信,以使系统10能够连接到网络(未示出)。在另一个实施例中,网络接口149可全部不存在。网络接口149可包括用于将系统10连接到网络(无论有线还是无线)的任何合适的装置、介质和/或协议内容。在各种实施例中,网络可包括局域网(LAN)、广域网(WAN)、互联网、有线或无线以太网、电信网络、或其他合适类型的网络。

系统10可包括板上电源单元150,用于向图9中示出的各种系统组件供电。电源单元150可接纳电池或者可连接到AC电源插座。在一个实施例中,电源单元150可将太阳能能量转换成电力。

在之前的描述中,出于说明而非限制的目的,阐述具体细节(诸如,特定的架构、接口、技术等),以提供对所公开的技术的彻底理解。然而,本领域的技术人员将清楚,可在脱离这些具体细节的其他实施例中实践所公开的技术。也就是说,本领域的技术人员将能够设想到尽管未在这里明确描述或示出但实施了所公开的技术的原理的各种布置。在一些情形下,省略了对公知装置、电路和方法的详细描述,以避免在不必要的细节上模糊所公开的技术的描述。这里详述的所公开的技术的原理、方面和实施例的所有陈述及其具体示例旨在涵盖结构等同物和功能等同物二者。另外,这些等同物旨在包括当前已知的等同物以及未来开发的等同物(例如,执行相同功能的开发的任何元件,而不管结构如何)二者。

因此,例如,本领域的技术人员将理解,这里(诸如,图1和图2、图5 和图6以及图8和图9中)的框图可代表实施技术原理的说明性电路或其他功能单元的概念示图。类似地,应该理解,这里诸如图3、图4和图7中的流程图可代表可例如由存储装置18结合装置驱动器28、30并且以与涉及与主机单元14的通信的操作环境中基本上执行的各种处理或创新方面。主机14也可以以硬件和/或软件被合适地配置为支持这里讨论的各种协议训练和数据存储方法。在特定实施例中,主机14可包括例如通用处理器、专用处理器、传统处理器、数字信号处理器(DSP)、多个微处理器、与DSP核关联的一个或多个微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)、和/或状态机。

当某些发明方面需要基于软件的处理时,这种软件或程序代码可驻留在计算机可读数据存储介质(未示出)中。这种数据存储介质可以是外围存储器144的部分,或者可以是(如之前描述的)主机14的内部存储器和存储装置18的部分。主机14和/或(存储装置18中的)装置控制器48可执行存储在这种介质上的相关指令,以执行基于软件的处理。这种相关指令可包括例如之前讨论的不同API提供的功能以及可能需要实行这里讨论的协议训练和后续基于DRAM通道的控制/状态/用户数据通信的任何辅助程序代码。计算机可读数据存储介质可以是包含以上提到的由通用计算机或处理器执行的计算机程序、软件、固件、或微代码的非暂时性数据存储介质。计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、数字寄存器、高速缓存存储器、半导体存储器装置、诸如内部硬盘的磁介质、磁带和可移动盘、磁光介质、诸如CD-ROM盘和数字通用盘(DVD)的光学介质。

根据本公开的发明方面的通信模型的可选实施例可包括负责提供额外功能(包括支持依照本公开的教导的解决方案所必需的以上识别的功能和/或任何功能中的任一个)的额外组件。尽管以上按照特定组合描述了特征和元件,但可在没有其他特征和元件的情况下单独地或者按照具有或没有其他特征的各种组合来使用每个特征或元件。如之前提到的,可通过使用硬件(诸如,逻辑电路)和/或能够以(以上提到的)计算机可读数据存储介质上存储的编码的指令或微代码形式执行软件/固件的硬件来提供系统10中的一些元件(诸如,存储装置18和主机单元14)的功能。因此,这些功能和示出的功能块将被理解为由硬件实现和/或由计算机实现,因此由机器实现。

以上描述了训练协议,它使主机系统和DRAM存储器通道DIMM形状因素存储装置(诸如,基于DDR形状因素的SSD)之间能够进行通信,而不需要知道主机平台存储器控制器所应用的编码方法或算法或者对所述编码方法或算法进行反向工程。协议可与各种加扰、ECC和其他数据保护方案一起工作,并且可一般应用于非标准化的使用I/O存储装置(诸如,基于DIMM的存储装置)附连到标准化I/O通道或I/O接口(诸如,DRAM通道)并且需要与主机交换信息的任何应用。使用该协议,主机可以以主机可识别方式将控制信息发送到基于DIMM的I/O存储装置并且从基于DIMM的I/O存储装置接收状态信息,而不管DDR I/O通道上使用的编码或数据保护方案如何。在协议训练阶段期间,可通过以与从主机接收的编码格式相同的编码格式发送已知值的协议训练序列并且将关联的命令/状态数据存储在存储装置中,来将控制/状态数据写入基于DIMM的存储装置。然后,在运行时可使用这些存储的值,以执行从主机接收的编码的命令,并且还以主机可识别的编码格式将状态数据报告给主机。针对用户数据的存储来描述基于存储体的缓冲构造,所述用户数据也按照接收的情况进行存储,以保存主机特定的编码,因此有助于通过DRAM通道在主机存储器控制器和基于DIMM的存储装置之间的数据交换。

如本领域的技术人员将认识到的,可在大范围的应用中修改和改变本申请中描述的创造性构思。因此,专利保护的主题的范围不应该限于以上讨论的特定示例性教导中的任一个,而是由权利要求进行限定。

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