CN113553631A - 用于在存储器***中保护数据的设备和方法 - Google Patents
用于在存储器***中保护数据的设备和方法 Download PDFInfo
- Publication number
- CN113553631A CN113553631A CN202110032136.0A CN202110032136A CN113553631A CN 113553631 A CN113553631 A CN 113553631A CN 202110032136 A CN202110032136 A CN 202110032136A CN 113553631 A CN113553631 A CN 113553631A
- Authority
- CN
- China
- Prior art keywords
- chunks
- data
- chunk
- memory
- parity
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 299
- 238000000034 method Methods 0.000 title claims description 81
- 238000003860 storage Methods 0.000 description 35
- 238000013507 mapping Methods 0.000 description 33
- 238000011084 recovery Methods 0.000 description 31
- 238000012937 correction Methods 0.000 description 22
- 239000000872 buffer Substances 0.000 description 18
- 230000004044 response Effects 0.000 description 17
- 239000010410 layer Substances 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 7
- 230000007547 defect Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000007774 longterm Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008672 reprogramming Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000002355 dual-layer Substances 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本公开涉及一种存储器***,该存储器***包括:非易失性存储器装置,包括存储多个组块的多个存储器组;控制器,被配置为基于原始数据生成包括数据组块和奇偶校验组块的多个组块,对数据组块和奇偶校验组块分配不同的优先级,并且当针对多个组块之中的至少一个组块的操作失败时,基于不同的优先级来恢复该至少一个组块。
Description
相关申请的交叉引用
本专利申请要求于2020年4月23日提交的、申请号为10-2020-0049392的韩国专利申请的优先权的权益,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
本公开涉及一种存储器***,并且更具体地,涉及一种用于在存储器***中确保数据保护的设备和方法。
背景技术
近来,计算环境范例已经转变为几乎能够随时随地地访问计算机***的普适计算。因此,诸如移动电话、数码相机、笔记本计算机等的便携式电子装置的使用正在迅速增长。这种便携式电子装置通常使用或者包括存储器***,即数据存储装置,该存储器***使用或嵌入至少一个存储器装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,使用非易失性半导体存储器装置的数据存储装置的优点在于,该数据存储装置因为不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐用性,并且具有高数据访问速度和低功耗。在具有这种优点的存储器***的环境中,示例性数据存储装置包括通用串行总线(USB)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
本公开的实施例提供了一种数据处理***以及用于操作该数据处理***的方法,该数据处理***包括诸如存储器***和主机的组件和资源,并且能够基于组件和资源的使用情况来动态地分配用于组件之间的数据通信的多个数据路径。
根据本公开的实施例,一种使用擦除码方法的存储器***可以对数据组块和奇偶校验组块分配不同的权重或不同的优先级。当在非易失性存储器装置中针对数据组块和奇偶校验组块的读取/编程操作失败时,一种能够执行数据恢复的设备和方法可以基于不同的权重或不同的优先级,以不同的方式来控制用于恢复数据组块和奇偶校验组块的操作,因此可以快速地执行数据恢复。
在实施例中,一种存储器***可以包括:非易失性存储器装置,包括存储多个组块的多个存储器组;控制器,被配置为基于原始数据生成包括数据组块和奇偶校验组块的多个组块,对数据组块和奇偶校验组块分配不同的优先级,并且当针对多个组块之中的至少一个组块的操作失败时,基于不同的优先级来恢复该至少一个组块。
控制器可以被配置为将多个组块编程到多个存储器组之中的不同组,多个存储器组包括经由不同的数据路径联接到控制器的多个管芯或多个平面。
控制器可以被配置为将原始数据划分为m个数据组块,基于该m个数据组块和擦除码来生成k个奇偶校验组块。“m”和“k”是正整数,并且“m”大于“k”。
控制器可以被配置为:当多个组块之中的至少m个组块的读取或编程操作成功并且少于k个组块的读取或编程操作失败时,基于至少m个组块来恢复原始数据。
控制器可以被配置为:当多个组块之中的m个数据组块的读取或编程操作成功并且k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,基于m个数据组块来恢复原始数据。
控制器可以被配置为:在m个数据组块之中的至少一个组块的读取或编程操作已经失败之后,减少用于确定数据组块和奇偶校验组块的读取或编程操作是否成功的操作裕量。
控制器可以被配置为:当m个数据组块之中的至少一个组块的读取或编程操作失败时,将基于m个数据组块和k个奇偶校验组块来恢复原始数据的操作定时提前。
控制器可以被配置为:当m个数据组块之中的至少一个数据组块和k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,重试失败的、具有比该至少一个奇偶校验组块更高优先级的该至少一个数据组块的读取或编程操作。
控制器可以被配置为:生成标识符,以将多个组块中的每一个标识为数据组块或奇偶校验组块。
控制器可以被配置为:将多个组块中的每一个的标识符添加到相应组块的元数据中。
控制器可以被配置为:基于标识符,对多个存储器组中的每个存储器组分配一个或多个数据组块或者一个或多个奇偶校验组块,并且将至少一个组块编程到存储器组中。
在另一实施例中,一种操作存储器***的方法可以包括:基于原始数据生成包括数据组块和奇偶校验组块的多个组块;对数据组块和奇偶校验组块分配不同的优先级;并且当针对存储器装置中的多个存储器组中的任意一个中的、多个组块之中的至少一个组块的操作失败时,基于不同的优先级来恢复该至少一个组块。
该方法可以进一步包括:将多个组块编程到多个存储器组之中的不同组中,多个存储器组包括经由不同的数据路径联接到控制器的多个管芯或多个平面。
生成多个组块可以包括:将原始数据划分为m个数据组块;并且基于该m个数据组块和擦除码来生成k个奇偶校验组块。“m”和“k”是正整数,并且“m”大于“k”。
该方法可以进一步包括:当多个组块之中的至少m个组块的读取或编程操作成功并且多个组块之中的少于k个组块的读取或编程操作失败时,基于至少m个组块来恢复原始数据。
该方法可以进一步包括:当多个组块之中的m个数据组块的读取或编程操作成功并且k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,基于m个数据组块来恢复原始数据。
该方法可以进一步包括:在m个数据组块之中的至少一个组块的读取或编程操作已经失败之后,减少用于确定数据组块和奇偶校验组块的读取或编程操作是否成功的操作裕量。
该方法可以进一步包括:当m个数据组块之中的至少一个组块的读取或编程操作失败时,将基于m个数据组块和k个奇偶校验组块来恢复原始数据的操作定时提前。
该方法可以进一步包括:当m个数据组块之中的至少一个数据组块和k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,重试失败的、具有比该至少一个奇偶校验组块更高优先级的该至少一个数据组块的读取或编程操作。
分配不同的优先级可以包括:生成标识符,以将多个组块中的每个组块标识为数据组块或奇偶校验组;并且将多个组块中的每个组块的标识符添加到相应组块的元数据中。
在另一实施例中,一种存储器***可以包括:存储器装置,包括多个存储器组;以及控制器,被配置为:生成包括多个数据组块和与多个数据组块相关联的至少一个奇偶校验组块的多个组块;顺序地将多个组块编程到多个存储器组中;检测对多个数据组块之中的一个或多个数据组块以及奇偶校验组块的读取操作是否失败;并且当检测到读取操作失败时,在恢复奇偶校验组块之前恢复一个或多个数据组块。
附图说明
本文中的描述参照了附图,其中在所有图中,相同的附图标记指代相同的部分。
图1示出了根据本公开的实施例的存储器***。
图2示出了根据本公开的实施例的数据处理***。
图3示出了根据本公开的实施例的存储器***。
图4示出了根据本公开的实施例的擦除码方法。
图5示出了用于将通过擦除码方法生成的多个组块存储在存储器装置中的方法。
图6示出了根据本公开的实施例的用于操作存储器***的方法。
图7示出了根据本公开的实施例的操作存储器***的方法的第一示例。
图8示出了根据本公开的实施例的用于操作存储器***的方法的第二示例。
图9示出了根据本公开的实施例的用于操作存储器***的方法的第三示例。
图10示出了根据本公开的实施例的用于操作存储器***的方法的第四示例。
具体实施方式
下面参照附图描述了本公开的各个实施例。然而,本公开的元件和特征可以不同地配置或布置以形成其它实施例,其它实施例可以是任何所公开的实施例的变型。
在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的引用旨在表示本公开的一个或多个实施例中包括任何种特征,但是可以或可能不一定在相同的实施例中进行组合。
在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如本文中所使用的,这些术语指定存在所陈述元件/组件,并且不排除存在或添加一个或多个其它元件/组件。
在本公开中,可将各种单元、电路或其它组件描述或要求为“配置为”执行一个或多个任务。在这种语境中,“配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。因此,即使当指定的块/单元/电路/组件当前未操作(例如,未接通)时,也可以说该块/单元/电路/组件配置为执行任务。与“配置为”一起使用的块/单元/电路/组件包括硬件,例如电路、存储可运行的程序指令以实施操作的存储器等。记载块/单元/电路/组件“配置为”执行一个或多个任务显然旨在该块/单元/电路/组件的清楚性。另外,“配置为”可以包括由软件和/或固件(例如,运行软件的FPGA或通用处理器)操纵,以能够执行所讨论的(多个)任务的方式来操作的通用结构(例如,通用电路)。“配置为”还可以包括使制造工艺(例如,半导体制造设施)适应于制造适于实施或执行一个或多个任务的装置(例如,集成电路)。
如本公开中所使用的,术语“电路”指代以下的任意和所有内容:(a)仅硬件电路实施方案(诸如仅以模拟和/或数字电路的实施方案)以及(b)电路与软件(和/或固件)的组合,诸如(如适用于):(i)(多个)处理器的组合或(ii)(多个)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的(多个)数字信号处理器、软件和(多个)存储器)的部分,以及(c)需要软件或固件来操作的电路,诸如(多个)微处理器或(多个)微处理器的一部分,即使该软件或固件物理上不存在。“电路”的这种定义适用于在本申请中、包括在任何权利要求中该术语的所有使用。作为另一示例,如在本申请中所使用的,术语“电路”还涵盖仅一个处理器(或多个处理器)或处理器的一部分及其(或它们的)的附带软件和/或固件的实施方案。例如,如果适用于特定的权利要求要素,术语“电路”还涵盖存储装置的集成电路。
如本文中所使用的,这些术语“第一”、“第二”、“第三”等被用作它们之后的名词的标签,并且不意味着任何类型的排序(例如,空间、时间、逻辑等)。术语“第一”和“第二”不一定意味着第一值必须写在第二值之前。进一步地,尽管本文中可以使用这些术语来标识各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另外具有相同或相似名称的另一元件区分开。例如,可以将第一电路与第二电路区分开。
进一步地,术语“基于”用于描述影响确定结果的一个或多个因素。该术语不排除可能影响确定结果的其它因素。也就是说,确定结果可以仅基于那些因素或者至少部分地基于那些因素。考虑短语“基于B确定A”。虽然在这种情况下,B是影响A的确定结果的因素,但是这种短语不排除A的确定结果也基于C。在其它情况下,也可以仅基于B来确定A。
下面参照附图描述了本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出了根据本公开的实施例的存储器***110。
参照图1,存储器***110可以包括存储器装置150和控制器130。可以将存储器装置150和控制器130视为物理上不同的组件或元件。在这种情况下,存储器装置150和控制器130可以经由至少一条数据路径连接。例如,数据路径可以包括通道和/或通路。
根据另一实施例,存储器装置150和控制器130可以被集成到单个组件或元件中,但是在功能上被划分开。根据实施例,可以利用单个芯片或多个芯片来实施存储器装置150和控制器130。
存储器装置150可以包括多个存储块60,多个存储块60中的每一个包含一组非易失性存储器单元,该组非易失性存储器单元中的数据可通过单个擦除操作一起擦除。尽管未示出,但是存储块60中的每一个可以包括页面,页面中的单个页面是以单个编程操作进行编程或者以单个读取操作从其输出数据的一组非易失性存储器单元。
尽管在图1中未示出,但是存储器装置150可以包括多个存储器平面和/或多个存储器管芯。根据实施例,可以将存储器平面视为包括至少一个存储块60、能够控制包括多个非易失性存储器单元的阵列的驱动电路、以及可以临时存储被输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲器的逻辑分区或物理分区、。
根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以被理解为在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括与控制器130交换数据条和信号的接口。
就(多个)存储块、(多个)存储器平面和(多个)存储器管芯而言,存储器装置150可以以各种适当的方式中的任意一种进行配置。存储器装置150的内部配置不限于图1所示的配置。通常,存储器装置150的配置由存储器***110的预期用途和/或期望性能确定。
参照图1,存储器装置150可以包括能够将至少一个电压供应到存储块60中的电压供应电路70。电压供应电路70可以将读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers供应到存储块60中的非易失性存储器单元中。例如,在读取存储块60中的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路70可以将读取电压Vrd供应到所选择的非易失性存储器单元。在将数据存储在存储块60中的非易失性存储器单元中的编程操作期间,电压供应电路70可以将编程电压Vprog供应到所选择的非易失性存储器单元。在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路70可以将通过电压Vpass供应到未选择的非易失性存储器单元。在擦除存储块60中的非易失性存储器单元中存储的数据的擦除操作期间,电压供应电路70可以将擦除电压Vers供应到存储块60。
为了将由外部装置(例如,图2至图3中的主机102)请求的数据存储在存储器装置150(例如,包括非易失性存储器单元的存储空间)中,存储器***110可以在由主机102使用的文件***与包括非易失性存储器单元的存储空间的物理位置之间执行地址转换。例如,根据主机102使用的文件***所确定的数据地址可以被称为逻辑地址或逻辑块地址,而存储空间中的存储数据的物理位置的地址可以被称为物理地址或物理块地址。当主机102将逻辑地址与读取请求一起传送到存储器***110时,存储器***110搜索与该逻辑地址相关联的物理地址,读取由该物理地址识别的位置中存储的数据,并且将所读取的数据输出到主机102。在该进程中,可以在存储器***110中执行地址转换,以搜索与从主机102输入的逻辑地址相关联的物理地址。
控制器130可以响应于从外部装置输入的请求而执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储器装置150中的多个非易失性存储器单元中存储的数据被传送到控制器130。对于读取操作,数据输入/输出(I/O)电路192可以对从外部装置输入的逻辑地址执行地址转换以获得物理地址,然后通过收发器198将读取命令传输到与该物理地址相对应的存储器装置150。收发器198可以将读取命令传输到存储器装置150,并且接收从与该物理地址相对应的存储器装置150输出的数据。收发器198可以将从存储器装置150传送的数据存储在存储器(例如,图2的存储器144)中。数据输入/输出电路192可以响应于读取请求而将存储器中存储的数据输出到外部装置。
数据输入/输出电路192可以通过收发器198,将来自外部装置的、与写入请求一起输入的用户数据传输到存储器装置150。在将数据存储在存储器装置150中之后,数据输入/输出电路192可以将与写入请求相对应的响应传输到外部装置。数据输入/输出电路192可以更新将物理地址与和写入请求一起输入的逻辑地址相关联的映射数据,该物理地址指示存储器装置150中的存储用户数据的位置。
数据输入/输出电路192可以在将数据写入存储器装置150或读取存储器装置150中存储的数据的同时,使擦除码电路190对数据进行编码或解码。擦除码电路190可以基于擦除码来执行编码或解码。进一步地,擦除码电路190可以对所生成或所收集的组块分配优先级,或者检测分配给组块的优先级。
在本文中,擦除码(EC)方法可以是一种数据恢复技术,该数据恢复技术使用擦除码对数据进行编码,并且当数据丢失时通过解码过程来恢复原始数据。因为相比于数据拷贝或复制,由擦除码生成的奇偶校验占用更少的存储空间,所以擦除码方法可以提高存储器***110中的存储空间效率,以及提供存储器***110的操作可靠性。可以采用各种擦除码。例如,擦除码可以包括Reed-Solomon(RS)码、Tahoe最小权限文件***(Tahoe-LAFS)、EVENODD码、Weaver码、X码等。针对不同的擦除码,可以使用不同的算法。已经开发了擦除码以提高存储器***110中的恢复性能并降低计算复杂度。
例如,存储器***110将原始数据划分为多个数据组块,通过编码过程生成至少一个奇偶校验组块,然后将多个数据组块和至少一个奇偶校验组块编程到存储器装置150中。此后,响应于从主机(例如,图2的主机102)输入的请求,存储器***110可以读取存储器装置150中存储的多个数据组块和至少一个奇偶校验组块,以输出原始数据。在从存储器装置150读取多个数据组块和至少一个奇偶校验组块的过程中,一些组块未被传输到控制器130。即使丢失了一些组块,擦除码电路190也可以基于其它正常传输的组块来恢复和还原原始数据。
可以将通过擦除码方法生成的多个数据组块和至少一个奇偶校验组块存储在不同的位置以增加数据安全性。为此,存储器***110可以利用独立磁盘冗余阵列(RAID)***。在实施例中,存储器装置150包括经由不同的数据路径联接到控制器130的多个非易失性存储器组。例如,存储器装置150可以包括通过不同的通道连接到控制器130的多个管芯,并且存储器装置150可以包括通过不同的通路联接到控制器130的多个平面,其中相同管芯中的平面可以使用与该管芯相关联的通道。在本文中,平面可以包括诸如页面缓冲器的数据输入/输出缓冲器,并且因此可以是能够以交错方式存储从控制器130输入的数据或向控制器130输出所存储的数据的一组非易失性存储器单元。每个平面可以包括图1所示的存储块60中的至少一个存储块。
例如,通过使用擦除码(EC)方法(例如,里德-所罗门码)的编码过程,将原始数据划分为10个数据组块并且生成6个奇偶校验组块,从而得到10个数据组块和6个奇偶校验组块。16个组块可以被分布并存储在存储器装置150中的8个平面中。当读取原始数据时,控制器130试图从8个平面收集16个组块。即使在从8个平面中的2个平面中没有正常收集4个组块的情况下,也可以基于16个组块之中的12个正常收集的组块来还原原始数据。
在这种情况下,对于没有从2个平面正常收集4个组块,可能存在多种原因。这些原因包括发生硬盘故障以及在存储器装置150的平面中发生的缺陷。例如,控制器130可能无法识别特定平面中存储的数据,这种无法识别可能是暂时的或长期的。再例如,因为控制器130中的固件错误、向控制器130或相应平面的电力供应错误、诸如通道或通路的数据路径中的接触故障、与相应平面相关联的元数据区域中的损坏或缺陷、由于相应平面中的坏存储块而导致无法读取或写入数据等,控制器130可能无法从存储器装置150中的相应平面收集与原始数据有关的至少一些组块。
擦除码电路190可以通过收集除了发生缺陷的平面以外的平面中存储的组块,来恢复、重构或还原原始数据。在以上示例中,当将原始数据划分为10个数据组块,添加6个奇偶校验组块,并且将16个组块分布并存储在存储器装置150中时,即使16个组块中的6个组块被损坏,也可以重构原始数据。
根据实施例,擦除码电路190可以包括擦除码器196和优先级检查器194。擦除码器196可以基于擦除码来执行编码或解码过程,以生成多个组块。优先级检查器194可以将不同的优先级分配给所生成或所收集的组块,或者检测被赋予给所生成或所收集的组块的优先级。
在由擦除码器196生成的多个组块之中,相比于奇偶校验组块,优先级检查器194可以对数据组块分配更高的优先级。具有不同优先级的数据组块和奇偶校验组块可以通过收发器198被传输到存储器装置150,然后被存储在不同的位置。当在将数据组块和奇偶校验组块编程到存储器装置150的过程中出现问题时,优先级检查器194可以以不同的方式来控制编程操作。例如,在将包括10个数据组块和6个奇偶校验组块的16个组块分别编程到存储器装置150时,该16个组块中的一些可能发生编程失败。再例如,10个数据组块被正确地存储,即没有问题,而6个奇偶校验组块中的一些可能发生写入失败。因为10个数据组块完全存储在存储器装置150中,所以控制器130可以确定还原原始数据的可能性较高,并且可以延迟针对未被编程到存储器装置150中的一些奇偶校验组块的重新编程操作。当存储器***110将要执行另一数据输入/输出操作时,可以在针对失败的奇偶校验组块的编程操作之前执行该操作。当存储器***110进入空闲状态时,控制器130可以访问完全编程在与失败的奇偶校验组块相关的存储器装置150中的组块,并且通过擦除码(EC)操作,基于所访问的组块来还原原始数据。控制器130可以针对所还原的数据执行擦除码方法,并且将通过擦除码(EC)操作生成的数据组块和奇偶校验组块重新编程到存储器装置150中。
在将作为10个数据组块和6个奇偶校验组块的总和的16个组块编程到存储器装置150的过程中,6个奇偶校验组块被正确地存储,但是10个数据组块中的一些可能发生写入失败。因为相比于奇偶校验组块,优先级检查器194已经对数据组块分配了更高的优先级,所以当数据组块发生写入失败时,控制器130可以确定存在关于存储器装置150中存储的数据的安全性的问题。相比于在存储器***110中执行的另一输入/输出操作,控制器130可以以更高的优先级来执行将已经发生写入失败的数据组块编程到存储器装置150中的操作。根据实施例,控制器130可以改变存储与先前写入失败相对应的、重新生成的数据组块的位置,使得可以将该重新生成的数据组块编程到不同于先前发生写入失败的平面的另一平面中。
当发生关于数据组块的写入失败时,控制器130可以调整关于编程失败的组块的阈值(例如,数量),该阈值用于确定是否延迟执行针对该编程失败的组块的重新编程操作。控制器130可以通过调整与存储器装置150中存储的数据的安全性相对应的阈值,来以不同的方式控制写入操作。如果控制器130降低阈值以降低延迟重新编程操作的可能性,则可以以更高的优先级来执行针对编程失败的组块的重新编程操作。
在从存储器装置150读取数据组块和奇偶校验组块的过程中,一些组块可能没有被正常收集(例如,数据可能丢失)。根据分配给数据组块和奇偶校验组块的优先级,优先级检查器194可以以不同的方式来确定数据恢复操作。例如,当16个组块(即,10个数据组块和6个奇偶校验组块)存储在存储器装置150中,并且10个数据组块被正确地收集时,6个奇偶校验组块中的一些可能发生读取失败。因为控制器130可以基于10个数据组块来还原原始数据,所以控制器130可以不执行用于正常收集失败的奇偶校验组块(即,6个奇偶校验组块中的已经发生读取失败的奇偶校验组块)的附加操作。
在16个组块(即,10个数据组块和6个奇偶校验组块)存储在存储器装置150中的情况下,6个奇偶校验组块可以被正常地收集而没有问题,但是10个数据组块中的一些可能发生读取失败。控制器130可以在执行用于收集发生读取失败的数据组块的附加操作之前,检查是否可以仅基于正常收集的组块来恢复或还原原始数据。
当数据组块发生读取失败时,控制器130可以调整与读取成功组块(或读取失败组块)的数量有关的阈值,其中收集读取成功组块以恢复或还原原始数据。例如,当数据组块发生读取失败时,控制器130可以降低读取失败组块的阈值。如果可以基于16个组块中的10个组块来还原原始数据,则读取失败组块的阈值为6。控制器130可以不执行用于正常收集读取失败组块的附加操作。然而,当数据组块发生读取失败时,控制器130确定数据安全性降低,并且可以将读取失败组块的阈值从6调整为4、3或更低。控制器130可以通过降低读取失败组块的阈值来提高存储器装置150的数据安全性。
在另一实施例中,当16个组块之中的数据组块的一部分以及奇偶校验组块的一部分发生读取失败时,相比于奇偶校验组块,控制器130可以以更高的优先级来读取数据组块。当控制器130可以成功地读取优先级高于奇偶校验组块的数据组块时,因为可以基于读取成功数据组块来恢复或还原原始数据,所以控制器130可以减少用于恢复或还原原始数据的操作裕量或资源消耗。
根据实施例,存储器***110可以使用某种软件存储平台(例如,Ceph)作为用于以分布式方式将通过擦除码方法生成的组块存储在存储器装置150中的方法。Ceph平台是用于分布式云存储的开放源码存储平台(open source storage platform)。作为分布式对象存储和文件***,Ceph平台可以提供具有高性能、高稳定性和高扩展性的存储集群。Ceph平台可以将客户端数据作为对象存储在存储池中。更具体地,使用被称为“基于扩展哈希的可控复制(CRUSH)”的方法或算法,Ceph集群可以动态地扩展、重新平衡和还原。CRUSH算法可以通过计算诸如基于对象的存储装置(OSD)的数据存储位置来确定如何存储和检索数据。CRUSH算法可以允许Ceph客户端直接与基于对象的存储装置(OSD)通信,而无需通过中央服务器或代理(broker)。通过算法确定的数据存储和检索方法,Ceph平台可以克服单点失败、性能瓶颈以及可扩展性的物理限制。当同时应用了Ceph平台和CRUSH算法时,存储器***110可以使用分层图(或CRUSH图)来对关于存储集群的信息进行编码。例如,当CRUSH算法使用存储集群的分层图来创建基于对象的存储装置(OSD)时,可以伪随机地存储和检索数据,从而可以实现平衡的分布。
在从Ceph客户端接收数据之后,Ceph存储集群可以以对象的形式存储这种数据。每个对象可以对应于基于对象的存储装置(OSD)中存储的文件***的文件。CRUSH算法可以动态地映射替换组(PG)以及基于对象的存储装置(OSD)。当Ceph客户端存储对象时,CRUSH算法可以将每个对象映射到替换组(PG)。Ceph存储集群可以动态地扩展、收缩或重新平衡存储对象的位置。存储集群的CRUSH图可以示出对象和替换组(PG)之间以及替换组(PG)和基于对象的存储装置(OSD)之间的连接关系。
数据中心的存储访问失败通常是暂时的。例如,由于网络故障或***重启,通常会暂时限制数据访问。在存储器***110中,可以设置定时器以确定故障是否是暂时的,以便避免由于仓促恢复而导致使用过多的资源。当采用擦除码方法时,可以延迟数据恢复,直到没有被正常读取/写入的组块的数量大于阈值为止。为了还原失败的数据组块,由于应当收集编码过程中生成的多个组块,所以可能发生延迟。存储器***110可以对数据组块和奇偶校验组块分配不同的优先级,使得即使发生读取/写入失败,控制数据恢复和还原操作的方法也可以根据优先级而不同。因此,本公开的实施例适用于以下情况:恢复单元小于存储装置,诸如Ceph平台的替换组PG,并且数据组块和奇偶校验组块混合在一个存储装置中。
图2和图3示出了根据一个或多个实施例的可以由数据处理***100中的存储器***110执行的一些操作。
参照图2,数据处理***100可以包括与存储器***110可操作地接合的主机102。主机102可以包括便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)或非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
主机102还可以包括至少一个操作***(OS),OS可以控制在主机102中执行的功能和操作。OS可以提供与存储器***110可操作地接合的主机102与打算将数据存储在存储器***110中的用户之间的互操作性。OS可以支持与用户的请求相对应的功能和操作。作为示例而非限制,根据主机102的移动性,OS可以是通用操作***和/或移动操作***。根据***需求或用户环境,通用操作***可以是个人操作***和/或企业操作***。与个人操作***相比,企业操作***可以专门用于确保和支持高性能计算。
移动操作***可支持用于移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作***。主机102可以对应于用户的请求,运行与存储器***110互锁的多个操作***。主机102可以将与用户的请求相对应的多个命令传输到存储器***110中,从而在存储器***110内执行与命令相对应的操作。
存储器***110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以向主机102提供从存储器装置150读取的数据条,并且可以执行写入操作(或编程操作)以将从主机102输入的数据条存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制并管理用于数据读取、数据编程、数据擦除等的内部操作。
根据实施例,控制器130可以包括主机接口(I/F)132、处理器134、错误校正电路(即,ECC)138、电源管理单元(PMU)140、存储器接口142和存储器144。控制器130的组件不限于图2所示的那些组件。相反,控制器130的配置可以根据存储器***110的结构、功能、操作性能等而变化。例如,存储器***110可以利用可以根据主机接口的协议与主机102电联接的各种类型的存储装置中的任意一种来实施。适用的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。控制器130中的具体组件集合可以根据存储器***110的特定实施方案而不同。
主机102和存储器***110可以包括控制器或接口,以根据一个或多个通信协议来传输和接收信号、数据条等。例如,存储器***110中的主机接口132可以包括能够将信号、数据条等传输到主机102或者接收从主机102输入的信号、数据条等的设备。
主机接口132可以接收从主机102输入的信号、命令(或请求)和/或数据条。例如,主机102和存储器***110可以使用通信协议以在彼此之间传输和接收数据条。由主机102和存储器***110支持的、用于发送和接收数据条的协议或接口的示例包括:通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机***接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速***组件互连(PCIE或PCIe)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动行业处理器接口(MIPI)等。根据实施例,主机接口132是一种用于与主机102交换数据条的层,并且利用被称为主机接口层(HIL)的固件来实施或由被称为主机接口层(HIL)的固件来驱动。
在一些实施例中,电子集成驱动器(IDE)或高级技术附件(ATA)可以用作在主机102和存储器***110之间传输和接收数据条的一种接口。例如,IDE或ATA可以使用包括40条并行连接的布线的电缆,以支持主机102和存储器***110之间的数据传输和接收。当多个存储器***110连接到单个主机102时,可以通过使用与多个存储器***110连接的位置或指拨开关(dip switch),将多个存储器***110划分为主设备和从设备。被设置为主设备的存储器***110可以用作主存储器装置。例如,IDE或ATA可以包括快速-ATA、ATAPI和增强型IDE(EIDE)。
串行高级技术附件(SATA)是一种与由电子集成驱动器(IDE)装置使用的、各种ATA标准的并行数据通信接口兼容的串行数据通信接口。可以将IDE接口中的40条布线减少为SATA接口中的6条布线。例如,用于IDE的40个并行信号可以转换为用于SATA的6个串行信号,以在彼此之间传输。因为SATA具有更快的数据传输和接收速率以及在主机102中使用更少的资源消耗进行数据传输和接收,所以SATA已经被广泛使用。SATA可以支持将多达30个的外部装置连接到主机102中包括的单个收发器。另外,SATA可以支持热插拔(hot plug),该热插拔允许即使在主机102和另一装置之间正在执行数据通信时,也可将外部装置附接至主机102或将外部装置与主机102分离。因此,即使在主机102接通电源时,存储器***110也可以像通用串行总线(USB)支持的装置那样,作为附加装置被连接或断开。例如,在具有eSATA端口的主机102中,存储器***110可以像外部硬盘一样自由地分离。
小型计算机***接口(SCSI)是一种串行数据通信接口,其用于在计算机、服务器和/或其它***装置之间进行连接。与诸如IDE和SATA的其它接口相比,SCSI可以提供较高的传输速度。在SCSI中,主机102和至少一个***装置(例如,存储器***110)串联连接,但是可以通过并行数据通信来执行主机102和每个***装置之间的数据传输和接收。在SCSI中,很容易将诸如存储器***110的装置连接到主机102或与主机102断开。SCSI可以支持将15个其它装置连接到主机102中包括的单个收发器。
串列SCSI(SAS)可以被理解为SCSI的串行数据通信版本。在SAS中,不仅主机102和多个***装置串联连接,而且主机102和每个***装置之间的数据传输和接收可以以串行数据通信方案来执行。SAS可以通过串行电缆,而不是并行电缆来支持主机102和***装置之间的连接,从而容易地使用SAS来管理设备,并且增强或提高操作可靠性和通信性能。SAS可以支持将八个外部装置连接到主机102中的单个收发器。
高速非易失性存储器(NVMe)是一种至少基于高速***组件互连(PCIe)的接口,并且被设计为提高配备有非易失性存储器***110的主机102、服务器、计算装置等的性能和设计灵活性。PCIe可以使用插槽或特定电缆来连接主机102(例如,计算装置)和存储器***110(例如,***装置)。例如,PCIe可以使用多个引脚(例如,18引脚、32引脚、49引脚、82引脚等)和至少一条布线(例如,x1、x4、x8、x16等)来实现每秒数百MB以上(例如,250MB/s、500MB/s,984.6250MB/s、1969MB/s等)的高速数据通信。根据实施例,PCIe方案可以实现每秒数十至数百千兆位(Giga bits)的带宽。使用NVMe的***可以最大程度地利用诸如SSD的非易失性存储器***110的操作速度,其中非易失性存储器***110以高于硬盘的速度进行操作。
根据实施例,主机102和存储器***110可以通过通用串行总线(USB)连接。USB是一种可扩展的、可热插拔式即插即用串行接口,并且可以在主机102和诸如以下的***装置之间提供经济高效的标准连接:键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等。诸如存储器***110的多个***装置可以联接到主机102中的单个收发器。
参照图2,错误校正电路138可以对待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位进行校正,错误校正电路138可以包括错误校正码(ECC)编码器和ECC解码器。ECC编码器可以对待编程到存储器装置150中的数据执行错误校正编码,以生成添加了奇偶校验位的经编码数据,并且将经编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ECC解码器可以检测和校正从存储器装置150读取的数据中包含的错误。例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可以确定错误校正解码是否已经成功并输出指令信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用在ECC编码过程中生成的奇偶校验位来校正所读取数据中的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138可不校正错误位,而是可以输出指示校正错误位失败的错误校正失败信号。
根据实施例,错误校正电路138可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(BCH)码、turbo码、里德-所罗门(RS)码、卷积码、递归***码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等。错误校正电路138可以包括基于上述代码中的至少一种来执行错误校正操作的所有电路、模块、***和/或装置。
例如,ECC解码器可以对从存储器装置150传输的数据执行硬判决解码或软判决解码。硬判决解码可以被理解为针对错误校正大致分类的两种方法(即,硬判决解码和软判决解码)中的一种。硬判决解码可以包括以下操作:通过将来自存储器装置150中的非易失性存储器单元的数字数据的每个位或每条数字数据读取为“0”或“1”来校正错误。因为硬判决解码处置二进制逻辑信号,所以电路/算法设计或配置可以比软判决解码更简单,并且处理速度可以比软判决解码更快。
软判决解码可以通过两个或更多个量化值(例如,多位数据、近似值、模拟值等)来量化存储器装置150中的非易失性存储器单元的阈值电压,以便基于该两个或更多个量化值来校正错误。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个字母或量化值,然后基于通过将量化值表征为诸如条件概率或可能性的信息的组合而生成的信息来执行解码。
根据实施例,在针对软判决解码而设计的方法之中,ECC解码器可以使用低密度奇偶校验和生成器矩阵(LDPC-GM)码。低密度奇偶校验(LDPC)码使用这样的算法,该算法可以根据可靠性以若干位从存储器装置150读取数据的值,而不是像硬判决解码一样简单地读取数据1或0,并且通过消息交换来迭代重复读取,以便提高值的可靠性。然后,最终将每个位确定为1或0。例如,使用LDPC码的解码算法提供概率解码。通过硬判决解码,从非易失性存储器单元输出的值被确定为0或1。与硬判决解码相比,软判决解码可以基于随机信息来确定非易失性存储器单元中存储的值。关于位翻转(其可以被视为存储器装置150中可能发生的错误),软判决解码可以提高校正错误和恢复数据的可能性,以及提供经校正数据的可靠性和稳定性。LDPC-GM码可以具有内部LDGM码可以与高速LDPC码串联的方案。
根据实施例,ECC解码器可以使用,例如低密度奇偶校验卷积码(LDPC-CC)码来进行软判决解码。LDPC-CC码可以使用基于可变块长度和移位寄存器的线性时间编码方案以及管线解码。
根据实施例,ECC解码器可以使用,例如对数似然比Turbo码(LLR-TC)来进行软判决解码。对数似然比(LLR)可以被计算为采样值与理想值之间的距离的非线性函数。另外,Turbo码(TC)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
电源管理单元(PMU)140可以控制控制器130中提供的电力。PMU 140可以监测供应到存储器***110的电力(例如,供应到控制器130的电压),并且将电力提供到控制器130中的组件。当供应到存储器***110的电力不稳定时,PMU 140不仅可以检测通电或断电,而且可以生成触发信号,以使存储器***110能够紧急备份当前状态。根据实施例,PMU 140可以包括能够累积可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作处置在控制器130和存储器装置150之间传送的命令和数据的接口,以便允许控制器130响应于从主机102输入的命令或请求而控制存储器装置150。在存储器装置150是闪速存储器的情况下,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号,并且可以处理输入到存储器装置150或从存储器装置150输出的数据。例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处置控制器130与存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过用于与存储器装置150交换数据的、被称为闪存接口层(FIL)的固件来实施或由其驱动。
根据实施例,存储器接口142可以支持开放式NAND闪存接口(ONFi)、Toggle模式等,以与存储器装置150进行数据输入/输出。例如,ONFi可以使用数据路径(例如,通道、通路等),该数据路径包括至少一条能够支持以8位或16位数据为单位进行双向传输和接收的信号线。控制器130与存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)和Toggle双倍数据速率(DDR)的至少一个接口来实现。
存储器144可以是存储器***110或控制器130中的一种工作存储器,同时存储用于存储器***110和控制器130中的操作的临时数据或事务数据。例如,在响应于来自主机102的请求而将从存储器装置150输出的读取数据输出到主机102之前,存储器144可以临时存储该读取数据。另外,控制器130可以在将从主机102输入的写入数据编程到存储器装置150之前,将该写入数据临时存储在存储器144中。当控制器130控制存储器装置150的诸如数据读取、数据写入、数据编程或数据擦除的操作时,可以将在存储器***110的控制器130和存储器装置150之间传输或生成的数据条存储在存储器144中。
除了读取数据或写入数据之外,存储器144还可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。控制器130可以对用于执行数据输入/输出操作的组件分配存储器144中的一些存储空间。例如,存储器144中的写入缓冲器可以用于临时存储用于编程操作的目标数据。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。尽管图2示出了被设置在控制器130内的存储器144,但是实施例不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以由具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器来实现。
处理器134可以控制存储器***110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求而控制对存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制对存储器***110的编程操作或读取操作。在本文中,固件可以被称为闪存转换层(FTL)。下面参照图3详细描述了FTL的示例。根据实施例,处理器134可以利用微处理器或中央处理单元(CPU)来实施。
根据实施例,存储器***110可以利用至少一个多核处理器来实施。多核处理器是一种集成了被视为不同的处理区域的两个或更多个核的电路或芯片。例如,当多核处理器中的多个内核独立地驱动或运行多个闪存转换层(FTL)时,可以提高存储器***110的数据输入/输出速度(或性能)。根据实施例,可以通过多核处理器中的不同内核来独立地执行存储器***110中的数据输入/输出(I/O)操作。
处理器134可以执行与从主机102输入的请求或命令相对应的操作。进一步地,存储器***110可以独立于从诸如主机102的外部装置输入的命令或请求。在一种情况下,控制器130响应于从主机102输入的请求或命令而执行的操作可以被视为前台操作,而由控制器130独立地(例如,在没有从主机102输入的请求或命令的情况下)执行的操作可以被视为后台操作。控制器130可以在存储器装置150中执行针对数据的读取、写入或编程、擦除等的前台操作或后台操作。另外,与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作可以被视为前台操作。作为在没有从主机102传输命令的情况下的后台操作,控制器130可以执行垃圾收集(GC)、损耗均衡(WL)、坏块管理,其中坏块管理用于识别和处理存储器装置150中的多个存储块152、154、156中的坏块。
根据实施例,基本相似的操作可以作为前台操作和后台操作两者来执行。例如,当存储器***110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动GC)时,垃圾收集可以被视为前台操作。当存储器***110独立于主机102执行垃圾收集(例如,自动GC)时,垃圾收集可以被视为后台操作。
当存储器装置150具有包括非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以被配置为执行关于从主机102输入的多个请求或命令的并行处理,以提高存储器***110的性能。例如,所传输的请求或命令可以被分配给存储器装置150中的多个管芯或多个芯片,并且同时进行处理。存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令,通过每个通道或每个通路将数据分布并存储在多个管芯中时,可以同时或并行执行与该请求或命令相对应的多个操作。这种处理方法或方案可以被视为交错方法。因为利用交错方法进行操作的存储器***110的数据输入/输出速度可以比未利用交错方法进行操作的存储器***110的数据输入/输出速度更快,所以可以提高存储器***110的数据I/O性能。
作为示例而非限制,控制器130可以识别关于与存储器装置150中的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可以将每个通道或每个通路的状态确定为诸如以下的一种:忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态。由控制器对通过哪个通道或通路来传递指令(和/或数据)的确定可以与物理块地址相关联,例如指令(和/或数据)被传递到哪个(哪些)管芯中。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述关于存储器装置150的一些信息的块参数或页面参数,描述符是具有设定格式或结构的数据。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定经由哪个通道(哪些通道)或哪个通路(哪些通路)来交换指令或数据。
存储器装置150可以包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是一起被擦除的一组非易失性存储器单元。存储块152、154、156可以包括多个页面,页面是一起读取或编程的一组非易失性存储器单元。在一个实施例中,每个存储块152、154、156可以具有三维堆叠结构以实现高集成度。进一步地,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块,例如存储器装置150中的所有存储块152、154、156中的一些。针对存储器***110的不同期望性能,存储器装置150的配置可以不同。
根据多个存储块152、154、156中的每一个中的一个存储器单元中可以存储或代表的位的数量,该存储块可以是单层单元(SLC)存储块或多层单元(MLC)存储块。SLC存储块包括由每个存储器单元存储一位数据的存储器单元实施的多个页面。SLC存储块可以具有较高的数据I/O操作性能和较高的耐用性。MLC存储块包括由每个存储器单元存储多位(例如,两位或更多位)数据的存储器单元实施的多个页面。与SLC存储块相比,在相同的空间内,MLC存储块可以具有更大的存储容量。因此,在存储容量方面,MLC存储块可以被高度集成。
在实施例中,存储器装置150可以利用诸如以下的MLC存储块来实施:双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块或其组合。双层单元(DLC)存储块可以包括由每个存储器单元能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可以包括由每个存储器单元能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可以包括由每个存储器单元能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个存储器单元能够存储5位或更多位数据的存储器单元实施的多个页面的块来实施。
根据实施例,控制器130可以在存储器***150中,使用多层单元(MLC)存储块作为SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可比SLC存储块的数据输入/输出速度慢。也就是说,当MLC存储块用作SLC存储块时,可以减少读取或编程操作的裕量(例如,操作定时裕量)。当使用MLC存储块作为SLC存储块时,控制器130可以利用MLC存储块的更快的数据输入/输出速度。例如,因为缓冲器可能需要较高的数据输入/输出速度来提高存储器***110的性能,所以控制器130可以使用MLC存储块作为缓冲器来临时存储数据条。
根据实施例,控制器130可以将多条数据多次地编程在多层单元(MLC)中,而无需对特定MLC存储块执行擦除操作。非易失性存储器单元具有不支持数据重写的特点。然而,控制器130可以使用MLC可以存储多位数据的特点,以便将多条1位数据多次地编程到MLC中。对于MLC的重写操作,当将单条1位数据编程到非易失性存储器单元中时,控制器130可以将编程次数存储为单独的操作信息。根据实施例,在将另一条数据重写到相同的非易失性存储器单元中之前,可以执行用于均匀地均衡非易失性存储器单元的阈值电压的操作。
在实施例中,存储器装置150可以被实现为诸如闪速存储器的非易失性存储器,例如,被实现为NAND闪速存储器、NOR闪速存储器等。在一个实施例中,存储器装置150可以由以下中的至少一种来实施:相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋注入磁性存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等。
参照图3,存储器***中的控制器130与主机102和存储器装置150一起操作。如图所示,除了先前结合图2标识的主机接口132、存储器接口142和存储器144之外,控制器130还包括闪存转换层(FTL)240。
根据实施例,图2中的错误校正电路138可以被包括在闪存转换层(FTL)240中。在另一实施例中,错误校正电路138可以被实施为包括在控制器130中的或与控制器130相关联的单独模块、电路或固件。
主机接口132可以能够处置从主机102传输的命令和数据。作为示例而非限制,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令和数据,并且例如,以命令和数据被存储的顺序将命令和数据输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令和数据进行分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令和数据的事件。
可以从主机102传输相同特性的多个命令或数据(例如,读取命令或写入命令),或者可以在主机102将不同特性的多个命令和数据混合或打乱之后,将它们传输到存储器***110。例如,可以将用于读取数据的多个命令(读取命令)传递到存储器***110,或者可以将用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)交替地传输到存储器***110。主机接口132可以将从主机102传输的命令、数据等顺序地存储到命令队列56。此后,主机接口132可以根据已经从主机102接收的命令和数据的特性来估计或预测控制器130将执行哪种内部操作。主机接口132可以至少基于命令和数据的特性来确定它们的处理顺序和优先级。
根据从主机102传输的命令和数据的特性,主机接口132中的缓冲器管理器52可以确定缓冲器管理器52是否应将命令和数据存储在存储器144中,或者确定缓冲器管理器52是否应将命令和数据传递到闪存转换层240中。事件队列54可以接收来自缓冲器管理器52的事件,这些事件将响应于从主机102传输的命令和数据而被存储器***110或控制器130内部地运行和处理,以便以接收的顺序将事件传递到闪存转换层240。
根据实施例,图3所示的闪存转换层(FTL)240可以实施多线程方案以执行数据输入/输出(I/O)操作。可以通过控制器130中的使用多线程的多核处理器来实施多线程FTL。
根据实施例,闪存转换层240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理来自事件队列54的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块运行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以根据从主机接口132传递的读取和编程命令以及事件,使用映射管理器(MM)44和块管理器48来处置或处理请求。主机请求管理器(HRM)46可以将查询请求发送到映射数据管理器(MM)44,以确定与事件一起接收的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可以将读取请求与物理地址一起发送到存储器接口142,以处理该读取请求(处置事件)。在一个实施例中,主机请求管理器(HRM)46可以将编程请求(写入请求)发送到块管理器48,以将数据编程到存储器装置150中的特定空页面(没有数据的页面),然后可以将与编程请求相对应的映射更新请求传输到映射管理器(MM)44,以便更新在将逻辑-物理地址相互映射的信息中的、与所编程的数据有关的项目。
块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以便管理存储器装置150中的闪存块。为了最大化或增强存储器***110的编程或写入性能,块管理器48可以收集编程请求并将用于多平面和单触发(one-shot)编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48将若干闪存编程请求发送到存储器接口142,以增强或最大化多通道和多方向闪存控制器的并行处理。
在一个实施例中,块管理器48可以被配置为根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定将要执行垃圾收集时,选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据从所选择的(多个)块移动到空块,并且擦除包含所移动的有效数据的(多个)块,使得块管理器48可以具有足够的空闲块(即,没有数据的空块)。当块管理器48将关于待擦除的块的信息提供到状态管理器42时,状态管理器42可以检查待擦除的块中的所有闪存页面以确定每个页面是否有效。
例如,为了确定每个页面的有效性,状态管理器42可以标识每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面,将编程请求发送到块管理器48。当编程操作完成时,可以通过更新映射管理器44来更新映射表。
映射管理器44可以管理逻辑-物理(L2P)映射表。映射管理器44可以处理由主机请求管理器(HRM)46或状态管理器42生成的、例如查询和更新的各种请求。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪存/非易失性存储器)中,并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器44可以将读取请求发送到存储器接口142以加载存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可以将编程请求发送到块管理器48,从而生成干净的高速缓存块,并且可以将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器42将(多个)有效页面复制到空闲块中,并且主机请求管理器46可以对相同逻辑地址的页面编程最新版本的数据,并且即时地发出更新请求。当状态管理器42在(多个)有效页面的复制尚未正确完成的状态下请求映射更新时,映射管理器44可不执行映射表更新。这是因为当状态管理器42请求映射更新并且稍后才完成有效页面复制时,发出的是具有旧物理信息的映射请求。当最新映射表仍指向旧物理地址时,或者仅在最新映射表仍指向旧物理地址的情况下,映射管理器44才可以执行映射更新操作以确保准确性。
图4示出了根据本公开的实施例的擦除码方法。作为示例,图4示出了由图1中的擦除码电路190中的擦除码器196执行的编码/解码操作。
参照图4,可以使用擦除码对原始数据进行编码,然后将其存储在存储器装置150中。首先,可以将原始数据划分为N个数据组块,即N个片段。通过对N个数据组块的编码操作,可以生成K个奇偶校验组块,即K个片段。此后,可以将包括N个数据组块和K个奇偶校验组块的(N+K)个组块,即(N+K)个片段存储在存储器装置150中。
当发生对原始数据的读取请求时,控制器130可以从存储器装置150读取(N+K)个组块,即(N+K)个片段。如图4所示,假设丢失了(N+K)个数据组块之中的一个数据组块和一个奇偶校验组块(即,具有不可校正的错误)。尽管丢失了(N+K)个组块之中的两个组块,但是可以通过使用擦除码的解码操作来还原和恢复N个数据组块,即N个片段。通过组合N个数据组块,存储器***110可以恢复原始数据。
根据实施例,针对在擦除码方法中采用的不同算法和擦除码,数据组块的数量、奇偶校验组块的数量以及可恢复容限可以不同。
参照图1至图4,为了将通过擦除码方法生成的多个组块存储在存储器装置150中,存储器***110可以被配置为独立磁盘冗余阵列(RAID)***,或者针对像数据中心的分布式处理***,采用诸如Ceph的平台。作为示例,图5示出了用于将通过擦除码方法生成的多个组块存储在存储器装置150中的方法。
参照图5,存储器装置150可以包括多个管芯Die_1至Die_q,其中q是2或更大的整数。多个管芯Die_1至Die_q可以分别通过多个通道CH_1至CH_q联接到控制器130。管芯Die_1至Die_q中的每一个可以包括多个平面Plane_1至Plane_p。平面Plane_1至Plane_p中的每一个可以分别通过不同的通路W_1至W_p联接到与管芯相关联的通道。多个通道CH_1至CH_q和多个通路W_1至W_p可以提供用于将多个平面Plane_1至Plane_p联接到控制器130的不同数据路径。
通过擦除码(EC)方法生成的多个组块C#1至C#p、…、C#j至C#y被分配并存储在存储器装置150的多个管芯Die_1至Die_q中的多个平面Plane_1至Plane_p中。多个组块中的至少一个组块(例如,C#1)可以具有由图1中的优先级检查器194分配的优先级。尽管未示出,但是优先级可以具有诸如标签或标识符的固定格式。进一步地,优先级可以以位图形式进行配置,或者与元数据一起存储。
根据实施例,通过擦除编码(EC)方法生成的多个组块C#1至C#p、…、C#j至C#y可以被分布并存储在存储器装置150中的多个平面Plane_1至Plane_p中的所有平面或一些平面中。根据实施例,控制器130可以提前确定是否将数据组块或者奇偶校验组块存储在存储器装置150中的多个平面Plane_1至Plane_p中。可选地,控制器130可以将数据组块或奇偶校验组块存储在基于组块的类型而分配的平面中。
图6示出了根据本公开的实施例的用于操作存储器***的方法。具体地,图6示出了存储器***110的采用擦除码方法的读取/写入操作。
参照图6,用于操作存储器***110的方法包括基于原始数据生成包括数据组块和奇偶校验组块的多个组块(342);对数据组块和奇偶校验组块分配不同的优先级(344);对存储器装置150中的多个存储器组中的数据组块和奇偶校验组块执行读取或编程操作(346)。
对存储器装置150中的数据组块和奇偶校验组块的编程或读取的成功可以不同于由图1中的擦除码器196执行的擦除解码(或由图2中的错误校正电路138执行的操作)的成功。对数据组块和奇偶校验组块编程或读取的成功可以包括:控制器130是否通过图1中的收发器198或图2至图3中的存储器接口142正常或正确地收集数据组块和奇偶校验组块(例如,数据组块和奇偶校验组块未丢失)。
当数据组块和奇偶校验组块被完整地编程到存储器装置150时,可以终止编程操作(350)。当成功地从存储器装置150读取了数据组块和奇偶校验组块时,可以通过执行擦除解码来还原原始数据(350)。
如果在读取操作或写入操作期间,数据组块和奇偶校验组块中的至少一个发生读取失败或编程失败,则控制器130可以尝试根据分配给数据组块和奇偶校验组块的优先级来恢复失败的(多个)组块(348)。例如,当奇偶校验组块发生读取失败或写入失败时,可以延迟针对失败的奇偶校验组块的恢复操作。另一方面,当数据组块发生读取失败或写入失败时,可以立即执行针对失败的数据组块的恢复操作。根据实施例,当数据组块发生读取失败或写入失败时,可以调整用于执行恢复操作的定时器,以提前进行恢复操作。可选地,控制器130可以调整用于确定是否执行恢复操作的阈值。
在下文中,将参照图7至图10来描述以下内容:基于分配给(多个)数据组块和(多个)奇偶校验组块的不同优先级,操作存储器***110的方法可以不同。在图7至图9中,假设基于原始数据,通过擦除编码(EC)方法生成了四个数据组块和两个奇偶校验组块,并且将所有的六个组块分别存储在六个平面Plane1至Plane6中。参照图7至图9,基于第一原始数据、通过擦除编码(EC)方法生成的四个数据组块1DC#1、1DC#2、1DC#3、1DC#4和两个奇偶校验组块1PC#1、1PC#2分别存储在存储器装置150的六个平面Plane1至Plane6中。另外,基于第二原始数据、通过擦除编码(EC)方法生成的四个数据组块2DC#1、2DC#2、2DC#3、2DC#4和两个奇偶校验组块2PC#1、2PC#2可以分别存储在六个平面Plane1至Plane6中。也就是说,每个平面存储第一原始数据组块中的相应组块以及第二原始数据组块中的相应组块。
图7示出了根据本公开的实施例的操作存储器***的方法的第一示例。
参照图7,在六个平面Plane1至Plane6之中的第三平面Plane3中发生临时或长期缺陷的情况下,当控制器130对分别与第一原始数据或第二原始数据相关联的第一奇偶校验组块1PC#1或2PC#1执行读取操作时,可能发生读取失败。尽管奇偶校验组块中的一些已经发生了读取失败,但是控制器130可确定可以基于正常或正确地收集的四个数据组块1DC#1至1DC#4或2DC#1至2DC#4来还原或恢复第一原始数据或第二原始数据。在这种情况下,控制器130可以延迟关于第一奇偶校验组块1PC#1或2PC#1的读取失败的恢复操作。
图8示出了根据本公开的实施例的用于操作存储器***的方法的第二示例。
参照图8,在六个平面Plane1至Plane6之中的第四平面Plane4中发生临时或长期缺陷的情况下,当控制器130对分别与第一原始数据或第二原始数据相关联的第三数据组块1DC#3或2DC#3执行读取操作时,可能发生读取失败。因为数据组块已经发生了读取失败,所以控制器130可以确定存储器装置150中存储的数据的安全性较低。根据实施例,控制器130可以收集正常读取的三个数据组块1DC#1至1DC#2、1DC#4或2DC#1至2DC#2、2DC#4以及两个奇偶校验组块1PC#1至1PC#2或2PC#1至2PC#2。基于所收集的组块,控制器130可以确定可以完全执行用于还原第一原始数据或第二原始数据的擦除解码。根据实施例,控制器130可以立即对第三数据组块1DC#3或2DC#3的读取失败执行恢复操作,或者调整能够延迟或提前对第三数据组块1DC#3或2DC#3的读取失败的恢复操作的定时器或阈值。
图9示出了根据本公开的实施例的用于操作存储器***的方法的第三示例。
参照图9,在六个平面Plane1至Plane6之中的第二平面Plane2和第六平面Plane6中发生临时或长期缺陷的情况下,当控制器130对分别与第一原始数据或第二原始数据相关联的第二数据组块1DC#2或2DC#2以及第二奇偶校验组块1PC#2或2PC#2执行读取操作时,可能发生读取失败。因为数据组块和奇偶校验组块发生读取失败,所以控制器130可以确定存储器装置150中存储的数据的安全性较低。根据实施例,当满足图4所示的可恢复容限时,控制器130可以基于三个数据组块1DC#1、1DC#3至1DC#4或2DC#1、2DC#3至2DC#4以及一个奇偶校验组块1PC#1或2PC#1,立即执行用于还原第一原始数据或第二原始数据的擦除解码。另外,根据实施例,控制器130可以针对第二数据组块1DC#2或2DC#2的读取失败执行恢复操作,第二数据组块1DC#2或2DC#2具有高于第二奇偶校验组块1PC#2或2PC#2的优先级。也就是说,在对第二奇偶校验组块1PC#2或2PC#2执行恢复操作之前,对第二数据组块1DC#2或2DC#2执行恢复操作。
图10示出了根据本公开的实施例的用于操作存储器***的方法的第四示例。在图10中,假设基于原始数据,通过擦除码(EC)方法生成了四个数据组块和两个奇偶校验组块,并且将总共六个组块存储在四个平面Plane1至Plane4中。参照图10,基于第一原始数据、通过擦除码(EC)方法生成了四个数据组块1DC#1、1DC#2、1DC#3、1DC#4和两个奇偶校验组块1PC#1、1PC#2,并且如图10所示,这些组块被分布并存储在存储器装置150的四个平面Plane1至Plane4中。另外,控制器130可以对第二原始数据执行擦除码(EC)方法以生成四个数据组块2DC#1、2DC#2、2DC#3、2DC#4和两个奇偶校验组块2PC#1、2PC#2,然后将这些组块存储在四个平面Plane1至Plane4中。根据实施例,可以顺序地或随机地存储组块。
参照图10,假设四个平面Plane1至Plan4之中的第三平面Plane3中发生临时或长期缺陷。在响应于对第一原始数据的请求而执行操作时,控制器130可以收集与第一原始数据相关联的六个组块。但是,与第一原始数据关联的第一奇偶校验组块1PC#1可能发生读取失败。尽管奇偶校验组块发生了读取失败,但是控制器130可以确定基于正常收集的四个数据组块1DC#1至1DC#4来还原第一原始数据不会失败。在这种情况下,控制器130可以延迟对第一奇偶校验组块1PC#1的读取失败的恢复操作。
在响应于对第二原始数据的请求而执行操作时,控制器130可以收集与第二原始数据相关联的六个组块。但是,第二原始数据的第一数据组块2DC#1和第四数据组块2DC#4可能发生读取失败。因为数据组块已经发生了读取失败,所以控制器130可以确定存储器装置150中存储的数据的安全性较低。根据实施例,当满足可恢复容限时,控制器130可以基于正常收集的两个数据组块2DC#2、2DC#3和两个奇偶校验组块2PC#1、2PC#2,通过擦除解码来还原第二原始数据。另外,根据实施例,控制器130可以立即针对第一数据组块2DC#1和第四数据组块2DC#4的读取失败执行恢复操作。进一步地,控制器130可以调整定时器或阈值,以使得更快地进行恢复操作。
根据实施例,响应于赋予到数据组块和奇偶校验组块的优先级,相比于对与第二原始数据相关联的第一数据组块2DC#1和第四数据组块2DC#4的读取失败的恢复操作,对与第一原始数据相关联的第一奇偶校验组块(1PC#1)的读取失败的恢复操作可被延迟更多。在控制器130使用赋予到数据组块和奇偶校验组块的优先级的、对读取失败的延迟恢复方案中,存储器***110可以通过相比于奇偶校验组块,更快地恢复数据组块来提高数据访问性能。另外,通过使数据组块的恢复优先于奇偶校验组块的恢复,存储器***110可以减少对用于恢复操作的资源的争用,从而实现快速恢复并增加数据访问速度。
在根据本公开的实施例的存储器***中,当非易失性存储器装置中的数据读取/写入操作失败时,可以基于根据擦除码方法生成的数据组块还是奇偶校验组块中是否发生错误,来更快地执行对原始数据的恢复操作。
另外,根据本公开的另一实施例的存储器***可以对根据擦除码方法生成的数据组块和奇偶校验组块分配不同的优先级或权重,控制资源分配以恢复输入到非易失性存储器装置或从非易失性存储器装置输出的组块,并且提高存储器***的操作性能或输入/输出性能。
尽管已经针对特定实施例示出并描述了本教导,但是根据本公开,对于本领域技术人员而言显而易见的是,在不脱离所附权利要求中定义的本发明的思想和范围的情况下,可以进行各种改变和修改。
Claims (20)
1.一种存储器***,包括:
非易失性存储器装置,包括存储多个组块的多个存储器组;以及
控制器,基于原始数据生成包括数据组块和奇偶校验组块的所述多个组块,对所述数据组块和所述奇偶校验组块分配不同的优先级,并且当针对所述多个组块之中的至少一个组块的操作失败时,基于所述优先级来恢复所述至少一个组块。
2.根据权利要求1所述的存储器***,其中所述控制器将所述多个组块编程到所述多个存储器组之中的不同组中,所述多个存储器组包括经由不同的数据路径联接到所述控制器的多个管芯或多个平面。
3.根据权利要求1所述的存储器***,其中所述控制器将所述原始数据划分为m个数据组块,基于所述m个数据组块和擦除码来生成k个奇偶校验组块,其中m和k是正整数,并且m大于k。
4.根据权利要求3所述的存储器***,其中当所述多个组块之中的至少m个组块的读取或编程操作成功并且所述多个组块之中的少于k个组块的读取或编程操作失败时,所述控制器基于所述至少m个组块来恢复所述原始数据。
5.根据权利要求3所述的存储器***,其中当所述m个数据组块的读取或编程操作成功并且所述k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,所述控制器基于所述m个数据组块来恢复所述原始数据。
6.根据权利要求3所述的存储器***,其中在所述m个数据组块之中的至少一个组块的读取或编程操作已经失败之后,所述控制器减少用于确定所述数据组块和所述奇偶校验组块的读取或编程操作是否成功的操作裕量。
7.根据权利要求3所述的存储器***,其中当所述m个数据组块之中的至少一个组块的读取或编程操作失败时,所述控制器将基于所述m个数据组块和所述k个奇偶校验组块来恢复所述原始数据的操作定时提前。
8.根据权利要求3所述的存储器***,其中当所述m个数据组块之中的至少一个数据组块和所述k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,所述控制器重试失败的、具有比所述至少一个奇偶校验组块更高优先级的所述至少一个数据组块的读取或编程操作。
9.根据权利要求1所述的存储器***,其中所述控制器生成标识符,以将所述多个组块中的每个组块标识为数据组块或奇偶校验组块。
10.根据权利要求9所述的存储器***,其中所述控制器将所述多个组块中的每个组块的标识符添加到相应组块的元数据中。
11.根据权利要求9所述的存储器***,其中所述控制器基于所述标识符,对所述多个存储器组中的每个存储器组分配一个或多个所述数据组块或者一个或多个所述奇偶校验组块,并且将至少一个组块编程到存储器组中。
12.一种操作存储器***的方法,包括:
基于原始数据生成包括数据组块和奇偶校验组块的多个组块;
对所述数据组块和所述奇偶校验组块分配不同的优先级;并且
当针对存储器装置中的多个存储器组中的任意一个存储器组中的、所述多个组块之中的至少一个组块的操作失败时,基于所述优先级来恢复所述至少一个组块。
13.根据权利要求12所述的方法,进一步包括:
将所述多个组块编程到所述多个存储器组之中的不同组中,所述多个存储器组包括经由不同的数据路径联接到所述控制器的多个管芯或多个平面。
14.根据权利要求13所述的方法,其中生成所述多个组块包括:
将所述原始数据划分为m个数据组块;并且
基于所述m个数据组块和擦除码来生成k个奇偶校验组块,其中m和k是正整数,并且m大于k。
15.根据权利要求14所述的方法,进一步包括:
当所述多个组块之中的至少m个组块的读取或编程操作成功并且所述多个组块之中的少于k个组块的读取或编程操作失败时,基于所述至少m个组块来恢复所述原始数据。
16.根据权利要求14所述的方法,进一步包括:
当所述多个组块之中的m个数据组块的读取或编程操作成功并且所述k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,基于所述m个数据组块来恢复所述原始数据。
17.根据权利要求14所述的方法,进一步包括:
在所述m个数据组块之中的至少一个组块的读取或编程操作已经失败之后,减少用于确定所述数据组块和所述奇偶校验组块的读取或编程操作是否成功的操作裕量。
18.根据权利要求14所述的方法,进一步包括:
当所述m个数据组块之中的至少一个组块的读取或编程操作失败时,将基于所述m个数据组块和所述k个奇偶校验组块来恢复所述原始数据的操作定时提前。
19.根据权利要求14所述的方法,进一步包括:
当所述m个数据组块之中的至少一个数据组块和所述k个奇偶校验组块之中的至少一个奇偶校验组块的读取或编程操作失败时,重试失败的、具有比所述至少一个奇偶校验组块更高优先级的所述至少一个数据组块的读取或编程操作。
20.根据权利要求12所述的方法,其中分配不同的优先级包括:
生成标识符,以将所述多个组块中的每个组块标识为数据组块或奇偶校验组块;并且
将所述多个组块中的每个组块的标识符添加到相应组块的元数据中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200049392A KR20210131058A (ko) | 2020-04-23 | 2020-04-23 | 메모리 시스템 내 데이터를 보호하는 장치 및 방법 |
KR10-2020-0049392 | 2020-04-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113553631A true CN113553631A (zh) | 2021-10-26 |
Family
ID=78130060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110032136.0A Pending CN113553631A (zh) | 2020-04-23 | 2021-01-11 | 用于在存储器***中保护数据的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11360697B2 (zh) |
KR (1) | KR20210131058A (zh) |
CN (1) | CN113553631A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11399084B2 (en) * | 2020-05-12 | 2022-07-26 | Nxp Usa, Inc. | Hot plugging of sensor |
CN114816227A (zh) * | 2021-01-29 | 2022-07-29 | 伊姆西Ip控股有限责任公司 | 用于数据重建的方法、设备和程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130238836A1 (en) * | 2012-03-06 | 2013-09-12 | Hitachi, Ltd. | Semiconductor storage device having nonvolatile semiconductor memory |
US20140281138A1 (en) * | 2013-03-15 | 2014-09-18 | Vijay Karamcheti | Synchronous mirroring in non-volatile memory systems |
US20140372667A1 (en) * | 2013-06-14 | 2014-12-18 | Phison Electronics Corp. | Data writing method, memory controller and memory storage apparatus |
US20160055054A1 (en) * | 2014-08-21 | 2016-02-25 | Datrium, Inc. | Data Reconstruction in Distributed Data Storage System with Key-Based Addressing |
CN106170773A (zh) * | 2014-01-09 | 2016-11-30 | 桑迪士克科技有限责任公司 | 用于裸芯上缓冲式非易失性存储器的选择性回拷 |
US20180115617A1 (en) * | 2016-10-26 | 2018-04-26 | International Business Machines Corporation | Estimating relative data importance in a dispersed storage network |
US20180129600A1 (en) * | 2016-11-04 | 2018-05-10 | Toshiba Memory Corporation | Memory system and control method |
US20190391889A1 (en) * | 2018-06-22 | 2019-12-26 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10298957B2 (en) | 2010-10-06 | 2019-05-21 | International Business Machines Corporation | Content-based encoding in a multiple routing path communications system |
EP3262500A4 (en) * | 2015-02-26 | 2018-10-03 | Agency For Science, Technology And Research | Data stripping, allocation and reconstruction |
-
2020
- 2020-04-23 KR KR1020200049392A patent/KR20210131058A/ko unknown
- 2020-11-10 US US17/094,152 patent/US11360697B2/en active Active
-
2021
- 2021-01-11 CN CN202110032136.0A patent/CN113553631A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130238836A1 (en) * | 2012-03-06 | 2013-09-12 | Hitachi, Ltd. | Semiconductor storage device having nonvolatile semiconductor memory |
US20140281138A1 (en) * | 2013-03-15 | 2014-09-18 | Vijay Karamcheti | Synchronous mirroring in non-volatile memory systems |
US20140372667A1 (en) * | 2013-06-14 | 2014-12-18 | Phison Electronics Corp. | Data writing method, memory controller and memory storage apparatus |
CN106170773A (zh) * | 2014-01-09 | 2016-11-30 | 桑迪士克科技有限责任公司 | 用于裸芯上缓冲式非易失性存储器的选择性回拷 |
US20160055054A1 (en) * | 2014-08-21 | 2016-02-25 | Datrium, Inc. | Data Reconstruction in Distributed Data Storage System with Key-Based Addressing |
US20180115617A1 (en) * | 2016-10-26 | 2018-04-26 | International Business Machines Corporation | Estimating relative data importance in a dispersed storage network |
US20180129600A1 (en) * | 2016-11-04 | 2018-05-10 | Toshiba Memory Corporation | Memory system and control method |
US20190391889A1 (en) * | 2018-06-22 | 2019-12-26 | Seagate Technology Llc | Allocating part of a raid stripe to repair a second raid stripe |
Also Published As
Publication number | Publication date |
---|---|
KR20210131058A (ko) | 2021-11-02 |
US20210334034A1 (en) | 2021-10-28 |
US11360697B2 (en) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11756643B2 (en) | Apparatus and method for correcting an error in data transmission of a data processing system | |
US20210279180A1 (en) | Apparatus and method for controlling map data in a memory system | |
CN113867995A (zh) | 处理坏块的存储器***及其操作方法 | |
CN114333953A (zh) | 存储器***中用于控制读取电压的装置和方法 | |
CN113138873A (zh) | 处置存储器***中的数据错误的设备和方法 | |
CN113495852A (zh) | 控制存储器***中的映射数据的设备和方法 | |
US11360697B2 (en) | Apparatus and method for encoding and decoding operations to protect data stored in a memory system | |
US11620213B2 (en) | Apparatus and method for handling data stored in a memory system | |
US11507501B2 (en) | Apparatus and method for transmitting, based on assignment of block to HPB region, metadata generated by a non-volatile memory system | |
CN114579040A (zh) | 用于保持在存储器***中存储的数据的设备和方法 | |
CN113849121A (zh) | 用于访问条带形式的数据的存储器***及其操作方法 | |
US20230333750A1 (en) | Apparatus and method for power-loss data protection in a system | |
US20230376212A1 (en) | Apparatus and method for recovering data in a memory system | |
US11798648B2 (en) | Apparatus and method for recovering data in a memory system | |
US20230153032A1 (en) | Apparatus and method for improving data input/output performance of storage | |
US11941289B2 (en) | Apparatus and method for checking an error of a non-volatile memory device in a memory system | |
US11704281B2 (en) | Journaling apparatus and method in a non-volatile memory system | |
TW202318211A (zh) | 用於編程資料的記憶體裝置和記憶體系統 | |
CN115756298A (zh) | 用于控制数据处理***中的共享存储器的设备和方法 | |
CN114153372A (zh) | 在存储器***中控制和存储映射数据的设备和方法 | |
CN113687769A (zh) | 用于提高数据处理***中的操作效率的设备和方法 | |
US11854657B2 (en) | Memory device and memory system supporting interleaving operation and operation method thereof | |
US11775426B2 (en) | Apparatus and method for securing a free memory block in a memory system | |
US12032843B2 (en) | Apparatus and method for increasing operation efficiency in data processing system | |
US20240126462A1 (en) | Apparatus and method for managing map data between host and memory system |
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 |