一种固态盘地址映射方法与流程

文档序号:11407060阅读:139来源:国知局

本发明涉及固态盘的地址映射方法,具体涉及一种基于压缩算法的固态盘地址映射方法。



背景技术:

页映射算法维护一个页映射表,页映射表中的每一条映射关系由逻辑页号和物理页号组成。页映射是一种极为灵活的地址映射策略,采用页映射机制的固态盘内逻辑页和物理页之间是全相联的映射关系,即写请求的数据可以写入flash中任意页,即使是频繁的随机写请求也不会引起过多的垃圾回收。页映射策略可以高效的处理随机写请求,并且只有很低的垃圾回收开销。

页映射表中每条映射关系占用的存储空间反应了该映射关系的寻址能力。对于基于2kb页slcnandflash的固态盘来说,当为每条映射关系分配4个字节时,其寻址能力为8tb,而分配3个字节时,其寻址能力只有32gb。面向企业级应用和高性能计算的固态盘的容量正向tb级发展,因此,为了适应高性能固态盘容量的需求,在页映射中一条映射关系一般至少分配4个字节。

基于页映射的ftl虽然具有高效、灵活、垃圾回收开销低的优点,但是随着固态盘容量的不断增长,页映射表的容量也随之线性增加。页映射表作为每次读写操作必须的元数据,在固态盘运行时需要将其加载到缓存中。对于基于2kb页512gb容量的固态盘来说,其页映射表所需存储空间大小为1gb,而当前所有固态盘设计中,为保证地址转换过程高效,地址映射表都需要存储在缓存中。页映射表对缓存空间的需求导致页映射的成本极高。页映射表对缓存空间的依赖直接限制了基于页映射机制的ftl(flashtranslationlayer,闪存转换层)在实际固态盘中的应用。



技术实现要素:

为解决上述问题,本发明提供一种基于压缩算法的固态盘地址映射方法。

本发明的技术方案是:一种固态盘地址映射方法,包括以下步骤:

s1:将原始地址映射表分成若干个映射块;

s2:对每个映射块执行压缩得到压缩块;

s3:将压缩块和相关块信息合并,并保存到flash中;

s4:固态盘启动时,将flash中的压缩块和相关块信息加载到内存中,并在内存中根据压缩块构造出压缩块链表;内存中包含激活链表;

s5:进行地址映射时,根据逻辑地址检测相应地址映射表是否在激活链表中,若相应地址映射表在激活链表中,则在激活链表中查找到物理地址;若相应地址映射表不在激活链表中,则根据逻辑地址在压缩块链表中找到需要被解压的压缩块,并将该压缩块解压得到映射块,从该映射块的地址映射表中查询得到物理地址,并将该映射块挂入激活链表。

进一步地,固态盘的内存中还包含回收链表;

地址映射方法还包括以下步骤:

s6:当激活链表中的映射块使用频率低于预设频率阈值时,将该映射块重新压缩得到压缩块,并将重新压缩后的压缩块移动到回收链表;

s7:定期将回收链表中的压缩块刷新到压缩块链表。

进一步地,步骤s6中,通过lru算法对映射块重新压缩。

进一步地,步骤s1中,每个映射块大小相等。

进一步地,步骤s2中,通过lzw算法对每个映射块执行压缩。

本发明提供的固态盘地址映射方法,对页映射表采用先分块再压缩的处理方式,采用lzw算法对分块后的映射表进行压缩,这样可以使映射表占用的内存空间大大减小,使地址映射表大小至少压缩50%,地址映射时再根据算法对相应块进行解压缩,再进行地址映射操作。本发明拥有页映射灵活、高效、垃圾回收开销低的优点,使映射表占用的内存空间大幅减小,节省大量内存空间,且降低外部保存映射表flash空间的大小。

附图说明

图1是本发明具体实施例方法流程图。

具体实施方式

下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。

本发明提供的固态盘地址映射方法,首先将原始地址映射表分成大小相等的n块,假如原始地址映射表大小为1gb,每块大小为1m,则有1024块,对每一块执行适当的压缩算法,比如lzw算法,然后将压缩后的映射块和相关块信息保存到flash中;固态盘启动时,将压缩后的映射块和相关块信息加载到内存中,并构造出压缩块链表。

内存中共存在三个链表:压缩块链表,激活链表和回收链表。压缩块链表:根据flash中的压缩数据块信息在系统启动的时候建立;激活链表:保存使用过的解压的映射表块;回收链表:保存通过lru算法从激活链表摘除的需要重新写回压缩块链表的映射表块。回收链表中的压缩块会定时刷新到压缩块链表中,保持同步。

当进行地址映射时,先检查逻辑地址所对应的地址映射表是否在在激活链表中,若在激活链表中,则从激活链表中的映射块找到物理地址;若不在激活链表中,则根据逻辑地址计算得到压缩链表中需要被解压的压缩块,然后对该压缩块执行解压缩,再从解压后的映射表中找到物理地址,并把此压缩块挂入激活链表;当解压块,即激活链表中的映射块不再需要时,通过lru算法将其重新执行压缩,保存到压缩块链表中。

如图1所示,本方法具体包括以下步骤:

s1:将原始地址映射表分成若干个映射块;

s2:对每个映射块执行压缩得到压缩块;

s3:将压缩块和相关块信息合并,并保存到flash中;

s4:固态盘启动时,将flash中的压缩块和相关块信息加载到内存中,并在内存中根据压缩块构造出压缩块链表;内存中包含激活链表;

s5:进行地址映射时,根据逻辑地址检测相应地址映射表是否在激活链表中,若相应地址映射表在激活链表中,则在激活链表中查找到物理地址;若相应地址映射表不在激活链表中,则根据逻辑地址在压缩块链表中找到需要被解压的压缩块,并将该压缩块解压得到映射块,从该映射块的地址映射表中查询得到物理地址,并将该映射块挂入激活链表;

s6:当激活链表中的映射块使用频率低于预设频率阈值时,将该映射块重新压缩得到压缩块,并将重新压缩后的压缩块移动到回收链表;

s7:定期将回收链表中的压缩块刷新到压缩块链表。

步骤s2中,可通过lzw算法对每个映射块执行压缩;步骤s6中,可通过lru算法对映射块重新压缩。

以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。



技术特征:

技术总结
本发明公开一种固态盘地址映射方法,包括步骤:将原始地址映射表分成若干个映射块;对每个映射块执行压缩得到压缩块;将压缩块和相关块信息合并,并保存到flash中;固态盘启动时,将flash中的压缩块和相关块信息加载到内存中,并在内存中根据压缩块构造出压缩块链表;进行地址映射时,根据逻辑地址检测相应地址映射表是否在激活链表中,若在激活链表中,则在激活链表中查找到物理地址;若不在激活链表中,则根据逻辑地址在压缩块链表中找到需要被解压的压缩块,并将该压缩块解压得到映射块,从该映射块的地址映射表中查询得到物理地址,并将该映射块挂入激活链表;本发明使映射表占用的内存空间大幅减小,节省大量内存空间。

技术研发人员:赵贺辉
受保护的技术使用者:郑州云海信息技术有限公司
技术研发日:2017.05.05
技术公布日:2017.09.01
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1