CN107807788A - 多平面闪存的数据组织方法与装置 - Google Patents

多平面闪存的数据组织方法与装置 Download PDF

Info

Publication number
CN107807788A
CN107807788A CN201610814552.5A CN201610814552A CN107807788A CN 107807788 A CN107807788 A CN 107807788A CN 201610814552 A CN201610814552 A CN 201610814552A CN 107807788 A CN107807788 A CN 107807788A
Authority
CN
China
Prior art keywords
block
logic unit
bulk
physical
band
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610814552.5A
Other languages
English (en)
Other versions
CN107807788B (zh
Inventor
李德领
袁戎
徐凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201610814552.5A priority Critical patent/CN107807788B/zh
Publication of CN107807788A publication Critical patent/CN107807788A/zh
Application granted granted Critical
Publication of CN107807788B publication Critical patent/CN107807788B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了多平面闪存的数据组织方法与装置。固态存储设备在多平面闪存上组织数据。固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块。数据组织方法包括:从N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的一个有效物理块组成第一块条带。

Description

多平面闪存的数据组织方法与装置
技术领域
本发明涉及固态驱动器,特别涉及在固态驱动器中将多平面闪存组织为提供容错机制的条带的方法与装置。
背景技术
以固态存储设备(Solid Storage Device,SSD)为例,如图1所示,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial AdvancedTechnology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(IntegratedDrive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVMExpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM(非易失存储器,Non-Volatile Memory)芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random AccessMemory,磁阻存储器)、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 SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO命令。控制部件104还耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为闪存通道控制器)。闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等公知的接口协议或标准。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,Logic UnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
在固态存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。FTL表的每个表项所对应的地址空间可以与非易失存储介质的物理页大小相同或不同。
NVM中存储的数据会在一定程度上出现损坏,为克服此类问题,通常在访问NVM时,通过错误校正码技术对NVM上存储的数据进行保护。常用的错误校正码包括BCH码(由Hocquenghem、Bose和Chandhari提出的能纠正多个随机错误的循环码)、LDPC码(LowDensity Parity Check Code,低密度奇偶校验码)、RS码(Reed-Solomon,里德-索罗门码)等。
为提升存储容量,固态存储设备中包括多个NVM芯片,而NVM有一定的失效率。为提升固态存储设备的可靠性,按跨多个逻辑单元(LUN)的“块”条带来组织数据。
参看图2,示出了块条带的示意图。图2中,固态存储设备中,在每16个逻辑单元(LUN0、LUN1、……LUN15)上构造块条带,每个逻辑单元内相同物理地址的物理块构成了“块条带”。
图2中,LUN0-LUN15中地址为0的块B0构成了块条带0,其中LUN0到LUN14的物理块B0用于存储用户数据,而LUN15的物理块B0用于存储根据块条带内的用户数据计算得到的校验数据。NVM的物理块包括多个页,块条带中具有相同地址的物理页构成页条带,为每个页条带计算校验数据。例如,在LUN15的物理块B0的每个物理页存储了该物理页所在的页条带的所有用户数据计算得到的校验数据。
类似地,图2中,LUN0-LUN15中地址为2的物理块B2块条带2。
可选地,用于存储校验数据的物理块可以位于块条带中的任意LUN中。
在图2的例子中,利用块条带中的校验数据,在块条带的1个物理页的数据损坏的情况下,能够从该物理页所在的页条带的其他页中恢复损坏页的数据。
发明内容
根据本发明的第一方面,提供了根据本发明第一方面的固态存储设备的块条带构造方法,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述方法包括:从所述N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的一个有效物理块组成第一块条带,其中,N、M是正整数。
根据本发明的第一方面的固态存储设备的块条带构造方法,提供了根据本发明第一方面的第二固态存储设备的块条带构造方法,还包括:从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的M个物理块中的有效物理块中尚未分配给块条带的一个有效物理块,组成第二块条带。
根据本发明的第二方面,提供了根据本发明第二方面的固态存储设备的块条带构造方法,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块;所述方法包括:根据每个逻辑单元的平面编号对每个逻辑单元中构成第一大块的M个物理块进行排序;选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块组成第一块条带。
根据本发明的第二方面的固态存储设备的块条带构造方法,提供了根据本发明第二方面的第二固态存储设备的块条带构造方法,还包括:再次选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块,组成第二块条带。
根据本发明的第二方面的固态存储设备的块条带构造方法,提供了根据本发明第二方面的第三固态存储设备的块条带构造方法,还包括:根据坏块表确定为第一大块提供有效物理块最多的一个或多个逻辑单元;从所述一个或多个逻辑单元中选择第一逻辑单元,其中,所述第一逻辑单元的物理块存储所述第一大块的所有块条带的校验数据。
根据本发明的第二方面的固态存储设备的块条带构造方法,提供了根据本发明第二方面的第四固态存储设备的块条带构造方法,还包括:根据坏块表确定为第二大块提供有效物理块最多的第二多个逻辑单元;从所述第二多个逻辑单元中选择第二逻辑单元,使得,所述第二逻辑单元的物理块存储所述第二大块的所有块条带的校验数据,以及所述第二逻辑单元不同于所述第一逻辑单元。
根据本发明的第二方面的固态存储设备的块条带构造方法,提供了根据本发明第二方面的第五固态存储设备的块条带构造方法,还包括:根据坏块表确定为第二大块提供有效物理块最多的第二逻辑单元,使得,所述第二逻辑单元的物理块存储所述第二大块的所有块条带的校验数据。
根据本发明的第三方面,提供了根据本发明第三方面的固态存储设备的块条带构造方法,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述方法包括:根据坏块表确定为第一大块提供有效物理块最多的一个或多个逻辑单元;从所述一个或多个逻辑单元中选择第一逻辑单元,其中,所述第一逻辑单元为所述第一大块提供的有效物理块用于存储块条带的校验数据;从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的有效物理块之一组成第一块条带。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第二固态存储设备的块条带构造方法,还包括:从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的有效物理块中尚未分配给块条带的一个有效物理块,组成第二块条带。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第三固态存储设备的块条带构造方法,所述从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的有效物理块之一组成第一块条带,包括:根据每个逻辑单元的平面编号对每个逻辑单元中构成所述第一大块的M个物理块进行排序;选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块组成第一块条带。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第四固态存储设备的块条带构造方法,还包括:选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块,组成第二块条带。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第五固态存储设备的块条带构造方法,其中,所述第一逻辑单元的物理块存储所述第一大块的所有块条带的校验数据。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第六固态存储设备的块条带构造方法,其中,从所述N个逻辑单元的每个逻辑单元中选择选择的有效物理块的数量若大于阈值;则将选择的有效物理块组成块条带。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第七固态存储设备的块条带构造方法,当根据坏块表确定为大块提供有效物理块最多的逻辑单元为多个时,存储不同的大块的校验数据的逻辑单元是为大块提供有效物理块最多的多个逻辑单元中不同的逻辑单元。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第八固态存储设备的块条带构造方法,还包括:根据坏块表确定为第二大块提供有效物理块最多的第二多个逻辑单元;从所述第二多个逻辑单元中选择第二逻辑单元,使得,所述第二逻辑单元为所述第二大块提供的有效物理块用于存储块条带的校验数据,以及所述第二逻辑单元不同于所述第一逻辑单元。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第九固态存储设备的块条带构造方法,还包括:根据坏块表确定为第二大块提供有效物理块最多的第二逻辑单元,使得,所述第二逻辑单元为所述第二大块提供的有效物理块用于存储块条带的校验数据。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第十固态存储设备的块条带构造方法,其中,所述第二逻辑单元的物理块存储所述第二大块的所有块条带的校验数据。
根据本发明的第三方面的固态存储设备的块条带构造方法,提供了根据本发明第三方面的第十一固态存储设备的块条带构造方法,还包括:当物理页出现不可纠正错误时,根据物理页所在大块的坏块表,确定出不可纠正错误的物理页所在的块条带;利用不可纠正错误的物理页所在的块条带重构所述出现不可纠正错误的物理页的数据。
根据本发明的第四方面,提供了根据本发明第四方面的固态存储设备,包括控制部件,N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述控制部件执行如第一方面所述的固态存储设备的块条带构造方法。
根据本发明的第五方面,提供了根据本发明第五方面的固态存储设备,包括控制部件,N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述控制部件执行如第二方面所述的固态存储设备的块条带构造方法。
根据本发明的第六方面,提供了根据本发明第六方面的固态存储设备,包括控制部件,N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述控制部件执行如第三方面所述的固态存储设备的块条带构造方法。
根据本发明的第七方面,提供了根据本发明第七方面的固态存储设备的块条带构造装置,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述装置包括:第一构造模块,用于从所述N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的一个有效物理块组成第一块条带。
根据本发明的第八方面,提供了根据本发明第八方面的固态存储设备的块条带构造装置,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述装置包括:排序模块,用于根据每个逻辑单元的平面编号对每个逻辑单元中构成第一大块的M个物理块进行排序;第二构造模块,用于选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块组成第一块条带。
根据本发明的第九方面,提供了根据本发明第九方面的固态存储设备的块条带构造装置,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述装置包括:确定模块,用于根据坏块表确定为第一大块提供有效物理块最多的一个或多个逻辑单元;选择模块,用于从所述一个或多个逻辑单元中选择第一逻辑单元,其中,所述第一逻辑单元为所述第一大块提供的有效物理块用于存储块条带的校验数据;第三构造模块,用于从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的有效物理块之一组成第一块条带。
根据本发明的第十方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明第一方面至第三方面提供的固态存储设备的块条带构造方法。
根据本发明的第十一方面,提供一种包括程序代码的程序,当被载入存储系统并在存储系统上执行时,所述计程序代码使所述存储系统执行根据本发明第一方面至第三方面提供的固态存储设备的块条带构造方法。
本发明的实施例,可以选择块条带所在的多个逻辑单元中在该块条带上具有好块最多的逻辑单元存储校验位,从而可以有效提升故障恢复的成功率。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了根据本发明实施例的存储设备的框图;
图2示出了根据本发明实施例的块条带的示意图;
图3示出了根据本发明又一实施例的块条带的示意图;
图4A示出了大块中一种块条带组织方式的示意图;
图4B示出了大块中另一种块条带组织方式的示意图;
图5A示出了为大块选择用于存储校验数据的逻辑单元的示意图;
图5B是为大块选择校验块所在逻辑单元的方法流程图;
图5C是从带块中构造块条带的方法流程图;
图6A示出了对块条带中存在不可纠正错误的页进行数据重建的示意图;
图6B示出了另一个对块条带中存在不可纠正错误的页进行数据重建的示意图;以及
图7示出了重构物理页的方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在以下描述中,逻辑单元记为LUN。
固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块。
固态存储设备的块条带构造可以通过如下方式实现:从N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的一个有效物理块组成第一块条带。
进一步地,固态存储设备的块条带构造还可以从N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的有效物理块中尚未分配给块条带的一个有效物理块,组成第二块条带。
以包括16个逻辑单元的固态存储设备为例,如图3所示,示出了在每个逻辑单元(LUN)包括多个平面(Plane)的配置下,块条带的示意图。参看图3,在固态存储设备中,在每16个逻辑单元(LUN0、LUN1、……、LUN15)上构造块条带。以LUN2为例,展示了在逻辑单元中包括4个平面(平面0、平面1、平面2与平面3)。一个LUN内的各个平面可以同时进行读写操作,从而提升了NAND闪存操作的并行性。
在图3的例子中,将物理块地址的低2位用于寻址一个平面。作为举例,LUN内的物理块地址有12比特,其中最低2比特用于寻址LUN中的4个平面之一,而高10比特用于寻址物理块。为清楚表达的需要,将物理块的地址的高10比特称为“块地址”,而低2比特称为“平面地址”。从而每个逻辑单元内具有相同“块地址”的物理块构成了“大块”(chunk)。需要指出的是,有时也将连同“平面地址”的12位地址称为“块地址”。此时,各个LUN中的块地址为0、1、2、3的物理块属于同一个块条带。在下面的描述中,为清楚表达的需要,LUN中的每个平面中的物理块的地址从0开始编址。
图3中,LUN0-LUN15中地址为0的块B0构成了大块0,其中LUN0到LUN14的各个平面中的物理块B0用于存储用户数据,而LUN15的4个平面的物理块B0用于存储根据块条带内的用户数据计算得到的校验数据。NVM的物理块包括多个页。大块0包括4个块条带,LUN0到LUN15中,来自相同编号的平面的物理块B0构成了块条带。例如,对于大块0,LUN0到LUN15中,来自平面的15个物理块B0构成了块条带,而来自平面3的15个物理块B0构成另一个块条带。
块条带中具有相同地址的物理页构成页条带,为每个页条带计算校验数据。例如,在LUN15的平面0物理块B0的每个物理页存储了该物理页所在的页条带中的所有用户数据(来自LUN0到LUN14的平面0的物理块B0的对应物理页)计算得到的校验数据。而在LUN15的平面3物理块B0的每个物理页存储了该物理页所在的页条带中的所有用户数据(来自LUN0到LUN14的平面3的物理块B0的对应物理页)计算得到的校验数据。
类似地,图3中,LUN0-LUN15中地址为2的物理块B2构成大块2。
在图3的LUN2中,展示了LUN2中的平面0与平面3。
固态存储设备中有时会存在坏块,并导致构成大块的多个LUN为大块提供的物理块的数量不同。此时在大块中的多个块条带各自可包括不同数量的物理块。
参看图4A,展示了大块中另一种块条带组织方式。在LUN0到LUN4上构造块条带。LUN0到LUN4的每个包括4个平面,分别标识为P0、P1、P2与P3。图4A中的每个方块代表一个物理块,并具有相同的物理块地址(例如物理块100),图4A的所有方块构成了大块100。由阴影标识的物理块是坏块,不能被写入数据。
在大块100中,构造了3个块条带,分别是块条带S0、块条带S1与块条带S2。选择来自LUN0的平面P0的块、LUN1的平面P2的块、LUN2的平面P0的块、LUN3的平面P0的块与LUN4的平面P0的块构成块条带S0,其中来自LUN4的平面P0的块作为校验块,用于存储块条带S0的校验数据。选择来自LUN0的平面P2的块、LUN2的平面P1的块、LUN3的平面P2的块与LUN4的平面P1的块构成块条带S1,其中来自LUN4的平面P1的块作为校验块。选择来自LUN2的平面P2的块、LUN3的平面P3的块与LUN4的平面P2的块构成块条带S2,其中来自LUN4的平面P2的块作为校验块。
为了数据可靠性,应保证在块条带中的各个物理块应来自不同的LUN,且至少包括2个物理块,以冗余地存储数据。在大块100中提供了块条带S0、S1与S2之后,无法再提供更多的块条带。
对于一个大块,使其中的校验块来自同一个LUN(参看图4A,大块100的校验块均来自LUN4)。为了在一个LUN上容纳属于一个大块的多个块条带的校验块,选择构成大块的多个LUN中好块最多(或坏块最少)的LUN来提供校验块,从而使得对于大块中的每个块条带,在所选择的LUN中均能为其提供校验块(用于存储校验数据的物理块)。
还需要指出的,图4A中,来自LUN4的平面P3的块不属于任何块条带。在一些情况下,为了操作的便利性,向来自LUN4的平面P3的块写入填充数据。填充数据可以是随机数据。
参看图4B,展示了大块中另一种块条带组织方式。图4B的所有方块构成了大块101。由阴影标识的物理块是坏块,不能被写入数据。
在大块101中,构造了3个块条带,分别是块条带S0、块条带S1与块条带S2。选择来自LUN0的平面P1的块、LUN1的平面P0的块、LUN2的平面P1的块、LUN3的平面P2的块与LUN4的平面P0的块构成块条带S0。选择来自LUN0的平面P2的块、LUN1的平面P1的块、LUN2的平面P2的块、LUN3的平面P3的块与LUN4的平面P1的块构成块条带S1。选择来自LUN0的平面P3的块、LUN1的平面P2的块与LUN4的平面P2的块构成块条带S2。为大块101选择提供校验块的LUN。由于构成大块101的LUN0、LUN1与LUN4均包括3个好块(在构成大块101的多个LUN中拥有最多的好块数量),LUN0、LUN1与LUN4均可作为提供校验块的LUN。进一步地,考虑到针对大块100已经选择了LUN4提供校验块,为避免校验块来自同一个LUN,排除LUN4,而在LUN0与LUN1中选择一个来提供校验块。可选地,随机选择LUN0与LUN 1之一(或者基于轮转方式),选择LUN0来为大块101提供校验块。从而,LUN0的平面P1的块为块条带S0的校验块,LUN0的平面P2的块为块条带S1的校验块,LUN0的平面P3的块为块条带S2的校验块。
参看图5A,为大块200与大块201选择用于存储校验数据的LUN。例如,在开始使用一个新的大块时,为该大块选择用于存储校验数据的LUN。大块200包括来自LUN0到LUN15的各个平面中具有地址200的物理块。通过坏块表或坏块识别过程识别出具有地址200的物理块中,来自LUN1的平面3的块、来自LUN14的平面3的块是坏块,而其他块都是好块。
从而,由于在LUN0到LUN15的对应于大块200的部分中,除LUN1与LUN14外,都具有4个好块,从而这些LUN都可以用作提供校验块。作为举例,通过轮转或随机方式,选择LUN15来为大块200提供校验块。
还从大块200中构造块条带。从构成大块200的每个LUN中,按平面编号顺序查找各个LUN提供给大块200的第一个好物理块(非坏块),这些选出的物理块构成了大块200的第一个块条带。对于余下的物理块,从构成大块200的每个LUN中,按平面编号顺序查找各个LUN提供给大块200的其余物理块中的第一个好物理块,选出这些物理块构成大块200的又一个块条带。直到从大块200中无法再找到满足构造块条带要求的物理块。在一个例子中,构造块条带的要求包括,构成一个块条带的任意两个物理块不会来自相同的LUN,块条带的物理块数量满足指定的数据冗余要求。在图5A的例子中,每个LUN包括4个平面,那么一个大块的块条带数量最大为4。
为大块201选择用于存储校验数据的LUN。大块201包括来自LUN0到LUN15的各个平面中具有地址201的物理块。通过坏块表或坏块识别过程识别出具有地址201的物理块中,来自LUN2的平面2的块是坏块,而其他块都是好块。
从而,由于在LUN0到LUN15的对应于大块201的部分中,除LUN1外,都具有4个好块,从而这些LUN都可以用作提供校验块。作为举例,由于大块200选择了LUN15提供校验块,通过轮转或随机方式,选择LUN0来为大块201提供校验块。在另一个例子中,选择LUN15为大块201提供校验块也是可以的。
坏块表需要指示NVM中的每个物理块是好块还是坏块,可以用1个比特标识。为每个大块提供坏块表。针对每个大块,访问与其对应的坏块表,从而得到构成大块的各个LUN的各个平面的物理块是好块还是坏块,进而选出用于存储该大块的校验数据的校验块所在的LUN,以及从该大块中构建块条带。
图5B是为大块选择校验块所在逻辑单元的方法流程图。在根据本发明的实施例中,为获取大块,将多个逻辑单元的每个的多个平面中具有相同物理地址的物理块组织为大块(510)。例如,图5A所示的大块200与大块201。依据坏块表,确定为所获取的带块提供最多数量好块的一个或多个逻辑单元(520).例如,图5A中,为大块200提供数量最多好块的逻辑单元包括逻辑单元0、逻辑单元2-13与逻辑单元15。接下来,选择为所获取的带块提供最多数量好块的一个或多个逻辑单元之一,用来存储待大块的校验数据(530)。例如,图5A中,选择逻辑单元15用来存储大块200的校验数据。
图5C是从带块中构造块条带的方法流程图。也参看图5A,已经获取了大块200,并选择逻辑单元15用来存储大块200的校验数据。接下来,从大块200中构造块条带。大块200包括来自逻辑单元0到逻辑单元15的物理块,每个逻辑单元又包括多个平面。将每个逻辑单元的多个平面按平面编号排序(540)。
从每个逻辑单元的排序的多个平面中(每个平面提供一个物理块),选出第一个提供了尚未分配给块条带的好块的平面(例如,从逻辑单元0中选择平面0,从逻辑单元1中选择平面0,从逻辑单元2中选择平面0),用这些平面提供给该大块的好块构造块条带(570)。
判断所构造的块条带中是否包括来自至少两个逻辑单元的物理块(580)。块条带中包括来自至少两个逻辑单元的物理块,是根据本发明实施例的构造块条带的要求。可选地,构造块条带可有其他的要求,例如,需要包括来自更多逻辑单元的物理块。
若在步骤580判断步骤570中所构造的块条带中包括来自至少两个逻辑单元的物理块,则重复步骤570以构造另一块条带。若在步骤580判断步骤570中所构造的块条带中仅包括来自一个逻辑单元的物理块,则由于该块条带不满足要求,而放弃该块条带,并且块条带分配结束(590)。
当读取的物理页出现不可纠正错误时,根据物理页所在大块的坏块表,确定出不可纠正错误的物理页所在的块条带;利用不可纠正错误的物理页所在的块条带重构出现不可纠正错误的物理页的数据。图6A与图6B示出了对块条带中存在不可纠正错误的页进行数据重建的示意图。
参看图6A,大块100的LUN 2的平面P0的物理块,在其中的某页(例如,P100)被读出时,出现不可纠正错误。需要通过该物理块所在的块条带S0来重建数据。为重建数据,需要读出块条带S0中包含该页的页条带的所有页(除了该出现不可纠正错误的页)。作为举例,块条带的各个块中的具有相同页地址的物理页构成页条带。参看图6,大块100的LUN 2的平面P0的物理块属于块条带S0。为重建大块100的LUN2的平面P0的物理块的页P100,从块条带S0的每个物理块(除了LUN2的平面P0的物理块)的物理页P100中读出数据,在这些数据不存在不可纠正错误时,从这些数据中重建大块100的LUN2的平面P0的物理块的页P100(例如,对这些数据计算异或)。
图6B是另一个对块条带中存在不可纠正错误的页进行数据重建的例子。图6B中,大块101的LUN1的平面P2的物理块的某物理页发生不可纠正错误。通过与大块101相对应的坏块表,可知大块101的LUN1的平面P2的物理块,是大块101的LUN1的第3个好物理块(按平面编号排序),从而大块101的LUN1的平面P2的物理块属于大块101的第3个块条带(S2)。同属于该块条带S2的物理块包括LUN0的平面P3与LUN4的平面P2的物理块。发生不可纠正错误的物理页的页地址为P,则读出LUN0的平面P3与LUN4的平面P2提供给大块101的物理块的页地址为P的页,并对这些页的数据求异或,以重构出发生不可纠正错误的页。
图7示出了重构物理页的方法的流程图。在读取的物理页发生不可纠正错误时,从页条带中重构存在不可纠正错误的物理页的数据。重构物理页的方法,在读出大块C的逻辑单元(L)的平面(PL)的物理页P时出现不可纠正错误(710);利用大块C的坏块表,确定出现不可纠正错误的物理页P所在的块条带S(720);从块条带S的各个物理块中读出同物理页P对应的物理页,并重构出物理页P(730)。
可选地,读出数据的单元可以不是物理页,而是物理页P的部分。当读出的物理页P的部分存在不可纠正错误时,通过确定物理页P所在的块条带S,从块条带S的各个物理块中读出同物理页P对应的各个物理页的对应部分,用来重构存在不可纠正错误的数据。以及可选地,从块条带S的各个物理块中读出同物理页P对应的各个物理页,用来重构出物理页P,并获得要读取的物理页P的部分。
本发明实施例还提供一种包含程序代码的程序,当被载入CPU并在CPU中执行时,程序使CPU执行上面提供的根据本发明实施例的方法之一。
本发明实施例还提供一种包括程序代码的程序,当被载入主机并在主机上执行时,所述程序使主机的处理器执行上面提供的根据本发明实施例的方法之一。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种用于固态存储设备的块条带构造方法,其特征在于,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述方法包括:
从所述N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的一个有效物理块组成第一块条带。
2.根据权利要求1所述的方法,其特征在于,还包括:
从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的M个物理块中的有效物理块中尚未分配给块条带的一个有效物理块,组成第二块条带。
3.一种用于固态存储设备的块条带构造方法,其特征在于,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块;
所述方法包括:
根据每个逻辑单元的平面编号对每个逻辑单元中构成第一大块的M个物理块进行排序;
选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块组成第一块条带。
4.根据权利要求3所述的方法,还包括:
再次选择所述N个逻辑单元的每个逻辑单元中第一个尚未分配块条带的有效物理块,组成第二块条带。
5.根据权利要求1-4之一所述的方法,其特征在于,还包括:
根据坏块表确定为第一大块提供有效物理块最多的一个或多个逻辑单元;
从所述一个或多个逻辑单元中选择第一逻辑单元,其中,所述第一逻辑单元的物理块存储所述第一大块的所有块条带的校验数据。
6.一种用于固态存储设备的块条带构造方法,其特征在于,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述方法包括:
根据坏块表确定为第一大块提供有效物理块最多的一个或多个逻辑单元;
从所述一个或多个逻辑单元中选择第一逻辑单元,其中,所述第一逻辑单元为所述第一大块提供的有效物理块用于存储块条带的校验数据;
从所述N个逻辑单元的每个逻辑单元中选择提供给所述第一大块的有效物理块之一组成第一块条带。
7.根据权利要求6所述的固态存储设备的块条带构造方法,其特征在于,当根据坏块表确定为大块提供有效物理块最多的逻辑单元为多个时,存储不同的大块的校验数据的逻辑单元是为大块提供有效物理块最多的多个逻辑单元中不同的逻辑单元。
8.根据权利要求6所述的固态存储设备的块条带构造方法,其特征在于,还包括:
当物理页出现不可纠正错误时,根据物理页所在大块的坏块表,确定出不可纠正错误的物理页所在的块条带;
利用不可纠正错误的物理页所在的块条带重构所述出现不可纠正错误的物理页的数据。
9.一种固态存储设备,其特征在于,包括控制部件,N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述控制部件执行如权利要求1-7任一项所述的固态存储设备的块条带构造方法。
10.一种用于固态存储设备的块条带构造装置,其特征在于,所述固态存储设备包括N个逻辑单元,每个逻辑单元内包括M个平面,来自N个逻辑单元中每个逻辑单元内具有相同物理地址N*M个物理块构成大块,所述装置包括:
第一构造模块,用于从所述N个逻辑单元的每个逻辑单元中选择提供给第一大块的M个物理块中的一个有效物理块组成第一块条带。
CN201610814552.5A 2016-09-09 2016-09-09 块条带构造方法、构造装置及固态存储设备 Active CN107807788B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610814552.5A CN107807788B (zh) 2016-09-09 2016-09-09 块条带构造方法、构造装置及固态存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610814552.5A CN107807788B (zh) 2016-09-09 2016-09-09 块条带构造方法、构造装置及固态存储设备

Publications (2)

Publication Number Publication Date
CN107807788A true CN107807788A (zh) 2018-03-16
CN107807788B CN107807788B (zh) 2021-06-15

Family

ID=61569608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610814552.5A Active CN107807788B (zh) 2016-09-09 2016-09-09 块条带构造方法、构造装置及固态存储设备

Country Status (1)

Country Link
CN (1) CN107807788B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688056A (zh) * 2018-07-05 2020-01-14 北京忆恒创源科技有限公司 Nvm组的存储介质替换
CN112181276A (zh) * 2019-07-03 2021-01-05 北京忆恒创源科技有限公司 提升存储设备服务质量的大块构造、分配方法及其存储设备
CN112181274A (zh) * 2019-07-01 2021-01-05 北京忆恒创源科技有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN113485948A (zh) * 2021-06-29 2021-10-08 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件
CN116048427A (zh) * 2023-03-31 2023-05-02 北京忆恒创源科技股份有限公司 一种管理ssd闪存资源的方法及存储设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526886A (zh) * 2009-04-27 2009-09-09 杭州华三通信技术有限公司 一种独立磁盘冗余阵列的数据操作方法及装置
CN102023815A (zh) * 2009-09-15 2011-04-20 格雷戈里·伯德 在固态存储器中实现raid
CN102122233A (zh) * 2010-01-08 2011-07-13 群联电子股份有限公司 区块管理与数据写入方法、闪存储存系统与控制器
CN103019617A (zh) * 2012-11-25 2013-04-03 向志华 高效实现ssd内部raid的构建方法、数据读写方法及装置
CN103488583A (zh) * 2013-09-09 2014-01-01 华中科技大学 一种高性能高可靠的固态盘实现方法
CN103699337A (zh) * 2013-12-04 2014-04-02 华为技术有限公司 一种基于独立磁盘冗余阵列raid的写控制方法及系统
US20150378884A1 (en) * 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526886A (zh) * 2009-04-27 2009-09-09 杭州华三通信技术有限公司 一种独立磁盘冗余阵列的数据操作方法及装置
CN102023815A (zh) * 2009-09-15 2011-04-20 格雷戈里·伯德 在固态存储器中实现raid
CN102122233A (zh) * 2010-01-08 2011-07-13 群联电子股份有限公司 区块管理与数据写入方法、闪存储存系统与控制器
CN103019617A (zh) * 2012-11-25 2013-04-03 向志华 高效实现ssd内部raid的构建方法、数据读写方法及装置
US20150378884A1 (en) * 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
CN103488583A (zh) * 2013-09-09 2014-01-01 华中科技大学 一种高性能高可靠的固态盘实现方法
CN103699337A (zh) * 2013-12-04 2014-04-02 华为技术有限公司 一种基于独立磁盘冗余阵列raid的写控制方法及系统

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688056A (zh) * 2018-07-05 2020-01-14 北京忆恒创源科技有限公司 Nvm组的存储介质替换
CN112181274A (zh) * 2019-07-01 2021-01-05 北京忆恒创源科技有限公司 提升存储设备性能稳定性的大块的组织方法及其存储设备
CN112181276A (zh) * 2019-07-03 2021-01-05 北京忆恒创源科技有限公司 提升存储设备服务质量的大块构造、分配方法及其存储设备
CN113485948A (zh) * 2021-06-29 2021-10-08 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件
CN113485948B (zh) * 2021-06-29 2023-11-14 成都忆芯科技有限公司 Nvm坏块管理方法与控制部件
CN116048427A (zh) * 2023-03-31 2023-05-02 北京忆恒创源科技股份有限公司 一种管理ssd闪存资源的方法及存储设备

Also Published As

Publication number Publication date
CN107807788B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
CN108733319B (zh) 用于非易失性存储器中的混合推拉数据管理的系统和方法
US11144389B2 (en) Non-volatile memory program failure recovery via redundant arrays
US11379301B2 (en) Fractional redundant array of silicon independent elements
CN111164574B (zh) 基于存储设备内部地址的冗余编码条带
KR101660150B1 (ko) 물리 페이지, 논리 페이지, 및 코드워드 대응
US20200218602A1 (en) Data Storage Devices and Methods for Rebuilding a Memory Address Mapping Table
JP6855102B2 (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
CN103348330B (zh) 采用独立硅元件的动态较高级冗余模式管理
CN107807788A (zh) 多平面闪存的数据组织方法与装置
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
CN105573681B (zh) 一种ssd盘片内部raid组建方法及系统
CN110399311A (zh) 存储器系统及该存储器系统的操作方法
US20140229655A1 (en) Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US8612836B2 (en) Non-volatile memory device with uncorrectable information region and operation method using the same
CN107003942A (zh) 对用于增强存储设备的性能和持久性的解除映射命令的处理
CN106681931A (zh) 数据储存设备及其操作方法
CN107155358A (zh) 用于非易失性存储器的混合粒度较高级别冗余
CN107957958A (zh) 存储器系统及其操作方法
CN107077427A (zh) 跨电源周期来跟踪对写入命令和解除映射命令的混合
CN106371761A (zh) 内存系统以及非易失性内存的控制方法
JP2014507717A (ja) より高いレベルの冗長な情報の計算
CN105637490A (zh) 用于在闪速存储器装置之间迁移数据的方法和系统
US11138069B2 (en) Providing additional parity for non-standard sized parity data sets
CN105206306A (zh) 在非易失性存储器处理纠错码的方法及非易失性存储装置
TWI495998B (zh) 資料管理方法、記憶體控制器與記憶體儲存裝置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 Room 302, 3 / F, building B-2, Dongsheng Science Park, xixiaokou Road, Haidian District, Beijing

Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd.

CP03 Change of name, title or address