CN108399110B - 高容量固态驱动器中的软信息管理 - Google Patents

高容量固态驱动器中的软信息管理 Download PDF

Info

Publication number
CN108399110B
CN108399110B CN201810112293.0A CN201810112293A CN108399110B CN 108399110 B CN108399110 B CN 108399110B CN 201810112293 A CN201810112293 A CN 201810112293A CN 108399110 B CN108399110 B CN 108399110B
Authority
CN
China
Prior art keywords
soft information
soft
ssd
information tables
decoding
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.)
Active
Application number
CN201810112293.0A
Other languages
English (en)
Other versions
CN108399110A (zh
Inventor
李舒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN108399110A publication Critical patent/CN108399110A/zh
Application granted granted Critical
Publication of CN108399110B publication Critical patent/CN108399110B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/1008Adding 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1008Adding 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/1068Adding 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Abstract

管理软信息包括:使用多个软信息表中的至少一些对从固态驱动器(SSD)读取的数据执行软解码;监视与所述多个软信息表相关联的一个或多个软信息属性的集合;至少部分地基于一个或多个软信息属性的集合来调整多个软信息表中的至少一些软信息表;并提供经调整的软信息表,以执行软解码。

Description

高容量固态驱动器中的软信息管理
本申请要求2017年02月07日提交美国专利商标局、申请号为15/426725、发明名称为“MANAGING SOFT INFORMATION IN HIGH-CAPACITY SOLID STATE DRIVE”的美国发明专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
背景技术
固态驱动器(SSD,Solid State Drives)通常使用NAND闪存存储来实现。高密度NAND闪存元件,如三维(3D)三级单元(TLC)闪存或3D四级单元(QLC)闪存常用于大容量和低成本的SSD产品。高密度闪存元件通常具有较高的原始错误率,因此通常需要低密度奇偶校验(LDPC,low-density parity-check)码来进行纠错。现有的LDPC解码器通常存储一组固定软信息表以促进加快解码操作。由于不同闪存元件的单元中的物理特性存在区别,以及相同单元具有不同的单元寿命,因此,使用固定软信息表进行软解码不会产生精确的结果。
发明内容
附图说明
在以下详细描述和附图中公开了本发明的各种实施例。
图1是示出存储系统的实施例的框图。
图2是示出存储系统的另一个实施例的框图。
图3A和3B是示出对应于不同的编程逻辑值的阈值电压的分布的图。
图4是示出与软感测示例并置的硬感测示例的图。
图5是示出使用软信息表的处理的图。
图6是示出被配置为存储软信息的分层存储的实施例的框图。
图7(包含图7.1和图7.2)示出在电力循环期间管理软信息表的处理的实施例的流程图。
图8(包含图8.1和图8.2)示出用于从包括高密度NAND闪存的SSD读取数据的处理的实施例的流程图。
具体实施方式
本发明可以以多种方式实施,包括:处理;装置;系统;物质的集合;包含在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置成执行在联接到处理器的存储器上所存储和/或提供的指令的处理器。在本说明书中,这些实现方案,或者本发明可以采取的任何其他形式可以被称为技术。通常,所公开的方法的步骤的顺序可以在本发明的范围内改变。除非另有说明,否则被描述为被配置为执行任务的集合件(诸如处理器或存储器)可以被实现为临时配置为在给定时间执行任务的通用组件或被制造为执行该任务的专用组件。如本文所使用的,术语“处理器”是指被配置为处理诸如计算机程序指令之类的数据的一个或多个设备、电路和/或处理核心。
以下提供本发明的一个或多个实施例的详细描述以及说明本发明原理的附图。结合这些实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,并且本发明包含许多替代、修改和等同方案。在以下描述中阐述了许多具体细节以便提供对本发明的透彻理解。提供这些细节是为了举例的目的,并且可以根据权利要求来实施本发明,而无需这些具体细节中的一些或全部。为了清楚起见,在与本发明相关的技术领域中已知的技术材料没有被详细描述,以使本发明不被不必要地模糊。
图1是示出存储系统的实施例的框图。系统100包括主机部分,主机部分包括一个或多个处理器102以及被配置为向处理器提供指令的一个或多个系统存储器(也称为主机存储器)104。主机部分使用例如外围组件互连高速(PCIe)通道这样的适当的互连联接到固态驱动器部分。尽管为了说明的目的示出了单个SSD 106,但是在各种实施例中可以包括多个SSD(包括单个或多个类型的SSD)。例如,SSD部分中可以包括一个或多个PCIe SSD和/或一个或多个串行连接的SCSI/串行AT附件(SAS/SATA)SSD。诸如输入/输出组件、网络组件等这样的许多其他组件可以被包括在系统100中,但是在图中被省略。
图2是示出存储系统的另一个实施例的框图。在系统200中,显示了SSD 202的细节。SSD控制器204联接到控制器存储器206以及高密度NAND闪存元件208。SSD控制器204可以使用一个或多个微处理器、标准处理器等来实现,以执行对高密度NAND闪存元件的操作进行监视和控制的代码。高密度NAND闪存元件采用三维堆叠设计,如3D三级单元(TLC)闪存、3D四级单元(QLC)闪存等。
在上面的例子中,SSD是使用NAND闪存实现的。NAND闪存单元具有浮栅。在浮栅中捕获的电子的量可以改变单元的阈值电压(Vth)。在存储单个比特的NAND快闪存储器单元中,当浮栅被充电时(换句话说,当在浮栅中俘获电子时),单元具有较高的阈值电压并被视为对应于编程的逻辑值“0”。当浮栅放电时,单元具有较低的阈值电压,并被视为对应于编程的逻辑值“1”。为了从存储单元读取值,将中间电压(也称为感测电压或施加的电压)施加到单元的控制栅极。如果单元的沟道在该中间电压下导通,则认为单元的阈值电压低于中间电压,并且浮栅被认为是不带电的。因此该单元被认为存储“1”的逻辑值。如果该单元的沟道在该中间电压下不导通,则该单元的阈值被认为高于中间电压,并且浮栅被认为是带电。因此该单元被认为存储“0”的逻辑值。
在高密度NAND闪存单元中,浮栅存储不同电平的电荷以表示不同的编程值,因此产生不同的阈值电压。图3A和图3B是示出对应于不同的编程逻辑值的阈值电压的分布的图。在图3A中示出了每单元存储三比特的TLC闪存的阈值电压的分布。在图3B中示出了每单元存储四比特的QLC闪存的阈值电压的分布。在所示的例子中,所存储的逻辑值使用格雷码进行编码以确保相邻阈值范围之间的单个比特转换。两个相邻分布的中心之间的距离被称为范围。在图3B中,示出了十五个范围。
高密度NAND闪存使用低密度奇偶校验(LDPC)码进行纠错。LDPC解码采用软信息来提高纠错性能。这里所使用的软信息是指与从闪存读取的逻辑值相关联的概率信息。具体而言,对于给定的读取(例如,感测)电压,软信息指示感测电压对应于特定值的可能性。在一些实施例中,使用对数似然比(LLR)来表示软信息。如百分比这样的其他表示方式也可以使用。
为了说明这些感测技术的原理,描述硬感测和软感测的例子。图4是示出与软感测示例并置的硬感测示例的图。在这个示例中,两个交叠的分布曲线402和404分别对应于两个相邻的逻辑值L1和L2。L1和L2可以是图3B所示的诸如“f”和“b”,“b”和“3”等的逻辑值对。感测电压A将电压范围分成对应于两个相邻逻辑值L1和L2的两个范围。在读操作期间,电压A被施加到单元的控制栅极,单元将导通(表示单元的阈值电压低于施加的电压,并且编程的逻辑值对应于L1),或者不导通(表示单元的阈值电压高于所施加的值,并且编程的逻辑值对应于L2)。如图所示,存储的数据X和数据Y具有对应的阈值电压Vx和Vy。由于在硬感测中执行单次读取,因为两个阈值电压都低于所施加的电压,所以单元将导通。硬感测结果是两种情况下存储的逻辑值对应于逻辑值L1。
从图中可以看出,如图4所示,Y实际上很可能归为对应于分布曲线404(逻辑值L2)的阈值电压。软感测用于更精确地确定某个感测值实际上对应于特定逻辑值的可能性。相比之下,软感测使用七个感测电压电平,将阈值电压(R)的范围分成八个区域。可能需要多次读取来找到特定存储数据的阈值电压所处于的阈值电压区域。如图所示,数据X在区域1中,其指示X对应于所存储的逻辑值L1的高似然性(例如,a的LLR),并且数据Y在区域4中,其指示Y对应于L1的较低似然性(例如,b的LLR,其中b>a)以及Y对应于L2的类似似然性。
软信息用于LDPC解码以提高准确性。可以使用用于在LDPC解码算法中应用软信息的任何适当技术。为了获得与软感测结果相关联的软信息,可以使用一个或多个软信息表来确定与特定感测值相关联的软信息。表1说明了一个软信息表的例子。如图所示,该表格包括十五行(对应于相邻分布曲线之间的十五个范围)和八列(对应于每个范围内的八个区域),并且每个条目是对应软信息的LLR。输入值仅用于示例的目的,并且可以在其他表中使用不同的值。为了根据检测到的电压确定软信息,将与感测到的电压对应的范围和区域用作表中的索引以查找特定条目的软信息。尽管为了示例的目的使用了八个区域,但是在其他实施例中可以使用不同数量的区域,这将导致不同大小的表格。此外,尽管为了说明的目的而使用表格数据结构,但是也可以使用其它适当的数据结构和/或格式,例如清单、树等。
Figure BDA0001569572980000051
表1
此外,软信息表可以改变给定的不同的操作数据。例如,测量和测试示出了可以影响感测电压的LLR的操作条件和/或参数,例如单元位置的变化、从单元被编程以来已经过去的时间量、所经历的单元的编程/擦除(P/E)循环的次数(例如,由于读取相邻单元而导致的单元的不希望的改变的量)、写入干扰(例如,由于相邻单元的写入而导致的单元的不希望的改变的量),数据保持率(例如,在将数据保留一段时间之后的错误率),校准(例如,配置和调整设备)等。其他运营数据可以被测量和考虑。因此,SSD制造商通常执行表征处理,其测试操作数据的不同组合,并生成对应于这些操作数据的集合的多个软信息表。表2示出了将操作数据存储到软信息表的对应标识符的映射表的示例。可以建立这样的映射表或任何其他适当的数据库,并且提供API以在给定操作数据的集合的情况下查找相应的软信息表标识符。在一些实施例中,如果在映射表中没有找到相应的软信息表标识符,则返回映射到最接近的操作数据的软信息表标识符。
Figure BDA0001569572980000061
表2
在一些实施例中,SSD制造商提供功能调用,当给定操作数据的集合作为功能调用的输入时,该功能调用将产生适当的软信息表。在一些实施例中,操作数据和表格被存储为键值对,使得可以使用操作数据的集合作为键来定位特定的表格。在一些实施例中,表格被存储在分层存储装置中,并且根据其中内容对应于操作数据的内容可寻址存储器(CAM)方案来访问表格,并且存储器地址对应于对应的软信息表的位置。结合图6更详细地讨论基于CAM的存储器。
可以针对不同的操作数据生成多个软信息表(例如,基于在不同的操作条件下的测试以及给出这些操作条件的记录观察)。可以在解码处理中存储和使用软信息表。图5是例示了用于使用软信息表的处理的图。处理500可以由诸如图2的204的控制器来执行。
在502处,执行存储在固态驱动器(SSD)中的数据的软解码。在软解码期间使用多个软信息表中的至少一些。软信息表可以是从SSD存储器读取的默认表或以前保存的表,以及在存储器中缓存的表。502可以响应于SSD的读取操作而被执行。具体而言,通过感测闪存元件的单元的阈值电压从SSD读取数据。当前的操作数据也通过监视操作条件、查询统计跟踪器和/或计数器等来获得。使用由SSD制造商等提供的适当的API调用来确定诸如P/E循环、读取干扰、写入干扰、数据保留、校准等的操作数据。在一些实施例中,给定与所感测的电压相关联的感测的电压和电流操作数据,相应的软信息表位于分级存储器(例如,存储缓冲器的分级组织)中。下面结合图6更详细地讨论分级存储的实现以及如何存储软信息表。
在504处,监视与多个软信息表相关联的一个或多个软信息属性的集合。504可以在502之后或与502同时执行。可以使用单独的线程或进程来执行502和504。在这个示例中,软信息属性包括访问频率,测量软信息表被访问的频率。例如,控制器可以为每个软信息表维护诸如计数器的元数据,并且每次访问软信息表时递增对应的计数器。软信息特性还可以包括上述的操作数据,其可以例如使用由SSD制造商提供的API等来确定。
在506,至少部分地基于所监视的软信息属性,调整软信息表中的至少一些。
在这个示例中,软信息属性包括软信息表的访问频率,并且软信息表的调整包括将至少一些软信息表的位置移动到分层存储装置中。具体而言,软信息表根据其各自的访问频率(例如,计数器值)进行排序,并根据排序进行排列。可以将更频繁访问的软信息表提升到分层存储装置中具有更快的访问时间/更低的延迟的位置,并且可以将访问频率更低的软信息表降级到分层存储中具有更慢的访问时间/更高的延迟的位置。软信息表检索的性能因此得到改善。分层存储的详细示例将结合图6讨论。
在这个示例中,软信息属性还包括操作数据。基于来自502的软解码结果,可以修改现有的软信息表,并且可以添加新的软信息表。例如,基于当前的操作数据,定位相应的软信息表(例如,在诸如表2的映射表中查找)。基于测量数据的范围和区域,相应的LLR位于软信息表中(例如,在诸如表1的软信息表中查找)。当LLR被应用于解码器(例如,传统的LDPC解码器)时,软解码操作将返回失败或成功的指示。如果软解码操作失败,则LLR值不适合于给定的操作条件并且需要被调整。对LLR进行调整(例如,增加或减少预设量)并重新应用于解码器。如果解码结果指示成功,则将软信息表中的LLR条目改变为导致成功的经调整的LLR。如果解码结果仍然表示失败,则再次调整LLR并重新应用于解码器。重复LLR调整和解码处理直到解码完成。如果在几轮解码重试之后进程失败,并且/或者如果解码时间用完,则将解码失败报告给主机,并且主机可以使用其他方法来恢复数据,例如从备份复制数据。
将更新后的软信息表提供给软解码器用于软解码,处理500可以以预先指定的时间间隔重复进行,以连续调整软信息表,提供更准确的软信息,提高解码质量。
在一些实施例中,由制造商生成的软信息表优选地存储在诸如SSD的非易失性存储器中,使得即使在电力循环之后它们也被保持。然而,根据需要从SSD中检索软信息表涉及高延迟,并且当需要大量的软信息表以在多种条件下执行软解码时可能是不切实际的。在一些实施例中,分层存储装置被配置为将某些软信息表缓冲在存储器中。如以下图6所示,在SSD中存储大量软信息表以实现更好的解码精度,并且将少量软信息表存储在控制器的RAM或高速缓冲存储器中,以实现更低的延迟。
图6是例示了被配置为存储软信息的分层存储装置的实施例的框图。分层存储600示出了所使用的存储元件的逻辑层次结构。从最高级别(其具有最小延迟以及最小容量)到最低级别(其具有最高延迟以及容量),分级存储器包括缓冲器部分和永久存储器部分。缓冲器部分包括控制器的片上触发器(602)、控制器的片上SRAM(604)、控制器存储器(606)以及主机存储器(608)。持久性存储部分包括NAND装置的单级单元(SLC)区域(610)和NAND装置的TLC/QLC区域(612)。
在缓冲器部分中,第一层包括控制器的片上触发器602的一部分。第一层位于最靠近软信息生成器(例如,控制器的微处理器)的位置,并且具有最低延迟(例如,1个时钟周期的响应时间);然而,第一层也有非常有限的容量。第二层包括控制器的片上SRAM604的一部分。第二层具有比第一层稍微更高的延迟(例如,纳秒级的响应时间)和更大的容量(例如,几千字节(KB))。第三层包括控制器存储器的一部分(例如,板上DRAM)。第三层比第二层具有更高的延迟(例如,几十纳秒量级的响应时间)和更大的容量(例如,几兆字节(MB))。第四层包括主机存储器的一部分,并具有大量的容量(例如,千兆字节(GB))。
永久性存储部分包括SLC区域和TLC/QLC区域。由于访问闪存区域的高延迟,永久性存储部分用于在电源周期之间持续(存储)软信息表。
如以上结合图5所讨论的,软信息属性包括软信息表的访问频率。表的访问频率被周期性地或以指定的间隔评估(例如,排列)。根据其访问频率排列将这些表放置到存储分层结构中,使得更频繁访问的表存储在具有较低访问延迟的存储位置(例如602)中,并且将较少访问的表存储在具有较高的访问延迟(例如,612)的存储位置。接着,计数器被重置。当重新评估访问频率时,访问频率更高的表可以提升为更低延迟的存储,而访问频率更低的表可以降级到更高延迟的存储中。
在一些实施例中,使用索引来表示分层存储装置中的表的地址。在一个示例中,索引包括两个值,一个指示存储的分层级别,一个指示分级结构内的表格的位置。如图6中的例子所示,假设片上触发器602具有足够的空间来存储10个表格,则存储在片上触发器内的表格的索引被表示为(1,1),(1,2),(1,3),...和(1,10);假设片上SRAM 604具有足够的空间来存储100个表,则存储在片上SRAM中的表的索引被表示为(2,1),(2,2),(2,3),...,(2,100);等。
因此,可以使用内容可寻址存储器方案来存储软信息表,其中软信息表的位置可以使用操作数据来寻址。每个表都有一个索引,指示存储层次结构中相应表的位置。操作数据形成指向索引的内容。该索引是CAM的条目。表3是实现这种CAM的示例性表格。为了查找对应于操作数据的集合的软信息表(例如,P/E=150,读取干扰=10,写入干扰=10,数据保留率=50,校准=50),使用操作数据来查询CAM,并且返回表示存储层次中的表的位置的索引。在这个示例中,索引是(3,629),指示对应的软信息表被存储在层级(控制器存储器606)的第三级中,在第629个表位置处。
Figure BDA0001569572980000101
表3
图7是示出在电力循环期间管理软信息表的处理的实施例的流程图。处理700可以由诸如200的系统执行。
假设先前保存了一定数量的软信息表,则保存的软信息表可以是默认表(例如,由制造商提供的那些表)或在先前的电力循环期间修改/生成的软信息表。
在系统再次开机时启动处理700。在702处,进行初始化,其中,将所存储的软信息表从NAND存储装置加载到分级存储装置(例如,控制器的触发器、SRAM、RAM等)。
在703处,评估精度粒度(如果704在初始化时发生,那么可以根据之前保存的表的数量来测量精度粒度,或者如果在SSD的正常操作期间发生704,则使用当前正在使用的表的数量)。在704处,使用精度粒度来确定是否有足够数量的缓冲存储器来容纳这些软信息表。如果有足够的存储器,则在718将软信息表加载到缓冲存储器中,并在720处在进行软解码期间被使用。
但是,如果没有足够的控制器存储器来保存软信息表,则在706处从主存储器分配更多的存储器以满足软信息表的存储器要求。在一些实施例中,软信息表先前根据其访问频率被分类和/或排序,并且分类和/或排续数据被存储为元数据并且在初始化处理期间被加载。在708处,根据分类和/或排序信息将软信息表放置在分层存储装置中的适当位置中。具体来说,更频繁访问的软信息表被存储在更低延迟的存储器中,并且更低频率访问的软信息表被存储在更高延迟的存储器中。
在710处,在SSD的操作过程期间监视与多个软信息表中的至少一些相关联的软信息属性。例如,观察软信息表的访问频率和诸如P/E周期、数据保持、读取干扰、写入干扰、校准和/或任何其他适当的参数这样的操作数据,并且它们的值在SSD使用软信息表来执行软解码时被记录。
在712处,基于软解码结果确定是否需要更新任何软信息表。以上结合图5的506解释了确定和更新。如果否,则处理在714处继续,其中根据访问频率来调整至少一些软信息表的位置。例如,根据访问频率对软信息表进行排序,将更频繁访问的软信息表提升至更低延迟的存储器,同时将不太频繁访问的软信息表降级为更高延时的存储器。
在716处,确定是否存在由于访问频率的改变而导致的表格移动。如果是,则处理返回到703,其中评估精度粒度以确定是否有足够数量的控制器存储器来容纳表格。如果没有表格移动,则处理进行到720,并且软信息表通常用于软解码。
在722处,接收到关机请求。在724处,确定关机请求是否是SSD经历有序关闭的正常关机请求。如果关机请求正常且SSD将经历有序关闭,则将数据(例如,用户数据)和当前软信息表(例如,存储在分层存储装置的缓冲区部分中的那些软信息表)写入NAND闪存,在726被保持。这样,当前软信息表可以被保存,并且在SSD下次开启时被重新使用。然而,如果关机请求不正常,则在728,SSD将具有有限的充电并且仅将数据写入到NAND闪存,软信息表则不被写入。下一次SSD通电时,默认软信息表被加载和使用。
图8是示出用于从包括高密度NAND闪存的SSD读取数据的处理的实施例的流程图。处理800可以由诸如200的系统执行。
在802,从高密度NAND闪存读取页面。在这个示例中,感测电压被施加到单元的栅极以确定页面中的单元的阈值电压(和存储的数据)。
在804处,对读取数据应用硬解码以纠正错误。例如泛洪解码或层解码这样的任何传统的硬解码技术都可以用来确定单元中可能存储的电压并执行纠错。
在806,确定硬解码是否成功。在这个示例中,硬解码功能输出硬解码是否被认为成功的指示。如果硬解码成功,则在820,所请求的数据被发送到请求者(例如,主机应用)。如果硬解码不成功,则在808,以更多的级别重新读取页面,以定位在这个页面中的单元的更精确的阈值电压。例如,当使用3个感测电平而不是1个硬感测电平时,将阈值电压范围划分为4个更精细粒度的子区域。
在810处,从在控制器存储器中加载的软信息表中检索软信息表。在该示例中,操作数据与类似于表3的CAM结合使用,以使用上述技术来访问在存储有软信息表的分层存储中的位置。
在812处,使用所检索的软信息表对该页面执行软解码。可以应用诸如LDPC软解码这样的软解码技术。
在814,确定软解码处理是否成功。在这个示例中,软解码功能输出软解码是否成功的指示。如果是,则处理进行到820以将请求的数据输出到请求者。如果软解码不成功,则在816处确定解码时间是否超过预先配置的延迟阈值,该预先配置的延迟阈值确保与主机的服务等级协议。如果没有超过延迟阈值,则处理在808继续,其中,以更多等级重新读取页面,以定位此页面中的单元的更精确的阈值电压。例如,如果页面先前是以四个级别读取的,则此时可以用八个级别重新读取该页面,810至816也重复进行。然而,如果超过了延迟阈值,则在818处,使用替代技术(例如从独立磁盘冗余阵列(RAID)拷贝或复制,或基于擦除码(EC)的复制)来恢复该页面上的数据。
在820,所请求的数据被发送给请求者。
在822处,确定扇区是否是最后一个要读取的扇区。如果是的话,这个处理就完成了。否则,处理返回到802,从高密度NAND闪存读取下一页。
已经公开了高容量SSD中的软信息管理。通过监测软信息参数和动态更新软信息表,可以为软解码器提供更准确的软信息,实现更高的解码精度。
尽管为了清楚理解的目的已经较为详细地描述了前述实施例,但是本发明不限于所提供的细节。有许多实施本发明的替代方法。所公开的实施例是说明性的而不是限制性的。

Claims (26)

1.一种软信息表处理方法,该方法包括:
使用多个软信息表中的至少一些软信息表来执行从固态驱动器SSD读取的数据的软解码;
监视与所述多个软信息表相关联的一个或多个软信息属性的集合;以及
至少部分地基于所述一个或多个软信息属性的集合来调整所述多个软信息表中的至少一些软信息表。
2.如权利要求1所述的方法,该方法还包括提供经调整的软信息表以执行软解码。
3.如权利要求1所述的方法,其中,所述一个或多个软信息属性的集合包括与所述多个软信息表中的至少一些软信息表相对应的一个或多个访问频率的集合。
4.如权利要求1所述的方法,其中:
所述一个或多个软信息属性的集合包括与所述多个软信息表中的至少一些软信息表相对应的一个或多个访问频率的集合;并且
调整所述多个软信息表中的至少一些软信息表包括至少部分地基于所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到分层存储装置中。
5.如权利要求1所述的方法,其中:
所述一个或多个软信息属性的集合包括与所述多个软信息表中的至少一些软信息表相对应的一个或多个访问频率的集合;
调整所述多个软信息表中的至少一些软信息表包括至少部分地基于所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到包括多个具有不同延迟的易失性存储器的分层存储装置中;并且
根据所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到所述分层存储装置中。
6.如权利要求4所述的方法,其中:
至少部分地基于所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到所述分层存储装置中包括将所述多个软信息表中的至少一些软信息表移动到以下中的一个或多个中:
包括在所述SSD的控制器中的片上触发器;
包括在所述SSD的控制器中的随机存取存储器;和
包括在联接到所述SSD的主机设备中的随机存取存储器。
7.根据权利要求1所述的方法,其中,所述一个或多个软信息属性的集合包括操作数据的集合,所述操作数据的集合包括以下一个或多个:编程/擦除周期、读取干扰、写入干扰、数据保留率和校准。
8.如权利要求1所述的方法,其中:
所述一个或多个软信息属性的集合包括操作数据的集合;并且
调整所述多个软信息表中的至少一些软信息表包括至少部分地基于一个或多个对应的软解码结果来动态地调整所述多个软信息表中的一个或多个软信息表。
9.根据权利要求1所述的方法,其中,执行从所述SSD读取的数据的软解码包括执行从使用三维堆叠设计实现的高密度闪存读取的数据的软解码。
10.根据权利要求1所述的方法,其中,执行从所述SSD读取的数据的软解码包括:
获得输入因子的集合;
基于所述输入因子的集合来定位对应的软信息表;以及
至少部分地基于所述对应的软信息表来执行低密度奇偶校验(LDPC)解码。
11.如权利要求1所述的方法,其中,调整所述多个软信息表中的至少一些软信息表包括使用对应的操作数据来访问软信息表的位置是可寻址的内容可寻址存储器(CAM)。
12.根据权利要求1所述的方法,在所述SSD将要正常关机的情况下,该方法还包括将纠错数据和当前软信息表写入包括在所述SSD中的NAND闪存。
13.一种软信息表处理系统,该系统包括:
固态驱动器SSD;和
联接到所述SSD的一个或多个处理器,所述处理器被配置为:
使用多个软信息表中的至少一些软信息表来执行从固态驱动器SSD读取的数据的软解码;
监视与所述多个软信息表相关联的一个或多个软信息属性的集合;以及
至少部分地基于所述一个或多个软信息属性的集合来调整所述多个软信息表中的至少一些软信息表。
14.根据权利要求13所述的系统,其中,所述一个或多个处理器还被配置为提供经调整的软信息表以执行软解码。
15.根据权利要求13所述的系统,其中,所述一个或多个软信息属性的集合包括与所述多个软信息表中的至少一些软信息表相对应的一个或多个访问频率的集合。
16.如权利要求13所述的系统,其中:
所述一个或多个软信息属性的集合包括与所述多个软信息表中的至少一些软信息表相对应的一个或多个访问频率的集合;并且
调整所述多个软信息表中的至少一些软信息表包括至少部分地基于所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到分层存储装置中。
17.如权利要求13所述的系统,其中:
所述一个或多个软信息属性的集合包括与所述多个软信息表中的至少一些软信息表相对应的一个或多个访问频率的集合;
调整所述多个软信息表中的至少一些软信息表包括至少部分地基于所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到包括多个具有不同延迟的易失性存储器的分层存储装置中;并且
根据所述一个或多个访问频率的集合将所述多个软信息表中的至少一些软信息表移动到所述分层存储装置中。
18.如权利要求17所述的系统,其中:
所述多个易失性存储器包括以下中的一个或多个:
包括在所述SSD的控制器中的片上触发器;
包括在所述SSD的控制器中的随机存取存储器;和
包括在联接到所述SSD的主机设备中的随机存取存储器。
19.如权利要求13所述的系统,其中,所述一个或多个软信息属性的集合包括操作数据的集合,所述操作数据的集合包括以下一个或多个:编程/擦除周期、读取干扰、写入干扰、数据保留率和校准。
20.如权利要求13所述的系统,其中:
所述一个或多个软信息属性的集合包括操作数据的集合;并且
调整所述多个软信息表中的至少一些软信息表包括至少部分地基于一个或多个对应的软解码结果来动态地调整所述多个软信息表中的一个或多个软信息表。
21.根据权利要求13所述的系统,其中,执行从所述SSD读取的数据的软解码包括执行从使用三维堆叠设计实现的高密度闪存读取的数据的软解码。
22.根据权利要求13所述的系统,其中,执行从所述SSD读取的数据的软解码包括:
获得输入因子的集合;
基于所述输入因子的集合来定位对应的软信息表;以及
至少部分地基于所述对应的软信息表来执行低密度奇偶校验LDPC解码。
23.如权利要求13所述的系统,其中,调整所述多个软信息表中的至少一些软信息表包括使用对应的操作数据来访问软信息表的位置是可寻址的内容可寻址存储器CAM。
24.根据权利要求13所述的系统,在所述SSD将要正常关机的情况下,该系统还包括将纠错数据和当前软信息表写入包括在所述SSD中的NAND闪存。
25.一种用于管理软信息的计算机程序产品,所述计算机程序产品被包含在有形的计算机可读存储介质中并且包括用于以下的计算机指令:
使用多个软信息表中的至少一些软信息表来执行从固态驱动器SSD读取的数据的软解码;
监视与所述多个软信息表相关联的一个或多个软信息属性的集合;以及
至少部分地基于所述一个或多个软信息属性的集合来调整所述多个软信息表中的至少一些软信息表。
26.一种软解码方法,该方法包括:
使用多个软信息表中的至少一些软信息表来执行从固态驱动器SSD读取的数据的软解码;
其中,所述多个软信息表中的至少一些软信息表被存储在以下中的两个或更多个中:
包括在所述SSD的控制器中的片上触发器;
包括在所述SSD的控制器中的随机存取存储器;和
包括在联接到所述SSD的主机设备中的随机存取存储器。
CN201810112293.0A 2017-02-07 2018-02-05 高容量固态驱动器中的软信息管理 Active CN108399110B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/426,725 US10263639B2 (en) 2017-02-07 2017-02-07 Managing soft information in high-capacity solid state drive
US15/426725 2017-02-07

Publications (2)

Publication Number Publication Date
CN108399110A CN108399110A (zh) 2018-08-14
CN108399110B true CN108399110B (zh) 2021-07-23

Family

ID=63038131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810112293.0A Active CN108399110B (zh) 2017-02-07 2018-02-05 高容量固态驱动器中的软信息管理

Country Status (2)

Country Link
US (1) US10263639B2 (zh)
CN (1) CN108399110B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550834B1 (en) * 2017-04-26 2023-01-10 EMC IP Holding Company LLC Automated assignment of data set value via semantic matching
US10846172B2 (en) * 2018-01-08 2020-11-24 SK Hynix Inc. Encoding method and system for memory device including QLC cells
TWI664634B (zh) * 2018-08-17 2019-07-01 慧榮科技股份有限公司 快閃記憶體控制器、管理快閃記憶體模組的方法及相關的電子裝置
US11782778B2 (en) * 2021-07-28 2023-10-10 Alibaba Singapore Holding Private Limited Data recovery bypassing protocol for cloud network storage system
KR102345067B1 (ko) 2021-08-25 2021-12-29 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 구동 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101026434A (zh) * 2006-02-24 2007-08-29 中国科学院上海微系统与信息技术研究所 一种低复杂度的迭代检测译码方法及装置
CN101873197A (zh) * 2010-06-12 2010-10-27 电子科技大学 Ldpc码固定比特位的编译码设备
CN103905064A (zh) * 2014-04-23 2014-07-02 湖南国科微电子有限公司 一种ldpc译码器的量化方法
CN105468471A (zh) * 2014-09-12 2016-04-06 光宝科技股份有限公司 固态存储装置及其错误更正方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5756981A (en) 1992-02-27 1998-05-26 Symbol Technologies, Inc. Optical scanner for reading and decoding one- and-two-dimensional symbologies at variable depths of field including memory efficient high speed image processing means and high accuracy image analysis means
KR0136074B1 (ko) 1992-09-11 1998-06-01 세키자와 스토무 개량된 소프트 에러 저항을 갖는 mos형 sram, 고전위 전원 전압 강하 검출 회로, 상보 신호 천이 검출 회로 및 개량된 내부신호 시간 마진을 갖는 반도체 장치
US6381726B1 (en) 1999-01-04 2002-04-30 Maxtor Corporation Architecture for soft decision decoding of linear block error correcting codes
US6813322B2 (en) * 2001-04-26 2004-11-02 Telefonaktiebolaget L.M. Ericsson (Publ) Soft output value biasing
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US8051363B1 (en) 2007-01-16 2011-11-01 Marvell International Ltd. Absorb decode algorithm for 10GBase-T LDPC decoder
US8719670B1 (en) * 2008-05-07 2014-05-06 Sk Hynix Memory Solutions Inc. Coding architecture for multi-level NAND flash memory with stuck cells
US20100037121A1 (en) 2008-08-05 2010-02-11 The Hong Kong University Of Science And Technology Low power layered decoding for low density parity check decoders
US8413010B1 (en) 2009-03-12 2013-04-02 Western Digital Technologies, Inc. Data storage device employing high quality metrics when decoding logical block address appended to a data sector
US8572463B2 (en) * 2010-02-01 2013-10-29 Sk Hynix Memory Solutions Inc. Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
US8848438B2 (en) * 2010-10-05 2014-09-30 Stec, Inc. Asymmetric log-likelihood ratio for MLC flash channel
US9117529B2 (en) 2011-12-23 2015-08-25 Hgst Technologies Santa Ana, Inc. Inter-cell interference algorithms for soft decoding of LDPC codes
US8856611B2 (en) 2012-08-04 2014-10-07 Lsi Corporation Soft-decision compensation for flash channel variation
US9235467B2 (en) * 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
US9280422B2 (en) * 2013-09-06 2016-03-08 Seagate Technology Llc Dynamic distribution of code words among multiple decoders
US9164828B2 (en) * 2013-09-26 2015-10-20 Seagate Technology Llc Systems and methods for enhanced data recovery in a solid state memory system
KR102110767B1 (ko) * 2013-12-24 2020-06-09 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
US9647697B2 (en) * 2015-03-16 2017-05-09 Sandisk Technologies Llc Method and system for determining soft information offsets
US10075191B2 (en) * 2016-03-21 2018-09-11 Nandext Srl Method for decoding bits-by varying LLR values in a solid-state drive, and solid-state drive implementing the method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101026434A (zh) * 2006-02-24 2007-08-29 中国科学院上海微系统与信息技术研究所 一种低复杂度的迭代检测译码方法及装置
CN101873197A (zh) * 2010-06-12 2010-10-27 电子科技大学 Ldpc码固定比特位的编译码设备
CN103905064A (zh) * 2014-04-23 2014-07-02 湖南国科微电子有限公司 一种ldpc译码器的量化方法
CN105468471A (zh) * 2014-09-12 2016-04-06 光宝科技股份有限公司 固态存储装置及其错误更正方法

Also Published As

Publication number Publication date
US10263639B2 (en) 2019-04-16
US20180226990A1 (en) 2018-08-09
CN108399110A (zh) 2018-08-14

Similar Documents

Publication Publication Date Title
CN108399110B (zh) 高容量固态驱动器中的软信息管理
US10062442B2 (en) Method for managing data blocks and method of data management for data storage device
US8638602B1 (en) Background selection of voltage reference values for performing memory read operations
KR102174293B1 (ko) 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치
US20200118636A1 (en) Techniques for preventing read disturb in nand memory
US10956317B2 (en) Garbage collection in non-volatile memory that fully programs dependent layers in a target block
US10372382B2 (en) Methods and apparatus for read disturb detection based on logical domain
KR102407659B1 (ko) 메모리 내 데이터 복원 작업의 수행
CN113015965A (zh) 基于小计写入计数器执行混合损耗均衡操作
US10126970B2 (en) Paired metablocks in non-volatile storage device
US9372804B2 (en) Cache memory for hybrid disk drives
US20220137815A1 (en) Managing bin placement for block families of a memory device based on trigger metric values
US10324648B1 (en) Wear-based access optimization
US11061769B2 (en) Storage device selectively generating parity bits according to endurance of memory cell, and method thereof
US11955194B2 (en) Tracking and refreshing state metrics in memory sub-systems
CN112463647A (zh) 使用散列来减小前向映射表的大小
US11915776B2 (en) Error avoidance based on voltage distribution parameters of block families
Margaglia et al. Improving MLC flash performance and endurance with extended P/E cycles
US11664085B2 (en) Managing data disturbance in a memory with asymmetric disturbance effects
US10656847B2 (en) Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation
US20220189545A1 (en) Managing read level voltage offsets for low threshold voltage offset bin placements
CN115083456A (zh) 基于电压分布参考电压的电压分档校准
US11776611B2 (en) Managing write disturb for units of a memory device using weighted write disturb counts
US20240071522A1 (en) Read counter adjustment for delaying read disturb scans
US20230393991A1 (en) Error avoidance for partially programmed blocks of a memory device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant