发明内容
针对存储装置内部各单元使用寿命差距过大以及存储数据不稳定的问题,本发明提供了一种用于存储装置数据访问方法,所述方法包含以下步骤:
步骤一,将存储装置的数据存储区划分为多个数据存储单元,按照访问规则从所述数据存储单元中读取数据或将数据写入所述数据存储单元中;
步骤二,对每个数据存储单元的访问次数进行计数;
步骤三,判断所述访问次数是否达到或超过预先设定的阈值;
步骤四,当访问次数判断结果为是时,将访问次数最大一个或几个数据存储单元与当前访问次数小于所述阈值的一个或几个数据存储单元内部存储的数据相互交换,并同时相应的修改所述访问规则。
在一个实施例中,所述访问规则包括每个所述数据存储单元的地址编码定义,以及对应的系统解码定义。
在一个实施例中,所述步骤四中,访问规则的修改包括:
将进行数据交换的数据存储单元的地址编码定义相互交换,在交换所述地址编码定义过程前后,所述系统解码定义不变。
在一个实施例中,将每个所述数据存储单元划分为至少一个存储空间,所述存储空间包含数据模块以及对应的纠错模块和校验模块。
在一个实施例中,在写入数据时,将相同的数据以及对应的纠错码和校验码分别写入单个数据存储单元的不同数据模块、纠错模块和校验模块中;其中所述校验码或所述纠错码采用至少一种校验规则或纠错规则。
在一个实施例中,当读取数据时,读取存储在某一个所述数据模块中的数据以及相应的校验码和纠错码;利用所述校验码进行校验判断并在校验判断失败时利用所述纠错码进行纠错判断。
在一个实施例中,当所述纠错判断失败时,读取其他数据模块的数据以及相应的校验码和纠错码,进行所述校验判断并在校验判断失败时进行所述纠错判断。
在一个实施例中,读取不同的数据模块的数据以及相应的校验码和纠错码并进行所述校验判断或所述纠错判断,直到所述校验判断或所述纠错判断成功;利用校验成功或纠错成功的正确数据对出现错误的数据模块进行数据恢复操作。
在一个实施例中,一种存储装置,包括:数据存储单元;访问电路,其与所述数据存储单元相连;计数器,其与所述数据存储单元连接,用于计数数据存储单元的访问次数;地址转换器,其输入接口与所述计数器连接,输出接口与所述数据存储器连接,用于基于所述计数器的值转换所述地址解码器输出的地址编码。地址解码器,其输出接口与所述地址转换器输入接口连接,用于解码数据信号中的地址编码;
在一个实施例中,所述数据存储单元包含至少一个存储空间,且所有所述存储空间并联;每个所述存储空间包含数据模块以及对应的纠错模块和校验模块。
在一个实施例中,所述数据存储单元包含2个所述存储空间。
在一个实施例中,所述存储空间内的所述数据模块、纠错模块、校验模块并联。
在一个实施例中,所述数据模块、纠错模块、校验模块封装在数据存储芯片中。
在一个实施例中,所述装置包括多个数据存储单元,且所有数据存储单元并联。
在一个实施例中,所述存储装置包含多个所述计数器,每个所述计数器与一个所述数据存储单元连接,所有计数器连接到所述地址转换器。
在一个实施例中,所述数据存储单元、所述计数器、所述地址解码器、所述地址转换器、所述访问电路安装在同一电路基板上或封装在同一芯片中。
与现有技术相比,本发明具有如下优点:
1、根据本发明所述方法可以使存储装置内部的各个存储单元的使用寿命差异保持在一较小范围内,从而从整体上提高了存储装置的使用寿命。
2、根据本发明所述方法可以在存储装置内部某部分数据被意外修改时对数据进行恢复,从而大大提高了存储数据的稳定性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的步骤来实现和获得。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明一实施例的存储装置结构框图。
如图1所示,数据存储单元151、152、153并联并与地址输入电路130和访问电路140相连。
图2是根据本发明一实施例的存储装置数据访问流程图。
如图2所示,首先在步骤S210中,将存储装置的数据存储区划分为多个数据存储单元,所有数据存储单元并联。本实施例中将存储装置的数据存储区划分为3个数据存储单元151、152、153,数据存储单元151、152、153并联。
在步骤S220,访问数据的过程中,系统按照访问规则从数据存储单元中读取数据或将数据写入数据存储单元中。
访问规则包括每个数据存储单元的地址编码定义,以及对应的系统解码定义。在存储装置中,每个数据存储单元包含若干存储位,每个数据存储单元都有自己独有的一组地址编码,其中每个地址编码对应一个存储位。
针对需要操作的存储位,系统通过解码定义来确定其地址编码并输出地址编码,数据存储单元接收具体的地址编码从而来激活相应的存储位。
在本实施例中,如图1所示,地址解码由地址解码器110完成,地址解码器110通过地址转换器120连接到地址输入电路130上。
地址解码器110解读地址数据并通过地址输入电路130输出具体的地址编码到数据存储单元151、152、153,从而激活相应的存储位。在此基础上访问电路140就可以读出被激活的存储位中的数据或者将数据写入被激活的存储位。
假设数据存储单元151的地址编码为1~100,数据存储单元152的地址编码为101~200,数据存储单元153的地址编码为201~300,此处的地址编码具体数值为假设值,在实际情况中,地址编码由系统根据实际情况定义。
假设需要访问存储装置的三个存储位,则先由地址解码器解读输入数据中的地址信息并输出三个存储位的地址编码。例如1、2、3,如果此时地址转换器120对上述地址编码信号不做改变,则数据存储单元151上的地址编码为1、2、3的存储位被激活,数据通过访问电路140写入到这三个存储位中或此三个存储位中的数据被读取。
如图2所示,在访问数据步骤S220完成后,需要进行步骤S230,计数每个数据存储单元的访问次数。在本实施例中,计数步骤S230由计数器完成,每个计数器分别与一个数据存储单元连接。如图1所示,计数器161、162、163分别与数据存储单元151、152、153相连。
接下来进行步骤S231,判断所述访问次数是否达到或超过预先设定的阈值。在本实施例中,此步骤由计数器完成。
当访问次数达到或超过预先设定的阈值的时候,则进行步骤S240,数据交换步骤,将访问次数达到或超过阈值的一个或几个数据存储单元与当前访问次数小于所述阈值的一个或几个数据存储单元内部存储的数据相互交换,并同时相应的修改访问规则。
通过修改访问规则和交换存数数据,改变了访问对象,从而避免了持续的对某一特定存储单元的频繁访问。基于此,避免了存储单元相互间使用寿命差异过大的情况的发生。存储装置的整体寿命得到了提高。
在本实施例中,修改访问规则具体体现在将进行数据交换的数据存储单元的地址编码定义相互交换,且在交换地址编码定义的过程前后,系统解码定义不变。
为操作更加简便,在本发明一实施例中,进行数据交换的数据存储单元为访问次数最大和最小的数据存储单元。
如图1所示,假设阈值定义为10,如果计数器161的计数为10且同时计数器162的计数为6、计数器163的计数为4。
计数器161判断自己的计数值达到阈值,于是输出信号到地址转换器120和访问电路140。地址转换器120接收信号并读取其他计数器的值,从而确定计数值最小的计数器为163。
地址转换器120输出两个计数器对应的数据存储单元151和153的全部地址编码从而激活这两个数据存储单元上所有的存储位。基于此,访问电路140将数据存储单元151和153上的数据相互交换。在数据交换过程中,要保持整体数据的完整和正确,即对于同一数据存储单元内部,每个存储位上的数据相互位置关系不变。
在此情况下,基于前面的假设,如果在S240数据交换步骤前,数据存储在存储位1、2、3上,则在S240数据交换步骤后,数据存储在存储位201、202、203上。
同时,地址转换器120将内部存储的数据存储单元151和153的地址定义交换。
在此情况下,按照之前的假设,如果要访问之前存储的三个存储位数据,由于系统解码定义没有改变,地址解码器110经过地址解码后仍然输出地址编码1、2、3。由于地址转换器120内部存储的数据存储单元151和153的地址定义已经交换,所以经过地址转换器120转换后的地址编码输出为201、202、203,即当前数据的实际存储位置。
基于上述过程,在完全不影响数据的正常访问的情况下,将操作目标由访问次数最多的数据存储单元151转到了访问次数最少的数据存储单元153上,从而避免了只对数据存储单元151进行频繁操作。基于此,数据存储单元151、152、153的访问频率差异被控制在一个较小的范围内,从而避免了这三个存储单元出现相互间使用寿命差异过大的情况,提高了存储器整体的使用寿命。
在本实施例中,数据存储单元151、152、153、计数器161、162、163、地址解码器110、地址转换器120、访问电路140、地址输入电路130安装在同一电路基板上或封装在同一芯片中。
根据本发明一实施例还对步骤S220,数据访问步骤进行了改进。如图2所示,虚线框步骤S229为步骤S220的分解描述。在访问数据之前,首先进行步骤S221,将每个数据存储单元划分为至少一个存储空间,且所有存储空间并联;每个存储空间包含数据模块以及对应的纠错模块和校验模块,且存储空间内的数据模块、纠错模块、校验模块并联。
在本实施例中,此步骤只在最初的数据访问前执行一次,之后的数据访问都沿用最初的模块划分设置。
在本实施例中,数据存储单元被划分为2个存储空间,即数据存储单元包含2个数据模块以及对应的2个纠错模块和2个校验模块,如图3所示,数据模块361、371,校验模块362、372,纠错模块363、373并联。
在进行步骤S222写入数据时,将相同的数据以及对应的纠错码和校验码分别写入单个数据存储单元的不同数据模块、纠错模块和校验模块中。不同的数据模块对应的校验模块或纠错模块可以采用不同的校验规则或纠错规则。
本实施例中校验模块362和纠错模块363对应数据模块361,校验模块372和纠错模块373对应数据模块371,数据模块361和371中数据相同,校验模块362和372中校验码可以不同,纠错模块363和373中纠错码可以不同。
如图2所示,在进行步骤S223,读取数据的时候,读取存储在任一个数据模块中的数据以及相应的校验码和纠错码;利用校验码进行校验判断并在校验判断失败时利用纠错码进行纠错判断。
在本实施例中,如图1所示地址输入电路330输出数据模块361、校验模块362、纠错模块363的地址编码,访问电路340读取数据、校验码和纠错码。利用校验码进行校验判断,如果校验成功则数据正确,进入图2步骤S228中,完成数据访问。
如果此次校验失败,则进入步骤S225,纠错数据,在此步骤中首先利用纠错码进行纠错判断,当判断数据出错在可纠错范围内时,对数据进行纠错从而获得正确数据。接下来在步骤S227中恢复数据,用纠错后的数据覆盖错误数据后进入步骤S228。
如果纠错判断失败,即数据错误超出可纠错范围时,则需要读取其他数据模块的数据以及相应的校验码和纠错码,并再次进行校验判断并在校验判断失败时进行纠错判断。
如果纠错判断继续失败,则继续读取下一个数据模块的数据以及相应的校验码和纠错码并重复以上判断步骤。读取不同的数据模块的数据以及相应的校验码和纠错码并进行校验判断并在校验判断失败时进行纠错判断,直到校验判断或纠错判断成功;利用校验成功或纠错成功的正确数据对出现错误的数据存储单元进行数据恢复操作。
基于本发明,在存储装置某一部分的数据被意外修改的情况下,系统可以使用其他部分的正确数据进行数据恢复,从而提高了整体数据的存储稳定性。
同时,系统可以定期检验所有数据模块中的数据,并利用正确的数据对错误的数据进行数据恢复。
在本实施例中,如图3所示地址输入电路330输出数据模块371、校验模块372、纠错模块373的地址编码,访问电路340读取数据、校验码和纠错码。利用校验码进行校验判断,如果校验成功则数据正确,进入图2步骤S227中,利用数据模块371中的正确数据恢复数据模块361中的数据,最后完成数据访问。
在本实施例中,数据模块361、371、校验模块362、372、纠错模块363、373封装在数据存储芯片中。
在本实施例中,定期校验数据模块361和371中的数据并纠错,利用正确的数据恢复错误数据。
在根据本发明的一实施例中,所有数据模块、纠错模块、校验模块封装在数据存储芯片中。
在根据本发明的一实施例中,数据存储单元、计数器、地址解码器、地址转换器、访问电路安装在同一电路基板上或封装在同一芯片中。
虽然本实施例的流程如图2所示,但是根据本发明的其他实施例流程并不限于图2。
在根据本发明的一实施例中,所有的数据及校验码、纠错码都已事先存储在数据存储单元中,因此不执行如图2所示的步骤S222。
在根据本发明的一实施例中,存储装置省略了数据安全恢复功能,没有对数据存储单元进行内部划分,则如图2所示的步骤S221~S228均可以其他方式执行或不执行。
同样虽然本实施例的装置结构如图1、图3所示,但是根据本发明的其他实施例装置结构不限于图1、图3。
在根据本发明的一实施例中,存储装置只需要数据安全恢复功能,则其只保留一个数据存储单元,如图1所示的数据存储单元152、153、地址转换器120、计数器161、162、163均可省去。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。本发明所述方法还可有其他多种实施例,在不背离本发明实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。