CN105528178B - 数据存储方法及固态硬盘 - Google Patents
数据存储方法及固态硬盘 Download PDFInfo
- Publication number
- CN105528178B CN105528178B CN201410564041.3A CN201410564041A CN105528178B CN 105528178 B CN105528178 B CN 105528178B CN 201410564041 A CN201410564041 A CN 201410564041A CN 105528178 B CN105528178 B CN 105528178B
- Authority
- CN
- China
- Prior art keywords
- ber
- written
- data
- target flash
- flash page
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明实施例提供一种数据存储方法及固态硬盘。本发明数据存储方法包括:接收写请求,该写请求包括待写入数据和地址;根据该地址确定目标闪存页的类型,其中,该目标闪存页为该固态硬盘中存储该待写入数据的闪存页;根据确定的该目标闪存页的类型及该待写入数据,计算该目标闪存页的比特错误率BER;根据该目标闪存页的BER和预设的该目标闪存页的BER与步幅电压对应关系确定写入该待写入数据的步幅电压;其中,该步幅电压是根据固态硬盘的ECC纠错能力所确定的;根据该步幅电压将该待写入数据写入该目标闪存页。本发明实施例可有效减小该闪存页实际所产生的BER与ECC纠错能力之间的差距,使得ECC纠错能力得到充分的利用。
Description
技术领域
本发明实施例涉及数据存储技术,尤其涉及一种数据存储方法及固态硬盘。
背景技术
固态硬盘(Solid State Disk,简称SSD)作为最常用的存储数据的载体,多采用闪存作为存储介质。闪存通过内部用于存储数据的最小粒度单元,即存储单元呈现的电压在不同电压范围存储不同数据。向闪存中写入数据,实际是采用步幅递增脉冲编程(Incremental Step Pulse Programming,简称ISPP)方式对闪存所包括的存储单元施加脉冲电压进行充电,以使得存储单元的电压在待写入数据对应的电压范围内。该ISPP方式实际是在施加脉冲电压时,通过施加多个步幅电压的方式实现。若增加步幅电压,虽可提高编程速度,减少存储单元的充电时间即数据的写入时间。但步幅电压过大,会使得每次施加至存储单元的电子数过多,从而使得存储单元产生的比特错误率(Bit Error Rate,简称BER)也越大。由于写入不同数据对应的电压范围不同,那么其所需步幅电压也不同,写入不同数据产生的闪存页的BER也不同。
闪存通常包括多个闪存页,而每个闪存页包括多个存储单元和冗余单元。其中,存储单元用于存储写入数据,冗余单元用于存储对可对发生的其纠错能力下的比特错误进行修正的错误纠正码(Error Correction Code,简称ECC)。该ECC可以为在将待写入数据写入存储单元之前,通过预设的该SSD所对应的编码方式该待写入数据进行编码所产生的效验码。
对于一个SSD,具有一种编码方式,而该编码方式则决定编码后获得的ECC的纠错能力。也就是说,SSD内部,所有闪存页具有相同纠错能力的ECC。然而,实际应用中,写入每个闪存页的数据可能不同,那么写入该不同数据所产生的BER也不同。这使得某些闪存页的ECC纠错能力远远大于实际产生的BER,其ECC的纠错能力得不到充分利用。
发明内容
本发明实施例提供一种数据存储方法及固态硬盘,以解决现有技术中ECC纠错能力得不到充分利用的问题。
第一方面,本发明实施例提供一种数据存储方法,所述方法应用于固态硬盘中,所述方法包括:
接收写请求,所述写请求包括待写入数据和地址;
根据所述地址确定目标闪存页的类型;其中,所述目标闪存页为所述固态硬盘中存储所述待写入数据的闪存页;
根据确定的所述目标闪存页的类型及所述待写入数据,计算所述目标闪存页的比特错误率BER;
根据所述目标闪存页的BER和预设的所述目标闪存页的BER与步幅电压对应关系确定写入所述待写入数据的步幅电压;其中,所述步幅电压是根据所述固态硬盘的错误纠正码ECC纠错能力所确定的;
根据所述步幅电压将所述待写入数据写入所述目标闪存页。
根据第一方面,在第一方面的第一种可能实现的方式中,所述根据所述目标闪存页的类型及所述待写入数据,计算所述目标闪存页的BER,包括:
根据所述目标闪存页的类型和所述待写入数据,采用所述目标闪存页的类型对应的BER计算方式,计算所述目标闪存页的BER。
根据第一方面的第一种可能实现的方式,在第二种可能实现的方式中,若所述目标闪存页为最高有效比特位MSB页,所述BER计算方式为:
其中,所述BMSB为MSB页的BER;所述P00为所述待写入数据中00所占的比例;所述P10为所述待写入数据中10所占的比例;所述为预设的写入00发生左偏错误的BER;所述为预设的写入10发生右偏错误的BER。
根据第一方面的第一种可能实现的方式,在第三种可能实现的方式中,若所述目标闪存页为最低有效比特位LSB页,所述BER计算方式为:
其中,所述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计算方式为:
其中,所述BMSB为MSB页的BER;所述P00为所述待写入数据中00所占的比例;所述P10为所述待写入数据中10所占的比例;所述为预设的写入00发生左偏错误的BER;所述为预设的写入10发生右偏错误的BER。
根据第二方面的第一种可能实现的方式,在第三种可能实现的方式中,若所述目标闪存页为LSB页,所述BER计算方式为:
其中,所述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 Level Cell,简称MLC)。该目标闪存页的类型,可以是用于存储不同比特位数据的闪存页。该目标闪存页的类型与该目标闪存页中各存储单元可存储的比特数据位数有关,若该目标闪存页中各存储单元可存储的比特数据为2位比特数据,则该待写入数据中分别写入该目标闪存页中各存储单元的比特数据可包括高位比特数据,即最高有效比特位(Most Significant Bit,简称MSB)数据及低位比特数据,即最低有效比特位(Least Significant Bit,简称LSB)。那么,该目标闪存页的类型可包括用于存储MSB数据的MSB页和用于存储LSB数据的LSB页。若该目标闪存页中各存储单元可存储的比特数据为4位或更多位比特的数据,则该待写入数据中分别写入该目标闪存页中各存储单元的比特数据还可包括其他位的比特数据,对应的,该目标闪存页的类型还可包括用于存储该其他比特数据的闪存页。
由于写入不同类型闪存页所存储的比特位数据不同,那么通过编程对该不同闪存页类型的闪存页内部的存储单元充电至不同的电压范围,以存储不同该比特位数据。该不同类型闪存页由于待写入比特位数据的不同,其闪存页的状态,也就是闪存页内部各存储单元的所呈现的电压或其存储电子的个数均不同,那么,该不同类型闪存页中存储数据所产生的BER也不同。
本实施例方案中,根据该目标闪存页的类型及该待写入数据计算该目标闪存页的BER,例如可以是根据目标闪存页的类型,结合该待写入数据的具体内容,计算获得该目标闪存页的BER。其中,该待写入数据的具体内容可以是不同数据类型在该待写入数据中的分布,该不同数据类型可以是不同的比特位数据,如0和1的具体分布。因而,该目标闪存页的BER也可以为基于内容的比特错误率(Content Dependent Bit Error Rate,简称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计算方式为:
其中,该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计算方式为:
其中,该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计算方式为:
其中,该BMSB为MSB页的BER;该P00为该待写入数据中00所占比例;该P10为该待写入数据中10所占的比例;该为预设的写入00发生左偏错误的BER;该为预设的写入10发生右偏错误的BER。
可替代地,如上所述方案中,若该目标闪存页为LSB页,该BER计算方式为:
其中,该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、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种数据存储方法,所述方法应用于固态硬盘中,其特征在于,包括:
接收写请求,所述写请求包括待写入数据和地址;
根据所述地址确定目标闪存页的类型,其中,所述目标闪存页为所述固态硬盘中存储所述待写入数据的闪存页;
根据确定的所述目标闪存页的类型及所述待写入数据,计算所述目标闪存页的比特错误率BER;
根据所述目标闪存页的BER和预设的所述目标闪存页的BER与步幅电压的对应关系确定写入所述待写入数据的步幅电压;其中,所述步幅电压是根据所述固态硬盘的错误纠正码ECC纠错能力所确定的;
根据所述步幅电压将所述待写入数据写入所述目标闪存页。
2.权利要求1所述的方法,其特征在于,所述根据所述目标闪存页的类型及所述待写入数据,计算所述目标闪存页的BER,包括:
根据所述目标闪存页的类型和所述待写入数据,采用与所述目标闪存页的类型对应的BER计算方式,计算所述目标闪存页的BER。
3.根据权利要求2所述的方法,其特征在于,若所述目标闪存页为最高有效比特位MSB页,所述BER计算方式为:
其中,所述BMSB为MSB页的BER;所述P00为所述待写入数据中00所占的比例;所述P10为所述待写入数据中10所占的比例;所述为预设的写入00发生左偏错误的BER;所述为预设的写入10发生右偏错误的BER。
4.根据权利要求2所述的方法,其特征在于,
若所述目标闪存页为最低有效比特位LSB页,所述BER计算方式为:
其中,所述BLSB为LSB页的BER;所述P11为所述待写入数据中11所占的比例;所述P10为所述待写入数据中10所占的比例;所述P00为所述待写入数据中00所占的比例;所述P01为所述待写入数据中01所占的比例;所述为预设的写入11发生右偏错误的BER;所述为预设的写入10发生左偏错误的BER;所述为预设的写入00发生右偏错误的BER;所述为预设的写入01发生左偏错误的BER。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述根据所述目标闪存页的BER和预设的所述目标闪存页的BER与步幅电压的对应关系确定写入所述待写入数据的步幅电压,包括:
根据所述目标闪存页的BER和BER步幅电压对应表确定写入所述待写入数据的步幅电压;其中,所述BER步幅电压对应表包括:所述目标闪存页的BER与步幅电压的对应关系。
6.一种固态硬盘,其特征在于,包括:控制器及存储器;其中,所述存储器包括:至少一个闪存页;所述控制器与所述存储器中的所述至少一个闪存页连接;
所述控制器,用于接收写请求,所述写请求包括待写入数据和地址,根据所述地址确定目标闪存页的类型,根据确定的所述目标闪存页的类型及所述待写入数据计算所述目标闪存页的BER,根据所述目标闪存页的BER和预设的所述目标闪存页的BER与步幅电压对应关系确定写入所述待写入数据的步幅电压,并根据所述步幅电压将所述待写入数据写入所述目标闪存页;其中,所述目标闪存页为所述固态硬盘中存储所述待写入数据的闪存页;所述步幅电压是根据所述固态硬盘的ECC纠错能力所确定的;
所述存储器,用于存储所述待写入数据。
7.根据权利要求6所述的固态硬盘,其特征在于,
所述控制器,还用于根据所述目标闪存页的类型和所述待写入数据,采用所述目标闪存页的类型对应的BER计算方式,计算所述目标闪存页的BER。
8.根据权利要求7所述的固态硬盘,其特征在于,若所述目标闪存页为MSB页,所述BER计算方式为:
其中,所述BMSB为MSB页的BER;所述P00为所述待写入数据中00所占的比例;所述P10为所述待写入数据中10所占的比例;所述为预设的写入00发生左偏错误的BER;所述为预设的写入10发生右偏错误的BER。
9.根据权利要求7所述的固态硬盘,其特征在于,若所述目标闪存页为LSB页,所述BER计算方式为:
其中,所述BLSB为LSB页的BER;所述P11为所述待写入数据中11所占的比例;所述P10为所述待写入数据中10所占的比例;所述P00为所述待写入数据中00所占的比例;所述P01为所述待写入数据中01所占的比例;所述为预设的写入11发生右偏错误的BER;所述为预设的写入10发生左偏错误的BER;所述为预设的写入00发生右偏错误的BER;所述为预设的写入01发生左偏错误的BER。
10.根据权利要求6-9中任一项所述的固态硬盘,其特征在于,
所述控制器,具体用于根据所述目标闪存页的BER和BER步幅电压对应表确定写入所述待写入数据的步幅电压;其中,所述BER步幅电压对应表包括:所述目标闪存页的BER与步幅电压的对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410564041.3A CN105528178B (zh) | 2014-10-21 | 2014-10-21 | 数据存储方法及固态硬盘 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410564041.3A CN105528178B (zh) | 2014-10-21 | 2014-10-21 | 数据存储方法及固态硬盘 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105528178A CN105528178A (zh) | 2016-04-27 |
CN105528178B true CN105528178B (zh) | 2018-09-21 |
Family
ID=55770433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410564041.3A Active CN105528178B (zh) | 2014-10-21 | 2014-10-21 | 数据存储方法及固态硬盘 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105528178B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391035B (zh) * | 2017-07-11 | 2019-05-10 | 华中科技大学 | 一种通过编程错误感知降低固态盘磨损的方法 |
CN109411002B (zh) * | 2017-08-15 | 2021-01-29 | 华为技术有限公司 | 一种数据读取的方法及闪存控制器 |
CN108038023B (zh) * | 2017-12-26 | 2021-01-29 | 广东工业大学 | 一种多级闪存的信号处理方法、装置、设备及存储介质 |
CN109947589B (zh) * | 2019-03-05 | 2023-02-17 | 深圳市得一微电子有限责任公司 | 一种闪存中近似数据存储方法 |
CN112242171A (zh) * | 2019-07-17 | 2021-01-19 | 英韧科技(上海)有限公司 | 参考电压确定方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174457A (zh) * | 2006-09-13 | 2008-05-07 | 三星电子株式会社 | 多位闪存器件和存储单元阵列 |
CN101534267A (zh) * | 2008-03-14 | 2009-09-16 | 华为技术有限公司 | 预编码方法和装置 |
CN103329103A (zh) * | 2010-10-27 | 2013-09-25 | Lsi公司 | 用于基于闪存的数据存储的自适应ecc技术 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100725982B1 (ko) * | 2006-02-03 | 2007-06-08 | 삼성전자주식회사 | 전압 변동에 따른 기록 파라미터 조절방법과 조절장치 |
US7447068B2 (en) * | 2007-03-19 | 2008-11-04 | Macronix International Co., Ltd. | Method for programming a multilevel memory |
-
2014
- 2014-10-21 CN CN201410564041.3A patent/CN105528178B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101174457A (zh) * | 2006-09-13 | 2008-05-07 | 三星电子株式会社 | 多位闪存器件和存储单元阵列 |
CN101534267A (zh) * | 2008-03-14 | 2009-09-16 | 华为技术有限公司 | 预编码方法和装置 |
CN103329103A (zh) * | 2010-10-27 | 2013-09-25 | Lsi公司 | 用于基于闪存的数据存储的自适应ecc技术 |
Also Published As
Publication number | Publication date |
---|---|
CN105528178A (zh) | 2016-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105528178B (zh) | 数据存储方法及固态硬盘 | |
US10101931B1 (en) | Mitigating read errors following programming in a multi-level non-volatile memory | |
US9417803B2 (en) | Adaptive mapping of logical addresses to memory devices in solid state drives | |
CN109558269A (zh) | 一种固态硬盘状态的检测方法、装置和介质 | |
KR102337160B1 (ko) | 혼합 모드 블록들의 동작 | |
CN111324299B (zh) | 用于存储器设备的多态编程的映射 | |
CN110245093A (zh) | 固态存储驱动器阵列中的工作负荷自适应超额配置 | |
US10552063B2 (en) | Background mitigation reads in a non-volatile memory system | |
US20200257621A1 (en) | Garbage collection in non-volatile memory that fully programs dependent layers in a target block | |
CN104866429B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
US20110317488A1 (en) | Data reading method and control circuit and memory controller using the same | |
CN105320464B (zh) | 防止读取干扰的方法、存储器控制电路单元与存储装置 | |
KR20120098963A (ko) | 멀티레벨 데이터 저장 셀용 관리 동작 | |
TW201314449A (zh) | 儲存資料之系統及方法 | |
CN105786411A (zh) | 非易失性存储器装置的操作方法 | |
US10126970B2 (en) | Paired metablocks in non-volatile storage device | |
US11537307B2 (en) | Hybrid wear leveling for in-place data replacement media | |
US8549214B2 (en) | Protection against data corruption for multi-level memory cell (MLC) flash memory | |
US9171629B1 (en) | Storage device, memory controller and memory control method | |
US20200356283A1 (en) | Multi-level wear leveling for non-volatile memory | |
TWI553481B (zh) | 固態硬碟的資料管理方法、寫入管理系統及其方法 | |
CN102929784A (zh) | 非挥发性内存的写入方法 | |
CN103077096A (zh) | 数据纠错系统、固态硬盘及数据纠错方法 | |
US11016693B2 (en) | Block health estimation for wear leveling in non-volatile memories | |
CN103279402A (zh) | 基于多层单元固态硬盘的数据恢复方法及固态硬盘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |