一种固态盘内存分区方法

文档序号:6368070阅读:269来源:国知局
专利名称:一种固态盘内存分区方法
技术领域
本发明属于计算机外存储设备领域,具体涉及一种基于闪存的固态盘中内存的分区方法。
背景技术
固态盘是近十年出现的一种新型计算机外存储设备。通常,固态盘分一下几种类型基于闪存的固态盘、基于动态随机存储器的固态盘、基于其他固态介质的固态盘。在本发明专利中的固态盘特指基于闪存的固态盘,一下简称固态盘。闪存是一种具有高密度,大容量,非易失性等特点的新型存储介质,它相对磁介质,具有较低的读写延时、较低的能耗;但是闪存芯片自身存在的一些缺陷限制了这类存储器的应用。其一,必须先擦除后写入,擦除操作的单元为块,写入操作的单元为页,一个块中有多个页。其二,闪存的擦除次数是有 限的。因为先擦后写的原因,闪存中需要一个映射表来记录逻辑地址与物理地址之间的关系(称之为映射关系)。固态盘中除了一个处理器、大量的闪存芯片外,还有一个或多个内存芯片。相对闪存,内存的读写速度较为快速。固态盘中的内存通常有两个作用存放映射关系、做数据缓存区。映射关系需要被快速读写,所以必须存放在内存中。数据缓存区是用户数据在内存中存放的区域,它利用一段时间内,请求可能重复出现的特点,将重复出现的请求通过访问内存而直接被响应,减少访问闪存的次数。这提高了固态盘的性能,同时减少了闪存的写操作次数,降低了擦除次数,从而提高了固态盘的寿命。数据缓存区越大,请求直接访问内存的次数也就越多,所以固态盘的性能就会越好。通常,因为固态盘中,所有的映射关系总量较大,在内存中只能存放部分映射关系,其他映射关系存放在闪存中。当请求的数据的映射关系不在内存中时,需要先将映射关系读出,然后再读写数据;相反,如果映射关系在内存中,可以直接读写请求的数据。因此,越多的映射关系存放在内存中,意味着更好的固态盘性能。可以看到,内存存放映射关系区域和数据缓存区域对内存的有限空间,存在一个争用的问题,即如何分配内存空间给映射关系区域和数据缓存区域的问题。传统的解决方法是一种固定比例的方法,既映射关系区域和数据缓存区域的内存大小比例是固定的。例如两者大小是I : 1,数据缓存区和映射表所占用的空间大小一样。这种固定比例方法的问题是,不能很好地适应应用环境的变化,因为不同的应用环境下,对数据缓存区和映射关系区域大小的需求不尽相同,这种固定比例的方式将影响固态盘的整体性能。

发明内容
本发明所解决的技术问题在于,提出一种固态盘的内存分区方法,在不增加固态盘的系统开销和软件开销的前提下,获得数据缓存区和映射关系区域之间的最佳比例关系,确保固态盘在不同负载下均能取得最佳或者接近最佳的性能。为实现上述目的,本发明采用如下技术方案
一种固态盘的内存分区方法,包括如下具体步骤(I)建立两个计数器Pt^P Pb,分别用于记录因为内存中映射关系区域过小导致的第一额外操作开销,以及因为内存中数据缓存区域过小导致的第二额外操作开销。其中,所述第一额外操作开销包括将映射关系读出过程所消耗的时间,以及将映射关系写回闪存过程所消耗的时间;第二额外操作开销指数据写回闪存过程消耗的时间。(2)根据读写请求的状态更新计数器Pm和PB,具体为 对于读请求,首先从内存中寻找该请求的映射关系,如果该映射关系不在内存中,需要首先将映射关系从闪存中读出,同时查找内存中的映射关系区域是否还有空闲空间,如果有,则将所述读出的映射关系存放在内存的映射关系区域,然后更新计数器Pm ;如果没有,首先将映射关系区域中旧的映射关系与回闪存,然后将所述读出的映射关系保存到内存中,最后更新计数器Pm。对于写请求,首先在内存的数据缓存区中寻找该写请求数据,如果该写请求数据的旧数据不在数据缓存区,查看内存的数据缓存区是否还有空间,如果有,则将该写请求数据直接写到内存的数据缓存区;如果没有,则将数据缓存区中的旧数据写回闪存,然后将该写请求的数据写到内存的数据缓存区,最后更新计数器PB。(3)每响应一次读写请求或一定周期之后,调整内存中映射关系区域和数据缓存区域的大小比例,即计算当前状态下,内存中映射关系区域和数据缓存区域的最佳大小比 例。(4)根据上述获得的映射关系区域和数据缓存区域的理论最佳比例,实时调整内存的组成,完成固态盘内存实时分区。作为本发明的改进,所述步骤(2)中,如果内存中的映射关系区域有空闲空间,则使用下式更新计数器PM:Pm(新值)=Pm(旧值)+Pr⑴如果内存中的映射关系区域没有空闲空间,则使用下式更新计数器PM Pm(新值)=Pm(旧值)+Pr+Pw⑵作为本发明的改进,所述步骤(2)中,通过如下公式更新计数器PB Pb(新值)=Pb(旧值)+F*w⑶作为本发明的改进,所述步骤(3)中,通过如下公式计算所述映射关系区域和数据缓存区域的最佳大小比例
=ρΡμρ X内存总容量⑷
当目Ij最佳谷量Pb+Pm
fSSfS =p Pbp X内存总容量(5)
甴m取佳谷星Pb + Pm本发明中,将内存空间除去必要的元数据,包括各种位图,校验信息外,剩下的空间分成两个部分,既数据缓存区域和映射关系区域。数据缓存区域用来保存经常用到的数据,映射关系区域用来保存经常用到的映射关系。本发明中,当一个读请求到达固态盘后,如果其目标数据在缓存中,则直接读取缓存中的数据,否则需要读取闪存中的数据。在读取闪存中的数据时,需要首先查询目标数据的映射关系,如果这个映射关系存在于内存的映射关系区域,则可以立即获得目标数据在闪存上的地址,否则需要首先从闪存中将相对应的映射关系读出,在读出这个映射关系之后才能从闪存中读出目标数据。在读出映射关系时,存在这样一种可能,既,因为内存中的映射关系区域满了,新读出的映射关系很可能在后续继续使用,所以需要将其记录在内存的映射关系区域,为了给这个新的映射关系腾出空间,需要首先将处于映射关系区域最后的映射关系 写回闪存。从这个读操作的操作过程来看,如果这个读请求的映射关系处于这个映射关系区域的话,就可以避免一次多余的读取闪存的操作(读取目标数据的映射关系)或者加上一次多余的写闪存的操作(为将目标数据的映射关系记录在映射关系区域,而需要写回在映射关系区域的旧的映射关系)。可以做一下假设,如果映射关系区域足够大,大到这个映射关系正好保存在内存中,则上述一次多余的读闪存操作或者加上一次多余的写闪存操作可以避免,在本发明中,将这种多余的访问闪存的操作称之为额外操作。当一个写请求到达时,如果这个写请求的数据存在于数据缓存区,写请求的新数据可以直接写到数据缓存区,否则需要将数据缓存区的最后的数据写回闪存再将这个写请求的数据写到数据缓存区的最前面,这个为写请求的数据腾出缓存空间的写回操作被认为是额外操作。与此同时,因为写回了一个数据,这个数据记录在闪存中一个新地址,这将产生一个新的映射关系,这个映射关系需要写回闪存,这个写回映射关系的操作也被认为是额外操作。额外操作可以影响固态盘的读写性能,减少额外操作可以直接提高固态盘的读写性能,额外操作产生的原因是固态盘中数据缓存区域偏小以及映射关系区域偏小,减少额外操作的唯一方法就是增加数据缓存区域的大小以及映射关系区域的大小。固态盘中内存的空间容量有限,不能两者均增加。在本发明中,需要在不同负载下,提高不同的数据缓存区域大小和映射关系区域大小,为了适应不同负载的特定,所以设计了一种基于惩罚的内存分区方法。这里所谓的惩罚就是前面所提到的额外操作,因为这些额外操作对固态盘的性能影响可以认为是因为数据缓存区域和映射关系区域过小导致的一种对性能的惩罚。采用本发明提供的方法,可以在固态盘系统运行时,根据当前的运行环境,寻找到最优的映射关系区域和数据缓存区域的容量比例,根据这个比例动态调整内存构成,在内存容量一定的情况下,达到性能最佳的目标。


