CN107861835B - 一种提升闪存编码率的方法及闪存 - Google Patents
一种提升闪存编码率的方法及闪存 Download PDFInfo
- Publication number
- CN107861835B CN107861835B CN201711172010.3A CN201711172010A CN107861835B CN 107861835 B CN107861835 B CN 107861835B CN 201711172010 A CN201711172010 A CN 201711172010A CN 107861835 B CN107861835 B CN 107861835B
- Authority
- CN
- China
- Prior art keywords
- class
- ber
- elements
- flash memory
- classes
- 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
Links
Images
Classifications
-
- 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
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明公开了一种提升闪存编码率的方法及闪存,其特征在于抽取同批次或性能相近的闪存进行耐久度试验,统计获得该闪存每个页的BER的数据分布数据,根据BER将页划分为K类,K〉2,将各个类的最大BER值分别作为各个类的典型BER值,根据典型BER值获得各个类的页校验数据大小推荐值。通过利用机器学习算法对所有页的BER值进行分类,为每一类页制定一个BER值,期望总体上降低闪存的BER值,即总体提升闪存的编码率。同时K均值聚类算法可以灵活选择K(类别数)值,固态硬盘的固件只需要记录K个类的典型BER值或者校验数据大小即可,几乎不占用RAM空间。
Description
技术领域
本发明涉及固态硬盘控制技术,特别涉及一种提升闪存编码率的方法及闪存。
背景技术
典型的NAND由多个块Block组成,每个Block又由多个页Page组成。Die是该NANDFLASH可支持的独立并发操作的单元;块Block可独立擦除的单元,其内各个物理位置的数据写入后在下一次写之前必须要将整个Block擦除,才可写入新的数据;页Page是读写的单元,也就是向FLASH中写入或读出数据必须以页为操作单位进行。
闪存(NAND)上的数据会有出错的可能,即读出来的数据与写入的数据不一致,所以我们需要在用户数据之外再生成一些校验数据,数据出错时用它来纠正错误;一个页的编码率=用户数据大小/(用户数据大小+校验数据大小)。
校验数据所占的额外闪存空间与该页在生命周期内出现的误码率(BitErrorRate:BER)相关,BER越大校验数据越大,反之越小。
闪存在出厂前厂商为该批次闪存做耐久度实验,测出每个页的BER值和校验数据的大小,选取最大的BER值作为该批次的典型BER值,将对应的检验数据大小告诉客户,建议客户写一个页数据时同时生成这么大的校验数据,图1是惯常闪存数据与有效数据的大小示例,从图中可以看出,其实每个页的BER和校验数据大小是不一样的,理论来讲为每个页制定自己的校验数据才是最合理的,但是闪存的一个DIE就包含了几百万的页,如果记录所有页的校验数据大小的信息,那么需要一大块额外的RAM空间。所以厂商直接给出最大的BER值和对应的校验数据大小,所有的页都用该典型值,这么做的缺点是这一批闪存的总体BER和校验数据被放大了,编码率变小了。
发明内容
针对以上缺陷,本发明目的是如何提升闪存的编码率,达到提闪存的利用率。
为了解决以上问题本发明提出了一种提升闪存编码率的方法,其特征在于抽取同批次或性能相近的闪存进行耐久度试验,统计获得该闪存每个页的BER的数据分布数据,根据BER将页划分为K类,K〉2为每个类选定一个中心值,将各个类的中心值分别作为各个类的典型BER值,根据典型BER值获得各个类的页校验数据大小推荐值。
所述的提升闪存编码率的方法,其特征在于闪存中同属于一个类的页选择该页所属的类的推荐的页校验数据大小为校验数据大小。
所述的提升闪存编码率的方法,其特征在于类的划分采用K均值聚类方法聚类获得。
所述的提升闪存编码率的方法,其特征在于各个类的中的元素到各个类的中心值的相异度最低;所述相异度为两个元素差值的绝对值。
所述的提升闪存编码率的方法,其特征在于用K均值聚类方法聚类的具体步骤如下:
步骤1:将所有页的BER值组成数据集合D;
步骤2:从D中随机选取k个元素,作为k个类的各自的中心,分别记录为:Z_1、Z_2......Z_k;
步骤3:分别计算剩下的元素到k个类中心的相异度,将这些元素分别划归到相异度最低的类中,具体为分别计算每个元素到k个中心的相异度,将元素归属到相异度最小的k类中;
步骤4:根据聚类结果,进一步计算k个类各自的新中心,计算方法是该类中其他元素到新中心的最大相异度要最小;
步骤5:按照新的k个中心重新聚类,即重复步骤3和4,直到聚类结果不再变化。
一种闪存,其特征在于所述闪存上预先写入了所述闪存的类分类和各个类推荐使用的页校验数据大小信息和典型BER值信息。
所述的闪存,其特征在于通过抽取同批次或性能相近的闪存进行耐久度试验,统计获得该闪存每个页的BER的数据分布数据,根据BER将页划分为K类,K〉2为每个类选定一个中心值,将各个类的中心值分别作为各个类的典型BER值,根据典型BER值获得各个类的页校验数据大小推荐值。
所述的闪存,其特征在于闪存中同属于一个类的页选择该页所属的类的推荐的页校验数据大小为校验数据大小。
所述的闪存,其特征在于类的划分采用K均值聚类方法聚类获得。
所述的闪存,其特征在于各个类的中的元素到各个类的中心值的相异度最低;所述相异度为两个元素差值的绝对值。
本发明的有益效果是:通过利用机器学习算法对所有页的BER值进行分类,为每一类页制定一个BER值,期望总体上降低闪存的BER值,即总体提升闪存的编码率。同时K均值聚类算法可以灵活选择K(类别数)值,固态硬盘的固件只需要记录K个类的典型BER值或者校验数据大小即可,几乎不占用RAM空间。
附图说明
图1是惯常闪存数据与有效数据的大小示例;
图2各个页的BER分布示意图;
图3是K均值聚类的结果示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
厂商之所以选取最大的BER值作为该批次闪存的典型BER值,是因为页的数量太多,记录每个页的BER代价太大。
首先说明如何实验获得出页的BER,BER的值主要与闪存工作温度、块的擦除次数(PECycle)以及数据保持(Rentention)时间相关。以下列举一个获得每个页的BER的示例:
第一步:一般消费级MLC闪存的工作温度为0~70摄氏度,我们的整个实验选择放置于70摄氏度的温箱中进行。
第二步:将一个Die中所有块擦除到允许的最大值,一般MLC的擦除次数为3000次,即全Die写满数据后全Die擦除,循环3000次。
第三步:将实验数据写入整个Die,然后数据保持一天,这里的数据保持指的是让闪存保持在掉电状态。
第四步:读出整个Die的数据,与实验数据(已知的)作对比,计算出每个页的比特翻转数目,然后计算并保存每个页的BER值。
利用机器学习算法中的K均值聚类算法把所有页的BER值分为K类,该算法特性保证会将BER值接近的页分为一类,算法相关定义与细节如下:将所有页的BER值组成数据集合D,D中每两个元素间差值的绝对值定义为这两个元素的相异度,算法步骤如下:
1.从D中随机选取k个元素,作为k个类的各自的中心,假设k个类的中心分别为:Z_1,Z_2……Z_k。
2.分别计算剩下的元素到k个类中心的相异度,将这些元素分别划归到相异度最低的类中,举例说明如何确定某元素A归属哪个类:分别计算A与k个中心的相异度为L_1,L_2……L_k,假设其中最小的相异度为L_n(1<=n<=k),那么元素A应当划归到Z_n类中。。
3.根据聚类结果,重新计算k个类各自的新中心,计算方法是该类中其他元素到新中心的最大相异度要最小。现举例说明如何计算该类的新中心的:Z_n类中所有元素为A,B,Z_n,1.假定A为新中心,计算元素B、Z_n到A的相异度L_a1、L_a2,且L_a1较大;2.再假定B为新中心,同理计算元素A、Z_n到B的较大相异度L_b3;3.假定Z_n为新中心,同理计算A、B到Z_n的较大相异度L_z5。计算L_a1、L_b3、L_z5中最小值,如果L_b3最小,那么元素B就是心中。
4.按照新的k个中心重新聚类,即重复步骤2和3。直到聚类结果不再变化。
5.输出聚类结果。
举例来说,假设一个Die有13个页,它们的BER值分布如图2各个页的BER分布示意图;具体的BER值见表1,我们利用K均值算法将这些页分为3类(K=3),随机选取p0,p1,p2作为3个类的起始中心,根据K均值算法的聚类步骤:
第一步:计算剩下的元素到3个类中心的相异度,数据详见表2,单位为0.0001,将这些元素分别划归到相异度最低的类中,p0,p3,p7,p10,p11为一类;p1,p4,p5,p8为一类;p2,p6,p9,p12为一类。
第二步:根据第一步的聚类结果,重新计算3个类各自的新中心,计算方法是该类中其他元素到新中心的最大相异度要最小,例如类p2,p6,p9,p12中,它们的BER值为分别为13,12,12,11.5,单位为0.0001,若以p2为新中心,则其他元素到p2的最大相异度为1.5;若以p6为新中心,则其他元素到p6的最大相异度为1;若以p9为新中心,则其他元素到p9的最大相异度为1;若以p12为新中心,则其他元素到p12的最大相异度为1.5,所以新中心为p6。类外2类用相同的方法重新计算出新中心。
第三步:按照第二步计算出的新中心,重复第一步和第二步,直到聚类结果不再变化。
表1:
页号 | BER值 | 页号 | BER值 |
Page0 | 10*0.0001 | Page6 | 12*0.0001 |
Page1 | 7*0.0001 | Page7 | 9*0.0001 |
Page2 | 13*0.0001 | Page8 | 5*0.0001 |
Page3 | 10*0.0001 | Page9 | 12*0.0001 |
Page4 | 4*0.0001 | Page10 | 9*0.0001 |
Page5 | 8*0.0001 | Page11 | 11*0.0001 |
Page12 | 11.5*0.0001 |
表2
图3是K均值聚类的结果示意图,即p2,p6,p9,p12分为第1类且将p2的BER值作为该类的典型BER值;p0,p3,p7,p10,p11分为第2类且将p11的BER值作为该类的典型BER值;p1,p4,p5,p8分为第3类且将p1的BER值作为该类的典型BER值。显然2类的典型BER值小于1类的典型BER值,所以2类的编码率高于1类,同理3类的编码率高于2类。比起现有技术直接将p2的BER值作为所有页的BER值,总体提升了编码率。
而且K均值聚类算法可以灵活选择K(类别数)值,固态硬盘的固件只需要记录K个类的典型BER值或者校验数据大小即可,几乎不占用RAM空间。
以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。
Claims (2)
1.一种提升闪存编码率的方法,其特征在于抽取同批次或性能相近的闪存进行耐久度试验,统计获得该闪存每个页的BER的数据分布数据,根据BER将页划分为K类,K〉2,各个类的中的元素到各个类的中心的相异度最低;所述相异度为两个元素差值的绝对值;将各个类的最大BER值分别作为各个类的典型BER值,根据典型BER值获得各个类的页校验数据大小推荐值;闪存中同属于一个类的页选择该页所属的类的推荐的页校验数据大小为校验数据大小;类的划分采用K均值聚类方法聚类获得;K均值聚类方法聚类的具体步骤如下:
步骤1:将所有页的BER值组成数据集合D;
步骤2:从D中随机选取k个元素,作为k个类的各自的中心,分别记录为:Z_1、Z_2......Z_k;
步骤3:分别计算剩下的元素到k个类中心的相异度,将这些元素分别划归到相异度最低的类中,具体为分别计算每个元素到k个中心的相异度,将元素归属到相异度最小的k类中;
步骤4:根据聚类结果,进一步计算k个类各自的新中心,计算方法是该类中其他元素到新中心的最大相异度要最小;
步骤5:按照新的k个中心重新聚类,即重复步骤3和4,直到聚类结果不再变化。
2.一种闪存,其特征在于所述闪存上预先写入了所述闪存的类分类和各个类推荐使用的页校验数据大小信息和典型BER值信息;通过抽取同批次或性能相近的闪存进行耐久度试验,统计获得该闪存每个页的BER的数据分布数据,根据BER将页划分为K类,K〉2,各个类的中的元素到各个类的中心值的相异度最低;所述相异度为两个元素差值的绝对值;将各个类的最大BER值分别作为各个类的典型BER值,根据典型BER值获得各个类的页校验数据大小推荐值;闪存中同属于一个类的页选择该页所属的类的推荐的页校验数据大小为校验数据大小;类的划分采用K均值聚类方法聚类获得;K均值聚类方法聚类的具体步骤如下:
步骤1:将所有页的BER值组成数据集合D;
步骤2:从D中随机选取k个元素,作为k个类的各自的中心,分别记录为:Z_1、Z_2......Z_k;
步骤3:分别计算剩下的元素到k个类中心的相异度,将这些元素分别划归到相异度最低的类中,具体为分别计算每个元素到k个中心的相异度,将元素归属到相异度最小的k类中;
步骤4:根据聚类结果,进一步计算k个类各自的新中心,计算方法是该类中其他元素到新中心的最大相异度要最小;
步骤5:按照新的k个中心重新聚类,即重复步骤3和4,直到聚类结果不再变化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711172010.3A CN107861835B (zh) | 2017-11-22 | 2017-11-22 | 一种提升闪存编码率的方法及闪存 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711172010.3A CN107861835B (zh) | 2017-11-22 | 2017-11-22 | 一种提升闪存编码率的方法及闪存 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107861835A CN107861835A (zh) | 2018-03-30 |
CN107861835B true CN107861835B (zh) | 2021-11-16 |
Family
ID=61702265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711172010.3A Active CN107861835B (zh) | 2017-11-22 | 2017-11-22 | 一种提升闪存编码率的方法及闪存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107861835B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108022624A (zh) * | 2017-11-22 | 2018-05-11 | 深圳忆联信息系统有限公司 | 一种提升tlc闪存编码率的方法及tlc闪存 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693760A (zh) * | 2011-03-24 | 2012-09-26 | 扬智科技股份有限公司 | Nand快闪存储器的错误校正方法 |
CN104517649A (zh) * | 2013-09-12 | 2015-04-15 | 希捷科技有限公司 | 具有可变码率的存储设备 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
-
2017
- 2017-11-22 CN CN201711172010.3A patent/CN107861835B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693760A (zh) * | 2011-03-24 | 2012-09-26 | 扬智科技股份有限公司 | Nand快闪存储器的错误校正方法 |
CN104517649A (zh) * | 2013-09-12 | 2015-04-15 | 希捷科技有限公司 | 具有可变码率的存储设备 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
Non-Patent Citations (1)
Title |
---|
聚类算法中的优化方法应用;陈新泉;《聚类算法中的优化方法应用》;20140731;参见第12-14页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107861835A (zh) | 2018-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10771091B2 (en) | Flash memory apparatus and storage management method for flash memory | |
CN105593943B (zh) | 具有动态擦除块组合机制的数据贮存系统及其操作方法 | |
US9292432B2 (en) | Garbage collection method for flash memory | |
US10871910B1 (en) | Non-volatile memory with selective interleaved coding based on block reliability | |
KR101508890B1 (ko) | 메모리 내구성을 위한 동작 방법 및 장치 | |
US11210005B2 (en) | Unbalanced plane management method, associated data storage device and controller thereof | |
US20100228907A1 (en) | Method of evenly using a plurality of blocks of a flash memory, and associated memory device and controller thereof | |
US10949119B2 (en) | Data shaping to reduce error rates in solid state memory devices | |
CN107731258A (zh) | 具有读取阈值估计的存储器系统及其操作方法 | |
CN103530198B (zh) | 数据储存装置与闪存操作方法 | |
US10482978B2 (en) | Read voltage optimization method, memory storage device and memory control circuit unit | |
TWI656442B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
CN112486415B (zh) | 存储装置的垃圾回收方法及装置 | |
CN111192620A (zh) | 一种SSD中优化NAND Flash读参考电压的方法 | |
CN107861835B (zh) | 一种提升闪存编码率的方法及闪存 | |
US9697892B1 (en) | Generation and application of gray codes | |
US20190347037A1 (en) | Data storage apparatus and system information programming method therefor | |
US20240154624A1 (en) | Flash memory apparatus and storage management method for flash memory | |
CN109669641B (zh) | 降低ssd误码率的数据存放方法及装置 | |
CN115237351B (zh) | Nand块动态重映射、读写命令处理方法及存储设备 | |
CN113254257B (zh) | 数据存储媒体的损坏数据列的筛选方法 | |
CN110289036B (zh) | 读取电压最佳化方法以及存储控制器 | |
CN113986140B (zh) | 一种高传输率大容量云存储固态硬盘 | |
CN108022624A (zh) | 一种提升tlc闪存编码率的方法及tlc闪存 | |
CN102236584A (zh) | 用来抑制数据错误的方法以及相关的记忆装置及其控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |