CN114141300A - 用于参数化pv电平建模的高效读取阈值计算方法 - Google Patents
用于参数化pv电平建模的高效读取阈值计算方法 Download PDFInfo
- Publication number
- CN114141300A CN114141300A CN202111031143.5A CN202111031143A CN114141300A CN 114141300 A CN114141300 A CN 114141300A CN 202111031143 A CN202111031143 A CN 202111031143A CN 114141300 A CN114141300 A CN 114141300A
- Authority
- CN
- China
- Prior art keywords
- voltage read
- voltage
- parameters
- objective function
- threshold
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title description 2
- 230000015654 memory Effects 0.000 claims abstract description 129
- 230000006870 function Effects 0.000 claims abstract description 96
- 238000009826 distribution Methods 0.000 claims abstract description 64
- 238000000034 method Methods 0.000 claims abstract description 55
- 238000003860 storage Methods 0.000 claims description 51
- 238000013528 artificial neural network Methods 0.000 claims description 43
- 239000010410 layer Substances 0.000 description 52
- 239000011159 matrix material Substances 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000012549 training Methods 0.000 description 8
- 238000012937 correction Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 5
- 238000005315 distribution function Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000001186 cumulative effect Effects 0.000 description 4
- 125000004122 cyclic group Chemical group 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000001994 activation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000001788 irregular Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 208000011580 syndromic disease Diseases 0.000 description 2
- DNXHEGUUPJUMQT-CBZIJGRNSA-N Estrone Chemical compound OC1=CC=C2[C@H]3CC[C@](C)(C(CC4)=O)[C@@H]4[C@@H]3CCC2=C1 DNXHEGUUPJUMQT-CBZIJGRNSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000002790 cross-validation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000003989 dielectric material Substances 0.000 description 1
- XPYGGHVSFMUHLH-UUSULHAXSA-N falecalcitriol Chemical compound C1(/[C@@H]2CC[C@@H]([C@]2(CCC1)C)[C@@H](CCCC(O)(C(F)(F)F)C(F)(F)F)C)=C\C=C1\C[C@@H](O)C[C@H](O)C1=C XPYGGHVSFMUHLH-UUSULHAXSA-N 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10B—ELECTRONIC MEMORY DEVICES
- H10B41/00—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
- H10B41/20—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels
- H10B41/23—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
- H10B41/27—Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
本公开涉及用于提高与读取存储器单元中存储的数据相关的性能的方法和系统。该方法包括从与可存储在存储器单元中的位的数量相关联的多个电压读取范围中选择第一电压读取范围和第二电压读取范围。该方法包括接收表示第一电压读取范围内的第一候选电压读取阈值的第一概率分布的第一组参数。该方法包括接收表示第二电压读取范围内的第二候选电压读取阈值的第二概率分布的第二组参数。该方法包括基于目标函数的输入来生成电压读取阈值。该方法包括基于电压读取阈值来读取存储器单元中存储的数据。
Description
技术领域
本公开一般涉及一种存储器系统和存储器系统的操作方法,更具体地,涉及用于提高与读取存储器单元中存储的数据相关的性能的方法和系统。
背景技术
在NAND闪速存储器中,存储器单元可以存储一个或多个位作为电压值。例如,单层单元存储一个位,测量的电压值可以与单个电压阈值进行比较以确定该位的逻辑值(例如,“0”或“1”)。多层单元(MLC)可以存储两个位,测量的电压值可以与三个电压阈值进行比较以确定每个位的逻辑值。通常,存储器单元中存储的逻辑值由三个电压阈值中的每一个之间的电压范围(例如,1-2V、2-3V、3-4V等)确定,该单元的阈值电压在该电压范围内。随着每个存储器单元存储更多位,阈值电压范围变得更小,导致在确定存储器单元的值时错误率增加。
错误校正码(ECC)一般用于包括NAND闪速存储器的各种类型的数据存储装置。在数据传输过程中也经常使用ECC。ECC是指将冗余数据或奇偶校验数据添加到消息中的代码,使得在传输或存储过程中,即使引入一些错误,接收器也可以恢复该消息。通常,ECC可以根据所使用的代码的能力来校正错误。ECC解码可以包括硬解码,诸如博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)解码,其中存储器单元中存储的逻辑值由单元的阈值电压所在的电压范围确定。ECC解码还可以包括软解码,诸如低密度奇偶校验码(LDPC)解码,其中存储器单元中存储的逻辑值被表示为概率分布。
读取阈值电压的精确度对于包括使用NAND闪速存储器技术的固态驱动器的存储装置至关重要,因为更好的读取阈值电压产生更低的原始位错误率(RBER),这确定了诸如每秒输入/输出操作(IOP)和吞吐量的SSD系统性能。然而,在存储装置的使用寿命期间,存储器单元的最佳读取阈值电压可以根据大量可变因素而改变。理论上,如果影响读取阈值电压改变的所有因素是已知的,则可以根据离线存储器的特性确定最佳读取阈值。例如,可以生成查找表,其中该表将最佳读取阈值与这些因素的不同实现下的可变因素的可能组合相关联。然而,这种表实际上很难实现,部分原因是它需要大量的实现并且可能不会产生最佳电压读取阈值,因为并非所有可能的组合和实现都可以离线确定。
发明内容
描述了与提高关于生成电压读取范围的性能相关的技术。该技术涉及一种用于从存储装置读取数据的计算机系统以及在这种计算机系统上的实现方法。在示例中,计算机系统包括处理器和与处理器通信联接的存储器。存储器被配置为存储客户端数据、电压读取范围生成器和计算机可读指令。电压读取范围生成器接收表示第一电压读取范围内的第一概率分布的第一组参数和表示第二电压读取范围内的第二概率分布的第二组参数。计算机可读指令在由处理器运行时配置计算机系统以执行操作。该操作包括基于目标函数的输入以及第一电压读取范围和第二电压读取范围来生成电压读取阈值。
在一个示例中,公开了一种用于提高与读取存储器单元中存储的数据相关的性能的方法。该方法包括从与可存储在存储器单元中的位的数量相关联的多个电压读取范围中选择第一电压读取范围和第二电压读取范围。该方法包括接收表示第一电压读取范围内的第一候选电压读取阈值的第一概率分布的第一组参数。该方法包括接收表示第二电压读取范围内的第二候选电压读取阈值的第二概率分布的第二组参数。该方法包括基于目标函数的输入来生成电压读取阈值。该方法包括基于电压读取阈值来读取存储器单元中存储的数据。
提及该说明性示例不是为了限制或限定本公开,而是为了提供示例以帮助理解本公开。在具体实施方式中讨论了另外的实施例和示例,并且在那里提供了进一步的描述。
附图说明
可以通过参照下列附图实现对各个实施例的本质和优点的理解。
图1示出根据本公开的某些实施例的错误校正系统的高级框图的示例。
图2示出根据本公开的某些实施例的包括主机和存储装置的计算机系统的示例。
图3示出根据本公开的某些实施例的NAND闪速存储器中的位存储的示例。
图4示出根据本公开的某些实施例的包括电压读取阈值生成器的计算机系统的示例。
图5示出根据本公开的某些实施例的神经网络可以用于生成电压读取阈值的示例。
图6描绘了根据本公开的一些实施例生成的示例电压读取阈值的曲线图。
图7描绘了根据本公开的一些实施例的描绘目标函数的示例和两个编程验证电平模型曲线之间的差值的对数表示的曲线图。
图8描绘了根据本公开的一些实施例的示出对数函数的近似值和近似误差的图表的示例。
图9描绘了根据本公开的一些实施例的示出概率分布函数Φ(x)的对数的近似值和近似误差的图表的示例。
图10示出根据本公开的某些实施例的使用阈值读取电压来读取存储单元的流程的示例。
图11是根据本公开的某些实施例的描绘候选电压读取阈值的调整的曲线图的示例。
图12是根据本公开的某些实施例的用于生成电压读取阈值的计算系统的示例。
具体实施方式
描述了关于提高与生成电压读取阈值相关的性能的技术。该技术涉及从存储装置读取数据的计算机系统以及在这种计算机系统上的实现方法。在示例中,计算机系统包括处理器和与处理器通信联接的存储器。存储器被配置为存储客户端数据、电压读取阈值和计算机可读指令。电压读取范围生成器接收表示第一电压读取范围内的第一概率分布的第一组参数和表示第二电压读取范围内的第二概率分布的第二组参数。计算机可读指令在由处理器运行时配置计算机系统以执行操作。该操作包括基于目标函数的输入以及第一电压读取范围和第二电压读取范围来生成电压读取阈值。第一电压读取范围表示第一组位值。例如,当读取的存储器单元的电压电平小于电压读取阈值时,存储器单元的位被确定为具有第一位值并且这些位表示存储器单元中存储的数据。第二电压读取范围表示第二组位值。例如,当读取的存储器单元的电压电平大于电压读取阈值时,存储器单元的位被确定为具有第二位值并且这些位表示存储器单元中存储的数据。
为了说明这一点,考虑使用三层单元(TLC)技术的NAND闪速存储器的示例,其中每个存储器单元存储三位数据。需要七个电压读取阈值来确定存储器单元中存储的三个位的逻辑值。在NAND闪速存储器的管芯的块内,存储器单元可以组织为最高有效位(MSB)页面、最低有效位(LSB)页面和中央有效位(CSB)页面。七个电压读取阈值中的三个与MSB页面相关联,七个电压读取阈值中的两个与LSB页面相关联,并且七个电压读取阈值中剩余的两个与CSB页面相关联。
在该示例中,与页面相关联的电压读取阈值与指示位的值的编程验证(PV)电平相关联。这些PV电平中的每一个都具有电压对应于PV电平的概率分布。当从存储器单元读取数据时,读取电压可以由各个PV电平的概率分布中的一个的位置来表示。例如,在三位存储器单元中,存在对应于“000”、“001”等直到位值“111”的PV电平0-7。特定PV电平的一些概率分布可能与相邻的PV电平重叠,在读取与PV电平相关联的数据时可能会导致位错误。电压读取阈值生成器可以使用目标函数和描述每个相邻的PV电平的概率分布的参数组来确定电压读取阈值。计算机系统可以使用生成的电压读取阈值从存储单元读取数据。
本公开的实施例提供与计算机存储相关的若干优点。例如,实施例提供相对于现有系统(例如,相对于不改变这些阈值或使用预定义的表改变这些阈值的现有系统)更好的电压读取阈值。更好的读取阈值导致更低的原始位错误率(RBER),数据存储装置的IOP和吞吐量等性能也会相应提高。使用本文中描述的方法将MAC操作减少了大约3000倍,并且在加载存储操作中提供了类似水平的节省。
为了解释清楚,结合LDPC码字和NAND闪速存储器来描述本公开的实施例。然而,实施例不限于此并且适用于任何其它编码解码过程和任何其它类型的数据存储。
图1示出根据本公开的某些实施例的错误校正系统100的高级框图的示例。在本示例中,结合数据存储描述LDPC码。然而,本公开的实施例不限于此。相反,实施例同样适用于LDPC码的其它用途,包括,例如,数据传输。
LDPC码是通过由0和1组成的稀疏奇偶校验矩阵H定义的线性块码。术语“稀疏矩阵”在本文中用于指每列和每行中的非零值的数量远小于其维度的矩阵。术语“列权重”在本文中用于指奇偶校验矩阵H的特定列中非零值的数量。术语“行权重”在本文中用于指奇偶校验矩阵H的特定行中非零值的数量。一般来说,如果与LDPC码相对应的奇偶校验矩阵中所有列的列权重都相似,则该码被称为“规则”LDPC码。另一方面,如果列权重中的至少一个与其它列权重不同,则LDPC码被称为“不规则”。通常,不规则LDPC码比规则LDPC码提供更好的错误校正能力。
也根据构造LDPC码的方式来描述LDPC码。随机计算机搜索或代数构造是可能的。随机计算机搜索构造描述一种具有由随机的基于计算机的程序而设计的奇偶校验矩阵的LDPC码。代数构造意味着奇偶校验矩阵是基于组合方法构造的。准循环LDPC(QC-LDPC)码属于后一种构造方法。QC-LDPC码的一个优点是它们在编码过程方面相对容易实现。QC-LDPC码的主要特征是奇偶校验矩阵由循环子矩阵组成,循环子矩阵可以基于单位矩阵,也可以基于较小的随机矩阵。也可以使用置换向量来创建循环子矩阵。
如图所示,LDPC编码器110接收包括需要存储在存储系统120中的数据的信息位。经LDPC编码的数据由LDPC编码器110输出并且写入存储系统120。
在各个实施例中,存储系统120可以包括各种存储类型或介质,诸如(例如,磁性、固态)磁盘驱动存储装置、闪存存储装置等。在一些实施例中,这些技术应用于收发器中,并且数据是通过有线和/或无线通道传输和接收,而不是被写入存储装置或者从存储装置中读取。在这种情况下,在码字的传输过程中,可能在接收到的码字中引入错误。
当请求或以其它方式(例如,由存储数据的应用程序或用户)需要所存储的数据时,检测器130从存储系统120接收数据。所接收到的数据可能包括一些噪声或错误。检测器130对所接收到的数据执行检测并且输出判定和/或可靠性信息。例如,软输出检测器输出可靠性信息和针对每个检测到的位的判定(例如,逻辑值“1”或“0”)。另一方面,硬输出检测器在不提供相应的可靠性信息的情况下输出关于每个位的判定。作为示例,硬输出检测器可以输出特定位是“1”或“0”的判定,而不在该判定中指示检测器确定程度。相反,软输出检测器输出判定和与判定相关联的可靠性信息。一般来说,在给定判定中可靠性值指示检测器确定程度。在一个示例中,软输出检测器输出对数似然比(LLR),其中符号指示判定(例如,正值对应于判定“1”而负值对应于判定“0”),在该判定中大小指示检测器确定程度(例如,较大的大小指示较高的可靠性或确定性)。
将判定和/或可靠性信息传递到使用判定和可靠性信息执行LDPC解码的LDPC解码器140。软输入解码器利用判定和可靠性信息两者来对码字进行解码。硬解码器仅利用解码器中的判定值对码字进行解码。将由LDPC解码器140生成的经解码的位传递到适当的实体(例如,请求经解码的位的用户或应用程序)。通过正确的编码和解码,信息位与经解码的位匹配。
在各个实施例中,所示系统可以使用包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如,高级RISC机器(ARM)内核)的各种各样的技术来实施。
LDPC码通常由二部图表示。一组节点,可变或位节点,对应于码字的元素,而另一组节点,例如校验节点,对应于码字所满足的奇偶校验约束集。一般,边缘连接是随机选择的。如果在图中避免了较短长度的循环,则LDPC码的错误校正能力得到提高。在(r,c)规则码中,n个可变节点(V1、V2、……、Vn)中的每一个连接到r个校验节点并且m个校验节点中的每一个(C1、C2、……、Cm)连接到c个位节点。在不规则LDPC码中,校验节点度不是统一的。类似地,可变节点度也不是统一的。在QC-LDPC码中,奇偶校验矩阵H被构造为p×p矩阵块,使得块中的位只参与该块中的一个校验等式,并且块中的每个校验等式只涉及来自块的一个位。在QC-LDPC码中,码字循环移位p产生另一个码字。这里p是为零矩阵或循环矩阵的方阵的大小。这是循环码的广义化,其中码字循环移位1产生另一个码字。p×p矩阵块可以是零矩阵或大小为p×p的循环移位的单位矩阵。
消息传递算法通常用于对LDPC码进行解码。本领域中存在消息传递算法的若干变型,诸如最小和(MS)算法、和-积算法(SPA)等。消息传递使用可变节点和校验节点的网络。可变节点和校验节点之间的连接由奇偶校验矩阵的值描述并与之对应。
在示例中,可以执行硬判定消息传递算法。在第一步中,可变节点中的每一个将消息发送到连接到该可变节点的一个或多个校验节点。在这种情况下,该消息是可变节点中的每一个都认为是其正确值的值。
在第二步中,校验节点中的每一个使用它先前从可变节点接收的信息计算响应,以发送到与它连接的可变节点。这一步可以被称为校验节点更新(CNU)。响应消息对应于校验节点认为可变节点基于从连接到该校验节点的其它可变节点接收的信息而应该具有的值。该响应是使用奇偶校验等式计算的,该等式强制连接到特定校验节点的所有可变节点的值总和为零(模数(modulo)2)。
此时,如果满足所有校验节点处的所有方程,则解码算法声明找到了正确的码字并且该解码算法终止。如果未找到正确的码字,则迭代继续使用可变节点从校验节点接收的消息从可变节点进行另一次更新,以根据多数规则判定可变节点位置处的位应该是0还是1。然后,可变节点将该硬判定消息发送到连接到可变节点的校验节点。迭代继续,直到找到正确的码字,根据码字(例如,经解码的码字)的校验子来执行一定数量的迭代,或者在没有找到正确的码字的情况下执行最大数量的迭代。应当注意的是,软判定解码器类似地工作,然而,在校验节点和可变节点之间传递的消息中的每一个也包括每个位的可靠性。
在另一示例中,可以执行软消息传递算法。在本示例中,L(qij)表示由可变节点vi发送到校验节点cj的消息;L(rji)表示由校验节点cj发送到可变节点vi的消息;L(ci)表示每个可变节点vi的初始LLR值。可以通过下列步骤来完成每个L(qij)的可变节点处理:
(1)从存储器中读取L(ci)和L(rji)。
(3)计算每个L(Qi-sum)–L(rij)。
(4)输出L(Qi-sum)并且写回存储器。
(5)如果这不是存储器的最后一列,则转到步骤1并且将i加1。
(6)计算奇偶校验和(例如,校验子),如果它们都等于0,迭代的数量达到阈值并且奇偶校验和大于另一个阈值,或者迭代的数量等于最大限制,则停止;否则,执行校验节点处理。
可以如下执行每个L(rji)的校验节点处理:
(1)从存储器中读取一行qij。
(2)如下计算L(Rj-sum):
αij=sign(L(qij)),βij=|L(qij)|,
(4)将L(rji)写回存储器。
(5)如果这不是存储器的最后一行,则转到第一步并且将j加1。
图2示出根据本公开的某些实施例的包括主机210和存储装置220的计算机系统的示例。主机210执行包括将数据写入存储装置220和从存储装置220读取数据的I/O操作212。在示例中,写入数据包括采用一个或多个LDPC编码器(图2中未示出)对数据进行编码以生成存储在存储装置220中的LDPC码字。读取数据包括采用一个或多个LDPC解码器(图2中未示出)对LDPC码字进行解码以从存储装置220输出经解码的数据。编码和解码(例如,LDPC编码器和解码器)是可以在主机210和存储装置220之间实现的ECC系统的一部分。
在示例中,存储装置220包括多个存储器管芯(Die)222(该数量在图2中显示为“L”)。反过来,每个存储器管芯222包括可以以若干块(Block)224(该数量在图2中显示为“M”)组织的存储器单元。块224中的每一个包含若干字线226(该数量在图2中显示为“i”)。存储器单元可以是诸如浮栅MOSFET的浮栅晶体管。可以使用包括列、位线、页面和字线的广泛配置来对存储器单元进行分组和/或引用存储器单元。存储器单元102的其它分组也是可能的,包括跨不同芯片、管芯、平面等的分组。在一些实施例中,块的页面可以表示最小可编程单位和最小可读取单位。
对于NAND闪存,每个块224包含用于单层单元(SLC)闪存的六十四个页面、用于多层单元(MLC)闪存的一百二十八个页面、用于三层单元(TLC)闪存的三百八十四个页面。页面的大小可以从2KB到8KB不等。在MLC闪存中,单个单元内的两个位不映射到相同的页面。相反,来自一组单元的最高有效位(MSB)的集合形成页面,被称为MSB页面。来自相同组单元的最低有效位(LSB)形成页面,被称为LSB页面。类似地,对于TLC,存在MSB页面和LSB页面。另外,来自相同的组并且在MSB与LSB之间的位形成页面,被称为中央有效位(CSB)页面。
在一些实例中,存储装置220的一个或多个组件可能由于在存储装置220操作之前或期间发生故障而变得无法使用。故障的原因可能是由于在制造过程中的缺陷、在使用之前或期间对存储装置220的机械应力、存储器单元中介电材料的降解等。故障可能发生在存储器单元级别,这可能在存储装置220的其它组件内传播故障并且引起故障。当来自组中的存储器单元中的任何一个的数据都不可写入和/或不可读取时,可以认为该组存储器单元失败。附加地或可选地,当组中的存储器单元中的至少一个既不可写入,又不可读取时,可以认为该组失效。在这种情况下,EEC方案(例如,ECC编码过程和ECC解码过程的组合)可用于保护和/或恢复失败组中的数据。
图3示出根据本公开的某些实施例的NAND闪速存储器中的位存储的示例。示出四个这样的存储器:单层单元(SLC)NAND闪速存储器310、多层单元(MLC)NAND闪速存储器320、三层单元(TLC)NAND闪速存储器330和四层单元(QLC)NAND闪速存储器340。通常,根据NAND闪速存储器的类型来将一个或多个位存储在单元中。存储依赖于将位的逻辑值(例如,“0”或“1”)与电压电平相关联的映射。电压电平对应于电压的范围(在本文中也称为电压范围),使得如果电压作为电压电平被读取并且落在电压范围内,则该电压电平可以被声明为属于电压范围并且单元中的位被确定为具有对应于电压范围的逻辑值。
针对SLC NAND闪速存储器310,一个位(例如,信息位或奇偶校验位)可以被存储在单元中。因此,单元有两种可能的电压电平。映射定义这两个电平之间的电压读取阈值。为了检查该单元是否包含“0”或“1”,读取电压并且将该电压与电压读取阈值进行比较,以识别相关电压电平并且相应地,识别位的逻辑值。例如,如果读取电压值小于电压读取阈值,则识别第一电压电平并且将位的逻辑值确定为“0”。否则,识别第二电压电平并且将位的逻辑值确定为“1”。
相比之下,对于MLC NAND闪速存储器320,两个位可以存储在单元中。因此,单元有四种可能的电压电平。映射定义这四个电平之间的三个电压读取阈值。为了检查单元中包含的每个位是“0”还是“1”,读取电压并且将其与三个电压读取阈值进行比较,以识别相关电压电平并且相应地,识别位的逻辑值。
类似地,对于TLC NAND闪速存储器330和QLC NAND闪速存储器340,三个位和四个位可以分别存储在单元中。因此,TLC NAND闪速存储器330和QLC NAND闪速存储器340的单元分别有八种和十六种可能的电压电平。TLC NAND闪速存储器330的映射定义八个电压电平之间的七个电压读取阈值。QLC NAND闪速存储器340的映射定义十六个电压电平之间的十五个电压读取阈值。为了检查单元中包括的每个位是“0”还是“1”,读取电压并且将其与电压读取阈值进行比较,以识别相关电压电平并且相应地,识别位的逻辑值。
图4示出根据本公开的某些实施例的可以包括在用于生成电压读取阈值的计算系统中的神经网络400的示例。将与一个或多个输入条件(例如,第一累积分布502或第二累积分布504)相关联的特征图402输入到神经网络400。转而,神经网络400输出概率分布参数404。如图所示,神经网络400包括多个层。来自特征图402的特征连接到神经网络400的输入层410中的输入节点。概率分布参数404由输出层430的输出节点生成。神经网络400的一个或多个隐藏层420存在于输入层410与输出层430之间。预训练神经网络400以通过不同层410、420和430来处理来自特征图402的特征,以输出概率分布参数404。虽然参照图5进行了额外的详细描述,但概率分布参数的示例是描述偏态分布(Skew Normal Distribution)的特征(例如,位置ξ、尺度ω和形状α)的一组参数,该偏态分布对存储块中的电压范围进行建模。
在一些实施例中,神经网络400是表示诸如人工深度神经网络的互连节点的网络的多层神经网络,其中在层之间共享关于节点的知识(例如,关于由节点表示的特定特征的信息),并且还保留特定于每个层的知识。每个节点表示一条信息。可以通过节点到节点的互连在节点之间交换知识。神经网络400的输入激活一组节点。转而,这组节点激活其它节点,从而传播关于输入的知识。在其它节点上重复该激活过程,直到选择并且激活输出层中的节点。
如图所示,神经网络400包括表示以前馈方式互连的节点层级的层的层级。输入层410存在于最低层级。输入层410包括在本文中称为输入节点的一组节点。当特征图402被输入到神经网络400时,输入层410的输入节点中的每一个连接到特征图的每个特征。连接中的每一个具有权重。这些权重是从神经网络400的训练中得到的一组参数。输入节点通过将激活函数应用到这些特征来变换特征。将从变换中得到的信息传递到层次结构级别更高的节点。
输出层430存在于最高层级。输出层430包括一个或多个输出节点。每个输出节点提供概率分布参数的特定值。输出节点的数量取决于所需的概率分布参数的数量。例如,如果需要三个概率分布参数来确定与神经网络400相关联的存储器单元的电压范围曲线的特性,则使用三个输出节点,每个节点生成并且输出三个概率分布参数中的一个。换言之,在输出节点的数量和概率分布参数的数量之间存在一一对应的关系或映射。
隐藏层420存在于输入层410与输出层430之间。隐藏层420包括“N”个隐藏层,其中“N”是大于或等于1的整数。转而,隐藏层中的每一个还包括在本文中称为隐藏节点的一组节点。示例隐藏层包括上采样层、卷积层、全连接层和数据转换层。
在隐藏层420的最低层,该层的隐藏节点与输入节点互连。在隐藏层420的最高层,该层的隐藏节点与输出节点互连。输入节点不直接与输出节点互连。如果存在多个隐藏层,则输入节点与最低隐藏层的隐藏节点互连。转而,这些隐藏节点与下一个隐藏层的隐藏节点互连等等。
互连表示了解的关于两个互连节点的一条信息。互连具有可以调整的数字权重(例如,基于训练数据集),使得神经网络400适应输入并且能够学习。
通常,隐藏层420允许在输出层430的输出节点之间共享关于输入层410的输入节点的知识。为了这样做,通过隐藏层420将变换f应用到输入节点。在示例中,变换f是非线性的。可以使用不同的非线性变换f,包括,例如整流函数f(x)=max(0,x)。在示例中,基于交叉验证来选择特定非线性变换f。例如,给定已知示例对(x,y),其中x∈X和y∈Y,其中当函数f∶X→Y产生最佳匹配时选择该函数。
神经网络400还使用损失函数l(或者,也称为成本函数c)来寻找最优解。最优解表示没有解的损失小于最优解的损失的情况。在示例中,损失函数l包括均方误差函数,该均方误差函数最小化所有示例对(x,y)的输出f(x)与目标值y之间的均方误差。将使用梯度下降来最小化损失函数的反向传播算法用于训练神经网络400。在示例中,训练是监督训练。在监督训练期间,目标值y可以被设置为操作条件和存储条件的特定组合的概率分布参数。关于概率分布参数和这些条件的信息可以用作训练标签。输出f(x)可以是基于特定组合作为输入的学习概率分布参数。训练的目标是改善神经网络的参数,以最小化目标值y和输出f(x)之间的差值。
如此,隐藏层420保留关于输入节点的知识。基于隐藏节点和输入节点的互连在输出节点之间共享一组知识。
在示图中,神经网络400是用于NAND闪速存储器的深度学习神经网络。为了训练该网络,通过在一定的操作条件和存储器单元位置的组合下测量NAND数据和单元分布来收集标记数据。还收集相应的概率分布参数。对于具有连续值的条件,生成并且使用离散值。
通过“K”个输入节点以及输出节点创建深度学习神经网络,其中“K”是定义输入条件的因素(例如,特征)的数量。输出节点用于执行激活函数以计算输入条件的某一组合的概率分布参数。层的数量和每层的大小取决于NAND闪速存储器和该存储器可以存储的数据量。可以选择层的数量和大小作为训练模型的超参数。
一旦经过训练,操作条件和存储条件(例如,当前条件)的特定组合被提供给深度学习神经网络。转而,深度学习神经网络计算特定条件的最佳读取阈值电压。概率分布参数是深度学习神经网络的输出并且可以被提供给电压读取阈值生成器。
图5示出根据本公开的某些实施例的包括电压读取阈值生成器510的计算机系统的示例。在某些情况下,计算机系统可以包括诸如固态驱动器(SSD)的存储系统。如图所示,计算机系统500还包括神经网络506、第二神经网络508、浮点单元(FPU)512和近似生成器514并且输出候选读取阈值518。对于n位多层单元NAND闪速存储器,可以将每个单元的阈值电压编程为2n个可能的值。在理想的多层单元NAND闪速存储器中,每个值对应于非重叠的阈值电压范围。然而,在许多系统中,由于操作条件,每个值的阈值电压范围可能会重叠一部分。另外参照图8详细地讨论这种重叠的示例。
例如,神经网络506可以接收表示第一阈值电压范围的偏态分布模型的第一累积分布函数(CDF)。第一CDF可以由另一神经网络生成,迭代模拟以确定阈值电压范围的参数表示。第一CDF 502可以对应于多层单元NAND闪速存储器的第一层。基于单元中存储的位的多少,每个多层单元具有多个级别。在一个示例中,三层单元(TLC)每个多层单元存储三位并且具有2n个级别,或八个级别。三位TLC的八个级别中的每一个对应于可以由CDF 502表示的电压范围。神经网络506可以接收表示第二阈值电压范围的偏态分布模型的第二CDF504。第二CDF504可以对应于多层单元的第二层。神经网络506可以是关于图4所描述的并且被训练以输出概率分布参数514的神经网络。神经网络506可以输出各种参数,包括但不限于位置、方差以及由ΘL=(ξL,ωL,αL)表示的第一CDF 502和由ΘR=(ξR,ωR,αR)表示的第二CDF 504中的每一个的偏度。神经网络506可以将表示第一CDF 502的第一组参数ΘL和表示第二CDF 504的第二组参数ΘR(统称为“概率分布参数514”)提供给电压读取阈值生成器510。
电压读取阈值生成器510可以是运行固件级代码的处理器。电压读取阈值生成器510可以从神经网络506接收概率分布参数514。电压读取阈值生成器510可以通过使用第一组参数ΘL和第二组参数ΘR作为目标函数的输入来生成电压读取阈值。目标函数的示例是在电压读取阈值(例如,交叉点)处具有根的函数,其在读取存储在多层存储器单元中的数据时将错误率最小化。
在一个示例中,目标函数可以表示为O(x)=f(x;ΘL)-f(x;ΘR),其中f(x;ΘL)表示描述与第一电压范围相关联的第一编程验证电平的概率分布的函数,f(x;ΘR)表示描述与第二电压范围相关联的第二编程验证电平的概率分布的函数。例如,偏态分布的概率分布函数等于并且和
电压读取阈值生成器510可以确定可由一个或多个低阶多项式估计的目标函数的对数表示。电压读取阈值生成器510可以将目标函数的对数表示提供给浮点单元。例如,tl(x)表示来自第一编程验证电平的值并且由计算而tR(x)表示来自第二编程验证电平的值并且由计算。电压读取阈值生成器510可以使用这些项来计算目标函数L(x)的对数表示,目标函数L(x)可以表示为:
电压读取阈值生成器510可以在一个候选读取阈值处以少于30次的乘法运算来评估近似目标函数。相比之下,具有4个隐藏层且每层具有128个节点的神经网络需要超过99K次MAC操作来在一个候选读取阈值处评估两个分布的PDF。因此,所提出的方案将MAC操作的要求降低了大约3000倍,并且在加载-存储操作中提供了类似水平的节省。例如,通过采用函数自变量的低阶多项式来逼近函数log(·)和log(Φ(·)),使得多项式的系数是低精度浮点值,从而提高了L(x)的计算效率。例如,pl(t)=ao+a1t+a2t2+…+amtm和plΦ(t)=b0+b1t+…+bntn分别表示m阶和n阶近似log(t)和log(Φ(t))。通过划分函数自变量的定义域并且针对每个范围使用不同的多项式,可以使这些近似更准确。图8和图9分别示出函数log(·)和log(Φ(·))的分段近似的示例。在一些示例中,可以根据运行固件的处理器的流水线结构使用霍纳法(Horner`s method)或埃斯特林法(Estrin`s method)求多项式的值。
电压读取阈值生成器510或FPU 512可以使用由运行固件的处理器在低精度浮点值上进行的融合乘法累加运算来有效地求多项式中的每一个的值。电压读取阈值生成器可以使用近似函数来定义由以下表示的近似目标函数:
电压读取阈值生成器510还可以将第一组参数和第二组参数提供给浮点单元(FPU)512。FPU 512的示例可以是协处理器,以目标精确度执行近似运算。FPU 512可以从近似生成器516(例如,多项式生成器)接收一组系数来利用低阶多项式以逼近目标函数的对数表示,使得系数是低精度浮点值。在一个示例中,电压读取阈值生成器512可以为近似生成器516和FPU 512划分目标函数的定义域。FPU 512可以通过从近似生成器516接收多组多项式来计算分段近似,该多组多项式对应于所划分的定义域的段。FPU 512可以针对分段近似的每个多项式有效地使用多次累加运算。电压读取阈值生成器510可以生成近似目标函数。电压读取阈值生成器510通过求A(x)在一个候选读取阈值上的值并且更新候选读取阈值来估计近似目标函数A(x)的根,直到确定近似目标函数的根。在一个示例中,间隔[x1,x2]被初始化为[ξL,ξR],并且在间隔的中点处生成第一候选读取阈值。电压读取阈值生成器510根据近似目标函数在第一候选读取阈值处的值来更新间隔。第一候选读取阈值对应于多层存储器单元的候选电压读取电平。例如,第一候选读取阈值对应于与多层存储器单元的PV电平相关联的电压范围内的电压电平。
在另一示例中,电压读取阈值生成器510可以使用正割法,以通过使用每次迭代的有限差值估计近似目标函数A(x)的梯度并且使用所估计的梯度生成候选读取阈值,来估计候选读取阈值。对于该示例,近似目标函数A(x)的梯度可以被准确地计算为:
其中项blΦ(t)由dlΦ(t)=b1+b2t+b3t2+…+bntn-1表示。dlΦ(t)可以是与多项式plΦ共享系数的(n-1)阶多项式。FPU 512可以求多项式plΦ的值并且在求多项式plΦ的值期间使用输出。电压读取阈值生成器510使用候选读取阈值处的梯度来确定Netwon方法(Netwon`smethod)中的步长,以在更少的迭代中收敛到最佳读取阈值。
近似生成器516可以是存储多项式系数的ROM。在一个示例中,近似生成器516可以存储半精度值(即,16位宽)。近似生成器可以使用具有目标函数O(x)的5个分段近似的5阶多项式。使用该配置,近似生成器需要总共960位的ROM。相比之下,当Vt–ξ,ω,α分别被量化为64个级别时,存储16位宽PDF值的LUT需要512KB的ROM。因此,本文中描述的系统和方法在ROM中提供超过4000倍的节省。
图6描绘了根据本公开的一些实施例生成的示例电压读取阈值的曲线图600。例如,曲线图600描绘表示第一电压范围608的如关于图5所描述的概率分布的第一曲线602和表示第二电压范围610的第二曲线604。电压阈值生成器计算作为如由第一曲线602和第二曲线604的交点示出的第一电压范围608与第二电压范围610之间的交叉点的电压阈值606。在图6描绘的示例中,第一曲线602和第二曲线604描绘两个电压范围的对数函数。第一电压范围608和第二电压范围610中的每一个都由一组偏态分布参数建模,如曲线图600的图例所示。
图7描绘了根据本公开的一些实施例的描绘目标函数的示例和两个编程验证电平模型曲线之间的差值的对数表示的曲线图700。例如,目标函数曲线702可以是关于图5描述的目标函数。还可以计算诸如第一曲线602的第一曲线与诸如第二曲线604第二曲线之间的差值曲线704的对数表示。
电压读取阈值生成器可以生成目标函数曲线702或差值曲线704的根(例如,零交点)。然而,在固件上执行计算目标函数曲线702的根从计算方面讲具有挑战性。电压读取阈值生成器可以计算差值曲线704的根,其表示第一曲线602与第二曲线604之间的差值的对数。
图8描绘根据本公开的一些实施例的示出对数函数的近似值和近似误差的图表的示例。例如,可以通过使用低阶多项式来近似第一函数802 log(x)。在图8的示例中,使用五阶多项式来近似第一函数802。近似曲线804示出第一函数802的分段近似。近似误差曲线806表示作为近似曲线804与第一函数802之间的差值的误差。
图9描绘根据本公开的一些实施例的示出概率分布函数Φ(x)的对数的近似值和近似误差的图表的示例。例如,可以通过使用低阶多项式来近似近似第二函数902 log(Φ(x))。在一些情况下,用于近似第二函数的低阶多项式的系数不同于用于近似第二函数902的系数。在图9的示例中,使用五阶多项式来近似第二函数902。第二近似曲线804示出第二函数902的分段近似。第二近似误差曲线906表示作为第二近似曲线904与第二函数902之间的差值的误差。
图10示出根据本公开的某些实施例的使用阈值读取电压来读取存储单元的流程1000的示例。流程1000可以从操作1002开始,其中计算机系统从多个编程验证(PV)电平中选择第一电压读取范围和第二电压读取范围。例如,计算机系统包括控制器以及诸如NAND闪速存储器(或一些其它类型的存储装置)的存储器。控制器可以将客户端数据存储在客户端的存储器中。这样做包括选择对应于多层存储块中的存储单元的电压范围。在从存储单元中具有多于一个数据位的存储装置读取时,选择对应于存储器单元的各个电平的第一电压读取范围和第二电压读取范围。基于可以存储在存储单元内的位的数量来确定第一电压读取范围和第二读取范围的对应宽度。
在一个示例中,计算机系统可以选择可以对应于来自多个PV电平的相邻PV电平的第一电压读取范围(例如,1.8V-2.5V)和第二电压读取范围(例如,2.5V-3.2V)。第一电压读取范围可以对应于表示存储单元内存储的第一组位的第一PV电平。第二电压读取范围可以表示与存储单元内存储的与第一组位不同的第二组位。
在操作1004,计算机系统接收表示第一电压读取范围内的第一候选电压读取阈值的第一概率分布的第一组参数。在示例中,计算机系统接收表示第一概率分布的均值、方差和偏度的第一组参数。计算机系统可以从神经网络接收第一组参数,该神经网络被训练以从相关联的PV电平的CDF确定表示偏态分布的均值、方差和偏度。
在操作1006,计算机系统接收表示第二电压读取范围内的第二候选电压读取阈值的第二概率分布的第二组参数。在示例中,计算机系统接收表示第二概率分布的均值、方差和偏度的第二组参数。计算机系统可以从神经网络接收第二组参数,该神经网络从相关联的PV电平的累积分布函数(CDF)确定偏态分布的表示。
在操作1008,计算机系统基于目标函数的输入来生成电压读取阈值。在示例中,计算机系统通过将第一组参数ΘL和第二组参数ΘR用作目标函数的输入来生成电压读取阈值。计算机系统可以生成目标函数的近似函数并且确定在电压读取阈值(例如,交叉点)处出现的目标函数的根。
在一个示例中,计算机系统可以生成目标函数的对数表示。计算机系统可以通过使用一个或多个低阶多项式来近似对数表示。计算机系统可以确定如关于图1至图5描述的对数表示。计算系统可以划分目标函数的定义域(例如,值的区间)。计算机系统可以为目标函数的每个划分生成分段近似。计算系统可以生成对应于所划分的定义域的各个段的多个低阶多项式。计算系统可以将分段近似的低阶多项式聚合为近似目标函数,该近似目标函数包括目标函数的每个划分的多项式项。计算系统可以通过求A(x)在各种候选电压读取电平上的值来估计近似目标函数A(x)的根。与近似目标函数的根相关联的候选电压读取电平对应于多层存储器单元的相邻PV电平之间的交叉点电压电平。
在操作1010,计算机系统使用电压读取阈值读取存储器单元中存储的数据。在示例中,客户端数据存储在存储器中作为包含基于ECC编码过程的位的码字。在该示例中,读取客户端数据包括基于ECC解码过程来对码字进行解码,ECC解码过程使用基于电压读取阈值的位的值。特别地,计算机系统可以执行电压测量并且将电压测量值与电压读取阈值进行比较。基于该比较,计算机系统确定位的逻辑值。逻辑值和适用的软信息被输入到ECC解码过程以解码和输出对应于客户端数据的信息位。
图11是根据本公开的某些实施例的描绘候选电压读取阈值的调整的曲线图的示例。例如,曲线图1102示出使用二分法调整候选电压读取阈值。二分法是一种寻找诸如目标函数或近似目标函数的连续函数的根的方法。二分法迭代地定义两个值之间的区间,并且在该区间内选择函数值改变符号的子区间。在图11描绘的另一示例中,曲线图1104示出使用正割法调整候选电压读取阈值。正割法是一种使用函数的割线求根的方法。当初始值足够接近函数的根时,正割法将收敛到根值。
图12是能够实现本公开的计算机系统1200的示例,诸如图1的错误校正系统100、图2的主机210和存储装置220以及图4的神经网络400。图12仅为本公开的实施例的示例并且不限制如权利要求书中所述的本公开的范围。在一个实施例中,该系统是一般包括监测器1210、计算机1220、用户输出装置1230、用户输入装置1240、通信接口1250等的计算机系统1200。图1的错误校正系统100实现了计算机系统1200的组件中的一些或全部。
如图12所示,计算机1220可以包括经由总线子系统1290与一些外围装置通信的处理器1260。这些外围装置可以包括用户输出装置1230、用户输入装置1240、通信接口1250和诸如随机存取存储器(RAM)1270和磁盘驱动器1280的存储子系统。
用户输入装置1240包括用于将信息输入到计算机1220的所有可能类型的装置和机构。这些可以包括键盘、小键盘、并入到显示器中的触摸屏、诸如语音识别系统的音频输入装置、麦克风和其它类型的输入装置。在各个实施例中,用户输入装置1240通常被实现为计算机鼠标、轨迹球、轨迹板、操纵杆、无线遥控、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置1240通常允许用户通过诸如点击按钮等的命令来选择出现在显示器1210上的对象、图标、文本等。
用户输出装置1230包括用于从计算机1220输出信息的所有可能类型的装置和机构。这些可以包括显示屏(例如,显示器1210)、诸如音频输出装置等的非视觉显示屏。
通信接口1250提供到其它通信网络和装置的接口。通信接口1250可以作为从其它系统接收数据和将数据传输到其它系统的接口。通信接口1250的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、ISDN)、(异步)数字用户线(DSL)单元、火线接口、USB接口等。例如,通信接口1250可以联接到计算机网络、火线总线等。在其它实施例中,通信接口1250可以物理地集成在计算机1220的主板上,并且可以是诸如软DSL的软件程序等。
在各个实施例中,计算机系统1200还可以包括能够通过诸如HTTP、TCP/IP、RTP/RTSP协议等的网络进行通信的软件。在本公开的可选实施例中,还可以使用其它通信软件和传输协议,例如IPX、UDP等。在一些实施例中,计算机1220包括一个或多个来自英特尔的Xeon微处理器作为处理器1260。进一步,在一个实施例中,计算机1220包括基于UNIX的操作系统。
RAM 1270和磁盘驱动器1280是被配置以存储诸如本公开的实施例的、包括可运行计算机代码、人类可读代码等的数据的有形介质的示例。其它类型的有形介质包括:软盘,可移动硬盘,诸如CD-ROM、DVD和条形码的光存储媒介,诸如闪速存储器的半导体存储器,非暂时性只读存储器(ROMS),电池供电的易失性存储器,联网的存储装置等。RAM 1270和磁盘驱动器1280可以被配置以存储提供本公开的功能的基本程序和数据结构。
提供本公开的功能的软件代码模块和指令可以存储在RAM 1270和磁盘驱动器1280中。这些软件模块可以由处理器1260运行。RAM1270和磁盘驱动器1280还可以提供用于存储根据本公开使用的数据的储存库。
RAM 1270和磁盘驱动器1280可以包括多个存储器,多个存储器包括用于在程序运行期间存储指令和数据的主随机存取存储器(RAM)和存储固定的非暂时性指令的只读存储器(ROM)。RAM 1270和磁盘驱动器1280可以包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。RAM 1270和磁盘驱动器1280还可以包括可移动存储系统,诸如可移动闪速存储器。
总线子系统1290提供一种用于让计算机1220的各个组件和子系统按预期相互通信的机制。尽管总线子系统1290被示意性地示出为单个总线,但是总线子系统的可选实施例可以利用多个总线。
图12是能够实现本公开的计算机系统的示例。对于本领域的普通技术人员而言将显而易见的是,许多其它硬件和软件配置适合与本公开一起使用。例如,计算机可以是台式机、便携式、机架式或平板电脑配置。此外,计算机可以是一系列联网的计算机。进一步,考虑使用其它微处理器,诸如PentiumTM或ItaniumTM微处理器;来自美国超威半导体公司(Advanced Micro Devices,Inc.)的OpteronTM或AthlonXPTM微处理器等。进一步,考虑其它类型的操作系统,诸如来自微软公司的等,来自美国太阳微系统公司(Sun Microsystems)的Solaris,LINUX,UNIX等。在另一实施例中,上述技术可以在芯片或辅助处理板上实现。
本公开的各个实施例可以以软件或硬件或两者的组合中的逻辑的形式来实现。该逻辑可以存储在计算机可读或机器可读的非暂时性存储介质中作为一组指令,这组指令适于指导计算机系统的处理器执行本公开的实施例中公开的一组步骤。该逻辑可以形成计算机程序产品的一部分,该计算机程序产品适于指导信息处理装置执行本公开的实施例中公开的一组步骤。基于本文中提供的公开和教导,本领域普通技术人员将领会实现本公开的其它方式和/或方法。
本文中描述的数据结构和代码可以部分或全部存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字多功能光盘或数字视频光盘)或者现在已知或以后开发的能够存储代码和/或数据的其它媒介的磁和光存储装置。本文中描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器和/或现在已知或以后开发的其它硬件模块或设备。
本文中描述的方法和过程可以被部分或全部体现为计算机可读存储介质或装置中存储的代码和/或数据,使得当计算机系统读取和运行代码和/或数据时,计算机系统执行相关联的方法和过程。这些方法和过程也可以被部分或全部实现在硬件模块或设备中,使得当硬件模块或设备被激活时,它们执行相关联的方法和过程。可以使用代码、数据和硬件模块或设备的组合来实施本文中所公开的方法和过程。
尽管为了清楚地理解的目的,已经详细地描述了前述实施例,但是本公开不限于所提供的细节。存在实施本公开的许多替代方式。所公开的实施例是说明性的而非限制性的。
Claims (20)
1.一种计算机实现的方法,所述计算机实现的方法用于从存储器读取客户端数据,所述计算机实现的方法包括:
从与可存储在存储器单元中的位的数量相关联的多个电压读取范围中选择第一电压读取范围和第二电压读取范围,其中每个电压读取范围包括多个候选电压读取电平;
接收第一组参数,所述第一组参数表示所述第一电压读取范围内的第一候选电压读取阈值的第一概率分布;
接收第二组参数,所述第二组参数表示所述第二电压读取范围内的第二候选电压读取阈值的第二概率分布;
基于目标函数的输入来生成电压读取阈值,其中所述输入包括所述第一组参数和所述第二组参数,并且其中所述电压读取阈值是所述多个候选电压读取电平之一;并且
基于所述电压读取阈值来读取所述存储器单元中存储的数据。
2.根据权利要求1所述的计算机实现的方法,其中生成所述电压读取阈值包括:
将所述目标函数确定为所述第一概率分布和所述第二概率分布之间的差值的表示;
将所述目标函数划分为一个或多个段;
生成与所述目标函数的一个或多个段中的段相对应的至少一个近似目标函数;并且
从所述至少一个近似目标函数计算所述电压读取阈值的近似值。
3.根据权利要求1所述的计算机实现的方法,其中从神经网络接收所述第一组参数和所述第二组参数。
4.根据权利要求1所述的计算机实现的方法,其中读取存储器单元中存储的数据包括:
确定所述存储器单元的电压电平;
将所述电压电平与所述电压读取阈值进行比较;并且
基于所述比较的结果来确定所述存储器单元中存储的一个或多个位的一个或多个位值,所述一个或多个位表示所述数据。
5.根据权利要求4所述的计算机实现的方法,其中所述第一电压读取范围对应于第一位值集,所述第二电压读取范围对应于第二位值集,并且其中当所述电压电平小于所述电压电平阈值时,所述一个或多个位值被确定为所述第一位值集。
6.根据权利要求1所述的计算机实现的方法,其中所述第一组参数特定于存储块的多层单元的第一层,并且其中所述第一组参数包括均值、方差和偏度;并且
所述第二组参数特定于所述存储块的多层单元的第二层,并且其中所述第二组参数包括均值、方差和偏度。
7.根据权利要求1所述的计算机实现的方法,进一步包括:
从所述多个电压读取范围中选择第三电压读取范围;
接收第三组参数,所述第三组参数表示所述第三电压读取范围内的第三候选电压读取阈值的第三概率分布;
基于所述目标函数的输入来生成不同的电压读取阈值,其中所述输入包括所述第一组参数和所述第三组参数,并且其中所述不同的电压读取阈值是所述第三候选电压读取电平之一;并且
基于所述不同的电压读取阈值来读取存储器单元中存储的额外的数据。
8.根据权利要求1所述的计算机实现的方法,其中生成所述电压读取阈值包括:基于在求解所述目标函数中使用二分法或正割法中的一种来确定所述电压读取阈值。
9.一种非暂时性计算机存储介质,所述非暂时性计算机存储介质存储指令,所述指令与从存储器读取客户端数据相关联,并且在由所述非暂时性计算机存储介质运行时,执行与从存储器读取客户端数据相关联的操作,所述操作包括:
从与可存储在存储器单元中的位的数量相关联的多个电压读取范围中选择第一电压读取范围和第二电压读取范围,其中每个电压读取范围包括多个候选电压读取电平;
接收第一组参数,所述第一组参数表示所述第一电压读取范围内的第一候选电压读取阈值的第一概率分布;
接收第二组参数,所述第二组参数表示所述第二电压读取范围内的第二候选电压读取阈值的第二概率分布;
基于目标函数的输入来生成电压读取阈值,其中所述输入包括所述第一组参数和所述第二组参数,并且其中所述电压读取阈值是所述多个候选电压读取电平之一;并且
基于所述电压读取阈值来读取所述存储器单元中存储的数据。
10.根据权利要求9所述的非暂时性计算机存储介质,其中生成所述电压读取阈值包括:
将所述目标函数确定为所述第一概率分布和所述第二概率分布之间的差值的表示;
将所述目标函数划分为一个或多个段;
生成与所述目标函数的一个或多个段中的段相对应的至少一个近似目标函数;并且
从所述至少一个近似目标函数计算所述电压读取阈值的近似值。
11.根据权利要求9所述的非暂时性计算机存储介质,其中从神经网络接收所述第一组参数和所述第二组参数。
12.根据权利要求9所述的非暂时性计算机存储介质,其中读取存储器单元中存储的数据的所述操作包括:
确定所述存储器单元的电压电平;
将所述电压电平与所述电压读取阈值进行比较;并且
基于所述比较的结果来确定所述存储器单元中存储的一个或多个位的一个或多个位值,所述一个或多个位表示所述数据。
13.根据权利要求9所述的非暂时性计算机存储介质,其中所述第一电压读取范围对应于第一位值集,所述第二电压读取范围对应于第二位值集,并且其中当所述电压电平小于所述电压电平阈值时,所述一个或多个位值被确定为所述第一位值集。
14.根据权利要求9所述的非暂时性计算机存储介质,其中所述第一组参数特定于存储块的多层单元的第一层,并且其中所述第一组参数包括均值、方差和偏度;并且
所述第二组参数特定于所述存储块的多层单元的第二层,并且其中所述第二组参数包括均值、方差和偏度。
15.根据权利要求9所述的非暂时性计算机存储介质,其中所述操作进一步包括:
从所述多个电压读取范围中选择第三电压读取范围;
接收第三组参数,所述第三组参数表示所述第三电压读取范围内的第三候选电压读取阈值的第三概率分布;
基于所述目标函数的输入来生成不同的电压读取阈值,其中所述输入包括所述第一组参数和所述第三组参数,并且其中所述不同的电压读取阈值是所述第三候选电压读取电平之一;并且
基于所述不同的电压读取阈值来读取存储器单元中存储的额外的数据。
16.一种系统,所述系统包括:
非暂时性计算机存储介质,所述非暂时性计算机存储介质存储指令,所述指令与从存储器读取客户端数据相关联,并且在由所述非暂时性计算机存储介质运行时,执行与从存储器读取客户端数据相关联的操作,所述操作包括:
从与可存储在存储器单元中的位的数量相关联的多个电压读取范围中选择第一电压读取范围和第二电压读取范围,其中每个电压读取范围包括多个候选电压读取电平;
接收第一组参数,所述第一组参数表示所述第一电压读取范围内的第一候选电压读取阈值的第一概率分布;
接收第二组参数,所述第二组参数表示所述第二电压读取范围内的第二候选电压读取阈值的第二概率分布;
基于目标函数的输入来生成电压读取阈值,其中所述输入包括所述第一组参数和所述第二组参数,并且其中所述电压读取阈值是所述多个候选电压读取电平之一;并且
基于所述电压读取阈值来读取所述存储器单元中存储的数据。
17.根据权利要求16所述的系统,其中生成电压读取阈值的所述操作包括:
将所述目标函数确定为所述第一概率分布和所述第二概率分布之间的差值的表示;
将所述目标函数划分为一个或多个段;
生成与所述目标函数的一个或多个段中的段相对应的至少一个近似目标函数;并且
从所述至少一个近似目标函数计算所述电压读取阈值的近似值。
18.根据权利要求16所述的系统,其中从神经网络接收所述第一组参数和所述第二组参数。
19.根据权利要求16所述的系统,其中读取存储器单元中存储的数据的所述操作包括:
确定所述存储器单元的电压电平;
将所述电压电平与所述电压读取阈值进行比较;并且
基于所述比较的结果来确定所述存储器单元中存储的一个或多个位的一个或多个位值,所述一个或多个位表示所述数据。
20.根据权利要求16所述的系统,其中所述第一电压读取范围对应于第一位值集,所述第二电压读取范围对应于第二位值集,并且其中当所述电压电平小于所述电压读取阈值时,所述一个或多个位值被确定为所述第一位值集。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/011,983 US11355204B2 (en) | 2020-09-03 | 2020-09-03 | Efficient read-threshold calculation method for parametric PV-level modeling |
US17/011,983 | 2020-09-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114141300A true CN114141300A (zh) | 2022-03-04 |
Family
ID=80358882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111031143.5A Pending CN114141300A (zh) | 2020-09-03 | 2021-09-03 | 用于参数化pv电平建模的高效读取阈值计算方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11355204B2 (zh) |
CN (1) | CN114141300A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907571B2 (en) | 2020-07-13 | 2024-02-20 | SK Hynix Inc. | Read threshold optimization systems and methods using domain transformation |
US11626168B2 (en) * | 2021-03-10 | 2023-04-11 | Samsung Electronics Co.. Ltd. | De-noising using multiple threshold-expert machine learning models |
US11769556B2 (en) | 2021-07-27 | 2023-09-26 | SK Hynix Inc. | Systems and methods for modeless read threshold voltage estimation |
US11854629B2 (en) | 2021-11-22 | 2023-12-26 | SK Hynix Inc. | System and method for non-parametric optimal read threshold estimation using deep neural network |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
KR101486980B1 (ko) * | 2008-10-27 | 2015-01-30 | 삼성전자주식회사 | 불휘발성 메모리의 문턱 전압 산포의 분석 방법 |
US8392809B1 (en) * | 2009-10-16 | 2013-03-05 | Marvell International Ltd. | Log-likelihood-ratio (LLR) table calibration |
JP2011216837A (ja) | 2010-03-17 | 2011-10-27 | Toshiba Corp | 半導体記憶装置 |
US8531888B2 (en) | 2010-07-07 | 2013-09-10 | Marvell World Trade Ltd. | Determining optimal reference voltages for progressive reads in flash memory systems |
US8693258B2 (en) | 2011-03-17 | 2014-04-08 | Densbits Technologies Ltd. | Obtaining soft information using a hard interface |
US8990665B1 (en) | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US8913437B2 (en) * | 2011-12-15 | 2014-12-16 | Marvell World Trade Ltd. | Inter-cell interference cancellation |
US8937838B2 (en) | 2012-01-10 | 2015-01-20 | Sk Hynix Memory Solutions Inc. | Finding optimal read thresholds and related voltages for solid state memory |
US8605502B1 (en) | 2012-05-22 | 2013-12-10 | Sandisk Technologies Inc. | Systems and methods of updating read voltages |
US9069659B1 (en) | 2013-01-03 | 2015-06-30 | Densbits Technologies Ltd. | Read threshold determination using reference read threshold |
KR102050475B1 (ko) * | 2013-01-14 | 2020-01-08 | 삼성전자주식회사 | 플래시 메모리, 플래시 메모리 장치 및 이의 동작 방법 |
US9542258B1 (en) | 2013-03-15 | 2017-01-10 | Western Digital Technologies, Inc. | System and method for error-minimizing voltage threshold selection |
US9728263B2 (en) | 2013-05-31 | 2017-08-08 | Sandisk Technologies Llc | Method and device for iteratively updating read voltages |
US10276247B2 (en) * | 2013-12-20 | 2019-04-30 | Seagate Technology Llc | Read retry operations with estimation of written data based on syndrome weights |
US9589673B1 (en) | 2014-03-20 | 2017-03-07 | SK Hynix Inc. | Estimation of an optimal read threshold using symmetry |
US10290358B2 (en) * | 2016-07-08 | 2019-05-14 | Seagate Technology Llc | Independent read threshold voltage tracking for multiple dependent read threshold voltages using syndrome weights |
KR102656190B1 (ko) | 2016-11-24 | 2024-04-11 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법 |
US9905289B1 (en) | 2017-04-28 | 2018-02-27 | EMC IP Holding Company LLC | Method and system for systematic read retry flow in solid state memory |
US10289341B2 (en) | 2017-06-30 | 2019-05-14 | Western Digital Technologies, Inc. | Operating parameter offsets in solid state memory devices |
CN109284827A (zh) | 2017-07-19 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 神经网络计算方法、设备、处理器及计算机可读存储介质 |
US10236067B2 (en) | 2017-08-02 | 2019-03-19 | International Business Machines Corporation | State-dependent read voltage threshold adaptation for nonvolatile memory |
US10877827B2 (en) | 2017-09-15 | 2020-12-29 | Pure Storage, Inc. | Read voltage optimization |
KR102395196B1 (ko) | 2017-10-17 | 2022-05-06 | 삼성전자주식회사 | 파라미터 교정 기능을 갖는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
JP6794336B2 (ja) | 2017-11-17 | 2020-12-02 | 株式会社東芝 | ニューラルネットワーク装置 |
JP2019160355A (ja) | 2018-03-07 | 2019-09-19 | 東芝メモリ株式会社 | メモリシステム、読み出し方法、プログラムおよびメモリコントローラ |
US10699791B2 (en) | 2018-08-24 | 2020-06-30 | International Business Machines Corporation | Adaptive read voltage threshold calibration in non-volatile memory |
US10726934B2 (en) | 2018-09-04 | 2020-07-28 | Micron Technology, Inc. | Memory characterization and sub-system modification |
US11610116B2 (en) | 2018-12-31 | 2023-03-21 | SK Hynix Inc. | Storage device performance optimization using deep learning |
US11163483B2 (en) | 2018-12-31 | 2021-11-02 | SK Hynix Inc. | Robust detection techniques for updating read voltages of memory devices |
US10861561B2 (en) | 2019-01-22 | 2020-12-08 | Samsung Electronics Co., Ltd. | Threshold estimation in NAND flash devices |
KR20200099441A (ko) | 2019-02-14 | 2020-08-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
JP2020155180A (ja) | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | メモリ読み出し方法及びメモリシステム並びにコンピュータ・プログラム |
JP2021044043A (ja) | 2019-09-13 | 2021-03-18 | キオクシア株式会社 | メモリシステム |
US11393535B2 (en) | 2020-02-26 | 2022-07-19 | Silicon Storage Technology, Inc. | Ultra-precise tuning of analog neural memory cells in a deep learning artificial neural network |
US11393534B2 (en) | 2020-05-28 | 2022-07-19 | Micron Technology, Inc. | Adjustment of a starting voltage corresponding to a program operation in a memory sub-system |
-
2020
- 2020-09-03 US US17/011,983 patent/US11355204B2/en active Active
-
2021
- 2021-09-03 CN CN202111031143.5A patent/CN114141300A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11355204B2 (en) | 2022-06-07 |
US20220068401A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10861562B1 (en) | Deep learning based regression framework for read thresholds in a NAND flash memory | |
CN108933602B (zh) | 用于低密度奇偶校验解码的深度学习 | |
CN114141300A (zh) | 用于参数化pv电平建模的高效读取阈值计算方法 | |
US11515897B2 (en) | Data storage device | |
CN108933605B (zh) | 低密度奇偶校验(ldpc)解码的提前终止 | |
US11996865B2 (en) | Data storage device | |
US9866241B2 (en) | Techniques for adaptive LDPC decoding | |
US11108407B1 (en) | Performance of a bit flipping (BF) decoder of an error correction system | |
CN109560818B (zh) | 用于ldpc码的改进的最小和解码 | |
CN109873645B (zh) | 用于多个字线失败的软芯片猎杀恢复 | |
CN110797074A (zh) | 用于nand闪速存储装置的动态邻区和位线辅助校正 | |
US11381253B1 (en) | Decoding codeword based on higher order information | |
CN109873646B (zh) | 使用级联码的软芯片猎杀恢复 | |
US10157097B2 (en) | Redundant bytes utilization in error correction code | |
US11411582B1 (en) | Machine-learning based LLR generation without assist-read for early-stage soft decoding | |
US9236886B1 (en) | Universal and reconfigurable QC-LDPC encoder | |
CN110797075A (zh) | 具有可重新配置的邻区辅助llr校正的nand闪速存储器 | |
Lou et al. | Embedding error correction into crossbars for reliable matrix vector multiplication using emerging devices | |
US20150113354A1 (en) | Generating soft decoding information for flash memory error correction using hard decision patterns | |
CN114201335A (zh) | 基于质量的动态调度ldpc解码器 | |
CN112133359B (zh) | Nand闪存的错误特性估计 | |
CN113496754A (zh) | 电子装置 | |
US11025283B1 (en) | Decoding latency and throughput of a multi-decoder error correction system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |