用于在选择的存储器设备上发出命令的技术的制作方法

文档序号:15736424发布日期:2018-10-23 21:33阅读:106来源:国知局

一些数据存储设备包括布置在一个或多个阵列中的多个非易失性存储器设备。给定阵列中的非易失性存储器设备连接至相同的通信信道,该通信信道接收命令以对阵列中的存储器设备的数据进行操作。选择性地选择相同通信信道上的存储器设备的子组典型地要求修改要在子组中的每个存储器设备的标识符,并且然后选择具有修改的标识符的存储器设备。

附图说明

本文中描述的概念在附图中通过示例而非通过限制的方式而示出。出于示出的简便和清晰的目的,附图中示出的元件不必按比例绘制。在认为适当的情况下,附图标记在附图中重复以指示相对应的或者类似的元件。

图1是用于对选择的存储器设备的子组执行命令的数据存储设备的至少一个实施例的简化的框图;

图2是可以由图1的数据存储控制器建立的环境的至少一个实施例的简化的框图;

图3是可以由图1和图2的数据存储控制器执行的用于选择子组的方法的至少一个实施例的简化的流程图;

图4是可以由图1和图2的数据存储控制器执行的用于读取数据的方法的至少一个实施例的简化的流程图;

图5是可以由图1和图2的数据存储控制器执行的用于写入数据的方法的至少一个实施例的简化的流程图;以及

图6是包括图1和图2的数据存储设备的计算设备的至少一个实施例的简化的框图。

具体实施方式

虽然本公开的概念易受各种修改和替代形式的影响,但是其具体的实施例在附图中通过示例方式示出,并且将在本文中详细地进行描述。然而,应该理解的是,没有意图将本公开的概念限制于公开的特定形式,相反,意在涵盖与本公开和所附权利要求一致的所有修改、等同以及替代。

说明书中对“一个实施例”、“实施例”、“示意性实施例”等的引用指示描述的实施例可以包括特定的特征、结构、或者特性,但是每个实施例可以或可以不必包括特定的特征、结构、或者特性。此外,这样的短语不必指的是相同的实施例。另外,当结合实施例描述特定的特征、结构、或者特性时,可以认为结合其它实施例实现这样的特征、结构、或者特性是在本领域技术人员的知识内的,无论是否明确地描述该实施例。此外,应该认识到的是,包括在列表中的以“至少一个A、B和C”形式的项可以表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。类似地,以“A、B或C中的至少一个”形式列出的项可以表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。

在一些情况中,可以以硬件、固件、软件或者其任意组合来实现公开的实施例。公开的实施例还可以实现为由暂时性或者非暂时性机器可读(例如,计算机可读)存储介质承载的或者存储在暂时性或者非暂时性机器可读存储介质上的指令,该指令可以由一个或多个处理器读取和执行。机器可读存储介质可以体现为任意存储设备、机制、或者用于存储或发送可由机器读取的形式的信息的其它物理结构(例如,非易失性或者易失性存储器、媒体光盘、或者其它媒体设备)。

在附图中,一些结构或方法特征可以以具体的布置和/或顺序示出。然而,应该认识到的是,这样的具体布置和/或顺序可以不是必需的。而在一些实施例中,这样的特征可以以与示意性附图中所示的不同的方式和/或顺序来布置。此外,将结构或者方法特征包括在特定的附图中不表明暗示这样的特征在所有实施例中都是必需的,并且在一些实施例中,可以不被包括或者可以与其它特征组合。

如图1中示出的,用于对选择的存储器设备执行命令的示意性数据存储设备100包括数据存储控制器102和存储器116,该存储器116示意性地包括非易失性存储器118和易失性存储器120。如以下较具体地讨论的,在使用中,数据存储控制器102被配置为选择用于执行数据操作(例如,读取、写入、刷新等)的一个或多个非易失性存储器设备构成的子组。

数据存储设备100的数据存储控制器102可以体现为能够写入、读取、定位以及替换非易失性存储器118中的数据的任意类型的控制设备、电路、或者硬件设备的组合。在示意性实施例中,数据存储控制器102包括处理器或者处理电路104、本地存储器106、主机接口108、选择逻辑110、缓冲区112以及存储器控制逻辑114。应该认识到的是,在其它实施例中,数据存储控制器102可以包括通常在固态驱动器的驱动控制器中找到的额外的设备、电路、和/或组件。

处理器104可以体现为能够执行本文中描述的功能的任意类型的处理器。例如,处理器104可以体现为单核或多核处理器、数字信号处理器、现场可编程门阵列(FPGA)、微控制器、或者其它处理器或者处理/控制电路。类似地,本地处理器106可以体现为能够执行本文中描述的功能的任意类型的易失性和/或非易失性存储器或者数据存储装置。在示意性实施例中,本地处理器106存储可由处理器104执行以对数据存储控制器102的描述的功能进行执行的固件和/或其它指令。在一些实施例中,处理器104和本地处理器106可以形成片上系统(SoC)的部分,并且与数据存储控制器102的其它组件一起并入到单个集成电路芯片上。

主机接口108还可以体现为能够促进数据存储设备100与主机设备或服务(例如,主机应用)的通信的任意类型的硬件处理器、处理电路、输入/输出电路、和/或组件的集合。即,主机接口108体现为或者建立用于对存储在数据存储设备100上(例如,存储在存储器116中)的数据进行存取的接口。为此,主机接口108可以被配置为利用用于促进与数据存储设备100的通信的任意适合的通信协议和/或技术,这取决于数据存储设备的类型。例如,在一些实施例中,主机接口108可以被配置为使用串行高级技术附件(SATA)、快速外围组件互连(PCIe)、串行附接SCSI(SAS)、通用串行总线(USB)、和/或其它通信协议和/或技术来与主机设备或者服务进行通信。

在示意性实施例中,选择逻辑110体现为专用电路和/或设备,其被配置为选择存储器116的非易失性存储器118的一个或多个非易失性存储器设备来形成用于执行命令的子组。选择逻辑110可以体现为协处理器、专用集成电路(ASIC)、或者其它专用电路或设备。在这样的实施例中,选择逻辑110提供对本文中描述的选择相关操作的硬件加速实施方式。在其它实施例中,选择逻辑110的至少部分可以体现为固件或者其它处理器可执行指令。

数据存储控制器102的缓冲区112体现为由数据存储控制器102使用来临时地存储从存储器116读取或者写入存储器116的数据的易失性存储器。缓冲区112的特定大小可以取决于存储器116的总存储大小。存储器控制逻辑114示意性地体现为硬件电路和/或一个或多个设备,其被配置为控制对存储器116的特定存储位置处的数据的读取/写入存取。

非易失性存储器118可以体现为能够以持久性方式(即使向非易失性存储器118的电力中断)存储数据的任意类型的数据存储装置。例如,在示意性实施例中,非易失性存储器118体现为一个或多个非易失性存储器设备122。非易失性存储器设备122示意性地体现为字节或者块可寻址、在位写入(write in place)非易失性存储器设备。在示意性实施例中,以区块(Rank)来布置非易失性存储器设备122。应该认识到的是,每个区块中的非易失性存储器设备122连接至相同的通信信道,如以下更详细地讨论的。然而,在其它实施例中,非易失性存储器118可以体现为使用硫属化物相变材料(例如,硫属化物玻璃)的存储器设备、或者其它类型的字节或者块可寻址、在位写入非易失性存储器、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、相变存储器(PCM)、并入忆阻器技术的存储器、磁阻式随机存取存储器(MRAM)或者自旋转移力矩(STT)-MRAM的任意组合。

易失性存储器120可以体现为在向易失性存储器120供应电力时能够存储数据的任意类型的数据存储装置。例如,在示意性实施例中,易失性存储器120体现为一个或多个易失性存储器设备,并且定期地在后文中指的是易失性存储器120,可以理解的是,在其它实施例中,易失性存储器120可以体现为其它类型的非持久性数据存储装置。易失性存储器120的易失性存储器设备示意性地体现为动态随机存取存储器(DRAM)设备,但是可以体现为在向易失性存储器120供应电力时能够存储数据的其它类型的易失性存储器设备和/或存储器技术。

现在参考图2,在使用中,数据存储设备100可以建立环境200。示意性环境200包括数据管理器210、命令发出器220、以及接口管理器230。数据管理器210进一步包括设备选择器212。另外,命令发出器220进一步包括数据读取器222、数据写入器224、以及刷新器226。此外,示意性环境200包括子组数据240,其可以体现为指示一个或多个子组和与每个子组相关联(例如,每个子组内)的存储器设备的任意数据。子组数据240可以由数据存储控制器102的模块和/或子模块存取。环境200的组件中的每个可以体现为固件、软件、硬件或者其组合。例如,环境200的逻辑和其它组件可以形成数据存储控制器102或者数据存储设备100的其它硬件组件的部分,或者以其他方式由数据存储控制器102或者数据存储设备100的其它硬件组件建立。如此,在一些实施例中,环境200的组件中的任意一个或多个可以体现为电路或者电气设备的集合(例如,数据管理器电路210、设备选择器电路212、命令发出器电路220、数据读取器电路222、数据写入器电路224、刷新器电路226、接口管理器电路230等)。

数据管理器210被配置为控制选择非易失性存储器118中的哪个非易失性存储器设备122来执行命令,该数据管理器210可以体现为硬件、固件、软件、虚拟化的硬件、仿真架构和/或如以上讨论的其组合。为此,数据管理器210包括设备选择器212。设备选择器212被配置为选择非易失性存储器设备122构成的子组来执行命令。特别地,如以上描述的,在示意性实施例中,非易失性存储器118体现为布置在区块中的多个非易失性存储器设备122。每个区块中的非易失性存储器设备122经由通信信道来连接。因为区块中的非易失性存储器设备122共享相同的通信信道,所以相同区块中的所有非易失性存储器设备122都响应于命令来接收和执行,除非设备选择器212定义区块中的非易失性存储器设备122构成的子组用于执行命令。在示意性实施例中,设备选择器212被配置为通过选择(即,添加或移除)相同区块内的一个或多个非易失性存储器设备122来形成非易失性存储器设备122构成的子组以执行命令(例如,读取或写入)。应该认识到的是,选择性地向用于执行命令的子组添加或移除相同区块的非易失性存储器设备122减少了否则如果区块中的非易失性存储器设备122的所有用于执行命令则会带来的存储器和能量使用的开销。

本发明包括选择区块中的一个或多个非易失性存储器设备122而不修改非易失性存储器设备122中的每个的指派的标识符的方法。

设备状态

在一些实施例中,设备选择器212被配置为基于每个非易失性存储器设备122的设备状态,在区块中创建一个或多个非易失性存储器设备122构成的子组。在这样的实施例中,每个非易失性存储器设备122包括指示是选择还是取消选择非易失性存储器设备122来执行命令的设备状态。这允许设备选择器212通过改变非易失性存储器设备122的设备状态而不修改非易失性存储器设备122的唯一标识符来选择或者取消选择非易失性存储器设备122。在这样的实施例中,仅处于选择状态的非易失性存储器设备122构成的子组对命令做出响应。

例如,设备选择器212可以通过选择非易失性存储器设备122的标识符来将非易失性存储器设备122添加至子组。如果选择的标识符与区块内的非易失性存储器设备122相匹配,则非易失性存储器设备122的设备状态改变为选择状态。如果选择的标识符与区块内的非易失性存储器设备122不匹配,则非易失性存储器设备122的设备状态不改变。例如,如果非易失性存储器设备122处于选择状态,则设备状态仍然处于选择状态,并且如果非易失性存储器设备122处于取消选择状态,则设备状态仍然处于取消选择状态。

类似地,设备选择器212可以通过选择非易失性存储器设备122的标识符来从子组移除非易失性存储器设备122。如果选择的标识符与区块内的非易失性存储器设备122相匹配,则非易失性存储器设备122的设备状态改变为取消选择状态。如果选择的标识符与区块内的非易失性存储器设备122不匹配,则非易失性存储器设备122的设备状态不改变。例如,如果非易失性存储器设备122处于选择状态,则设备状态仍然处于选择状态,并且如果非易失性存储器设备122处于取消选择状态,则设备状态仍然处于取消选择状态。

模式寄存器掩码位

在一些实施例中,设备选择器212被配置为基于每个非易失性存储器设备122的一个或多个模式寄存器位,在区块中创建一个或多个非易失性存储器设备122构成的子组。在这样的实施例中,每个非易失性存储器设备122包括至少两个模式寄存器掩码位,其包括读取命令掩码位和写入命令掩码位。模式寄存器掩码位允许设备选择器212选择一个或多个非易失性存储器设备122以通过清除非易失性存储器设备122的相对应的模式寄存器掩码位来执行读取和/或写入命令。此外,设备选择器212可以对非易失性存储器设备122的一个或多个模式寄存器掩码位进行设置以从与相对应的命令相关联的子组移除非易失性存储器设备122。

例如,设备选择器212可以通过清除非易失性存储器设备122的读取命令掩码位来将非易失性存储器设备122添加至用于执行读取命令的子组。在这样的实施例中,仅有使读取命令掩码位被清除的非易失性存储器设备122构成的子组对读取命令做出响应。应该认识到的是,即使选择的标识符与非易失性存储器设备122的标识符相匹配,具有经设置的读取命令掩码位的非易失性存储器设备122也不对读取命令做出响应。类似地,设备选择器212可以通过清除非易失性存储器设备122的写入命令掩码位来将非易失性存储器设备122添加至用于执行写入命令的子组。在这样的实施例中,仅有使写入命令掩码位被清除的非易失性存储器设备122构成的子组对写入命令做出响应。应该认识到的是,即使选择的标识符与非易失性存储器设备122的标识符相匹配,具有经设置的写入命令掩码位的非易失性存储器设备122也不对写入命令做出响应。在这样的实施例中,设备选择器212可以通过设置非易失性存储器设备122的读取命令掩码位来将非易失性存储器设备122从子组中移除。具有经设置的读取命令掩码位的非易失性存储器设备122不对读取命令做出响应,具有经设置的写入命令掩码位的非易失性存储器设备122不对写入命令做出响应。

例如,在示意性实施例中,非易失性存储器118包括布置在区块中的非易失性存储器设备122中的十一个。每个非易失性存储器设备122包括至少两个标识符,主标识符以及指派的标识符。相同区块中的非易失性存储器设备122的所有主标识符是或者全部被选择的或者取消选择的。指派的标识符为向区块中的非易失性存储器设备122中的每个指派的唯一标识符。在初始设置时,所有十一个存储器设备122的主标识符是被选择的,并且针对前九个存储器设备122将读取命令掩码位清除(即,指派的标识符1至9),但是针对第十和第十一存储器设备对读取命令掩码位进行设置。换言之,数据存储控制器102可以从前九个存储器设备读取数据,但是第十和第十一存储器设备是阻塞的并且不对读取命令做出响应。此外,针对前十个存储器设备将写入命令掩码位清除(即,指派的标识符1至10)但是针对第十一存储器设备对写入命令掩码位进行设置。换言之,数据存储控制器102可以向前十个存储器设备写入数据,但是第十一存储器设备是阻塞的并且不对写入命令做出响应。

在这样的示例中,如果数据存储控制器102(例如,从主机250)接收到用于从第十个存储器设备122读取数据的读取命令,则设备选择器212被配置为清除第十个存储器设备的读取命令掩码位。这允许数据存储控制器102响应于接收到读取命令,从第十个存储器设备122以及从前九个存储器设备122读取数据。此外,如果数据存储控制器102接收到用于向第十一个存储器设备122写入数据的写入命令,则设备选择器212被配置为清除第十一个存储器设备122的写入命令掩码位。这允许数据存储控制器102响应于接收到写入命令,向第十一个存储器设备122以及前十个存储器设备122写入数据。

应该认识到的是,在一些实施例中,命令可以是读取命令、写入命令、刷新读取命令、以及刷新写入命令。在这样的实施例中,刷新读取命令强制非易失性存储器设备122执行读取命令,无论非易失性存储器设备122的读取命令掩码位的状态如何。类似地,刷新写入命令强制非易失性存储器设备122执行写入命令,无论非易失性存储器设备122的写入命令掩码位的状态如何。因此,刷新命令优先于其它命令。

额外标识符

在一些实施例中,设备选择器212被配置为基于每个非易失性存储器设备122的额外标识符,在区块中创建一个或多个非易失性存储器设备122构成的子组。在这样的实施例中,向每个非易失性存储器设备122指派额外标识符,该额外标识符用于识别用于添加至子组的或者从子组移除的非易失性存储器设备122。例如,每个非易失性存储器设备122可以包括针对刷新或者其它命令的主标识符、针对读取操作的第一指派的标识符、以及针对写入操作的第二指派的标识符。

命令发出器220被配置为管理从非易失性存储器118的非易失性存储器设备122构成的子组中读取数据以及向非易失性存储器118的非易失性存储器设备122构成的子组写入数据,该命令发出器可以体现为硬件、固件、软件、虚拟化的硬件、仿真架构、和/或以上讨论的其组合。为此,命令发出器220包括数据读取器222、数据写入器224以及刷新器226。

数据读取器222被配置为响应于读取命令,从选择的非易失性存储器设备122构成的子组中读取数据。为此,数据读取器222被配置为基于接收到的读取命令,确定非易失性存储器设备122构成的子组。如以上讨论的,非易失性存储器设备122构成的子组包括相同区块内的一个或多个非易失性存储器设备122。在一些实施例中,读取命令可以识别请求数据读取器222从其读取数据的一个或多个非易失性存储器设备122。在一些实施例中,数据读取器222可以根据与接收到的读取命令的参数相关联的子组数据240来选择非易失性存储器设备122构成的子组,该参数例如为接收到的读取命令的上下文、要被读取的数据的类型(例如,文本、图像、视频、音频)、要被读取的数据量、和/或与读取命令相关联的软件(例如,过程、应用等)的标识符。子组数据240包括一个或多个非易失性存储器设备122构成的各种子组。

数据写入器224被配置为响应于写入命令,向选择的非易失性存储器设备122构成的子组(选择的子组)写入数据。为此,数据写入器224被配置为基于接收到的写入命令,确定非易失性存储器设备122构成的子组。如以上讨论的,非易失性存储器设备122构成的子组包括相同区块内的一个或多个非易失性存储器设备122。在一些实施例中,写入命令可以识别请求数据写入器224在其中写入数据的一个或多个非易失性存储器设备122。在一些实施例中,数据写入器224可以根据与接收到的写入命令的参数相关联的子组数据240选择非易失性存储器设备122构成的子组,该参数例如为接收到的写入命令的上下文、要被写入的数据的类型(例如,文本、图像、视频、音频)、要被写入的数据量、和/或与写入命令相关联的软件(例如,过程、应用等)的标识符。

刷新器226被配置为响应于刷新命令,向区块中的所有非易失性存储器设备122执行请求的命令。例如,刷新命令可以为刷新读取命令。在这样的情况中,响应于刷新读取命令,刷新器226可以强制从区块中的所有非易失性存储器设备122读取数据,无论每个非易失性存储器设备122的状态(例如,选择/取消选择的设备状态、读取命令掩码位的状态、选择的标识符)如何。类似地,刷新命令可以是刷新写入命令。在这样的情况中,响应于刷新写入命令,刷新器226可以强制向区块中的所有非易失性存储器设备122写入数据,无论每个非易失性存储器设备122的状态(例如,选择/取消选择的设备状态、写入命令掩码位的状态、选择的标识符)如何。

接口管理器230被配置为处理各种指令,其包括但是不限于,从主机250接收到的数据存储指令和数据读取指令,该接口管理器230可以体现为应用、服务、和/或其它设备。在一些实施例中,接口管理器230还可以被配置为处理其它指令,包括自监视、分析和报告技术(“SMART”)指令和在快速非易失性存储器(“NVMe”)规范中定义的其它指令。为了处理各种指令,接口管理器230被配置为识别接收到的指令和与指令相关联的任意数据和/或参数,并且将那些项发送至数据管理器210。例如,响应于读取指令,接口管理器230将由数据管理器210读取的数据发送至主机250。相反,响应于写入指令和/或擦除指令,接口管理器230将指令的结果发送至主机250,该指令的结果例如为接收到/或完成指令的确认。

现在参考图3,在使用中,数据存储设备100的数据存储控制器102可以执行用于对非易失性存储器设备122构成的子组执行命令的方法300。方法300在框302处开始,在框302中,数据存储控制器102确定是否已从主机250接收到命令以在区块中的一个或多个非易失性存储器设备122上执行接收到的命令。如以上讨论的,在示意性实施例中,命令可以为读取命令、写入命令、刷新读取命令、或者刷新写入命令。如果数据存储控制器102确定还未接收到命令,则方法300循环回到框302以继续等待来自主机250的命令。然而,如果数据存储控制器102确定已接收到命令,则方法300前进至框304。

在框304中,基于接收到的命令,数据存储控制器102确定选择哪些非易失性存储器设备122来执行接收到的命令操作。为此,在框306中,数据存储控制器102可以识别接收到的命令和与接收到的命令相关联的任意设备数据。如以上讨论的,在一些实施例中,每个命令的设备数据可以指定区块内的一个或多个非易失性存储器设备122来执行命令。替代地,在框308中,在其它实施例中,基于命令的参数,数据存储控制器102可以确定一个或多个非易失性存储器设备122。

在框310中,基于接收到的命令,数据存储控制器102确定是否创建选择的非易失性存储器设备122构成的子组。如果数据存储控制器102基于接收到的命令确定不创建子组,则方法300向前跳至框320。例如,如果数据存储控制器102确定接收到的命令被请求应用于区块中的所有非易失性存储器设备122,则数据存储控制器102确定不需要创建子组。在一些实施例中,基于命令的参数和选择的非易失性存储器设备122,数据存储控制器102可以根据子组数据240选择子组。

然而,如果数据存储控制器102确定基于选择的非易失性存储器设备122创建子组,则方法300前进至框312。在框312中,数据存储控制器102基于选择的非易失性存储器设备122创建子组。为此,在一些实施例中,在框314中,数据存储控制器102可以将选择的非易失性存储器设备122中的每个的设备状态设置为选择状态。在一些实施例中,在框316中,数据存储控制器102可以将选择的非易失性存储器设备122中的每个的读取或写入命令掩码位清除为零。在其它实施例中,在框318中,数据存储控制器102可以通过选择非易失性存储器设备122的标识符来创建选择的非易失性存储器设备122构成的子组。例如,如以上讨论的,每个非易失性存储器设备122针对读取、写入以及刷新或杂项命令可以包括至少三个不同的标识符。数据存储控制器102可以通过识别选择的非易失性存储器设备122的每个的读取标识符,针对读取命令操作创建选择的非易失性存储器设备122构成的子组。应该认识到的是,可以将创建的子组存储在子组数据240中。

在框320中,数据存储控制器102将接收到的命令发出至选择的非易失性存储器设备122以用于执行。在框322中,如果发出的命令是读取命令,则数据存储控制器102从非易失性存储器设备122的选择的子组中读取数据。在框324中,如果发出的命令是写入命令,则数据存储控制器102将数据写入选择的非易失性存储器设备122的子组。在框326中,如果发出的命令是刷新读取命令,则数据存储控制器102从选择的非易失性存储器设备122中读取数据,无论非易失性存储器设备122的状态(例如,选择的/取消选择的设备状态、读取命令掩码位的状态、选择的标识符)如何。在框328中,如果发出的命令是刷新写入命令,则数据存储控制器102将数据写入选择的非易失性存储器设备122,无论非易失性存储器设备122的状态(例如,选择的/取消选择的设备状态、写入命令掩码位的状态、选择的标识符)如何。应该认识到的是,取决于接收到的命令,选择的非易失性存储器设备122可以是区块中的非易失性存储器设备122构成的子组或者区块中的所有非易失性存储器设备122。另外,应该认识到的是,虽然将读取、写入以及刷新命令描述为可以发出至选择的存储器设备122命令的示例,但是在其它实施例中,可以将其它命令发出至选择的存储器设备122。

现在参考图4,在使用中,数据存储控制器102的数据读取器222可以执行用于响应于接收到读取命令从选择的非易失性存储器设备122构成的子组中读取数据的方法400。方法400在框402处开始,在框402中,数据存储控制器102确定是否已从主机250接收到读取命令。如果数据读取器222确定还未接收到读取命令,则方法400循环回到框402以继续等待读取命令。然而,如果数据读取器222确定已接收到读取命令,则方法400前进至框404。

在框404中,数据读取器222确定区块中的每个非易失性存储器设备122是否为选择的非易失性存储器设备122的子组的部分。为此,在一些实施例中,在框406中,数据读取器222可以确定非易失性存储器设备122的读取命令掩码位是否被清除(例如,等于零)。在这样的实施例中,如果非易失性存储器设备122具有清除的读取命令掩码位,则数据读取器222确定非易失性存储器设备122是选择的子组的部分。在一些实施例中,在框408中,数据读取器222可以确定非易失性存储器设备122的设备状态是否处于选择状态。在这样的实施例中,如果非易失性存储器设备122处于选择状态,则数据读取器222确定非易失性存储器设备122是选择的子组的部分。在其它实施例中,在框410中,数据读取器222可以确定非易失性存储器设备122的读取标识符是否与读取命令中指示的选择的标识符中的一个相匹配。在这样的实施例中,如果非易失性存储器设备122的读取标识符与选择的标识符中的一个相匹配,则数据读取器222确定非易失性存储器设备122是选择的子组的部分。

如果在框412中数据读取器222确定非易失性存储器设备122是选择的子组的部分,则方法400前进至框414以从非易失性存储器设备122读取数据。然而,如果在框412中数据读取器222确定非易失性存储器设备122不是选择的子组的部分,则方法400循环回到框402以继续等待另一读取命令。应该理解的是,在示意性实施例中,方法400针对区块中的每个存储器设备122并发地被执行。

现在参考图5,在使用中,数据存储控制器102的数据写入器224可以执行用于响应于接收到写入命令将数据写入选择的非易失性存储器设备122构成的子组的方法500。方法500在框502处开始,在框502中,数据存储控制器102确定是否已从主机250接收到写入命令。如果数据写入器224确定还未接收到写入命令,则方法500循环回到框502以继续等待写入命令。然而,如果数据写入器224确定已接收到写入命令,则方法500前进至框504。

在框504中,数据写入器224确定区块中的每个非易失性存储器设备122是否为选择的非易失性存储器设备122的子组的部分。为此,在一些实施例中,在框506中,数据写入器224可以确定给定的非易失性存储器设备122的写入命令掩码位是否被清除(例如,等于零)。在这样的实施例中,如果非易失性存储器设备122具有清除的写入命令掩码位,则数据写入器224确定非易失性存储器设备122是选择的子组的部分。在一些实施例中,在框508中,数据写入器224可以确定非易失性存储器设备122的设备状态是否处于选择状态。在这样的实施例中,如果非易失性存储器设备122处于选择状态,则数据写入器224确定非易失性存储器设备122是选择的子组的部分。在其它实施例中,在框510中,数据写入器224可以确定非易失性存储器设备122的写入标识符是否与写入命令中指示的选择的标识符中的一个相匹配。在这样的实施例中,如果非易失性存储器设备122的写入标识符与选择的标识符中的一个相匹配,则数据写入器224确定非易失性存储器设备122是选择的子组的部分。

如果在框512中数据写入器224确定非易失性存储器设备122是选择的子组的部分,则方法500前进至框514以将数据写入非易失性存储器设备122。然而,如果在框512中数据写入器224确定非易失性存储器设备122不是选择的子组的部分,则方法500循环回到框502以继续等待另一写入命令。应该理解的是,在示意性实施例中,方法500针对区块中的每个存储器设备122并发地被执行。

现在参考图6,在一些实施例中,数据存储设备100可以并入计算设备600,或者形成计算设备600的部分。计算设备600可以体现为其中可以使用数据存储设备100的任意类型的计算设备。例如,计算设备600可以体现为智能电话、平板计算机、笔记本、膝上型计算机、上网本、UltrabookTM、可穿戴计算设备、一副智能眼镜、头戴式计算设备、蜂窝电话、桌上型计算机、智能设备、个人数字助理、移动互联网设备、服务器、数据存储设备、和/或任意其它计算/通信设备。如图6中示出的,示意性计算设备600包括处理器610、输入/输出(“I/O”)子系统612以及主存储器614。应该认识到的是,在一些实施例中,计算设备600可以包括其它或额外的组件,例如,外围设备620或者在其它实施例中可以包括通常在典型的计算设备(例如,各种输入/输出设备和/或其它组件)中找到的组件。此外,在一些实施例中,示意性组件中的一个或多个可以并入另一组件,或者以其他方式形成另一组件的部分。例如,在一些实施例中,存储器614或者其部分可以并入处理器610。

处理器610可以体现为能够执行本文中描述的功能的任意类型的处理器。例如,处理器610可以体现为单核或多核处理器、数字信号处理器、微控制器、或者其它处理器或处理/控制电路。类似地,存储器614可以体现为能够执行本文中描述的功能的任意类型的易失性或非易失性存储器或者数据存储装置。在操作中,存储器614可以存储在计算设备600的操作期间使用的各种数据和软件,例如,操作系统、应用、程序、库以及驱动。存储器614经由I/O子系统612通信地耦合至处理器610,该I/O子系统可以体现为用于促进与处理器610、存储器614、以及计算设备600的其它组件的输入/输出操作的电路和/或组件。例如,I/O子系统612可以体现为或者以其他方式包括,存储器控制器集线器、输入/输出控制集线器、固件设备、通信链路(即,点对点式链路、总线链路、导线、电缆、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其它组件和子系统。

如图6中示出的,数据存储设备100可以并入计算设备600的一个或多个其它组件,或者形成计算设备600的一个或多个其它组件的部分。例如,数据存储设备100可以体现为主存储器614,或者以其他方式被包括在主存储器614中。额外地或者替代地,数据存储设备100可以体现为计算设备600的固态驱动器618,或者以其他方式被包括在计算设备600的固态驱动器618中。另外,在一些实施例中,数据存储设备100可以体现为计算设备600的硬盘驱动器616,或者以其他方式被包括在计算设备600的硬盘驱动器616中。当然,在其它实施例中,数据存储设备100可以被包括在计算设备600的其它组件中,或者形成计算设备600的其它组件的部分。

对存储器设备的引用可以适用于不同的存储器类型,并且特别地,适用于具有存储体组架构的任意存储器。存储器设备一般指的是易失性存储器技术。易失性存储器是如果向设备的电力中断则其状态(以及因此存储在易失性存储器上的数据)是不确定的存储器。非易失性存储器指的是即使向设备的电力中断其状态也是确定的存储器。动态易失性存储器需要对存储在设备中的数据进行刷新来维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)、或者诸如同步DRAM(SDRAM)之类的某些变型。本文中描述的存储器子系统可以与许多存储器技术兼容,存储器技术例如为DDR4(DDR版本4,初始规范由JEDEC于2012年9月公布)、DDR4E(JEDEC正在开发中)、LPDDR4(低功率双倍数据速率(LPDDR)版本4,JESD209-4,由JEDEC于2014年8月最初公布)、WIO2(宽I/O 2(WideIO2),JESD229-2,由JEDEC于2014年8月最初公布)、HBM(高带宽存储器DRAM,JESD235,由JEDEC于2013年10月最初公布)、DDR5(DDR版本5,当前由JEDEC正在讨论中)、LPDDR5(当前由JEDEC正在讨论中)、HBM2(HBM版本2,当前由JEDEC正在讨论中)、和/或其它、以及基于这样的规范的衍生和扩展的技术。

除易失性存储器之外或者替代易失性存储器,在一个实施例中,对存储器设备的引用可以指的是即使向设备的电力中断其状态也是确定的非易失性存储器设备。

示例

以下提供了本文中公开的技术的示意性示例。技术的实施例可以包括以下描述的示例的任意一个或多个和其任意组合。

