一种提高固态硬盘顺序写缓存效率的方法与流程

文档序号:11677203阅读:332来源:国知局
一种提高固态硬盘顺序写缓存效率的方法与流程

本发明涉及固态硬盘控制技术,特别涉及一种提高固态硬盘顺序写缓存效率的方法。



背景技术:

主机每次发起的对ssd的操作的数据都对应了一段逻辑块地址lba(logicalblockaddress)地址,即[lba_x,lba_y],lba_x表示这段lba区间的起始地址,lba_y表示这段lba区间的末尾地址,每个lba对应512b的数据。为保证数据一致性,ssd的固件需要记录数据缓存datacache中有缓存数据的lba地址,以便判断主机后续发起的写操作数据是否命中了datacache,如果命中则需要把数据缓存datacache中的旧数据覆盖掉。顺序写指的是主机发起写数据的lba都是连续的。通过分析主机对ssd普遍都存在顺序读写的特征,因此存储最近一段时间的操作数据有利于提升顺序读写的性能。

目前的固件设计中datacache的缓存方式为线性缓存,假设datacache大小为4kb,主机向ssd发起4kb的数据,对应的lba地址段为[lba0,lba7],则固件按照这个顺序记录这些lba,图1是现有技术线性缓存示例。当后续主机又向ssd发起512b的数据,对应的lba地址为lba8,那么固件需要判断datacache中是否已存在lba8,线性cache对应的遍历方式也是线性遍历,从datacache中第一个缓存内容开始向后一个个查找,则需要查找8次才能判断为非命中。该技术的时间复杂度为o(n),n为datacache中的有效lba地址个数。因此存在系统消耗大,效率低的问题。



技术实现要素:

针对以上缺陷,本发明目的如何提升缓存数据的遍历效率,实现提升写缓存效率的目的。

为了解决以上问题本发明提出了一种提高固态硬盘顺序写缓存效率的方法,固态硬盘创建缓存数据地址列表,固态硬盘接收到主机发起的写操作,通过检索缓存数据地址列表判定是否命中,其特征在于缓存数据地址列表包括缓存数据的lba地址和缓存数据的lba地址对应的哈希值key,key_x=lba_x%n,key_x为主机发起的写操作的lba地址,n=每个缓存块大小/512;固态硬盘接收到主机发起的写操作先计算该写操作的对应lba地址对应的哈希值key_n;直接判断缓存数据地址列表是否存在哈希值为key_n的缓存数据,如果存在则判定当前写操作命中;否则则判定当前写操作没有命中。

根据权利要求1所述的提高固态硬盘顺序写缓存效率的方法,其特征在于固态硬盘接收到主机发起的写操作先计算该写操作的对应lba地址对应的哈希值key_n;直接判断缓存数据地址列表是否存在哈希值为key_n的缓存数据,如果存在则判定当前写操作命中,将写入的数据覆盖掉该lba地址对应的缓存中旧数据;否则则判定当前写操作没有命中,把lba地址挂到哈希值key_n对应的缓存数据地址列表中,对应的写数据会直接写到缓存中。

本发明通过改进缓存数据地址列表结构,降低写操作对缓存数据的遍历时间复杂度,达到提升顺序写缓存效率的技术效果。

附图说明

图1是现有技术线性缓存示例;

图2是改进后的缓存方式示例。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图2是改进后的缓存方式示例,改进后的缓存数据地址列表新增加了缓存数据的lba地址对应的哈希值key,key_x=lba_x%n,key_x为主机发起的写操作的lba地址,n=每个缓存块大小/512;固态硬盘接收到主机发起的写操作先计算该写操作的对应lba地址对应的哈希值key_n;直接判断缓存数据地址列表是否存在哈希值为key_n的缓存数据,如果存在则判定当前写操作命中;否则则判定当前写操作没有命中,本例中假设每个缓存块大小为4kb,每个lba对应512b的数据;主机向ssd发起4kb的数据,对应的lba地址段为[lba0,lba7],lba0对应的哈希值为key0,所以将lba0挂载到key0对应的列表下,以此类推,lba0~lba7在缓存数据地址列表中的分布情况如图2所示。当主机再发起对lba8的顺序写,固件直接计算出lba8对应的哈希值key=8%8=0,然后直接检查缓存数据地址列表中key0对应的列中有无lba8,发现该列中只有lba0,并没有lba8,所以为非命中。在顺序写场景下新技术的时间复杂度为o(1),大大提升了遍历的效率。

以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。



技术特征:

技术总结
本发明公开了一种提高固态硬盘顺序写缓存效率的方法,其特征在于缓存数据地址列表包括缓存数据的LBA地址和缓存数据的LBA地址对应的哈希值Key,Key_x=LBA_x%N,Key_x为主机发起的写操作的LBA地址,N=每个缓存块大小/512;固态硬盘接收到主机发起的写操作先计算该写操作的对应LBA地址对应的哈希值Key_n;直接判断缓存数据地址列表是否存在哈希值为Key_n的缓存数据,如果存在则判定当前写操作命中;否则则判定当前写操作没有命中。通过改进缓存数据地址列表结构,降低写操作对缓存数据的遍历时间复杂度,达到提升顺序写缓存效率的技术效果。

技术研发人员:许毅;姚兰;郑春阳
受保护的技术使用者:记忆科技(深圳)有限公司
技术研发日:2017.03.07
技术公布日:2017.07.25
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1