一种IO命令控制的方法及控制系统、固态存储设备与流程

文档序号:15685086发布日期:2018-10-16 20:58阅读:227来源:国知局

本申请涉及固态存储设备领域,具体涉及固态存储设备中应对异常掉电事件。



背景技术:

图1是现有技术的固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同固态存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。

NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。

接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。

控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式;控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令;控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据;在DRAM可存储FTL表和/或缓存的IO命令的数据。

在控制部件104中运行的软件和/或固件(下面统称为“固件”)可被存储在NVM芯片105或另外的固件存储器中。在固态存储设备102上电时,从固件存储器将固件加载到DRAM 110和/或控制部件104内部的存储器中。可选地,通过接口103或调试接口接收并加载固件。

控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。

存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。每个逻辑单元具有逻辑单元号(Logic Unit Number)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ON FI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。

存储介质上通常按页来存储和读取数据。而按块来擦除数据。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。物理页中可以包括多个数据帧(data frame),数据帧具有指定的尺寸,例如4096或4416字节。

在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。

存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。

FTL表包括多个FTL表条目(或称表项)。在一个实施例中,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一个例子中,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一个实施例中,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一个实施例中,FTL表中记录逻辑块地址与物理块地址的映射关系,和/或逻辑页地址与物理页地址的映射关系。

在处理来自主机的读命令时,固态存储设备利用读命令中携带的逻辑地址从FTL表中获得对应的物理地址,并依据物理地址向NVM芯片发出读请求,并接收NVM芯片响应于读请求输出的数据。在处理来自主机的写命令时,固态存储设备为写命令分配物理地址,在FTL表中记录写命令的逻辑地址与分配的物理地址的对应关系,并依据分配的物理地址向NVM芯片发出写请求。

固态存储设备中包括多个NVM芯片。每个NVM芯片包括一个或多个管芯(DIE)或逻辑单元(LUN,Logic UNit)。管芯或逻辑单元之间可以并行响应读写操作。在同一管芯或逻辑单元上的多个读、写或擦除操作顺序执行。

一些固态存储设备中还提供备用电源,当发生意外断电时,由备用电源向存储设备提供临时的电能,用于备份元数据以及处理尚未完成的命令。备用电源包括超级电容、铝电容、钽聚合物电容、锂电池等。



技术实现要素:

现有的固态存储设备的写命令处理带宽受限于闪存通道数量与备用电源电量,需要以有限的带宽处理多种IO命令,并获得良好的性能、用户体验或服务质量。在掉电事件发生时,固态存储设备上存在已经发出的命令,需要确保这些已经发出的命令在掉电后由备用电源供电的时间内被写入NVM芯片,因而固态存储设备上已被启动但未执行完成的IO命令数量不能过多。固态驱动器中一般包括多个闪存芯片,每个闪存芯片、管芯或LUN串行的处理闪存命令(读、编程、擦除等),在掉电后,还要确保每个闪存芯片上要被处理的闪存命令不能过多。另一方面,固态存储设备又需要高性能,以实现高存储带宽,以及高的IO命令并发处理能力(以IOPS评价,IOPS(IO per Second),每秒处理的IO指令数)。需要在高性能的同时保证掉电后的可靠性。

根据本申请的第一方面,提供了根据本申请的第一方面的第一IO命令控制的方法,该方法包括:依据备用电源能够为NVM芯片提供的能量,确定是否可提交待处理的NVM芯片命令。

根据本申请的第一方面的第一IO命令控制的方法,提供了根据本申请第一方面的第二IO命令控制的方法,若需要为待处理的NVM芯片命令分配页条带,执行所述依据备用电源能够为NVM芯片提供的能量,确定是否可提交待处理的NVM芯片命令;以及响应于可提交待处理的NVM芯片命令,分配页条带。

根据本申请的第一方面的第一或第二IO命令控制的方法,提供了根据本申请的第一方面的第三IO命令控制的方法,若有可用的页条带,向可用的页条带提交待处理的NVM芯片命令。

根据本申请的第一方面的第一或第二IO命令控制的方法,提供了根据本申请的第一方面的第四IO命令控制的方法,为每个NVM芯片、管芯或逻辑单元提供命令队列,以容纳待处理的NVM芯片命令。

