一种降低SSD写放大的方法技术

技术编号:19009077 阅读:38 留言:0更新日期:2018-09-22 08:57
本发明专利技术公开了一种降低SSD写放大的方法,其特征在于主机按照NVMe协议标准向SSD控制器下发命令,每个主机的任务对应到同一个连续流stream,主机在发起steam前先将该任务的起始LBA和终止LBA通知SSD控制器,SSD控制器根据起始LBA和终止LBA预先分配单独的1个或多个块用于连续存储该任务的数据;SSD控制器接收到主机命令后根据stream信息将相同的stream对应的任务数据存储到预先分配的区域。利用NVMe协议1.3中stream功能,革新了数据写入block的方式,的确减少了垃圾回收频率,达到了降低写放大目的。

A method to reduce SSD write amplification

The invention discloses a method for reducing SSD write amplification, which is characterized in that the host sends commands to the SSD controller according to the NVMe protocol standard, each host's task corresponds to the same continuous stream, and the host notifies the SSD controller of the start LBA and the end LBA of the task before starting the step, and the SSD controller notifies the SSD controller of the start LBA and the end LBA of the task according to the start LBA and the end LBA. The SSD controller receives the host command and stores the task data corresponding to the same stream into the pre-allocated area according to the stream information. Using stream function of NVMe protocol 1.3, the way of writing data into blocks is innovated, and the garbage collection frequency is reduced, and the purpose of writing and enlarging is achieved.

【技术实现步骤摘要】
一种降低SSD写放大的方法
本专利技术涉及存储
,尤其涉及一种降低SSD写放大的方法。
技术介绍
NVMe搭配NandFlash存储介质的固态硬盘借助于它的高性能和低功耗优势正渐渐应用于企业级数据密集型业务。企业级业务往往是多任务并发执行,每个任务又会切割成多个命令发往固态硬盘(SSD),由于是并发执行任务,那么任务间的命令会夹杂在一起发往SSD。图1是常规主机下发命令和执行示意图,目前SSD按照主机写命令的下发顺序,依次写入到NandFlash的block(数据擦除的最小单元)中,即SSD的某个block中可能存储着多个任务对应的数据,随着主机对部分任务(数据)的复写,导致大多block中只有部分有效数据,由于NandFlash本身的特性,需要启动SSD内部的垃圾回收(garbagecollection)机制来释放block,即腾出空间存储后续的主机数据。图2是主机复写任务的处理示意图,由于是数据密集型的企业级业务,主机复写某个任务(对应数据)的场景是经常发生的,当主机复写图1中的任务1后,在闪存中任务1的旧数据被无效掉,新数据写入到新的物理页中,则block1中产生了两个无效物理页,block2中产生一个无效物理页,NandFlash闪存的特性为block必须擦除后才能存储新数据,那么为了腾出无效物理页所占的空间,必须将block1中有效的物理页搬移到新的block后,再擦除block1,这就是垃圾回收机制。但是频繁的垃圾回收有以下影响:1、增加了写放大(writeamplification),因为同一笔主机数据被多次写入到NandFlash。2、垃圾回收期间降低了SSD的读写性能。3、擦除次数过多,缩短了SSD寿命。
技术实现思路
针对以上缺陷,本专利技术目的在于如何降低SSD写放大。为了实现上述目的,本专利技术提供了一种降低SSD写放大的方法,其特征在于主机按照NVMe协议标准向SSD控制器下发命令,每个主机的任务对应到同一个连续流stream,主机在发起steam前先将该任务的起始LBA和终止LBA通知SSD控制器,SSD控制器根据起始LBA和终止LBA预先分配单独的1个或多个块用于连续存储该任务的数据;SSD控制器接收到主机命令后根据stream信息将相同的stream对应的任务数据存储到预先分配的区域。所述的降低SSD写放大的方法,其特征在于主机发送某个stream的数据时,直接删除预先分配给该stream对应的1个或多个块。所述的降低SSD写放大的方法,其特征在于SSD控制器上设有stream信息登记表,用于记录所有的stream标识、该stream对应的起始LBA和终止LBA、和分配的物理块的地址。本专利技术利用NVMe协议1.3中stream功能,革新了数据写入block的方式,的确减少了垃圾回收频率,达到了降低写放大目的。附图说明图1是常规主机下发命令和执行示意图;图2是主机复写任务的处理示意图;图3是利用NVMe协议1.3中stream功能改进后的命令分发示意图;图4是利用NVMe协议1.3中stream功能后命令执行流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。根据前文分析垃圾回收机制频繁启动的原因在于,主机发起的多任务是夹杂在一起写入到NandFlash的block中,当主机复写或删除掉某个任务对应的数据时,block中会产生部分无效物理页,为了腾出这些无效页,必须启用垃圾回收机制。如果SSD的控制器能知道主机任务的信息,将属于同一任务的写命令数据写入到相同的block中,那么后续主机复写或删除该任务后,block中所有物理页会一起失效,此时SSD控制器只需要直接擦除该block即可,无需启动垃圾回收机制。图4是利用NVMe协议1.3中stream功能后命令执行流程图。NVMe1.3协议定义了stream功能,简单来讲,主机每个任务可以对应一个stream,每个stream具有两个属性:起始LBA和终止LBA。主机在发起任务(stream)之前首先将该任务的起始LBA和终止LBA告知SSD控制器,SSD控制器需要记住该stream的这两个属性,同时为该stream分配一个新的block,后续主机发起的属于这个任务的所有写命令的LBA区间都会在[起始LBA,终止LBA]之间,SSD控制器拿到命令后,比较该命令的LBA区间是否属于某个stream,如果是则将该命令的数据写入到对应的block中。假设主机有三个任务,任务1的起始LBA=0、终止LBA=15,任务2的起始LBA=32、终止LBA=63,任务3的起始LBA=100、终止LBA=115,再假设NandFlash闪存的每个物理页存储1个LBA(512B)的数据,每个block可存储16个LBA。工作流程如下:第一步:主机将三个任务(stream)的起始LBA和终止LBA信息告知SSD控制器。第二步:SSD控制器内部记录好这三个stream的起始LBA和终止LBA的信息,同时为这三个stream分别分配一个独立的block,假设为stream1分配block1,为stream2分配block2和block3,为stream3分配block4。第三步:主机并发执行三个任务,假设每个命令描述一个LBA,则这三个任务的命令夹杂在一起发往SSD。第四步:SSD控制器接受到一大串命令,分析每个命令的LBA属于哪个stream,如果LBA属于[0,15]则将该命令的数据写入到block1,如果LBA属于[32,63]则将该命令的数据写入到block2或block3(按顺序写入),如果LBA属于[100,115]则将该命令的数据写入到block4,最终这三个任务对应的数据在NandFlash上的存储情况如图3。图3是利用NVMe协议1.3中stream功能改进后的命令分发示意图。从图3可以看出,每个stream对应的数据都在同一个block中,假如后续主机删除stream2的数据,则SSD控制器只需无效掉整个block2和block3,然后直接擦除即可,无需启动垃圾回收机制,大大降低了写放大,同时因为没有垃圾回收任务在执行,主机的读写性能将会得到提升以上所揭露的仅为本专利技术一种实施例而已,当然不能以此来限定本专利技术之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本专利技术权利要求所作的等同变化,仍属于本专利技术所涵盖的范围。本文档来自技高网
...
一种降低SSD写放大的方法

【技术保护点】
1.一种降低SSD写放大的方法,其特征在于主机按照NVMe协议标准向SSD控制器下发命令,每个主机的任务对应到同一个连续流stream,主机在发起steam前先将该任务的起始LBA和终止LBA通知SSD控制器,SSD控制器根据起始LBA和终止LBA预先分配单独的1个或多个块用于连续存储该任务的数据;SSD控制器接收到主机命令后根据stream信息将相同的stream对应的任务数据存储到预先分配的区域。

【技术特征摘要】
1.一种降低SSD写放大的方法,其特征在于主机按照NVMe协议标准向SSD控制器下发命令,每个主机的任务对应到同一个连续流stream,主机在发起steam前先将该任务的起始LBA和终止LBA通知SSD控制器,SSD控制器根据起始LBA和终止LBA预先分配单独的1个或多个块用于连续存储该任务的数据;SSD控制器接收到主机命令后根据stream信息将相同的stream对应...

【专利技术属性】
技术研发人员:许毅吴娴
申请(专利权)人:深圳忆联信息系统有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1