利用温差均衡方法进行数据纠错的存储装置与流程

文档序号:16996222发布日期:2019-03-02 01:23阅读:148来源:国知局
利用温差均衡方法进行数据纠错的存储装置与流程

本发明涉及数据存储装置,属于数据存储控制领域。



背景技术:

随着闪存的更新换代,闪存中存储的数据对温度的变化越来越敏感,譬如,高温下写入的数据,在低温下读取出错的机率会大幅度增加,反之也是。

然而,越来越多的闪存比如ssd固态硬盘或是存储阵列在工业场合被使用,而这些场合的环境温度的变化是十分宽泛的:从-40℃-+85℃,这这种大温差环境下工作环境下,闪存中写入的数据会随着外界环境温度的变化发生变化,即存储芯片中的0、1数码状态发生改变,当改变到一定程度后,会导致存储的数据、文件发生损坏或是丢失。

现有技术中尚没有较好的解决方案,业界通常的方法是建立备份,即在特定的恒温环境中建立服务器或是存储中心来备份保存关键的数据,显然该种方案并不适合所有的用户,特别是不适合个人消费用户以及中小企业使用。



技术实现要素:

本发明是为了解决上述宽温差条件下,现有技术不能较好的实现数据可靠读写、无法进行自我纠错的缺陷进行的,目的在于提供一种利用温差均衡方法进行数据纠错的存储装置。

本发明提供一种利用温差均衡方法进行数据纠错的存储装置,具有存储芯片、控制芯片以及与外部的数据源连接的接口,其中控制芯片中存储有控制程序,控制程序实现以下步骤:

将存储芯片划分为多个存储区域,所述区域包含多个存储单位;

随着数据被写入到存储单位中,当某个存储单位被写满时,就记录该时刻对应的温度t1,并被作为元数据写入存储,得到每个存储单位对应的写入温度t1,并计算整个存储芯片被多次写入直至写满时的全盘写入时的平均温度t;

写入完成后,实时监测存储芯片所处的实时环境温度t2;

判断环境温度t2与写入时的平均温度t之间的差值是否超过阈值t,如果超过进入下一步;

当差值超过阈值t时,进一步判断环境温度t2是否达到设定的理想写入温度,当环境温度t2达到设定的理想写入温度时,就计算某个存储区域中所有的存储单位的写入温度t1与该环境温度t2的差值的总和,得到所有的存储区域的差值总和;

以存储区域的差值总和的大小进行排序,从大到小依次对所有的存储区域中的数据进行检验和纠错。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,其中,所述存储单位为存储块或存储页。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,对数据进行检验的过程包括:

比较某个存储区域中,所有的存储单位对应的环境温度与写入温度t1之间的差值并根据数值大小进行排列,从大到小依次对存储单位进行数据扫描、检验得到误码率。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,数据纠错过程包括:

当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单位中,同时记录下写入时的写入温度t1;

当数据误码率超过存储芯片自身的硬件ecc纠错能力,启动额外的数据恢复机制来恢复纠错。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,设定存储芯片自身的硬件ecc纠错能力为70-85%的误码率。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,所述额外的数据恢复机制包括raid数据恢复。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,所述理想写入温度的设定值是根据存数据存储装置的产品规格、实际使用环境、闪存类型、生命周期这样因素进行设定的。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,某个存储区域的所有存储单位对应的写入温度t1按照数值大小保存在特定的存储区域中。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,所述存储装置为ssd固态硬盘。

本发明提供的利用温差均衡方法进行数据纠错的存储装置,还可以具有这样的特征,其中,所述ssd固态硬盘的存储芯片为slc、mlc、tlc或qlc闪存颗粒的存储芯片。

本发明的作用和效果在于:根据本发明所涉及的利用温差均衡方法进行数据纠错的存储装置,因为因为在控制芯片中存储有控制程序,该程序首先将存储芯片划分为多个存储区域,所述区域包含多个存储单位;然后随着数据被写入到存储单位中,当某个存储单位被写满时,就记录该时刻对应的温度t1,并被作为元数据写入存储,得到每个存储单位对应的写入温度t1,并计算整个存储芯片被多次写入直至写满时的全盘写入时的平均温度t;待写入完成后,实时监测存储芯片所处的实时环境温度t2;实时判断环境温度t2与写入时的平均温度t之间的差值是否超过阈值t,如果超过进入下一步;一旦当差值超过阈值t时,进一步判断环境温度t2是否达到设定的理想写入温度,当环境温度t2达到设定的理想写入温度时,就计算某个存储区域中所有的存储单位的写入温度t1与该环境温度t2的差值的总和,得到所有的存储区域的差值总和;最后以存储区域的差值总和的大小进行排序,从大到小依次对所有的存储区域中的数据进行检验和纠错,所以,本发明能够及时的获取写入数据后的存储芯片所处的温度,只有当存储芯片所处的环境温度与全盘写入时的平均温度的差值超过设定的阈值时,才会触发温差均衡的数据恢复方法进行数据纠错;而在进行数据纠错时,通过等待环境温度达到设定的最佳写入温度时,才进行数据检验和恢复操作,通过计算某个存储区域中所有的存储单位的写入温度t1与该环境温度的差值的总和,得到所有的存储区域的差值总和然后根据差值总和的大小进行排序,从大到小依次对所有的存储区域中的数据进行误码率检验和数据恢复,如此的操作不仅可以对有可能出现数据丢失的数据进行纠错恢复,而且能够在最佳写入温度时写入正确的数据,起到较好的数据数据纠错固化效果。。

附图说明

图1为本发明的实施例中的利用温差均衡方法进行数据纠错的存储装置的结构示意图;以及

图2是本发明的实施例中控制芯片存储的控制程序所对应的利用温差均衡方法进行数据纠错的方法的步骤示意图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明利用温差均衡方法进行数据纠错的存储装置作具体阐述。

实施例1

图1为本发明的实施例中的利用温差均衡方法进行数据纠错的存储装置的结构示意图。

如图1所示,利用温差均衡方法进行数据纠错的存储装置100,具有存储芯片10、控制芯片20以及与外部的数据源连接的接口30以及pcb板40、温度传感器50,其中控制芯片中存储有控制程序。

所述存储芯片10为slc、mlc、tlc或qlc闪存颗粒制成的存储芯片。

在本实施例中,所述存储芯片为nand闪存芯片,具体为slc、mlc、tlc或qlc闪存颗粒制作的nand闪存芯片。在理论上,也可以是其他类型的存储芯片,比如nor闪存、rom、prom、eprom、eeprom、flashrom、fram、mram、rram、pcram等,都是可以作为本发明的存储芯片的。

slc,single-levelcell,即1bit/cell,速度快寿命长,价格超贵(约mlc3倍以上的价格),约10万次擦写寿命。

mlc,multi-levelcell,即2bit/cell,速度一般寿命一般,价格一般,约3000---10000次擦写寿命。

tlc,trinary-levelcell,即3bit/cell,也有flash厂家叫8lc,速度相对慢寿命相对短,价格便宜,约500次擦写寿命。

qlc,quad-levelcell,即4bit/cell,支持16充电值,速度最慢寿命最短。

这三种结构的nand闪存芯片,简单地说slc的性能最优,价格超高。一般用作企业级或高端发烧友。mlc性能够用,价格适中为消费级ssd应用主流,tlc综合性能最低,价格最便宜。但可以通过高性能主控、主控算法来弥补、提高tlc闪存的性能。

控制芯片20,使用通用的ssd控制芯片,市售购买,比如sata3控制器,选用美国marvell公司(中文名迈威科技集团有限公司,现更名美满)的88ss1074、88ss1079控制器,适用sata数据接口;

nvme控制器,选用美国marvell公司(中文名迈威科技集团有限公司,现更名美满)88ss1093、88ss1092控制器,适合于nvme协议下的pcie数据接口。

这里列举的美国marvell公司只是一个实例,实际上市面上任何厂家的ssd控制器都可以实现,并不限定是美国marvell公司。

数据源连接的接口30,使用的接口包括pcie、sata接口。

pcb板40,作为以上硬件的电路载体,所述存储芯片10、控制芯片20以及接口30都设置在所述pcb板40上。所述pcb设置有温度传感器50,用来检测所述存储芯片40的温度。

图2是本发明的实施例中控制芯片存储的控制程序所对应的利用温差均衡方法进行数据纠错的方法的步骤示意图。

控制芯片20中存储有控制程序,控制程序实现以下的利用温差均衡方法进行数据纠错,如图2所示,利用温差均衡方法进行数据纠错包括以下步骤:

步骤s1,将存储芯片划分为多个存储区域,所述区域包含多个存储单位。

在本实施例中,所述存储芯片为nand闪存芯片,具体为slc、mlc、tlc或qlc闪存颗粒制作的nand闪存芯片。在理论上,也可以使其他类型的存储芯片,比如nor闪存、rom、prom、eprom、eeprom、flashrom、fram、mram、rram、pcram等,都是可以作为本发明的存储芯片的。

slc,single-levelcell,即1bit/cell,速度快寿命长,价格超贵(约mlc3倍以上的价格),约10万次擦写寿命。

mlc,multi-levelcell,即2bit/cell,速度一般寿命一般,价格一般,约3000---10000次擦写寿命。

tlc,trinary-levelcell,即3bit/cell,也有flash厂家叫8lc,速度相对慢寿命相对短,价格便宜,约500次擦写寿命。

qlc,quad-levelcell,即4bit/cell,支持16充电值,速度最慢寿命最短。

这三种结构的nand闪存芯片,简单地说slc的性能最优,价格超高。一般用作企业级或高端发烧友。mlc性能够用,价格适中为消费级ssd应用主流,tlc综合性能最低,价格最便宜。但可以通过高性能主控、主控算法来弥补、提高tlc闪存的性能。

其中,所述存储单位为存储块(block)或存储页(page),一般而言,一个基本的存储单位的容量为16k字节,这个具体的数据根据存储颗粒的生产厂家不同而有不同。

步骤s2,随着数据被写入到存储单位中,当某个存储单位被写满时,就记录该时刻对应的温度t1,并被作为元数据写入存储,得到每个存储单位对应的写入温度t1,并计算整个存储芯片被多次写入直至写满时的全盘写入时的平均温度t。

每个存储区域的所有存储单位对应的写入温度t1按照数值大小保存在特定的存储区域中。

将所有存储单位对应的写入温度进行算术求和,然后除以写入温度的个数就得到这里的平均温度t。

在写入数据时,都通过存储装置(包括控制芯片和存储芯片)所具有的控制芯片进行了ecc保护。

ecc是“errorcorrectingcode”的简写,中文名称是“错误检查和纠正”。ecc是一种能够实现“错误检查和纠正”的技术,ecc保护就是应用了这种技术对存储的数据进行保护的操作,一般在存储数据时,通过控制芯片将对应的ecc代码写入并存储到存储芯片中,这将使存储在存储芯片中的数据可以进行硬件恢复。ecc也可以解释为errorcorrectionorcorrectingcode、errorcheckingandcorrecting、errorcheckingandcorrecting,还可以解释为errorcorrectioncircuit,其是一种成熟应用在数据存储设备上的的数据保护和恢复机制。

步骤s3,写入完成后,实时监测存储芯片所处的实时环境温度t2。

因为数据的写入可能是连续的,也可能是断断续续的,而实际中写入过程和读出过程以及等待过程是相互交错的,所以这里的写入完成是对某个存储单位而言,也可以是针对某个人为划分的存储区域。

实时监测环境温度t2的采样频率为每1-30秒一次,这个频率是根据该存储芯片所处的工作环境以及读写的频率而定的,如果工作环境的温度变化比较大,并且存储芯片读写比较频繁,就意味着该种情况下,存储芯片的温度变化会比较剧烈,对应的环境温度的采样频率就会比较高。

步骤s4,判断环境温度t2与写入时的平均温度t之间的差值是否超过阈值t,如果超过进入下一步。

具体的对于每一个存储单位而言,需要实时的计算实时的环境温度t2与写入时的平均温度t的温度差值,并判断该差值是否查过设定的阈值t。

显然,根据背景技术中介绍的存储芯片中写入的数据对温度的敏感情况,写入温度和环境温度的差值如果达到某个值,也就是这个阈值t,那么数据丢失的风险就会很大,而这个阈值t显然和存储芯片的类型、生产的工艺以及生产厂家都会有关系。

对于使用环境而言,也会影响到这个阈值t的设定值。显然,由于数据的重要程度差异,对于特别重要的宝贵数据,我们设定的差值的阈值t就比较小,这样微小的温度变动都能触发后续步骤s4的检验操作,从而能更好的保护这些宝贵数据的完整性。

另一方面,由于存储芯片类型,比如slc类型的nand闪存颗粒就比mlc类型的nand闪存颗粒稳定,可靠,其对温度变动就具有更强的抵抗能力,即使温度变化,其数据的稳定性也比mlc,tlc高一些,这样使用slc类型闪存颗粒的存储芯片的差值的阈值t就可以在相同的情况下设定的更大一些。

同样的道理,不同的生产的工艺以及生产厂家也会导致存储芯片的温度差值的阈值t不同。申请人建议使用的阈值范围是20-80oc。

步骤s5,当差值超过阈值t时,进一步判断环境温度t2是否达到设定的理想写入温度,当环境温度t2达到设定的理想写入温度时,就计算某个存储区域中所有的存储单位的写入温度t1与该环境温度t2的差值的总和,得到所有的存储区域的差值总和。

其中,所述理想写入温度的设定值是根据存数据存储装置的产品规格、实际使用环境、闪存类型、生命周期这样因素进行设定的。在环境温度达到设定的理想写入温度时,写入的数据具有更好的可靠性,更牢固,更不容易出现失误或是丢失,在以后的保存环境中具有对外界温度变化更好的适应性。

当环境温度t2达到设定的理想写入温度时,就计算每个存储区域中所有的存储单位的写入温度t1与该环境温度的差值的总和,得到所有的存储区域的差值总和。

步骤s6,以存储区域的差值总和的大小进行排序,从大到小依次对所有的存储区域中的数据进行误码率检验步骤和数据恢复步骤。

其中,对数据进行误码率检验的过程步骤包括:

比较某个存储区域中,所有的存储单位对应的环境温度与写入温度t1之间的差值并根据数值大小进行排列,从大到小依次对存储单位进行数据扫描、检验得到误码率。

判断数据的误码率是否达到误码率阈值,如果达到误码率阈值则进行数据恢复。

根据某个存储单位所存储的数据的误码率与阈值、存储芯片的硬件ecc纠错能力所能达到的误码率的大小关系进行对应的处理。

硬件ecc保护机制在数据纠错过程中可以汇报每单元数据(一般是512byte-4kb之间)所能纠正的数据的比特(bit)数量,再根据硬件ecc的纠错能力,设置一个相对的百分比阈值,即误码率的最高值,作为存储芯片的硬件ecc纠错能力所能达到的误码率,这个误码率称为硬件ecc的纠错能力。本实施例会根据存储设备的生命周期,闪存特性,将硬件ecc的纠错能力设定在误码率在70-85%内。

其中,数据恢复过程步骤包括:

当数据误码率未达到阈值时,说明数据是可靠的,并没有发生丢失情况,无需进行处理。这个阈值称为数据可靠阈值,一般是由存储装置的控制芯片来决定,数值从10-5到10-9不等。

当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单位中,同时再次记录下写入时的写入温度t1。

当数据误码率超过存储芯片自身的硬件ecc纠错能力时,启动额外的数据恢复机制来恢复数据。其中,所述额外的数据恢复机制包括raid数据恢复、re-try,soft-retry数据恢复等。

raid的全称是redundantarrayofinexpensivedisk,中文翻译为廉价冗余磁盘阵列的简称简称raid技术。它是1988年由美国加州大学berkeley分校的davidpatterson教授等人提出来的磁盘冗余技术。从那时起,磁盘阵列技术发展得很快,并逐步走向成熟。

目前人们逐渐认识了磁盘阵列技术。磁盘阵列技术可以详细地划分为若干个级别0-5raid技术,并且又发展了所谓的raidlevel10,30,50的新的级别。用raid的好处简单的说就是:安全性高,速度快,数据容量超大。某些级别的raid技术可以把速度提高到单个硬盘驱动器的400%。磁盘阵列把多个硬盘驱动器连接在一起协同工作,大大提高了速度,同时把硬盘系统的可靠性提高到接近无错的境界。这些“容错”系统速度极快,同时可靠性极高。

raid恢复方法是使用多个die(磁盘片或是存储单位)奇偶校验,可以挽救整个die(磁盘片或是存储单位)的报废或是数据丢失,从而对数据进行恢复。

re-try,即readretry,mlc或tlc、slc的几个数据点电压分布有可能会平移,只要几个分布没有叠加就可以恢复。readretry尝试用不同的参考电压来读取数据,直到读出来。

soft-retry,即用软信息读。从不同的参考电压读到几组数据后综合得到最终数据。这个需要更强大的ecc纠错能力,如ldpc(lowdensityparitycheckcode的英文缩写,中文意思是低密度奇偶校验码,最早在20世纪60年代由gallager在他的博士论文中提出。)如数据无法通过任何机制恢复,将对应的数据标注为损坏,如读到此存储单位的数据,将返回错误状态,显示该区域数据不可读。

本实施例的作用与效果在于:根据本实施例所涉及的实现数据可靠性读写的方法,因为在存储芯片写入数据时,记录写入温度t1;而在写入完成后,实时监测存储芯片所处的环境温度t2;在采集到环境温度后,判断环境温度t2与写入温度t1之间的差值是否超过阈值t,如果超过说明该环境下保存的数据可能会发生较大的改变,需要进行检验;当差值超过阈值t时,对存储的数据进行检验并得到数据的误码率;根据数据的误码率的不同情形,及时的采用不同的修复方式进行数据恢复,所以,本发明提供的方法运行在存储装置中能够及时的获取写入数据后的存储芯片所处的温度,并实时与写入时的温度进行比较,当写入温度和环境温度超过设定的阈值时,就说明写入后存储的数据可能发生了丢失,并进一步进行检验来获知具体的数据误码率,根据数据的误码率大小来选择不同的修复方式进行数据修复。

进一步,因为记录写入温度t1的过程是先将存储芯片划分为多个存储区域,所述区域包含多个存储单位;然后随着数据被写入到存储单位中,当存储单位被写满时,就记录该时刻对应的温度t1,并被作为元数据写入存储,得到每个存储单位对应的写入温度t1,所以每个最基本的存储单位都会对应有一个写入温度并作为元数据,如此就可以对每个基本的存储单位进行监控检验并在出现数据丢失时进行恢复。

更进一步,对存储的数据进行检验的过程有两种操作模式:

模式一包括以下操作:

比较所有的存储单位对应的环境温度t2与写入温度t1之间的差值并根据数值大小进行排列,优先对差值数据大的存储单位进行数据扫描读取,扫描读取后得出某个存储单位所存储数据的误码率。

显然这中操作是适合于存储芯片比较忙,即正在进行数据的读或者写操作的时候,由于这种情况下,无法进行全盘扫描读取。此种状况下,本实施例依照差值大小进行排序,优先处理差值大的存储单位来进行检验,这样相当于在战场中对伤患进行分级,优先处理救治重伤员,本实施例如此操作可以在存储芯片繁忙时,达到最优的数据检验和恢复效果。

更进一步,本实施例对于不同的数据的误码率的不同,根据某个存储单位所存储的数据的误码率与阈值、存储芯片的硬件ecc纠错能力所能达到的误码率的大小关系进行对应的处理:

当数据误码率未达到阈值时,说明数据是可靠的,并没有发生丢失情况,无需进行处理;

当数据误码率达到阈值,但未超过存储芯片自身的硬件ecc纠错能力时,启动硬件ecc纠错,将完整恢复的数据再回写到新的存储单位中,同时再次记录下写入时的写入温度t1;

当数据误码率超过存储芯片自身的硬件ecc纠错能力时,启动额外的数据恢复机制来恢复数据。其中,所述额外的数据恢复机制包括raid数据恢复、re-try,soft-retry数据恢复等;

如数据无法通过任何机制恢复,将对应的数据标注为损坏,如读到此存储单位的数据,将返回错误状态,显示该区域数据不可读。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1