System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种ZNS SSD的附加写入实现方法技术_技高网

一种ZNS SSD的附加写入实现方法技术

技术编号:40071732 阅读:4 留言:0更新日期:2024-01-17 00:16
本申请提供一种ZNS SSD的附加写入实现方法,可以通过完成队列条目与主机之间的交互来实现在同一个zone内的多线程写入操作,避免因为主机等待完成队列条目而导致的并行写入性能下降的问题,同时仅在完成队列条目中加入两个DW即可实现简化固件逻辑并加快固件开发效率,降低对缓存空间的需求,减少了缓存空间扩增导致的高成本。进一步的提高SSD设备的运行速度。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种zns ssd的附加写入实现方法。


技术介绍

1、随着存储技术的不断发展,固态硬盘(solid state drive,ssd)因在性能、可靠性、能耗、轻便性上有着绝对优势而广泛应用于各个领域,ssd采用快闪记忆体(nandflash)作为存储介质,通常,ssd会包含多个nand flash颗粒。主机与传统的ssd交互的方式为主机在写io命令中指定地址,然后ssd根据写命令向主机指定的地址中写入数据,但是不支持实现并发写数据。为进一步提高固态硬盘各方面的性能,业界提出了分区命名空间(zoned namespace,zns)ssd,其中,zns ssd的整个逻辑区块地址(logical blockaddress,lba)空间划分为多个分区(zone),zone类似于叠瓦式磁记录(shingled magneticrecording,smr)盘划分的一个区域,从而实现分区存储。由于zone内要求顺序写入,当多线程写入同一个zone时,多个线程之间会因为写指针的竞争导致写入速度受限或者写入位置不正确的问题,为此,zns提供了附加写(append)的写入模式,这种写入模式中主机(host)和硬盘的配合过程为:主机向ssd中的某个zone下发写io命令(输入输出命令)时,该写io命令携带的内容包括该zone的起始lba、数据所占lba的个数和数据本身,zns ssd接收到io后,由zns ssd自主决定该io携带的数据实际写入到zone中的位置,在zns ssd完成写操作后,将数据实际写入的该zone的位置的地址发送给host,host需要等待待写入的数据完成写入之后,再记录该实际写入数据的地址,这种配合方式能够允许host针对单个zone并发地下发多个写io,但是主机与zns ssd的这种配合方式,需要改变包括传统的ssd和主机的存储系统中的软件架构才能实现,例如将传统的ssd中的闪存转换层(flash translationlayer,ftl)从ssd内部迁移到上层的主机端,而且还需要改动传统的ssd的驱动器,从而引入了不必要的复杂度和额外的工作量。


技术实现思路

1、本申请提供一种zns ssd的附加写入实现方法,以实现在不改变传统存储系统的软件架构的情况下,实现计算设备向存储设备并发写数据,提高写数据的效率。

2、使用追加写方式的分区命名空间 ssd,在逻辑分区的任意位置进行第一写入操作,并通过完成队列条目(cqe)向主机报告实际写入的逻辑区块地址(lba);所述主机在收到所述完成队列条目后确认第二写入操作的起始逻辑区块位置并同时进行所述第二写入操作。

3、进一步的,在所述第一写入操作之前,通过处理器获取存储设备分区命名空间ssd中第一分区的起始逻辑区块地址以及所述第一分区的剩余容量;所述处理器向分区命名空间ssd发送至少一个第一输入输出命令,所述第一输入输出命令至少包含所述起始逻辑区块地址以及所述第一分区的剩余容量。

4、进一步的,判断收到的所述第一输入输出命令解析得到的起始逻辑区块地址与待写的分区是否匹配;如果匹配,根据当前写的分区写指针按序写入到此分区,并记录所述写入前的写指针,并根据所述第一输入输出命令解析得到的逻辑区块地址来更新分区写指针,作为下一次写入的分区写指针。

5、进一步的,所述完成队列条目至少包括所述第一写入操作的所述逻辑区块地址,其中所述逻辑区块地址至少包括low slba(低位起始逻辑区块地址)和high slba(高位逻辑区块地址),并将所述low slba和high slba分别记录在所述完成队列条目的dw0和dw1中。

6、进一步的,所述完成队列条目至少包括完成写入的逻辑区块地址、物理扇区、完成状态、错误代码中的一种或多种;ssd固件通过轮询或使用回调机制来检查所述完成队列条目以了解特定输入输出操作的完成情况,并根据所述完成情况处理已完成写入的数据和/或发起下一个输入输出操作。

7、进一步的,本申请还提供一种计算设备,该计算设备包括处理器和通信接口,处理器通过通信接口耦合至存储设备。处理器,用于获取存储设备分区命名空间 ssd中一个分区的第一起始逻辑区块地址以及剩余容量,并向所述存储设备发送第一输入输出命令,所述输入输出命令至少包括第一信息,所述第一信息包括所述第一起始逻辑区块地址、所述第一写入操作的容量以及所述分区的剩余容量。

8、进一步的,第一信息还包括以下至少一项第二信息:第一写入操作的第一逻辑区块对应的第一缓存空间的状态码,状态码指示第一缓存空间已满;存储设备的剩余容量。所述处理器根据至少一项第二信息,确定是否继续向存储设备下发位于第二地址范围内的第二输入输出命令。计算机可以在第一缓存空间已满或剩余容量为零时及时知晓,不再往第一逻辑分区下发数据,这样可形成反压机制,避免计算设备无限制的往该第一逻辑分区下发写数据。

9、进一步的,所述处理器从所述第一缓存空间中未查找到所述第一逻辑区块地址对应的第一输入输出命令,则暂停向所述第一逻辑区块进行写入操作,并向所述计算设备发送包括向所述第一地址写数据失败的结果和第二逻辑区块地址的第一信息,且所述第二逻辑区块地址与所述第一逻辑区块地址相同,所述第一信息用于所述计算设备下发所述第一逻辑区块地址对应的第一输入输出命令。因此在未成功向第一逻辑区块地址写入数据时,可以尽快获取到当前需要写数据的第一逻辑区块地址对应的输入输出命令,从而可以提高写数据的效率。

10、进一步的,当所述存储设备接收到所述第一输入输出命令后,将low slba和highslba分别写入完成队列条目中,并将所述完成队列条目传递给主机,进而实现在第一输入输出操作的同时,同一个分区(zone)内,在计算得到的第二起始逻辑区块位置同时进行第二写入操作,消除了多线程同步写入同一个分区因等待而导致的性能下降。

11、本专利技术的有益效果:

12、1.充分利用了zns ssd的每一个zone内是顺序写入,不同zone之间写入不互相干扰的特点,在同一个zone内进行多线程写入时,不改变传统的ssd写操作的基础上,仅需在完成队列条目中额外增加两个dw分别记录低位起始逻辑区块地址和高位起始逻辑区块地址即可实现大幅提升多线程写性能;

13、2.在提升多线程并行写性能的同时,可以提高队列深度;

14、3.降低对缓存空间的需求,减少了因缓存空间容量扩增导致的成本。

本文档来自技高网...

【技术保护点】

1.一种分区命名空间固态硬盘ZNS SSD的附加写入实现方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的方法,其特征在于,

3.根据权利要求2所述的方法,其特征在于,

4.根据权利要求1所述的方法,其特征在于,

5.根据权利要求1所述的方法,其特征在于,

6.根据权利要求5所述的方法,其特征在于,

7.一种存储控制器,其特征在于,

8.一种计算机可读存储介质,其特征在于,

【技术特征摘要】

1.一种分区命名空间固态硬盘zns ssd的附加写入实现方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的方法,其特征在于,

3.根据权利要求2所述的方法,其特征在于,

4.根据权利要求1所...

【专利技术属性】
技术研发人员:李铭超
申请(专利权)人:武汉麓谷科技有限公司
类型:发明
国别省市:

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

1