根据本申请的第一方面的第一或第二IO命令控制的方法,提供了根据本申请的第一方面的第五IO命令控制的方法,为每个NVM芯片缓存待处理的NVM芯片命令,并根据待处理的NVM芯片命令生成NVM芯片命令发送给NVM芯片。

根据本申请的第一方面的第五IO命令控制的方法,提供了根据本申请的第一方面的第六IO命令控制的方法,为访问不同类型物理页的待处理的NVM芯片命令,指定依赖于备用电源电量的资源额度的不同数量。

根据本申请的第一至第六IO命令控制的方法之一,提供了根据本申请的第一方面的第七IO命令控制的方法,依据待处理的NVM芯片命令访问物理页的类型,申请依赖于备用电源电量的资源额度;以及响应于资源额度申请成功,提交待处理的NVM芯片命令。

根据本申请的第一方面的第七IO命令控制的方法,提供了根据本申请的第一方面的第八IO命令控制的方法,若待处理的NVM芯片命令访问SLC类型存储单元的物理页,申请第一数量的依赖于备用电源电量的资源额度;若待处理的NVM芯片命令访问MLC类型存储单元的第一页,申请第二数量的依赖于备用电源电量的资源额度;以及若待处理的NVM芯片命令访问MLC类型的第二页,无需申请依赖于备用电源电量的资源额度。

根据本申请的第一方面的第八IO命令控制的方法,提供了根据本申请的第一方面的第九IO命令控制的方法,第二数量大于第一数量。

根据本申请的第一方面的第八或第九IO命令控制的方法,提供了根据本申请的第一方面的第十IO命令控制的方法,第二数量是第一数量的二倍。

根据本申请的第一方面的第八至第十IO命令控制的方法之一,提供了根据本申请的第一方面的第十一IO命令控制的方法,第一页与第二页属于相同的字线。

根据本申请的第一方面的第八至第十一IO命令控制的方法之一,提供了根据本申请的第一方面的第十二IO命令控制的方法,第一页是MLC LSB页,第二页是MLC MSB页。

根据本申请的第一方面的第八至第十二IO命令控制的方法之一,提供了根据本申请的第一方面的第十三IO命令控制的方法,为访问MLC类型的存储单元的第一页的第一待处理的NVM芯片命令申请资源额度成功后,暂时缓存该第一待处理的NVM芯片命令,待接收到与其对应的访问MLC类型的存储单元的第二页的待处理的NVM芯片命令后,将第一待处理的NVM芯片命令和第二待处理的NVM芯片命令组合,生成NVM芯片命令。

根据本申请的第一方面的第八至第十三IO命令控制的方法之一,提供了根据本申请的第一方面的第十四IO命令控制的方法,在将NVM芯片命令发送给NVM芯片并在NVM芯片上执行完成后,释放为对应的待处理的NVM芯片的命令所申请的资源额度。

根据本申请的第一方面的第八至第十四IO命令控制的方法之一,提供了根据本申请的第一方面的第十五IO命令控制的方法,响应于申请资源额度失败,暂停对待处理的NVM芯片命令的处理。

根据本申请的第一方面的第八至第十五IO命令控制的方法之一,提供了根据本申请的第一方面的第十六IO命令控制的方法,响应于申请资源额度失败,将该处理的NVM芯片命令放入等待队列。

根据本申请的第一方面的第八至第十六IO命令控制的方法之一,提供了根据本申请的第一方面的第十七IO命令控制的方法,若可用的资源额度的数量,不小于所申请的资源额度数量,则申请资源额度成功。

根据本申请的第一方面的第八至第十七IO命令控制的方法之一,提供了根据本申请的第一方面的第十八IO命令控制的方法,申请资源额度成功后,将可用的资源额度的数量减去所申请的资源额度数量。

根据本申请的第一方面的第八至第十八IO命令控制的方法之一,提供了根据本申请的第一方面的第十九IO命令控制的方法,若可用的资源额度的数量,小于所申请的资源额度数量,则申请资源额度失败。

根据本申请的第一方面的第八至第十九IO命令控制的方法之一,提供了根据本申请的第一方面的第二十IO命令控制的方法,响应于释放资源额度,将可用的资源额度数量加上所释放的资源额度数量。

根据本申请的第一方面的第八至第二十IO命令控制的方法之一,提供了根据本申请的第一方面的第二十一IO命令控制的方法,响应于对应于同一主机命令的所有待处理的NVM芯片命令都被提交,向主机发送确认消息,以指示主机命令执行完成。

根据本申请的第一方面的第七IO命令控制的方法,提供了根据本申请的第一方面的第二十二IO命令控制的方法,若待处理的NVM芯片命令访问TLC类型存储单元的第一页,申请第一数量的依赖于备用电源电量的额度;若待处理的NVM芯片命令访问TLC类型存储单元的第二页,申请第二数量的依赖于备用电源电量的额度;以及若待处理的NVM芯片命令访问TLC类型存储单元的第三页,无需申请依赖于备用电源电量的额度。

根据本申请的第一方面的第二十二IO命令控制的方法,提供了根据本申请的第一方面的第二十三IO命令控制的方法,第二数量大于第一数量。

根据本申请的第一方面的第二十二或第二十三IO命令控制的方法,提供了根据本申请的第一方面的第二十四IO命令控制的方法,第二数量是第一数量的二倍。

根据本申请的第一方面的第二十二至第二十四IO命令控制的方法之一,提供了根据本申请的第一方面的第二十五IO命令控制的方法,第一页与第二页属于相同的字线。

根据本申请的第一方面的第二十二至第二十五IO命令控制的方法之一,提供了根据本申请的第一方面的第二十六IO命令控制的方法,第一页是TLC LSB页,第二页是TLC CSB页,第三页是TLC MSB页。

根据本申请的第一方面的第七IO命令控制的方法,提供了根据本申请的第一方面的第二十七IO命令控制的方法,若待处理的NVM芯片命令访问TLC类型存储单元的第一页,申请第二数量的依赖于备用电源电量的额度;若待处理的NVM芯片命令访问TLC类型存储单元的第二页,无需申请依赖于备用电源电量的额度;以及若待处理的NVM芯片命令访问TLC类型存储单元的第三页,申请第一数量的依赖于备用电源电量的额度。

根据本申请的第一方面的第二十七IO命令控制的方法,提供了根据本申请的第一方面的第二十八IO命令控制的方法,第二数量大于第一数量。

根据本申请的第一方面的第二十七或第二十八IO命令控制的方法,提供了根据本申请的第一方面的第二十四IO命令控制的方法,第二数量是第一数量的二倍。

根据本申请的第一方面的第二十七至第二十九IO命令控制的方法之一,提供了根据本申请的第一方面的第三十IO命令控制的方法,第一页、第二页与第三页属于相同的字线。

根据本申请的第一方面的第二十七至第三十IO命令控制的方法之一,提供了根据本申请的第一方面的第三十一IO命令控制的方法,第一页是TLC LSB页,第二页是TLC CSB页,第三页是TLC MSB页。

根据本申请的第一方面的第二十七至第三十一IO命令控制的方法之一,提供了根据本申请的第一方面的第三十二IO命令控制的方法,为访问TLC类型的存储单元的第一页的第一待处理的NVM芯片命令申请资源额度成功后,暂时缓存该第一待处理的NVM芯片命令,待接收到与其对应的访问TLC类型的存储单元的第二页的第二待处理的NVM芯片命令后,将第一待处理的NVM芯片命令和第二待处理的NVM芯片命令组合,生成NVM芯片命令。

根据本申请的第一方面的第二十七至第三十二IO命令控制的方法之一,提供了根据本申请的第一方面的第三十三IO命令控制的方法,为访问TLC类型的存储单元的第三页的第三待处理的NVM芯片命令申请资源额度成功后,生成NVM芯片命令。

根据本申请的第一方面的第七IO命令控制的方法,提供了根据本申请的第一方面的第三十四IO命令控制的方法,若待处理的NVM芯片命令访问TLC类型存储单元的第一页,申请第三数量的依赖于备用电源电量的额度;若待处理的NVM芯片命令访问TLC类型存储单元的第二页,无需申请依赖于备用电源电量的额度;以及若待处理的NVM芯片命令访问TLC类型存储单元的第三页,无需申请依赖于备用电源电量的额度。

根据本申请的第一方面的第三十四IO命令控制的方法,提供了根据本申请的第一方面的第三十五IO命令控制的方法,第三数量大于第二数量。

根据本申请的第一方面的第三十四或第三十五IO命令控制的方法,提供了根据本申请的第一方面的第三十六IO命令控制的方法,所述第一页、第二页与第三页属于相同的字线。

