CN109634516B - 一种芯片存储器的读、写数据方法及系统 - Google Patents
一种芯片存储器的读、写数据方法及系统 Download PDFInfo
- Publication number
- CN109634516B CN109634516B CN201710929437.7A CN201710929437A CN109634516B CN 109634516 B CN109634516 B CN 109634516B CN 201710929437 A CN201710929437 A CN 201710929437A CN 109634516 B CN109634516 B CN 109634516B
- Authority
- CN
- China
- Prior art keywords
- data
- chip memory
- writing
- space
- size
- 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
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000003860 storage Methods 0.000 claims abstract description 29
- 241000645803 Trailing lespedeza virus 1 Species 0.000 claims description 37
- 241000465502 Tobacco latent virus Species 0.000 claims description 26
- 239000012895 dilution Substances 0.000 abstract description 3
- 238000010790 dilution Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000002035 prolonged effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种芯片存储器的读、写数据方法及系统,属于存储技术领域。本发明首先使用芯片存储器的均衡系数N个存储单元,轮流存储需要频繁更新的数据;然后通过逻辑来控制当前哪个存储单元中的数据有效。本发明通过均衡写数据,使得单一存储单元中的数据更新次数,被分摊到了多个存储单元,单个存储单元的写次数被直接稀释,稀释程度取决于分摊的存储单元个数,从而变相地延长了芯片存储器单一存储单元的使用寿命。
Description
技术领域
本发明属于存储技术领域,具体涉及一种芯片存储器的读、写数据方法及系统。
背景技术
芯片制造商一般都会提供指定条件下芯片存储器(Flash、EEPROM)的最小保证写次数,诸如5万次、10万次、50万次等。在该最小保证写次数以内,芯片制造商可以保证芯片存储器数据的读写正确性。当芯片存储器中某个存储单元(可能是某字节、某页或某块地址)的写次数达到或超过该最小保证写次数之后,其可靠性会降低,甚至存储操作会失败。
现有智能卡COS(Chip Operating System,芯片操作系统)的设计和实现往往都是被动的接受芯片制造商提供的最小保证写次数,也就是基于芯片存储单元写次数不会超过最小保证写次数,但却未曾考虑写次数达到或超过该次数的情况。在某些应用场景,尤其是M2M(Machine to Machine,设备到设备)环境中,卡片中的应用会对芯片存储器进行频繁的擦写,其写次数很可能会达到或超过最小保证写次数。而基于芯片软、硬件设计和制造成本的考虑,芯片制造商一般不会提供额外的预防措施。那么如何延长这种极限情况下芯片存储器中数据的可靠性,提高芯片存储寿命?
针对这一技术问题,现有技术中存在从文件系统角度设计的延长可擦写芯片寿命的方法。然而在Native应用和Java应用的处理过程中,很多时候并不涉及文件系统,因此从文件系统角度考虑的解决方法具有局限性,并没能够从COS层面和应用层面角度提供好的方法,来延长数据存储的可靠性,提高芯片的使用寿命。
现有的COS层存储方法的设计,是根据芯片制造商提供的读写接口,对需要存储的数据进行直接写数据,也就是所谓的普通写数据。
如图1所示,普通写数据的过程如下:
往目的地址处第一次写数据1;
往目的地址处第二次写数据2,完成数据1更新成数据2的过程。至此,目的地址处的数据1替换成数据2,目的地址处至此被写了2次。
由此可见:在单一存储单元中,数据更新一次,该存储单元就被写了2次,导致频繁更新数据时,该存储单元被频繁写。由于该存储单元的使用寿命有限,只能接近芯片制造商提供的最小保证写次数,并不能延长芯片单一存储单元的使用寿命。
发明内容
针对现有技术中存在的缺陷,本发明所要解决的技术问题是提供一种可以延长芯片使用寿命的芯片存储器读、写数据方法及系统。
为解决上述技术问题,本发明采用的技术方案如下:
一种芯片存储器的写数据方法,包括以下步骤:
使用芯片存储器的N个存储单元,轮流存储需要频繁更新的数据;所述N为均衡系数,N为正整数,N≥2;
通过逻辑控制当前哪个存储单元中的数据有效。
如上所述的芯片存储器的写数据方法,其中,所述使用芯片存储器的N个存储单元,轮流存储需要频繁更新的数据的过程包括以下步骤:
将芯片存储器划分为普通区域和均衡区域;
将数据划分成普通数据和均衡数据,所述普通数据是指不需要频繁更新的数据,所述均衡数据是指需要频繁更新的数据;
判断待写数据为普通数据还是均衡数据;
如果是普通数据,则将普通数据写入到芯片存储器的普通区域中;如果是均衡数据,则将均衡数据写入到芯片存储器的均衡区域中。
如上所述的芯片存储器的写数据方法,其中,所述将芯片存储器划分为普通区域和均衡区域包括以下四种方式:从地址由低到高将芯片存储器划分为普通区域和均衡区域;或者
从地址由低到高将芯片存储器划分为均衡区域和普通区域;或者
从地址由低到高将芯片存储器划分为普通区域、均衡区域和普通区域;或者
从地址由低到高将芯片存储器划分为均衡区域、普通区域和均衡区域。
如上所述的芯片存储器的写数据方法,其中,所述判断待写数据为普通数据还是均衡数据依据数据类型来判断,如果待写数据为普通类型,则为普通数据;如果待写数据为均衡类型,则为均衡数据;或者依据写数据时的目的地址位于普通区域还是均衡区域来判断,如果目的地址位于普通区域,则为普通数据;如果目的地址位于均衡区域,则为均衡数据。
如上所述的芯片存储器的写数据方法,其中,所述将普通数据写入到芯片存储器的普通区域中的过程包括以下步骤:
在普通区域中划出指定大小的空间区域,对该空间区域内的值进行初始化,返回该空间区域的起始地址;
将普通数据从所述空间区域的起始地址开始写入芯片存储器。
如上所述的芯片存储器的写数据方法,其中,所述在普通区域中划出指定大小的空间区域的方法为:
如果芯片存储器支持字节写,则划出的空间区域大小等于指定大小;如果芯片存储器支持页擦页写,当指定大小是页大小的整数倍时,则划出的空间大小为指定大小,当指定大小不是页大小的整数倍时,则划出的空间大小为([指定大小÷页大小]+1)×页大小。
如上所述的芯片存储器的写数据方法,其中,所述将均衡数据写入到芯片存储器的均衡区域中的过程包括以下步骤:
在均衡区域中划出N个指定大小的空间区域;对该空间区域内的值进行初始化,返回该空间区域的起始地址;
将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域。
如上所述的芯片存储器的写数据方法,其中,所述在均衡区域中划出N个指定大小的空间区域采用TLV List数据结构,所述TLV为Tag Length Value的缩写;所述Tag为4字节,用于控制选择哪个TLV来写数据;所述Length为2字节,用于表示实际有效数据的长度;所述Value是指定大小的实际数据;所述List的个数为均衡系数N。
如上所述的芯片存储器的写数据方法,其中,所述在均衡区域中划出N个指定大小的空间区域的方法为:
如果芯片存储器支持字节写,则划出的空间大小为:(指定大小+6)×均衡系数N;如果芯片存储器支持页擦页写,当(指定大小+6)是页大小的整数倍时,则划出的空间大小为(指定大小+6)×均衡系数N;当(指定大小+6)不是页大小的整数倍时,则划出的空间大小为:([(指定大小+6)÷页大小]+1)×页大小×均衡系数N。
如上所述的芯片存储器的写数据方法,其中,所述将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域的过程包括以下步骤:
(1)选择均衡空间TLV List中的第一个TLV1,TLV1的Tag加1,写数据的长度到Length,写数据到Value;
(2)在均衡空间TLV List中从前往后或者从后往前遍历查找第一个比TLV1的Tag小的TLVn,遍历查找时取的数据间隔为TLV的实际大小;
如果未找到满足要求的TLVn,则表示TLV List已经被全部轮流写过一次,返回到TLV1,重复以上步骤,开始新的一次轮流写数据,直至数据被写完;
如果找到了满足要求的TLVn,表示TLV List中还有本次轮流写未曾写过的TLV,TLVn的Tag加1,写数据的长度到Length,写数据到Value;重复步骤(2)。
一种芯片存储器的读数据方法,所述数据是按照上述方法写入芯片存储器中的数据,包括以下步骤:
在空间区域TLV List中,遍历查找最后一个与TLV1的Tag相同的TLVn,遍历查找时取的数据间隔为TLV的实际大小;
选择找到TLVn,读取该TLVn中的数据。
如上所述的芯片存储器的读数据方法,其中:所述遍历顺序为从前往后或者从后往前。
一种芯片存储器的读、写数据的方法,包括上述写数据方法,以及上述读数据方法。
一种芯片存储器的写数据系统,包括:
用于使用芯片存储器的N个存储单元轮流存储需要频繁更新数据的存储装置;所述N为均衡系数,N为正整数,N≥2;
用于通过逻辑控制当前哪个存储单元中数据有效的控制装置。
如上所述的芯片存储器的写数据系统,其中,所述存储装置包括:
用于将芯片存储器划分为普通区域和均衡区域的第一划分单元;
用于将数据划分成普通数据和均衡数据的第二划分单元,所述普通数据是指不需要频繁更新的数据,所述均衡数据是指需要频繁更新的数据;
用于判断待写数据是普通数据还是均衡数据的判断单元;
用于将普通数据写入到芯片存储器的普通区域中的第一写数据单元;
用于将均衡数据写入到芯片存储器的均衡区域中的第二写数据单元。
如上所述的芯片存储器的写数据系统,其中,所述第一写数据单元包括:
用于在普通区域中划出指定大小的空间区域的第一划出模块;
用于对该空间区域内的值进行初始化,返回该空间区域起始地址的第一初始化模块;
用于将普通数据从所述空间区域的起始地址开始写入芯片存储器的第一写数据模块。
如上所述的芯片存储器的写数据系统,其中,所述第二写数据单元包括:
用于在均衡区域中划出N个指定大小的空间区域的第二划出模块;
用于对该空间区域内的值进行初始化,返回该空间区域起始地址的第二初始化模块;
用于将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域的第二写数据模块。
如上所述的芯片存储器的写数据系统,其中,所述第二写数据模块写数据的过程为:
(1)选择均衡空间TLV List中的第一个TLV1,TLV1的Tag加1,写数据的长度到Length,写数据到Value;
(2)在均衡空间TLV List中从前往后或者从后往前遍历查找第一个比TLV1的Tag小的TLVn,遍历查找时取的数据间隔为TLV的实际大小;
如果未找到满足要求的TLVn,则表示TLV List已经被全部轮流写过一次,返回到TLV1,开始新的一次轮流写数据;
如果找到了满足要求的TLVn,表示TLV List中还有本次轮流写未曾写过的TLV,TLVn的Tag加1,写数据的长度到Length,写数据到Value;重复步骤(2)。
一种芯片存储器的读数据系统,包括用于读取普通数据的普通数据读取装置,用于读取均衡数据的均衡数据读取装置,所述均衡数据读取装置读取的数据是上述系统存储的数据,所述均衡数据读取装置包括:
用于在空间区域TLV List中,遍历查找最后一个与TLV1的Tag相同的TLVn的遍历装置,遍历查找时取的数据间隔为TLV的实际大小;
用于选择找到TLVn,读取该TLVn中数据的读取装置。
一种芯片存储器的读、写数据系统,包括上述的写数据系统,以及上述的读数据系统。
本发明所述方法及系统,通过均衡写数据,使得单一存储单元中的数据更新次数,被分摊到了多个存储单元,单个存储单元的写次数被直接稀释,稀释程度取决于分摊的存储单元个数,从而变相地延长了芯片存储器单一存储单元的使用寿命。
附图说明
图1是背景技术中普通写数据的示意图;
图2是具体实施方式中芯片存储器读、写系统的结构框图;
图3是具体实施方式中写数据系统的结构框图;
图4是具体实施方式中存储装置的结构框图;
图5是具体实施方式中第一写数据单元的结构框图;
图6是具体实施方式中第二写数据单元的结构框图;
图7是具体实施方式中读数据系统的结构框图;
图8是具体实施方式中写数据的方法流程图;
图9是具体实施方式中步骤S1的具体实现方法流程图;
图10是具体实施方式中普通区域与均衡区域划分示意图;
图11是具体实施方式中步骤S14的具体实现方法流程图;
图12是具体实施方式中在普通区域中划出指定大小空间区域的示意图;
图13是具体实施方式中步骤S15的具体实现方法流程图;
图14是具体实施方式中在均衡区域中划出指定大小空间区域的示意图;
图15是具体实施方式中步骤S153的具体实现方法流程图;
图16是具体实施方式中均衡数据读取装置读取数据的流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细描述。
如图2所示,本实施方式中芯片存储器的读、写数据系统1包括写数据系统2和读数据系统3。所述写数据系统2用于将数据写入芯片存储器的存储单元中,所述读数据系统3用于读取写数据系统2写入芯片存储器的存储单元中的数据。
如图3所示,所述写数据系统2包括存储装置21和控制装置22。所述存储装置21用于使用芯片存储器的N个存储单元轮流存储需要频繁更新的数据;其中N为均衡系数,N为正整数,N≥2。所述控制装置22用于通过逻辑控制当前哪个存储单元中的数据有效。
如图4所示,所述存储装置21包括第一划分单元211、第二划分单元212、判断单元213、第一写数据单元214和第二写数据单元215。其中:第一划分单元211用于将芯片存储器划分为普通区域和均衡区域;第二划分单元212用于将待写数据划分成普通数据和均衡数据,普通数据是指不需要频繁更新的数据,均衡数据是指需要频繁更新的数据;判断单元213用于判断待写数据是普通数据还是均衡数据;第一写数据单元214用于将普通数据写入到芯片存储器的普通区域中;第二写数据单元215用于将均衡数据写入到芯片存储器的均衡区域中。
如图5所示,所述第一写数据单元214包括第一划出模块2141、第一初始化模块2142和第一写数据模块2143。其中:第一划出模块2141用于在普通区域中划出指定大小的空间区域;第一初始化模块2142用于对该空间区域内的值进行初始化,返回该空间区域的起始地址;第一写数据模块2143用于将普通数据从所述空间区域的起始地址开始写入芯片存储器中。
如图6所示,所述第二写数据单元215包括第二划出模块2151、第二初始化模块2152和第二写数据模块2153。其中:第二划出模块2151用于在均衡区域中划出N个指定大小的空间区域;第二初始化模块2152用于对该空间区域内的值进行初始化,返回该空间区域的起始地址;第二写数据模块2153用于将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域。
如图8所示,采用上述写数据系统2写数据的方法包括以下步骤:
S1:存储装置21使用芯片存储器的N个存储单元,轮流存储需要频繁更新的数据,本实施方式中将这种写数据的方式称为均衡写。其中,N为均衡系数,N为正整数,N≥2。如果均衡系数N为3,则表示同样的数据需要3倍空间来分摊均衡写;如果均衡系数为5,表示同样的数据需要5倍空间来分摊均衡写。均衡系数可以依据芯片存储器的容量和实际需要来设定,本实施方式中不做限定。显然,通过均衡写数据,使得单一存储单元中的数据更新次数,被分摊到了多个存储单元,单个存储单元的写次数被直接稀释,稀释程度取决于分摊的存储单元个数,从而变相地延长了芯片存储器单一存储单元的使用寿命,延长的使用寿命为芯片存储器原使用寿命的均衡系数N倍。
如图9所示,本实施方式中步骤S1进一步包括以下步骤:
S11:第一划分单元211将芯片存储器划分为普通区域和均衡区域。如图10所示,普通区域和均衡区域的划分模型包括以下四种方式:从地址由低到高将芯片存储器划分为普通区域和均衡区域,均衡区域和普通区域,普通区域、均衡区域、普通区域或者均衡区域、普通区域、均衡区域。普通区域和均衡区域的大小、比例、起始地址、结束地址,本实施方式不做限定,可以根据芯片存储器的容量和实际需要自行分配。以下说明仅以普通区域和均衡区域的划分模型为例,其他模型与该模型过程相似,不再一一叙述。
S12:第二划分单元212将待写数据划分成普通数据和均衡数据,所述普通数据是指不需要频繁更新的数据,即不需要均衡写的数据;所述均衡数据是指需要频繁更新的数据,即需要均衡写的数据。
S13:判断单元213判断待写数据是普通数据还是均衡数据;如果是普通数据则进入步骤S14,如果是均衡数据,则转入步骤S15。
判断待写数据为普通数据还是均衡数据可以依据数据类型来判断,如果待写数据为普通类型,则为普通数据;如果待写数据为均衡类型,则为均衡数据。数据类型需要预先设定。或者依据写数据时的目的地址位于普通区域还是均衡区域来判断,如果目的地址位于普通区域,则为普通数据;如果目的地址位于均衡区域,则为均衡数据。
S14:第一写数据单元214将普通数据写入到芯片存储器的普通区域中。
S15:第二写数据单元215将均衡数据写入到芯片存储器的均衡区域中。
如图11所示,本实施方式中步骤S14进一步包括以下步骤:
S141:第一划出模块2141在普通区域中划出指定大小的空间区域。如图12所示,如果芯片存储器支持字节写,则划出的空间区域大小等于指定大小;如果芯片存储器支持页擦页写,当指定大小是页大小的整数倍时,则划出的空间大小为指定大小,当指定大小不是页大小的整数倍时,则划出的空间大小为([指定大小÷页大小]+1)×页大小。其中,“[]”表示取整。以分配600字节为例,对于支持字节写芯片,实际分配空间大小就是600字节;对于只支持页擦页写的芯片,此处假设页大小为256字节,则实际分配的是([指定大小÷页大小]+1)×页大小=768字节,也就是3页数据,在最后一页数据中,有部分数据是剩余数据。
S142:第一初始化模块2142对该空间区域内的值进行初始化,返回该空间区域的起始地址。
S143:第一写数据模块2143将普通数据从所述空间区域的起始地址开始写入芯片存储器。
如图13所示,本实施方式中步骤S15进一步包括以下步骤:
S151:第二划出模块2151在均衡区域中划出N个指定大小的空间区域,实际上就是划出(指定大小×均衡系数N)的空间区域。
在本实施方式中,采用TLV(Tag+Length+Value)List的数据结构来进行均衡分配、均衡写、均衡读数据。数据均衡写时轮流分摊的过程实际上就是TLV List中的TLV轮流操作的过程。在以下实现例中:Tag为4字节,逻辑控制选择哪个TLV来写、读数据,4字节长度的Tag已经能够充分满足各种应用需求。Length为2字节,表示后面的实际有效数据长度;Value就是指定大小的实际数据。每个指定大小的空间实际上就是一个TLV,而List的个数就是均衡系数N值,也就是用于均衡写的分摊个数。
如果芯片存储器支持字节写,则划出的空间大小等于(指定大小+6)×均衡系数N,此时TLV List中的每个TLV,其占用的实际大小为(指定大小+6);如果芯片支持页擦页写,当(指定大小+6)是页大小的整数倍时,则划出的空间大小为(指定大小+6)×均衡系数N,此时TLV List中的每个TLV,其占用的实际大小为(指定大小+6),当(指定大小+6)不是页大小的整数倍时,则划出的空间大小为:([(指定大小+6)÷页大小]+1)×页大小×均衡系数N,此时TLV List中的每个TLV,其占用的实际大小为([(指定大小+6)÷页大小]+1)×页大小。
如图14所示,假设均衡系数N为3,表示同样的数据需要3倍空间来分摊均衡写。以分配200字节为例,对于支持字节写的芯片存储器,实际分配空间大小就是(200+6)×3=618字节,每个TLV的实际大小为(指定大小+6);对于只支持页擦页写的芯片存储器,此处假设页大小为256字节,则实际分配的是([(200+6)÷256]+1)×256×3=768字节,也就是3页数据,每个TLV的实际大小为([(指定大小+6)÷页大小]+1)×页大小,此处的一个TLV实际大小占用了一页256字节。此时每一个TLV中,有部分空间是剩余空间。
S152:第二初始化模块2152对该空间区域内的值进行初始化,返回该空间区域的起始地址。
S153:第二写数据模块2153将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域。
写数据的目标地址实际上是均衡分配出来的空间区域的起始地址,但数据真正写的起始地址并不一定是该目标地址,而可能是从目标地址开始的TLV List结构中的任何一个TLV的起始地址。均衡写的核心思想是轮流分摊写,那么此处写的过程实际上就是TLVList轮流存储数据的过程。TLV List轮流存储数据逻辑上可以从前往后,也可以从后往前。以下实例均衡分配出来的空间区域初始化为全0,并且选择从前往后轮流存储数据。
如图15所示,本实施方式中步骤S153进一步包括以下步骤:
S1531:第一次写时,第二写数据模块2153选择均衡空间TLV List中的第一个TLV1,TLV1的Tag加1,写实际数据的长度到Length,写实际数据到Value。不管是字节写还是页擦页写,写之前都可以选择先在RAM中组织好,再一次性写,从而减少写的次数,提高效率。
S1532:第一次写之后的写,在均衡空间TLV List中从前往后或者从后往前遍历查找第一个比TLV1的Tag小的TLVn,遍历查找时取的数据间隔为TLV的实际大小。字节写芯片存储器,TLV的实际大小为(指定大小+6),页擦页写芯片存储器,(指定大小+6)为页大小整数倍时,TLV的实际大小为(指定大小+6),(指定大小+6)不为页大小整数倍时,TLV的实际大小为([(指定大小+6)÷页大小]+1)×页大小。本实施方式中,为了尽可能简化逻辑处理流程,大的Tag与小的Tag实际上只差1。
S1533:如果未找到满足要求的TLVn,则表示TLV List已经被全部轮流写过一次。这个过程也因此实现了原来单一地址的均衡系数N次写,改由均衡系数N个地址空间来分摊写。此时,需要重新返回到TLV1,重复以上步骤,开始新的一次轮流写数据,直至数据被写完。
S1534:如果找到了满足要求的TLVn,表示TLV List中还有本次轮流写未曾写过的TLV,TLVn的Tag加1,写数据的长度到Length,写数据到Value;重复步骤S1532至S1534。
以字节写芯片存储器的第1次写和第2次写为例,对上述步骤做举例说明。第1次写时直接选择TLV1进行写,Tag改为0x00000001;第2次写时遍历查找TLV List,找到TLV2的Tag为0,是找到的第一个Tag比TLV1小的TLV。所以,第2次写选择TLV2进行写,写完之后TLV2的Tag同步TLV1,也改为0x00000001,以此类推。
以页擦页写芯片存储器的第m+1次写为例,对上述步骤做举例说明。假设均衡系数为m,也就是TLV List的大小为m,之前的m次写已经完成了一次轮流写,此时为第m+1次写。遍历查找TLV List,一直到最后的TLVm,其Tag与TLV1相等,找不到比TLV1Tag小的TLV,表示需要开启新的一次轮流写,选择TLV1进行写,并将Tag改为0x00000002。
S2:通过逻辑控制当前哪个存储单元中的数据有效。
所述逻辑控制包括写控制和读控制。本实施方式中,写控制即是上述写数据的过程。第一次写时,选择均衡空间TLV List中的第一个TLV,也就是TLV1,TLV1的Tag加1;第一次写之后的写,在均衡空间TLV List中从前往后或者从后往前遍历查找第一个比TLV1的Tag小的TLVn;如果未找到满足要求的TLVn,则表示TLV List已经被全部轮流写过一次,此时需要重新返回到TLV1,开始新的一次轮流写数据;如果找到了满足要求的TLVn,表示TLVList中还有本次轮流写未曾写过的TLV,选择TLVn进行写,TLVn的Tag加1;下一次写,重复上述步骤。
本实施方式中,读控制的过程即是下述读数据的过程。
如图7所示,所述读数据系统3包括用于读取普通数据的普通数据读取装置31和用于读取均衡数据的均衡数据读取装置32。其中,均衡数据读取装置32包括遍历单元321和读取单元322。遍历单元321用于在空间区域TLV List中,遍历查找最后一个与TLV1的Tag相同的TLVn的,遍历查找时取的数据间隔为TLV的实际大小;读取单元322用于选择找到TLVn,读取该TLVn中的数据。
普通数据读取装置31读取普通数据的方式为现有技术,本实施方式不再详细说明。
均衡数据读取装置32读取按照上述方式存储的均衡数据。目标地址实际上是均衡分配出来的空间区域的起始地址,数据真正读的起始地址并不一定是该目标地址,而可能是从目标地址开始的TLV List结构中的任何一个TLV的起始地址。均衡写的核心思想是轮流分摊写,那么此处读的过程实际上就是TLV List轮流读取的过程。
TLV List轮流读取数据,逻辑上可以从前往后,也可以从后往前。以下实例中,均衡分配出来的空间区域,选择从前往后轮流读取。
如图16所示,均衡数据读取装置32读取数据的过程包括以下步骤:
S31:遍历单元321在空间区域TLV List中,遍历查找最后一个与TLV1的Tag相同的TLVn;如果找到的TLVn不是TLV1,表示数据被更新过,而TLVn为最新数据,选择TLVn,并读取数据;如果找到的TLVn是TLV1,表示数据只写过一次,TLV1就是最新数据,选择TLV1,并读取数据;遍历次数最大为均衡系数N,当遍历次数达到均衡系数N,表示已经遍历查找到最后,该最后一个TLV即为最新的数据,读取即可,遍历查找时取的数据间隔为TLV的实际大小;
S32:读取单元322选择找到TLVn,读取该TLVn中的数据,读取数据的长度为TLVn中的Length值,读取数据起始地址为TLVn中的Value所在地址。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种芯片存储器的写数据方法,包括以下步骤:
使用芯片存储器的N个存储单元,轮流存储需要频繁更新的数据;所述N为均衡系数,N为正整数,N≥2,所述均衡系数依据芯片存储器的容量和实际需要来设定;
通过逻辑控制当前哪个存储单元中的数据有效,所述逻辑控制包括写控制和读控制;
所述使用芯片存储器的N个存储单元,轮流存储需要频繁更新的数据的过程包括以下步骤:
将芯片存储器划分为普通区域和均衡区域;
将数据划分成普通数据和均衡数据,所述普通数据是指不需要频繁更新的数据,所述均衡数据是指需要频繁更新的数据;
判断待写数据为普通数据还是均衡数据;
如果是普通数据,则将普通数据写入到芯片存储器的普通区域中;如果是均衡数据,则将均衡数据写入到芯片存储器的均衡区域中;
其中将均衡数据写入到芯片存储器的均衡区域中的过程包括以下步骤:
在均衡区域中划出N个指定大小的空间区域;对该空间区域内的值进行初始化,返回该空间区域的起始地址;
将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域;
所述在均衡区域中划出N个指定大小的空间区域的方法为:如果芯片存储器支持字节写,则划出的空间大小为:(指定大小+6)×均衡系数N;如果芯片存储器支持页擦页写,当(指定大小+6)是页大小的整数倍时,则划出的空间大小为(指定大小+6)×均衡系数N;当(指定大小+6)不是页大小的整数倍时,则划出的空间大小为:([(指定大小+6)÷页大小]+1)×页大小×均衡系数N。
2.如权利要求1所述的芯片存储器的写数据方法,其特征在于,所述将芯片存储器划分为普通区域和均衡区域包括以下四种方式:从地址由低到高将芯片存储器划分为普通区域和均衡区域;或者
从地址由低到高将芯片存储器划分为均衡区域和普通区域;或者
从地址由低到高将芯片存储器划分为普通区域、均衡区域和普通区域;或者
从地址由低到高将芯片存储器划分为均衡区域、普通区域和均衡区域。
3.如权利要求1所述的芯片存储器的写数据方法,其特征在于,所述判断待写数据为普通数据还是均衡数据依据数据类型来判断,如果待写数据为普通类型,则为普通数据;如果待写数据为均衡类型,则为均衡数据;或者依据写数据时的目的地址位于普通区域还是均衡区域来判断,如果目的地址位于普通区域,则为普通数据;如果目的地址位于均衡区域,则为均衡数据。
4.如权利要求1所述的芯片存储器的写数据方法,其特征在于,所述将普通数据写入到芯片存储器的普通区域中的过程包括以下步骤:
在普通区域中划出指定大小的空间区域,对该空间区域内的值进行初始化,返回该空间区域的起始地址;
将普通数据从所述空间区域的起始地址开始写入芯片存储器。
5.如权利要求4所述的芯片存储器的写数据方法,其特征在于,所述在普通区域中划出指定大小的空间区域的方法为:
如果芯片存储器支持字节写,则划出的空间区域大小等于指定大小;如果芯片存储器支持页擦页写,当指定大小是页大小的整数倍时,则划出的空间大小为指定大小,当指定大小不是页大小的整数倍时,则划出的空间大小为([指定大小÷页大小]+1)×页大小。
6.如权利要求1所述的芯片存储器的写数据方法,其特征在于:所述在均衡区域中划出N个指定大小的空间区域采用TLV List数据结构,所述TLV为Tag Length Value的缩写;所述Tag为4字节,用于控制选择哪个TLV来写数据;所述Length为2字节,用于表示实际有效数据的长度;所述Value是指定大小的实际数据;所述List的个数为均衡系数N。
7.如权利要求1所述的芯片存储器的写数据方法,其特征在于,所述将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域的过程包括以下步骤:
(1)选择均衡空间TLV List中的第一个TLV1,TLV1的Tag加1,写数据的长度到Length,写数据到Value;
(2)在均衡空间TLV List中从前往后或者从后往前遍历查找第一个比TLV1的Tag小的TLVn,遍历查找时取的数据间隔为TLV的实际大小;
如果未找到满足要求的TLVn,则表示TLV List已经被全部轮流写过一次,返回到TLV1,重复以上步骤,开始新的一次轮流写数据,直至数据被写完;
如果找到了满足要求的TLVn,表示TLV List中还有本次轮流写未曾写过的TLV,TLVn的Tag加1,写数据的长度到Length,写数据到Value;重复步骤(2)。
8.一种芯片存储器的读数据方法,所述数据是按照权利要求1至7中任一项所述的方法写入芯片存储器中的数据,包括以下步骤:
在空间区域TLV List中,遍历查找最后一个与TLV1的Tag相同的TLVn,遍历查找时取的数据间隔为TLV的实际大小;
选择找到TLVn,读取该TLVn中的数据。
9.如权利要求8所述的芯片存储器的读数据方法,其特征在于:所述遍历顺序为从前往后或者从后往前。
10.一种芯片存储器的写数据系统,包括:
用于使用芯片存储器的N个存储单元轮流存储需要频繁更新数据的存储装置(21);所述N为均衡系数,N为正整数,N≥2,所述均衡系数依据芯片存储器的容量和实际需要来设定;
用于通过逻辑控制当前哪个存储单元中数据有效的控制装置(22),所述逻辑控制包括写控制和读控制;
所述存储装置(21)包括:
用于将芯片存储器划分为普通区域和均衡区域的第一划分单元(211);
用于将数据划分成普通数据和均衡数据的第二划分单元(212),所述普通数据是指不需要频繁更新的数据,所述均衡数据是指需要频繁更新的数据;
用于判断待写数据是普通数据还是均衡数据的判断单元(213);
用于将普通数据写入到芯片存储器的普通区域中的第一写数据单元(214);
用于将均衡数据写入到芯片存储器的均衡区域中的第二写数据单元(215);
所述第二写数据单元(215)包括:
用于在均衡区域中划出N个指定大小的空间区域的第二划出模块(2151);
用于对该空间区域内的值进行初始化,返回该空间区域起始地址的第二初始化模块(2152);
用于将均衡数据从所述空间区域的起始地址开始写入芯片存储器的N个指定大小的空间区域的第二写数据模块(2153);
所述第二写数据模块(2153)写数据的过程为:
(1)选择均衡空间TLV List中的第一个TLV1,TLV1的Tag加1,写数据的长度到Length,写数据到Value;
(2)在均衡空间TLV List中从前往后或者从后往前遍历查找第一个比TLV1的Tag小的TLVn,遍历查找时取的数据间隔为TLV的实际大小;
如果未找到满足要求的TLVn,则表示TLV List已经被全部轮流写过一次,返回到TLV1,开始新的一次轮流写数据;
如果找到了满足要求的TLVn,表示TLV List中还有本次轮流写未曾写过的TLV,TLVn的Tag加1,写数据的长度到Length,写数据到Value;重复步骤(2)。
11.如权利要求10所述的芯片存储器的写数据系统,其特征在于,所述第一写数据单元(214)包括:
用于在普通区域中划出指定大小的空间区域的第一划出模块(2141);
用于对该空间区域内的值进行初始化,返回该空间区域起始地址的第一初始化模块(2142);
用于将普通数据从所述空间区域的起始地址开始写入芯片存储器的第一写数据模块(2143)。
12.一种芯片存储器的读数据系统,包括用于读取普通数据的普通数据读取装置(31),其特征在于:该系统还包括用于读取均衡数据的均衡数据读取装置(32),所述均衡数据读取装置(32)读取的数据是按照权利要求10所述系统存储的数据,所述均衡数据读取装置(32)包括:
用于在空间区域TLV List中,遍历查找最后一个与TLV1的Tag相同的TLVn的遍历装置(321),遍历查找时取的数据间隔为TLV的实际大小;
用于选择找到TLVn,读取该TLVn中数据的读取装置(322)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710929437.7A CN109634516B (zh) | 2017-10-09 | 2017-10-09 | 一种芯片存储器的读、写数据方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710929437.7A CN109634516B (zh) | 2017-10-09 | 2017-10-09 | 一种芯片存储器的读、写数据方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634516A CN109634516A (zh) | 2019-04-16 |
CN109634516B true CN109634516B (zh) | 2024-05-24 |
Family
ID=66051035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710929437.7A Active CN109634516B (zh) | 2017-10-09 | 2017-10-09 | 一种芯片存储器的读、写数据方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634516B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489236A (zh) * | 2019-08-21 | 2019-11-22 | 恒宝股份有限公司 | 一种物联网卡及其实现flash负载均衡的方法 |
CN113157601A (zh) * | 2021-05-06 | 2021-07-23 | 北京集创北方科技股份有限公司 | 闪存数据读写方法、装置、存储介质和终端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365786A (zh) * | 2012-04-01 | 2013-10-23 | 国民技术股份有限公司 | 数据存储方法、装置和系统 |
CN103688246A (zh) * | 2011-05-17 | 2014-03-26 | 桑迪士克科技股份有限公司 | 具有在活跃slc和mlc存储器分区之间分布的小逻辑组的非易失性存储器和方法 |
CN106527969A (zh) * | 2016-09-21 | 2017-03-22 | 中国科学院地质与地球物理研究所 | 一种寿命均衡的NandFlash存储器读写方法 |
CN106547472A (zh) * | 2015-09-18 | 2017-03-29 | 华为技术有限公司 | 存储阵列管理方法及装置 |
CN107037986A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
-
2017
- 2017-10-09 CN CN201710929437.7A patent/CN109634516B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103688246A (zh) * | 2011-05-17 | 2014-03-26 | 桑迪士克科技股份有限公司 | 具有在活跃slc和mlc存储器分区之间分布的小逻辑组的非易失性存储器和方法 |
CN103365786A (zh) * | 2012-04-01 | 2013-10-23 | 国民技术股份有限公司 | 数据存储方法、装置和系统 |
CN106547472A (zh) * | 2015-09-18 | 2017-03-29 | 华为技术有限公司 | 存储阵列管理方法及装置 |
CN106527969A (zh) * | 2016-09-21 | 2017-03-22 | 中国科学院地质与地球物理研究所 | 一种寿命均衡的NandFlash存储器读写方法 |
CN107037986A (zh) * | 2017-03-20 | 2017-08-11 | 北京握奇智能科技有限公司 | 一种延长可擦写芯片寿命的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109634516A (zh) | 2019-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9405485B2 (en) | Method and apparatus for writing data to a flash memory | |
KR100816761B1 (ko) | 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법 | |
CN100367306C (zh) | 非易失性存储卡 | |
US20150120988A1 (en) | Method of Accessing Data in Multi-Layer Cell Memory and Multi-Layer Cell Storage Device Using the Same | |
US20100082917A1 (en) | Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method | |
CN110096221B (zh) | 存储器系统及其控制方法 | |
US10275187B2 (en) | Memory device and data read method thereof | |
KR20080082601A (ko) | 빠른 웨어 레벨링 플래쉬 드라이브 | |
US10235300B2 (en) | Memory system including memory device and operation method thereof | |
US20100318760A1 (en) | Memory controller, nonvolatile storage device, and nonvolatile storage system | |
US20140181378A1 (en) | Control device, control method, and program | |
US10083120B2 (en) | Memory system, and address mapping method and access method thereof | |
CN107045423B (zh) | 存储器装置及其数据存取方法 | |
CN106598504B (zh) | 数据存储方法及装置 | |
US9959044B2 (en) | Memory device including risky mapping table and controlling method thereof | |
CN109634516B (zh) | 一种芯片存储器的读、写数据方法及系统 | |
JP2011242833A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
TWI463311B (zh) | 快閃記憶體儲存設備的資料儲存方法和裝置 | |
US10877698B2 (en) | Semiconductor device for managing cold addresses of nonvolatile memory device | |
US20170003890A1 (en) | Device, program, recording medium, and method for extending service life of memory | |
CN117215485A (zh) | Zns ssd管理方法及数据写入方法、存储装置、控制器 | |
CN109634514B (zh) | 一种芯片存储器的读、写数据方法及系统 | |
US10783070B2 (en) | Memory system having first and second correspondence tables and method of controlling memory system | |
US9927996B2 (en) | Information processing device | |
US11966610B2 (en) | Storage device capable of adjusting size of zoned namespace and operating method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |