基于3D NAND层差异的固态盘请求调度算法研究立项 报告

Abstract

SSD(Solid State Drive),因其超高的读写性能,以及价格的走低趋势逐渐占据市场,为人们带来更好的用户体验,也为企业级的高并行业务需要提供了一定支持,近几年来SSD的应用越来越广泛。随着数据量的增大,2D NAND flash 芯片已经无法满足大规模的存储需要,3D 结构SSD应运而生,这里面涉及到用户的请求分配问题,传统的排队算法是基于2D闪存的,没有体现3D闪存的层速度差异特征,这样现有算法的有效性降低,性能降低。本项目提出一种新的排队算法,在请求时间评估时考虑3D闪存速度差异特征(即3D闪存的层和层之间存在较大的差异性),让较快层的请求优先执行,以获得更好的整体相应性能。

1项目背景以及研究意义

随着人们对于数字化生活要求的提升和数据的快速增长,人们对存储设备的速度和容量有了更高的要求。固态硬盘(Solid State Drives),一种以半导体为介质的硬盘也被人们创造出来。因其I/O性能较好,广泛的应用于事物处理系统,随着工艺进步,固态硬盘的容量逐渐增大,单位容量的价格也在逐步降低,这才使得SSD为大众所青睐,SSD现在发展到商用,各种电脑,各种服务器,各种移动终端都可见SSD的影子,固态硬盘已经渗透到当今每一个行业和业务职能领域,成为不可缺少的一环,也将直接决定各行业的用户体验。

由于固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的相同,在产品外形和尺寸上也与普通硬盘一致,推陈出新不需要修改任何规范,可以直接替代机械硬盘,SSD得以快速占据市场,一般来讲各大互联网企业和服务器原厂会是此类行业的最大受益者,如腾迅,百度,阿里,爱奇艺都是此类产品的采购大户。由于固态硬盘没有普通硬盘的旋转介质,因而抗震性极佳。其芯片的工作温度范围很宽(-40~85摄氏度)。还广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空等、导航设备等领域。

对于一些时效性比较重要的公司为了解决对数据的高并发读写、和对海量数据的处理问题,现在大多数网站采用分布式缓存( Memcached) 的方法,如维基百科, Twitter, Youtube, Facebook、 新浪、京东、淘宝、 Flickr、 Github等均在使用分布式缓存的缓存服务,以此来减轻数据库负载来加速动
态 Web 应用程序,但光靠存储方式的改变,如不能提升硬件的性能,还是效果欠佳,因此高性能SSD更成为他们的刚需,例如实时交易平台,银行信息存储系统,云数据库,证券系统等等,使用了SSD会大幅度降低并发延迟,使得服务器事务处理速度大幅提升。

在存储数据时,导致I/O延迟的因素比较多,比如高并发读/写、存储单元干扰、大规模读写占用资源等,如何研究这些因素的影响,尤其是3D闪存上的性能影响,并设计相应的优化算法是关键研究问题。算法机制关键在于把3D闪存特征融入到排队性能优化中,以降低设备整体读写延迟。

同时容量与操作时延也是评价存储设备性能的两项重要标准,经过研究,考虑到3D闪存层差异读写的操作时延有很大作用,通过对优化这种操作的研究,可以使闪存设备的性能得到整体大幅提高,使3D闪存存储系统在具有大容量的同时,也具有良好的性能。

2国内外研究现状

目前在国内外最前沿的研究中,3D闪存存储系统已基本上取代了2D闪存存储系统来作为主流的存储系统。现对于存储设备性能研究的方案也是对于3D闪存存储系统设计的,故3D闪存设备必定会占领绝大部分市场。

2.1 3D 闪存

由于SSD闪存的架构在近年来从平面向3D的发现,在存储容量和空间利用率上得到大大提高,大规模的3D架构芯片开始商用,但是也因为架构的改变而使得3D闪存的问题越发突出。研究发现其问题的结构原因主要由以下几个方面构成:

