基于Open-ChannelSSD结构严格顺序写方法与流程

文档序号:18463310发布日期:2019-08-17 02:13阅读:507来源:国知局
基于Open-Channel SSD结构严格顺序写方法与流程

本发明涉及固态盘存储领域,具体涉及一种基于open-channelssd结构严格顺序写方法。



背景技术:

对于固态盘而言随机写是一个十分严重的问题,频繁的随机写操作会很大程度上减少固态盘的使用寿命,增大垃圾回收的开销。针对这个问题以往的解决的方法是在ftl(flashtranslationlayer)使用高效的ftl(flashtranslationlayer)算法,如混合日志算法和超级块ftl算法。但是,高效算法也存在一定的缺点,如需要更多cpu资源和延长固态盘启动的时间。



技术实现要素:

本发明要解决的技术问题是提供一种基于open-channelssd结构严格顺序写方法,利用open-channelssd结构特性将当前的请求分别缓存在随机缓存和顺序缓存,再考虑到底层硬件结构的并行性重新排列队列以块的缓存管理优化方式,实现顺序写请求和随机写请求严格的分开,在底层预留的物理块上面能够实现严格顺序写。

为了解决上述技术问题,本发明提供了一种基于open-channelssd结构严格顺序写方法,包括:

接受到文件系统发送的数据请求,根据当前的数据请求的逻辑地址连续性,将数据请求队列分成两个子队列即连续队列和随机队列,分别存在顺序缓存和随机缓存中;当前总的请求长度为lenr,当前顺序请求长度为lensr;对于顺序缓存采用队列“先进先出”的数据结构;根据寻找下一个逻辑地址等于上一个逻辑地址加一,以及满足顺序写请求的长度的请求数据写入到顺序缓存里面;随机缓存采用链表数据结构,将无序的随机请求进行排序。

数据请求以顺序缓存和随机缓存分开,考虑到能够与底层硬件结构的并行性结构,实现逻辑地址和物理地址空间上面的一致性;在写请求在缓存里等待的时候,利用这个时间对写请求进行分析,找到相邻的地址请求,对等待的队列进行重新排列;利用写请求调度设计缓存管理方法,按块的颗粒为单元把当前顺序缓存和随机缓存中的数据进行重新排列。

在其中一个实施例中,“利用写请求调度设计缓存管理方法,按块的颗粒为单元把当前顺序缓存和随机缓存中的数据进行重新排列。”具体包括:首先,根据双缓存设计将当前请求分成顺序和随机分别缓存在顺序缓存和随机缓存里面;然后,将顺序请求逻辑地址,下一个被响应的请求需要考虑到硬件结构(通道数,每个通道的芯片和物理块以及每个物理块的物理页数等等),通过公式:下一个响应的请求lpn=当前被响应请求lpn+芯片数*通道数;最后,将重新排列好的请求分别缓存在相应的缓存里面。

一种固态硬盘,应用所述的基于open-channelssd结构严格顺序写方法。

一种计算机,包含所述的固态硬盘。

本发明的有益效果:

本专利提出基于open-channelssd结构严格顺序写方法,在缓存区增加了一个缓存区根据请求类型不同,将请求顺序请求和随机请求严格分开缓存在相应的顺序缓存和随机缓存里面。在考虑到底层硬件结构的并行性,将相应缓存里面的请求进行了重新排列,实现以块颗粒大小的缓存管理优化方法,在随机缓存里面也可以实现将小的随机请求变成顺序请求,最终实现严格顺序写的目的。

附图说明

图1是本发明基于open-channelssd结构严格顺序写方法中的ssw系统结构图。

图2是本发明基于open-channelssd结构严格顺序写方法中的双缓存设计结构示意图。

图3是本发明基于open-channelssd结构严格顺序写方法中的双缓存设计流程图。

图4是本发明基于open-channelssd结构严格顺序写方法中的写缓存调度设计流程图。

图5是本发明基于open-channelssd结构严格顺序写方法中的ssw示例图之一。

图6是本发明基于open-channelssd结构严格顺序写方法中的ssw示例图之二。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

为了延长固态盘的使用寿命,本专利提出一种基于open-channelssd结构严格顺序写方法。open-channelssd是由host深度控制和维护的一种ssd,open-channelssd将内部nand介质的诸多细节暴露给host。以闪存为存储介质的存储设备内部通常包括一个缓存,缓存作为底层的数据提供者。主机先将数据写到缓存,然后才写入到底层的存储介质里面。本专利的主要方法提出了两个缓存分别来存储顺序和随机请求,然后考虑到底层硬件的并行结构以块管理的方式对缓存进行合理管理,最终实现严格顺序写。

在基于open-channelssd结构下,能实现顺序写请求和随机写请求分开,对于实现严格顺序写是十分有益的做法。因为随机写请求性能不是很好,频繁的随机写也会大大减少固态盘的使用寿命。为了能分开顺序和随机写请求这个问题,很多目前的工作是在ftl使用高效的映射算法。还有的将ram拿出一部分做顺序写请求的缓存区,而随机冷请求没有加缓存。

分开顺序和随机写请求这个问题,目前的工作是在ftl使用高效的映射算法,这样会带来一些缺点,如需要更多的ram空间和cpu资源,延长固态盘启动的时间。还有的将ram拿出一部分做顺序写请求的缓存区,其中将顺序写缓存区大小做了一个定值,不能动态的调整大小。

下面介绍本发明的一个具体应用场景:

双缓存设计

接受到文件系统发送的数据请求,根据当前的数据请求的逻辑地址连续性,将数据请求队列分成两个子队列即连续队列和随机队列,分别存在顺序缓存和随机缓存中。当前总的请求长度为lenr,当前顺序请求长度为lensr。对于顺序缓存采用队列“先进先出”的数据结构,因为的是存储一段连续地址的数据,只需考虑两个数据之间的逻辑地址的连续以及表尾元素的删除和插入,查找比较方便,存取任一个元素复杂度低。根据寻找下一个逻辑地址等于上一个逻辑地址加一,以及满足顺序写请求的长度的请求数据写入到顺序缓存里面。随机缓存采用链表数据结构,将无序的随机请求进行排序。

写缓存请求调度设计

数据请求以顺序缓存和随机缓存分开,考虑到能够与底层硬件结构的并行性向结构,实现逻辑地址和物理地址空间上面的一致性。在写请求在缓存里等待的时候,可以利用这个时间对写请求进行分析,找到相邻的地址请求,对等待的队列进行重新排列。提出写请求调度设计缓存管理方法,按块的颗粒为单元把当前顺序缓存和随机缓存中的数据进行重新排列。假设当前的ssd有4个通道,每个通道有1个芯片,每个芯片有3个物理块,每个物理块有4个物理页,其中一个空的物理块当垃圾回收时候的空白块。首先,根据双缓存设计将当前请求分成顺序和随机分别缓存在顺序缓存和随机缓存里面。然后,将顺序请求逻辑地址,下一个被响应的请求需要考虑到硬件结构(通道数,每个通道的芯片和物理块以及每个物理块的物理页数等等),通过公式:下一个响应的请求lpn=当前被响应请求lpn+芯片数*通道数。最后,将重新排列好请求缓存在相应的缓存里面。

本专利提出基于open-channelssd结构严格顺序写方法,在缓存区增加了一个缓存区根据请求类型不同,将请求顺序请求和随机请求严格分开缓存在相应的顺序缓存和随机缓存里面。在考虑到底层硬件结构的并行性,将相应缓存里面的请求进行了重新排列,实现以块为颗粒单元进行缓存管理优化,在随机缓存里面将多个小的随机请求变成顺序请求,最终实现严格顺序写的目的。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1