数据存储方法及固态硬盘技术领域
本发明实施例涉及数据存储技术,尤其涉及一种数据存储方法及固态硬
盘。
背景技术
固态硬盘(SolidStateDisk,简称SSD)作为最常用的存储数据的载体,
多采用闪存作为存储介质。闪存通过内部用于存储数据的最小粒度单元,即
存储单元呈现的电压在不同电压范围存储不同数据。向闪存中写入数据,实
际是采用步幅递增脉冲编程(IncrementalStepPulseProgramming,简称ISPP)
方式对闪存所包括的存储单元施加脉冲电压进行充电,以使得存储单元的电
压在待写入数据对应的电压范围内。该ISPP方式实际是在施加脉冲电压时,
通过施加多个步幅电压的方式实现。若增加步幅电压,虽可提高编程速度,
减少存储单元的充电时间即数据的写入时间。但步幅电压过大,会使得每次
施加至存储单元的电子数过多,从而使得存储单元产生的比特错误率(BitError
Rate,简称BER)也越大。由于写入不同数据对应的电压范围不同,那么其所
需步幅电压也不同,写入不同数据产生的闪存页的BER也不同。
闪存通常包括多个闪存页,而每个闪存页包括多个存储单元和冗余单元。
其中,存储单元用于存储写入数据,冗余单元用于存储对可对发生的其纠错
能力下的比特错误进行修正的错误纠正码(ErrorCorrectionCode,简称ECC)。
该ECC可以为在将待写入数据写入存储单元之前,通过预设的该SSD所对
应的编码方式该待写入数据进行编码所产生的效验码。
对于一个SSD,具有一种编码方式,而该编码方式则决定编码后获得的
ECC的纠错能力。也就是说,SSD内部,所有闪存页具有相同纠错能力的ECC。
然而,实际应用中,写入每个闪存页的数据可能不同,那么写入该不同数据
所产生的BER也不同。这使得某些闪存页的ECC纠错能力远远大于实际产
生的BER,其ECC的纠错能力得不到充分利用。
发明内容
本发明实施例提供一种数据存储方法及固态硬盘,以解决现有技术中
ECC纠错能力得不到充分利用的问题。
第一方面,本发明实施例提供一种数据存储方法,所述方法应用于固态
硬盘中,所述方法包括:
接收写请求,所述写请求包括待写入数据和地址;
根据所述地址确定目标闪存页的类型;其中,所述目标闪存页为所述固
态硬盘中存储所述待写入数据的闪存页;
根据确定的所述目标闪存页的类型及所述待写入数据,计算所述目标闪
存页的比特错误率BER;
根据所述目标闪存页的BER和预设的所述目标闪存页的BER与步幅电
压对应关系确定写入所述待写入数据的步幅电压;其中,所述步幅电压是根
据所述固态硬盘的错误纠正码ECC纠错能力所确定的;
根据所述步幅电压将所述待写入数据写入所述目标闪存页。
根据第一方面,在第一方面的第一种可能实现的方式中,所述根据所述
目标闪存页的类型及所述待写入数据,计算所述目标闪存页的BER,包括:
根据所述目标闪存页的类型和所述待写入数据,采用所述目标闪存页的
类型对应的BER计算方式,计算所述目标闪存页的BER。
根据第一方面的第一种可能实现的方式,在第二种可能实现的方式中,
若所述目标闪存页为最高有效比特位MSB页,所述BER计算方式为:
B MSB = P 00 × B L 00 + P 10 × B R 10 ; ]]>
其中,所述BMSB为MSB页的BER;所述P00为所述待写入数据中00所占
的比例;所述P10为所述待写入数据中10所占的比例;所述为预设的写入
00发生左偏错误的BER;所述为预设的写入10发生右偏错误的BER。
根据第一方面的第一种可能实现的方式,在第三种可能实现的方式中,
若所述目标闪存页为最低有效比特位LSB页,所述BER计算方式为:
B LSB = P 11 × B R 11 + P 10 × B L 10 + P 00 × B R 00 + P 01 × R L 01 ; ]]>
其中,所述BLSB为LSB页的BER;所述P11为所述待写入数据中11所占
的比例;所述P10为所述待写入数据中10所占的比例;所述P00为所述待写入
数据中00所占的比例;所述P01为所述待写入数据中01所占的比例;所述
为预设的写入11发生右偏错误的BER;所述为预设的写入10发生左偏错
误的BER;所述为预设的写入00发送右偏错误的BER;所述为预设的
写入01发生左偏错误的BER。
根据第一方面至第一方面的第三种可能实现的方式中任意一种,在第四
种可能实现的方式中,所述根据所述目标闪存页的BER和预设的所述目标闪
存页的BER与步幅电压的对应关系确定写入所述待写入数据的步幅电压,包
括:
根据所述目标闪存页的BER和BER步幅电压对应表确定写入所述待写
入数据的步幅电压;其中,所述BER步幅电压对应表包括:所述目标闪存页
的BER与步幅电压的对应关系。
第二方面,本发明实施例提供一种固态硬盘,包括:控制器及存储器;
其中,所述存储器包括:至少一个闪存页;所述控制器与所述存储器中的所
述至少一个闪存页连接;
所述控制器,用于接收写请求,所述写请求包括待写入数据和地址,根
据所述地址确定目标闪存页的类型,根据确定的所述目标闪存页的类型及所
述待写入数据计算所述目标闪存页的BER,根据所述目标闪存页的BER和预
设的所述目标闪存页的BER与步幅电压对应关系确定写入所述待写入数据的
步幅电压,并根据所述步幅电压将所述待写入数据写入所述目标闪存页;其
中,所述目标闪存页为所述固态硬盘中存储所述待写入数据的闪存页;所述
步幅电压是根据所述固态硬盘的ECC纠错能力所确定的;
所述存储器,用于存储所述待写入数据。
根据第二方面,在第二方面的第一种可能实现的方式中,所述控制器,
还用于根据所述目标闪存页的类型和所述待写入数据,采用所述目标闪存页
的类型对应的BER计算方式,计算所述目标闪存页的BER。
根据第二方面的第一种可能实现的方式,在第二种可能实现的方式中,
若所述目标闪存页为MSB页,所述BER计算方式为:
B MSB = P 00 × B L 00 + P 10 × B R 10 ; ]]>
其中,所述BMSB为MSB页的BER;所述P00为所述待写入数据中00所占
的比例;所述P10为所述待写入数据中10所占的比例;所述为预设的写入
00发生左偏错误的BER;所述为预设的写入10发生右偏错误的BER。
根据第二方面的第一种可能实现的方式,在第三种可能实现的方式中,
若所述目标闪存页为LSB页,所述BER计算方式为:
B LSB = P 11 × B R 11 + P 10 × B L 10 + P 00 × B R 00 + P 01 × R L 01 ; ]]>
其中,所述BLSB为LSB页的BER;所述P11为所述待写入数据中11所占
的比例;所述P10为所述待写入数据中10所占的比例;所述P00为所述待写入
数据中00所占的比例;所述P01为所述待写入数据中01所占的比例;所述
为预设的写入11发生右偏错误的BER;所述为预设的写入10发生左偏错
误的BER;所述为预设的写入00发送右偏错误的BER;所述为预设的
写入01发生左偏错误的BER。
根据第二方面至第二方面的第三种可能实现的方式中任意一种,在第四
种可能实现的方式中,所述控制器,具体用于根据所述目标闪存页的BER和
BER步幅电压对应表确定写入所述待写入数据的步幅电压;其中,所述BER
步幅电压对应表包括:所述目标闪存页的BER与步幅电压的对应关系。
本发明实施例的数据存储方法及固态硬盘,可根据写请求中的地址确定
目标闪存页的类型,根据该目标闪存页的类型及该待写入数据计算该目标闪
存页的BER,从而根据该目标闪存页的BER和预设的目标闪存页的BER与
步幅电压的对应关系确定步幅电压,该步幅电压为根据固态硬盘的ECC纠错
能力确定的,根据该步幅电压将该待写入数据写入该目标闪存页,可有效减
小该闪存页实际所产生的BER与ECC纠错能力之间的差距,使得ECC纠错
能力得到充分的利用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实
施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下
面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在
不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一所提供的数据存储方法的流程图;
图2为本发明实施例二所提供的数据存储方法的流程图;
图3为本发明实施例三所提供的固态硬盘的结构示意图;
图4为本发明实施例四所提供的固态硬盘的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发
明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,
显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获
得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供一种数据存储方法。该方法可应用于固态硬盘中,可
由该固态硬盘内的控制器所执行。图1为本发明实施例一所提供的数据存储
方法的流程图。如图1所示,该方法包括如下:
步骤101、接收写请求,该写请求包括待写入数据和地址。
具体地,该写请求可以是该固态硬盘内除该控制器之外的其他设备所发
送的,还可以是该固态硬盘外的设备所发送的写请求,如计算机的处理器。
步骤102、根据该地址确定目标闪存页的类型,其中,该目标闪存页为
该固态硬盘中存储该待写入数据的闪存页。
具体地,若该写请求为固态硬盘内该控制器之外的其他设备所发送的,
则该写请求中所包括的地址可以为物理地址。若该写请求为固态硬盘外的其
他设备,如计算机的处理器所发送的,那么该写请求包括的地址可以为逻辑
地址,该逻辑地址可以为接收该写请求所对应的逻辑接口对应的逻辑地址。
那么在该步骤102之前,还需逻辑地址转换为物理地址。其中,将该逻辑地
址转换为物理地址,可以是采用预设的地址映射方式,将该逻辑地址映射为
该逻辑地址所对应的实际物理地址。该物理地址可以为该待写入数据将要写
入固态硬盘的内部的闪存页的地址,即写数据的目的地址。那么该步骤102
则可以是根据转换后获得的物理地址或者该写请求所包括的物理地址,存储
该待写入数据的闪存页的类型,即确定该目标闪存页的类型。由于该物理地
址实际为该目标闪存页的物理地址,那么将该逻辑地址转换为物理地址,实
际是通过地址转换为该待写入数据选择待写入的目标闪存页。
该地址可以通过该目标闪存页的连接接口的标识信息表示。对于不同类
型的闪存页的地址可包括不同的类型标识。该类型标识信息可以在该地址的
前缀、后缀或是预设长度位置。根据该地址确定目标闪存页的类型,例如可
以是根据位于该地址内前缀、后缀或是预设长度位置的类型标识信息,确定
该目标闪存页的类型;还可以是根据该地址确定该目标闪存页在固态硬盘内
部的具体位置,继而根据预设的不同类型闪存页的位置分布确定该目标闪存
页的类型。
步骤103、根据确定的该目标闪存页的类型及该待写入数据,计算该目
标闪存页的BER。
具体地,该不同类型的闪存页可用于写入不同类型的数据,该不同类型
的数据例如可以是根据该存储器内的闪存页所包括的存储单元的结构所确定
的。该存储器内的闪存页所包括的存储单元可以为多状态存储单元(Multiple
LevelCell,简称MLC)。该目标闪存页的类型,可以是用于存储不同比特位
数据的闪存页。该目标闪存页的类型与该目标闪存页中各存储单元可存储的
比特数据位数有关,若该目标闪存页中各存储单元可存储的比特数据为2位
比特数据,则该待写入数据中分别写入该目标闪存页中各存储单元的比特数
据可包括高位比特数据,即最高有效比特位(MostSignificantBit,简称MSB)
数据及低位比特数据,即最低有效比特位(LeastSignificantBit,简称LSB)。
那么,该目标闪存页的类型可包括用于存储MSB数据的MSB页和用于存储
LSB数据的LSB页。若该目标闪存页中各存储单元可存储的比特数据为4位
或更多位比特的数据,则该待写入数据中分别写入该目标闪存页中各存储单
元的比特数据还可包括其他位的比特数据,对应的,该目标闪存页的类型还
可包括用于存储该其他比特数据的闪存页。
由于写入不同类型闪存页所存储的比特位数据不同,那么通过编程对该
不同闪存页类型的闪存页内部的存储单元充电至不同的电压范围,以存储不
同该比特位数据。该不同类型闪存页由于待写入比特位数据的不同,其闪存
页的状态,也就是闪存页内部各存储单元的所呈现的电压或其存储电子的个
数均不同,那么,该不同类型闪存页中存储数据所产生的BER也不同。
本实施例方案中,根据该目标闪存页的类型及该待写入数据计算该目标
闪存页的BER,例如可以是根据目标闪存页的类型,结合该待写入数据的具
体内容,计算获得该目标闪存页的BER。其中,该待写入数据的具体内容可
以是不同数据类型在该待写入数据中的分布,该不同数据类型可以是不同的
比特位数据,如0和1的具体分布。因而,该目标闪存页的BER也可以为基
于内容的比特错误率(ContentDependentBitErrorRate,简称CDBER)。
假设,闪存页中存储单元可存储两位比特数据,即四个不同类型的数据,
11、10、01和00。若存储单元未充电状态或充电至第一电压阈值V1时,该
存储单元所对应的存储数据为11,那么存储单元从未充电状态,或者说是空
载状态,充电至第一电压阈值V1与第二电压阈值V2范围内时,该存储单元
所对应的存储数据为10;将存储单元从未充电状态,充电至第二电压阈值
V2与第三电压阈值V3的范围内时,该存储单元所对应的存储数据为00;将
存储单元从未充电状态,充电至超过第三电压阈值V3时,该存储单元所对应
的存储数据为01。其中,该第一电压阈值V1小于第二电压阈值V2,第二电
压阈值V2小于第三电压阈值V3。也就是说,根据存储单元呈现的电压从小
到大的顺序,该存储单元分别可写入数据11、10、00和01。在本实施例中,
该目标闪存页的BER,例如可以是根据该目标闪存页的类型及该待写入数据
中不同类型的数据的分布,如11、10、01和00的分布而计算获得。
步骤104、根据该目标闪存页的BER和预设的该目标闪存页的BER与步
幅电压对应关系确定写入该待写入数据的步幅电压。
其中,该步幅电压是根据该固态硬盘的ECC纠错能力所确定的。
具体地,该固态硬盘的ECC纠错能力,可以是根据该固态硬盘所具有的
编码方式所确定的。该目标闪存页的BER与步幅电压的对应关系中,一个该
目标闪存页的BER与一个步幅电压对应。该目标闪存页的BER与步幅电压
的对应关系,可以通过该闪存页中,根据该步幅电压写入数据,其BER的产
生规则,如计算公式表示。该目标闪存页的BER与步幅电压的对应关系,还
可通过BER步幅电压对应表表示。确定写入该待写入数据的步幅电压,例如
可以为根据该目标闪存页的BER和预设的该目标闪存页的BER与步幅电压
对应关系,确定该目标闪存页的BER所对应的步幅电压,作为写入该待写入
数据的步幅电压。
步骤105、根据该步幅电压将该待写入数据写入该目标闪存页。
根据该步幅电压将该待写入数据写入该目标闪存页,可以是通过向该目
标闪存页的至少一个存储单元发送该步幅电压对应的电脉冲信号,对该目标
闪存页中的至少一个存储单元进行充电,以使得该目标闪存页中至少一个存
储单元的电压,可呈现该待写入数据中各存储单元对应数据的电压值,从而
完成将该写入数据的写操作。
本实施例所提供的数据存储方法,可根据写请求中的地址确定目标闪存
页的类型,根据该目标闪存页的类型及该写请求中的待写入数据,计算该目
标闪存页的BER,从而根据该目标闪存页的BER和预设的目标闪存页的BER
与步幅电压的对应关系确定步幅电压,该步幅电压为根据固态硬盘的ECC纠
错能力确定的,从而可使得根据该步幅电压将该待写入数据写入该目标闪存
页所产生的BER与ECC纠错能力之间的差距得到控制,使得ECC纠错能力
得到充分的利用。
实施例二
本发明实施例二还提供一种数据存储方法。图2为本发明实施例二所提
供的数据存储方法的流程图。如图2所示,在上述实施例一的基础上,其中
步骤103中根据该目标闪存页的类型及所述待写入数据计算该目标闪存页的
BER可以包括:
步骤201、根据该目标闪存页的类型和该待写入数据,采用该目标闪存
页的类型对应的BER计算方式,计算该目标闪存页的BER。
具体地,该目标闪存页的类型对应的BER计算公式例如可以是根据该目
标闪存页的类型对应的写入的不同比特位数据,结合闪存页中存储单元写数
据的不同错误类型所获取的BER计算公式。
其中,写数据的不同错误类型例如可包括漏电导致的错误和编程导致的
错误。其中,该漏电导致的错误会导致存储单元中的电子导磁泄露,电压下
降,从而使得存储单元的电压对应的存储数据的值向较小电压值的方向的存
储数据偏移,也称左偏错误。该编程导致的错误可以是,由于存储单元的反
复编程擦除操作以及附近闪存页上的编程操作的影响,会导致当前存储单元
中电子个数上升,电压上升,存储单元的电压对应的存储数据的值向较大电
压值的方向的存储数据偏移,称为右偏错误。举例来说,若闪存页内部的存
储单元的按照电压从小到大,可依次存储11、10、00和01四个数据。由于
写入数据11的存储单元电压值最小,因而不存在左偏错误,写入数据01的
存储单元最大,因而不存在右偏错误。写入数据11的存储单元若发生右偏错
误,则会使得存储单元的电压值趋向于数据10所对应的电压值、写入数据
10的存储单元若发生左偏错误,则会使得存储单元的电压值趋向于数据00
对应的电压值;若发生右偏错误,则会使得存储单元的电压值趋向于数据11
对应的电压值。
由于不同类型的闪存页所写入的比特位数据的不同,存储该比特位数据
根据其产生数据错误的不同类型,其所产生的BER的过程不同,即不同类型
的闪存页则具有不同的BER计算公式。该BER计算公式可以是在该实施例
方案之前,通过对不同类型的闪存页写入不同数据所统计获得的BER产生规
则。
进一步地,若该目标闪存页为MSB页,该BER计算方式为:
B MSB = P 00 × B L 00 + P 10 × B R 10 ; ]]>
其中,该BMSB为MSB页的BER;该P00为该待写入数据中00所占的比例;
该P10为该待写入数据中10所占的比例;该为预设的写入00发生左偏错误
的BER;该为预设的写入10发生右偏错误的BER。
具体地,若目标闪存页为MSB页,将该待写入数据写入该目标闪存页,
在该待写入数据发生比特错误,实际是最高比特位的错误。该待写入数据实
际上除数据00和10外还包括数据11和01。由于数据11对应的电压值最小,
不会发生左偏错误,且数据11发生右偏错误其最高比特位还是1,也就是说,
数据11即使发生右偏错误,由于其最高位未发生变化,对于MSB页实际并
未发生错误。由于数据01对应的电压值最大,不会发生右偏错误,然而其发
生左偏错误时,实际是数据01向数据00的错误,其最高位还是0,也就是
说,数据01即使发生右偏错误,由于其最高位未发生变化,对于MSB页实
际并未发生错误。因而,本实施例方案中,对于MSB页,只有数据10会发
生右偏错误,数据00会发生左偏错误,即可根据待写入数据中出现数据00
在该待写入数据中的比例P00,乘以数据00发生左偏错误的BER,即数
据10在该写入数据中的比例P10,乘以数据10发生右偏错误的BER,即获
得如上所述的MSB页的BER计算公式。
可选的,若该目标闪存页为LSB页,该BER计算方式为:
B LSB = P 11 × B R 11 + P 10 × B L 10 + P 00 × B R 00 + P 01 × R L 01 ; ]]>
其中,该BLSB为LSB页的BER;该P11为该待写入数据中11所占的比例;
该P10为该待写入数据中10所占的比例;该P00为该待写入数据中00所占的比
例;该P01为该待写入数据中01所占的比例;该为预设的写入11发生右偏
错误的BER;该为预设的写入10发生左偏错误的BER;该为预设的写
入00发送右偏错误的BER;该为预设的写入01发生左偏错误的BER。
具体地,若目标闪存页为LSB页,将该待写入数据写入该目标闪存页,
在该待写入数据发生比特错误,实际是最低比特位的错误。由于数据11对应
的电压值最小,不会发生左偏错误,然而数据11会发生右偏错误,从而变为
数据10。数据10会发生左偏错误,从而变为数据11,若发生右偏错误,变
为数据00,由于最低位未发生变化,因而,对于LSB页,数据10仅会发生
左偏错误。数据00若发生左偏错误,变为数据10由于最低比特位还为数据
0,因而对于LSB页,数据00不会发生左偏错误,仅会发生右偏错误,从而
变为数据01。由于数据01对应的电压值最大,不会由于发生右偏错误而导
致写入的数据发生变化,仅会发生左偏错误,从而变为数据00。因而,本实
施例方案中,对于LSB页,可根据数据11在该待写入数据中的比例P11乘以
该数据11发生右偏错误的BER,即数据10在该待写入数据中的比例P10
乘以该数据10发生左偏错误的BER,即数据00在该待写入数据中的比
例P00乘以该数据00发生右偏错误的BER,即数据01在该待写入数据
中的比例P01乘以该数据01发生左偏错误的BER,即获得该LSB页的BER
计算公式。
可选的,在上述任一所述实施例的基础上,其中步骤104中,根据该目
标闪存页的BER和预设的该目标闪存页的BER与步幅电压的对应关系确定
写入该待写入数据的步幅电压,可以包括:
步骤202、根据该目标闪存页的BER和BER步幅电压对应表确定写入该
待写入数据的步幅电压。
其中,该BER步幅电压对应表包括:该目标闪存页的BER与步幅电压
的对应关系。
具体地,根据该目标闪存页的BER和BER步幅电压对应表确定该步幅
电压确定步幅电压,例如可以是根据目标闪存页的BER通过查找该预设BER
步幅电压对应表,确定该目标闪存页的BER所在的BER范围,继而选择该
BER范围所对应的步幅电压。由于步幅电压越大,单次编程对存储单元的充
电电子数越多,那么,可减少将该存储单元充电至该待写入数据对应的电压
所需的充电时间,即写数据的速度也越快。也就是说,该BER步幅电压对应
表即为BER写速度对应表。该BER步幅电压对应表,例如可以是在本实施
例方案之前,分别根据至少一个步幅电压对存储单元进行编程存储不同的写
入数据,各写入数据所发生的BER,以获得每个步幅电压所对应的一个BER
范围。为保证存储单元实际存储数据发生的比特错误得到纠正,从而被准确
的读取,该每个编程步幅所对应的BER范围均需小于该至少一个闪存页的
ECC纠错能力。该至少一个BER范围为根据该至少一个闪存页的ECC纠错
能力所确定的,例如可以是根据每个步幅电压存储不同写入数据产生的小于
该至少一个闪存页的ECC纠错能力的至少一个BER范围。
举例来说,该BER步幅电压对应表可以如表1所述:
BER范围
步幅电压
Bmax-B1
ΔV0
B1-B2
ΔV1
……
……
Bn-1-Bmin
ΔVn-1
表1
在如上表1中,Bmax可小于或等于该至少一个闪存页的ECC纠错能力,
Bmin小于Bmax,大于或等于0。其中,Bmax-B1可以为在本实施例方案之前,
根据ΔV0对存储单元进行编程存储不同的写入数据,各写入数据所产生的
BER所构成的BER范围。对应的,B1-B2可以为根据ΔV1对存储单元进行编
程存储不同的写入数据,各写入数据所产生的BER所构成的BER范围;
Bn-1-Bmin可以为根据ΔVn-1对存储单元进行编程存储不同的写入数据,各写
入数据所产生的BER所构成的BER范围。
也就是说,若该目标闪存页的BER较大,那么根据该目标闪存页的BER
及该预设BER范围步幅电压对应表确定的该目标闪存页的BER所对应的步
幅电压也越大,可在保证根据该步幅电压向闪存页中写入数据产生的BER在
ECC的纠错能力之内的基础上,还可提高写数据的操作时间。
本发明实施例所提供的数据存储方法,对不同类型的闪存页,如MSB页
和LSB页对上述实施例方案中的BER计算公式进行具体说明,更好地保证
目标闪存页的BER的准确性,从而更好地保证选择的步幅电压与ECC纠错
能力的适配,提高写数据的编程时间且保证ECC纠错能力的利用率。本实施
例方案还通过根据目标闪存页的BER和BER步幅电压对应表确定该步幅电
压,从而在保证写入数据的编程速度的情况下,还可保证根据该步幅电压写
入数据发生的BER与ECC纠错能力差距最小化,从而更好地提高ECC纠错
能力的利用率。
实施例三
本发明实施例三还提供一种固态硬盘。图3为本发明实施例三所提供的
固态硬盘的结构示意图。如图3所示,固态硬盘300可以包括:控制器301
和存储器302。其中,存储器302包括:至少一个闪存页303;控制器301与
存储器302中的该至少一个闪存页303连接。
控制器301,用于接收写请求,该写请求包括待写入数据和地址,根据
该地址确定目标闪存页的类型,根据确定的该目标闪存页的类型及该待写入
数据计算所述目标闪存页的BER,根据该目标闪存页的BER和预设的该目标
闪存页的BER与步幅电压的对应关系确定写入该待写入数据的步幅电压,并
根据该步幅电压将该待写入数据写入该目标闪存页;其中,该目标闪存页为
该固态硬盘中存储该待写入数据的闪存页;该步幅电压是根据该固态硬盘的
ECC纠错能力所确定的。
存储器302,用于存储该待写入数据。
其中,该BER步幅电压对应表包括:该目标闪存页的BER及其对应的
该步幅电压;该步幅电压为根据固态硬盘的错误纠正码ECC纠错能力所确定
的。
本发明实施例所提供的固态硬盘,可根据实施例上述实施例一或实施例
二所述的数据存储方法,其具体的实现过程与上述实施例类似,在此不再赘
述。
进一步地,本发明实施例上述方案中所述的控制器301,还用于根据该
目标闪存页的类型和该待写入数据,采用该目标闪存页的类型对应的BER计
算方式,计算该目标闪存页的BER。
可选的,如上所述的实施例方案中,若该目标闪存页为MSB页,该BER
计算方式为:
B MSB = P 00 × B L 00 + P 10 × B R 10 . ]]>
其中,该BMSB为MSB页的BER;该P00为该待写入数据中00所占比例;
该P10为该待写入数据中10所占的比例;该为预设的写入00发生左偏错误
的BER;该为预设的写入10发生右偏错误的BER。
可替代地,如上所述方案中,若该目标闪存页为LSB页,该BER计算
方式为:
B LSB = P 11 × B R 11 + P 10 × B L 10 + P 00 × B R 00 + P 01 × R L 01 . ]]>
其中,该BLSB为LSB页的BER;该P11为该待写入数据中11所占的比例;
该P10为该待写入数据中10所占的比例;该P00为该待写入数据中00所占的比
例;该P01为该待写入数据中01所占的比例;该为预设的写入11发生右偏
错误的BER;该为预设的写入10发生左偏错误的BER;该为预设的写
入00发送右偏错误的BER;该为预设的写入01发生左偏错误的BER。
可选的,在上述实施例方案中,控制器301,还用于根据该目标闪存页
的BER和BER步幅电压对应表确定写入该待写入数据的步幅电压;其中,
该BER步幅电压对应表包括:该目标闪存页的BER与步幅电压的对应关系。
本发明实施例所提供的固态硬盘,可应用实施例上述实施例一或实施例
二所述的数据存储方法进行数据存储,其具体的实现过程与上述实施例类似,
在此不再赘述。
实施例四
本发明实施例四还提供一种固态硬盘。本发明实施例通过具体的实例对
上述实施例方案进行具体说明。图4为本发明实施例四所提供的固态硬盘的
结构示意图。如图4所示,固态硬盘400包括:控制器401和存储器402。
存储器402可以为闪存存储装置。该存储器402可包括至少一个闪存页403。
控制器401可以为硬盘控制器。控制器401可包括:转换器404、计算器405、
选择器406和写引擎407。
其中,转换器404可通过逻辑接口与计算机的处理器连接,以通过该逻
辑接口接收处理器发送的写请求,并将该写请求中的逻辑地址进行地址转换,
获得物理地址。该写请求中所包括的地址可以为逻辑地址,该逻辑地址可以
为该逻辑接口上转换器404所对应的连接位置。计算器405与转换器404连
接,以接收转化器404所发送的物理地址。
计算器405还根据该物理地址确定目标闪存页的类型,并根据该目标闪
存页的类型及该待写入数据,计算该目标闪存页的BER。
计算器405与写引擎407连接。选择器406可通过写引擎407与计算器
405连接,也就是说,选择器406与写引擎407连接,写引擎407与计算器
405连接,则该选择器406可以与计算器405间接连接。选择器406还可与
计算器405直接连接。
选择器406可与计算器405连接,直接连接或间接连接均可。选择器406
可根据计算器405计算获得的目标闪存页的BER查询预设BER步幅电压对
应表确定步幅电压。
选择器406与写引擎407连接。写引擎407还通过闪存存储接口与存储
器402的至少一个闪存页403连接。
写引擎407可根据获取到的选择器406确定的该步幅电压将该待写入数
据写入该目标闪存页。该物理地址则可以通过闪存存储接口上该目标闪存页
所对应的连接接口的标识信息表示。
需要说明的是,本实施例所提供的固态硬盘400中的控制器401中还包
括:缓存器和ECC组件。其中,该缓存器可与计算器405连接;该缓存器可
用于在该待写入数据量过大,其超过计算器405的处理能力的情况下,通过
该缓存器对一部分的待写入数据及其对应的目标闪存页的类型进行存储。该
ECC组件可与写引擎407连接,用于在写引擎407根据选择器406所选择的
步幅电压向目标闪存页中写数据之前,对该待写入数据进行编码,并将编码
后的待写入数据及编码所产生的校验码均发送至写引擎407,使得写引擎407
将编码后的待写入数据写入闪存页中的数据存储单元中,将编码所产生的校
验码,即ECC码,写入闪存页中的冗余存储单元中。
本发明实施例所提供的固态硬盘,可通过计算器根据转换器所获取的物
理地址确定目标闪存页的类型,并根据该目标闪存页的类型及该待写入数据
计算该目标闪存页的BER,还通过选择器根据该目标闪存页的BER、及该至
少一个闪存页的ECC纠错能力确定步幅电压,使得写引擎根据该步幅电压将
该待写入数据写入该物理地址对应的闪存页,可有效减小该闪存页实际所产
生的BER与该至少一个ECC的纠错能力之间的差距,使得ECC纠错能力得
到充分的利用。同时,本发明实施例的方案在保证ECC纠错能力充分利用的
情况下,还减少将待写入数据写入闪存页所需的写操作时间,提高写速度。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步
骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可
读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而
前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码
的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对
其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通
技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,
或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并
不使相应技术方案的本质脱离本发明各实施例技术方案的范围。