CN112558883B - 一种数据存储管理方法、固态硬盘控制器及固态硬盘 - Google Patents
一种数据存储管理方法、固态硬盘控制器及固态硬盘 Download PDFInfo
- Publication number
- CN112558883B CN112558883B CN202011539967.9A CN202011539967A CN112558883B CN 112558883 B CN112558883 B CN 112558883B CN 202011539967 A CN202011539967 A CN 202011539967A CN 112558883 B CN112558883 B CN 112558883B
- Authority
- CN
- China
- Prior art keywords
- data
- scrambling
- solid state
- state disk
- module
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 77
- 239000007787 solid Substances 0.000 title claims abstract description 72
- 238000013500 data storage Methods 0.000 title claims abstract description 45
- 238000009826 distribution Methods 0.000 claims abstract description 94
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000007781 pre-processing Methods 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 claims description 91
- 238000003860 storage Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 30
- 238000004891 communication Methods 0.000 claims description 7
- 230000014759 maintenance of location Effects 0.000 abstract description 17
- 238000010586 diagram Methods 0.000 description 32
- 239000000872 buffer Substances 0.000 description 29
- 238000012937 correction Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 9
- 239000002245 particle Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000012212 insulator Substances 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- AIMMVWOEOZMVMS-UHFFFAOYSA-N cyclopropanecarboxamide Chemical compound NC(=O)C1CC1 AIMMVWOEOZMVMS-UHFFFAOYSA-N 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052814 silicon oxide Inorganic materials 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例涉及固态硬盘应用领域,公开了一种数据存储管理方法、固态硬盘控制器及固态硬盘,所述数据存储管理方法,应用于固态硬盘,所述方法包括:获取用户数据;并行对所述用户数据进行预处理,生成多个预处理后的数据;对所述多个预处理后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据。通过并行对用户数据进行预处理,并对多个预处理后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据,本发明实施例能够控制易发生泄漏所对应的电压状态内的单元数量,从而能够减少滞留错误,提高固态硬盘的使用寿命。
Description
技术领域
本发明涉及固态硬盘应用领域,特别是涉及一种数据存储管理方法、固态硬盘控制器及固态硬盘。
背景技术
固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制模块和存储模块(FLASH存储芯片或DRAM存储芯片)。目前固态硬盘系统中有相当部分是存在动态随机存取存储器(Dynamic Random Access Memory,DRAM)的,所以SSD有较大的数据缓存空间用来缓存数据。
闪存(NAND Flash)是固态硬盘的主要存储介质。闪存目前已发展到3D TLC,其IO接口速度发展到1600MT;其发展也带来一些问题,如原始错误比特率(UBER)越来越高,其主要原因是存储电子的Cell泄漏电子导致数据滞留(DataRetention,数据保存/滞留)发生错误。
数据滞留错误(Data Retention Error)跟滞留时间(Retention)和擦写次数关系密切。Retention时间越长,闪存(NAND Flash)的泄漏的电子会越多,使Cell的电压状态分布发生偏移,Cell电压状态之间的重合过大,即使阈值电压处于最佳位置,误码率仍然升高。
应对数据滞留错误,现有技术基本思路就是在原始错误比特率(UBER)累加到超出ECC纠错能力之前,周期性的读取数据,纠错之后再重新写入,即通过数据搬移来消除潜在的数据滞留错误。这种技术带来显著的问题是额外增加了擦除次数(数据搬移带来写入次数增加),隐性地减少了闪存的使用寿命(或者说SSD的寿命)。
基于此,现有技术亟待改进。
发明内容
本发明实施例旨在提供一种数据存储管理方法、固态硬盘控制器及固态硬盘,其解决了现有固态硬盘通过增加擦除次数导致闪存的使用寿命减少的技术问题,延长固态硬盘的使用寿命。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种数据存储管理方法,应用于固态硬盘,所述方法包括:
获取用户数据;
并行对所述用户数据进行预处理,生成多个预处理后的数据;
对所述多个预处理后的数据进行单元电压状态分布统计,以确定存储数据。
在一些实施例中,所述并行对所述用户数据进行预处理,生成多个预处理后的数据,包括:并行对所述用户数据进行扰码,生成多个扰码后的数据,具体包括:
配置多个种子,每一种子一一对应一扰码后的数据;
确定多个扰码数据通道,通过多个所述扰码数据通道并行对所述用户数据进行扰码,以生成多个扰码后的数据,其中,每一扰码数据通道一一对应一个扰码后的数据。
在一些实施例中,所述对所述多个扰码后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据,包括:
对所述多个扰码后的数据进行单元电压状态分布统计,确定多个扰码后的数据的单元电压状态分布统计结果;
根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据。
在一些实施例中,所述基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据,包括:
获取预设的软件管理配置策略表,其中,所述软件管理配置策略表包括多个软件管理配置策略;
根据所述软件管理配置策略表,确定软件管理配置策略及其对应的扰码数据通道;
基于所述软件管理配置策略及其对应的扰码数据通道,确定所述多个扰码后的数据中的一个作为存储数据。
在一些实施例中,所述方法还包括:
根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的用户数据。
第二方面,本发明实施例提供一种固态硬盘控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,所述固态硬盘控制器包括数据通路处理模块,通信连接所述固态硬盘的至少一个闪存介质;
其中,所述数据通路处理模块,包括:
接口模块,用于获取用户数据,以及与闪存介质进行数据交换;
缓存管理模块,用于缓存数据;
数据存储管理模块,用于并行对所述用户数据进行预处理,生成多个预处理后的数据,对所述多个预处理后的数据进行单元电压状态分布统计,以确定存储数据。
在一些实施例中,所述数据存储管理模块包括:
多个扰码处理模块,每一扰码处理模块均用于对所述用户数据进行扰码,生成扰码后的数据;
多个数据分布统计模块,每一数据分布统计模块用于对与其对应的扰码后的数据进行单元电压状态分布统计,生成单元电压状态分布统计结果,其中,所述扰码处理模块与所述数据分布统计模块一一对应。
在一些实施例中,所述数据存储管理模块包括:
数据选择管理模块,用于根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略及其对应的扰码数据通道,确定所述多个扰码后的数据中的一个作为存储数据。
在一些实施例中,所述数据存储管理模块包括:
扰码种子配置管理模块,用于配置多个种子,每一种子一一对应一扰码后的数据。
在一些实施例中,所述数据存储管理模块包括:
反扰码模块,用于根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的用户数据。
第三方面,本发明实施例提供一种固态硬盘,包括:
闪存介质,用于存储闪存数据;
如上所述的固态硬盘控制器,用于执行如上所述的数据存储管理方法。
第四方面,本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使固态硬盘能够执行如上所述的数据存储管理方法。
本发明实施例的有益效果是:区别于现有技术的情况下,本发明实施例提供的一种数据存储管理方法,应用于固态硬盘,所述方法包括:获取用户数据;并行对所述用户数据进行预处理,生成多个预处理后的数据;对所述多个预处理后的数据进行单元电压状态分布统计,以确定存储数据。通过并行对用户数据进行预处理,并对多个预处理后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据,本发明实施例能够控制易发生泄漏所对应的电压状态内的单元数量,从而能够减少滞留错误,提高固态硬盘的使用寿命。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明实施例提供的一种TLC NAND Flash电压分布的示意图;
图2是本发明实施例提供的不同Page处于不同电压值的代表值的示意图;
图3是本发明实施例提供的不同Page的阈值电压分布的示意图;
图4是本发明实施例提供的发生偏移的电压分布的示意图;
图5是现有技术的数据搬移的流程示意图;
图6是本发明实施例提供的一种固态硬盘的结构示意图;
图7是本发明实施例提供的一种固态硬盘控制器的结构示意图;
图8是本发明实施例提供的一种数据通路模块的结构示意图;
图9是本发明实施例提供的另一种数据通路模块的结构示意图;
图10是本发明实施例提供的一种数据存储管理模块的结构示意图;
图11是本发明实施例提供的一种数据存储管理方法的流程示意图;
图12a是本发明实施例提供的一种理想的电压分布的示意图;
图12b是本发明实施例提供的一种偏移的电压分布的示意图;
图13是图11中的步骤S20的细化流程示意图;
图14是图11中的步骤S30的细化流程示意图;
图15是图14中的步骤S32的细化流程示意图;
图16是本发明实施例提供的一种数据写入的流程的示意图;
图17是本发明实施例提供的一种数据读出的流程的示意图;
图18是本发明实施例提供的一种数据存储管理方法的整体流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
典型的固态硬盘(Solid State Drives,SSD)通常包括固态硬盘控制器(主控制器)、闪存阵列、缓存模块以及其他外围模块。
其中,固态硬盘控制器用于作为控制运算模块,管理SSD内部系统;闪存阵列(NANDFlash),作为存储模块,用于存储数据,包括用户数据和系统数据,闪存阵列一般呈现多个通道(Channel,简写CH),一个通道独立连接一组NAND Flash,例如CH0/CH1……CHx。其中闪存(NAND Flash),其特性是写入之前,必须进行擦除,且每个闪存擦除次数有限;缓存模块,用于缓存映射表,所述缓存模块一般为动态随机存取存储器(Dynamic Random AccessMemory,DRAM)。其他外围模块可以包括传感器、寄存器等部件。
闪存(NAND Flash)是非易失性存储介质,其特点是在一个单元内可以存储电子,其存储电子的数量可以呈现为电压值,其电压值可以分为多个区域。如分为两个区域,那么就代表仅存储一个bit(此类Flash称之为SLC),如果分为4个区域,则代表存储2个bit(此类Flash称之为MLC),如果分为8个区域,则代表存储3个bit(此类Flash称之为TLC),以此类推以2的幂次方作为存储bit数量来确定分布区域数量。
当数据写入后,存储电子的数量可以呈现为电压值,而读时值的判定是依靠所在单元的电压值与参考电压(或称阈值电压)的比较来判断。
请参阅图1,图1是本发明实施例提供的一种TLC NAND Flash电压分布的示意图;
如图1所示,一种典型TLC NAND Flash,其一个单元存储3个bit,有8个电压分布区域,一般地一个单元中3个bit分布被编码分布到3个Page之中,由于,用二进制编码,那么各个Page所有单元的电压分布呈现如图1,其纵轴方向是代表某处于某电压值的单元数量。而同一区域,在不同Page上其代表的值有不同分布,比如A区域,电压分布在V1和V2之间,处于该电压范围的单元的数量呈现出一个波形。
请再参阅图2,图2是本发明实施例提供的不同Page处于不同电压值的代表值的示意图;
如图2所示,处于V1和V2之间的区域的cell,对于LSB Page而言,其二进制值为0,而对于CSB和MSB Page而言,其值代表1。这是由于颗粒厂商设定的规则,对于LSB而言,小于V1和大于V5的区域,都是设定为1值,而处于V1到V5之间,都是0值。以此类推,各个区域在不同Page上的值,如图2所示,从列来看,仍然呈现8个二进制值(000~111)。
请再参阅图3,图3是本发明实施例提供的不同Page的阈值电压分布的示意图;
如图3所示,对于不同的Page(LSB/CSB/MSB),其阈值电压的判定点分布不同。从另一个角度理解,存储的数据Pattern会决定闪存Cell的电压分布。
可以理解的是,图1所示的是一种理想的或者理论上的电压分布图,实际上,由于很多因素的影响,在完成写入后,其电压分布不可避免地会出现偏移的情况。
请再参阅图4,图4是本发明实施例提供的发生偏移的电压分布的示意图;
如图4上图所示,可见2个波形存在之间重叠部分,如ER和A之间的阴影,在阈值电压V1下,这些重叠部分的Cell,是被误判的,即其值对于读而言,是错误的bit。这些bit需要通过纠错技术来完成纠正。当纠错能力一定情况下,阈值电压的设定,应该尽量使误判的bit最小,即两个波形之间的波谷尽量低。由图4可见,如果阈值电压处于两个波形的交叉点上,那么其错误bit会误判最小。换句而言,如果状态之间的阴影面积越小,其bit误判越少,即原始错误比特率(UBER)越低。
由于更多的因素,这些分布波形会进一步地发生偏移,如图4下图所示,由于滞留时间(Retention)的影响,由于电子泄漏使Cell的电压变低,其分布呈现出整体向左,由于不同cell泄漏速度不一样,导致部分状态之间的交叉部分变大,如F和G之间的阴影面积,对应带来的误判bit增加(即使阈值电压处于两个波形的交叉点,波形之间的波谷上升了,阴影面积变大,即代表无法纠错的bit上升),从而使纠错技术来无法完成纠正。滞留时间(Retention)的影响,通过擦除重新写会消除。
应对数据滞留错误,现有技术基本思路就是在原始错误比特率(UBER)累加到超出ECC纠错能力之前,周期性的读取数据,纠错之后再重新写入,即通过数据搬移来消除潜在的数据滞留错误。这种技术带来显著的问题是额外增加了擦除次数(数据搬移带来写入次数增加),隐性地减少了闪存的使用寿命(或者说SSD的寿命)。
请参阅图5,图5是现有技术的数据搬移的流程示意图;
如图5所示,现有技术的数据搬移的流程,包括:
开始;
步骤S51:是否进行后台扫描;
步骤S52:若是,则进行读操作;
步骤S53:是否达到搬移条件;
步骤S54:若是,则进行数据搬移;
结束;
如图5所示,现有技术一般会设定进行后台数据扫描的条件(如时间周期阈值,首次上电等),如果满足条件就进行扫描,即进行读操作,如果读的数据状态达到搬移条件则进行搬移,其条件一般为UBER达到阈值,重读等级达到阈值等。
但是,现有技术的本质是通过数据搬移来消除潜在的数据滞留错误,那么其带来显著的问题是额外增加了擦除次数(数据搬移带来写入次数增加),隐性地减少了闪存的使用寿命或者说SSD的寿命,这是由于闪存的擦写次数是固定的,而且擦写次数越多,数据滞留错误也会越严重。
有鉴于此,本发明提供一种数据存储管理方法、固态硬盘控制器及固态硬盘,以延长固态硬盘的使用寿命。
下面结合说明书附图阐述本发明的技术方案。
请参阅图6,图6是本发明实施例提供的一种固态硬盘的结构示意图。
如图6所示,所述固态硬盘100包括闪存介质110以及与所述闪存介质110连接的固态硬盘控制器120。其中,所述固态硬盘100通过有线或无线的方式与所述主机200通信连接,用以实现数据交互。
闪存介质110,作为所述固态硬盘100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。
其中,闪存介质110可以为Nand FLASH,Nand FLASH以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于Nand FLASH的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合,当负电子在控制栅的作用下被注入到浮动栅中,Nand FLASH的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即Nand FLASH的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关。
一个Nand FLASH包括至少一个Chip芯片,每一个Chip芯片由若干个Block物理块组成,每一个Block物理块包括若干个Page页。其中,Block物理块是Nand FLASH执行擦除操作的最小单位,Page页为Nand FLASH执行读写操作的最小单位,一个Nand FLASH的容量等于其Block物理块的数量*一个Block物理块包含的Page页的数量*一个Page页的容量。具体的,闪存介质10按照存储单元的电压的不同层次,可分为SLC、MLC、TLC以及QLC。
固态硬盘控制器120,包括数据转换器121、处理器122、缓存器123、闪存控制器124以及接口125。
数据转换器121,分别与处理器122和闪存控制器124连接,所述数据转换器121用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当所述闪存控制器124向所述闪存介质110写入数据时,通过所述数据转换器121将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质110。当所述闪存控制器124从所述闪存介质110读取数据时,通过所述数据转换器121将闪存介质110中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,所述数据转换器121可以包括二进制数据寄存器和十六进制数据寄存器。所述二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,所述十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器122与数据转换器121、缓存器123、闪存控制器124以及接口125可以通过总线或者其他方式连接,所述处理器用于运行存储在缓存器123中的非易失性软件程序、指令以及模块,从而实现本发明任一方法实施例。
缓存器123,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。缓存器123作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存器123可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,缓存器123可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存器123可选包括相对于处理器124远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述缓存器123可以为静态随机存取存储器(StaticRandom Access Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random AccessMemory,DDR SRAM)。
闪存控制器124,与闪存介质110、数据转换器121、处理器122以及缓存器123连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机200发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责FTL(Flashtranslation layer,闪存转换层)的核心处理。
接口125,连接主机200以及数据转换器121、处理器122以及缓存器123,用于接收主机200发送的数据,或者,接收所述处理器122发送的数据,实现主机200与处理器122之间的数据传输,所述接口125可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。
请再参阅图7,图7是本发明实施例提供的一种固态硬盘控制器的结构示意图;其中,该固态硬盘控制器属于上述的固态硬盘。
如图7所示,该固态硬盘控制器,包括:PCIe接口控制器126、DDR控制器127、NVMe接口控制器128、处理器122、外设模块129、数据通路模块1210以及闪存控制器124。
具体的,所述PCIe接口控制器126,用于PCIe通信协议的控制,所述DDR控制器127,用于动态随机存储器的控制,所述NVMe接口控制器128用于NVMe通信协议的控制,所述外设模块129用于其他相关通信协议的控制,所述数据通路模块1210用于数据通路的控制,例如:写缓存的管理,所述闪存控制器124用于闪存的数据处理。
其中,该固态硬盘控制器120,还包括数据转换器121、缓存器123、接口125等。
具体的,所述数据转换器121,分别与处理器和闪存控制器连接,所述数据转换器用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当所述闪存控制器向所述闪存介质写入数据时,通过所述数据转换器将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质。当所述闪存控制器从所述闪存介质读取数据时,通过所述数据转换器将闪存介质中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,所述数据转换器可以包括二进制数据寄存器和十六进制数据寄存器。所述二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,所述十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
具体的,所述处理器122,分别与数据转换器121、缓存器123、闪存控制器124以及接口125连接,其中,处理器与数据转换器、缓存器、闪存控制器以及接口可以通过总线或者其他方式连接,所述处理器用于运行存储在缓存器中的非易失性软件程序、指令以及模块,从而实现本发明任一方法实施例。
具体的,所述缓存器,主要用于缓存主机发送的读/写指令以及根据主机发送的读/写指令从闪存介质获取的读数据或者写数据。缓存器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存器可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。此外,缓存器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存器可选包括相对于处理器远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述缓存器可以为静态随机存取存储器(Static Random AccessMemory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDR SRAM)。
具体的,所述闪存控制器,与闪存介质、数据转换器、处理器以及缓存器连接,用于访问后端的闪存介质,管理闪存介质的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责FTL(Flash translation layer,闪存转换层)的核心处理。
具体的,所述接口,连接主机以及数据转换器、处理器以及缓存器,用于接收主机发送的数据,或者,接收所述处理器发送的数据,实现主机与处理器之间的数据传输,所述接口可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。
请再参阅图8,图8是本发明实施例提供的一种数据通路模块的结构示意图;
如图8所示,该数据通路模块1210,包括:接口模块1211、缓存管理模块1212以及数据存储管理模块1213,其中,所述接口模块1211通信连接所述缓存管理模块1212以及所述数据存储管理模块1213,所述缓存管理模块1212通信连接所述数据存储管理模块1213。
具体的,所述接口模块1211,包括:处理器接口(CPU IF)、闪存接口以及NVMe接口(DMAC/NVMe IF),其中,所述处理器接口12111用于与处理器CPU进行数据交换,所述闪存接口用于与闪存进行数据交换,其中,本发明实施例中的闪存包括SLC闪存、MLC闪存以及TLC闪存,所述NVMe接口用于与NVMe硬盘进行数据交换;
请再参阅图9,图9是本发明实施例提供的另一种数据通路模块的结构示意图;
如图9所示,该数据通路模块1210包括:处理器接口12111、NVMe接口12112、缓存管理模块1212、ECC引擎1201(ECC Engine)以及闪存接口12113,其中,所述ECC引擎包括数据存储管理模块1213;
其中,所述处理器接口12111通信连接NVMe接口12112、缓存管理模块1212以及ECC引擎1201(ECC Engine),用于与处理器进行数据交换;
其中,所述NVMe接口12112通信连接所述处理器接口12111、缓存管理模块1212以及闪存接口12113,用于与NVMe硬盘进行数据交换;
其中,所述缓存管理模块1212通信连接所述处理器接口12111、数据存储管理模块1213以及闪存接口12113,用于缓存数据,具体的,所述缓存管理模块1212包括高速缓存器,例如:SRAM,用于作为Buffer缓存数据,所述缓存管理模块1212还包括逻辑电路,用于管理Buffer;
其中,所述数据存储管理模块通信连接所述缓存管理模块,用于进行数据扰码管理,具体的,用于并行对所述用户数据进行扰码,生成多个扰码后的数据,对所述多个扰码后的数据进行单元电压状态分布统计,以确定存储数据;
其中,所述ECC引擎1201(ECC Engine)通信连接所述处理器接口12111、缓存管理模块1212以及闪存接口12113,用于进行数据扰码管理的相关操作以及ECC校验;
其中,所述闪存接口12113通信连接所述NVMe接口12112、缓存管理模块1212以及ECC引擎1201(ECC Engine),用于与闪存进行数据交换;
请再参阅图10,图10是本发明实施例提供的一种数据存储管理模块的结构示意图;
如图10所示,该数据存储管理模块1213,包括:扰码种子配置管理模块12131、多个扰码处理模块12132、多个数据分布统计模块12133、数据选择管理模块12134以及反扰码模块12135,其中,每一扰码处理模块12132与其对应的数据分布统计模块12133构成一扰码数据通道。
具体的,所述扰码种子配置管理模块12131,用于配置多个种子,每一种子一一对应一扰码后的数据。其中,所述扰码种子配置管理模块12131包括N组寄存器组,从而实现多种Seed配置管理,以使得同一用户数据可以在不同扰码通道上产生不同的扰码数据;
具体的,所述扰码处理模块12132,连接所述扰码种子配置管理模块12131,用于接收扰码种子配置管理模块12131发送的扰码种子(Seed),以基于所述扰码种子(Seed)对用户数据完成数据扰码,生成扰码后的数据,其中,每一扰码处理模块12132一一对应所述扰码种子配置管理模块12131中的一组寄存器组,以接收对应的寄存器组发送的扰码种子(Seed),在本发明实施例中,多个所述扰码处理模块12132并行对所述用户数据进行扰码处理,以生成多个扰码后的数据,其中,所述扰码处理模块12132包括扰码器。
具体的,所述数据分布统计模块12133,连接所述扰码处理模块12132,用于对与其对应的扰码后的数据进行单元电压状态分布统计,生成单元电压状态分布统计结果,其中,所述扰码处理模块12132与所述数据分布统计模块12133一一对应,所述数据分布统计模块12133用于对与其对应的扰码处理模块12132发送的扰码后的数据进行单元电压状态分布统计,例如:统计每一电压状态的单元数量,比如:ER、A-G的状态下Cell的数量。在本发明实施例中,所述数据分布统计模块12133包括数据分布统计器。
具体的,所述数据选择管理模块12134,连接每一数据分布统计模块12133,用于接收每一数据分布统计模块12133发送的单元电压状态分布统计结果,并根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略及其对应的扰码数据通道,确定所述多个扰码后的数据中的一个作为存储数据。例如:根据需求(一般是通过配置选择,根据不同闪存颗粒特性,比如有些颗粒G态在Retention最容易发生电子泄漏,那么使G态最少),对并行N种扰码后的分布结果进行对比,选择符合要求的一种。
具体的,所述反扰码模块12135,连接每一扰码数据通道,即连接每一扰码处理模块12132以及每一数据分布统计模块12133,用于根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的用户数据。可以理解的是,所述反扰码模块12135用于完成数据反扰码,反扰码模块无需N个并行,原因在于在读取过程中,是一种确定数据模式Pattern,只要用写入时对应的种子配置(Seed配置),即可完成反扰码恢复用户数据。在本发明实施例中,所述反扰码模块12135包括至少一个反扰码器。
在本发明实施例中,通过提供一种固态硬盘控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,所述固态硬盘控制器包括数据通路处理模块,通信连接所述固态硬盘的至少一个闪存介质;其中,所述数据通路处理模块,包括:接口模块,用于获取用户数据,以及与闪存介质进行数据交换;缓存管理模块,用于缓存数据;数据存储管理模块,用于并行对所述用户数据进行预处理,生成多个预处理后的数据,对所述多个预处理后的数据进行单元电压状态分布统计,以确定存储数据。通过控制写入到闪存的数据Pattern,来减少易发生错误的电压范围内的Cell数量,从而减少发生滞留错误。通过并行对用户数据进行扰码,并对多个扰码后的数据进行单元电压状态分布统计,以确定存储数据,可以减少原始错误比特率(UBER)的发生,从源头减少发生数据滞留错误,可以增加固态硬盘的数据Retention时间,这样相对于现有处理Retention问题,可以明显减少擦除次数,从而有效延长闪存的使用寿命。
请再参阅图11,图11是本发明实施例提供的一种数据存储管理方法的流程示意图;
如图11所示,该数据存储管理方法,应用于上述实施例中的固态硬盘控制器,所述方法包括:
步骤S10:获取用户数据;
请一并参阅图12a和图12b,图12a是本发明实施例提供的一种理想的电压分布的示意图;图12b是本发明实施例提供的一种偏移的电压分布的示意图;
如图12a和图12b所示,电压处于G状态的单元Cell属于容易泄漏电子,故而容易左偏,如果在写入的时候,减少处于G状态的Cell,那么即使处于G状态的cell左偏且偏移较大,相对来说,F状态和G状态之间的阴影面积也会相对变小,从而减少误判的情况。
其中,扰码技术在闪存产品应用,当进行扰码之后,用户数据分布发生变化,基于此点特性,本发明通过引入多个扰码器并行进行不同Seed的扰码,由于扰码的数据是不同的,因此其在闪存的存储的Cell电压分布也是不同的,从而对扰码后的数据进行Cell电压分布进行计算统计,选择符合需求的一种数据作为存储数据。比如需求G状态的Cell数要少,那么对多个扰码的数据,进行对比,选择处于G状态最少的数据作为存储数据。可以理解的是,本发明中的需求可以有多种方式,从而存储数据的选择方式也可以有多种方式,并不限定于只是对G状态的Cell数量要少。
步骤S20:并行对所述用户数据进行预处理,生成多个预处理后的数据;
其中,所述预处理包括数据扰码、数据清理、数据集成、数据变换、数据归约等多种操作,本发明实施例中以所述预处理为数据扰码进行举例说明,具体的,所述并行对所述用户数据进行预处理,生成多个预处理后的数据,包括:并行对所述用户数据进行扰码,生成多个扰码后的数据。
具体的,请再参阅图13,图13是图11中的步骤S20的细化流程示意图;
如图13所示,该步骤S20:并行对所述用户数据进行扰码,生成多个扰码后的数据,包括:
步骤S21:配置多个种子,每一种子一一对应一扰码后的数据;
具体的,所述固态硬盘控制器包括数据存储管理模块,所述数据存储管理模块包括扰码种子配置管理模块,用于配置多个种子,每一种子一一对应一扰码后的数据。其中,所述扰码种子配置管理模块包括多组寄存器组,通过多组寄存器组生成多个扰码种子,每一组寄存器组一一对应一个扰码种子,每一扰码种子均用于对所述用户数据进行扰码,从而使得每一扰码种子一一对应一个扰码后的数据。
步骤S22:确定多个扰码数据通道,通过多个所述扰码数据通道并行对所述用户数据进行扰码,以生成多个扰码后的数据,其中,每一扰码数据通道一一对应一个扰码后的数据。
具体的,每一扰码数据通道均包括一个扰码处理模块以及一个数据分布统计模块,其中,所述扰码处理模块用于对所述用户数据进行扰码,多个扰码处理模块并行对所述用户数据进行扰码,从而生成多个扰码后的数据,由于每一扰码数据通道均一一对应一个扰码处理模块,使得每一扰码数据通道一一对应一个扰码后的数据,即每一所述扰码数据通道均输出一个扰码后的数据。
步骤S30:对所述多个扰码后的数据进行单元电压状态分布统计,以确定存储数据。
其中,在通过多个扰码数据通道进行扰码处理之后,生成多个扰码后的数据,通过对多个扰码后的数据进行单元电压状态分布统计,确定每一扰码后的数据的单元电压状态分布统计结果,并基于多个单元电压状态分布统计结果,确定多个扰码后的数据中的一个作为存储数据。
具体的,请再参阅图14,图14是图11中的步骤S30的细化流程示意图;
如图14所示,该步骤S30:对所述多个扰码后的数据进行数据分布统计,以确定存储数据,包括:
步骤S31:对所述多个扰码后的数据进行单元电压状态分布统计,确定多个扰码后的数据的单元电压状态分布统计结果;
具体的,每一扰码数据通道中的数据分布统计模块,用于对所述扰码后的数据进行单元电压状态分布统计,生成单元电压状态分布统计结果,从而对所述多个扰码后的数据进行单元电压状态分布统计,以确定多个扰码后的数据一一对应的单元电压状态分布统计结果,其中,所述单元电压状态分布统计结果包括每一电压状态的百分比,例如:所述单元电压状态分布统计结果如下表1所示:
表1
步骤S32:根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据。
请再参阅图15,图15是图14中的步骤S32的细化流程示意图;
如图15所示,该步骤S32:根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据,包括:
步骤S321:获取预设的软件管理配置策略表,其中,所述软件管理配置策略表包括多个软件管理配置策略;
具体的,所述软件管理配置策略表包括多种软件管理配置策略,包括:G状态最小、F状态最小、各状态最均一化等多种策略,例如:所述软件管理配置策略表如下表2所示:
表2
序号 | 软件管理配置策略 | 选择结果 |
1 | G状态最小 | 扰码数据通道2 |
2 | F状态最小 | 扰码数据通道4 |
3 | 各状态最均一化 | 扰码数据通道n-1 |
4 | 策略3 | 扰码数据通道x |
5 | 策略4 | 扰码数据通道y |
… | … | … |
n | 策略n | 扰码数据通道z |
步骤S322:根据所述软件管理配置策略表,确定软件管理配置策略及其对应的扰码数据通道;
具体的,根据所述软件管理配置策略表,结合最佳合适分布需求数据进行配置,或者,结合实验数据收集,确定最优的分布比例,从而确定所述软件管理配置策略表中的一个软件管理配置策略作为确定的软件管理配置策略,例如:策略1是G状态数量最少(这里体现为百分比最小),策略2是F状态数量最少(这里体现为百分比最小),策略3是各个状态均一化。
步骤S323:基于所述软件管理配置策略及其对应的扰码数据通道,确定所述多个扰码后的数据中的一个作为存储数据。
具体的,根据所述软件管理配置策略,确定与所述软件管理配置策略对应的扰码数据通道,将所述扰码数据通道对应的扰码后的数据作为存储数据,例如:若所述软件管理配置策略为G状态数量最少(体现为百分比最小),即策略1,那么就是扰码数据通道2对应的扰码后的数据作为存储数据;同样地,若所述软件管理配置为F状态数量最少(体现为百分比最小),即策略2,则为扰码数据通道4对应的扰码后的数据作为存储数据;若所述软件管理配置策略为各个状态均一化,即策略3,则是扰码数据通道n-1对应的扰码后的数据作为存储数据。
在本发明实施例中,所述方法还包括:
根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的用户数据。
具体的,所述固态硬盘控制器的数据存储管理模块包括:
反扰码模块,用于根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的用户数据。
请再参阅图16,图16是本发明实施例提供的一种数据写入的流程的示意图;
如图16所示,写入过程包括:用户数据外部接口通过数据处理模块后到达闪存阵列的过程,即从步骤S1到S7。其中步骤S1,S2,S5,S6,S7是数据传递过程,不在本发明进行细节说明,步骤S3是进行数据扰码,并选择扰码后的数据,记录其所用Seed完成后由步骤S4进行数据纠错码的编码(LDPCEncode)形成Parity,添加Parity后随用户数据一起经过步骤S5,S6步骤之后经过步骤S7:写入到闪存阵列;
请再参阅图17,图17是本发明实施例提供的一种数据读出的流程的示意图;
如图17所示,读出过程包括:存储在闪存的数据(包含Seed配置记录以及纠错码Parity等)被读到数据处理模块进行处理后输出到外部接口的过程,即从步骤S1到S7。其中步骤S1,S2,S3,S6,S7是数据传递过程,不在本发明进行细节说明,其中步骤S4是数据纠错码的解码(LDPCDecode),此时能够确定是否纠错成功,如果纠错失败则需要进行重读操作,即步骤S1-S4可能会重复进行,只有步骤S4成功完成纠错之后,即获得正确的Seed配置才会进行数据反扰码,即进行步骤S5恢复用户数据,之后通过步骤S6,7将用户数据输出到外部接口;
请再参阅图18,图18是本发明实施例提供的一种数据存储管理方法的整体流程示意图;
如图18所示,该数据存储管理方法,包括:
步骤S1801:数据输入;
具体的,获取用户数据。
步骤S1802:并行N个Seed选择;
具体的,并行获取多个扰码种子。
步骤S1803:并行N个数据扰码;
具体的,通过所述多个扰码种子,并行对所述用户数据进行扰码处理。
步骤S1804:根据选择策略配置,选择对应通道产生的数据;
具体的,对所述多个扰码后的数据进行单元电压状态分布统计,确定多个扰码后的数据的单元电压状态分布统计结果;根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据。
步骤S1805:对选择的数据进行ECC保护;
步骤S1806:数据输出;
在本发明实施例中,通过提供一种数据存储管理方法,应用于固态硬盘,所述方法包括:获取用户数据;并行对所述用户数据进行预处理,生成多个预处理后的数据;对所述多个预处理后的数据进行单元电压状态分布统计,以确定存储数据。通过并行对用户数据进行预处理,并对多个预处理后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据,本发明实施例能够控制易发生泄漏所对应的电压状态内的单元数量,从而能够减少滞留错误,提高固态硬盘的使用寿命。
本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,可使得上述一个或多个处理器可执行上述任意方法实施例中的数据存储管理方法,例如,执行上述任意方法实施例中的数据存储管理方法,例如,执行以上描述的图11所示的各个步骤。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (7)
1.一种数据存储管理方法,应用于固态硬盘,其特征在于,所述方法包括:
获取用户数据;
并行对所述用户数据进行预处理,生成多个预处理后的数据;
对所述多个预处理后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据;
所述并行对所述用户数据进行预处理,生成多个预处理后的数据,包括:
并行对所述用户数据进行扰码,生成多个扰码后的数据;
所述对所述多个扰码后的数据进行单元电压状态分布统计,选择最符合需求的单元电压状态分布,以确定存储数据,包括:
对所述多个扰码后的数据进行单元电压状态分布统计,确定多个扰码后的数据的单元电压状态分布统计结果;
根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据。
2.根据权利要求1所述的方法,其特征在于,所述并行对所述用户数据进行扰码,生成多个扰码后的数据,具体包括:
配置多个种子,每一种子一一对应一扰码后的数据;
确定多个扰码数据通道,通过多个所述扰码数据通道并行对所述用户数据进行扰码,以生成多个扰码后的数据,其中,每一扰码数据通道一一对应一个扰码后的数据。
3.根据权利要求1所述的方法,其特征在于,所述基于预设的软件管理配置策略,确定所述多个扰码后的数据中的一个作为存储数据,包括:
获取预设的软件管理配置策略表,其中,所述软件管理配置策略表包括多个软件管理配置策略;
根据所述软件管理配置策略表,确定软件管理配置策略及其对应的扰码数据通道;
基于所述软件管理配置策略及其对应的扰码数据通道,确定所述多个扰码后的数据中的一个作为存储数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的原始用户数据。
5.一种固态硬盘控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,其特征在于,所述固态硬盘控制器包括数据通路处理模块,通信连接所述固态硬盘的至少一个闪存介质;
其中,所述数据通路处理模块,包括:
接口模块,用于获取用户数据,以及与闪存介质进行数据交换;
缓存管理模块,用于缓存数据;
数据存储管理模块,用于并行对所述用户数据进行预处理,生成多个预处理后的数据,对所述多个预处理后的数据进行单元电压状态分布统计,以确定存储数据;
所述数据存储管理模块包括:
多个扰码处理模块,每一扰码处理模块均用于对所述用户数据进行扰码,生成扰码后的数据;
多个数据分布统计模块,每一数据分布统计模块用于对与其对应的扰码后的数据进行单元电压状态分布统计,生成单元电压状态分布统计结果,其中,所述扰码处理模块与所述数据分布统计模块一一对应;
所述数据存储管理模块包括:
数据选择管理模块,用于根据所述多个扰码后的数据的单元电压状态分布统计结果,基于预设的软件管理配置策略及其对应的扰码数据通道,确定所述多个扰码后的数据中的一个作为存储数据。
6.根据权利要求5所述的固态硬盘控制器,其特征在于,所述数据存储管理模块包括:
扰码种子配置管理模块,用于配置多个种子,每一种子一一对应一扰码后的数据;
反扰码模块,用于根据所述存储数据及其对应的种子,对所述存储数据进行反扰码,以恢复所述存储数据对应的原始用户数据。
7.一种固态硬盘,其特征在于,包括:
闪存介质,用于存储闪存数据;
如权利要求5-6任一项所述的固态硬盘控制器,用于执行如权利要求1-4任一项所述的数据存储管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011539967.9A CN112558883B (zh) | 2020-12-23 | 2020-12-23 | 一种数据存储管理方法、固态硬盘控制器及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011539967.9A CN112558883B (zh) | 2020-12-23 | 2020-12-23 | 一种数据存储管理方法、固态硬盘控制器及固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112558883A CN112558883A (zh) | 2021-03-26 |
CN112558883B true CN112558883B (zh) | 2024-05-14 |
Family
ID=75031602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011539967.9A Active CN112558883B (zh) | 2020-12-23 | 2020-12-23 | 一种数据存储管理方法、固态硬盘控制器及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112558883B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114296638B (zh) * | 2021-12-10 | 2024-02-20 | 深圳大普微电子科技有限公司 | 存算一体化固态硬盘控制器及相关装置、方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105530067A (zh) * | 2015-12-08 | 2016-04-27 | 京信通信技术(广州)有限公司 | 一种并行加扰装置及并行加扰方法 |
CN106205720A (zh) * | 2016-07-06 | 2016-12-07 | 记忆科技(深圳)有限公司 | 一种恢复Nand Flash错误数据的方法 |
CN107094370A (zh) * | 2012-05-04 | 2017-08-25 | 希捷科技有限公司 | 固态硬盘控制器的0‑1平衡管理 |
CN107527644A (zh) * | 2017-08-28 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种固态硬盘读参考电压的优化方法及装置 |
CN107885459A (zh) * | 2017-09-30 | 2018-04-06 | 记忆科技(深圳)有限公司 | 一种软件实现固态硬盘写入数据加扰的方法 |
CN108647109A (zh) * | 2018-03-27 | 2018-10-12 | 深圳忆联信息系统有限公司 | 一种固态硬盘提升ldpc纠错能力的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10320429B2 (en) * | 2015-03-04 | 2019-06-11 | Toshiba Memory Corporation | Memory controller, memory system and memory control method |
-
2020
- 2020-12-23 CN CN202011539967.9A patent/CN112558883B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107094370A (zh) * | 2012-05-04 | 2017-08-25 | 希捷科技有限公司 | 固态硬盘控制器的0‑1平衡管理 |
CN105530067A (zh) * | 2015-12-08 | 2016-04-27 | 京信通信技术(广州)有限公司 | 一种并行加扰装置及并行加扰方法 |
CN106205720A (zh) * | 2016-07-06 | 2016-12-07 | 记忆科技(深圳)有限公司 | 一种恢复Nand Flash错误数据的方法 |
CN107527644A (zh) * | 2017-08-28 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种固态硬盘读参考电压的优化方法及装置 |
CN107885459A (zh) * | 2017-09-30 | 2018-04-06 | 记忆科技(深圳)有限公司 | 一种软件实现固态硬盘写入数据加扰的方法 |
CN108647109A (zh) * | 2018-03-27 | 2018-10-12 | 深圳忆联信息系统有限公司 | 一种固态硬盘提升ldpc纠错能力的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112558883A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10891188B2 (en) | Memory devices having differently configured blocks of memory cells | |
US10572338B2 (en) | Estimating an error rate associated with memory | |
CN112562766B (zh) | 一种重读管理方法、固态硬盘控制器及固态硬盘 | |
US9361182B2 (en) | Method for read disturbance management in non-volatile memory devices | |
KR102174293B1 (ko) | 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치 | |
US8281061B2 (en) | Data conditioning to improve flash memory reliability | |
US9384126B1 (en) | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems | |
US20100070681A1 (en) | Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations | |
JP2015043253A (ja) | Mビットメモリセル用のm+nビットプログラミングおよびm+lビット読出し | |
KR101602316B1 (ko) | 반도체 메모리 장치 및 그것의 데이터 처리 방법 | |
US10552262B2 (en) | Data programming for a data storage medium using horizontal and vertical error correction codes | |
US20170090764A1 (en) | Data randomization using memory block access counts | |
CN110767253B (zh) | 固态储存装置及其读取表管理方法 | |
EP2525360B1 (en) | Sparse programming of analog memory cells | |
CN112542201A (zh) | 存储设备及操作该存储设备的方法 | |
CN112558883B (zh) | 一种数据存储管理方法、固态硬盘控制器及固态硬盘 | |
US11222693B2 (en) | Data management method for memory and memory apparatus using the same | |
US11444637B2 (en) | Self-adaptive low-density parity check hard decoder | |
US20210272619A1 (en) | Data Storage With Improved Read Performance By Avoiding Line Discharge | |
US10180878B2 (en) | Memory system for recording data and memory control method for recording data | |
US9373367B1 (en) | Data storage device and operating method thereof | |
US10073685B2 (en) | Methods of system optimization by over-sampling read | |
US20240143187A1 (en) | Storage device, controller and method for performing global wear-leveling | |
KR20090110648A (ko) | 플래시 메모리로 데이터를 기록하는 방법과 플래시메모리에 기록된 데이터를 읽는 방법 및 플래시 메모리시스템 |
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 |