掌桥专利:专业的专利平台
掌桥专利
首页

数据存储方法、存储装置及计算机可读存储装置

文献发布时间:2024-04-18 20:01:30


数据存储方法、存储装置及计算机可读存储装置

技术领域

本申请涉及数据存储领域,特别是涉及一种数据存储方法、存储装置及计算机可读存储装置。

背景技术

在NAND FLASH存储器中,存储单元以块和页的形式进行数据的存储。一个闪存块中包括多个闪存页。在进行数据的读取或写入等操作时,需要先选中数据对应的闪存页,然后对该闪存页进行相应的操作。但是在选中该闪存页时,其对应闪存块中邻近的闪存页会因为字线串扰而产生数据电压偏移,长期偏移过后可能会导致比特翻转,使得存储数据错误。而存储数据的单元在长期不使用的情形下,也会发生电荷泄露的问题,使得存储数据错误。

发明内容

本申请主要目的是提供一种数据存储方法、存储装置及计算机可读存储装置,能够解决数据存储过程中由于读写等操作或长期未使用引起的数据比特翻转的技术问题。

为解决上述技术问题,本申请采用的第一个技术方案是:提供一种数据存储方法。该方法包括:获取数据在存储单元进行读取的读取次数;判断数据在存储单元的读取次数是否大于数据的预设读取次数,且次数相差大于一;若是,将数据备份至新的存储单元,以用于在存储单元的数据读取出错时,读取新的存储单元中的备份数据。

为解决上述技术问题,本申请采用的第二个技术方案是:提供一种存储装置。该存储装置包括存储器和处理器,存储器用于存储程序数据,程序数据能够被处理器执行,以实现如第一个技术方案中所述的方法。

为解决上述技术问题,本申请采用的第三个技术方案是:提供一种计算机可读存储装置。该计算机可读存储装置存储有程序数据,能够被处理器执行,以实现如第一个技术方案中所述的方法。

本申请的有益效果是:通过获取数据在原本的存储单元进行读取的次数,在判断到读取的次数比该数据对应的预设读取次数大一时,对该数据进行备份,备份至新的存储单元中。在数据读取达到预设读取次数时进行数据备份,此时存储单元中存储的数据还是正确的数据,而超过预设读取次数后,存储中数据就可能会因读写时干扰等原因发生比特翻转导致存储数据错误。数据备份之后,在主机读取该数据时,依旧是从原本的存储单元进行数据的读取,不过当原本的存储单元中的数据出错时,以新的存储单元中的备份数据替代原本的存储单元的数据。从而保证了在读取长期存储数据或频繁使用数据时读取出的数据的准确性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请FLASH一存储单元结构示意图;

图2是本申请FLASH中存储单元的结构示意图;

图3是本申请数据存储方法第一实施例的流程示意图;

图4是本申请数据存储方法第二实施例的流程示意图;

图5是本申请数据存储方法第三实施例的流程示意图;

图6是本申请数据存储方法第四实施例的流程示意图;

图7是本申请存储装置一实施例的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在描述本申请的技术方案之前,先对一些概念进行简单介绍。

参照图1,图1为FLASH一存储单元结构示意图。在图中,一个 MOS管由两个门组成。第一个门由氧化物包围,第二个门被连接到外面。而位于中间而定第一个门就相当于构成了一个电子隔离带,这样就保证了存储在第一个门中的电子,即数据能够保留很长时间。对这个隔离起来的部分进行充电和放电的过程就称为写入和擦除。

参照图2,图2是FLASH中存储单元的结构示意图。在FLASH闪存中,包括多个闪存块,而每个闪存块包括多个闪存页。每一闪存页对应一条字线,在一闪存块中选取一闪存页进行数据读取时,未选中的闪存页其控制极,也就是字线上会施加一个正电压,以保证未选中的MOS 管是导通的。而频繁的在一个MOS管的控制极施加正电压,会导致电子被吸进浮栅极,电压改变,最终导致比特翻转。

而对于每个闪存页中多个闪存单元,由于浮栅极是存储电荷的导体,闪存单元之间就会存在耦合电容。耦合电容对其间的闪存单元产生影响,就会使得其存储的电荷发生变化,时间长了也会导致数据错误。闪存单元中存储的电荷在经过长期时间后,其可能会发生电荷泄露,泄露后闪存单元存储的数据也会变化。

以上问题是由于某些因素影响了闪存单元中存储的电压数据,使得存储数据发生错误。如果将数据重新写入闪存单元,上述问题的影响就会消失,然后随着存储时间和读取次数的增加再次出现。

在存储单元中,一些存储的数据由于不需要经常性的修改或不需要修改,只是需要时不时读取其以进行使用。当这些存储的数据在读取多次或存储在同一闪存单元的时间过长后,其再次进行读取时读取出的数据就大概率会出现错误。为了解决这些数据读取出错的问题,本申请提出了以下技术方案。

参照图3,图3为本申请数据存储方法第一实施例的流程示意图。其包括以下步骤:

S11:获取数据在存储单元进行读取的读取次数。

获取数据在存储单元的读取次数,该读取次数是从该数据存在该存储单元的第一次读取开始计算的。当该数据变换了存储的位置,即新的存储单元时,读取次数会重置,以该数据在新的存储单元中第一次读取重新开始计算。该数据可以是计算系统自身使用的数据,也可以是用户存储至存储装置中的非系统数据的外部数据,本申请对数据的类型不做限定,任何数据都可适用于本申请的技术方案。

获取数据在存储单元的读取次数的方式可以是,为存储单元关联计数器,在对存储单元进行写入或擦除操作时,该存储单元对应的计数器清空计数,在对存储单元进行读取操作时,计数器的计数加一。该存储单元关联的计数器的计数即判断为存储在该存储单元中数据的读取次数。

S12:判断数据在存储单元的读取次数是否大于数据的预设读取次数,且次数相差等于一。

在数据进行读取时,获取数据在该存储单元位置的读取次数,判断读取的次数是否比预设读取次数大一,若是,执行步骤S13。

数据的预设读取次数可以根据该数据的属性特征、以及该数据读取时的实际情况进行设置。

在一实施例中,根据数据的属性特征为其设置对应的预设读取次数。属性特征包括数据的数据量大小。在数据读取时,一般情况下,主控对于大块数据的读取概率是低于对于小块数据的读取概率的,也就是说数据量较小的存储数据是有更大的可能被主控频繁的读取使用。因此可以为数据量大的存储数据设定较小的预设读取次数,为数据量小的存储数据设定较大的预设读取次数。属性特征也可以包括数据的数据类型。在数据读取时,数据也可以被分为与系统启动有关的数据和与系统启动无关的常规数据。进一步结合具体实际情况,如果系统需要频繁进行重启、复位、开关机等操作,则为与系统启动有关的数据设定较大的预设读取次数。如果系统使用时需要频繁使用存储的常规数据,则为常规数据设定较大的预设读取次数。一般情况下,系统启动的次数较少,而读取使用常规数据的次数较多,因此会为与系统启动有关的数据设定较小的预设读取次数,为常规数据设定较大的预设读取次数。

在一实施例中,根据数据读取时的实际情况为其设置对应的预设读取次数。实际情况包括数据在预设时间内的读取次数。在数据读取的过程中,直接通过对该数据的读取频繁程度来对其进行预设读取次数的设定。该读取次数可理解为在实际情况中,用户对于该数据的使用的频繁程度,对应该数据在预设时间内被读取的次数。当判断在预设时间内读取次数超过预设阈值时,判定该数据读取为频繁,为其设定较大的预设读取次数。当预设时间内读取次数未超过预设阈值,判定该数据读取不频繁,为其设定较小的预设读取次数。

在一实施例中,根据数据读取时的实际情况为其设置对应的预设读取次数。实际情况包括主控读取该数据时的读取情景,即该数据的使用场景。数据读取过程中,有一些数据,是上电或复位时需要读取使用的相关数据。而一般来说对于系统整体,其上电或复位的情况比较少,因此对于这些数据来说,读取的次数就比较少,就为其设定较小的预设读取次数。

S13:将数据备份至新的存储单元,以用于在存储单元的数据读取出错时,读取新的存储单元中的备份数据。

判断到数据进行读取的当前次数刚好比预设读取次数大一时,对该数据进行备份处理。将该数据存储至其它的存储单元中。由于多次的读取干扰可能会使得闪存页中存储的数据发生比特翻转,导致出现数据错误。而该数据在该存储单元的读取次数超过了预设读取次数,再继续进行读取的话基于上述原因就可能会出现数据的比特翻转,因此在数据尚未出错时对其进行备份。备份之后继续读取,在读取数据出错后调用备份的数据进行读取以保证数据的准确性。

在本实施例中,在数据读取达到预设读取次数时进行数据备份,此时存储单元中存储的数据还是正确的数据,而超过预设读取次数后,存储单元中数据就可能会因读写时干扰等原因发生比特翻转导致存储数据错误。数据备份之后,在主机读取该数据时,依旧是从原本的存储单元进行数据的读取,不过当原本的存储单元中的数据出错时,以新的存储单元中的备份数据替代原本的存储单元的数据。从而保证了在读取长期存储数据或频繁使用数据时读取出的数据的准确性。并且,在数据达到预设的读取次数时,仅是对数据进行备份,并不是直接对数据进行重新写入,使得读取存储的数据时能够最大限度利用该存储单元的存储性能。

参照图4,图4为本申请数据存储方法第二实施例的流程示意图。其包括以下步骤:

S21:判断到数据在存储单元的读取次数大于数据的预设读取次数,且次数相差大于一时,读取存储单元中的数据时对数据进行校验。

在进行数据备份之后,如果还需要对该数据进行读取,依旧是从原存储单元中读取该数据。但是,继续进行读取,从原存储单元中读取该数据时,数据可能会出错,因此需要对其进行校验。数据校验可以利用已备份的数据对其进行校验,也可以是常规的一些数据校验手段,例如 ECC校验。若校验失败,执行步骤S22。

S22:读取新的存储单元中的备份数据并对备份数据在新的存储单元的读取进行读取次数记录。

在数据检验失败时,说明该存储单元中存储数据的电荷已经发生改变,存储的数据已经改变,不再是原本的数据。因此读取新的存储单元中的备份数据,以代替原本存储单元中的数据进行使用。

参照图5,图5为本申请数据存储方法第三实施例的流程示意图。该方法是对上述实施例的进一步扩展。其包括以下步骤:

S31:将映射表中数据的逻辑地址对应的物理地址更新为新的存储单元的物理地址。

数据校验失败,以备份的数据代替原本的数据进行输出时,需要对地址映射表中存储的地址映射关系进行更新。数据的读取都是根据地址映射关系确定数据保存位置进而进行读取的。映射表中的地址映射关系为逻辑地址和物理地址之间的映射关系。逻辑地址为主控所生成的地址。逻辑地址一般是在内部和编程时使用。物理地址是加载至存储单元中的地址。物理地址是明确的,对应着实际的存储单元位置。每份数据由主控生成其逻辑地址,然后将其数据存储至实际的存储单元位置中,再将该存储单元的物理地址与逻辑地址相对应,以用于后续该数据的选中。当原本数据出错,即存储至原本存储单元的数据已经出错,以备份数据替换原本数据输出,备份数据是原本数据出错之前存储至新存储单元的原本数据备份,备份数据还是正确的数据。由于备份数据是新的存储单元,也就是新的物理地址,因此在数据需要以备份数据进行输出时,需要将该数据的逻辑地址对应的物理地址从原本存储单元的物理地址,更换为新存储单元的物理地址,读取出的才是出错之前备份的数据,才是正确的数据。

S32:删除存储单元中存储的数据。

由于数据校验失败,说明原本存储单元中的数据已经出错,而数据逻辑地址对应的物理地址也已经更换为新物理地址,新物理地址中存储的是未出错的数据,则对原本存储单元中的数据进行删除即可。

该删除原存储单元中的数据和修改映射表地址的步骤可同时进行,也可先后进行,并且其执行顺序可自行设置,本实施例的步骤并不对其执行先后时间进行限定。

参照图6,图6为本申请数据存储方法第四实施例的流程示意图。该方法是对上述实施例的进一步扩展。其包括以下步骤。

S41:获取数据在存储单元进行读取的读取次数。

获取数据在存储单元的读取次数,该读取次数是从该数据存在该存储单元的第一次读取开始计算的。当该数据变换了存储的位置,即新的存储单元时,读取次数会重置,以该数据在新的存储单元中第一次读取重新开始计算。该数据可以是计算系统自身使用的数据,也可以是用户存储至存储装置中的非系统数据的外部数据,本申请对数据的类型不做限定,任何数据都可适用于本申请的技术方案。

S42:判断数据在存储单元的读取次数是否大于数据的预设读取次数,且次数相差等于一。

当数据在存储单元的读取次数小于或等于数据的预设读取次数时,执行步骤S43。当数据在存储单元的读取次数大于数据的预设读取次数,且次数相差等于一时,执行步骤S44。当数据在存储单元的读取次数大于数据的预设读取次数,且次数相差大于一时,执行步骤S45。

S43:读取数据。

当判断到数据在存储单元的读取次数小于该数据对应的预设读取次数时,直接从该数据对应的存储单元读取该数据。此时由于读取次数小于预设读取次数,判断该存储单元中存储的数据读取时还是正确的。

S44:将数据备份至新的存储单元,以用于在存储单元的数据读取出错时,读取新的存储单元中的备份数据。

判断到数据进行读取的当前次数刚好比预设读取次数大一时,对该数据进行备份处理。将该数据存储至其它的存储单元中。由于多次的读取,多次的字线串扰,可能会使得闪存页中存储的数据发生比特翻转,导致出现数据错误。而该数据在该存储单元的读取次数超过了预设读取次数,再继续进行读取的话基于上述原因就可能会出现数据的比特翻转,因此在数据尚未出错时对其进行备份。

S45:读取存储单元中的数据时对数据进行校验。

在对该数据进行备份之后,继续读取该数据时,还是从原存储单元进行读取。但是由于此时读取出的数据可能会出错,因此需要对其进行数据校验。如果校验失败,说明读取的数据出错了,执行步骤S46。

S46:读取备份数据,将映射表中数据的逻辑地址对应的物理地址更新为新的存储单元的物理地址,并删除存储单元中存储的数据。

数据校验失败,以备份的数据代替原本的数据进行输出时,需要对地址映射表中存储的地址映射关系进行更新。因为原存储单元中存储的数据已经出错了,需要对其进行删除,后续读取都是以实现备份的数据进行读取和输出,因此在映射表中以备份数据的物理地址代替原数据的物理地址。

本实施例中相关步骤可参照上述实施例的描述,在此不再赘述。

在上述实施例的基础上,备份数据也可以是直接对原存储单元中的数据进行覆盖。

在获取数据在存储单元进行读取的读取次数后,判断该数据在存储单元的读取次数是否大于数据的预设读取次数,且次数相差等于一。

若是,则读取该数据,将该数据重新写入至该存储单元。从而消除读写干扰引起的电荷偏移的影响。由于是直接对相同存储单元进行重新写入,也无需进行映射表的地址修改,也无需占用多余的存储空间。

如图7所示,图7为本申请存储装置一实施例的结构示意图。

该存储装置包括处理器110、存储器120。

处理器110控制存储装置的操作,处理器110还可以称为CPU (CentralProcessing Unit,中央处理单元)。处理器110可能是一种集成电路芯片,具有信号序列的处理能力。处理器110还可以是通用处理器、数字信号序列处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器120存储处理器110工作所需要的指令和数据。

处理器110用于执行指令以实现本申请前述数据存储方法的任一实施例及可能的组合所提供的方法。

综上所述,通过获取数据在原本的存储单元进行读取的次数,在判断到读取的次数比该数据对应的预设读取次数大一时,对该数据进行备份,备份至新的存储单元中。在数据读取达到预设读取次数时进行数据备份,此时存储单元中存储的数据还是正确的数据,而超过预设读取次数后,存储单元中数据就可能会因读写干扰等原因发生比特翻转导致存储数据错误。数据备份之后,在主机读取该数据时,依旧是从原本的存储单元进行数据的读取,不过当原本的存储单元中的数据出错时,以新的存储单元中的备份数据替代原本的存储单元的数据。从而保证了长期存储在存储单元中的数据或是频繁使用后的数据继续使用时读取的准确性。

在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等) 或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM, Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

相关技术
  • 用于空调的智能控温装置方法及装置、空调、存储介质
  • 空调的控制方法及装置、空调器、存储介质
  • 空调器的出风控制方法、控制装置、空调器及存储介质
  • 一种空调的控制方法、装置、存储介质及空调
  • 一种空调控制方法、装置、存储介质及空调
  • 用于空调的安全预警方法及装置、空调、存储介质
  • 用于空调的故障预警方法及装置、空调、存储介质
技术分类

06120116560851