示例1包括一种装置,其包括多个非易失性、在位写入、字节或块可寻址存储器设备,其中,存储器设备被布置在一个或多个区块中,并且每个区块中的存储器设备连接至相同的通信信道;以及数据存储控制器,其用于选择区块中的多个存储器设备的子组而不修改每个存储器设备的标识符,其中,子组多于一个并且少于存储器设备中的所有;并且发出命令以对选择的子组的数据进行操作。

示例2包括示例1的主题,并且其中,发出命令包括发出读取命令以从区块中的多个存储器设备的选择的子组中读取数据。

示例3包括示例1和2中的任意一个的主题,并且其中,发出命令包括发出写入命令以向区块中的多个存储器设备的选择的子组写入数据。

示例4包括示例1-3中的任意一个的主题,并且其中,选择子组包括选择由存储器设备中的九个构成的子组;并且发出命令包括发出读取命令。

示例5包括示例1-4中的任意一个的主题,并且其中,选择子组包括选择由存储器设备中的十个构成的子组;并且发出命令包括发出写入命令。

示例6包括示例1-5中的任意一个的主题,并且其中,数据存储控制器进一步用于选择区块中的存储器设备中的所有;并且发出对区块中的存储器设备中的所有的刷新命令。

示例7包括示例1-6中的任意一个的主题,并且其中,发出刷新命令包括发出刷新读取命令以从区块中的存储器设备中的所有读取数据。

示例8包括示例1-7中的任意一个的主题,并且其中,发出刷新命令包括发出刷新写入命令以向区块中的存储器设备中的所有写入数据。

示例9包括示例1-8中的任意一个的主题,并且其中,选择区块中的多个存储器设备的子组包括将一个或多个存储器设备的设备状态设置为选择状态。

示例10包括示例1-9中的任意一个的主题,并且其中,选择区块中的多个存储器设备的子组包括清除区块中的一个或多个存储器设备的读取命令掩码位。

示例11包括示例1-10中的任意一个的主题,并且其中,选择区块中的多个存储器设备的子组包括清除区块中的一个或多个存储器设备的写入命令掩码位。

示例12包括示例1-11中的任意一个的主题,并且其中,数据存储控制器进一步用于对区块中的一个或多个存储器设备的读取命令掩码位进行设置以由存储器设备中的一个或多个阻塞读取命令。

示例13包括示例1-12中的任意一个的主题,并且其中,数据存储控制器进一步用于对区块中的一个或多个存储器设备的写入命令掩码位进行设置以由存储器设备中的一个或多个阻塞写入命令。

示例14包括示例1-13中的任意一个的主题,并且其中,选择子组包括通过将存储器设备的标识符的选择发送至存储器设备来选择子组的初始存储器设备;并且发出至少一个命令以将存储器设备中的一个或多个的标识符添加至子组。

示例15包括示例1-14中的任意一个的主题,并且其中,数据存储控制器进一步用于发出命令以从子组移除至少一个存储器设备,其中,命令包括子组中的一个或多个存储器设备的标识符。

示例16包括示例1-15中的任意一个的主题,并且其中,数据存储控制器进一步用于在已从子组移除一个或多个存储器设备之后,将第二命令发出至子组。

示例17包括示例1-16中的任意一个的主题,并且其中,向每个存储器设备指派两个标识符,并且选择子组包括向每个存储器设备指派额外标识符而不对每个存储器设备的一个或多个当前标识符进行修改。

示例18包括一种方法,其包括由数据存储控制器选择区块中的多个存储器设备的子组而不修改每个存储器设备的标识符,其中,多个存储器设备是被布置在一个或多个区块中的非易失性、在位写入、字节或块可寻址存储器设备,每个区块中的存储器设备连接至相同的通信信道,并且子组多于一个并且少于存储器设备中的所有;以及由数据存储控制器发出命令以对选择的子组的数据进行操作。

示例19包括示例18的主题,并且其中,发出命令包括由数据存储控制器发出读取命令以从区块中的多个存储器设备的选择的子组中读取数据。

示例20包括示例18和19中的任意一个的主题,并且其中,发出命令包括由数据存储控制器发出写入命令以向区块中的多个存储器设备的选择的子组写入数据。

示例21包括示例18-20中的任意一个的主题,并且其中,选择子组包括由数据存储控制器选择由存储器设备中的九个构成的子组;以及发出命令包括由数据存储控制器发出读取命令。

示例22包括示例18-21中的任意一个的主题,并且其中,选择子组包括由数据存储控制器选择由存储器设备中的十个构成的子组;并且发出命令包括由数据存储控制器发出写入命令。

示例23包括示例18-22中的任意一个的主题,并且进一步包括,由数据存储控制器选择区块中的存储器设备中的所有;并且由数据存储控制器发出对区块中的存储器设备中的所有的刷新命令。

示例24包括示例18-23中的任意一个的主题,并且其中,发出刷新命令包括由数据存储控制器发出刷新读取命令以从区块中的存储器设备中的所有读取数据。

示例25包括示例18-24中的任意一个的主题,并且其中,发出刷新命令包括由数据存储控制器发出刷新写入命令以向区块中的存储器设备中的所有写入数据。

示例26包括示例18-25中的任意一个的主题,并且其中,选择区块中的多个存储器设备的子组包括由数据存储控制器将一个或多个存储器设备的设备状态设置为选择状态。

示例27包括示例18-26中的任意一个的主题,并且其中,选择区块中的多个存储器设备的子组包括由数据存储控制器清除区块中的一个或多个存储器设备的读取命令掩码位。

示例28包括示例18-27中的任意一个的主题,并且其中,选择区块中的多个存储器设备的子组包括由数据存储控制器清除区块中的一个或多个存储器设备的写入命令掩码位。

示例29包括示例18-28中的任意一个的主题,并且进一步包括,由数据存储控制器对区块中的一个或多个存储器设备的读取命令掩码位进行设置以由存储器设备中的一个或多个阻塞读取命令。

示例30包括示例18-29中的任意一个的主题,并且进一步包括,由数据存储控制器对区块中的一个或多个存储器设备的写入命令掩码位进行设置以由存储器设备中的一个或多个阻塞写入命令。

示例31包括示例18-30中的任意一个的主题,并且其中,选择子组包括由数据存储控制器通过将存储器设备的标识符的选择发送至存储器设备,选择子组的初始存储器设备;并且由数据存储控制器发出至少一个命令以将存储器设备中的一个或多个的标识符添加至子组。

示例32包括示例18-31中的任意一个的主题,并且进一步包括,由数据存储控制器发出命令以从子组移除至少一个存储器设备,其中,命令包括子组中的一个或多个存储器设备的标识符。

示例33包括示例18-32中的任意一个的主题,并且进一步包括,在已从子组移除一个或多个存储器设备之后,由数据存储控制器将第二命令发出至子组。

示例34包括示例18-33中的任意一个的主题,并且其中,每个存储器设备被指派两个标识符,并且选择子组包括由数据存储控制器向每个存储器设备指派额外标识符而不对每个存储器设备的一个或多个当前标识符进行修改。

示例35包括一种或多种机器可读存储介质,其包括存储其上的多个指令,该指令在执行时,使得装置执行示例18-34中的任意一个的方法。

示例36包括一种装置,其包括用于选择区块中的多个存储器设备的子组而不修改每个存储器设备的标识符的单元,其中,多个存储器设备是被布置在一个或多个区块中的非易失性、在位写入、字节或块可寻址存储器设备,每个区块中的存储器设备连接至相同的通信信道,并且子组多于一个并且少于存储器设备中的所有;以及用于发出命令以对选择的子组的数据进行操作的单元。

示例37包括示例36的主题,并且其中,用于发出命令的单元包括用于发出读取命令以从区块中的多个存储器设备的选择的子组中读取数据的单元。

示例38包括示例36和37中的任意一个的主题,并且其中,用于发出命令的单元包括用于发出写入命令以向区块中的多个存储器设备的选择的子组写入数据的单元。

示例39包括示例36-38中的任意一个的主题,并且其中,用于选择子组的单元包括用于选择由存储器设备中的九个构成的子组的单元;以及用于发出命令的单元包括用于发出读取命令的单元。

示例40包括示例36-39中的任意一个的主题,并且其中,用于选择子组的单元包括用于选择由存储器设备中的十个构成的子组的单元;以及用于发出命令的单元包括用于发出写入命令的单元。

示例41包括示例36-40中的任意一个的主题,并且进一步包括用于选择区块中的存储器设备中的所有的单元;以及用于发出对区块中的存储器设备中的所有的刷新命令的单元。

示例42包括示例36-41中的任意一个的主题,并且其中,用于发出刷新命令的单元包括用于发出刷新读取命令以从区块中的存储器设备中的所有读取数据的单元。

示例43包括示例36-42中的任意一个的主题,并且其中,用于发出刷新命令的单元包括用于发出刷新写入命令以向区块中的存储器设备中的所有写入数据的单元。

示例44包括示例36-43中的任意一个的主题,并且其中,用于选择区块中的多个存储器设备的子组的单元包括用于将一个或多个存储器设备的设备状态设置为选择状态的单元。

示例45包括示例36-44中的任意一个的主题,并且其中,用于选择区块中的多个存储器设备的子组的单元包括用于清除区块中的一个或多个存储器设备的读取命令掩码位的单元。

示例46包括示例36-45中的任意一个的主题,并且其中,用于选择区块中的多个存储器设备的子组的单元包括用于清除区块中的一个或多个存储器设备的写入命令掩码位的单元。

示例47包括示例36-46中的任意一个的主题,并且进一步包括,用于对区块中的一个或多个存储器设备的读取命令掩码位进行设置以由存储器设备中的一个或多个阻塞读取命令的单元。

示例48包括示例36-47中的任意一个的主题,并且进一步包括,用于对区块中的一个或多个存储器设备的写入命令掩码位进行设置以由存储器设备中的一个或多个阻塞写入命令的单元。

示例49包括示例36-48中的任意一个的主题,并且其中,用于选择子组的单元包括用于通过将存储器设备的标识符的选择发送至存储器设备来选择子组的初始存储器设备的单元;以及用于发出至少一个命令以将存储器设备中的一个或多个的标识符添加至子组的单元。

示例50包括示例36-49中的任意一个的主题,并且进一步包括,用于发出命令以从子组移除至少一个存储器设备的单元,其中,命令包括子组中的一个或多个存储器设备的标识符。

示例51包括示例36-50中的任意一个的主题,并且进一步包括,用于在已从子组移除一个或多个存储器设备之后,将第二命令发出至子组的单元。

示例52包括示例36-51中的任意一个的主题,并且其中,每个存储器设备被指派两个标识符,并且用于选择子组的单元包括用于向每个存储器设备指派额外标识符而不对每个存储器设备的一个或多个当前标识符进行修改的单元。

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