数据存储产业服务平台

存储专家冯丹:面向3D闪存的性能和可靠性优化技术

大数据时代对存储需求越来越高,要求大容量、高性能、和可靠安全存储。3D闪存以其优异的性能、更大的存储容量和更低的价格在固态盘存储发挥重要作用,成为发展趋势。然而,采用传统方法管理3D闪存会产生性能和可靠性的问题。

12月3日,中国计算机学会信息存储专委会主任委员、华中科技大学计算机学院院长冯丹在2019中国数据与存储峰会(DATA & STORAGE SUMMIT)发表题为《面向3D闪存的性能和可靠性优化技术》的演讲,介绍在管理3D闪存时面临的问题以及相关研究工作,其中包括面向SLC和MLC/TLC闪存设计的基于闪存页重复编程特性的多次子页写入技术,提升闪存空间利用率从而优化性能,以及通过对3D闪存页排布特征分析,基于干扰补偿编程的可靠性优化方法。

以下为演讲实录:

我今天给大家介绍一下最近做的一点工作,面向3D闪存性能和可靠性优化技术,主要介绍三个点,一个就是3D闪存背景还有我们做的两项工作。一个是性能优化还有一个就是可靠性的保障技术。

大家都知道随着大数据边缘计算网络这样一些发展,对于存储的需求是越来越大,据统计到今年应该是规模将达到40ZB。这么多数据首先要存下来,要高性能大容量还要低功耗价格便宜存下来。当前的几种存储介质,应该说有硬盘闪存,还有一些新的存储介质,比如英特尔讲的傲腾。目前来说用的量非常大的闪存技术从2D全面转向3D,主要的原因是追求高密度大容量,高密度大容量,实际上是两个技术,一个就是从到QLC,还有英特尔介绍的PLC,另外一个就是3D,从2014年之后基本上全部转向3D,现在已经达到了128层,444层的高度,这就导致有两个问题,一个是性能的问题,大家都知道容量大了之后,单个颗粒达到TB级,甚至10个TB的时候,管理的这个力度快大小就越来越大,文件系统块有很多页组成的,页越来越大,从514个字节的力度,到现在16K甚至32K。这是闪存页,我们知道页是我们基本的读写的单元。增大了页的容量就会导致一个问题的出现,现在的文件系统,上传的应用都基于硬盘管理而来的。我们系统最基本块大小是4GB,页面大小达到了34K,远远大于上层,就会导致大量小写的产生,性能会受到影响。

第二个在页速度增多,块的容量越来越大,SSD里边有一个我们要做擦除操作,有效的页移出来,移出来这样开销也会增大,这都是整体性能的影响。

到了3D闪存,垂直方向的对角性方向都会加剧比特的出错率。我们系统上有很多解决方案,能不能减少这个出错率这是最根本的问题。我们做了这两个工作。

第一个工作就是性能的问题,我们文件系统有4K这样一个修改,那么对于闪存的操作就会流出这一页,这一页大小16K,先读到主机里面修改,再写下去,异地写,然后把这一页作废。标志为无效页,写这4K数据,读了一个16K在写4K,800%的传输放大,只要写4K,页大小16K,写放大400%,大大影响性能,而现在的一些工作就是用一个缓存,把这个小于1页写,拼凑成1页之后写下去,我们发现一个什么问题,闪存有这样一个问题,可以重新编程这样一个特性,可以对于不满一页写了之后,还有空闲的地方,下次在写,写多个纸页。闪存编成的特性,SLC编程很好用,对于SLC首先块擦除全1的过程。

还有一个问题就是说对于这种MLC来说,多个多位这样来说都有一个要求可靠性,就是要求平均写0、1个数最好是平均的,为了达到平均的目的,所以一般说主流的厂商都用数据随机化达到这样一个要求。我们发现现在很多闪存芯片实际上是提供了两种模式,可以在MLC两种模式之间切换的,SLC重新编程写子页,提高容量的使用率。MLC可以大大延续这些数据的存储,这样可以把两者结合起来。结合起来有一个问题,一个颗粒本来工作在SLC下面,到底哪一部分支持了MSL,哪一部分支持SLC,就要记住,否则就会出现问题,导致数据崩溃就乱套了。

我们自主研发的DSAL-V7固态存储平台,使用SLC、MLC闪存子卡进行重复编程方法的验证。对于SLC来说,可以把一个页分成很多子页来使用,从而解决小写的问题。这样就会也有相应的问题出现,只使用子页级映射表会成倍增加映射表占用DRAM的开销, 1 TB SSD会变成2GB mapping tables。当它满页写的时候,只要一个大的页表,这样子页只是增加了16.5%就可以了。我们整个闪存页状态转化从原来有效以及无效页三个状态变成了七个状态,完全孔隙、完全有效、完全无效,还有部分有效,部分有效有子页,在这个过程中间,到底怎么样来分配,分配有两种策略,一种独占式分配还有一个共享式分配。独占式分配相同的逻辑页的数据是放在一个页里面,而共享页分配只要有贡献就插进去,一个是省空间,另外一个延续性比较好。

刚才讲了MLC、SLC,用的结合,部分工作在SLC工作下面,SLC主要应对连续的读写,然后SLC就是小块的,在这个里头就有一个问题,因为我们一关电之后,再起来默认工作在SLC下面,不能乱,一些工作在MLC进行管理。SLC工作状态下的接源的时候,以块为单位转化,做一个原子操作,保证不要这个工作模式毁灭了,做了碎片管理,主要面向不密集型的请求,提高性能,也存在一个问题,有可能就是我一次的读变成了多次到处去找,就会导致性能下降,读密集型我们还做碎片管理,最后达到的效果平均响应时间可以达到57%以上。今年最新的成果也发表了相应的论文。减少了写的擦除次数,还有写放大。效果都不错。

第二个就是我们做的可靠性工作,2D闪存容量的发展已经接近其物理极限。三维堆叠结构闪存阵列被认为是闪存持续发展的可行方案。3D闪存中未完全补偿的页数目急剧增加,影响设备可靠性,需要针对其提出可靠性保障方法。对于未完全补偿闪存页出错的情况,根据出错页号可知其缺少的补偿类型及补偿次数,需要采取读电压偏移策略。由于数据模式不同以及read-Retry不能完全匹配缺失的电压量,若仍发生读错误的情况,对此要有人工补偿策略。

(以上文字未经审核,如有纰漏,欢迎指正)

———————— END ———————

查看中国数据与存储峰会专题报道:https://www.doit.com.cn/subject/DSS19/

未经允许不得转载:存储在线-存储专业媒体 » 存储专家冯丹:面向3D闪存的性能和可靠性优化技术