图I为本发明实施例的整体流程图;图2为本发明的实施例的读请求操作过程;图3为本发明的实施例的写请求操作过程;
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。本发明是一种固态盘内存分区方法,使用该方法可以主动,自适应地调整内存中映射关系区域和数据缓存区域的大小比例,具体包括如下步骤图I是本方法的整体流程图。
第一步如图I中第一点所述,在固态盘上电开始工作后,进行固态盘的初始化工作,在完成其他常规初始化工作的同时,需要建立两个计数器,分别为Pm和Pb。这两个计数器分别记录因为内存中映射关系区域过小导致的第一额外操作开销,以及因为内存中数据缓存区域过小导致的第二额外操作开销。其中,额外操作开销指额外操作所消耗的时间,对于第一额外操作开销,其中的额外操作包括(a)当外部读请求的映射关系不在映射关系区域时,需要将该映射关系读出,这个读出的过程就是额外操作。(b)当新的映射关系需要记录在映射关系区域时(如第a点所述),如果映射关系区域空间不足时,需要将旧的映射关系写回闪存,这个映射关系的写回过程就是额外操作。即第一额外操作开销包括将映射关系读出过程所消耗的时间,以及将映射关系写回闪存过程所消耗的时间。
对于第二额外操作开销,其中的额外操作指数据回写过程,具体为当外部写请求的数据不在数据缓存区时,需要将数据缓存区中的数据写回闪存,为写请求的数据腾出内存空间,即数据写回闪存过程消耗的时间即为第二额外操作开销。内存空间除去必要的元数据,包括各种位图,校验信息外,剩下的空间分成两个部分,既数据缓存区域和映射关系区域。数据缓存区域用来保存经常用到的数据,映射关系区域用来保存经常用到的映射关系。在这里所谓的经常用到的是泛指一些采用类似最近最少使用算法(LRU),最少使用算法(LFU)保存下来的数据和映射关系,本实施例中并不特指在数据缓存区域和映射关系区域采用哪一种排序算法,即目前的各种方式都可以,本实施例可以优选使用LRU算法作为示例。第二步如图1,因为外部请求分为两种,读请求和写请求,在第二步中,需要根据读写请求的状态更新计数器Pm和PB。图2是读请求到达固态盘时的处理流程示意图。当读请求到达后,首先从内存中寻找该请求的映射关系,如果这个映射关系存在内存中,可以直接从内存中获取映射关系,然后立即读取目标数据,这个过程没有额外操作。但是当映射关系不在内存中,需要首先将映射关系从闪存中读出,同时需要查找内存中的映射关系区域是否还有空闲空间,如果还有空闲空间,就将刚刚读出的映射关系存放在内存的映射关系区域,然后使用公式I更新计数器PM;当内存的映射关系区域没有空闲空间,需要首先将映射关系区域中旧的映射关系写回闪存,为刚读出的映射关系腾出内存空间,然后将刚读出的映射关系保存到内存中,最后使用公式2更新计数器Pm。图3是写请求到达固态盘时的处理流程图。当写请求到达时,首先在内存的数据缓存区中寻找该数据,如果该数据存在于数据缓存区中,直接将要写入的数据更新原数据。如果该数据的旧数据不在数据缓存区,为了将这个数据保存到内存中,需要查看内存的数据缓存区是否还有空间,如果还有空闲空间,可以将该写请求的数据直接写到内存的数据缓存区;如果内存中数据缓存区没有空闲空间,需要将数据缓存区中的旧数据写回闪存,然后才能将该写请求的数据写到内存的数据缓存区,最后使用公式3更新计数器PB。公式I Ρμ(*Η!) = Pm(IHiI)+Pe公式2 Pm(新值)=PmO日值)+Pr+Pw公式3 Pb(*i1) = Pb(IHiI)+Pw在公式1,2,3中,PK,PW*别表示对闪存进行一次读操作的时间开销和对闪存进行一次写操作的时间开销。Pm(新值),PB (新值)分别表示经过这次更新之后的Pm值,Pb值。P1 (旧值),PB(旧值)分别表示这次更新之前的Pm值,Pb值。第三步每响应一次读写请求或一定周期之后,需要调整内存中映射关系区域和数据缓存区域的大小比例,如图I中第三点所示。一定周期表示固定的时间段,例如I小时,这个时间段的长短可以根据负载的特点具体设定。因为之前两个计数器Pm和Pb进行了修正,在这一步,需要根据公式4,5计算当前状态下,内存中映射关系区域和数据缓存区域的最佳大小比例。
权利要求
1.一种固态盘的内存分区方法,包括如下具体步骤 (1)建立两个计数器Ps^PPb,分别用于记录第一额外操作开销和第二额外操作开销,其中所述第一额外操作开销包括将映射关系读出过程所消耗的时间,以及将映射关系写回闪存过程所消耗的时间;所述第二额外操作开销指数据写回闪存过程消耗的时间; (2)根据读写请求的状态更新计数器Pm和Pb,具体为 对于读请求,首先从内存中寻找该请求的映射关系,如果该映射关系不在内存中,首先将映射关系从闪存中读出,同时查找内存中的映射关系区域是否还有空闲空间,如果有,则将所述读出的映射关系存放在内存的映射关系区域,然后更新计数器Pm ;如果没有,首先将映射关系区域中旧的映射关系与回闪存,然后将所述读出的映射关系保存到内存中,最后更新计数器Pm; 对于写请求,首先在内存的数据缓存区中寻找该写请求数据,如果该写请求数据的旧数据不在数据缓存区,查看内存的数据缓存区是否还有空间,如果有,则将该写请求数据直接写到内存的数据缓存区;如果没有,则将数据缓存区中的旧数据写回闪存,然后将该写请求的数据写到内存的数据缓存区,最后更新计数器Pb ; (3)每响应一次读写请求或一定周期之后,调整内存中映射关系区和数据缓存区的大小比例,即计算当前状态下,内存中映射关系区和数据缓存区的最佳大小比例; (4)根据上述获得的映射关系区和数据缓存区的最佳大小比例,调整内存的组成,即可实现固态盘内存实时分区。
2.根据权利要求I所述的一种固态盘的内存分区方法,其特征在于,所述的步骤(2)中,如果内存中的映射关系区域有空闲空间,则使用下式更新计数器Pm: Pm(新值)=Pm(旧值)+Pr⑴ 如果内存中的映射关系区域没有空闲空间,则使用下式更新计数器Pm: Pm(新值)一Pm(旧值)+Pr+Pw⑵。
3.根据权利要求I或2所述的一种固态盘的内存分区方法,其特征在于,所述步骤(2)中,通过如下公式更新计数器Pb Pb(新值)=Pb(旧值)+F*w(3)°
4.根据权利要求1-3之一所述的一种固态盘的内存分区方法,其特征在于,所述步骤(3)中,通过如下公式计算所述映射关系区域和数据缓存区域的最佳大小比例
全文摘要
本发明公开了一种基于闪存的固态盘的内存分区方法,包括(1)设置两个关键参数PB和PM,分别记录第一额外操作开销和第二额外操作开销;(2)根据不同情况下的读写请求,更新两个关键参数PB和PM;(3)经过一定周期,根据PB和PM的变化,使用一组计算公式,找到最佳的数据缓存区域和映射关系区域的大小比例;(4)根据当前内存的组成情况和第三步计算获得的数据缓存区域和映射关系区域的最佳大小比例,调整内存的组成。本发明的内存分区方法适用于基于闪存的固态盘中内存的管理,不受可扩展性的问题影响,对具有不同容量的内存的固态盘设备都适用,可以在不同负载和使用环境下,极大提高固态盘的读写性能。
文档编号G06F3/06GK102681792SQ20121011033
公开日2012年9月19日 申请日期2012年4月16日 优先权日2012年4月16日
发明者冯丹, 刘景宁, 江泓, 田磊, 秦亦, 童薇, 胡洋 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1