CN117931055A - 在多个存储器区域中分配和存储写入数据的设备和方法 - Google Patents

在多个存储器区域中分配和存储写入数据的设备和方法 Download PDF

Info

Publication number
CN117931055A
CN117931055A CN202311375753.6A CN202311375753A CN117931055A CN 117931055 A CN117931055 A CN 117931055A CN 202311375753 A CN202311375753 A CN 202311375753A CN 117931055 A CN117931055 A CN 117931055A
Authority
CN
China
Prior art keywords
parity
memory
data
entry
entries
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
Application number
CN202311375753.6A
Other languages
English (en)
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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN117931055A publication Critical patent/CN117931055A/zh
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及一种存储器控制器。存储器控制器经由至少一个数据路径联接到用于分配和存储多个数据条目的多个存储器区域。存储器控制器包括奇偶校验生成电路,该奇偶校验生成电路被配置为:基于多个数据条目被传输到多个存储器区域的顺序对多个数据条目执行逻辑运算,以生成奇偶校验条目;并且将存储在多个存储器区域中的多个数据条目的位置信息添加到奇偶校验条目中。

Description

在多个存储器区域中分配和存储写入数据的设备和方法
相关申请的交叉引用
本专利申请要求2022年10月24日提交的申请序列号为63/418,844的美国临时申请和2023年10月5日提交的申请号为10-2023-0132292的韩国专利申请的优先权的利益,这两件申请的全部公开内容通过引用并入本文。
技术领域
本文所描述的本公开的一个或多个实施例涉及一种存储器系统或存储器装置及其操作方法,更具体地,涉及在存储器装置的多个区域中分配和编程写入数据的设备和方法。
背景技术
数据处理系统包括存储器系统或数据存储装置。数据处理系统可以被开发为将更多的海量数据存储在数据存储装置中、更快地将数据存储在数据存储装置中以及更快地读取存储在数据存储装置中的数据。存储器系统或数据存储装置可以包括用于存储数据的非易失性存储器单元和/或易失性存储器单元。为了提高数据安全性,可以将数据分配并存储在存储器装置的多个区域中。
发明内容
本公开的实施例可以提供一种包括存储器装置的存储器系统、包括存储器系统的数据处理系统以及操作过程或方法,其可以通过降低存储器系统的操作复杂性和性能劣化来快速且可靠地将数据处理到存储器装置中,从而提高存储器装置的使用效率。
本公开的实施例可以提供一种设备或方法,其用于将写入数据分配到存储器装置中的多个区域,以提高存储在存储器装置中的数据的可靠性或安全性。
根据本公开的实施例的存储器系统可以减少在存储器装置中对写入数据进行编程的数据编程操作期间用于生成与分配到多个区域中的多个数据条目相关联的奇偶校验条目的内部资源。
根据本公开的实施例的存储器系统可以动态地确定与单个奇偶校验条目相关联的数据条目的数量,从而使数据输入/输出操作不受从外部装置输入的写入命令的模式或写入数据的大小的影响。
根据本公开的实施例的存储器系统可以减少在存储器装置中分配和存储大量数据的过程中出现的开销。
本发明的实施例可以提供一种存储器控制器,该存储器控制器经由至少一个数据路径联接到用于分配和存储多个数据条目的多个存储器区域。存储器控制器可以包括奇偶校验生成电路,该奇偶校验生成电路被配置为:基于多个数据条目被传输到多个存储器区域的顺序对多个数据条目执行逻辑运算,以生成奇偶校验条目;并且将存储在多个存储器区域中的多个数据条目的位置信息添加到奇偶校验条目中。
多个数据条目和奇偶校验条目可以构成单个奇偶校验组。多个数据条目中的每个数据条目可以包括关于单个奇偶校验组的信息。
奇偶校验条目可以包括指示多个数据条目的数量的信息。
多个存储器区域中的每个存储器区域可以根据联接到包括在存储器平面中的单个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来区分。
多个存储器区域的数量可以对应于开放存储块的数量。
多个存储器区域可以包括奇偶校验存储块,该奇偶校验存储块被配置为存储奇偶校验条目,而不存储多个数据条目。
逻辑运算可以是异或(XOR)运算。
奇偶校验生成电路可以包括:计算电路,被配置为执行逻辑运算;以及缓冲器,联接到计算电路,并且被配置为提供逻辑运算的先前结果并存储逻辑运算的当前结果。
缓冲器可以被配置为存储大小与跨时编程在多个存储器区域中的数据相对应的数据。
缓冲器的大小可以等于或小于包括在多个存储器区域中或联接到多个存储器区域的页面缓冲器的大小。
当存储器控制器擦除多个数据条目之中的至少一个数据条目时,奇偶校验生成电路可以被配置为:对至少一个数据条目和奇偶校验条目执行逻辑运算;从奇偶校验条目中移除关于至少一个数据条目的位置信息;并且输出更新后的奇偶校验条目以存储在多个存储器区域中。
存储器控制器可以对多个存储器区域中的至少一些存储器区域执行垃圾收集或损耗均衡。
垃圾收集可以包括:对存储在至少一些存储器区域中并且无效的第一数据条目和与第一数据条目相关联的第一奇偶校验条目执行的至少一次逻辑运算;擦除第一奇偶校验条目中第一数据条目的第一物理地址的操作;以及在第一奇偶校验条目中添加第二物理地址的操作,该第二物理地址指示存储在至少一些存储器区域中并且有效的第二数据条目被迁移的位置。
存储器控制器可以进一步包括闪存转换层,该闪存转换层被配置为:建立包括多个数据条目和奇偶校验条目的奇偶校验组;确定多个数据条目和奇偶校验条目被存储的位置;并且将奇偶校验组和位置传送到奇偶校验生成电路。
闪存转换层可以进一步被配置为基于待存储在多个存储器区域中的数据的量来改变包括在奇偶校验组中的数据条目的数量。
闪存转换层可以被配置为:在识别出多个数据条目中的至少一个中的错误之后,搜索与多个数据条目相关联的奇偶校验条目,基于包括在奇偶校验条目中多个数据条目的位置信息顺序地读取多个数据条目。奇偶校验生成电路可以被配置为对奇偶校验条目和读取的多个数据条目执行逻辑运算。
在另一实施例中,一种存储器系统可以包括:多个存储器区域,包括分配和存储多个数据条目以解决不可校正的错误校正码(UECC)的多个存储器管芯、多个存储器平面或多个存储块;以及存储器控制器,包括奇偶校验生成电路,该奇偶校验生成电路被配置为根据多个数据条目被传输到多个存储器区域的顺序对多个数据条目执行逻辑运算,以生成奇偶校验条目,该存储器控制器被配置为改变逻辑运算中涉及的多个数据条目的数量。
多个存储器区域可以经由多个通道联接到存储器控制器。
数据条目可以包括元数据、奇偶校验组信息、用户数据和奇偶校验数据。奇偶校验组信息可以指示数据条目属于哪个奇偶校验组。奇偶校验数据可以基于ECC模块使用的错误校正码而生成。
奇偶校验条目可以包括:逻辑运算的结果;以及指示多个数据条目在多个存储器区域中存储的位置的物理地址
奇偶校验条目可以包括关于多个数据条目的数量的信息。
多个存储器区域中的每个存储器区域可以基于联接到存储器平面中的单个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来相互区分。
多个存储器区域的数量可以对应于开放存储块的数量。
多个存储器区域包括奇偶校验存储块,该奇偶校验存储块被配置为存储奇偶校验条目,而不存储多个数据条目。
逻辑运算可以是异或(XOR)运算。
奇偶校验生成电路可以包括:计算电路,被配置为执行逻辑运算;以及缓冲器,联接到计算电路,并且被配置为提供逻辑运算的先前结果并存储逻辑运算的当前结果。
缓冲器可以被配置为存储大小与跨时编程在多个存储器区域中的数据相对应的数据。
缓冲器的大小可以等于或小于包括在多个存储器区域中或联接到多个存储器区域的页面缓冲器的大小。
当存储器控制器擦除多个数据条目之中的至少一个数据条目时,奇偶校验生成电路可以被配置为:对至少一个数据条目和奇偶校验条目执行逻辑运算;从奇偶校验条目中移除关于至少一个数据条目的位置信息;并且输出更新后的奇偶校验条目以存储在多个存储器区域中。
存储器控制器可以对多个存储器区域中的至少一些存储器区域执行垃圾收集或损耗均衡。
垃圾收集可以包括:对存储在至少一些存储器区域中并且无效的第一数据条目和与第一数据条目相关联的第一奇偶校验条目执行的至少一次逻辑运算;擦除第一奇偶校验条目中第一数据条目的第一物理地址的操作;以及在第一奇偶校验条目中添加第二物理地址的操作,该第二物理地址指示存储在至少一些存储器区域中并且有效的第二数据条目被迁移的位置。
存储器控制器可以包括闪存转换层,该闪存转换层被配置为:建立包括多个数据条目和奇偶校验条目的奇偶校验组;确定多个数据条目和奇偶校验条目被存储的位置;并且将奇偶校验组和位置传送到奇偶校验生成电路。
闪存转换层可以被配置为:在识别出多个数据条目中的至少一个中的错误之后,搜索与多个数据条目相关联的奇偶校验条目,基于包括在奇偶校验条目中多个数据条目的位置信息顺序地读取多个数据条目。奇偶校验生成电路可以被配置为对奇偶校验条目和读取的多个数据条目执行逻辑运算。
与多个存储器区域中的至少一个中包括的单个字线联接的两个单元串中存储的两个数据条目可以属于不同的奇偶校验组。
在另一实施例中,一种存储器装置可以包括多个存储器管芯,该多个存储器管芯被配置为分配并存储属于单个奇偶校验组的多个数据条目和至少一个奇偶校验条目。存储在多个存储器管芯的相同位置处的数据条目可以属于不同的奇偶校验组。
相同位置可以由相同存储器平面地址、相同字线地址和相同单元串地址确定。
多个数据条目中的每个数据条目可以包括关于单个奇偶校验组的信息。
至少一个奇偶校验条目可以包括关于多个数据条目被存储的位置的信息。
至少一个奇偶校验条目可以包括关于多个数据条目的数量的信息。
多个存储器管芯之中的至少一个存储器管芯可以被配置为仅存储奇偶校验条目。
多个存储器管芯中包括的每个存储器单元可以存储多位数据。相同位置可以由多位数据的相同位位置确定。
与多个存储器管芯中的至少一个中包括的单个字线联接的两个单元串中存储的两个数据条目可以属于不同的奇偶校验组。
在另一实施例中,一种奇偶校验生成器可以包括:计算电路,被配置为对待经由至少一个数据路径传送到多个存储器区域以进行单触发(one-shot)编程操作的多个数据条目顺序地执行逻辑运算;以及缓冲器,联接到计算电路,并且被配置为提供逻辑运算的先前结果并存储逻辑运算的当前结果。
计算电路可以进一步被配置为存储多个数据条目在缓冲器中存储的位置的信息。
奇偶校验生成器可以被配置为生成奇偶校验条目,该奇偶校验条目包括存储在缓冲器中的当前结果和位置的信息。
多个存储器区域中的每个存储器区域可以根据联接到包括在存储器平面中的单个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来区分。
多个存储器区域的数量对应于开放存储块的数量。
逻辑运算可以是异或(XOR)运算。
缓冲器可以被配置为存储大小与跨时编程在多个存储器区域中的数据相对应的数据。
缓冲器的大小可以等于或小于包括在多个存储器区域中或联接到多个存储器区域的页面缓冲器的大小。
在另一实施例中,一种操作存储器系统的方法可以包括:确定多个数据条目分配并存储在多个存储器区域中的位置;基于位置对多个数据条目进行分类和传输;对多个数据条目中的一个数据条目和先前结果执行逻辑运算;用逻辑运算的当前结果来更新先前结果;记录指示该位置的地址;以及生成包括当前结果和地址的奇偶校验条目。可以对多个数据条目中的每个数据条目重复执行逻辑运算、更新和记录。
操作存储器系统的方法可以进一步包括:确定包括多个数据条目和奇偶校验条目的奇偶校验组;以及将指示奇偶校验组的信息添加到数据条目中。
操作存储器系统的方法可以进一步包括:响应于待存储在多个存储器区域中的数据量,改变属于奇偶校验组的多个数据条目的数量。
操作存储器系统的方法可以进一步包括:响应于待存储在多个存储器区域中的数据量,改变属于奇偶校验组的多个数据条目的数量。
操作存储器系统的方法可以进一步包括:将多个数据条目和奇偶校验条目顺序地传送到多个存储器区域;以及将多个数据条目和奇偶校验条目编程在多个存储器区域中。
多个数据条目中的每个数据条目可以包括元数据、奇偶校验组信息、用户数据和奇偶校验数据。奇偶校验组信息可以指示数据条目所属的奇偶校验组。奇偶校验数据可以基于ECC模块使用的错误校正码而生成。
操作存储器系统的方法可以进一步包括:在奇偶校验条目中添加关于多个数据条目的数量的信息。
多个存储器区域中的每个存储器区域可以根据连接到存储器平面中的一个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来区分。
多个存储器区域的数量可以对应于开放存储块的数量。此外,多个存储器区域可以包括奇偶校验存储块,该奇偶校验存储块仅存储奇偶校验条目,而不存储多个数据条目。此外,逻辑运算可以是异或(XOR)运算。
操作存储器系统的方法可以进一步包括:为逻辑运算分配缓冲器。
缓冲器可以被设置为存储待跨时编程在多个存储器区域中的数据大小。此外,缓冲器的大小可以等于或小于与多个存储器区域联接或接合的页面缓冲器的大小。
在另一实施例中,一种操作存储器系统的方法可以包括:基于与外部输入或内部生成的擦除命令相对应的擦除目标地址,从存储器装置读取数据条目;基于包括在数据条目中的奇偶校验组信息,从存储器装置读取奇偶校验条目;通过对包括在数据条目中的用户数据和包括在奇偶校验条目中的奇偶校验值执行逻辑运算来更新奇偶校验值;移除奇偶校验条目中的擦除目标地址;以及将更新后的奇偶校验条目存储在存储器装置中。
存储器装置可以包括多个存储器区域,多个存储器区域包括分配并存储多个数据条目以解决错误(UECC)的多个存储器管芯、多个存储器平面或多个存储块。此外,多个存储器区域中的每个存储器区域可以根据连接到存储器平面中的一个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来区分。此外,逻辑运算可以是异或(XOR)运算。
在另一实施例中,一种操作存储器系统的方法可以包括:确定存储器装置中用于垃圾收集的目标块;读取目标块的有效数据条目和无效数据条目,并将有效数据条目和无效数据条目存储在垃圾收集缓冲器中;从存储器装置读取与有效数据条目和无效数据条目相对应的至少一个奇偶校验条目;通过对无效数据条目和与无效数据条目相对应的至少一个奇偶校验条目执行逻辑运算来更新奇偶校验值,并从至少一个奇偶校验条目中移除无效数据条目的物理地址;将有效数据条目的存储位置添加到与有效数据条目相对应的至少一个奇偶校验条目中;以及将更新后的至少一个奇偶校验条目存储在存储器装置中。
附图说明
本文中的描述参照了附图,其中在所有附图中,相同的附图标记指代相同的部分。
图1示出根据本公开的实施例的数据处理系统。
图2示出根据本公开实施例的存储器系统。
图3示出根据本公开的另一实施例的存储器系统。
图4示出根据本公开的另一实施例的适用于存储器装置的独立(或廉价)磁盘冗余阵列(RAID)。
图5示出如何将多个数据条目分配和存储在存储器装置中的第一实施例。
图6示出根据本公开的另一实施例的存储器装置。
图7示出根据本公开的另一实施例的存储器装置。
图8示出如何将多个数据条目分配和存储在存储器装置中的第二示例。
图9示出存储器装置中的奇偶校验组的第一示例。
图10示出存储器装置中的奇偶校验组的第二示例。
图11示出存储器装置中的奇偶校验组的第三示例。
图12示出存储器装置中的奇偶校验组的第四示例。
图13示出存储器装置中的错误校正的第一示例。
图14示出存储器装置中的错误校正的第二示例。
图15示出存储器装置中的错误校正的第三示例。
图16示出存储器装置中的错误校正的第四示例。
图17示出用于生成存储在存储器装置中的奇偶校验条目的计算和缓冲器大小。
图18示出根据本公开的另一实施例的存储器系统中包括的奇偶校验生成电路。
图19示出根据本公开的另一实施例的存储器系统中的写入操作。
图20示出根据本公开的另一实施例的如何在存储器系统中生成奇偶校验条目。
图21示出根据本公开的另一实施例的如何管理或控制存储器系统中的奇偶校验组。
图22示出根据本公开的另一实施例的存储器系统中的奇偶校验生成引擎。
图23示出根据本公开的另一实施例的存储器装置中的写入数据的数据结构。
图24示出在奇偶校验生成电路中生成元数据的操作。
图25示出奇偶校验生成电路中的缓冲器。
图26示出包括奇偶校验生成电路的存储器系统中的数据条目结构和写入操作。
图27示出由奇偶校验生成电路生成并存储在存储器装置中的奇偶校验条目。
图28示出奇偶校验条目中指示存储多个数据条目的位置的物理地址。
图29示出存储在存储器装置中的奇偶校验组表。
图30示出用于检查奇偶校验组表中包括具有错误的数据条目的奇偶校验组的操作。
图31示出用于擦除存储在存储器系统中的数据条目的操作。
图32示出在擦除存储器系统中的数据条目之后如何更新奇偶校验组表。
图33示出存储器系统中执行的搜索用于数据错误恢复操作的奇偶校验条目的操作。
图34示出存储器系统中执行的搜索用于数据擦除操作的奇偶校验条目的操作。
图35示出存储器系统中执行的垃圾收集。
图36示出存储器系统中执行的合并操作。
具体实施方式
下面参照附图描述本公开的多种实施例。然而,本公开的元件和特征可以被不同地配置或布置以形成其它实施例,其它实施例可以是任何所公开的实施例的变型。
在本公开中,对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“多种实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的引用旨在表示任意的这些特征包括在本公开的一个或多个实施例中,但是可以或不一定组合在相同的实施例中。
在本公开中,术语“包括”、“包括有”“包含”、“包含有”是开放式的。如所附权利要求中所使用的,这些术语指定存在所陈述的元件,并且不排除存在或添加一个或多个其它元件。权利要求中的术语不排除设备包括附加组件,例如,接口单元、电路等。
在本公开中,各种单元、电路或其它元件可以被描述或声称为“被配置为”执行一个或多个任务。在这种情况下,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。因此,即使块/单元/电路/组件当前没有运行,例如没有开启或激活,也可以说该指定的块/单元/电路/组件被配置为执行任务。与“被配置为”语言一起使用的块/单元/电路/组件的示例包括硬件、电路、存储可运行以实施操作的程序指令的存储器等。另外,“被配置为”可以包括由软件和/或固件(例如,FPGA或运行软件的通用处理器)操纵以能够执行有关任务的方式进行操作的通用结构(例如,通用电路)。“被配置为”还可以包括使制造过程(例如,半导体制造设施)适于制造装置,例如,适于实施或执行一个或多个任务的集成电路。
如本公开中所使用的,术语“机器”、“电路”或“逻辑”指代以下所有:(a)纯硬件电路实施方式,例如,仅模拟和/或数字电路的实施方式,以及(b)电路与软件和/或固件的组合,例如(如果适用的话):(i)处理器的组合或(ii)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能数字信号处理器、软件和存储器)的部分;以及(c)需要用于操作的软件或固件的电路,例如微处理器或微处理器的一部分,即使该软件或固件物理上不存在。这种“机器”、“电路”或“逻辑”的定义适用于该术语在本申请中、包括在任何权利要求中的所有用途。作为另一示例,如在本申请中所使用的,术语“机器”、“电路”或“逻辑”还涵盖仅一个处理器或多个处理器或处理器的一部分及其(或它们的)随附软件和/或固件的实施方式。术语“机器”、“电路”或“逻辑”例如如果适用于特定的权利要求要素,则它们还涵盖存储装置的集成电路。
如本文中使用的,术语“第一”、“第二”、“第三”等用作其前面名词的标签,并不意味着任何类型的排序,例如空间的、时间的、逻辑的排序等。术语“第一”、“第二”并不一定意味着第一个值必须写在第二个值之前。此外,尽管这些术语可用于识别各种元件,但这些元件并不受这些术语的限制。这些术语用于将一个元件与具有相同或相似名称的另一个元件区分开。例如,可以将第一电路与第二电路区分开。
此外,术语“基于”用于描述影响确定的一个或多个因素。该术语并不排除可能影响确定的其它因素。也就是说,确定可以仅仅基于这些因素,或者至少部分基于这些因素。考虑短语“基于B确定A”。尽管在这种情况下,B是影响A的确定的因素,但是这种短语并不排除A的确定也基于C。在其它情况下,可以仅基于B来确定A。
本文中,数据条目、数据的条目、数据的项或数据项可以是位的序列。例如,数据条目可以包括文件的内容、文件的一部分、存储器中的页面、面向对象的程序中的对象、数字消息、数字扫描图像、视频或音频信号的一部分、元数据或者可以由一序列位表示的任何其它实体。根据实施例,数据条目可以包括离散的对象。根据另一实施例,数据条目可以包括为数据输入/输出操作而处理或处置的信息单位。根据另一实施例,数据条目可以包括两个不同组件之间的传输数据包内的信息单位。
现在将参照附图描述实施例,其中相同的附图标记指代相同的元件。
图1示出根据本公开的实施例的数据处理系统。
参照图1,数据处理系统100可以包括与诸如存储器系统110的存储器系统接合或联接的主机102。例如,主机102和存储器系统110可以经由数据总线、主机电缆等彼此联接以执行数据通信。
存储器系统110可以包括存储器装置150和控制器130。存储器系统110中的存储器装置150和控制器130可以被视为物理上彼此分离的组件或元件。存储器装置150和控制器130可以经由至少一条数据路径连接。例如,数据路径可以包括通道(channel)和/或通路(way)。
根据实施例,存储器装置150和控制器130可以是按功能划分的组件或元件。此外,根据实施例,存储器装置150和控制器130可以用单个芯片或多个芯片实施。
控制器130可以响应于从诸如主机102的外部装置输入的请求或命令执行数据输入/输出操作(例如,读取操作、编程操作、擦除操作等)。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储在存储器装置150中包括的多个非易失性存储器单元中的数据被传送到控制器130。此外,控制器130可以独立地执行操作,而无需考虑从主机102输入的请求或命令。关于存储器装置150的操作状态,控制器130可以执行诸如垃圾收集(GC)、损耗均衡(WL)、用于检查存储块是否为坏块并处置坏块的坏块管理(BBM)等操作。
存储器装置150可以包括多个存储块152、154、156。存储块152、154、156可以理解为一组非易失性存储器单元,其中,数据通过单次擦除操作一起被删除。虽然没有示出,但存储块152、154、156可以包括页面,该页面是在单次编程操作期间一起存储数据或者在单次读取操作期间一起输出数据的一组非易失性存储器单元。例如,一个存储块152、154、156可以包括多个页面。存储器装置150可以包括能够将至少一个电压供应到存储块152、154、156中的电压供应电路170。电压供应电路170可以将读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers供应到存储块152、154、156中包括的非易失性存储器单元中。
与存储器系统110交互的主机102或包括存储器系统110和主机102的数据处理系统100是移动电子装置(例如,车辆)、便携式电子装置(例如,移动电话、MP3播放器、膝上型计算机等)和非便携式电子装置(例如,台式计算机、游戏机、TV、投影仪等)。主机102可以通过至少一个操作系统(OS)提供主机102与使用数据处理系统100或存储器系统110的用户之间的交互。主机102将与用户请求相对应的多个命令发送给存储器系统110,并且存储器系统110执行与多个命令相对应的数据输入/输出操作(例如,与用户请求相对应的操作)。
存储器系统110可以利用各种类型的存储装置中的任意一种来实施。存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD、微型SD、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。根据实施例,控制器130可以包括主机接口132、处理器134、电源管理单元(PMU)140、存储器接口142和存储器144。根据存储器系统110的结构、功能、操作性能等,可以向控制器130中添加组件或从中省略这些组件。
主机102和存储器系统110各自可以包括控制器或用于根据一个或多个预定协议来发送和接收信号、数据等的接口。例如,存储器系统110中的主机接口132可以包括能够向主机102发送信号、数据等或从主机102接收信号、数据等的设备或电路。根据实施例,主机接口132是一种用于与主机102交换数据的层,并且利用被称为主机接口层(HIL)的固件来实施或由其驱动。根据实施例,主机接口132可以包括命令队列。
主机102和存储器系统110可以使用一组预定的数据通信规则或程序或者预设接口来在两者之间发送和接收数据。主机102和存储器系统110支持的用于发送和接收数据的数据通信标准或接口的规则或步骤的示例包括通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIe或PCI-e)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动行业处理器接口(MIPI)等。根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)相互联接。通用串行总线(USB)是一种高度可扩展的、可热插拔的、即插即用的串行接口,该串行接口可以确保与键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、视频会议摄像机等外围装置进行经济高效的标准连接。
存储器系统110可以支持高速非易失性存储器(NVMe)。高速非易失性存储器(NVMe)是一种至少基于高速外围组件互连(PCIe)的接口,该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方案可以实现每秒数十至数百千兆比特的带宽。
电源管理单元(PMU)140可以控制提供给控制器130的电力。PMU140可以监测供应给存储器系统110的电力,例如供应给控制器130的电压,并将电力提供给包括在控制器130中的组件。PMU 140不仅可以检测通电或断电,而且还可以生成触发信号,以使存储器系统110能够在供应给存储器系统110的电力不稳定时紧急备份当前状态。根据实施例,PMU140可以包括能够累积可以在紧急情况下使用的电力的装置或组件(例如,辅助电源)。
存储器接口142可以用作处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求而控制存储器装置150。在存储器装置150包括NAND闪速存储器的情况下,存储器接口142包括NAND闪存控制器(NFC)。根据实施例,存储器接口142可以通过称为闪存接口层(FIL)的固件实施或由称为闪存接口层(FIL)的固件驱动,以与存储器装置150交换数据。此外,根据实施例,存储器接口142可以支持开放的NAND闪存接口(ONFi)、切换模式等,以与存储器装置150进行数据输入/输出。例如,ONFi可以使用数据路径(例如,通道、通路等),该数据路径包括能够支持以8位或16位数据为单位进行双向发送和接收的至少一条信号线。控制器130和存储器装置150之间的数据通信可以通过关于异步单倍数据速率(SDR)、同步双倍数据速率(DDR)、切换双倍数据速率(DDR)等的至少一个接口来实施。
存储器144在临时存储用于存储器系统110和控制器130中执行的操作的事务性数据时,可以用作存储器系统110或控制器130的工作存储器。根据实施例,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。存储器144可以设置在控制器130内,但实施并不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以由具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器实现。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求,控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。在本文中,固件可以指闪存转换层(FTL)。将参照图3和图4详细描述FTL的示例。根据实施例,处理器134可以用微处理器、中央处理单元(CPU)等来实施。根据实施例,存储器系统110可以用至少一个多内核处理器、协同处理器等来实施。
存储器装置150中包括的多个存储块152、154、156可以根据每个存储器单元可以存储或表示的位的数量进行分类。存储器装置150中包括的存储块可以包括单层单元(SLC)存储块、双层单元(DLC)存储块、三层单元(TLC)存储块和四层单元(QLC)存储块或者多层单元存储块,该多层单元存储块包括由每个存储器单元中能够存储5位或更多位的数据的存储器单元实施的多个页面。
根据实施例,控制器130可以将存储器装置150中包括的MLC存储块用作每个存储器单元中存储一位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可以比SLC存储块的慢。也就是说,当MLC存储块被用作SLC存储块时,用于读取或编程操作的裕量可以减少。例如,当MLC存储块被用作SLC存储块时,控制器130可以以更高的速度执行数据输入/输出操作。控制器130可以将MLC存储块用作SLC缓冲器来临时存储数据,因为用于写入数据的SLC缓冲器或写入增强缓冲器可以提供较高的数据输入/输出速度以提高存储器系统110的性能。
此外,根据实施例,控制器130可以多次将数据编程到MLC中,而无需对存储器装置150中包括的特定MLC存储块执行擦除操作。通常,非易失性存储器单元不支持数据重写。然而,控制器130可以利用MLC能够存储多位数据的特性,多次将1位数据编程到MLC中。对于MLC重写操作,当将1位数据编程到MLC中时,控制器130可以将编程次数作为单独的操作信息来存储。根据实施例,在将另一个1位数据编程到各自已存储有1位数据的相同MLC之前,可以执行用于均匀地均衡MLC的阈值电压的操作。
根据实施例,存储器装置150被实现为诸如闪速存储器的非易失性存储器,例如,只读存储器(ROM)、掩膜ROM(MROM)、可编程ROM(PROM)、可擦除ROM(EPROM)、电可擦除ROM(EEPROM)、磁性(MRAM)、NAND闪速存储器、NOR闪速存储器等。在另一实施例中,存储器装置150可以由相变随机存取存储器(PCRAM)、电阻式随机存取存储器(ReRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)和自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一种来实施。
图2示出根据本公开实施例的存储器系统。
参照图2,存储器系统中的控制器130与主机102和存储器装置150一起操作。如图所示,控制器130可以具有分层结构,包括主机接口(HIL)220、闪存转换层(FTL)240、存储器接口层(闪存接口层FIL)260。
存储器装置150可以包括通过多个通道CH0、CH1、……、CHn和通路W0、……、W_k联接到控制器130的多个存储器芯片252。存储器芯片252可以包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以被视为逻辑分区或物理分区,该逻辑分区或物理分区包括至少一个存储块、能够控制包括多个非易失性存储器单元的阵列的驱动电路、以及能够临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲器。每个存储器平面或每个存储器管芯可以支持并行或同时执行多个数据输入/输出操作的交错模式。根据实施例,存储器装置150中包括的每个存储器平面或每个存储器管芯中包含的存储块可以被分组以输入/输出多个数据条目作为超级存储块。
图1和图2中所示的存储器装置150的内部配置可以基于存储器系统110的操作性能进行改变。本公开的实施例可以不限于图1和图2中描述的内部配置。
图2中描述的主机接口层(HIL)220、闪存转换层(FTL)240和存储器接口层(FIL)260被示为实施例。主机接口层(HIL)220、闪存转换层(FTL)240和存储器接口层(FIL)260可以根据存储器系统110的操作性能以各种形式实施。根据实施例,主机接口层220可以包括在图1所示的主机接口132中,存储器接口层260可以包括在图1所示的存储器接口142中。
控制器130中的缓冲器管理器280可以结合主机接口层(HIL)220、闪存转换层(FTL)240和存储器接口层(FIL)142来控制数据或操作信息的输入/输出。为此,缓冲器管理器280可以在图1所述的存储器144中设置或建立各种缓冲器、高速缓存或队列,并响应于主机接口层(HIL)220、闪存转换层(FTL)240和存储器接口层(FIL)142生成的请求或命令来控制缓冲器、高速缓存或队列的数据输入/输出,或者缓冲器、高速缓存或队列之间的数据传输。例如,控制器130可以在将存储器装置150响应于主机102的请求而提供的读取数据提供到主机102之前,临时存储该读取数据。此外,控制器130可以在将从主机102提供的写入数据存储在存储器装置150之前,将该写入数据临时存储在存储器144中。当控制在存储器装置150中执行的诸如读取操作、编程操作和擦除操作等操作时,可以将存储器系统110中控制器130和存储器装置150之间传输或生成的读取数据或写入数据存储在缓冲器管理器280在存储器144中建立的缓冲器、队列等中并对其进行管理。除了读取数据或写入数据之外,缓冲器管理器280还可以将信号或信息(例如,用于在主机102和存储器装置150之间执行诸如编程操作和读取数据等操作的映射数据、读取命令、编程命令等)存储在存储器144中建立的缓冲器、高速缓存、队列等中。缓冲器管理器280可以设置或管理命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
主机接口层(HIL)220可以处置从主机102传输的命令、数据等。作为示例但不限于此,主机接口层220可以包括命令队列管理器222和事件队列管理器224。命令队列管理器222可以顺序地将从主机102接收到的命令、数据等存储在命令队列中,并且例如,按照它们存储在命令队列管理器222中的顺序将它们输出到事件队列管理器224。事件队列管理器224可以顺序地传输用于处理从命令队列接收到的命令、数据等的事件。根据实施例,事件队列管理器224可以对从命令队列接收到的命令、数据等进行分类、管理或调整。此外,根据实施例,主机接口层220可以包括加密管理器226,加密管理器226被配置为对待传输到主机102的响应或输出数据进行加密,或者对从主机102传输的命令或数据中的加密部分进行解密。
相同特性的多个命令或数据可以从主机102传输到存储器系统110,或者不同特性的多个命令和数据可以在由主机102混合或混杂之后传输到存储器系统110。例如,可以传送用于读取数据的多个命令,即读取命令,或者可以将用于读取数据的命令即读取命令和用于编程/写入数据的命令即写入命令交替地传输到存储器系统110。主机接口层220的命令队列管理器222可以将从主机102传输的命令、数据等顺序地存储在命令队列中。此后,主机接口层220可以根据从主机102传输的命令、数据等的特性来估计或预测控制器130将执行什么类型的内部操作。主机接口层220可以基于命令、数据等的特性来确定它们的处理顺序和优先级。根据从主机102传输的命令、数据等的特性,主机接口层220中的事件队列管理器224被配置为从缓冲器管理器280接收事件,该事件应根据从主机102输入的命令、数据等在存储器系统110或控制器130内部进行处理或处置。然后,事件队列管理器224可以将包括命令、数据等的事件传送到闪存转换层(FTL)240中。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)242、映射管理器(MM)244、状态管理器246和块管理器248。此外,根据实施例,闪存转换层(FTL)240可以实施多线程方案来执行数据输入/输出(I/O)操作。多线程FTL可以通过控制器130中包括的使用多线程的多核处理器来实施。例如,主机请求管理器(HRM)242可以管理从事件队列发送的事件。映射管理器(MM)244可以处置或控制映射数据。状态管理器246可以在检查存储器装置150的操作状态之后执行诸如垃圾收集(GC)或损耗均衡(WL)等操作。块管理器248可以在存储器装置150中的块上运行命令或指令。
主机请求管理器(HRM)242可以使用映射管理器(MM)244和块管理器248来根据从主机接口层220传递的读取和编程命令以及事件处置或处理请求。主机请求管理器(HRM)242可以将查询请求发送到映射管理器(MM)244,以确定与随事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)242可以将读取请求与物理地址一起发送到存储器接口层260以处理读取请求,即处置事件。在一个实施例中,主机请求管理器(HRM)242可以将编程请求(或写入请求)发送到块管理器248,以将数据编程到存储器装置150中未存储数据的特定空白页面,然后可以将与编程请求相对应的映射更新请求发送到映射管理器(MM)244,以便更新与使逻辑地址和物理地址相互映射的信息中的经编程的数据有关的项。
块管理器248可以将从主机请求管理器(HRM)242、映射管理器(MM)244和/或状态管理器246传递的编程请求转换为用于存储器装置150的闪存编程请求,以便管理存储器装置150中的闪存块。为了最大化或提高存储器系统110的编程性能或写入性能,块管理器248可以收集编程请求并将对多平面和单触发编程操作的闪存编程请求发送到存储器接口层260。在实施例中,块管理器248将若干个闪存编程请求发送到存储器接口层260,以增强或最大化多通道和多方向闪存控制器的并行处理。
在实施例中,块管理器248可以根据有效页面的数量来管理存储器装置150中的块,在需要空闲块时选择并擦除没有有效页面的块,并且在确定待执行垃圾收集时选择包括最少数量的有效页面的块。状态管理器246可以执行垃圾收集以将存储在所选择块中的有效数据移动到空白块并擦除存储在所选择块中的数据,使得存储器装置150可以具有足够的空闲块(即,没有数据的空白块)。
当块管理器248将关于待擦除的块的信息提供到状态管理器246时,状态管理器246可以检查待擦除的块的所有闪存页面以确定块的每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器246可以识别每个页面的带外(OOB)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器246可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器246针对每个有效页面向块管理器248发送编程请求。当编程操作完成时,可以通过映射管理器244来更新映射表。
映射管理器244可以管理映射数据,例如逻辑-物理映射表。映射管理器244可以处理主机请求管理器(HRM)242或状态管理器246生成的各种请求,例如查询、更新等。映射管理器244可以将整个映射表存储在存储器装置150(例如,闪存/非易失性存储器)中并根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中时,映射管理器244可以将读取请求发送到存储器接口层260,以加载存储器装置150中存储的相关映射表。当映射管理器244中的脏高速缓存块的数量超过某个阈值时,可以将编程请求发送到块管理器246,从而得到干净的高速缓存块,并且可以将脏映射表存储在存储器装置150中。
当执行垃圾收集时,状态管理器246将有效页面复制到空闲块中,并且主机请求管理器(HRM)242可以针对相同逻辑地址的页面编程最新版本的数据并同时发出更新请求。当状态管理器246在有效页面的复制未正常完成的状态下请求映射更新时,映射管理器244可以不执行映射表更新。这是因为:当状态管理器246请求映射更新时,映射请求是以旧的物理信息发出的,而有效页面的复制是稍后完成的。映射管理器244可以在或仅在最新映射表仍指向旧物理地址时才执行映射更新操作,以确保准确性。
存储器接口层260可以通过数据通信方法与存储器装置150中的多个存储器芯片252交换数据、命令、状态信息等。根据实施例,存储器接口层260可以包括状态检查调度管理器262和数据路径管理器264。状态检查调度管理器262可以检查和确定关于联接到控制器130的多个存储器芯片252的操作状态、关于多个通道CH0、CH1、……、CHn和多个通路W0、……、W_k等的操作状态。可以响应于关于多个存储器芯片252和多个通道CH0、CH1、……、CH1_n的操作状态来调度数据或命令的发送和接收。数据路径管理器264可以基于从状态检查调度管理器262发送的信息,控制通过多个通道CH0、CH1、……、CHn和通路W0、……、W_k发送和接收数据、命令等。根据实施例,数据路径管理器264可以包括多个收发器,每个收发器对应于多个通道CH0、CH1、……、CHn中的每一个。
根据实施例,存储器接口层260可以进一步包括ECC(错误校正码)模块266,ECC模块266被配置为对在控制器130和存储器装置150之间传送的数据执行错误检查和校正。ECC单元266可以作为控制器130中的单独模块、电路或固件来实施,但根据实施例,也可以在存储器装置150中包括的每个存储器芯片252中实施。ECC模块266可以包括用于检测和校正由存储器装置150处理的数据的错误位的程序、电路、模块、系统或设备。
为了发现和校正从存储器装置150传送的数据的任何错误,ECC模块266可以包括错误校正码(ECC)编码器和ECC解码器。ECC编码器可以对待编程到存储器装置150的数据执行错误校正编码以生成添加了奇偶校验位的编码数据,并且将经编码的数据存储在存储器装置150中。当控制器130读取存储在存储器装置150中的数据时,ECC解码器可以检测并校正从存储器装置150读取的数据中包含的错误位。例如,在对从存储器装置150读取的数据执行错误校正解码之后,ECC模块266可以确定错误校正解码是否成功,并基于错误校正解码的结果输出指令信号,例如错误校正成功信号或错误校正失败信号。ECC模块266可以使用在针对存储在存储器装置150中的数据的ECC编码过程中生成的奇偶校验位,以便校正读取数据条目的错误位。当错误位的数量大于或等于可校正错误位的数量时,ECC电路138可以不校正错误位,而是输出指示校正错误位失败的校正失败信号。
根据实施例,ECC电路138可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍坤格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、块编码调制(BCM)等。ECC电路138可以包括基于上述码中的至少一种执行错误校正操作的所有电路、模块、系统和/或装置。
根据实施例,主机接口层220、闪存转换层(FTL)240和存储器接口层260中包括的管理器可以用通用处理器、加速器、专用处理器、协同处理器、多内核处理器等来实施。根据实施例,管理器可以通过与处理器协同工作的固件来实施。
图3示出根据本公开的另一实施例的存储器系统。具体地,图3示出了包括多个内核或多个处理器的存储器系统,它是数据存储系统的示例。该存储器系统可以支持高速非易失性存储器(NVMe)协议。
NVMe是一种专为固态存储器设计的传送协议,其操作速度比传统硬盘快得多。NVMe可以支持更高的每秒输入/输出操作(IOPS)和更低的延迟,从而提高数据传送速度并改善数据存储系统的整体性能。与专为硬盘驱动器设计的SATA不同,NVMe可以利用固态存储的并行性以更高效地使用多个队列和处理器(例如,CPU)。NVMe被设计为允许主机使用多个线程来实现更高的带宽。NVMe可以使SSD提供的并行性得到充分发挥。然而,由于SSD内固件的可扩展性有限、计算能力有限以及硬件竞争激烈,存储器系统可能无法并行处理大量的I/O请求。
参照图3,作为外部装置的主机可以通过多个PCIe Gen3.0通道、PCIe物理层412和PCIe内核414联接到存储器系统。控制器400可以包括三个嵌入式处理器432A、432B、432C,每个处理器使用两个内核302A、302B。此处,多个内核302A、302B或多个嵌入式处理器432A、432B、432C可以具有流水线结构。
多个嵌入式处理器432A、432B、432C可以通过处理器互连联接到内部DRAM控制器434。控制器400进一步包括低密度奇偶校验(LDPC)排序器460、直接存储器访问(DMA)引擎420、用于元数据管理的便笺式存储器(scratch pad memory)450、以及NVMe控制器410。控制器400中的组件可以通过闪存物理层440联接到与多个存储器封装152连接的多个通道。多个存储器封装152可以对应于图2中描述的多个存储器芯片252。
根据实施例,控制器400中包括的NVMe控制器410是一种专为与使用NVMe接口的固态驱动器(SSD)配合使用而设计的存储器控制器。NVMe控制器410可以管理SSD和计算机CPU之间的数据传送以及其它功能,例如错误校正、损耗均衡和电源管理。NVMe控制器410可以使用简化的低开销协议来支持快速数据传送速率。
根据实施例,便笺式存储器450可以是由NVMe控制器410设置的用于临时存储数据的存储区域。便笺式存储器450可以用于存储等待写入多个存储器封装152的数据。便笺式存储器450还可以用作缓冲器以加快写入过程,通常使用少量的动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。在运行写入命令时,数据可以首先被写入便笺式存储器450,然后以较大的块传送到多个存储器封装152。便笺式存储器450可以用作临时存储缓冲器,以帮助优化多个存储器封装152的写入性能。在数据写入非易失性存储器单元之前,便笺式存储器450可以用作数据的中间存储器件。
控制器400中包括的直接存储器访问(DMA)引擎420是在NVMe控制器410和主机系统中的主机存储器之间传送数据的组件,而不涉及主机的处理器。DMA引擎420可以支持NVMe控制器410直接从主机存储器读取数据或向主机存储器写入数据,而无需主机处理器的干预。根据实施例,DMA引擎420可以使用DMA描述符来实现或支持主机与NVMe装置之间的高速数据传送,DMA描述符包括关于数据传送的信息,例如缓冲器地址、传送长度和其它控制信息。
控制器400中的低密度奇偶校验(LDPC)排序器460是对存储在多个存储器封装152中的数据执行错误校正的组件。此处,LDPC码是NAND闪速存储器中通常用来降低位错误率的错误校正码。LDPC排序器460可以被设计为在从NAND闪速存储器读取数据和向NAND闪速存储器写入数据时立即处理LDPC码的编码和解码。根据实施例,LDPC排序器460可以将数据划分成多个块,使用LDPC码对每个块进行编码,并将经编码的数据存储在多个存储器封装152中。此后,当从多个存储器封装152中读取经编码的数据时,LDPC排序器460可以基于LDPC码对经编码的数据进行解码,并校正写入或读取操作过程中可能发生的错误。LDPC排序器460可以对应于图2中描述的ECC模块266。
此外,尽管图9和图10示出包括能够存储数据的存储器装置150或多个存储器封装152的存储器系统的示例,但根据本发明的实施例的数据存储系统可以不限于图9和图10中描述的存储器系统。例如,存储器装置150、多个存储器封装152或由控制器130、400控制的数据存储装置可以包括非易失性或非易失性存储器装置。在图3中,说明了控制器400可以通过高速NVM(NVMe)接口和高速PCI(PCIe)与放置在存储器系统外部的主机102(参见图1和图2)执行数据通信。在实施例中,控制器400可以通过诸如高速计算链接(Compute ExpressLink,CXL)等协议与至少一个主机执行数据通信。
此外,根据实施例,根据本公开的实施例的用于在包括流水线结构的多处理器的控制器中对多个指令进行分布式处理或分配/重新分配的设备和方法可以适用于包括多个存储器系统或多个数据存储装置的数据处理系统。例如,存储器池系统(MPS)是一种非常通用的、适应性强的、灵活的、可靠的和高效的存储器管理系统,在这种系统中,诸如主存储器的逻辑分区或为处理一项或一组任务而预留的存储空间的存储器池可以用于控制或管理联接到控制器的存储器装置。包括流水线结构中的多个处理器的控制器可以控制数据和程序向由存储器池系统(MPS)控制或管理的存储器池传送。
图4示出根据本公开的另一实施例的适用于存储器装置的独立(或廉价)磁盘冗余阵列(RAID)。具体地,图4示出在独立磁盘冗余阵列(RAID)或廉价磁盘冗余阵列(RAID)中使用五个区域(Plane1、Plane2、Plane3、Plane4、Plane5)的示例。
使用RAID方案的存储器装置中包括的五个区域可以具有基本相同的大小。根据实施例,存储器装置150中包括的五个区域Plane1、Plane2、Plane3、Plane4、Plane5中的每一个可以包括存储器平面、存储块、存储器管芯等。在另一实施例中,五个区域Plane1、Plane2、Plane3、Plane4、Plane5可以是用户建立的五个逻辑区域。
存储器系统110可以使用RAID方案在五个区域Plane1、Plane2、Plane3、Plane4、Plane5中存储4个数据条目A1、A2、A3、A4和1个奇偶校验Ap。即使五个区域Plane1、Plane2、Plane3、Plane4、Plane5中的一个区域发生错误,也可以基于其余四个区域中存储的其它数据条目和奇偶校验来恢复和还原错误区域中存储的数据。例如,奇偶校验Ap可以通过对四个数据条目A1、A2、A3、A4执行异或(XOR)逻辑运算来生成。此后,当四个数据条目A1、A2、A3、A4之中的第二数据条目A2发生错误时,可以通过对第一、第三、第四数据条目A1、A3、A4与奇偶校验条目Ap进行异或(XOR)运算来恢复和还原第二数据条目A2。
此外,由于很难预测在Plane1、Plane2、Plane3、Plane4、Plane5这五个区域之中的哪个区域会出现问题,因此用于存储四个数据条目和一个奇偶校验条目的位置可能发生变化。例如,与四个第一数据条目A1、A2、A3、A4相对应的一个第一奇偶校验条目Ap可以存储在第五区域Plane5中,但与四个第二数据条目B1、B2、B3、B4相对应的一个第二奇偶校验条目Bp可以存储在第四空间Plane4中。
为了生成奇偶校验,存储器系统110可以包括奇偶校验生成引擎。参照图4,在存储器装置150的五个区域Plane1、Plane2、Plane3、Plane4、Plane5中,可以对四个第一数据条目A1、A2、A3、A4和一个第一奇偶校验条目Ap进行编程。奇偶校验生成引擎可以基于四个第一数据条目A1、A2、A3、A4生成一个第一奇偶校验条目Ap。在存储器系统110中,四个第一数据条目A1、A2、A3、A4可以存储在第一非易失性单元区域中,一个第一奇偶校验条目Ap可以存储在第二非易失性单元区域中。为了对多位数据进行编程,当根据本公开的实施例的存储器装置150可以执行两步编程操作时,可以生成奇偶校验并将其存储在RAID方案中。在这种情况下,可以减少或有效利用上述SLC缓冲器的大小。
参照图4,四个数据条目A1、A2、A3和A4用于生成一个奇偶校验信息条目Ap。为了让存储器系统110生成一个奇偶校验信息条目Ap,它必须具有用于存储四个数据条目A1、A2、A3和A4以及一个奇偶校验信息条目Ap的缓冲器。如果存储器系统110基于63个数据条目生成一个奇偶校验,则存储器系统110应包括用于存储64个数据和奇偶校验条目的缓冲器。
图5示出如何将多个数据条目分配和存储在存储器装置中的第一示例。具体地,图5示出能够存储分配到多个开放存储块上的多个数据条目以及与多个数据条目相关联的奇偶校验条目的存储器装置150。此处,多个开放存储块可以理解为一个超级存储块。
参照图5,存储器装置150可以包括多个存储器管芯Die0、Die1、……、Die15。每个存储器管芯Die0至Die15可以包括四个存储器平面PLN0、PLN1、PLN2、PLN3。每个存储器平面PLN0、PLN1、PLN2、PLN3可以包括多个存储块BLK0、BLK1、……,存储块BLK0、BLK1、……中的每一个可以包括连接到多个字线WL0、WL1、WL2、……、WLw-1的多个存储器单元。
根据实施例,存储器装置150的非易失性存储器单元可以存储多位数据。然而,为了描述方便,图8示出如下的存储器装置150作为示例:存储器装置150用于将单个数据条目a0、a1、a2、……、a61、a62或单个奇偶校验条目pa、pb存储在联接到每个存储器区域或区域中每个字线的多个存储器单元中。
为了提高在存储器系统110中执行的数据输入/输出操作的速度,存储器系统110可以一起或并行地读取具有预设大小的多个数据条目或对具有预设大小的多个数据条目进行编程。可以通过交错模式来提高数据输入/输出操作的速度,在该交错模式中,具有预设大小的多个数据条目被并行地读取或编程到多个存储器区域或区域中,在这些存储器区域或区域中,可以独立或单独地执行数据输入/输出操作。在图5中,可以在每个存储器平面PLN0、PLN1、PLN2、PLN3中独立或单独地执行数据输入/输出操作。例如,多个存储器平面PLN0、PLN1、PLN2、PLN3中的每一个中包括的开放存储块BLK0可以包括在超级存储块中,以便用从控制器130传送的多个数据条目进行编程。
参照图5,存储器系统110可以将63个第一数据条目a0、a1、a2、……、a61、a62编程到包括在63个存储器区域或区域(例如,存储器平面)中的存储块中。此外,存储器系统110可以基于63个第一数据条目a0、a1、a2、……、a61、a62计算和生成第一奇偶校验条目pa,并将第一奇偶校验条目pa编程到63个存储器区域或区域之外的存储器区域或区域中。存储器系统110可以将63个第一数据条目a0、a1、a2、……、a61、a62和第一奇偶校验条目pa分配并存储在64个存储器区或存储器区域中。此处,63个第一数据条目a0、a1、a2、……、a61、a62和第一奇偶校验条目pa可以包括在单个chipkill单元或单个chipkill解码单元中。即使一个chipkill单元中包括的数据条目中的一个或奇偶校验条目发生UECC,也可以基于没有错误的其它数据条目和奇偶校验条目来恢复UECC生成的数据条目。根据实施例,图2中描述的ECC单元266可以基于chipkill单元生成与多个数据相对应的奇偶校验信息,或恢复UECC生成的数据条目。
存储器系统110可以被配置为存储大量数据。例如,可以将3位数据存储在存储器装置150中的每个非易失性存储器单元中,八个串可以构成一个页面。此外,数据条目和奇偶校验条目(总共16个条目)可以被分配并存储在存储器装置150中的16个开放存储块中。数据条目可以存储在16个开放存储块中的15个开放存储块中,奇偶校验条目可以存储在另一个开放存储块中。在这种情况下,通常连接到16个开放存储块中的每一个的一个字线的非易失性存储器单元的数量为8(串的数量),每个非易失性存储器单元中存储的数据为3位数据,因此可以在存储器装置150中编程384(=16x8x3)位数据和奇偶校验。存储器系统110应包括缓冲器或高速缓存,该缓冲器或高速缓存被配置为临时存储384位数据和奇偶校验,以便控制器130在编程操作期间基于数据条目生成奇偶校验条目。随着存储器装置150中开放存储块数量的增加、随着串数量的增加以及随着每个非易失性存储器单元中存储的数据位数的增加,存储器系统110应建立或设置更大的缓冲器或高速缓存,以便在编程操作期间生成奇偶校验。也就是说,缓冲器或高速缓存的大小会增加。
虽然上述奇偶校验生成方法和设备实施简单,但随着存储器装置150中一次性编程的数据量增加,用于奇偶校验生成的缓冲器的大小也应增加,从而加重内部资源的负担。例如,随着存储器系统110包括更大的缓冲器来用于奇偶校验生成,存储器系统110的生产成本也会增加。在上述奇偶校验生成方法中,用于生成奇偶校验的数据数量是预设的,并且用于存储数据条目和奇偶校验条目的位置也是预先确定的。因此,可以根据编程操作的数据大小和chipkill单元的大小来确定待由存储器系统110确保以生成奇偶校验的缓冲器的大小。
图6示出根据本公开的另一实施例的存储器装置。具体地,图6示出根据本公开的实施例的包括在存储器装置150中的存储器平面或存储器管芯中的存储器单元组(例如,单元阵列)。
参照图6,存储器装置150可以包括至少一个存储器组330,该存储器组330具有多个单元串340。每个单元串340可以包括连接到多个位线BL0至BLm-1中的相应位线的多个非易失性存储器单元MC0至MCn-1。单元串340设置在存储器组330的相应列中,每个单元串340可以包括至少一个漏极选择晶体管DST和至少一个源极选择晶体管SST。每个单元串340的非易失性存储器单元MC0至MCn-1可以串联连接在漏极选择晶体管DST和源极选择晶体管SST之间。非易失性存储器单元MC0至MCn-1中的每一个可以被配置为每个单元存储具有多个位的数据项的多层单元(MLC)。单元串340可以电连接到位线BL0至BLm-1中的相应位线。
在实施例中,存储器组330可以包括NAND型闪速存储器单元MC0至MCn-1。在另一实施例中,存储器组330可以被实施为NOR型闪速存储器、其中混合或组合了至少两种不同类型的存储器单元的混合闪速存储器或控制器嵌入在单个存储器芯片中的单芯片NAND闪速存储器。在实施例中,存储器组330可以包括闪速存储器单元,闪速存储器单元包括电荷撷取闪存(CTF)层,该CTF层包括导电浮置栅极或绝缘层。
根据实施例,图6所示的存储器装置150可以包括图1所示的至少一个存储块。存储器组330可以具有二维(2D)或三维(3D)结构。例如,存储器装置150中的每个存储块都可以被实施为三维结构,例如垂直结构。每个存储块可以具有沿第一方向至第三方向(例如,X轴方向、Y轴方向和Z轴方向)延伸的三维结构。
包括至少一个存储块的存储器组330可以联接到多个位线BL、多个串选择线SSL、多个漏极选择线DSL、多个字线WL、多个虚设字线DWL和多个公共源极线CSL。在一个实施例中,存储器组330可以包括多个NAND串NS,NAND串NS例如可以分别对应于单元串340。每个NAND串NS可以包括多个存储器单元MC,并且可以连接到位线BL中的相应位线。此外,每个NAND串NS的串选择晶体管SST可以连接到公共源极线CSL,每个NAND串NS的漏极选择晶体管DST可以连接到相应的位线BL。在每个NAND串NS中,存储器单元MC可以布置在串选择晶体管SST和漏极选择晶体管DST之间。
存储器装置150可以包括电压供应电路170,电压供应电路170可以根据操作模式为字线中的相应字线供应字线电压,例如,一个或多个预定电压(例如,编程电压、读取电压和通过电压),或者可以向包括存储器单元MC的每个存储块所形成的块体(bulk)(例如,阱区域)提供电压。在这种情况下,电压供应电路170的电压生成操作可以在控制电路180的控制下执行。此外,电压供应电路170可以生成多个可变读取电压,以将多个数据项相互区分开。
响应于控制电路180的控制,可以选择存储器单元阵列的存储块(或扇区)中的一个,并且可以选择所选择存储块的字线中的一个。字线电压可以分别供应给存储器组330的所选择字线和未选择字线。电压供应电路170可以包括用于生成具有各种电平的目标电压的电压生成电路,这些具有各种电平的目标电压适用于存储器组330的字线。
存储器装置150还可以包括由控制电路180控制的读取/写入电路320。读取/写入电路320可以根据操作模式作为感测放大器或写入驱动器进行操作。例如,在验证操作和读取操作中,读取/写入电路320可以作为用于从存储器单元阵列读取数据项的感测放大器进行操作。在编程操作中,读取/写入电路320可以作为根据待存储在存储器单元阵列中的数据项控制位线的电位的写入驱动器进行操作。在编程操作期间,读取/写入电路320可以从页面缓冲器接收待编程到单元阵列的数据项。读取/写入电路320可以基于输入的数据项驱动位线。为此,读取/写入电路320可以包括多个页面缓冲器(PB)322、324、326,其中每个页面缓冲器对应于每个列或每个位线,或者每个列对或每个位线对。根据实施例,可以在每个页面缓冲器322、324、326中包括多个锁存器。根据实施例,联接到每个位线的锁存器或页面缓冲器的数量可以等于或大于存储在存储器单元MC中的数据的位数。
页面缓冲器322、324、326可以通过多个总线BUS联接到数据输入/输出装置,例如串行化电路或串行器。当页面缓冲器322、324、326中的每一个通过不同的总线联接到数据输入/输出装置时,可以减少页面缓冲器322、324、326的数据传输可能出现的延迟。例如,每个页面缓冲器322、324、326可以在没有等待时间的情况下执行数据传输。
根据实施例,存储器装置150可以接收写入命令、写入数据以及关于写入数据待存储的位置的信息,例如物理地址。控制电路180使电压供应电路170生成用于响应于写入命令而执行的编程操作的编程脉冲、通过电压等,并且生成用于在编程操作之后执行的验证操作的一个或多个电压。
当将多位数据项编程在存储器组330中包括的非易失性存储器单元中时,错误率可以高于将单个位(single-bit)数据项存储在非易失性存储器单元中时的错误率。例如,非易失性存储器单元中的错误可以是由于单元间干扰(CCI)而引起的。为了减少非易失性存储器单元中的错误,应减少与非易失性存储器单元之间存储的数据项相对应的阈值电压分布的宽度(偏差)。
为此,存储器装置150可以执行步进式脉冲编程(ISPP)操作,以有效地使非易失性存储器单元的阈值电压分布变窄。在实施例中,存储器装置150可以将ISPP操作用于多步编程操作。例如,存储器装置150可以根据非易失性存储器单元或页面之间的预定顺序,将编程操作分为最低有效位(LSB)编程操作和最高有效位(MSB)编程操作。
编程到NAND闪速存储器中的存储器单元(例如,存储器组330中的NAND型闪速存储器单元MC0至MCn-1)的多位值可以基于该单元的阈值电压所属的阈值电压窗口或阈值电压分布来确定。随着每个存储器单元的大小缩小并且每个存储器单元编程更多位(例如,3位、4位或5位)的数据,用于表示每个多位值的阈值电压窗口的宽度变窄,从而增加了在确定存储在存储器单元中的多位值时的错误率。这是因为:当每个存储器单元中存储的电荷量随特征大小减小而减少时,工艺偏差会变得更加普遍,从而导致存储相同值的不同存储器单元的阈值电压差异很大。因此,确定存储器单元的阈值电压对应于哪个值变得越来越困难。
根据实施例,控制电路180可以包括读取重试表(RRT)。RRT可以存储在存储器装置150中。在通过字线向存储器装置150中的非易失性存储器单元施加读取电压并读取存储在非易失性存储器单元中的数据的过程中,可能会发生读取错误。存储器装置150中的控制电路180可以管理关于用于解决读取错误的读取重试机制的信息。关于读取重试机制的信息之一是读取RRT。读取重试机制使用发生错误的记录位置的RRT,以便存储器装置150在重新读取时可以通过应用适当的校正值(例如,改变读取电压电平)来确保数据完整性。
图7示出根据本公开的另一实施例的存储器装置。
参照图7,存储器单元阵列可以具有包括在垂直方向D1上堆叠的部分或层的结构。存储器单元阵列可以包括至少一个存储块。在下文中,基本垂直于衬底的上表面的方向可以定义为第一方向D1,平行于衬底的上表面且相互交叉的两个方向可以分别定义为第二方向D2和第三方向D3。例如,第二方向D2和第三方向D3可以基本垂直相交。第一方向D1可以称为垂直方向,第二方向D2可以称为行方向,第三方向D3可以称为列方向。图中箭头指示的方向和与其相反的方向解释为相同方向。
为了便于说明,图7示出存储块中包括的单元串之中连接到一个位线BL和一个公共源极线CSL的NAND串或单元串SG1至SGk。
存储块可以包括连接到相同位线(BL)和公共源极线CSL之间的多个单元串SG1至SGk。单元串SG1至SGk中的每一个可以包括由源极选择线SSL控制的至少一个源极选择晶体管SST、由字线WL控制的多个存储器单元、设置在中间边界层IBL中并由中央开关字线CSWL控制的中央开关晶体管CST,以及由每个漏极选择线DSL1、DSL2、DSL3、……、DSLk控制的漏极选择晶体管DST。
根据实施例,在第一方向D1上与位于第一叠层ST1和第二叠层ST2两端的至少一个字线连接的多个存储器单元可以是虚设单元。虚设单元中可以不存储任何数据。此外,根据实施例,虚设单元可以用于存储比其它存储器单元位数更少的数据。根据实施例,中间边界层IBL可以包括至少一条栅极线。一条栅极线对应于中央开关字线CSWL,中央开关字线CSWL可以同时控制与其连接的中央开关晶体管CST的开关操作。此外,虽然图7示出第一叠层ST1和第二叠层ST2堆叠的结构,但单元阵列330中可以垂直堆叠三个或更多个叠层。当堆叠多个叠层时,可以在每两个堆叠的叠层之间形成并设置中间边界层IBL。中间边界层IBL可以包括至少一个开关晶体管,该至少一个开关晶体管被配置为将两个叠层中的一个叠层中的存储器单元联接到另一个叠层中的其它存储器单元。
图7示出了包括在多个单元串SG1至SGk中的源极选择晶体管SST连接到公共选择线CSL的实施例。然而,根据实施例,一定数量的源极选择晶体管可以联接到多个源极接地选择线中的每一个。
参照图6至图7,单元阵列330可以包括沿多个方向D1、D2、D3布置的多个存储块。在实施例中,存储块可以由图6所示的控制电路180选择。例如,可以将读取电压、编程电压或擦除电压施加到控制电路180所选择的存储块与字线。
单元串SG1至SGk中的每一个可以包括多个开关晶体管以及能够存储数据的多个存储器单元。此处,多个开关晶体管可以包括漏极选择晶体管DST、源极选择晶体管SST和中央开关晶体管CST。图7示出了单元串SG1至SGk中的每一个分别包括一个漏极选择晶体管DST、一个源极选择晶体管SST和一个中央开关晶体管CST的实施例。然而,根据实施例,单元串SG1至SGk中的每一个可以包括多个漏极选择晶体管DST、多个源极选择晶体管SST或多个中央开关晶体管CST。
图8示出如何将多个数据条目分配和存储在存储器装置中的第二示例。具体地,图8示出了存储器管芯Die0、Die1、Dien-1中存储数据条目的位置,这些存储器管芯具有八个串String0至String7联接到每个字线WL0,WL1,WL,...,WL9的结构。图8描述了基于数据条目生成的奇偶校验条目。
如图8所示,存储器装置150可以包括多个存储器管芯Die0、Die1、Dien-1。存储器管芯Die0、Die1、……、Die n-1中的每一个可以包括四个存储器平面Plane0、Plane1、Plane2、Plane3。每个字线WL0,WL1,WL,...,WL9可以联接到8个单元串String0至String7。虽然图9示出了存储器装置150包括10个字线WL0、WL1、WL、……、WL9的示例,但存储器装置150中包括的字线数量可以基于存储器装置150的存储容量而变化。可以为存储在存储器装置150中不同位置处的多个数据条目生成多个奇偶校验Parity0、Parity1、……、Parity15。多个奇偶校验Parity0、Parity1、……、Parity15可以存储在不同位置,每个位置与每个数据条目存储的位置相对应。
关于奇偶校验的生成和存储,图8所示的方法可以与图6所示的方法类似。首先,基于存储器装置150中存储的数据条目的位置,可以确定用于生成每个奇偶校验Parity0、Parity1、……、Parity15的数据条目的组合。例如,可以对多个数据条目s-page0、s-page16、s-page32、s-page72执行异或(XOR)运算以计算第一奇偶校验parity0,这些数据条目存储在与联接到n个存储器管芯中包括的每个平面的奇数字线WL0、……、WL8的第一串String0相对应的位置。第一奇偶校验parity0可以存储在与第n个存储器管芯的第四存储器平面Plane3中的第九字线WL8连接的第一串String0中。其它15个奇偶校验parity1、……、parity15也可以以相同的方式生成并存储在存储器装置150内的相应位置中。
参照图8,可以生成16个奇偶校验parity0、parity1、……、parity15。用于生成每个奇偶校验的数据条目组合可以称为奇偶校验组。16个奇偶校验组可以存储在存储器装置150中与10个字线相对应的位置。每个奇偶校验组可以对应于16个超级页面。此处,超级页面可以是将分配到存储器装置150中的多个位置作为一个逻辑页面(例如,超级存储器组)进行管理的方式。如果存储器装置150包含100个字线,则可以生成并存储160(=16x10)个奇偶校验组。随着存储器装置160中存储器管芯的数量增加(n值越大),每个超级页面中包括的数据条目的大小也会增加。此外,每个奇偶校验组中包括的数据条目的数量可以增加。在这种情况下,存储在存储器装置150中的奇偶校验的数量(或奇偶校验和数据条目的比率)可以减少,因此即使存储器装置150的存储容量相同,也可以存储更多的数据条目。
根据存储器装置150的内部配置或奇偶校验组的设置,存储在存储器装置150中的奇偶校验的数量可以不同。这可以导致当存储器装置150中发生错误(例如,UECC)时,为响应于错误而恢复数据条目的错误恢复性能不同。下文中,将说明错误恢复性能根据奇偶校验组集和数据条目存储的位置集而不同。
图9至图12示出存储器装置150中的奇偶校验组的第一至第四示例。图9至图12描述了通过异或(XOR)运算生成奇偶校验的四种不同方案。此处,非限制性示例是1串XOR、16串XOR、全串XOR(例如,平面级chipkill)和管芯级XOR。
具体地,图9至图12示出存储在存储器装置150中的多个数据条目的奇偶校验生成。奇偶校验组集可以根据多个数据条目的存储位置和奇偶校验而变化。参照图8和图9至图12,错误恢复性能可以根据多少数据条目被组合以生成奇偶校验或者数据条目和奇偶校验被存储在哪里(例如,存储器装置150的物理地址)而变化。当存储器装置150中发生错误或缺陷时,该错误或缺陷可以发生在特定位置的存储器单元、特定存储块或特定存储器平面。为了恢复由于在特定位置发生的缺陷而出现的错误,将数据分配并存储在存储器装置150中可以更为有利。
参照示出第一示例(1串XOR)的图9,控制器130可以基于在联接到多个存储器管芯Die_0至Die_n-1的开放存储块中的两个字线的非易失性存储器单元中编程的多个数据条目来生成奇偶校验条目。每个存储器管芯Die 0至Die n-1可以具有四个存储器平面Plane0至Plane 3。每个字线WL 0、WL 1联接到8个串String 0至String 7。如果存储器管芯的数量为8(n=8)个,则基于511(=2x8x4x8-1)个数据条目生成单个奇偶校验条目。chipkill单元可以包括511个数据条目和1个奇偶校验条目。chipkill单元可以被编程到非易失性存储器单元中,该非易失性存储器单元联接到八个存储器管芯Die 0至Die 7(=8-1)中的每个存储器管芯中的四个存储器平面Plane 0至Plane 3中的每个存储器平面中的32个开放存储块中的两个相邻字线。
在第一示例(1串XOR)中,控制器130可以检查511个数据条目是否准备好被编程到写入缓冲器或写入高速缓存。当写入缓冲器或写入高速缓存中包括511个数据条目时,控制器130可以基于511个数据条目生成一个奇偶校验条目,并将chipkill单元(总共512个条目)传送到存储器装置150(例如,8个存储器管芯)。此处,每个数据条目和奇偶校验条目的大小可以基于每个非易失性存储器单元中编程的数据的位数量来确定。
图9中的第一奇偶校验parity 0可以通过组合存储在16个超级页面page 0、page1、……、page 15中的数据条目来生成。在图9所述的实施例中,当每个奇偶校验组被顺序存储时,可以存在的优点在于可以减少存储器装置150中的开放存储块的数量。
然而,假设存储器装置150中发生缺陷,则错误(例如,UECC)可能会发生在存储在多个位置而不是单个数据位置的数据条目中。例如,一个错误可以发生在与第一字线WL0连接的位置,而另一个错误可以发生在与第二字线WL1连接的位置。如果错误发生在第一奇偶校验parity 0所属的单个奇偶校验组中的多个数据条目中,则可能难以基于第一奇偶校验parity 0来恢复数据条目中的错误。
参照示出第二示例(16串XOR)的图10,控制器130可以像第一示例(1串XOR)一样,基于511个数据条目生成一个奇偶校验条目。然而,生成奇偶校验条目的定时以及511个数据条目和1个奇偶校验条目被存储的位置与第一示例的那些不同。每个开放存储块包括联接到32个字线WL0至WL31的非易失性存储器单元。控制器130可以基于8,176(16x511)个数据条目生成16个奇偶校验条目Parity 0至Parity 15。
在第二示例(16串XOR)中,控制器130可以检查8,176个数据条目是否准备好被编程到写入缓冲器或写入高速缓存。当写入缓冲器或写入高速缓存中包括8,176个数据条目时,控制器130可以基于8,176个数据条目生成16个奇偶校验条目(每个奇偶校验条目基于每511个数据条目而生成),并将chipkill单元(总共8,192个条目)传送到存储器装置150(例如,8个存储器管芯)。在一次性编程操作期间,经编程的数据和奇偶校验条目的大小可以基于存储器系统110的性能而有所不同。
参照图10,16个奇偶校验组可以存储在存储器装置150中。除了存储器管芯和存储器平面不同之外,属于每个奇偶校验组的数据条目和奇偶校验的位置可以具有相同的字线和相同的单元串位置。与图9所示的第一示例相比,图10中的奇偶校验的数量可以增加16倍。然而,在图10中描述的存储器装置150的情况下,当相同字线和相同单元串位置的多个数据未发生错误(例如,UECC)时,相应的数据条目可以被恢复。例如,即使在连接到第一字线WL0的位置发生单个错误并且在连接到第二字线WL1的位置发生另一个错误,也可以使用与不同位置相对应的奇偶校验来恢复相应的数据条目,因为在相同字线和相同单元串中未发生多个错误。
参照示出第三示例(全串XOR,例如,平面级chipkill)的图11,控制器130可以像第一示例和第二示例(1串XOR、16串XOR)一样,基于511个数据条目生成一个奇偶校验条目。然而,用于生成奇偶校验条目的定时以及511个数据条目和1个奇偶校验条目被存储的位置与第一示例和第二示例的情况不同。在第三示例中,特定存储器管芯中的一个存储器平面可以仅编程奇偶校验条目(例如,256(=8x32)个奇偶校验条目)。控制器130可以基于130,816个数据条目生成256个奇偶校验条目,每个奇偶校验条目基于511个数据条目而生成。控制器130可以检查130,816个数据条目是否准备好被编程到写入缓冲器或写入高速缓存。
在第三示例中,可以将16个奇偶校验组存储在存储器装置150中。每个奇偶校验组可以包括与n个存储器管芯Die 0、Die 1、……、Die n-1中的4个存储器平面Plane 0、Plane1、Plane 2、Plane 3中的15个字线联接的位置中存储的数据条目。与图8中描述的存储器装置150类似,图11的存储器装置150可以被划分为奇数字线和偶数字线,以构成奇偶校验组。因此,即使存储器装置150中发生两个错误(例如,UECC),也可以基于相应奇偶校验组的数据条目和奇偶校验来恢复这两个错误,因为这两个错误(例如,UECC)发生在30个字线之中的奇数字线和偶数字线中。
参照示出第四示例(管芯级XOR)的图12,控制器130可以像第一示例至第三示例(1串XOR、16串XOR、全串XOR)一样,基于511个数据条目生成一个奇偶校验条目。然而,用于生成奇偶校验条目的定时以及511个数据条目和1个奇偶校验条目被存储的位置与第一示例至第三示例的情况不同。在第三示例中,特定存储器管芯可以仅编程奇偶校验条目(例如,1,024(=256x4)个奇偶校验条目)。控制器130可以基于523,264个数据条目生成1,024个奇偶校验条目,每个奇偶校验条目基于511个数据条目而生成。控制器130可以检查523,264个数据条目是否准备好被编程到写入缓冲器或写入高速缓存。
在第四示例中,在n个存储器管芯Die 0、Die 1、……、Die n-1内的相同位置可以属于相同的奇偶校验组。例如,为每个存储器管芯Die0、Die 1、……、Die n-1内的每个存储器平面Plane 0、Plane 1、Plane 2、Plane 3的每个单元串和每个字线不同地建立奇偶校验组。参照图12,第一奇偶校验组是每个存储器管芯Die 0、Die 1、……、Die n-1中的每个存储器平面Plane 0、Plane 1、Plane 2、Plane 3的第一字线。数据条目和奇偶校验可以包括在第一字线WL0和第一单元串String 0的位置处。即使发生多个错误(例如,UECC),但是只要多个错误不发生在相同字线和相同单元串中,图12中描述的存储器装置150就能够基于属于每个奇偶校验组的数据条目和奇偶校验来恢复错误。
参照图8至图12,如何配置或设置存储在存储器装置150中的数据条目的奇偶校验组可以根据实施例而有所不同。根据错误发生的位置,存储器装置150的错误恢复性能可以变化。此外,奇偶校验组集还可以根据存储器装置150的操作特性而改变。随着存储器装置150中存储的奇偶校验数量的减少,相同存储空间中存储的数据条目的数量可以增加。
在一次性编程操作期间,经编程的数据和奇偶校验条目的大小对于确定存储器系统110的性能至关重要。对于更快的数据输入操作,一次性编程操作期间经编程的数据和奇偶校验条目的大小增加。此外,如果写入缓冲器或高速缓存中的数据条目的数量少于一次性编程操作的数据条目的预设数量,则存储器系统110可以向一次性编程操作的数据条目中添加一些虚设数据条目。
图13至图16示出存储器装置中错误校正或恢复的第一示例至第四示例。图13至图16描述了存储器装置150中的错误,基于通过对chipkill单元的异或(XOR)运算生成的奇偶校验条目,可以从该错误中恢复数据。图13至图16描述了UECC发生但控制器130恢复或还原UECC的四种不同情况。
参照图13至图16,奇偶校验条目和数据条目被分配到存储器装置150中。当缺陷发生在与多个字线相对应的区域中、缺陷发生在与多个串相对应的区域中、或缺陷发生在存储器平面或存储器管芯中时,可以恢复或还原存储在相应区域中的错误。例如,可以基于通过图13至图16中描述的异或(XOR)运算生成奇偶校验的不同方案来确定可恢复缺陷。
参照图13,存储器装置150可以以类似于图9中描述的奇偶校验组的方式存储数据。存储器装置150可以被配置为将数据条目存储在连接到n个存储器管芯Die 0、Die1、……、Die n-1内的四个存储器平面Plane0、Plane 1、Plane 2、Plane 3上的第一存储块BLK 0中包括的四个字线的位置中。例如,与第二存储器管芯Die 1中的第三存储器平面Plane 2的第三字线连接的位置中存储的数据条目可能发生错误(标记为“X”)。在这种情况下,可以基于相应的奇偶校验组中的其它无错误的数据条目和第一奇偶校验Parity 0来恢复该错误。
参照图14,存储器装置150可以以类似于图10中描述的奇偶校验组的方式存储数据。可以为n个存储器管芯Die 0、Die 1、……、Die n-1内的四个存储器平面Plane 0、Plane1、Plane 2、Plane 3上的第一存储块BLK0中的每个字线不同地设置奇偶校验组。在图14描述的实施例的情况下,即使错误(标记为“X”)发生在第二存储器管芯Die 1中的第三存储器平面Plane 2中,也可以基于包括其它存储器平面中存储的无错误的数据条目和奇偶校验的每个奇偶校验组来恢复或还原错误。图14所示的实施例可以实现存储器平面级的错误恢复(例如,基于存储器平面确定缺陷和使用情况)。
参照图15,存储器装置150可以在存储器装置150内存储16个奇偶校验组。存储器装置150可以包括设置在n个存储器管芯Die 0、Die1、……、Die n-1内的四个存储器平面Plane 0、Plane 1、Plane 2、Plane3内每四个字线上的奇偶校验组。例如,与第1字线、第5字线、第9字线等联接的位置中存储的数据条目和奇偶校验可以属于第1奇偶校验组。与第2字线、第6字线、第10字线等联接的位置中存储的数据条目和奇偶校验可以属于第2奇偶校验组。在这种情况下,可以在n个存储器管芯Die 0、Die 1、……、Die n-1中的四个存储器平面Plane 0、Plane1、Plane 2、Plane 3中的第一存储块BLK0的64个字线上设置四个奇偶校验组。参照图15,即使缺陷发生在联接到第二存储器管芯Die 1中的第三存储器平面Plane 2的第61至第64字线的位置处,每个奇偶校验组也可以恢复该错误。
参照图16,存储器装置150可以以类似于图12中描述的实施例的方式设置奇偶校验组。每个奇偶校验组可以包括位于n+1个存储器管芯Die 0、Die 1、……、Die n-1、Die n的四个存储器平面Plane 0、Plane 1、Plane 2、Plane 3中的相同位置处的数据条目和奇偶校验(例如,可以被设置为存储在连接到相同字线的存储器单元中的数据条目和奇偶校验)。例如,与n个存储器管芯Die 0、Die 1、……、Die n-1中的每一个中的第一存储器平面Plane 0中的第一字线联接的位置处存储的数据条目Page 0和与附加存储器管芯Die n的第一存储器平面Plane 0中的第一字线联接的位置处存储的第一奇偶校验Parity 0可以属于第一奇偶校验组。在这种情况下,存储器装置150可以包括单独的附加存储器管芯来仅仅用于存储奇偶校验,而不是数据条目。在这种情况下,即使整个第二存储器管芯Die 1由于缺陷而无法使用,或者所有数据条目都被确定为错误,也可以使用存储在其它存储器管芯中的数据条目和奇偶校验来恢复存储在第二存储器管芯Die 1中的数据条目。参照图16,可以在存储器管芯级实现错误恢复(例如,基于存储器管芯确定缺陷和使用情况)。
参照图8至图16,基于存储器装置150中分布式存储奇偶校验和数据条目的各种方式,即使缺陷可能发生在与多个字线、多个单元串、存储器平面或存储器管芯相对应的区域中,也可以恢复存储在该区域中的数据条目。
存储器系统110或存储器装置150可以根据使用目的、性能等而具有不同的所需错误恢复性能。例如,存储器装置150可能需要为单个单元串、单个存储器平面或单个存储器管芯提供错误恢复性能。此外,可能需要针对诸如8个连续超级页面或16个连续超级页面等缺陷或错误的错误恢复性能。可以基于所需的错误恢复性能来配置包括存储在存储器装置150中的数据条目和奇偶校验的奇偶校验组。
图17示出用于生成存储在存储器装置中的奇偶校验条目的计算和缓冲器大小。如图8至图16所述,用于生成奇偶校验条目的逻辑运算可以是异或(XOR)。图1至图3所示的控制器130、400可以执行异或(XOR)运算来生成奇偶校验条目。为了执行异或(XOR)运算,控制器130、400可以建立奇偶校验操作缓冲器,该奇偶校验操作缓冲器是存储器144中用于奇偶校验生成的空间。
参照图17,存储器装置可以包括n个开放存储块Block-A、Block-B、Block-xxx、Block-D。此外,存储器装置可以包括奇偶校验存储块Block-Y,奇偶校验存储块Block-Y仅用于存储与存储在n个开放存储块Block-A、Block-B、Block-xxx、Block-D中的数据条目相对应的奇偶校验。为了将数据条目存储在存储器装置中,可以执行单触发(one-shot)编程操作,在该单触发操作中,在多个存储器平面上分配、传送和存储大量数据条目(例如,存储器平面交错法)。例如,联接到四个存储器平面Plane0、Plane1、Plane2、Plane3中的奇偶校验存储块Block-Y的第一字线WL0的八个串String0、String1、……、String6、String7中存储的奇偶校验的数量可以是32。也就是说,属于32个奇偶校验组的数据条目和奇偶校验条目可以通过单触发编程操作存储在存储器装置中。此外,存储器装置中包括的每个非易失性存储器单元可以存储多位数据。例如,每个存储器单元可以是能够存储3位数据的TLC。
根据实施例,奇偶校验生成操作可以包括虚拟化多个开放存储块(例如,为多线程进程集成奇偶校验条目生成,执行每个进程以在每个开放存储块中编程至少一个数据条目)、配置用于生成奇偶校验条目的数据条目组、以及将奇偶校验条目编程在与用于存储数据组的位置不同的存储块中。
控制器130、400可以确定每个数据条目将要存储在哪里,以便将属于32个奇偶校验组的数据条目分配并存储在多个存储块中。例如,闪存转换层(FTL)240可以允许控制器130、400执行如下的映射操作:外部装置使用的逻辑地址中的至少一个、用于提高内部操作的效率的虚拟地址中的至少一个和/或指示存储器装置中的物理位置的物理地址中的至少一个之间的映射操作。此外,控制器130、400可以对属于每个奇偶校验组的数据条目执行异或运算,以生成每个奇偶校验条目。
例如,可以以32个奇偶校验组之中的存储器平面Plane 0、Plane 1、Plane 2、Plane 3为单位执行奇偶校验计算。在这种情况下,用于奇偶校验运算的数据条目的数量可以是通过将单元串的数量、每个存储器单元中存储的数据的位数和开放存储块的数量相乘而得到的值。多个开放存储块可以包括存储数据条目的至少一个数据块和存储奇偶校验条目的至少一个奇偶校验块。此外,当存储器系统110用多个分区命名空间来控制或管理存储器装置时,用于奇偶校验计算的数据条目的数量可以与分区的数量成比例地增加。
根据实施例,存储在每个存储器单元中的多位数据的位数可以增加,并且单元串的数量也可以增加。此外,开放存储块的数量和分区的数量也可以增加。因此,控制器130、400确保以生成奇偶校验条目的奇偶校验操作缓冲器的大小可以与上述参数成线性比例地增加。此处,控制器130、400执行的奇偶校验计算是存储器系统110中的一种内部操作,其尝试高速输入或输出数据。对于存储器系统110而言,减少内部操作的开销以提高或保持数据输入/输出性能(例如,数据吞吐量)将是非常重要的。因此,奇偶校验操作缓冲器可以使用包括非易失性存储器装置的存储器系统110中包括的SRAM,而不是DRAM。从控制器130中的资源使用或分配的角度来看,分配超过2M至5M位的SRAM存储容量作为奇偶校验操作缓冲器并不是有效的。
控制器130、400可以尝试使用支持针对多个操作的快速操作速度的SRAM,以减少多个操作中出现的开销和延迟。当执行多个操作的多个处理器竞争性地使用SRAM时,管理资源分配可能会变得困难。此外,从集成度和制造成本的角度来看,增加SRAM的存储空间可能会对被实施为片上系统(SoC)的控制器130、400造成负担。随着存储器装置中存储的数据条目数量的增加或属于每个奇偶校验组的数据条目数量的增加,控制器130、400应向用于生成奇偶校验的装置或模块分配更多资源。然而,在控制器130、400中增加更多资源可能会受到设计目的的限制。因此,控制器130、400可以被配置为减少为奇偶校验生成操作而分配的资源。
图18示出根据本公开的另一实施例的存储器系统中包括的奇偶校验生成电路。图18描述了根据本公开的实施例的存储器系统110中包括的被配置为生成奇偶校验条目的设备。
参照图1至图3,控制器130、400可以通过多个通道Ch-0、Ch-1至Ch-3连接到存储器装置150。多个存储器管芯Die-0、Die-1、……、Die-N可以联接到通道Ch-0、Ch-1至Ch-3中的每一个。分配并存储在多个存储器管芯Die-0、Die-1、……、Die-N中的数据条目的数量可以基于存储器系统110的配置和性能以及存储器装置150的配置和性能而变化。
奇偶校验生成电路(FCT)510可以通过对通过每个通道Ch-0至Ch-3传输的数据条目执行XOR运算来生成奇偶校验条目。奇偶校验生成电路510可以包括被配置为执行异或运算的奇偶校验生成引擎512。奇偶校验生成电路510可以包括奇偶校验操作缓冲器514,或者可以与奇偶校验操作缓冲器514操作性地接合。
控制器130中的奇偶校验生成电路(FCT)510可以具有与每个非易失性存储器单元中存储的多位数据的位数相对应的缓冲器。例如,当非易失性存储器单元存储3位数据并且存储块中包括8个单元串时,奇偶校验生成电路510中包括的奇偶校验操作缓冲器514可以存储被配置为存储顺序地传送到每个存储块的数据条目的缓冲器Bin(16KB)#0至Bin(16KB)#2,以及被配置为存储奇偶校验条目的缓冲器(PG表)。奇偶校验生成电路510不必包括大小与在生成奇偶校验条目的过程中(例如,图9至图12中所示的第一至第四示例)被分配和编程在多个开放存储块中的所有数据条目相对应的缓冲器。例如,奇偶校验操作缓冲器514包括与每个开放存储块中并发传输的数据条目的大小相对应的缓冲器以及能够存储相应奇偶校验的缓冲器就足够了。
根据实施例,奇偶校验操作缓冲器514可以具有被跨时编程在存储器装置150内的数据条目的大小。此外,根据实施例,奇偶校验操作缓冲器514可以具有与被传送以编程到存储器装置150的数据条目的量相对应的大小(例如,存储在存储器装置150中包括的页面缓冲器中的数据的大小)。
当控制器130、400执行用于在包括多个存储器管芯Die-0、Die-1、……、Die-N的存储器装置150中编程预设数量的数据条目的单触发编程操作时,控制器130可以对待编程到存储器装置150中的多个存储器管芯Die-0、Die-1、……、Die-N的数据条目进行分配和传输。例如,存储器装置150中可以包括16个存储器管芯。如果控制器130、400打算将16M字节数据分配和存储在存储器装置150中,则控制器130、400可以将16M字节数据划分成具有相同大小(即,1M字节)的16个部分。控制器130、400可以将1M字节数据传输到每个存储器管芯,并且每个存储器管芯可以将1M字节数据编程到非易失性存储器单元中。
例如,当16M字节数据被分配并存储在存储器系统中的16个开放存储块中时,可以通过控制器130、400中的多个多内核或多处理器并行执行多个进程。为了为被编程到存储器装置150中的数据条目生成至少一个奇偶校验条目,可以由与每个开放存储块相对应的每个进程单独生成至少一个奇偶校验条目,然后,当通过异或运算对每个进程中生成的至少一个奇偶校验条目集成时,用于生成奇偶校验的每个进程或每个内核(或线程)可以捕获用于存储数据条目的存储空间和用于生成至少一个奇偶校验条目的其它存储空间。由控制器130建立的写入缓冲器或高速缓存可以分配给多个进程,以临时存储经编程的数据条目和响应于数据条目而生成的奇偶校验条目。因此,通过单触发编程操作可以存储的数据条目的大小越大,为多个进程分配的缓冲器的大小就越大。
然而,根据本公开的实施例的奇偶校验生成电路510不执行以下操作:在与每个开放存储块相对应的每个进程或每个内核/线程中计算分配并存储在存储器装置150中的数据条目的奇偶校验条目。在执行与每个开放存储块相对应的每个进程之后,在每个数据条目被传送到存储器装置150中的多个开放存储块并分配到多个开放存储块之前,可以通过奇偶校验生成电路510计算奇偶校验条目。例如,当16M字节数据存储在16个开放存储块中时,控制器130可以将16M字节数据划分成16个数据组。在奇偶校验生成电路510为存储在16个开放存储块之中的第一开放存储块中的第一数据组生成第一奇偶校验之后,控制器130可以将第一数据组传送到包括第一开放存储块的存储器管芯中。
此后,奇偶校验生成电路510可以为存储在16个开放存储块之中的第二开放存储块中的第二数据组生成第二奇偶校验条目,并合并第一奇偶校验条目和第二奇偶校验条目。然后,控制器130可以将第二数据组传送到包括第二开放存储块的存储器管芯。根据在多个开放存储块中编程的多个数据组从控制器130传送到存储器装置150的时间序列,奇偶校验生成电路510可以执行XOR运算,以生成至少一个奇偶校验条目。因此,奇偶校验生成电路510无需占用与多个开放存储块中编程的数据条目的总大小相对应的缓冲器空间来生成至少一个奇偶校验条目。与被传送以被编程到一个开放存储块中的数据条目的大小相对应的缓冲器空间就足够了。
参照图18,可以根据非易失性存储器单元中存储的多位数据的位数和联接到字线的单元串的数量来确定被传送以被编程到一个开放存储块中的数据条目的大小。由于奇偶校验生成电路510针对传送到每个开放存储块的数据条目顺序地生成至少一个奇偶校验,因此分配用于生成奇偶校验条目的缓冲器或高速缓存(例如,奇偶校验操作缓冲器514)的大小不会根据开放存储块的数量、存储器平面的数量或存储器管芯的数量而增加。也就是说,即使由控制器130通过单触发编程操作编程在存储器装置150中的数据条目的大小随着开放存储块数量的增加而增加,生成奇偶校验条目所需的缓冲器的大小也可能不会增加。
此外,即使控制器130、400通过单触发编程操作编程在存储器装置150中的数据条目的大小改变,奇偶校验生成电路510所使用的缓冲器或高速缓存的大小也可能不会改变。例如,假设传送到每个开放存储块的数据条目的大小为1M字节,则10M字节的数据条目可以被分配并存储在10个开放存储块中,15M字节的数据条目可以被分配并存储在15个开放存储块中。在这些情况下,分配给奇偶校验生成电路510的缓冲器或高速缓存的大小可以被确定为与传送到每个开放存储块的数据条目的大小(例如,1M字节)相对应,而不是与数据条目的总大小(例如,10M字节或15M字节)相对应。
根据本公开的实施例,用于生成奇偶校验条目的数据条目的大小可以动态调整或改变,并且多个数据中的奇偶校验条目所在的位置也可以改变。此外,在编程操作期间,存储器系统110可以减小用于生成奇偶校验条目的缓冲器或高速缓存的大小。由于存储器系统110可以改变用于生成奇偶校验条目的数据条目的数量,因此与在缓冲器或高速缓存中的数据条目的数量少于编程操作的数据条目的预设数量时添加用于生成奇偶校验条目的虚设数据条目的传统存储器系统不同,控制器130、400无需在存储器装置150中存储虚设数据条目。因此,可以有效利用存储器系统110的内部资源。
在图8至图17中描述的存储器装置150中,在设置包括经编程的数据条目和奇偶校验条目的奇偶校验组之后,可以确定奇偶校验组中包括的数据条目和奇偶校验条目存储的位置。此外,可以根据数据条目在存储器装置150中存储的位置来确定数据条目是否属于特定奇偶校验组。因此,计算奇偶校验条目的操作可以继续,直到在这些位置经编程的所有数据条目被确定为止,或者在确定在这些位置经编程的所有数据条目之后计算奇偶校验条目。因此,计算奇偶校验条目的装置需要奇偶校验计算缓冲器,该奇偶校验计算缓冲器的存储空间可以临时存储所有数据条目和奇偶校验条目。
然而,当包括图18中描述的奇偶校验生成电路510的控制器130、400确定包括存储在存储器装置150中的相应数据条目的奇偶校验组时,可能不考虑数据条目的位置。奇偶校验生成电路510可以基于涉及多少数据条目来执行异或运算以生成奇偶校验条目,而不管数据条目存储在哪里。即使在存储器装置150中待存储数据条目的位置被确定之前,奇偶校验生成电路510也可以通过控制器130、400对待编程在存储器装置150中的预设数量的数据条目顺序地执行异或运算。此外,即使确定了存储器装置150中存储数据条目的位置,奇偶校验生成电路510也可以只考虑属于奇偶校验组的数据条目的数量。奇偶校验生成电路510可以不检查有关位置的信息。因此,奇偶校验生成电路510不需要大小与预设数量的数据条目和奇偶校验相对应的奇偶校验计算缓冲器。在数据条目通过各个通道Ch-0至Ch-3顺序地传输到存储器装置之前,奇偶校验生成电路510可以对数据条目顺序地执行异或运算。奇偶校验运算缓冲器514临时存储输入的数据条目和计算出的运算结果就足够了。因此,奇偶校验操作缓冲器514的大小可以减小。
图19示出根据本公开的另一实施例的存储器系统中的写入操作。图19详细描述了奇偶校验生成设备FCT的操作以及临时存储在为奇偶校验生成电路510分配的缓冲器中的数据条目。奇偶校验生成电路510可以包括被配置为执行异或运算的引擎(XOR引擎)以及被配置为存储数据条目和奇偶校验条目的缓冲器(例如,Bin(16KB)#0至#2,PG表)。根据实施例,奇偶校验生成电路510可以设置在闪存转换层(FTL)240和包括在存储器装置150中的多个存储器管芯Die-0至Die-3之间。
参照图19,可以管理存储在存储器系统110内的存储器装置150中的数据条目,并且可以基于数据条目生成奇偶校验条目。存储器系统110中的控制器130、400可以包括奇偶校验生成电路510和写入数据控制电路520。写入数据控制电路520可以为待编程到存储器装置150中的每个数据条目DIN生成缓冲器地址Bin-ID。此处,缓冲器地址Bin-ID可以响应于数据条目DIN存储在存储器装置150中的位置信息(例如,物理地址)而确定。
图19详细说明了奇偶校验生成电路510的操作以及奇偶校验生成电路510使用的临时存储在奇偶校验操作缓冲器514中的数据条目。奇偶校验生成装置510中的奇偶校验生成引擎512可以包括对数据条目执行异或(XOR)运算的逻辑运算电路516以及存储计算出的奇偶校验条目或对数据条目执行异或运算的结果的奇偶校验操作缓冲器514。在数据条目DIN的传输或移动的角度看,奇偶校验生成电路510可以设置在闪存转换层(FTL)240和包括在存储器装置150中的多个存储器管芯Die-0至Die-3之间。包括在闪存转换层(FTL)240中或与闪存转换层(FTL)240链接的写入数据控制电路520可以确定包括数据条目DIN的奇偶校验组。缓冲器地址Bin-ID可以根据相应数据条目DIN所属的奇偶校验组确定。例如,与特定数据条目DIN一起传输的缓冲器地址Bin-ID可以指示奇偶校验操作缓冲器514中用于生成特定奇偶校验条目(即,与指示数据条目DIN与哪个奇偶校验相关联的信息相对应)的空间。写入数据控制电路520可以控制或处理包括数据条目DIN和缓冲器地址Bin-ID的数据结构Context,以使其与预设格式相对应。此外,写入数据控制电路520可以管理和控制奇偶校验组表PGT,奇偶校验组表PGT包括与奇偶校验组相关的信息。
图20示出根据本公开的另一实施例的如何在存储器系统中生成奇偶校验条目。
参照图20,示出了奇偶校验条目存储在存储器装置150内的一个虚拟块(VirtualBLK)中的情况,如图17所示的实施例所示。控制器130、400内的写入数据控制电路520可以通过单触发编程操作将预设组中的多个数据条目传输到存储器装置150。写入数据控制电路520可以将通过单触发编程操作传递的多个数据条目与至少一个奇偶校验条目相关联,以建立至少一个奇偶校验组。写入数据控制电路520可以将每个数据条目DIN与缓冲器地址Bin-ID一起传输,缓冲器地址Bin-ID与指示数据条目存储的位置(例如,存储在存储器单元中的位置,例如单元串信息,最低有效位(L)、中间有效位(C)和最高有效位(M)之一等)的物理地址相对应。
奇偶校验操作缓冲器514的大小可以存储24个数据条目,这24个数据条目对应于存储在每个存储器单元中的多位数据(L/C/M)的位数(例如,3)与单元串String0至String7的数量(即,8)。奇偶校验生成引擎512可以基于指示符(例如,数据条目DIN的缓冲器地址Bin-ID)来确定奇偶校验操作缓冲器514中存储的先前结果或值中的哪一个,以对数据条目DIN执行异或运算。然后,对存储在与缓冲器地址Bin-ID相对应的位置的先前结果或值与数据条目DIN执行异或运算的当前结果可以存储在先前结果或值被存储的位置。也就是说,当数据条目DIN被传输到奇偶校验生成引擎512时,奇偶校验操作缓冲器514中的至少一个值可以在异或运算之后被更新。
可以基于存储器装置150的编程操作特性(例如,编程干扰等)和存储器装置150中的内部结构(例如,单元串的数量等)来确定通过单触发编程操作并行编程到存储器装置150中的数据条目。图20中描述的奇偶校验生成引擎512可以生成和更新基于通过单触发编程操作顺序传输的数据条目生成的多个奇偶校验条目。因此,奇偶校验操作缓冲器514的大小可以根据与通过单触发编程操作编程的数据条目相对应的奇偶校验条目的数量来确定。例如,奇偶校验条目的数量可以根据存储在每个存储器单元中的多位数据的位数和联接到单个字线的单元串的数量来确定。
如图8至图16所述,存储器装置150所需的错误恢复性能可以不同,并且建立奇偶校验组的方法可以不同。根据如何建立奇偶校验组,每个奇偶校验组中包括的数据条目的数量可以不同。然而,图20所示的奇偶校验生成引擎512不需要具有大小与数据条目的数量相对应的缓冲器。奇偶校验操作缓冲器514可以基于存储器装置150的内部结构而不是构成每个奇偶校验组的数据条目的数量来确定。
图21示出根据本公开的另一实施例的如何管理或控制存储器系统中的奇偶校验组。
参照图21,编程到存储器系统110中的存储器装置150中的数据条目DIN可以包括关于存储在存储器装置150中的位置的信息(PPN,String#)、缓冲器地址Bin-ID、Bloom过滤器信息等,这些信息由闪存转换层(FTL)240确定。
此处,Bloom过滤器涉及一种用于检查元素是否属于集合的概率数据结构。Bloom过滤器信息可以用作指示数据条目是否属于奇偶校验组的信息。根据实施例,Bloom过滤器可以使用m个位大小的位数组结构和K个不同的哈希函数来实施。每个哈希函数可以以相等的概率输出m个值。Bloom过滤器的两个主要操作是加法运算和验证运算。加法运算是向Bloom过滤器添加相应的键值,而验证运算则是检查相应的键值是否存在。基于Bloom过滤器,如果键值不存在,则可以检查出特定数据条目不属于特定奇偶校验组。反之,如果基于Bloom过滤器存在键值,则可以检查出特定数据条目可以属于特定奇偶校验组。例如,当使用利用链式哈希的Bloom过滤器时,即使每次不访问或读取存储在存储器装置150中的数据条目数次至数十次,存储器系统110也可以检查每个数据条目是否属于特定奇偶校验组。
奇偶校验生成电路510中的奇偶校验生成引擎512可以执行异或运算,记录与奇偶校验相关的数据位置(例如,物理地址PPN),并设置哈希表(Hash-Table)。为此,奇偶校验生成引擎512可以读取奇偶校验操作缓冲器514中与传输的数据条目DIN的缓冲器地址Bin-ID相对应的位置存储的值(例如,先前结果),对该值和数据条目DIN执行异或运算,并将异或运算的结果存储在奇偶校验操作缓冲器514中(例如,在存储先前结果的位置处重新写入结果)。也就是说,奇偶校验生成引擎512可以将异或(XOR)运算的结果存储回(即,更新)奇偶校验计算缓冲器514的位置。此外,奇偶校验生成电路510可以将物理地址(PPN)添加到奇偶校验组表(PG表)中,物理地址(PPN)是关于存储器装置150中存储数据条目DIN的位置的信息。之后,奇偶校验生成引擎512可以设置和更新Bloom过滤器的哈希表。
图21说明了具有512KB的大小的奇偶校验操作缓冲器514的示例,奇偶校验操作缓冲器514对应于具有8个单元串的结构,该8个单元串包括存储多位数据的3位的存储器单元(TLC)(即,联接到一个存储器平面或一个存储块中的一个字线的8个单元串)。例如,奇偶校验操作缓冲器514的512KB空间可以划分成与8个单元串相对应的8个缓冲器组。8个缓冲器组(每个缓冲器组的大小为64KB)可以划分成4个单元缓冲器。在这四个单元缓冲器之中,三个单元缓冲器的缓冲器地址Bin-ID可以为0、1、2,它们可以对应于每个存储器单元中存储的多位数据的3位(L/C/M)。四个单元缓冲器之中的另一个单元缓冲器可以存储关于页面组表的信息。每个单元缓冲器的大小可以为16KB。例如,第一单元缓冲器PG-Bin#0可以存储元信息、计算出的奇偶校验以及奇偶校验条目将被存储的物理地址。此外,第四单元缓冲器(PG表,哈希)可以存储第一单元缓冲器PG-Bin#0至第三单元缓冲器PG-Bin#2中存储的奇偶校验条目的哈希值。
此处,奇偶校验生成电路510中的奇偶校验生成引擎512可以读取单元缓冲器(Bin(16KB)#0至#2,PG表)中存储的值或数据(例如,计算出的奇偶校验)。奇偶校验生成引擎512可以对从闪存转换层(FTL)240传送到存储器装置150中包括的多个存储器管芯Die-0至Die-3的数据条目DIN与从单元缓冲器(Bin(16KB)#0至#2,PG表)中读取的值或数据执行异或(XOR)运算。然后,奇偶校验生成引擎512可以将异或运算的结果存储在单元缓冲器(Bin(16KB)#0至#2,PG表)中(WriteBack)。参照图18至图21,本公开的实施例中提出的奇偶校验生成方法可以称为小开销失败遍历(SOFT,Small Overhead Fail Traverse)-XOR方案。该奇偶校验生成方法不需要使用大小与所有数据条目相对应的缓冲器,这些数据条目属于各个奇偶校验组并分配和存储在多个开放存储块中。图21中描述的每个单元缓冲器中存储的信息以及信息的大小可以根据存储器系统110和存储器装置150的配置和性能而变化。此外,奇偶校验操作缓冲器514的大小也可以根据存储器系统110的数据编程方法或存储器装置150的配置而变化。然而,奇偶校验操作缓冲器514的大小可以不与属于奇偶校验组的数据条目的数量或开放存储块的数量成比例地增加。
图22示出根据本公开的另一实施例的存储器系统中的奇偶校验生成引擎。
参照图22,奇偶校验生成引擎512可以包括执行异或(XOR)运算的逻辑运算电路516以及存储数据条目1、2、3和奇偶校验的奇偶校验操作缓冲器514。
根据实施例,被顺序传输到奇偶校验生成引擎512的数据条目1、2、3可以被顺序传输到存储器装置150并被编程到存储器装置150。此时,可以不考虑存储器装置150内存储数据条目1、2、3的位置来确定数据条目1、2、3是否属于特定奇偶校验组。奇偶校验生成引擎512可以顺序地对输入数据条目1、2、3执行异或(XOR)运算,然后输出异或(XOR)运算的结果。
奇偶校验生成引擎512可以具有与存储器装置150内的结构相对应的奇偶校验操作缓冲器514。然而,根据实施例,奇偶校验生成引擎512可以基于数据条目1、2、3被传输到存储器装置150以进行数据编程操作的顺序来生成奇偶校验条目。例如,一个奇偶校验组可以包括9个数据条目和1个奇偶校验条目。在这种情况下,奇偶校验生成引擎512可以对9个顺序传输的数据条目(即,第1至第9数据条目)执行逻辑运算,并输出结果作为第一奇偶校验条目。之后,奇偶校验生成引擎512可以基于顺序传输的第10至第18其它数据条目来计算第二奇偶校验条目。
包括奇偶校验生成引擎512的控制器130、400可以识别关于顺序传输到存储器装置150并被编程到存储器装置150的数据条目的物理位置。从奇偶校验生成引擎512输出的奇偶校验条目可以包括关于存储器装置150中存储多个数据条目的位置的附加信息。在这种情况下,对应于特定奇偶校验(即,属于特定奇偶校验组)的多个数据条目可以被分配并存储在不同的存储器管芯、不同的存储器平面或不同的存储块中。根据实施例,多个数据条目可以存储在相同的存储器管芯、相同的存储器平面或相同的存储块中。无论多个数据条目存储在何处,都可以确定奇偶校验组。多个数据条目中的每一个都可以包括关于与每个数据条目相关联的奇偶校验组的信息,而奇偶校验条目可以包括与奇偶校验条目相关联的多个数据条目的物理地址。
图22中描述的奇偶校验生成引擎512可以基于数据条目的编程顺序或数据条目通过至少一个通道传输到存储器装置150以进行数据编程操作的顺序,以预设数量为单位的数据条目生成奇偶校验条目。此外,包括奇偶校验生成引擎512的控制器130、400可以基于待编程到存储器装置150中的数据条目的数量来改变或调整构成单个奇偶校验组的数据条目的数量。
例如,奇偶校验组可以包括10个数据条目和1个奇偶校验条目。当对20个数据条目进行编程时,可以将20个数据条目划分为两个奇偶校验组,每个奇偶校验组包括10个数据条目,并且可以生成两个奇偶校验条目(即,第1奇偶校验条目和第2奇偶校验条目)。如果对21个数据条目进行编程,则难以将第21数据条目存储在存储器装置150中,直到有9个其它数据条目被新输入和编程,或者基于9个虚设数据条目和第21数据条目生成第3奇偶校验条目。然而,当构成每个奇偶校验组的数据条目的数量可以动态地改变或调整时,可以将21个数据条目分配给3个奇偶校验组,每个奇偶校验组包括9个数据条目。当生成3个奇偶校验条目时,可以将21个数据条目存储在存储器装置150中,而无需其它数据条目或虚设数据条目。
根据实施例,当存储在存储器装置150中的奇偶校验组中的至少一个数据条目被擦除时,奇偶校验生成引擎512可以基于被擦除的数据条目来更新奇偶校验条目。擦除操作或垃圾收集将稍后说明。
图23示出根据本公开的另一实施例的存储器装置中的写入数据的数据结构。具体地,图23描述了由闪存转换层(FTL)240通过编程操作存储在存储器装置150中的编程数据条目的结构。
参照图23,闪存转换层(FTL)240可以确定奇偶校验组的结构,该奇偶校验组包括在存储器系统110执行的编程操作期间存储在存储器装置150中的编程数据。
闪存转换层240可以使用虚拟块地址。此处,虚拟块地址可以与主机102使用的逻辑地址和指示存储器装置150内的数据存储位置的物理地址区分开,其中主机102是联接到存储器系统110的外部装置。例如,虚拟块地址可以对应于存储器装置150内的开放存储块。
闪存转换层240可以对待编程到存储器装置150的数据条目进行排序和分组。此外,闪存转换层240可以配置列表List[],列表List[]包含将存储相应数据条目的位置的虚拟块地址。列表List[]可以包括基于相应数据条目生成的奇偶校验条目被存储的位置。例如,存储器装置150中的第177存储块Block#177可以被指定为用于存储奇偶校验条目的存储块(例如,参见图17的实施例)。第177存储块Block#177可以存储1904个奇偶校验条目。
存储器装置150的包括在列表List[]中的存储块可以不断改变。列表List[]可以包括超级块信息。此外,列表List[]中包括的虚拟块地址可以基于存储块中的缺陷、是否执行垃圾收集等而改变。
闪存转换层(FTL)240可以确定奇偶校验组的数据结构,该奇偶校验组包括待编程到存储器装置150的数据条目。包含数据条目的奇偶校验组的数据结构可以基于列表List[]以及列表List[]中包括的存储块地址(即,数据条目)的总数(例如,Last-Block)和表示存储块地址的当前数据条目与最后一个数据条目之间的差值的当前条目信息(例如,Last-Entry)进行配置。例如,对于具有1TB存储空间的存储器装置150,假设存储器装置150包括1%的开销,则列表List[]最多可以包括128个存储块地址。在将待编程到存储器装置150的数据条目的块地址添加到列表List[]时,闪存转换层240可以基于总数(例如,Last-Block)和当前条目信息(例如,Last-Block)确定有多少其它数据条目可以进一步添加到列表List[]中。
图24示出在奇偶校验生成电路中生成元数据的操作。
参照图24,奇偶校验生成电路510可以包括写入数据控制电路520和奇偶校验生成引擎512,写入数据控制电路520包括由至少一个处理器运行的固件。根据实施例,写入数据控制电路520不包括在奇偶校验生成电路510中,但写入数据控制电路520可以结合奇偶校验生成电路510来控制奇偶校验生成操作。
写入数据控制电路520可以设置用于生成奇偶校验条目的数据结构。此处,数据结构可以包括用于生成奇偶校验条目的奇偶校验组设置、属于奇偶校验组的数据条目和奇偶校验条目的存储位置以及关于奇偶校验组的信息。此外,数据结构可以包括各种类型的元信息,这些元信息针对每个数据条目和每个奇偶校验条目具有预设大小。
虽然属于奇偶校验组的数据条目的数量可以根据实施例而变化,但写入数据控制电路520仍可以识别属于每个奇偶校验组的数据条目的数量。闪存转换层240可以识别待编程到存储器装置150中的数据条目的数量,并确定将数据条目存储在存储器装置150中的方法和顺序。写入数据控制电路520可以基于闪存转换层240确定的方法和顺序建立与奇偶校验组相关的数据结构。
例如,存储器装置150可以包括能够存储奇偶校验组表和奇偶校验条目的第一存储块Block#056、Block#720,以及能够存储属于奇偶校验组的数据条目的第二存储块Block#177、Block#212、Block#761。根据实施例,第一存储块Block#056、Block#720中的存储器单元可以是在每个存储器单元中存储1位数据的SLC块,或者在每个存储器单元中存储3位数据的TLC块。另一方面,第二存储块Block#177、Block#212、Block#761中的存储器单元可以是在每个存储器单元中存储3位数据的TLC块。
根据实施例,写入数据控制电路520可以设置与存储器装置150的数据存储空间相对应的奇偶校验组的最小数量。写入数据控制电路520可以确定奇偶校验组的数量。奇偶校验组的数量可以与存储器装置150的数据密度(即,每个预设的存储大小/范围所存储的数据条目的数量)成正比。例如,随着存储器单元中存储的数据位数增加,奇偶校验组的数量也可以增加。此外,奇偶校验组的数量可以与奇偶校验组的大小成反比。例如,随着奇偶校验组中包括的数据条目数量的增加,奇偶校验组的数量可以减少。
根据实施例,写入数据控制电路520可以设置能够存储奇偶校验条目的存储块的数量。可以存储奇偶校验条目的奇偶校验存储块的数量可以与存储器装置150的数据密度成正比,并且可以与奇偶校验组的大小成反比。
根据实施例,写入数据控制电路520可以收集属于奇偶校验组的数据条目和指示将存储奇偶校验条目的存储块的物理地址。存储数据条目和奇偶校验条目的存储块可以是存储器装置150中的全部或部分开放存储块。写入数据控制电路520可以将与属于奇偶校验组的数据条目相对应的物理地址插入到数据条目的元数据中。
与写入数据控制电路520传递的数据条目相对应的物理地址可以对应于缓冲器地址Bin-ID。例如,缓冲器地址Bin-ID可以对应于数据条目的物理地址的一部分。基于缓冲器地址Bin-ID,奇偶校验生成引擎512可以确定奇偶校验操作缓冲器514中存储的哪个奇偶校验值应经受对数据条目DIN执行的异或运算。
根据实施例,奇偶校验生成引擎512可以重复地对从写入数据控制电路520传输的数据条目和先前的异或运算的先前结果(即,计算值)执行异或运算。此外,奇偶校验生成引擎512可以配置元数据,该元数据包括关于存储器装置150中将存储所生成或更新的奇偶校验条目的位置的物理地址。
图25示出奇偶校验生成电路中的缓冲器。具体地,图25说明了奇偶校验生成电路510内的奇偶校验操作缓冲器514。
参照图18和图25,奇偶校验生成电路510可以包括奇偶校验操作缓冲器514。根据实施例,奇偶校验生成电路510可以包括执行特定功能的处理器和用作奇偶校验操作缓冲器514的高速缓存存储器。
根据实施例,奇偶校验生成电路510可以包括执行特定功能的处理器和高速缓存存储器。根据实施例,奇偶校验生成电路510可以包括被设计用于执行特定操作的专用集成电路(ASIC)。例如,奇偶校验生成电路510可以包括与诸如SRAM的高速缓存存储器接合的处理单元。处理单元可以以被设计为处置特定任务的处理器、协同处理器、微处理器、加速器、指定处理器等来实施。根据另一实施例,处理单元可以以多处理器或多内核处理器来实施。对用于执行特定操作的处理单元进行有针对性的自适应设计可以降低功耗,并且存储器系统110可以在数据输入/输出操作方面具有良好的性能。
根据实施例,奇偶校验操作缓冲器514的大小可以为512KB。参照图21和图25,奇偶校验操作缓冲器514的大小可以根据存储器装置150的结构或配置确定。例如,可以在存储器装置150的每个存储器单元中存储3位数据。联接到每个存储块或每个存储器平面中的单个字线的单元串的数量可以是8个。四个单元缓冲器可以对应于3位数据和奇偶校验表信息。奇偶校验操作缓冲器514可以被配置为对应于8个单元串。因此,奇偶校验操作缓冲器514可以包括32个单元缓冲器。每个单元缓冲器的大小可以为16KB。
参照图25,对四个单元缓冲器进行更详细的描述。奇偶校验值(Parity-Entri-Struct)可以存储在四个单元缓冲器中的三个中,奇偶校验组表信息(PG-Table-Struct)可以存储在四个单元缓冲器中的另一个中。存储奇偶校验条目(Parity-Entri-Struct)的16KB单元缓冲器可以分为四个4KB的子单元。16KB奇偶校验组表信息(PG-Table-Struct)可以包括与奇偶校验条目相关的多个数据条目。下面将详细描述奇偶校验条目和奇偶校验组表信息。
图26示出包括奇偶校验生成电路的存储器系统中的数据条目结构和写入操作。具体地,图26描述了从控制器130传送到存储器装置150以进行数据编程操作的每个数据条目的数据结构。例如,图26示出4KB数据组块(chunk)的结构发生了变化。
存储器系统110中的控制器130、400可以传输数据组块以将数据存储在存储器装置150中,数据组块是预设大小的单元或格式。图18中描述的奇偶校验生成电路510可以以不同于图8至图17中描述的存储器系统的方式来生成奇偶校验条目。当由于存储在存储器系统110内的奇偶校验条目发生变化而导致数据组块的大小发生变化时,存在改变控制器130、400和存储器装置150的配置的至少一部分的负担。然而,可以在不改变数据组块的大小的情况下应用根据本公开的实施例的奇偶校验生成电路510。
根据实施例,存储器系统110内的数据组块可以划分为四条数据。数据组块的大小可以为4KB(即,4608字节)。具体地,数据组块可以包括24字节的元数据、4000(4K)字节的用户数据、8字节的CRC数据和480字节的奇偶校验数据(ECC Parity)。控制器130、400可以通过图1中描述的ECC电路138和图2中描述的ECC模块266为用户数据(USER DATA)生成奇偶校验数据(ECC Parity)。控制器130、400可以在数据组块中包括奇偶校验数据(ECC Parity)。此外,控制器130、400可以读取数据组块。如果用户数据(USER DATA)中存在错误,则图1中描述的ECC电路138和图2中描述的ECC模块266可以使用奇偶校验数据(ECC Parity)来恢复用户数据(USER DATA)。如果图1中描述的ECC电路138和图2中描述的ECC模块266无法恢复错误,则可以确定相应的数据组块具有UECC。如果相应的数据组块具有UECC,则可以基于奇偶校验生成电路510生成的奇偶校验条目恢复UECC。
在图8至图17中描述的存储器装置中,可以预先确定存储属于奇偶校验组的多个数据条目的位置和存储与多个数据条目相对应的奇偶校验条目的位置。在这种情况下,无需在每个数据条目中添加或存储奇偶校验组信息。这是因为存储奇偶校验条目的位置可以表明奇偶校验条目所属的奇偶校验组信息。同样,由于存储数据条目的位置和存储奇偶校验条目的位置之间的关系,指定与数据条目相对应的奇偶校验条目没有困难。
然而,存储奇偶校验生成电路510生成的奇偶校验条目的位置与存储与奇偶校验条目相关联的数据条目的位置之间的关系可以不同。因此,应生成、管理和存储关于奇偶校验组的信息(例如,奇偶校验组表)。此外,在属于特定奇偶校验组的每个数据条目也可以具有关于每个数据条目所属的奇偶校验组的信息的情况下,数据条目和奇偶校验条目可以很容易地基于这些信息交叉验证奇偶校验组。
根据实施例,数据组块可以被划分为五条数据。大小为4KB(即,4608字节)的数据组块可以包括22字节的元数据、2字节的奇偶校验索引(PGT-Idx)、4000(4K)字节的用户数据(USER DATA)、8字节的CRC数据和480字节的奇偶校验数据(ECC Parity)。数据组块内的元数据的大小可以从24字节减小到22字节,奇偶校验索引(PGT-Idx)可以添加到减少的2字节中。另一方面,奇偶校验索引(PGT-Idx)的大小可以基于存储器装置150的存储容量或奇偶校验组的最大数量来确定。
例如,如果指定了存储奇偶校验条目的存储块,则可以将大小可以被设置为2字节(16位)的奇偶校验索引(PGT-Idx)用于将65536个奇偶校验组(例如,奇偶校验组0至奇偶校验组65535)彼此区分开。
根据实施例,2字节奇偶校验索引(PGT-Idx)可以包括存储奇偶校验条目的存储块的地址(1字节)和奇偶校验条目在相应存储块中的位置(1字节)。在这种情况下,可以通过2字节奇偶校验索引(PGT-Idx)来检查与数据组块中包括的4000(4K)字节用户数据(USERDATA)相关联的奇偶校验条目被存储的位置。如果数据组块中的用户数据(USER DATA)发生错误,则控制器130、400能够通过2字节奇偶校验索引(PGT-Idx)找到与数据条目相关联的奇偶校验条目。
图27示出由奇偶校验生成电路510生成并存储在存储器装置150中的奇偶校验条目(Parity-Entri-Struct)。
参照图25和图27,奇偶校验生成电路510生成大小为16KB的奇偶校验条目(Parity-Entri-Struct)。控制器130、400可以将大小为16KB的奇偶校验条目(Parity-Entri-Struct)划分成存储在存储器装置150中的多个组块。奇偶校验生成电路510可以执行异或运算以生成奇偶校验条目,然后记录与生成的奇偶校验条目相关联的数据条目的位置。此外,奇偶校验生成电路510可以设置哈希表。
由于奇偶校验生成电路510可以响应于多个数据条目被传送到存储器装置150或存储器管芯的顺序来生成或计算奇偶校验条目,而不是根据与奇偶校验条目的位置相对应的多个数据条目来生成奇偶校验条目,因此生成奇偶校验条目所涉及的多个数据条目被存储的位置可以不固定。数据条目的位置可以基于存储器装置150的操作状态动态地确定。因此,有必要将闪存转换层240中确定的多个数据条目的存储位置记录为奇偶校验条目中包括的一个信息。例如,在执行异或运算以生成奇偶校验数据之后,奇偶校验生成电路510可以将异或运算中涉及的数据条目的位置信息(例如,PPN)添加到奇偶校验条目的元数据中包括的页面组表PG_Table。也就是说,在执行异或运算生成奇偶校验条目之后,用于异或运算的数据条目的位置可以记录在奇偶校验条目的元数据中。如图27所示,用于生成奇偶校验的数据条目被编程的位置可以根据存储器装置150中的开放存储块的位置和开放存储块中的页面编号或偏移来确定。对数据条目进行编程的位置(例如,物理页面编号PPN或物理地址)可以根据存储器装置150中包括的存储器管芯、存储器平面或开放存储块的操作状态而变化。
此外,执行SOFT-XOR方案的奇偶校验生成电路510可以接收缓冲器地址Bin-ID,缓冲器地址Bin-ID包括与单元串的位置、存储在存储器单元中的多位数据的位(例如,L/C/M)相对应的信息。基于缓冲器地址Bin-ID,可以对相应的数据条目DIN和奇偶校验操作缓冲器514中存储的值执行异或(XOR)运算。之后,奇偶校验生成电路510可以更新奇偶校验操作缓冲器514中的缓冲器地址(Bin-ID)的位置,即异或(XOR)运算的结果,并将相应数据条目的位置(例如,PPN)插入到页面组表PG_Table中。此外,奇偶校验生成电路510可以另外在哈希表中执行Bloom过滤器位标记操作。
此处,可以使用Bloom过滤器来构建一个集合,该集合确定数据条目是否在集合中并具有以哈希编码方法(类似于哈希表)操作的概率数据结构。Bloom过滤器可以是一种存储器有效的概率数据结构,其可以用于检查给定数据是否属于集合或簇。在检查数据列表中的给定数据条目是否属于集合或簇时,可以基于Bloom过滤器进行检查。例如,在记录用于计算奇偶校验条目的数据条目的物理位置(例如,物理地址)之后,奇偶校验生成设备FCT可以标记相应的物理地址是否为聚合配置。根据实施例,Bloom过滤器可以包括名为Bloom的位图和哈希函数。奇偶校验生成电路510可以通过将相应数据条目DIN的键值应用到哈希函数来获得哈希值。奇偶校验生成电路510可以使用所获得的哈希值,利用模块化操作等方式指定Bloom中的位的位置。例如,奇偶校验生成装置510可以将相应数据条目DIN的物理地址(例如,PPN)传递给哈希函数,以获得哈希值Hash#0、Hash#1、Hash#3。然后,奇偶校验生成装置510可以通过Bloom中的位图PG-Bin#0、PG-Bin#1、PG-Bin#2中的位数来执行模块化操作,以便指定位的位置并标记相应位。
存储器系统110可以读取被编程到存储器装置150中的数据条目。在这种情况下,当读取数据条目中发生错误(例如,UECC)时,控制器130、400可以通过使用在编程操作期间存储的奇偶校验条目来恢复或还原错误的读取数据条目。下面将描述如何基于存储器系统110中使用的奇偶校验条目(Parity-Entri-Struct)来恢复错误的读取数据条目。
图28示出奇偶校验条目中指示存储多个数据条目的位置的物理地址。
参照图25、图27和图28,奇偶校验生成电路510可以执行异或(XOR)运算,然后将指示存储器装置150中存储进行异或(XOR)运算的数据条目DIN的位置的物理地址(PPN)添加到奇偶校验条目(Parity-Entri-Struct)中。属于相同奇偶校验组的多个数据条目的多个物理地址(PPN)可以顺序地添加到奇偶校验条目(Parity-Entri-Struct)中。
配置或设置物理地址(PPN)的方法可以根据实施例而有所不同。根据配置或设置物理地址(PPN)的方法,物理地址(PPN)指示的区域或位置可以包括多个存储器单元或多个页面。参照图28,物理地址(PPN)可以包括能够指定存储器管芯、字线和单元串的信息。此外,单个物理地址(PPN)可以指向特定存储器管芯内的所有存储器平面中包括的存储器单元。例如,首先添加在奇偶校验条目中的第一物理地址811可以指向与第一存储器管芯Die0的所有存储器平面Plane0、Plane1、Plane2和Plane3中的第一字线WL0联接的第一单元串String0。第一物理地址811可以指示与第一存储器管芯Die0的第一存储器平面Plane0至第四存储器平面Plane3中的第一字线WL0连接的第一单元串String0指定的所有位置。此外,第二物理地址120可以指示与第六存储器管芯Die5的第一存储器平面Plane0至第四存储器平面Plane3中的第31字线WL30连接的第241单元串String240指定的所有位置。
奇偶校验生成电路510可以将物理地址(PPN)添加到奇偶校验条目(Parity-Entri-Struct)中,其中物理地址(PPN)是相应数据条目所存储的位置。所添加的物理地址数量可以等于属于每个奇偶校验组的数据条目的数量。例如,如果属于特定奇偶校验组的数据条目数为20个,则与特定奇偶校验组相对应的奇偶校验条目(Parity-Entri-Struct)可以包括20个物理地址(PPN)。根据实施例,物理地址的长度可以是1字节。物理地址的长度可以根据存储器装置150的内部配置而变化。
与图8至图17中描述的存储器装置不同,根据图28中描述的存储器装置中的编程操作方法,属于相同奇偶校验组的多个数据条目被存储的位置可以不固定。这些位置可以基于存储块150的操作状态来确定或改变。由于存储多个数据条目的位置不固定,因此指示存储多个数据条目的位置的物理地址(PPN)可以被包括在待存储在存储器装置150中的奇偶校验条目(Parity-Entri-Struct)中。
此外,与图8至图17所示的存储器装置不同,在图28所示的存储器装置中,与单个字线联接的多个单元串中存储的数据条目可以属于不同的奇偶校验组。图28中描述的存储器装置可以改变构成奇偶校验组的数据条目的数量,并且数据条目基于编程操作方法不需要存储在预定或固定的位置中。因此,无需在存储器装置150中编程虚设数据条目。与存储器装置150中的至少一个存储块中的单个字线联接的多个单元串中存储的数据条目可以属于不同的奇偶校验组。
图29示出存储在存储器装置中的奇偶校验组表。
参照图29,存储器系统110可以基于包括在奇偶校验操作缓冲器514中的多个奇偶校验条目(Parity-Entri-Struct)形成奇偶校验组表。根据实施例,奇偶校验生成电路510可以为奇偶校验组表配置或设置数据结构(PGT-Structure),该数据结构(PGT-Structure)包括关于奇偶校验组的信息,每个奇偶校验组包括奇偶校验条目和数据条目。此外,奇偶校验生成电路510可以配置关于与属于每个奇偶校验组的数据条目相关联的物理地址的数据结构(PPN-Struct)。
奇偶校验生成电路510生成的奇偶校验组表的配置和大小可以根据实施例而变化。例如,根据存储数据条目和奇偶校验条目的存储器装置150的内部配置,奇偶校验组表的配置和大小可以不同。
参照图29,奇偶校验组表的数据结构(PGT-结构)可以包括关于存储多个数据条目的位置的物理地址信息(B0PPN、B1PPN、B2PPN、……、BnPPN……)。例如,可以分配大小约为12KB的区域来记录关于属于单个奇偶校验组的多个数据条目的位置信息。
此外,奇偶校验组表的数据结构(PGT-Structure)可以包括指示存储奇偶校验条目的位置的物理地址(Addr)以及附加信息区域(TBD_B),该附加信息区域(TBD_B)包括关于包括多少数据条目的总页面数量(N-page)。根据实施例,附加信息区域(TBD_B)可以进一步包括用于控制或管理奇偶校验组的附加信息(等)。
根据实施例,属于奇偶校验组的多个数据条目的物理地址信息(例如,B0PPN)的大小可以是32位。数据条目的物理地址信息(例如,B0PPN)可以包括存储器装置150中的存储块内的数据条目(数据条目存储在该存储块中)的第一地址(例如,Start(16位))以及存储在相应存储块中的数据条目的总数量(例如,N-Page(16位))。参照图8至图17中描述的存储器装置,一些数据条目可以顺序地存储在属于单个奇偶校验组的多个数据条目之中的至少一个开放存储块中。在这种情况下,假设确定了存储在相应开放存储块中的第一数据条目的第一地址和存储在相应开放存储块中的数据条目的数量,则可以识别出属于特定奇偶校验组并存储在相应开放存储块中的所有多个数据条目。
例如,一个物理地址(例如,B0PPN)指向的可以不是单个数据条目,而是顺序编程到存储块中的多个数据条目。存储在第一物理地址信息(B0PPN)中的第一数据条目的地址可以指向与第一存储块Block#0的第一字线WL0联接的第一单元串String0,并且数据条目的数量(N-Page)可以是328。与四个存储器平面Plane0至Plane3内的第一存储块中的每个字线连接的单元串数量可以为8个。在这种情况下,第一物理地址信息B0PPN可以是指从联接到第一存储块Block#0中的第一字线WL0的第一单元串String0至第11字线WL10的第二单元串String1的328个连续页面中存储的数据条目。此外,存储在第二物理地址信息(B1PPN)中的第一数据条目的地址可以指向与第二存储块Block#1的第一字线WL0联接的第一单元串String0,并且数据条目的数量(N-Page)可以是20。在这种情况下,第一物理地址信息(B0PPN)可以是指从联接到第一存储块Block#0的第一字线WL0的第一单元串String0至第五单元串String4的20个连续页面中存储的数据条目。
根据实施例,每个物理地址信息(例如,B0PPN)可以是关于每个开放存储块的信息。在这种情况下,奇偶校验组表的数据结构(PGT-Structure)中包括的物理地址信息(B0PPN、B1PPN、B2PPN、……、BnPPN、……)的数量可以等于存储器装置150中的开放存储块的数量。
根据实施例,存储器装置150中的每个存储器管芯可以包括四个存储器平面,并且存储器管芯可以包括数百个字线。可能需要16位的长度来识别特定存储块内的特定字线和特定单元串。然而,该长度可以根据存储器装置150的内部配置而变化。
另一方面,如图28所述,多个数据条目可以不连续存储在特定存储块或特定存储器管芯内。在这种情况下,在记录存储相应数据条目的位置之后,数据条目的总数量可以存储为1。
因此,奇偶校验组表的数据结构(PGT-Structure)中包括的物理地址(B0PPN、B1PPN、B2PPN、……、BnPPN、……)的数量可以根据存储器装置150的内部配置和编程方法而变化。此外,根据奇偶校验组表(页面组表)中包括的物理地址(B0PPN、B1PPN、B2PPN、……、BnPPN、……)的数量,被分配用来在奇偶校验组表的数据结构(PGT-Structure)中记录物理地址(B0PPN、B1PPN、B2PPN、……、BnPPN、……)的大小/长度也可以变化。
如上所述,参照图8至图29,可以以各种方式设置将数据条目编程在存储器系统110内的存储器装置150中的方法。在图8至图29中,说明了如何生成奇偶校验组的奇偶校验条目以及如何配置或设置奇偶校验组。下文将描述控制器130、400加载存储在存储器装置150中的奇偶校验组以进行数据恢复操作的操作。
图30示出用于检查奇偶校验组表中包括具有错误的数据条目的奇偶校验组的操作。
根据实施例,图1所示的ECC电路138和图2所示的ECC模块266可以检查读取数据条目中发生的错误。另外,ECC电路138或ECC模块266可以通过使用由奇偶校验生成电路510生成的奇偶校验条目来恢复发生错误的读取数据条目。如上所述,由于在根据本公开的实施例的存储器系统110中用于生成奇偶校验条目的多个数据条目的位置不是预先确定或预设的(例如,不是预先固定的),因此与奇偶校验条目相对应的元数据可以包括关于与奇偶校验条目关联的多个数据条目的位置的物理地址(例如,PPN)。
ECC电路138或ECC模块266可以找到元数据包括发生错误的读取数据条目的物理地址的奇偶校验条目。例如,控制器130可以在存储器装置150中存储有多个奇偶校验条目的特定存储块中找到具有包括相应物理地址的元数据的奇偶校验条目。在找到奇偶校验条目之后,控制器130可以读取与奇偶校验元数据中记录的所有物理地址相对应的多个数据条目。ECC电路138或ECC模块266可以对多个数据条目和奇偶校验条目执行异或运算以恢复发生错误的读取数据条目。当控制器130顺序读取多个数据条目时,ECC电路138或ECC模块266可以利用奇偶校验条目对顺序读取的数据执行异或运算。类似于奇偶校验生成电路510,当顺序读取与奇偶校验条目相对应的多个数据条目时,ECC模块266也可以执行异或运算。因此,ECC电路138或ECC模块266不必与能够临时存储用于恢复操作的所有多个数据条目的缓冲器或高速缓存接合。类似于奇偶校验生成电路510,ECC电路138或ECC模块266可以减小分配给ECC电路138或ECC模块266的缓冲器或高速缓存的大小,同时使用通过异或运算生成的奇偶校验条目来恢复错误的读取数据条目。
根据本公开的实施例,ECC电路138或ECC模块266确定读取数据条目中是否包括错误(例如,UECC)。闪存转换层(FTL)240可以使用奇偶校验生成电路510来基于奇偶校验条目恢复或还原错误的读取数据条目。参照图30,当基于通过由奇偶校验生成电路510执行的SOFT-XOR运算生成的奇偶校验条目来恢复错误的读取数据条目时,可以搜索和识别用于在编程操作期间生成奇偶校验条目的数据条目(例如,chipkill单元或chipkill解码单元)。
闪存转换层240可以在奇偶校验组表(关于多个奇偶校验组的信息)中找到发生错误的数据条目(即,属于奇偶校验组的奇偶校验条目)的奇偶校验组。指示奇偶校验组的奇偶校验条目可以包括关于奇偶校验操作缓冲器514中的相应数据条目的信息,该信息是通过对属于奇偶校验组的数据条目进行异或运算而获得的。当将奇偶校验条目存储在存储器装置150中时,可以将奇偶校验条目寄存在奇偶校验组表中。闪存转换层240可以重新排列奇偶校验组表并执行跟踪操作(失败遍历)以找到与奇偶校验组相对应的奇偶校验条目,该奇偶校验组与错误生成的数据条目相关联。也就是说,闪存转换层240重新排列奇偶校验组表并对包含错误数据条目的奇偶校验组执行跟踪操作,以在存储器装置150中搜索与包含错误数据条目(例如,失败页面)的奇偶校验组相对应的奇偶校验条目的位置。闪存转换层240可以通过跟踪操作找到相应的奇偶校验组,并对相应的奇偶校验组执行读取操作(奇偶校验组读取、奇偶校验组的页面读取)。闪存转换层240可以读取属于相应奇偶校验组的奇偶校验条目,然后对发生错误的数据条目执行恢复操作。
参照图30,闪存转换层240可以执行跟踪操作以找到错误数据条目所属的奇偶校验组。参照图26,闪存转换层240可以通过其中发生错误的数据条目中包括的奇偶校验索引(PGT-Idx)来识别关于奇偶校验组的信息。闪存转换层240可以计算缓冲器地址Bin-ID0至BinID2以及发生错误的数据条目的物理地址信息的哈希值。
参照图23和图30,闪存转换层240可以按照从列表List[]中的最后一个存储块到起始存储块的相反顺序重新排列奇偶校验组表信息,这与存储器装置150中的列表List[](即,存储在存储器装置150中的奇偶校验组表)之前构建列表List[]时的顺序相反。此时,基于Bloom过滤器和所存储的哈希值,可以检查从奇偶校验组表信息中检索到的存储块的地址是否指向相应的奇偶校验组。可以重复执行该操作,直到闪存转换层240找到列表List[]中包括的所有存储块的地址(即,直到收集到关于所有奇偶校验组表的信息)。
基于缓冲器地址Bin-ID0至BinID2和哈希值,该哈希值是关于发生错误的数据条目所属的奇偶校验组的信息,闪存转换层240可以根据奇偶校验组表信息找到指示存储与奇偶校验组相对应的奇偶校验条目的位置的物理地址。为了恢复错误的数据条目,闪存转换层240可以基于物理地址从存储器装置150读取奇偶校验条目。
闪存转换层240可以使用奇偶校验生成电路510来进行错误恢复。当发生错误时,闪存转换层240可以读取数据条目所属的奇偶校验组中包括的奇偶校验条目。参照图25和图27,基于属于奇偶校验条目的信息,闪存转换层240可以基于记录在奇偶校验条目中的物理地址(PPN)顺序地读取数据条目。奇偶校验生成电路510可以基于奇偶校验条目建立奇偶校验操作缓冲器514并对由闪存转换层240读取的数据条目和奇偶校验条目执行异或(XOR)运算。当奇偶校验生成电路510对奇偶校验条目与相应奇偶校验组中发生错误的数据条目以外的数据条目执行异或(XOR)运算时,可以恢复错误的数据条目。
根据实施例,闪存转换层240可以通过执行“失败遍历”(搜索包括失败页面的bin)和“奇偶校验组读取”(读取奇偶校验组的页面)来恢复错误的读取数据条目。寻找动态PG(“失败遍历”)的过程如下。
①FTL计算失败PPN的Bin-ID(0至2)和Hash。
②FTL按照List的最后一个条目[Last-Block]的相反顺序组成遍历路径。
③FTL对条目重复③,直到Hash与遍历路径匹配。
④当在PG-Bin[1024]中搜索到PPN时,FTL进入⑤。如果没有,再次重复③。
⑤当遍历正常完成时,FTL通过Bin[]开始奇偶校验组恢复。
此外,读取包括与通过XOR生成的奇偶校验条目相关的多个数据条目的数据组(例如,chipkill单元或chipkill解码单元)(“奇偶校验组读取”)的操作如下。
①FTL从遍历期间找到的bin位置读取16KB奇偶校验。
②FTL按照PG-Bin[]中写入的PPN的顺序读取数据。
③FTL对bin和读取数据进行异或。如果不是最后一个,则重复②。
④FTL使用构成bin的所有PPN的异或的余数作为恢复数据。
⑤FTL更新NAND中为失败PPN恢复的数据和bin。
另一方面,奇偶校验生成电路510可以用指示将存储恢复的数据条目的位置的物理地址(PPN)来更新与奇偶校验操作缓冲器514中的错误数据条目相对应的物理地址(PPN)。如果特定奇偶校验组内的数据条目中发生错误,则执行此操作以恢复数据条目。此外,可以在擦除特定奇偶校验组内的数据条目的操作期间执行该操作。在下文中,将描述可以在存储器系统110中执行的擦除操作。
图31示出用于擦除存储在存储器系统中的数据条目的操作。
参照图1至图3,存储器系统110可以在执行数据输入/输出操作的同时执行擦除存储在存储器装置150中的数据条目的操作。可以响应于从诸如主机102的外部装置输入的命令来执行数据条目的删除。删除或擦除数据条目可以包括从映射表中移除相应数据条目的映射数据条目。
在上述操作中,被编程到存储器装置150中的数据条目可以不被移除,但是已经编程了数据的存储器单元不再被使用(因此被编程到存储器单元中的数据不再有效)。该过程可以包括将先前有效的数据条目改变为不再有效(例如,变为无用)的数据条目。
另一方面,擦除不具有有效数据条目的存储块可以包括通过删除存储块的存储器单元中存储的所有数据来将相应的存储块改变为空闲块。因为对包括无效数据条目的存储块的擦除操作可以不影响映射信息或奇偶校验条目,所以在存储器系统110内执行的数据擦除操作和存储块擦除操作可以彼此区分。
参照图31,奇偶校验生成电路510可以基于多个数据条目生成一个奇偶校验条目,并且控制器130、400可以执行操作以擦除或删除多个数据条目之中的至少一个数据条目。如果多个数据条目之中的至少一个数据条目被删除,则先前基于多个数据条目生成的奇偶校验条目也变为不再有效。因此,当删除至少一个数据条目时,控制器130、400可以通过奇偶校验生成电路510重新计算奇偶校验条目,并将更新后的奇偶校验条目存储在存储器装置150中。
可以如下的执行存储通过由奇偶校验生成装置510执行的SOFT-XOR生成的奇偶校验的存储器系统110中的数据擦除操作。在擦除存储器装置150中的数据条目之前,控制器130、400可以读取与数据擦除操作相关的至少一个数据条目以及与该数据条目相对应的奇偶校验条目。控制器130、400可以通过对针对数据擦除操作而读取的奇偶校验条目和数据条目执行异或运算来更新奇偶校验条目。在擦除数据条目之前,应该重新生成并更新奇偶校验条目,因为先前的奇偶校验条目可能不再有效。在数据擦除操作期间执行的奇偶校验更新序列可以类似于用于恢复错误数据条目的数据恢复操作。控制器130、400可以通过跟踪操作(失败遍历)从错误数据条目所属的奇偶校验组表中找到奇偶校验组,以读取与该奇偶校验组相对应的奇偶校验条目。如果找到相应的奇偶校验条目,则控制器130、400可以执行读取操作(奇偶校验组读取、奇偶校验组的页面读取)以获得相应的奇偶校验条目。基于奇偶校验条目,奇偶校验生成电路510可以对待删除的数据条目和先前的奇偶校验条目执行异或(XOR)运算,并且异或运算的结果将是不包括待删除的数据条目的奇偶校验组的新奇偶校验条目。
参照图31,可以擦除属于特定奇偶校验组的多个数据条目。当擦除五个数据条目时,控制器130、400可以顺序地读取待擦除的五个数据条目。奇偶校验生成电路510可以对先前的奇偶校验条目和五个数据条目之中的第一数据条目执行第一异或运算,并且存储第一异或运算的结果。奇偶校验生成电路510可以对五个数据条目之中的第二数据条目与第一异或运算的结果执行第二异或运算,然后存储第二异或运算的结果。当顺序地对这五个数据条目执行异或运算时,可以为相应的奇偶校验组中排除待删除的五个数据条目之外的剩余数据条目(有效数据条目)生成新奇偶校验条目。另外,奇偶校验生成电路510可以移除奇偶校验条目中包括的五个数据条目的物理地址。通过这些操作,奇偶校验生成电路510可以在奇偶校验条目中仅保留剩余数据条目的物理地址,而不包括待删除的数据条目的物理地址。
图32示出在擦除存储器系统中的数据条目之后如何更新奇偶校验组表。
参照图30和图32,控制器130、400可以重新排列存储在存储器装置150中的奇偶校验组表信息。例如,通过数据条目中包括的奇偶校验索引(PGT-Idx),闪存转换层240可以计算或确定缓冲器地址Bin-ID0至Bin-ID2以及关于错误的数据条目或擦除的数据条目的物理地址信息的哈希值。
闪存转换层240可以重新排列存储在存储器装置150中的奇偶校验组表。如图30中所描述的,按照与奇偶校验组被添加到奇偶校验组表中的顺序相反的相反方向执行奇偶校验组表的重新排序。也就是说,奇偶校验组表可以按照从最近添加的奇偶校验组PG_Table#x到最早添加的奇偶校验组PG_Table#0的顺序重新排列。
此后,闪存转换层240可以从存储器装置150读取奇偶校验条目,该奇偶校验条目指示错误的数据条目或擦除的数据条目所属的奇偶校验组。另外,闪存转换层240可以从列表List[]中排除相应的奇偶校验条目。此处,可以用新奇偶校验条目(例如,恢复的数据条目或不包括擦除的数据条目的奇偶校验条目的物理地址)来更新指示错误的数据条目或擦除的数据条目所属的奇偶校验组的奇偶校验条目,因为先前存储的奇偶校验条目可能不再有效。
如图30和图31中所描述的,控制器130、400可以恢复错误的数据条目并将恢复的数据条目存储在新位置中,或者生成不包括被擦除的数据条目的新奇偶校验条目。与新奇偶校验条目相对应的新奇偶校验组可以被添加到存储器装置150中存储的奇偶校验组表信息中。例如,参照图32,可以在先前添加的奇偶校验组PG_Table#x之后将新奇偶校验组PG_Table#x+1添加到奇偶校验组表信息中。
图30和图32示出了奇偶校验组表按照与奇偶校验组被添加到奇偶校验组表的顺序相反的方向逻辑地排列。然而,每个奇偶校验组的奇偶校验条目存储在存储器装置150中的物理位置可以根据诸如以下的实施例而变化:当奇偶校验条目存储的位置被指定或区域仅被分配用于奇偶校验条目时的一种情况(例如,图8至图17所示的实施例),或者当奇偶校验条目可以被存储在随机位置或不同位置时的另一种情况(例如,图28所示的实施例)。
图33示出了存储器系统中执行的搜索用于数据错误恢复操作的奇偶校验条目的操作。图34示出了存储器系统中执行的搜索用于数据擦除操作的奇偶校验条目的操作。参照图33和图34,考虑到在存储器系统内执行的数据错误恢复操作和数据擦除操作期间的操作裕量,基于最坏情况作为示例来比较和说明奇偶校验条目搜索。
参照图30至图32,可以以类似的方式执行存储器系统内的数据错误恢复操作和数据擦除操作。然而,在存储器系统内执行的数据错误恢复操作和数据擦除操作所需的时间可以变化。在存储器系统110中执行的数据擦除操作不仅可以包括从奇偶校验组中排除或提取特定数据条目的操作,还可以包括以存储块为单位擦除数据以进行垃圾收集或损耗均衡的操作。
参照图33,假设从存储器装置150读取的数据条目中发生错误,则可以理解为该数据条目在4KB数据组块内的用户数据中存在错误,如图26中所描述的。为了从数据组块中的错误中恢复,可以基于数据组块中包括的奇偶校验索引(PGT-Idx)来搜索奇偶校验条目。另外,参照图28和图33,如果在存储在特定存储器平面(Plane x)中的数据条目中发生错误,则控制器130、400可以执行从相邻数据平面(Plane x+1、Plane x-1)读取数据条目的操作(第一RD)。此外,控制器130、400可以执行从存储器装置150读取奇偶校验组表的操作(第二RD)。之后,控制器130、400可以根据奇偶校验组表找到错误数据所属的奇偶校验组,并执行读取与奇偶校验组相对应的奇偶校验条目的操作(第三RD)。也就是说,如果从存储器装置150读取的数据条目中发生错误,则控制器130、400可以执行三次读取操作(第一RD、第二RD、第三RD)以获得与错误的数据条目相关联的奇偶校验条目。
参照图34,可以从存储器装置150内的特定存储块擦除数据条目。存储器系统110中存储在特定存储块中的数据条目可以由于诸如坏块管理、垃圾收集或损耗均衡等操作而被删除、移动或复制。
虽然其可以根据存储器装置150的内部配置而变化,但是存储块可以包括联接到多个字线的多个存储器单元和多个单元串。参照图28,即使存储在特定存储块中的所有数据条目都是有效的,存储器系统也可以花费最长的时间从特定存储块中擦除数据条目。此外,存储在存储块中的每个数据条目可以属于不同的奇偶校验组。在这种情况下,控制器130、400可以在存储块中搜索与作为数据擦除操作目标的数据条目的数量相等的奇偶校验组,并且读取与奇偶校验组相对应的奇偶校验条目。比较图33和图34所示的实施例,可能无法通过用于数据恢复操作的三次读取操作(第一RD、第二RD、第三RD)来获得用于数据擦除操作的所有奇偶校验条目。尽管根据存储器装置150的内部配置而存在差异,但是可以通过数十或数百次读取操作来获得用于数据擦除操作的所有奇偶校验条目。
参照图33和图34,获得至少一个奇偶校验条目所花费的时间可以基于执行数据恢复操作和数据擦除操作中的哪一个而变化。此外,生成新奇偶校验条目或将新奇偶校验条目存储在存储器装置150中所花费的时间可以基于执行数据恢复操作和数据擦除操作中的哪一个而变化。
如上所述,根据实施例,即使当存储器系统110通过执行诸如垃圾收集、读取回收和损耗均衡的操作将存储在存储器装置150中的数据条目移动或迁移到另一位置时,也可以执行数据擦除操作。通常,存储器装置150中的数据移动或迁移可以包括从原始位置读取有效数据条目的读取操作、用于将有效数据条目存储在另一位置的编程操作、以及用于擦除保留在原始位置的数据条目的擦除操作。存储器装置110中的数据条目的移动或迁移可以包括将与数据的物理位置相关联的映射信息从旧位置更新为新位置。在下文中,将描述包括数据迁移(例如,垃圾收集)的操作中的奇偶校验更新操作。
图35示出存储器系统中执行的垃圾收集。
参照图35,存储器系统中的控制器130、400可以被配置为读取进行垃圾收集的目标块Block-#Old中包括的有效数据条目和无效数据条目,然后将读取的数据条目存储到为垃圾收集而建立的缓冲器(GC Buffer)中。
在典型的存储器系统中,控制器可以将有效数据条目移动或复制到新存储块Block-#New。例如,如果32个数据条目之中存在18个有效数据条目,则控制器可以被配置为将18个有效数据条目移动或复制到新存储块Block-#New。如果18个有效数据条目不适合编程操作,则存储器系统可以将18个有效数据条目连同至少一些虚设数据条目一起编程到新存储块Block-#New中。
根据实施例,包括奇偶校验生成电路510的存储器系统110可以仅将有效数据条目移动和复制到新存储块Block-#New,而不将虚设数据条目移动和复制到新存储块Block-#New。然而,存储器系统110需要执行奇偶校验生成操作以擦除目标块Block-#Old中包括的有效数据条目和无效数据条目之间的无效数据条目。对于垃圾收集,控制器130、400可以执行三次附加操作。
首先,控制器130、400可以选择目标块Block-#Old中包括的无效数据条目(即,擦除的数据条目)并且从存储器装置150中的奇偶校验存储块Block-Parity加载相应的奇偶校验条目(①)。
控制器130、400需要通过数据擦除操作重新计算奇偶校验条目。控制器130、400可以使用奇偶校验生成电路510对缓冲器(GC Buffer)中存储的擦除数据条目(即,无效数据)与从奇偶校验存储块Block-Parity获得的相应奇偶校验条目执行异或运算,并从奇偶校验条目中移除擦除的数据条目的物理地址(PPN)(②)。
另外,控制器130、400可以更新被复制并移动到奇偶校验条目中的存储块(Block-#New)的数据条目的物理地址(PPN)(③)。
在控制器130、400计算新奇偶校验条目之后,新奇偶校验条目可以被存储在存储器装置150内的奇偶校验存储块Block-Parity中(Bin/PGTWrite)。
当确定了存储多个数据条目和奇偶校验条目的位置时,控制器130、400可以执行仅基于有效数据条目重新计算或重新生成奇偶校验条目并将重新计算的奇偶校验条目存储在存储器装置150中的操作。垃圾收集可以被理解为包括不删除奇偶校验相关的数据条目但将奇偶校验相关的数据条目的位置从第一位置改变为第二位置的操作。因此,因为多个数据条目本身没有改变,所以不必改变或更新与多个数据条目相对应的奇偶校验条目。然而,垃圾收集可以包括用于更新数据条目的位置(例如,从第一位置到第二位置的物理地址)的操作,该数据条目被存储并记录在与奇偶校验条目相对应的元数据中。
包括奇偶校验生成电路510的存储器系统110可以被配置为将多个数据条目和奇偶校验条目复制或迁移到不固定但可以调整的位置。因此,在垃圾收集期间,存储器系统110可以执行在数据擦除操作期间执行的奇偶校验跟踪操作、奇偶校验重新计算操作、以及从奇偶校验条目中移除被擦除的数据条目的物理地址的操作。此外,由于在垃圾收集期间有效数据条目被编程到新存储块中,因此将执行在奇偶校验条目中添加或插入有效数据条目的物理地址的操作。
然而,在包括奇偶校验生成电路510的存储器系统110中,由执行奇偶校验重新计算或重新生成操作的奇偶校验生成电路510使用的奇偶校验操作缓冲器514不必被配置为具有与作为垃圾收集的目标存储块中包括的数据条目的大小成比例的大小。
图36示出存储器系统中执行的合并操作。
根据实施例,奇偶校验组的最大数量可以根据存储器系统110的数据存储容量的大小来预先设置。因此,奇偶校验条目和奇偶校验组表的大小也可以根据数据存储容量的大小来设置。当数据条目在存储器系统110中被存储和删除时,奇偶校验组可以被耗尽,并且每个奇偶校验组可以包括比每个奇偶校验组第一次生成时更少的数据条目。存储器系统110可以对旧奇偶校验组执行合并操作,以减少所使用的奇偶校验组的数量并获得可以分配给新数据条目的至少一个奇偶校验组。可以如下的执行存储通过由奇偶校验生成电路510执行的SOFT-XOR生成的奇偶校验条目的存储器系统110中的合并操作。
此处,合并操作可以包括用于管理包括在奇偶校验组表中的奇偶校验条目的操作。根据实施例,还可以对存储多个奇偶校验条目的存储块执行垃圾收集,这将被描述为合并操作。在这种情况下,可以将奇偶校验条目而不是与奇偶校验条目相关联的多个数据条目移动或迁移到新存储块。在这种情况下,奇偶校验条目本身以及与奇偶校验条目相对应的多个数据条目的位置可能不会改变。
可以执行在被配置为存储奇偶校验条目的存储器系统110内执行的合并操作,该奇偶校验条目是通过由奇偶校验生成电路510执行的SOFT-XOR而生成的,如下所示。此处,合并操作用于通过从存储块(例如,存储奇偶校验条目的最旧的存储块(奇偶校验块列表List[]))擦除无效条目来获得空闲块,这可以与垃圾收集类似地执行。例如,存储器系统110可以将最旧的块中的所有有效条目移动到最后一个块(MOVE),然后擦除最旧的块(ERASE)。参照图36,对于上述合并操作,控制器130、400可以跟踪存储器装置150中的奇偶校验组表的列表PGT-Block.List={}。控制器130、400可以从列表PGT-Block.List={}中移除关于擦除的奇偶校验组的信息,并且将关于至少一个新添加的奇偶校验组PGT#x+1、PGT#x+2的信息添加到列表PGT-Block.List={}中。
合并操作期间的奇偶校验搜索和跟踪操作可以根据每个奇偶校验组被包括在奇偶校验组表中的顺序来执行。用于集成操作的合并路径可以按照从作为最旧的存储块的第一条目Entry0到第1904条目Entry1903的顺序进行。例如,最旧的存储块可以是列表PGT-Block.List={}中的第一存储块Block#0。存储在每个存储块中的条目的数量可以根据存储器装置150的内部配置而变化。控制器130、400可以沿集成操作的合并路径检查指示每个条目的有效性的有效映射或位图。
控制器130、400选择有效性已通过第一存储块Block#0的有效映射或位图确认的至少一个条目,并将所选择的条目移动到最近的存储块Last-Block。
此后,控制器130、400可以擦除作为最旧的存储块的第一存储块Block#0,并且将擦除的存储块添加到空闲块列表。
控制器130、400可以擦除列表PGT-Block.List={}中的第一存储块Block#0。同样地,控制器130、400可以从有效映射或位图中排除与最旧的第一条目Entry0至第1904条目(Entry1903)相对应的1904位。
例如,可以沿着合并路径执行合并操作中的有效奇偶校验条目搜索。通过合并路径,可以按照从最旧的块的Entry0至Entry1903的顺序检查每个条目的有效映射。在合并操作中,可以如下执行最旧的块的GC。
①FTL从列表的块#0检查有效映射(Valid-Map)。
②FTL将有效映射上ON的条目移动到最后一个块(Last-Block)的最后一个条目(Last-Entry)。
③FTL对块#0的所有有效条目重复②。
④FTL擦除块#0并将块#0添加到空闲块列表中。
⑤FTL通过将List[]中的条目向左移动来删除List[0]。
⑥FTL通过在有效映射中向左移动1904位来删除最旧的块(Oldest-Block)。
根据实施例,当被分配用于存储奇偶校验条目的存储块在频繁地生成和更新奇偶校验条目时被耗尽时,控制器130可以开始执行被分配用于存储奇偶校验条目的存储块的合并操作。例如,合并操作可以是一种在作为外部装置的主机102不参与的存储器系统110内独立执行的后台操作。
根据实施例,执行合并操作的定时可以根据存储器装置150的内部配置而变化。基于在预设时间内待编程的数据条目的量,定时可以是可预测的。例如,执行集成操作的定时可以根据多少字线联接到存储器单元或者存储器装置150中的每个存储块包括多少单元串而变化。另外,执行合并操作的定时可以根据一周、一天或一小时期间被编程到存储器装置150中的数据量而变化。存储器装置150的内部配置可以被设计或确定为减少作为后台操作的合并操作对存储器系统110的数据输入/输出性能的影响。
根据实施例,如果假设针对合并操作处理每个bin 1024个XOR,则可以使用每16MB一个条目。在每块1904个条目的配置中,平均每30GB写入可能需要空闲块。根据MobilePRD的TBW定义,假设18GB/天,1.5天就可以计算出1个空闲块。
如上所述,根据本公开的实施例的存储器系统可以减少在分配和存储大量数据条目的过程中出现的开销。
此外,根据本公开的实施例的存储器系统中的存储器控制器可以在生成与分配并存储在存储器装置中的数据条目相关联的奇偶校验条目的操作期间减少缓冲存储器的大小或高速缓存存储器的使用率。因此,可以减小包括在存储器控制器中并被分配用于生成奇偶校验条目的易失性存储器装置的大小,或者可以将易失性存储器装置中的存储空间用于除了在存储数据条目期间生成奇偶校验条目之外的各种目的,从而提高存储器系统的资源使用效率。
本文描述的方法、过程和/或操作可以通过待由计算机、处理器、控制器或其它信号处理装置运行的代码或指令来执行。计算机、处理器、控制器或其它信号处理装置可以是本文描述的那些或者本文描述的元件之外的那些。由于对形成计算机、处理器、控制器或其它信号处理装置的方法或操作的基础的算法进行了详细描述,因此用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理装置转换为专用处理器,以执行本文的方法。
另外,另一实施例可以包括用于存储上述代码或指令的计算机可读介质,例如非暂时性计算机可读介质。计算机可读介质可以是易失性或非易失性存储器或其它存储装置,其可以可拆卸地或固定地联接到计算机、处理器、控制器或其它信号处理装置,该计算机、处理器、控制器或其它信号处理装置将运行代码或指令以执行本文的方法实施例或设备实施例的操作。
本文公开的实施例的控制器、处理器、控制电路、装置、模块、单元、多路复用器、生成器、逻辑、接口、解码器、驱动器以及其它信号生成和信号处理特征可以例如以非瞬态逻辑实施,该非瞬态逻辑可以包括硬件、软件或两者。当至少部分地以硬件实施时,控制器、处理器、控制电路、装置、模块、单元、多路复用器、生成器、逻辑、接口、解码器、驱动器以及其它信号生成和信号处理特征可以是例如任何各种集成电路,包括但不限于专用集成电路、现场可编程门阵列、逻辑门的组合、片上系统、微处理器或另一类型的处理或控制电路。
当至少部分地以软件实施时,控制器、处理器、控制电路、装置、模块、单元、多路复用器、生成器、逻辑、接口、解码器、驱动器以及其它信号生成和信号处理特征可以包括例如用于存储待由例如计算机、处理器、微处理器、控制器或其它信号处理装置运行的代码或指令的存储器或其它存储装置。计算机、处理器、微处理器、控制器或其它信号处理装置可以是本文描述的那些或者本文描述的元件之外的那些。由于对形成计算机、处理器、微处理器、控制器或其它信号处理装置的方法或操作的基础的算法进行了详细描述,因此用于实施方法实施例的操作的代码或指令可以将计算机、处理器、控制器或其它信号处理装置转换为专用处理器,以执行本文描述的方法。
尽管已经针对特定实施例示出和描述了本教导,但是根据本公开,对于本领域技术人员而言显而易见的是,在不脱离如所附权利要求书所限定的本公开精神和范围的情况下,可以进行各种改变和修改。此外,可以对实施例进行组合,以形成另外的实施例。

Claims (50)

1.一种存储器控制器,所述存储器控制器经由至少一个数据路径联接到分配和存储多个数据条目的多个存储器区域,并且包括奇偶校验生成电路,所述奇偶校验生成电路:
基于所述多个数据条目被传输到所述多个存储器区域的顺序,对所述多个数据条目执行逻辑运算,以生成奇偶校验条目;并且
将存储在所述多个存储器区域中的所述多个数据条目的位置信息添加到所述奇偶校验条目中。
2.根据权利要求1所述的存储器控制器,其中,所述多个数据条目和所述奇偶校验条目构成单个奇偶校验组,并且
所述多个数据条目中的每个数据条目包括关于所述单个奇偶校验组的信息。
3.根据权利要求2所述的存储器控制器,其中,所述奇偶校验条目包括指示所述多个数据条目的数量的信息。
4.根据权利要求1所述的存储器控制器,其中,所述多个存储器区域中的每个存储器区域根据联接到包括在存储器平面中的单个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来区分。
5.根据权利要求1所述的存储器控制器,其中,所述多个存储器区域的数量对应于开放存储块的数量。
6.根据权利要求1所述的存储器控制器,其中,所述多个存储器区域包括奇偶校验存储块,所述奇偶校验存储块存储所述奇偶校验条目,而不存储所述多个数据条目。
7.根据权利要求1所述的存储器控制器,其中,所述逻辑运算是异或运算,即XOR运算。
8.根据权利要求1所述的存储器控制器,其中,所述奇偶校验生成电路包括:
计算电路,执行所述逻辑运算;以及
缓冲器,联接到所述计算电路,并且提供所述逻辑运算的先前结果并存储所述逻辑运算的当前结果。
9.根据权利要求8所述的存储器控制器,其中,所述缓冲器存储大小与跨时编程在所述多个存储器区域中的数据相对应的数据。
10.根据权利要求8所述的存储器控制器,其中,所述缓冲器的大小等于或小于包括在所述多个存储器区域中或联接到所述多个存储器区域的页面缓冲器的大小。
11.根据权利要求1所述的存储器控制器,其中,当所述存储器控制器擦除所述多个数据条目之中的至少一个数据条目时,所述奇偶校验生成电路:
对所述至少一个数据条目与所述奇偶校验条目执行所述逻辑运算;
从所述奇偶校验条目中移除关于所述至少一个数据条目的位置信息;并且
输出更新后的奇偶校验条目以存储在所述多个存储器区域中。
12.根据权利要求1所述的存储器控制器,其中,所述存储器控制器对所述多个存储器区域中的至少一些存储器区域执行垃圾收集或损耗均衡。
13.根据权利要求12所述的存储器控制器,其中,所述垃圾收集包括:
对存储在所述至少一些存储器区域中并且无效的第一数据条目和与所述第一数据条目相关联的第一奇偶校验条目执行的至少一次逻辑运算;
擦除所述第一奇偶校验条目中所述第一数据条目的第一物理地址的操作;以及
在所述第一奇偶校验条目中添加第二物理地址的操作,所述第二物理地址指示存储在所述至少一些存储器区域中并且有效的第二数据条目被迁移的位置。
14.根据权利要求1所述的存储器控制器,进一步包括闪存转换层,所述闪存转换层:
建立包括所述多个数据条目和所述奇偶校验条目的奇偶校验组;
确定所述多个数据条目和所述奇偶校验条目被存储的位置;并且
将所述奇偶校验组和所述位置传送到所述奇偶校验生成电路。
15.根据权利要求14所述的存储器控制器,其中,所述闪存转换层进一步基于待存储在所述多个存储器区域中的数据的量来改变包括在所述奇偶校验组中的数据条目的数量。
16.根据权利要求14所述的存储器控制器,其中,在识别出所述多个数据条目中的至少一个中的错误之后,所述闪存转换层搜索与所述多个数据条目相关联的奇偶校验条目,基于包括在所述奇偶校验条目中所述多个数据条目的位置信息顺序地读取所述多个数据条目,并且
所述奇偶校验生成电路对所述奇偶校验条目和读取的多个数据条目执行所述逻辑运算。
17.一种存储器系统,包括:
多个存储器区域,包括分配并存储多个数据条目以解决不可校正的错误校正码即UECC的多个存储器管芯、多个存储器平面或多个存储块;以及
存储器控制器,包括奇偶校验生成电路,所述奇偶校验生成电路基于所述多个数据条目被传输到所述多个存储器区域的顺序对所述多个数据条目执行逻辑运算,以生成奇偶校验条目,所述存储器控制器改变所述逻辑运算涉及的所述多个数据条目的数量。
18.根据权利要求17所述的存储器系统,其中,所述多个存储器区域经由多个通道联接到所述存储器控制器。
19.根据权利要求17所述的存储器系统,其中,所述数据条目包括元数据、奇偶校验组信息、用户数据和奇偶校验数据,
所述奇偶校验组信息指示所述数据条目属于哪个奇偶校验组,并且
所述奇偶校验数据是基于ECC模块使用的错误校正码而生成的。
20.根据权利要求17所述的存储器系统,其中,所述奇偶校验条目包括:
所述逻辑运算的结果;以及
指示所述多个数据条目在所述多个存储器区域中存储的位置的物理地址。
21.根据权利要求17所述的存储器系统,其中,所述奇偶校验条目包括关于所述多个数据条目的数量的信息。
22.根据权利要求17所述的存储器系统,其中,所述多个存储器区域中的每个存储器区域基于联接到所述存储器平面中的单个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来相互区分。
23.根据权利要求17所述的存储器系统,其中,所述多个存储器区域的数量对应于开放存储块的数量。
24.根据权利要求17所述的存储器系统,其中,所述多个存储器区域包括奇偶校验存储块,所述奇偶校验存储块存储所述奇偶校验条目,而不存储所述多个数据条目。
25.根据权利要求17所述的存储器系统,其中,所述逻辑运算是异或运算,即XOR运算。
26.根据权利要求17所述的存储器系统,其中,所述奇偶校验生成电路包括:
计算电路,执行所述逻辑运算;以及
缓冲器,联接到所述计算电路,并且提供所述逻辑运算的先前结果并存储所述逻辑运算的当前结果。
27.根据权利要求26所述的存储器系统,其中,所述缓冲器存储大小与跨时编程在所述多个存储器区域中的数据相对应的数据。
28.根据权利要求26所述的存储器系统,其中,所述缓冲器的大小等于或小于包括在所述多个存储器区域中或联接到所述多个存储器区域的页面缓冲器的大小。
29.根据权利要求17所述的存储器系统,其中,当所述存储器控制器擦除所述多个数据条目之中的至少一个数据条目时,所述奇偶校验生成电路:
对所述至少一个数据条目与所述奇偶校验条目执行所述逻辑运算;
从所述奇偶校验条目中移除关于所述至少一个数据条目的位置信息;并且
输出更新后的奇偶校验条目以存储在所述多个存储器区域中。
30.根据权利要求17所述的存储器系统,其中,所述存储器控制器对所述多个存储器区域中的至少一些存储器区域执行垃圾收集或损耗均衡。
31.根据权利要求30所述的存储器系统,其中,所述垃圾收集包括:
对存储在所述至少一些存储器区域中并且无效的第一数据条目和与所述第一数据条目相关联的第一奇偶校验条目执行的至少一次逻辑运算;
擦除所述第一奇偶校验条目中所述第一数据条目的第一物理地址的操作;以及
在所述第一奇偶校验条目中添加第二物理地址的操作,所述第二物理地址指示存储在所述至少一些存储器区域中并且有效的第二数据条目被迁移的位置。
32.根据权利要求17所述的存储器系统,其中,所述存储器控制器包括闪存转换层,所述闪存转换层:
建立包括所述多个数据条目和所述奇偶校验条目的奇偶校验组;
确定所述多个数据条目和所述奇偶校验条目被存储的位置;并且
将所述奇偶校验组和所述位置传送到所述奇偶校验生成电路。
33.根据权利要求32所述的存储器系统,其中,在识别出所述多个数据条目中的至少一个中的错误之后,所述闪存转换层搜索与所述多个数据条目相关联的奇偶校验条目,基于包括在所述奇偶校验条目中所述多个数据条目的位置信息顺序地读取所述多个数据条目,并且
所述奇偶校验生成电路对所述奇偶校验条目和读取的多个数据条目执行所述逻辑运算。
34.根据权利要求32所述的存储器系统,其中,与所述多个存储器区域中的至少一个中包括的单个字线联接的两个单元串中存储的两个数据条目属于不同的奇偶校验组。
35.一种存储器装置,所述存储器装置包括多个存储器管芯,所述存储器管芯分配并存储属于单个奇偶校验组的多个数据条目和至少一个奇偶校验条目,
其中,存储在所述多个存储器管芯的相同位置处的数据条目属于不同的奇偶校验组。
36.根据权利要求35所述的存储器装置,其中,所述相同位置由相同存储器平面地址、相同字线地址和相同单元串地址确定。
37.根据权利要求35所述的存储器装置,其中,所述多个数据条目中的每个数据条目包括关于所述单个奇偶校验组的信息。
38.根据权利要求35所述的存储器装置,其中,所述至少一个奇偶校验条目包括关于所述多个数据条目被存储的位置的信息。
39.根据权利要求38所述的存储器装置,其中,所述至少一个奇偶校验条目包括关于所述多个数据条目的数量的信息。
40.根据权利要求35所述的存储器装置,其中,所述多个存储器管芯之中的至少一个存储器管芯仅存储所述奇偶校验条目。
41.根据权利要求35所述的存储器装置,其中,所述多个存储器管芯中包括的每个存储器单元存储多位数据,并且
所述相同位置由所述多位数据的相同位位置确定。
42.根据权利要求35所述的存储器装置,其中,与所述多个存储器管芯中的至少一个中包括的单个字线联接的两个单元串中存储的两个数据条目属于不同的奇偶校验组。
43.一种奇偶校验生成器,包括:
计算电路,对待经由至少一个数据路径传送到多个存储器区域以进行单触发编程操作的多个数据条目顺序地执行逻辑运算;以及
缓冲器,联接到所述计算电路,并且提供所述逻辑运算的先前结果并存储所述逻辑运算的当前结果。
44.根据权利要求43所述的奇偶校验生成器,其中,所述计算电路进一步存储所述多个数据条目在所述缓冲器中存储的位置的信息。
45.根据权利要求44所述的奇偶校验生成器,其中,所述奇偶校验生成器生成奇偶校验条目,所述奇偶校验条目包括存储在所述缓冲器中的当前结果和位置的信息。
46.根据权利要求43所述的奇偶校验生成器,其中,所述多个存储器区域中的每个存储器区域根据联接到包括在存储器平面中的单个字线的单元串的数量以及存储在每个存储器单元中的多位数据的位数来区分。
47.根据权利要求43所述的奇偶校验生成器,其中,所述多个存储器区域的数量对应于开放存储块的数量。
48.根据权利要求43所述的奇偶校验生成器,其中,所述逻辑运算是异或运算,即XOR运算。
49.根据权利要求43所述的奇偶校验生成器,其中,所述缓冲器存储大小与跨时编程在所述多个存储器区域中的数据相对应的数据。
50.根据权利要求43所述的奇偶校验生成器,其中,所述缓冲器的大小等于或小于包括在所述多个存储器区域中或联接到所述多个存储器区域的页面缓冲器的大小。
CN202311375753.6A 2022-10-24 2023-10-23 在多个存储器区域中分配和存储写入数据的设备和方法 Pending CN117931055A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202263418844P 2022-10-24 2022-10-24
US63/418,844 2022-10-24
KR10-2023-0132292 2023-10-04

Publications (1)

Publication Number Publication Date
CN117931055A true CN117931055A (zh) 2024-04-26

Family

ID=90752420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311375753.6A Pending CN117931055A (zh) 2022-10-24 2023-10-23 在多个存储器区域中分配和存储写入数据的设备和方法

Country Status (2)

Country Link
KR (1) KR20240057337A (zh)
CN (1) CN117931055A (zh)

Also Published As

Publication number Publication date
US20240134747A1 (en) 2024-04-25
KR20240057337A (ko) 2024-05-02

Similar Documents

Publication Publication Date Title
US11507500B2 (en) Storage system having a host directly manage physical data locations of storage device
US20180341606A1 (en) Offloaded Disaggregated Storage Architecture
CN110928807B (zh) 用于检查存储器系统中的有效数据的设备和方法
KR102564774B1 (ko) 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
CN110825659B (zh) 用于检查存储器系统中的块中的有效数据的设备和方法
US11676679B2 (en) Two-layer code with low parity cost for memory sub-systems
CN110781023A (zh) 用于在存储器系统中处理数据的设备和方法
US10642525B2 (en) Multiple-stage data lifetime management for storage devices
CN110888825B (zh) 在存储器系统中处理数据的设备和方法
CN112835811A (zh) 存储器系统及其操作方法
CN114764395A (zh) 处置存储器系统中存储的数据的设备和方法
CN113553631A (zh) 用于在存储器系统中保护数据的设备和方法
CN114579040A (zh) 用于保持在存储器系统中存储的数据的设备和方法
US20230376212A1 (en) Apparatus and method for recovering data in a memory system
TW202318211A (zh) 用於編程資料的記憶體裝置和記憶體系統
CN116069547A (zh) 恢复存储器系统中的数据的设备和方法
CN116136739A (zh) 用于改善存储装置的数据输入/输出性能的设备和方法
US20240232015A9 (en) Apparatus and method for distributing and storing write data in plural memory regions
US20240134747A1 (en) Apparatus and method for distributing and storing write data in plural memory regions
CN114360620A (zh) 检查非易失性存储器装置的错误的设备和方法
CN113687769A (zh) 用于提高数据处理系统中的操作效率的设备和方法
TW202418087A (zh) 在多個記憶體區域中分配和儲存寫入資料的裝置和方法
CN112131143A (zh) 存储器系统、存储器控制器及元信息存储装置
US11966638B2 (en) Dynamic rain for zoned storage systems
US20240231708A1 (en) Dynamic rain for zoned storage systems

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