(1)闪存介质单元的设计(Flash Cell Design),在平面和3D NAND闪存中,每个闪存单元都由一个可以存储电荷的晶体管组成,其中电荷量决定了单元的阈值电压(即单元开启时的电压)。
绝大多数平面NAND闪存的每个单元都使用浮栅晶体管(FG)。 图2a说明了浮栅单元的设计。 控制栅极位于晶体管的顶部。 读,编程和擦除操作都将电压施加到控制栅极上以打开单元或向晶体管添加电荷。
浮置栅极位于晶体管的中间。 浮栅是存储晶体管电荷的导体,被氧化层夹在中间。 氧化物层使从浮动栅极泄漏出的电荷量减少到最少。 单元的底部是基板,该基板的任一端都有两个端子,标记为源极(S)和漏极(D)。 当施加在控制栅极上的电压高于浮置栅极中存储的电荷的电压时,在源极和漏极之间形成电通道,将它们连接在一起。可以通过分别向控制栅极施加较大的正电压或负电压来增大或减小浮栅电压,。
大多数现有的3D NAND闪存设计都使用电荷陷阱晶体管(CT)代替每个单元的浮栅晶体管。
图2b示出了电荷陷阱单元的设计。 衬底以及源极和漏极之间的通道垂直位于单元的中心。 电荷陷阱层包裹在衬底周围。
电荷陷阱层代替了浮栅,存储了晶体管的电荷。 然而,与浮置栅极不同,电荷陷阱层是绝缘体。 控制栅极仍然存在于电荷陷阱单元中,但现在它包裹在电荷陷阱层周围。

 

 

图2a                        图
2b

(2)闪存芯片组成方式(Flash Chip Organization),图3说明了3D NAND闪存中闪存单元的物理结构。 电荷陷阱晶体管的设计允许一个块中的位线(图3中的BL)  垂直放置(即沿z轴)在芯片中。 换句话说,由于位线彼此堆叠在一起,因此位线现在将来自芯片每一层的一个电荷陷阱单元连接在一起。而沿z轴的所有单元都共享相  同的电荷陷阱绝缘体,类似于平面NAND闪存中的晶体管在位线上连接在一起的方式。沿着y轴,同一层中单元的控制栅极连接在一起以形成字线(Wordline)。 在图中,我们作了一个简单示例,其中在同一y-z平面中的单元形成了一个闪存块。 实际上,  为了形成较大的闪存块,将闪存单元的多个堆栈连接在一起以形成更长的位线,从而增加了块内字线的数量。多个这样的闪存块沿x轴对准从而形成闪存芯片。

(3)节点制造工艺(Manufacturing Process
Technology.),与最新一代的平面NAND闪存(即10-15nm)相比,3D NAND闪存使用了更大的制造工艺技术节点(例如30-50nm)。 由于3D NAND闪存具有多层结构(通常为24-96层),所以在使用同样空间下,3D NAND闪存可以制作出大节点但容量与平面NAND相当的闪存模块。

                                                  图3

由这三个结构原因引发的以下几个问题在3D NAND闪存当中引起了相  当激烈的讨论。

 

 

2.2 SSD高并发请求导致的拥塞效应

单一路径上存在大量 I/O 请求,偶发性大块数据请求长时间占据 I/O 路径,必将使其后方的请求被阻塞。 为研究这一现象,在上述实验环境下,对存储系统进行读写比例为10∶ 1的大规模读写操作。 并在 I/O 调度层实时统计读写请求执行结果。 图中,序列1310 附近出现大块数据请求,请求响应延迟相应增加,紧跟大块数据请求后的若干小片数据请求响应延迟持续增加。 在序列1340 附近再次出现大块数据请求,响应延迟快速增加,将序列1350 到1370 的所有小片数据请求全部阻塞。 此处分析的现象是实验结果中大范围存在的一个片段。

2.3动态阈值分类请求

拥塞阈值单位为ms。 其实际意义在于如果I/O频率一定,则每个请求的平均处理时间一定,如果超越平均时间就可能阻塞后面 I/O 请求。 I / O 路径拥塞阈值是一个动态变化的值,但实时变化在工程应用中难以实现也没有必要。阈值以下的 I/O 请求响应延迟差距很小,对后续请求的阻塞作用很微弱,不必要对其进行进一步优化处理。 在第一阈值到第三阈值之间请求响应延迟差距很大。 阈值内部的 I/O
请求之间就足以产生相互的拥塞效应,针对此部分读写请求按照其大小进行排序,以小优先算法依次派发。从而使得整体的IO延迟降低,提升SSD性能。

 

3研究重点

本项目将研究基于2D NAND的排队算法,包括它的调度行为、分类标准、操作实现等方面进行详细研究及探讨。

(1)研究根据3D NAND 层之间的速度差异设计一种新的基于延迟的请求调度策略。根据提出的调度策略可以预测资源利用率,并以什么标准将请求分配给并行组件(即,信道)以实现低存储访问延迟。这需要多次反复的理论和实践的研究。

(2)研究如何让此算法能让排队算法运用于3D 闪存能够获得更好的调度方式,最大幅度减少I/O延时。

    (3)研究上述提出的3D优化算法对SSD表现的提升,经过反复多次试验得到数据,并进行分析调试,得到相应结论

4技术路线

本项目共有5大部分:

基于闪存类型分为2D
NAND、3D NAND两种,其对应的算法也有所差异,故本项目需要先了解2D NAND的算法机制,并且举一反三,提出基于3D层差异的算法模型,并针对这种设计提出对应的调度方案。

最后评测的步骤:

系统中磁盘调度程序存储在/sys/block/sda/queue/scheduler目录下,在LINUX系统中使用指令 echo<调度方法名称> > /sys/block/sda/queue/scheduler ,安装至该目录下,即可使用新该写的调度算法进行磁盘调度。再通过磁盘测试工具进行测评。

 

基本实现流程如下图所示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5项目的研究基础与可行性分析

·5.1 2D NAND的基于延迟请求调度成为研究热点

对于2D NAND
已经有一些提升性能的方法如下,为快速数据访问铺平道路,SSD中的多个并行组件(例如,多个芯片)被精心制作。因此,如何充分利用并行资源成为一个具有挑战性的问题。为了解决这个问题,我们首先设计一个ssd模型,它不仅考虑SSD中并行组件的结构,还研究这些组件的使用情况。然后,基于该模型设计了一种新的基于延迟的请求调度策略。所提出的调度策略可以预测资源利用率,并智能地将请求分配给并行组件(即,信道)以实现低存储访问延迟。我们将基于延迟的请求调度与所提出的ssd模型集成到一个跟踪驱动的模拟器中,并评估所提出的方案在金融和websearch数据集上的有效性。实验结果表明,与现有调度策略相比,IOPS和请求延迟分别提高了16.5%和14.2%SSD使用高性能接口,如16GB /s PCIe接口、NAND闪存的速度
(存储介质在里面)ssd)是有限的,例如40 MB/s。

基于延迟的I/O请求调度已经成为当下热点,随着现在的3D NAND技术的普及,

5.2 采用DiskSim模拟器模拟实验

DiskSim是一个高效、准确、高度可配置的磁盘系统模拟器,用以支持对各种存储体系的方方面面的性能的研究,它由c编写且开源。它具有多种模块,配置多样,已在许多存储系统效率及性能的研究中应用,被证明能很很真实的模拟存储系统的工作情况。DiskSim能够模拟并且报告与存储子系统相关的性能相关项,其能够对磁盘子系统的性能相关项进行建模,
通过模拟器反馈的数据检验算法的有效性。

项目成员将会一直研究3D NAND的机制,探索不同层的特性,并且跟进期刊会议上关于基于延迟请求调度的算法方面研究,学习最先进的算法设计思想,从而在该基础上建立高效的资源消耗预测、权衡等待优先的算法模型,此外项目成员均具备一定的相关基础知识,学习实践能力强,对于固态硬盘的机制有一定的认识,通过密切默契的团队合作,能确保项目的顺利进行和完成。

6项目的创新之处

针对上述待研究的重点,本项目有以下两点创新之处:

(1)研究3D闪存各层之间数据R/W的I/O延迟,来准确研究不同layer的性能

(2)传统的2D的排队优化只考虑了2D NAND每一个flash闪存的I/O性能几乎相同,对于3D闪存来说尚无针对性的改良

7项目预期成果

本项目拟在2020年8月至2020年12月之间完成,总体项目安排与项目进度流程如下:

第一阶段(2020.3-2020.7),阅读有关方面的文献,熟悉并掌握现有的关于NAND的技术,研究2D调度算法,提出对于3D优化的实施方案。

第二阶段(2020.3-2020.5),深入研究现有的2D NAND上的延迟排队等待算法,3D NAND的机制,及初步熟悉DiskSim的有关用法,并提出在DiskSim上实施2D
NAND排队算法的构建方案。

第三阶段(2020.6-2020.7),在前一步的基础下,在DiskSim上实现2D的排队算法,研究其对性能提升的相关帮助,并设计针对3D NAND优化的算法。

第四阶段(2020.7-2020.12),测试实践和论文撰写。

第五阶段(2020.7-2020.10),算法测试调优。此阶段利用模拟器对SSD R/W的延迟做重复测试,发现算法的不足并进行针对性的优化。

第六阶段(2020.10-2020.12),总结。将之前的成果整理完成研究报告,做成果交流

最终预期实现:

(1)实现基于3D NAND层差异排队性能的算法模型。

(2)拟完成一篇研究报告。