CN103092770B - 一种磨损均衡处理时减少内存开销的方法 - Google Patents
一种磨损均衡处理时减少内存开销的方法 Download PDFInfo
- Publication number
- CN103092770B CN103092770B CN201310026618.0A CN201310026618A CN103092770B CN 103092770 B CN103092770 B CN 103092770B CN 201310026618 A CN201310026618 A CN 201310026618A CN 103092770 B CN103092770 B CN 103092770B
- Authority
- CN
- China
- Prior art keywords
- error correction
- place
- abrasion equilibrium
- block
- pond
- 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
本发明公开了一种磨损均衡处理时减少内存开销的方法,创建一个磨损均衡表,记录与非闪存中每一个可用块及每一可用块之纠错码的纠错位数,并在对与非闪存操作时更新该磨损均衡表;在磨损均衡处理时,优先使用纠错位数少的可用块。依据本发明的方法在磨损均衡时能够有效降低内存开销。
Description
技术领域
本发明涉及一种磨损均衡执行过程中减少内存开销的方法。
背景技术
在所应用领域中,由于内存开销与磨损均衡相关,因此,在这里首先说明一下磨损均衡,其属于存储管理技术领域,主要应用于当前主流闪存,也就是与非闪存(NAND Flash)。
随着数码技术的迅猛发展,应用于数码设备且具有非易失性、编程速度快、擦出时间段、省电且体积小特点的与非闪存得到了广泛的应用。现今,与非闪存是嵌入式系统中一种常用的存储介质,具有体积小、容量大、成本低、掉电数据部丢失等一系列优点。目前已经逐步取代其它半导体存储元件,成为嵌入式系统中的主要数据和程序载体。
公知的,与非闪存的读(Read)、写(Program)和擦除(Erase)操作中读和写的基本单位是页,擦除的基本单位是块。对flash的写操作只能在尚未写入的空闲页上进行,并且只能按照从低地址页到高地址页顺序写。如果想要修改某个已经写过的页,只能先擦除整个物理块,然后再写入。
然而Flash的物理特征决定了它的可擦写次数是有限的,当前技术条件下块的擦除次数多在10万次到100万次之间,只要有一个块的擦除次数达到了上限,数据存储就变得不可靠,会影响整个闪存的读写效率和性能。为延长flash的使用寿命目前我们主要采用两者策略,一种是应尽量减少对块的擦除次数,即当整个块中的页都被标记为空闲页时再擦除。另一种策略是采用高效的磨损均衡处理(wear-levling)。这里主要涉及磨损均衡方法。
发明人注意到,与非闪存擦写次数越多,其数据操作出错的概率就越大;闪存的擦写次数和纠错码的纠错位数息息相关,24bits/1KB纠错码纠错时,1KB的数据允许出错小于等于24bits,如果出错超过24bits,那么存放在闪存里面的数据就没法正确的读出来,即使它的擦写次数很低。
并且公知的,与非闪存在出厂时就含有允许比例的坏块,也就是还没有进行一次擦写,某些块就已经是坏块。据此可知,单纯使用擦写次数来评价块的状态是不合适的。相比而言,出错概率更具代表性。
中国CN102789423A号发明专利申请公开整体引用至此,其在背景技术中对当前主要的磨损均衡方法进行了相对较为详细的描述,其共性不可避免的都与块的擦写次数直接关联,显然所对应的磨损均衡方法都是存在瑕疵的。
上述CN102789423A号发明专利申请首次提出了利用纠错码控制磨损均衡的策略,但其方案仍然需要使用块的可擦写次数,与所述及的现有技术存在同样的问题。
与非闪存根据类型不同,可擦写次数会有比较大的差异,大多在1000次和10万次间,在其有的磨损均衡算法中,需要建立块擦写次数表,或者说磨损均衡表,记录每一个可用块及擦写次数。使用时把所述磨损均衡表调入内存,以控制磨损均衡。与非闪存在执行磨损均衡时,主要的内存开销就是磨损均衡表,表项或者说数据结构含有物理块标识及对应的物理块擦写次数,擦写次数需要比较大的数据进行支持,势必会造成内存很大的开销。
经研究发现,如果增加闪存主控芯片纠错码的纠错位数,那么闪存的擦写次数的上限也会相应的提高。为了更真实的体现闪存储数据的可靠性,提高整个闪存的读写效率和性能,以及磨损均衡执行时的减少内存开销。因此,需要设计高效的磨损均衡处理策略,尽可能让各闪存块保持相近的损耗以延长闪存的使用寿命的同时,减少内存的开销。
发明内容
因此,本发明的目的在于提供一种在磨损均衡处理时能够有效降低内存开销的方法。
本发明采用以下技术方案:
一种磨损均衡处理时减少内存开销的方法,创建一个磨损均衡表,记录与非闪存中每一个可用块及每一可用块之纠错码的纠错位数,并在对与非闪存操作时更新该磨损均衡表;
在磨损均衡处理时,优先使用纠错位数少的可用块。
从以上方案可以看出,依据本发明的磨损均衡处理时减少内存开销的方法采用纠错位数取代擦除次数用于评价可用块的当前状况,不仅比擦写次数更能客观的反应可用块的使用状况,而且纠错位数远小于擦写次数,相比而言,信息量很小,从而,在对与非闪存进行操作时,内存映射磨损均衡表所消耗的内存会明显减少,从而对可以有效提高与非闪存的操作速度。
再进一步改进的方案中,上述磨损均衡处理时减少内存开销的方法,所述磨损均衡表在与非闪存的可用块当前最大纠错位数达到初始阈值时创建,从而,在创建磨损均衡表前,顺序或者随机使用与非闪存中的各可用块,减少不必要的磨损均衡操作,不仅会使的与非闪存的存取速度加快,而且公知的是磨损均衡不可避免的会产生数据搬运,增加了块的擦写次数,减少磨损均衡操作,也有助于提高与非闪存的整体使用寿命。
为了有利于大数据量的连续操作,并减少磨损均衡处理的次数,上述磨损均衡处理时减少内存开销的方法,在创建所述磨损均衡表的同时按照纠错位数的多少对与非闪存进行分池,并优先使用纠错位数较少池中的可用块。
进一步地,上述磨损均衡处理时减少内存开销的方法,为了更有效的控制数据的操作,所述池包括第一纠错位数门限限定的冷池、第二纠错位数门限限定的更新池和第三纠错位数门限限定的热池,且第一纠错位数门限﹤第二纠错位数门限﹤第三纠错位数门限,同时保持三池中的可用块数平衡而动态调整三门限值;
进而,所述冷池与所述热池间进行静态磨损均衡操作,热池与更新池之间进行动态的磨损均衡操作,更新池与冷池间进行基于相应门限约束的可用块归属操作。
上述磨损均衡处理时减少内存开销的方法,优选地,所述静态磨损均衡操作包括:把冷池中纠错位数值小的可用块和热池中纠错位数值最大的可用块进行数据交换的第一操作和把冷池中的冷数据和热池中的热数据进行交换的第二操作;
所述动态磨损均衡为当更新池中的可用块的纠错位数达到所述第二纠错位数门限时,把该可用块归入所述热池;
而更新池与冷池间基于门限的可用块归属操作则是在更新池中的可用块达到第一纠错位数门限时,把该可用块归入所述更新池;当调整门限时,纠错位数低于所述第一纠错位数门限的可用块归入所述冷池。
上述磨损均衡处理时减少内存开销的方法,还包括备用池,该备用池分配入留作备用的空闲块以及纠错位数达到设定位数的空闲块;
进而,当热池与冷池间进行静态磨损均衡操作时,在冷池的可用块消耗完的情况下,备用池与热池间进行静态磨损均衡操作;
进而,当冷池中的数据块被擦除后,且该块纠错位数没有达到第一门限值时,用于补偿备用池。
上述磨损均衡处理时减少内存开销的方法,所述第一门限值小于2Ti-T,第二门限值为2Ti-T,第三门限值为T,其中Ti为静态阈值,T为动态阈值;
T与与非闪存中可用块的当前最大纠错位数Mt正相关,而在每次磨损均衡操作时设定,静态阈值Ti与动态阈值正相关,且初始的静态阈值即为所述初始阈值。
上述磨损均衡处理时减少内存开销的方法,动态阈值T=aMt/(1+bMt)+ Ti;静态阈值Ti=(1+bMt)/(aMt)+T;
其中a<0,b<-1,且a-4b≥4,Mt为当前可用块最大的纠错位数,取当前与非闪存允许的最大纠错位数Tm≥8qa-Tmb≥0,其中q为工艺因子,且q∈[1,5];静态阈值Ti和动态阈值T均不大于允许的最大纠错位数Tm。
上述磨损均衡处理时减少内存开销的方法,所述磨损均衡表为一个数组,对应的数组元素为与非闪存的可用块的纠错位数,且数组的最后一个数组元素为当前最大的纠错位数。
附图说明
图1为磨损均衡表的映射关系。
图2为池的转换关系。
具体实施方式
本文在现有闪存磨损均衡算法的基础上,提出了一种减少磨损均衡执行时的内存开销。闪存在执行磨损均衡时,主要的内存的开销就是加载磨损均衡表,表的主要有两个数据结构:物理块标识和物理块的擦除情况。本方法用纠错码的纠错位数来代替物理块的擦除次数,从而使磨损均衡表所占的内存大大减少了。
应知,当前的主流闪存是与非闪存,当然也有XOR(或非闪存)存在,显然,单就数据存取来讲,都会存在数据纠错的步骤,显然,依据本文的主要应用对象与非闪存的方法,也可以应用于其他类型的闪存。
下面先对与非闪存进行一个简单描述:
关于与非闪存,按照存储单元或者说按照硬件架构,目前存在三种类型,分别是SLC(Single-Level Cell,单层单元)是1bit/cell,约10万次擦写寿命。MLC(Multi-Level Cell,多层单元)是2bits/cell,约3000-10000次擦写寿命。TLC(Trinary-Level Cell,三阶单元)是3bits/cell,约500次擦写寿命。
SLC的特点是成本高、容量小、速度快,而MLC的特点是容量大成本低,但是速度慢。由于每个MLC存储单元中存放的资料较多,结构相对复杂,出错的几率会增加,必须进行错误修正,这个动作导致其性能大幅落后于结构简单的SLC闪存。
TLC的架构(有些地方称3LC)已批量应用于闪存芯片上,这种架构与MLC采用近似原理,只不过MLC是1个单元2个bit,而TLC则是1个单元3个bit, MLC和SLC的差距,TLC在同样的方面比MLC还要差上一大截。与MLC相似的是,这种技术同样是在价格上占了优势,比MLC更便宜,不过寿命/速度则更差于MLC,而且TLC通常是和高制程同时出现的,导致目前一些采用TLC的U盘速度惨不忍睹,寿命更是没底,出错概率更大,更需要进行错误修正。
显然,对于与非闪存,SLC架构对错误修正有要求,MLC和TLC架构则必须进行错误修正,因此,发明人认为,码字错误率是磨损均衡必须要考虑的问题。
几个术语:
在闪存控制芯片或者说闪存控制器中在对数据进行操作时,要对数据进行纠错,也就是每次对数据进行读写的时候都会进行校验并进行解码,在解码的过程中会计算出并可以直接给出数据出错的比特数,也就是纠错位数。
嵌入式系统中应用软件中的逻辑转换层中的映射表能够提供块的物理地址和该块所存储数据的类型,可以根据数据类型和每个块的纠错位数来分各池。主要原因闪存类型不同,他们在相同擦写次数下的纠错位数并不相同,SLC的性能好一些,可擦写次数上限高,而TLC的性能差一些,它的可擦写次数上限低一些,而且它们存储单元存的数据出现错误的概率也不近相同,所以磨损均衡算法也相应的复杂。
关于动态磨损均衡就是依据物理地址映射表中存放的与非闪存物理各块的纠错位数,决定将数据存放到较少纠错位数的存储块中,对于不是执行数据更新的存储块或者说静态数据存储块则不会被动态损耗平衡盯上,例如一个存放有 50GB mp3 音乐等静态数据的 120GB闪存可以有 70 GB 的空间用于动态损耗平衡。
静态磨损均衡会对所有的存储块执行损耗平衡,包括那些没有需要数据更新的存储块,这样的好处是可以用于磨损均衡的存储块数将可能更多,减少存放静态数据(例如 mp3)存储块和存放动态数据(例如日志文件)存储块之间的不平均损耗问题,增加整个闪存的耐久度。
磨损均衡的概念是需要尽量地将闪存的擦除平均地分布于闪存的各个闪存角落,容量愈大,同样擦除量所产生的平均放闪周期自然越少,不过如果还是出现了存储块失效的情况,就需要将该存储块标记为不可用,然后从与非闪存预留的冗余区中重新分配一块存储块到相应的逻辑地址。
对于可用块,包括但不限于用户可见的物理块,在本文如图2所示的分池中,备用池中的块可以表现为对用户不可见,只有在磨损均衡时,系统可见。
冷数据和热数据是一对互斥的概念,表示在一段时间内对该数据的使用频率。
参照说明书附图1,左边表示物理块,应为可用块,坏块因不再参与数据操作而不包含在内,n为自然数,是与非闪存当前可用块的总数;右边表示对应块的纠错位数,与序列无关,图中仅是简单的示意。如物理块1,其纠错位数是12。
图中BECT为Block Error Correction Table的缩略语,可以直译为块纠错表,也可以匹配磨损均衡方法,表示为磨损均衡表。
进而,一种磨损均衡处理时减少内存开销的方法,创建一个磨损均衡表,记录与非闪存中每一个可用块及每一可用块之纠错码的纠错位数,并在对与非闪存操作时更新该磨损均衡表;
在磨损均衡处理时,优先使用纠错位数少的可用块。
依据上述内容和当前的技术水平可知,纠错码的纠错位数实时并真实的反映了与非闪存存储数据的真实情况,利用纠错码的纠错位数来替代闪存物理块的擦写次数来进行磨损均衡策略。
纠错码的纠错位数一般是24bits/KB、40bits/KB和60bits/KB等,而闪存物理块的擦写次数一般会在1000次至10万次不等,据此可知,信息量纠错位数要远小于物理快的擦写次数,对应的同类磨损均衡表的信息量等同的情况下,数据规模明显减少,从而,在执行磨损均衡时用纠错码的纠错位数可以明显减少内存的开销。
下面看一个数据的纠错情形,假如所操作的数据是10位(bit),如1000010011,假如读取该数据变成了:1010010101,据此可以直观的看出其中有3bits出现了错误,我们就可以说数据出错的比特数是3位。
应当理解,物理块大小不同,数据量也不同,如有的块的存储容量为1024字节,有的块的存储容量为64K字节,尽管每次操作未必是对该块上所有数据的操作,但能够正确的反应当前块的使用情况。这里也涉及磨损均衡表的更新问题,使用中,若表中现有的数据小于当前对相应块操作的纠错位数,进行更新,否则不更新。
另需注意,其实纠错位数虽然反映的是块的健康状况,但如背景技术部分所述,读写的基本单元是页。公知的,页是块的子存储单元,同一块上的页面空间相等,显见的是,关于纠错,是在读写过程中的纠错,必然是以页面为读写单元的操作,但块的健康状况与表现最差的页面直接相关,或者说健康状况最差的页面正确反映了块的健康状况。
因此,所记录的块的纠错位数实际上是反映进行读取时,记录出错位数最大的页的纠错位数。从而,在进行磨损均衡表的更新问题,选择对目标块读写中页纠错位数最大的纠错位数作为更新的目标值,然后与既存的数值进行比较,如果读出的出错位数或者说纠错位数小于等于记录中的值时,我们不进行对表更新,反之,进行对应块的纠错位数的更新。
在上述的内容中,涉及磨损均衡表的创建,其时机如何确定的问题。对于一个新的与非闪存,因没有对其进行过任何操作,对其进行磨损均衡显然是不合适的。在本方案中,其创建磨损均衡表的时机可以匹配当前的磨损均衡算法,启动磨损均衡算法的时机也就是磨损均衡表创建的紧邻的后一个时机。
自然相比于可能几十万次的擦写次数,与非闪存的质量并不能做到完全的一致性,造成某些产品的质量可能较差,因此,在本方案中磨损均衡表创建的时机相比于基于擦写次数的磨损均衡表创建的时机提前。若与非闪存当前的使用状况相对理想,可以让磨损均衡表休眠,并在依据与非闪存当前的使用状况做出评价,给出激活磨损均衡表的时机。从而,据此可以屏蔽产品质量差异,能够更有效地使用与非闪存。
在数据操作中,会出现最大纠错位数,可以以最大纠错位数为驱动,当最大纠错位达到设定的阈值时,创建磨损均衡表。另一方面,由于擦写次数毕竟与纠错位数有一定的关联,也可以针对擦写次数和设计擦写次数的关系确定初始化磨损均衡表的时机,比如,设计擦写次数为10万次,当最大擦写次数达到4万次时,初始化磨损均衡表。
优选地,所述磨损均衡表在与非闪存的可用块当前最大纠错位数达到初始阈值T0时创建,从而,在创建磨损均衡表前,顺序或者随机使用与非闪存中的各可用块。
初始阈值可以参考上段内容设定,匹配当前最大擦写次数和设计擦写次数选择,也可以根据设计的最高纠错位数与当前的纠错位数进行设定。
上段的纠错位数指当前系统的纠错码位数,方法中的纠错位数应理解为数据操作出错或者说错误的位数,在本文中不影响理解。
为帮助对上文的理解,且为下文提出进一步的铺垫,系统的纠错位数动态调整,如果闪存主控提供的最大纠错位数如为24bits,如果数据出现的错误位数少于等于该位数时,读出的数据能够保证准确,如错误的位数为27bits时,超出了主控的纠错能力,读出的数据就不准确了。此时,此块存的数据就视为无效或者丢弃了变为坏块。
此时,调整主控的纠错的纠错位数为40bits时,就可以纠正27bits错误比特数,保证闪存还可以继续使用,这也说明了主控的最大纠错位数越高,它使用的寿命也长。
当然,主控的最大纠错位数是不能无限制增加的,当达到一定程度后,现有的技术环境无法胜任其对系统的要求。
之所以动态调整主控的纠错位数在于出错的位数相对较少时,使用较高的主控纠错位数会造成不必要的浪费,并且会占用较大的系统开销。
为了更有效地控制磨损均衡,在创建所述磨损均衡表的同时按照纠错位数的多少把与非闪存的可用存储空间分成几个存储池,并优先使用纠错位数较少池中的可用块。这样,对数据进行操作时,可以对较大的存储空间进行连续操作。
图2所示的是一种四池结构,中国第CN102789423A号发明专利申请也提出了一种四池结构,但与本文所示的情况有所不同。
涉及磨损均衡,首先是基本的操作,基本操作只需要三池配合即可完成,对此,所述池包括第一纠错位数门限限定的冷池、第二纠错位数门限限定的更新池和第三纠错位数门限限定的热池,且第一纠错位数门限﹤第二纠错位数门限﹤第三纠错位数门限,同时保持三池中的可用块数平衡而动态调整三门限值;换言之冷池中的物理块纠错位数的值最小,热池中的物理块的纠错位数最大,更新池中的物理块的纠错位数居中,从而,通过门限控制,在数据操作时可以对某一存储池中的块进行连续操作。
进而,所述冷池与所述热池间进行静态磨损均衡操作,热池与更新池之间进行动态的磨损均衡操作,更新池与冷池间进行基于相应门限约束的可用块归属操作。
关于静态磨损均衡和动态磨损均衡前文中有所述及,并且现有技术也提供了一些静态磨损均衡和动态磨损均衡的算法,在此也都可以使用,可以参考使用。
优选地,所述静态磨损均衡操作包括:把冷池中纠错位数值小的可用块和热池中纠错位数值最大的可用块进行数据交换的第一操作和把冷池中的冷数据和热池中的热数据进行交换的第二操作,前者是对写有数据的块进行的操作,或者说是对数据块的操作,借以降低热池中数据的读写次数;后者也是对数据块的操作,热数据是读写频繁的数据,转移到冷池中,以平衡整体的读写次数。
所述动态磨损均衡为当更新池中的可用块的纠错位数达到所述第二纠错位数门限时,把该可用块归入所述热池,基于此处门限的控制相对比较简单,在此不再赘述。
而更新池与冷池间基于门限的可用块归属操作则是在更新池中的可用块达到第一纠错位数门限时,把该可用块归入所述更新池;当调整门限时,纠错位数低于所述第一纠错位数门限的可用块归入所述冷池。
应知,在此处,门线调整当且仅当往高处调整,因此,在调高门限后,某些低于如第一纠错位数门限的可用块就可以归入冷池了。
图2所示的结构更清楚地反映出以上方法,标号1代表进行静态磨损均衡,把冷池中纠错位数值小的数据块和热池中纠错位数值最大的数据块进行交换,此交换是数据进行交换,如把A中的数据搬运到B中,把B中的数据搬运到A中。
标号2也是静态磨损均衡的操作,把冷数据和热数据进行交换。
标号3代表进行动态磨损均衡,当更新池中的数据块的纠错位数值达到磨损均衡表的一定值,也就是上述的第二纠错位数门限值时,把此数据块丢到热池中。
标号4代表从更新池指向冷池,指更新池中的数据块,不被频繁的读写,使其纠错位数的值不发生变化,随着门限的调整,使得其逐渐接近冷池中门限值所以可以把此数据块丢到冷池中。
每个池都有一个和动态阈值有关的门限值,依据数据出现的错误比特数和动态阈值来设定。
标号5代表冷池中数据块在进行写读操作比较频繁时,导致纠错位数的值增大,达到冷池门限,所以可以把此数据块丢进更新池中。
在上述三池的动态调整中,基本上可以满足大多数的需要,不过大数据量的操作可能会影响这种均衡,为此,分配一个存储空间作为备用池,该备用池分配入留作备用的空闲块以及纠错位数达到设定位数的空闲块。
进而,当热池与冷池间进行静态磨损均衡操作时,在冷池的可用块消耗完的情况下,备用池与热池间进行静态磨损均衡操作。
进而,当冷池中的数据块被擦除后,且该块纠错位数没有达到第一门限值时,用于补偿备用池。
备用池是为了当热池中的数据块和冷池进行交换的时候,冷池的物理块不够的情况下,把备用池中的物理块和热池中的数据块进行交换。备用池中的块都是空闲块,它主要是在冷池块不够热池块转换的情况下使用,把热池中的数据交换出来。把带有有数据的块放到热池中,把空闲块放到备用池中。
下面对门限进行说明:
如前所述,各池门限与多个因素有关,表现为所述第一门限值要小于2Ti-T,第二门限值为2Ti-T,第三门限值为T,其中Ti为静态阈值,T为动态阈值;
T与与非闪存中可用块的当前最大纠错位数Mt正相关,而在每次磨损均衡操作时设定,静态阈值Ti与动态阈值正相关,且初始的静态阈值即为所述初始阈值。
正相关(Positive correlation)是一个数学术语,指自变量增长,因变量也跟着增长。具体地,是指两个变量变动方向相同,一个变量由大到小或由小到大变化时,另一个变量亦由大到小或由小到大变化。
动态变化的门限可以减少运算,如前所述,一开始就用设计最大纠错位数,运算量显然会比较大,因此,门限的设定类同于逐级增大纠错位数,运算量减小,对内存的占用也会相应减少。
动态阈值T=aMt/(1+bMt)+ Ti;静态阈值Ti=(1+bMt)/(aMt)+T;
其中a<0,b<-1,且a-4b≥4,Mt为当前可用块最大的纠错位数,取当前与非闪存允许的最大纠错位数Tm≥8qa-Tmb≥0,其中q为工艺因子,且q∈[1,5];静态阈值Ti和动态阈值T均不大于允许的最大纠错位数Tm。
动态阈值T的选取,根据对闪存的类型、纠错码的纠错位数和闪存的一些特性选取和纠错位数值有一定函数关系的值。如上所述,静态阈值其实也是动态数,表现为下一次静态阈值Ti=(1+bMt)/(aMt)+T。a和b是影响因子,可以看做是常数。初始阈值Ti是初始设定一个初值之后,它会随着动态阈值进行调整。
在一些实施例中,所述磨损均衡表为一个数组,对应的数组元素为与非闪存的可用块的纠错位数,且数组的最后一个数组元素为当前最大的纠错位数。数据结构简单,作为一个对象访问比较直接,对存储空间的要求比较小。
在现有的纠错机制下,一个7位的数组就可以满足使用要求,7bits的二进制1111111表示的十进制数是127,说明数据的纠错位数最大也不会超过127。
在另一些实施例中,可以选择计算机可读的以文件形式存在的对象对纠错位数进行描述,解析该文件,提取纠错位数就可以用于磨损均衡。
从而,依据上述方法在执行磨损均衡操作时,减少了内存的开销,也可使长期不被更新的冷数据块也能在整体存储介质上运动起来。各物理块的磨损程度的标准差也较小,而且也减小了额外擦除次数。
而传统的方法通过记录闪存物理块的擦写次数,以便在磨损均衡处理时找出合适的处理块,在消耗大量内存开销的基础上实现的,闪存在每次初始化的时候,都需要将物理块的擦除情况读到内存中,内存的内容量越大,占用的内存也越多。若一个物理块的寿命为100万次擦除,则每个块需要用32bits来存储擦写次数。
Claims (7)
1.一种磨损均衡处理时减少内存开销的方法,其特征在于,创建一个磨损均衡表,记录与非闪存中每一个可用块及每一可用块之纠错码的纠错位数,并在对与非闪存操作时更新该磨损均衡表;
在磨损均衡处理时,优先使用纠错位数少的可用块;
所述磨损均衡表在与非闪存的可用块当前最大纠错位数达到初始阈值时创建,从而,在创建磨损均衡表前,顺序或者随机使用与非闪存中的各可用块;
在创建所述磨损均衡表的同时按照纠错位数的多少对与非闪存进行分池,并优先使用纠错位数较少池中的可用块。
2.根据权利要求1所述的磨损均衡处理时减少内存开销的方法,其特征在于,所述池包括第一纠错位数门限限定的冷池、第二纠错位数门限限定的更新池和第三纠错位数门限限定的热池,且第一纠错位数门限﹤第二纠错位数门限﹤第三纠错位数门限,同时保持三池中的可用块数平衡而动态调整三门限值;
进而,所述冷池与所述热池间进行静态磨损均衡操作,热池与更新池之间进行动态的磨损均衡操作,更新池与冷池间进行基于相应门限约束的可用块归属操作。
3.根据权利要求2所述的磨损均衡处理时减少内存开销的方法,其特征在于,所述静态磨损均衡操作包括:把冷池中纠错位数值小的可用块和热池中纠错位数值最大的可用块进行数据交换的第一操作和把冷池中的冷数据和热池中的热数据进行交换的第二操作;
所述动态磨损均衡为当更新池中的可用块的纠错位数达到所述第二纠错位数门限时,把该可用块归入所述热池;
而更新池与冷池间基于门限的可用块归属操作则是在更新池中的可用块达到第一纠错位数门限时,把该可用块归入所述更新池;当调整门限时,纠错位数低于所述第一纠错位数门限的可用块归入所述冷池。
4.根据权利要求2或3所述的磨损均衡处理时减少内存开销的方法,其特征在于,还包括备用池,该备用池分配入留作备用的空闲块以及纠错位数达到设定位数的空闲块;
进而,当热池与冷池间进行静态磨损均衡操作时,在冷池的可用块消耗完的情况下,备用池与热池间进行静态磨损均衡操作;
进而,当冷池中的数据块被擦除后,且擦除后的冷池中的数据块纠错位数没有达到第一纠错位数门限时,用于补偿备用池。
5.根据权利要求2或3所述的磨损均衡处理时减少内存开销的方法,其特征在于,所述第一纠错位数门限小于2Ti-T,第二纠错位数门限为2Ti-T,第三纠错位数门限为T,其中Ti为静态阈值,T为动态阈值;
T与与非闪存中可用块的当前最大纠错位数Mt正相关,而在每次磨损均衡操作时设定,静态阈值Ti与动态阈值正相关,且初始的静态阈值即为所述初始阈值。
6.根据权利要求5所述的磨损均衡处理时减少内存开销的方法,其特征在于,动态阈值T=aMt/(1+bMt)+ Ti;静态阈值Ti=(1+bMt)/(aMt)+T;
其中a<0,b<-1,且a-4b≥4,Mt为当前可用块最大的纠错位数,取当前与非闪存允许的最大纠错位数Tm≥8qa-Tmb≥0,其中q为工艺因子,且q∈[1,5];静态阈值Ti和动态阈值T均不大于允许的最大纠错位数Tm。
7.根据权利要求1所述的磨损均衡处理时减少内存开销的方法,其特征在于,所述磨损均衡表为一个数组,对应的数组元素为与非闪存的可用块的纠错位数,且数组的最后一个数组元素为当前最大的纠错位数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310026618.0A CN103092770B (zh) | 2013-01-18 | 2013-01-18 | 一种磨损均衡处理时减少内存开销的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310026618.0A CN103092770B (zh) | 2013-01-18 | 2013-01-18 | 一种磨损均衡处理时减少内存开销的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103092770A CN103092770A (zh) | 2013-05-08 |
CN103092770B true CN103092770B (zh) | 2015-08-12 |
Family
ID=48205370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310026618.0A Active CN103092770B (zh) | 2013-01-18 | 2013-01-18 | 一种磨损均衡处理时减少内存开销的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103092770B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572489B (zh) * | 2013-10-23 | 2019-12-24 | 深圳市腾讯计算机系统有限公司 | 磨损均衡方法及装置 |
CN104216665B (zh) * | 2014-09-01 | 2017-03-08 | 上海新储集成电路有限公司 | 多层单元固态硬盘的存储管理方法 |
CN106021123B (zh) * | 2016-05-09 | 2019-03-08 | 深圳大学 | 一种3d闪存物理块的选取方法及选取系统 |
CN106201340B (zh) * | 2016-06-29 | 2020-07-24 | 联想(北京)有限公司 | 一种存储数据的方法、存储设备、电子设备 |
CN108205423B (zh) * | 2016-12-20 | 2020-06-02 | 华为技术有限公司 | 一种物理硬盘磨损均衡方法、装置及系统 |
CN107368262A (zh) * | 2017-07-21 | 2017-11-21 | 重庆大学 | 一种基于闪存制程差异的数据布局方法 |
CN108628552B (zh) * | 2018-05-10 | 2021-02-09 | 南京道熵信息技术有限公司 | 一种改善Flash磨损寿命的方法、控制装置及存储系统 |
CN111124305B (zh) * | 2019-12-20 | 2021-08-31 | 浪潮电子信息产业股份有限公司 | 固态硬盘磨损均衡方法、装置及计算机可读存储介质 |
CN111143238B (zh) * | 2019-12-27 | 2022-03-15 | 无锡融卡科技有限公司 | 基于eFlash存储芯片的数据擦写方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458957A (zh) * | 2007-09-13 | 2009-06-17 | 三星电子株式会社 | 存储器系统及其磨损平衡方法 |
CN101752010A (zh) * | 2008-12-01 | 2010-06-23 | 创惟科技股份有限公司 | 闪存控制器及设定闪存的错误修正码容量的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8453021B2 (en) * | 2009-07-29 | 2013-05-28 | Stec, Inc. | Wear leveling in solid-state device |
KR101097438B1 (ko) * | 2009-10-29 | 2011-12-23 | 주식회사 하이닉스반도체 | 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법 |
-
2013
- 2013-01-18 CN CN201310026618.0A patent/CN103092770B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458957A (zh) * | 2007-09-13 | 2009-06-17 | 三星电子株式会社 | 存储器系统及其磨损平衡方法 |
CN101752010A (zh) * | 2008-12-01 | 2010-06-23 | 创惟科技股份有限公司 | 闪存控制器及设定闪存的错误修正码容量的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103092770A (zh) | 2013-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103092770B (zh) | 一种磨损均衡处理时减少内存开销的方法 | |
US11768632B2 (en) | Memory system and method of controlling nonvolatile memory | |
TWI418980B (zh) | 記憶體控制器、用於格式化記憶體系統中之記憶體陣列和固態驅動器之方法及固態記憶體系統 | |
US8645613B2 (en) | Data writing method for flash memory and control circuit and storage system using the same | |
US9098395B2 (en) | Logical block management method for a flash memory and control circuit storage system using the same | |
US9645895B2 (en) | Data storage device and flash memory control method | |
US8001317B2 (en) | Data writing method for non-volatile memory and controller using the same | |
CN104937561B (zh) | 存储装置 | |
US8296504B2 (en) | Data management method and flash memory storage system and controller using the same | |
CN106681652B (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
US20100241789A1 (en) | Data storage method for flash memory and data storage system using the same | |
US20100180069A1 (en) | Block management method for flash memory, and storage system and controller using the same | |
US20100057979A1 (en) | Data transmission method for flash memory and flash memory storage system and controller using the same | |
US10915443B2 (en) | Allocation of overprovisioned blocks for minimizing write amplification in solid state drives | |
CN101414282B (zh) | 平均磨损方法及使用此方法的控制器 | |
US8074128B2 (en) | Block management and replacement method, flash memory storage system and controller using the same | |
US20150058531A1 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US9383929B2 (en) | Data storing method and memory controller and memory storage device using the same | |
US8423707B2 (en) | Data access method for flash memory and storage system and controller using the same | |
US11520699B2 (en) | Using a common pool of blocks for user data and a system data structure | |
CN101408864B (zh) | 用于断电时的数据保护方法及使用此方法的控制器 | |
CN114600074A (zh) | 块装置的构造 | |
CN113946283A (zh) | 存储器装置的分区命名空间中的部分区存储器单元处置 | |
CN101930407A (zh) | 闪速存储器控制电路及其存储系统与数据传输方法 | |
CN104166558B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |