一种不带DRAM的SSD主控可靠性提升系统及方法与流程

文档序号:12119220阅读:654来源:国知局
本发明涉及SSD固态硬盘应用领域,特别是一种不带DRAM的SSD主控可靠性提升系统及方法。
背景技术
::当今在SSD固态硬盘消费级市场,SSD固态硬盘价格已经逐渐逼近传统机械硬盘HDD的价格。为了更进一步的减小SSD固态硬盘的成本,当前消费级SSD固态硬盘已经逐渐由原来的外挂DRAM(见图1,其中:DRAM:动态随机存取存储器,用于存放SSD的整张全部FTL映射表;FTL:Flash映射表,记录主机逻辑地址到NANDFlash物理地址的映射关系;HIF:主机接口,用于接收来自主机的IO命令和数据;NFC:NandFlash控制器,用于适配NANDFlash颗粒;Buffer:SSD主控内部缓存空间,一般只有几百K空间。)的架构设计演变为不外挂DRAM的架构设计(见图2,其中,FTL一级表:记录所有FTLH2F二级表在NANDFlash上的物理地址。一级表常驻buffer;FTLH2F二级表:主机逻辑地址按照等同空间大小切分成多张二级表,每张二级表描述同样大小的主机逻辑地址空间。每张二级表用于存放这部分逻辑地址空间的主机逻辑地址到flash物理地址的映射关系。所有FTLH2F二级表一起,记录整个主机逻辑地址到物理地址的映射关系。FTLH2F表较大,只能在buffer中缓存很小一部分。通常在IO过程中,需要不停的将buffer中的二级表换出到NANDFlash和从NANDFlash换入到buffer)。这样设计的好处是,整个SSD固态硬盘可以节省掉一个,甚至多个DRAM的价格,进而进一步降低SSD固态硬盘成本。但是,在节省掉DRAM过后,原本存放于DRAM里面的SSD主控所必须的FTL映射表项,需要利用另一种方法来解决存放问题。而整张FTL映射表项大小,通常为SSD盘容量的千分之一。拿512G的SSD固态硬盘来讲,其FTL映射表项大小通常需要512M的DRAM空间。而在不带DRAM的SSD主控设计下,这么大的FTL表项数据,是无法全部存放在SSD主控内部的buffer中的。为了解决不带DRAM的SSD主控设计下FTL映射表项的缓存问题,当前几乎所有的不带DRAM的SSD主控,其FTL表项都被设计成2级映射表。其中,第二级映射表根据主机逻辑地址等大小切分成多张表,每张二级表独立描述一个固定主机逻辑地址范围。每个二级表里面的表项,记录一条主机逻辑地址与NANDFlash物理地址的映射关系。所有二级表一起完成记录所有映射关系。所有二级表存放在NANDFlash上,SSD主控缓存部分二级映射表。当IO对应的FTL表项未命中buffer缓存中的二级表项时,需要先将buffer缓存的原二级映射表下发到NANDFlash,释放buffer后再读取当前IO对应的二级表项到该buffer,得到其映射关系后再行处理。而一级映射表常驻buffer,用来记录每张二级映射表对应的NANDFlash地址,保证二级映射表的换入换出。二级映射表HtoF的映射关系示意图见图3,由于主机侧IO地址和顺序的不确定性,造成连续主机逻辑块地址对应的flash物理映射块可能完全离散分布。在上述两级FTL映射表项的设计当中,一旦IO对应的FTL表项未命中buffer缓存,此时就会触发二级表的换入换出,增加二级表写入NANDFlash的数据量。对于随机IO来讲,几乎百分百无法命中FTL表项缓存,由此每一个随机IO都会触发一次二级表的换入换出动作。一方面,这种系统内数据(非用户数据)的写入会抢占资源,降低性能;另一方面,此种数据写入会增加写放大系数,消耗NANDFlash寿命,从而降低SSD整盘的系统可靠性和寿命。例如,如果每张二级表占4K空间大小,写IO也为4K,那么每一次IO将会触发8K的数据写入NAND,写放大系数达到2。在写放大系数为1的情况下,如果一个SSD固态硬盘的寿命为10年,那么在写放大系数为2的情况下,其寿命将只有5年。比如,假设buffer只能存放一张二级表HtoFtable。分属两个不同HtoF表的IO交叉写数据下来。由于先后两个IO分属两张不同二级表HtoFtable,那么每次IO都会触发一次二级表HtoF的下刷行为。假设每次IO大小为4K,每张二级表大小为4K,那么,一次主机4K写IO将会触发8K的数据写入NANDFlash。如果主机前后以这种IO模型一共写入1T的数据,那么实际上写入NANDFlash的数据量将达到2T,写放大系数为2。本发明中用到的名词解释如下:SSD主控:用于管理NAND存储介质以及负责数据在主机和NAND间进行数据传输的装置,一方面向主机提供数据的输入输出接口,一方面利用NAND的接口将数据写入NAND或从NAND读取数据。DRAM:DynamicRandomAccessMemory,动态随机存取存储器。在SSD主控里面,通常用于存放FTL映射表项。FTL映射表:用于记录数据从主机地址到NANDFlash地址的映射关系,每一种映射关系对应FTL映射表中的一条表项。FTL映射表所占的存储空间通常与SSD盘的容量成正比关系,一般情况下大约为SSD容量的千分之一。写放大系数:写放大系数是判断SSD固态硬盘可靠性的重要指标,该值越小,表示SSD固态硬盘可靠性越高。写放大系数=NANDFlash实际数据写入总量/主机数据写入总量。NANDFlash:用于存放数据的flash介质。IO:SSD主控和主机接口的基本处理单元,包括命令协议部分和数据部分。技术实现要素:本发明所要解决的技术问题是,针对现有技术不足,提供一种不带DRAM的SSD主控可靠性提升系统及方法。为解决上述技术问题,本发明所采用的技术方案是:一种不带DRAM的SSD主控可靠性提升系统,包括:FtoH反向映射表:用于记录当前正在写入数据的NANDFlash块到主机的反向映射关系;FTLHtoF二级表:用于记录一段连续主机逻辑地址到NANDFlash的正向映射关系;FTL一级映射表:用于记录一段连续的NANDFlash地址到主机的反向映射关系。相应地,本发明还提供了一种不带DRAM的SSD主控可靠性提升方法,该方法的主要实现过程为:在SSD主控中增加FtoH反向映射表,以记录当前正在写入数据的NANDFlash块到主机的反向映射关系,使得主机侧的IO数据顺序写入NANDFlash上的连续空间,并在FtoH反向映射表描述的物理空间写满后,才触发FTLHtoF二级表的下刷行为。本发明中,主机侧的IO数据顺序写入NANDFlash上的连续空间,并在FtoH反向映射表描述的物理空间写满后,触发FTLHtoF二级表的下刷行为的具体实现流程包括以下步骤:1)收到主机IO数据;2)将所述主机IO数据写入NANDFlash;3)更新FtoH反向映射表;4)判断FtoH反向映射表是否已满,若是,则进入步骤5);否则,进入步骤9);5)依次遍历FtoH反向映射表里逻辑地址段相同的FTLHtoF二级表的映射关系;6)将从FtoH反向映射表里遍历出来的FTLHtoF二级表映射关系更新到FTLHtoF二级表;7)下刷FTLHtoF二级表;8)遍历下刷是否结束,若是,则进入步骤9);否则,遍历FtoH反向映射表里下一个FTLHtoF二级表的内容,然后返回步骤5);9)结束。与现有技术相比,本发明所具有的有益效果为:本发明能有效的减少不带DRAM的SSD主控在随机IO模型下,表项的换入换出频率,尽可能避免由于不带DRAM设计所引发的写放大系数增加问题,使不带DRAM的SSD固态硬盘寿命逼近带DRAM的固态硬盘的寿命;可以极大地提升SSD主控的性能。附图说明图1为现有的带DRAMSSD系统的设计框图;图2为现有的不带DRAM的SSD系统的设计框图;图3为二级表H2F映射关系示意图;图4为本发明的SSD系统设计框图;图5为本发明F2H反向映射示意图;图6为本发明表项更新下刷流程图。具体实施方式如图4所示,本发明采用FtoH反向映射表记录当前正在写入数据的NANDFlash块到主机的反向映射关系。HtoF映射表记录的是一段连续主机逻辑地址到NANDFlash的正向映射关系;F2H记录的是一段连续的NANDFlash地址到主机的反向映射关系。FtoH反向映射示意图见图5,无论主机侧的IO地址和顺序如何不确定,其对应的数据都是顺序写入NANDflash上的连续空间的。本发明的表项下刷流程图见图6,具体包括以下步骤:1)收到主机IO数据;2)将所述主机IO数据写入NANDFlash;3)更新FtoH反向映射表;4)判断FtoH反向映射表是否已满,若是,则进入步骤5);否则,进入步骤9);5)依次遍历FtoH反向映射表里逻辑地址段相同的FTLHtoF二级表的映射关系;6)将从FtoH反向映射表里遍历出来的FTLHtoF二级表映射关系更新到FTLHtoF二级表;7)下刷FTLHtoF二级表;8)遍历是否下刷结束,若是,则进入步骤9);否则,遍历FtoH反向映射表里下一个FTLHtoF二级表的内容,然后返回步骤5);9)结束。本发明可以有效解决不带DRAM的SSD主控在随机带热点IO模型下,由于IO无法命中表项导致二级表HtoF频繁换入换出带来的写放大系数较大的问题。本发明使用了FtoH反向映射表来缓存映射关系,即使前后IO分属不同的二级表HtoFtable,但其写入NANDFlash的地址是顺序递增的,所以用FtoH表可以描述一段连续flash物理空间所对应的任意主机写入数据。而仅仅当FtoH表描述的物理空间写满过后,才会触发二级表HtoF的下刷行为。假设FtoH反向映射表可以存放8K个映射关系,其所描述的Flash物理空间范围为32M。那么仅当主机写入32M数据后FtoH才会占满,此时触发映射关系从反向映射表FtoH刷新到二级表HtoF,再触发HtoF的下刷。如果这32M的物理空间范围只包含两个二级表HtoF的数据内容,那么只会触发2次二级表HtoF的下刷。也即主机写入32M数据,实际写入NANDFlash的数据量为32M+2*4K。如果主机写入数据量为1T,那么实际写入NANDFlash的数据量不到1.05T,基本逼近,写放大系数接近1。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1