根据本申请的第一方面的第三十四至第三十六IO命令控制的方法之一,提供了根据本申请的第一方面的第三十七IO命令控制的方法,第一页是TLC LSB页,第二页是TLC CSB页,第三页是TLC MSB页。

根据本申请的第一方面的第三十四至第三十七IO命令控制的方法之一,提供了根据本申请的第一方面的第三十八IO命令控制的方法,为访问TLC类型的存储单元的第一页的第一待处理的NVM芯片命令申请资源额度成功后,暂时缓存该第一待处理的NVM芯片命令,待接收到与其对应的访问TLC类型的存储单元的第二页的第二待处理的NVM芯片命令以及访问TLC类型的存储单元的第三页的第三待处理的NVM芯片命令后,将第一待处理的NVM芯片命令、第二待处理的NVM芯片命令和第三待处理的NVM芯片命令组合,生成NVM芯片命令。

根据本申请的第一方面的第七IO命令控制的方法,提供了根据本申请的第一方面的第三十九IO命令控制的方法,若待处理的NVM芯片命令访问TLC类型存储单元的第一页,申请第一数量的依赖于备用电源电量的额度;若待处理的NVM芯片命令访问TLC类型存储单元的第二页,申请第二数量的依赖于备用电源电量的额度;以及若待处理的NVM芯片命令访问TLC类型存储单元的第三页,无需申请依赖于备用电源电量的额度。

根据本申请的第一方面的第三十九IO命令控制的方法,提供了根据本申请的第一方面的第四十IO命令控制的方法,第二数量大于第一数量。

根据本申请的第一方面的第四十IO命令控制的方法,提供了根据本申请的第一方面的第四十一IO命令控制的方法,第二数量是第一数量的二倍。

根据本申请的第一方面的第三十九至第四十一IO命令控制的方法之一,提供了根据本申请的第一方面的第四十二IO命令控制的方法,第一页、第二页与第三页属于相同的字线。

根据本申请的第一方面的第三十九至第四十二IO命令控制的方法之一,提供了根据本申请的第一方面的第四十三IO命令控制的方法,第一页是TLC LSB页,第二页是TLC CSB页,第三页是TLC MSB页。

根据本申请的第一方面的第三十九至第四十三IO命令控制的方法之一,提供了根据本申请的第一方面的第四十四IO命令控制的方法,为访问TLC类型的存储单元的第二页的第二待处理的NVM芯片命令申请资源额度成功后,暂时缓存该第二待处理的NVM芯片命令,待接收到与其对应的访问TLC类型的存储单元的第三页的第三待处理的NVM芯片命令后,将第二待处理的NVM芯片命令和第三待处理的NVM芯片命令组合,生成NVM芯片命令。

根据本申请的第一方面的第三十九至第四十四IO命令控制的方法之一,提供了根据本申请的第一方面的第四十五IO命令控制的方法,为访问TLC类型的存储单元的第一页的第一待处理的NVM芯片命令申请资源额度成功后,生成NVM芯片命令。

根据本申请的第一方面的第六至第四十五IO命令控制的方法之一,提供了根据本申请的第一方面的第四十六IO命令控制的方法,若待处理的NVM芯片命令是读命令,申请第四数量的依赖于备用电源电量的额度。

根据本申请的第一方面的第四十六IO命令控制的方法,提供了根据本申请的第一方面的第四十七IO命令控制的方法,第四数量小于第一数量。

根据本申请的第一方面的第六至第四十七IO命令控制的方法之一,提供了根据本申请的第一方面的第四十八IO命令控制的方法,仅在为待处理的NVM芯片命令申请的资源额度成功后,才发起从主机到固态存储设备的同待处理的NVM芯片命令对应的数据传输。

根据本申请的第一方面的第六至第四十八IO命令控制的方法之一,提供了根据本申请的第一方面的第四十九IO命令控制的方法,响应于掉电事件发生,取消已提交的指示擦除操作的待处理的NVM芯片命令。

根据本申请的第二方面,提供了根据本申请的第二方面的第一固态存储设备,包括控制部件、NVM芯片与存储器,控制部件分别耦合到NVM芯片与存储器,在控制部件中包括多个CPU,所述CPU用于执行根据本申请的第一方面的第一至第四十九之一所述的IO命令控制的方法。

根据本申请的第三方面,提供了根据本申请的第三方面的第一IO命令控制系统,包括备用电源处理模块,依据备用电源能够为每个NVM芯片提供的能量,确定是否可提交待处理的NVM芯片命令。

根据本申请的第四方面,提供一种包括程序代码的程序,当被载入固态存储设备并在固态存储设备上执行时,所述程序代码使所述固态存储设备执行根据本申请的第一方面的方法。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是现有技术的固态存储设备的框图;

图2为本申请实施例的命令处理方法的流程图;

图3为本申请实施例的大块的结构示意图;以及

图4为本申请实施例的命令处理方法的又一流程图。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了清楚的目的,将主机发送给固态存储设备的命令称为主机命令,而将控制部件104发送给NVM芯片105的命令称为NVM芯片命令。控制部件104处理主机命令过程中,存在多种中间阶段,将在这些中间阶段传递的命令称为中间命令或待处理的NVM芯片命令。主机命令可对应于一个或多个中间命令或待处理的NVM芯片命令,主机命令可对应于一个或多个NVM芯片命令。中间命令指示对物理页的访问。

实施例一

响应于主机命令处理完成,控制部件104向主机发送确认消息。为降低主机感知到的主机命令处理时间,在主机命令处理完成前,向主机发送确认消息,以及固态存储设备需确保对应于已向发送确认消息的主机命令被真实地完成(例如,将主机命令对应的数据写入NVM芯片105)。

NVM芯片命令在每个NVM芯片105(或管芯或LUN)被串行执行。为确保在固态存储设备发生掉电时,备用电源供电期间,每个NVM芯片105上的待处理NVM芯片命令都能被处理完成,需要控制任意时刻在每个NVM芯片105上的待处理的NVM芯片命令的数量。

NVM芯片105的物理页包括不同类型,例如,SLC(Single Level Cell)页、MLC(Multiple Level Cell)MSB(Most Significant Bit)页、MLC LSB(Least Significant Bit)页、TLC(Triple Level Cell)MSB(Most Significant Bit)页、TLC(Triple Level Cell)CSB(Central Significant Bit)页、TLC LSB(Least Significant Bit)页。MLC MSB页的每个比特存储在MLC存储单元的最高位,MLC LSB页的每个比特存储在MLC存储单元的最低位,TLC MSB页的每个比特存储在TLC存储单元的最高位,TLC CSB页的每个比特存储在TLC存储单元的中间位,TLC LSB页的每个比特存储在TLC存储单元的最低位。向不同类型的物理页写入数据需要的时间或能量不同,一些NVM芯片105还将同一存储单元上的两个或更多物理页的写入操作组合在一起,并导致这样的写入操作需要更长的时间或能量。在固态存储设备中,依据物理地址可识别所访问的NVM芯片105的物理页的类型。

作为一个例子,NVM芯片105的SLC页可以单独被写入数据,对应于相同MLC存储单元的MLC MSB页与MLC LSB页需要被同时写入,而对应于相同TLC存储单元的三个物理页,需要按照一个SLC页与两种MLC页的组合的方式写入,即TLC存储单元的三个物理页中,其一(例如,LSB页)可被单独写入,而另外两个物理页(例如,CSB页与MSB页)需要被同时写入。两个物理页被同时写入,意味着向这两个物理页写入数据的NVM芯片105之间,不可以插入其他命令。

为控制任意时刻在每个NVM芯片105上的待处理的NVM芯片命令的数量,并能够尽早向主机发送指示主机命令操作完成的确认消息,依据备用电源能够为每个NVM芯片105提供的能量,确定是否可为NVM芯片105安排待处理的NVM芯片命令。可选地,若对应于主机命令的所有NVM芯片命令都被安排给NVM芯片105,可向主机发送确认消息以指示主机命令操作完成。

有多种方式实施向NVM芯片105安排待处理的NVM芯片命令。例如,为每个NVM芯片105(或者管芯或LUN)提供命令队列,以容纳待处理的NVM芯片命令。作为另一个例子,控制部件104提供介质接口控制器,介质接口控制器接收中间命令,为每个NVM芯片105缓存待处理的NVM芯片命令,并向NVM芯片105发出NVM芯片命令。介质接口控制器耦合到NVM芯片105。介质接口控制器有一个或多个,每个接口控制器耦合到各自的NVM芯片105。

图2为本申请实施例的命令处理方法的流程图。如图2所示,为安排待处理的NVM芯片命令,为中间命令申请分配给各个NVM芯片的依赖于备用电源电量的资源额度(201)。

访问不同类型的NVM芯片105的物理页的中间命令,所需要的资源数量不同。例如,为每个NVM芯片105分配的资源额度数量为30,处理读物理页的中间命令要申请的资源额度数量为5,处理写SLC页的中间命令要申请的资源额度数量为10,处理写MLC LSB页的中间命令要申请的资源额度的数量是20,而在处理写MLC MSB页的中间命令时,无须申请额度。由于MLC LSB页与MLC MSB页需要被组合写入,因而仅在处理写MLC LSB页的中间命令时申请资源额度,而在处理写与其对应的写MLC MSB页的中间命令时无须申请资源额度,而是使用为处理写MLC LSB页的中间命令所申请的资源额度。

对于中间命令,识别其访问的物理页类型。若中间命令访问SLC类型物理页(202),依据访问SLC类型物理页所需的资源数量申请第一数量的资源额度(204)。仅当资源额度申请成功后(206),才生成并安排待处理的NVM芯片命令(208)。若中间命令访问MLC LSB类型物理页(203),依据访问MLC LSB类型物理页所需的资源数量申请第二数量的资源额度(205)。若中间命令访问MLC MSB类型物理页(203),无须申请资源额度。

可选地,在为写MLC LSB页的中间命令申请额度成功(206)后,暂时缓存该中间命令,待接收到与其对应的写MLC MSB页的中间命令后,将两条中间命令组合、生成并安排待处理的NVM芯片命令(208)。

仅在成功申请到资源额度后,才继续对中间命令的处理,例如,生成并安排待处理的NVM芯片命令(208),将NVM芯片命令发送给NVM芯片105并在NVM芯片105上执行(209),向主机发送确认消息(2010),和/或释放为对应的中间命令所申请的资源额度(2011)。可选地,在将NVM芯片命令发送给NVM芯片105并在NVM芯片105上执行完成后,才释放为对应的中间命令所申请的资源。例如,在写SLC页的NVM芯片命令执行完成后,释放的资源额度数量为10;在写MLC LSB与MLC MSB的NVM芯片命令执行完成后,释放的资源额度数量为20。

若申请资源额度失败,暂停对该中间命令的处理(207)。例如,将该中间命令放入等待队列,并在出现足够的资源额度后,再从等待队列获取中间命令并再次处理。

申请资源额度,作为举例,若为NVM芯片105分配的资源额度数量,不小于所申请的资源额度数量,则申请资源额度成功,以及将为NVM芯片105分配的资源额度数量,减去所申请的资源额度。若为NVM芯片105分配的资源额度数量,小于所申请的资源额度数量,则申请资源额度失败,以及保持为NVM芯片105分配的资源额度数量不变。

释放资源额度(2011),作为举例,将为NVM芯片105分配的资源额度数量,加上所释放的资源额度。

已被安排的待处理的NVM芯片命令,被发送给NVM芯片105以在NVM芯片105上执行NVM芯片命令(209)。以及可选地,当对应于同一主机命令的所有中间命令都被处理并安排了对应的待处理的NVM芯片命令(208),向主机发送确认消息(2010),以指示主机命令执行完成。

可选地,若还包括写TLC页的中间命令,将写TLC LSB页的中间命令按照写SLC页的中间命令进行处理,将写TLC CSB页的中间命令按照写MLC LSB页的中间命令进行处理,以及将写TLC MSB页的中间命令按照写MLC MSB页的中间命令进行处理。

依然可选地,若还包括写TLC页的中间命令,将写TLC LSB页的中间命令视作写MLC LSB页的中间命令进行处理,将写TLC CSB页的中间命令视作写MLC MSB页的中间命令进行处理,以及将写TLC MSB页的中间命令视作写SLC页的中间命令进行处理。

依然可选地,若还包括写TLC页的中间命令,处理写TLC LSB页的中间命令要申请的资源额度的数量是30,而在处理写TLC CSB页或TLC MSB页的中间命令时,无须申请额度。在收到写TLC LSB页的中间命令时,为其申请第三数量的资源额度(例如30),并缓存该写TLC LSB页的中间命令,在收到写TLC CSB页的中间命令时,无须申请额度,而继续缓存该写TLC CSB页的中间命令,在收到写TLC MSB页的中间命令时,无须申请额度,并将该写TLC MSB页的中间命令连同所缓存的写TLC LSB页的中间命令与写TLC CSB页的中间命令组合、生成并安排待处理的NVM芯片命令(208)。

若获取的是中间命令是读命令,也仅在为其申请第四数量(例如,5)的资源额度成功后,才为该中间命令生成并安排待处理的NVM芯片命令(208)。

依然可选地,对于写物理页的中间命令,在申请资源额度成功后,才发起从主机到固态存储设备的DMA传输,以获取要写入的数据。

由于垃圾回收或其他操作,可安排指示擦除操作的待处理的NVM芯片命令,或向NVM芯片105发出了指示擦除操作的NVM芯片命令。响应于掉电事件发生,取消已安排的指示擦除操作的待处理的NVM芯片命令,若已向NVM芯片105发出了指示擦除操作的NVM芯片命令,且该指示擦除操作的NVM芯片命令的执行尚未完成,则向NVM芯片105发出擦除取消命令或擦除暂停命令,并再向NVM芯片105发出已安排的其他待处理的NVM芯片命令。

依然可选地,为固态存储设备中的每个NVM芯片105,在处理访问NVM芯片的中间命令时,实施图2所示的命令处理方法。例如,为每个NVM芯片105维护资源额度,各个NVM芯片的资源额度彼此无关。

实施例二

图3为本申请实施例的大块的结构示意图。如图3所示,大块包括来自多个逻辑单元的每个的物理块。优选的,每个逻辑单元(或者管芯或NVM芯片105)为大块提供一个物理块。作为举例,在每16个逻辑单元(LUN)上构造大块。每个大块包括16个物理块,来自16个逻辑单元(LUN)的每一个。在图2的例子中,大块0包括来自16个逻辑单元(LUN)的每个的物理块0,而大块1包括来自每个逻辑单元(LUN)的物理块1。也可以有多种其他方式来构造大块,例如,每个逻辑单元为大块提供2个或更多数量的物理块。将为大块提供物理块的所有逻辑单元称为逻辑单元组。

作为一种可选的方式,在大块中构造页条带,每个逻辑单元(LUN)内相同物理地址的物理页构成了“页条带”。图3中,物理页0-0、物理页0-1……与物理页0-x构成了页条带0,其中物理页0-0、物理页0-1……物理页0-14用于存储用户数据,而物理页0-15用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,图3中,物理页2-0、物理页2-1……与物理页2-x构成了页条带2。可选地,用于存储校验数据的物理页可以位于页条带中的任意位置。依据组成页条带的物理页的类型,页条带有不同的类型,例如,SLC类型、MLC LSB类型、MLC MSB类型、TLC LSB类型、TLC、CSB类型和/或TLC MSB类型。

为向页条带写入数据,固态存储设备的控制部件104(参看图1)提供校验数据计算单元。以利用异或操作计算校验数据为例,对于包括N+1个物理页的页条带,对N个物理页的用户数据计算异或(例如,(P0-0)XOR(P0-1)XOR(P0-2)XOR…XOR(P0-14)),并将计算结果写入为页条带存储校验数据的物理页(例如P0-X)。可选地,在控制部件104中提供多个校验数据计算单元(例如,M个),以同时向M个页条带写入数据。

为逻辑单元组维护依赖于备用电源电量的资源额度。页条带所包括的多个页具有相同的类型。因而访问页条带上的各个页所需的能量或时间基本一致。进而,使用页条带时,依据页条带的物理页的类型申请不同数量的资源额度。

为处理写入数据的中间命令,需为中间命令分配页条带,并从页条带中获取可用的物理页,以生成待处理的NVM芯片命令。页条带包括多个物理页,在分配了页条带后,对于后续的写入数据的中间命令,从所分配的页条带中获取可用的物理页,直到页条带的可用物理页耗尽,再为中间命令分配新的页条带。

在分配页条带时,依据页条带的物理页的类型申请不同数量的资源额度。并且仅在资源额度申请成功时,页条带的分配才成功。

图4为本申请实施例的命令处理方法的又一流程图。如图4所示,响应于收到待处理的中间命令(401),若存在已分配的页条带,且已分配的页条带中有可用的物理页(402),则依据中间命令生成待处理的NVM芯片命令,并将待处理的NVM芯片命令安排给NVM芯片(4010)。

若不存在可用的页条带(例如,已分配的页条带上可用的物理页已耗尽)(402),则为中间命令分配页条带。为分配页条带,需要根据中间命令所访问的页条带的类型(或组成页条带的物理页类型)申请资源额度。

作为举例,在需要分配页条带时,处理写SLC页的中间命令要申请的资源额度数量为10,处理写MLC LSB页的中间命令要申请的资源额度的数量是20,而在处理写MLC MSB页的中间命令时,无须申请额度。由于MLC LSB页与MLC MSB页需要被组合写入,因而仅在处理写MLC LSB页的中间命令时申请资源额度,而在处理写与其对应的写MLC MSB页的中间命令时无须申请资源额度,而是使用为处理写MLC LSB页的中间命令而分配页条带时所申请的资源额度。

作为进一步的例子,在需要分配页条带时,将写TLC LSB页的中间命令按照写SLC页的中间命令进行处理(要申请的资源额度数量为10),将写TLC CSB页的中间命令按照写MLC LSB页的中间命令进行处理(要申请的资源额度数量为20),以及将写TLC MSB页的中间命令按照写MLC MSB页的中间命令进行处理(无须申请资源额度)。

作为又一个的例子,在需要分配页条带时,将写TLC LSB页的中间命令视作写MLC LSB页的中间命令进行处理(要申请的资源额度数量为20),将写TLC CSB页的中间命令视作写MLC MSB页的中间命令进行处理(无须申请资源额度),以及将写TLC MSB页的中间命令视作写SLC页的中间命令进行处理(要申请的资源额度数量为10)。

作为又一个的例子,在需要分配页条带时,处理写TLC LSB页的中间命令要申请的资源额度的数量是30,而在处理写TLC CSB页或TLC MSB页的中间命令时,无须申请额度。在收到写TLC LSB页的中间命令时,为其申请数量为30的资源额度,并缓存该写TLC LSB页的中间命令,在收到写TLC CSB页的中间命令时,无须申请额度,而继续缓存该写TLC CSB页的中间命令,在收到写TLC MSB页的中间命令时,无须申请额度,并将该写TLC MSB页的中间命令连同所缓存的写TLC LSB页的中间命令与写TLC CSB页的中间命令组合、生成并安排待处理的NVM芯片命令。

若中间命令是读命令,为每个读命令申请数量为5的资源额度,而不考虑读命令所访问的页条带,在资源额度申请成功后,才为该中间命令生成并安排待处理的NVM芯片命令。

返回参看图4,对于中间命令,识别其访问的页条带类型。若中间命令访问SLC类型页条带(403),依据访问SLC类型页条带所需的资源数量申请第一数量的资源额度(405)。仅当资源额度申请成功后(407),才为中间命令分配页条带(409),并根据分配的页条带生成并安排待处理的NVM芯片命令(4010)。若中间命令访问MLC LSB类型页条带(404),依据访问MLC LSB类型页条带所需的资源数量申请第二数量的资源额度(405)。若中间命令访问MLC MSB类型页条带(404),无须申请资源额度,而使用为与之对应的MLC LSB类型页条带分配的资源额度。

在为写MLC LSB页的中间命令申请额度成功(407)后,为该写MLC LSB页的中间命令分配页条带(409),以及暂时缓存该中间命令,待接收到与其对应的写MLC MSB页的中间命令后,将两条中间命令组合、生成并安排待处理的NVM芯片命令(4010)。

响应于安排待处理的NVM芯片命令(4010),将NVM芯片命令发送给NVM芯片105并在NVM芯片105上执行NVM芯片命令(4011),向主机发送确认消息(4012)。响应于完整的SLC页条带都被写入数据,释放为该页条带所申请的资源(4013),和/或响应于完整的MLC LSB页条带以及与之对应的MLC MSB页条带都被写入数据,释放为该页条带所申请的资源额度(4013)。

若申请资源额度失败,暂停对该中间命令的处理(408)。例如,将该中间命令放入等待队列,并在出现足够的资源额度后,再从等待队列获取中间命令并再次处理。

已被安排的待处理的NVM芯片命令,被发送给NVM芯片105以在NVM芯片105上执行NVM芯片命令(4011)。以及可选地,当对应于同一主机命令的所有中间命令都被处理并安排了对应的待处理的NVM芯片命令(4010),向主机发送确认消息(4012),以指示主机命令执行完成。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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