一种提高固态硬盘写缓存的利用率的方法与流程

文档序号:12122627阅读:417来源:国知局
本发明涉及固态硬盘控制技术,特别涉及一种提高固态硬盘写缓存的利用率的方法。
背景技术
::固态硬盘的FTL(FlashTranslationLayer,闪存转换层)有一个WC(WriteCache,写缓存)管理模块,用来管理多个固定大小的WC,通过建立地址检查表记录最近写入数据的地址信息,供后续读写操作进行地址命中检查。当达到一定条件时,WC写缓存中对应的数据会被下刷到NAND的存储单元中,同时WC对应的地址检查表和对应的写缓存将被清空。图1是地址检查表和Buffer示意图,现有技术在FTL给每个WC维护了一张地址检查表,地址检查表的每个检查项包括主机下发命令对应的LPA(LogicalPageAddress,逻辑页地址)信息,每个LPA会对应一段4KB大小的Buffer。Buffer通常位于DRAM中,用来缓存主机或者NAND传来的数据。WC的地址检查表最开始都是无效值,随着数据写入,其写入数据的地址信息就会依次填充到地址检查表中,当出现特别指令需要将WC对应DRAM的缓存数据下刷到NAND,WC的地址检查表就会被清空。一般情况下,每个WC的地址检查表是大小固定的,假定为16个LPA大小,而每个LPA表示一个32位地址(4字节),那么一个WC的地址检查表大小就是16*4=64Byte。如果地址检查表中只填入了一个LPA信息就要被下刷清空,那么地址检查表的实际使用空间仅为4Byte,有90%的空间未被利用。有时为了提升性能,需要将地址检查表设得更大,例如将地址检查表扩展到256个LPA大小,那未被利用的空间将会更多。如果WC的个数也增多的话,空间利用率则会更低。在严重限制RAM空间的嵌入式领域,这些都是致命的。技术实现要素:针对以上缺陷,本发明目的在于如何提高固态硬盘的写缓存的利用率,提高固态硬盘的性能。为了解决以上问题,本发明提出了一种提高固态硬盘写缓存的利用率的方法,其特征在于闪存转换层中建立全局地址检查表,各个WC缓存中增加表地址信息标识;各个WC缓存中存在新增缓存数据时,根据新增缓存数据的大小和需要更新的地址信息数量,动态的在所述全局地址检查表中申请地址空间,将需要更新地址信息更新到该地址空间中,同时将申请获得的地址空间的起始位置和结束位置更新到对应的WC缓存中增加表地址信息标识。所述的提高固态硬盘写缓存的利用率的方法,其特征在于当存在外部数据访问时,先逐个读取各个WC缓存中的表地址信息标识,根据各个表地址信息标识记录的起始位置和结束位置检索全局地址检查表,判断是否存在命中地址,如果命中则直接从对应的WC缓存中读取数据,否则从NAND的存储单元中读取数据。所述的提高固态硬盘写缓存的利用率的方法,其特征在于所述的建立全局地址检查表的每个元素存储一个逻辑数据页的地址信息,WC缓存空间以逻辑数据页为单位存储,各个WC缓存共享,只有当需要更新地址信息更新到该地址空间时才动态的根据所需的空间大小进行申请。本发明通过建立统一的地址检查表和与之对应的动态缓存管理办法,突破了原有按照WC单独管理存在使用空间的限制,提高了缓存的利用率,实际达到了提高各个WC缓存可利用空间的可能。附图说明图1是现有技术的各个WC的地址检查表示意图;图2是各个WC通过全局地址检查表进行存储的示意图;图3是全局地址检查表的信息填充示意图;图4是全局地址检查表的信息填充到尾部的处理机制示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。往固态硬盘写入数据时,主机下发的写数据会先缓存在DRAM中,在这些数据下刷到NAND之前,固态硬盘的闪存转换层FTL会建立WC来管理这些缓存数据,对后续的读写命令进行命中检查。现有技术中FTL为各个WC创建固定长度的地址检查表用于记录各个WC中缓存的数据;对于写命令,通过检查对应地址检查表来判断访问地址是否命中缓存中已经存在的地址信息;若写命中,则将写信息合并到命中的位置;若不命中,则将写信息添加到WC地址检查表的下一个记录点。对于读命令,若读命中,则可直接从DRAM_BUFFER获取数据;若读不命中,则需从NAND上获取数据。图1是现有技术的各个WC的地址检查表示意图;包含了3个WC的地址检查表:WC0_search_table、WC1_search_table和WC2_search_table,3个表格都是固定大小的,分别独立管理。图2是各个WC通过全局地址检查表进行存储的示意图,由于各个WC独立固定大小的管理地址检查表存在较大的空间浪费,空间使用率较低。本发明通过更改为在闪存转换层中建立全局地址检查表,各个WC缓存中增加表地址信息标识;当各个WC缓存中存在新增缓存数据时,根据新增缓存数据的大小和需要更新的地址信息数量,动态的在所述全局地址检查表中申请地址空间,将需要更新地址信息更新到该地址空间中,同时将申请获得的地址空间的起始位置和结束位置更新到对应的WC缓存中增加表地址信息标识。同样是存储3个WC的地址信息,在新的全局地址检查表global_lpa_search_table中分别根据所需的长度在全局地址检查表global_lpa_search_table中申请空间WC0、WC1和WC2并将地址信息存储在该表中。当存在外部数据访问时,对于没有命中的写,则将其LPA信息添加到GlobalLPASearchTable中,作为WC新的检查项。图3是全局地址检查表的信息填充示意图,固态硬盘刚上电时,GlobalLPASearchTable从起始处0开始填充。以WC0~WC2的大小配置为例,WC0的起始检查点为0,未命中WC0的LPAa~d依次填充在表上Index0~3的位置,WC1未命中的LPA从Index4处开始填充,WC2则从Index6开始。对某个WC进行命中检查时,只需对该WC在GlobalLPASearchTable中有效位置的LPA进行匹配即可,例如对于WC1,只需检查Index4~5的LPA即可。GlobalLPASearchTable并不是无限大,当对它的填充到达Table的尾部时,需要返回Index0处继续填充,覆盖掉之前的值。图4是全局地址检查表的信息填充到尾部的处理机制示意图,WC9的地址信息长度超过了当前GlobalLPASearchTable的剩余长度时,就需要绕回到GlobalLPASearchTable的表头去覆盖;这就需要确保覆盖的值已经失效,需要对GlobalLPASearchTable大小进行限定,按照最坏情况估算出一个合适的值,以保证可以对GlobalLPASearchTable进行绕回覆盖操作。举几个极端情况下的例子:(1)假设每个WC的检查表大小都达到了WCLPA个数上限值。以上限值为16为例,在不考虑其它资源限制条件下,Table大小需设为所有WCLPA个数上限值的总和,假设总和为A。(2)命令在处理过程中会受到一些资源限制,比如往GlobalLPASearchTable中添加新的LPA信息时需要先申请Buffer资源,如果申请不到则会暂停LPA填充,直到申请到资源为止,极端情况下,假设所有Buffer都已分配,那Table上填充的LPA数最多为Buffer资源总数,假设总数为B。考虑到这些极端情况,将GlobalLPASearchTable的大小设为A、B中的较小者最为合适。以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1