天天看点

多维度深入剖析QLC SSD硬件延迟的来源

作者:存储随笔

之前谈到QLC的背景和SSD延迟相关的话题:

PLC SSD虽来但远,QLC SSD火力全开

如何快速debug定位SSD延迟问题?

本文主要针对QLC SSD本身硬件底层延迟来源进行剖析,看看是否有新奇的发现。

如之前文章的介绍,目前NAND已经从SLC发展到PLC,但是PLC离大规模上市还有一段距离,我们暂时先略过。市面上主要流通的就是4种NAND类型:SLC、MLC、TLC、QLC。随着每个寿命从高到低依次是SLC>MLC>TLC>QLC.

随着单个cell含有的bit数越多,NAND的可靠性也会有所降低。同时写延迟也在不断地增加。SLC写延迟在0.5ms级别,到QLC写延迟达到10-20ms,40倍的差距。这也导致QLC SSD性能出现很大的下降。

多维度深入剖析QLC SSD硬件延迟的来源

在评价SSD性能指标的时候,我们通常会提到顺序读写带宽,随机读写IOPS,这些指标与NAND之间的关系是怎么样的呢?延迟的来源有哪些?

(1)NAND Read Page时间影响SSD读性能

Host从SSD读数据,最终数据的来源也是要从NAND die上读取,对NAND die发送Read Page操作,数据返回。这个过程的耗时直接决定了SSD读性能的好坏。下图是某个比较老的NAND SPEC相关读操作的示意图,仅供参考。

多维度深入剖析QLC SSD硬件延迟的来源
多维度深入剖析QLC SSD硬件延迟的来源

(2)NAND Program Page时间影响SSD写性能

Host向SSD写入数据,数据最终的归宿是NAND die。数据写入NAND的时间依赖NAND Channel和Plane的设计,更重要的是需要依赖NAND die本身program page的时间,这个过程的耗时直接决定了SSD写性能的好坏。下图是某个比较老的NAND SPEC相关写操作的示意图,仅供参考。

多维度深入剖析QLC SSD硬件延迟的来源

比如下图是在去年ISSCC展示的不同场景QLC SSD性能的对比。其中,我们可以关注到Program Latency(tPROG)的时间,跟Program Throughput写带宽有直接的关系。同样的Plane配置下,Program Latency(tPROG)的时间越小,Program Throughput写带宽就会越大。

多维度深入剖析QLC SSD硬件延迟的来源

(3)NAND Block Erase的时间也会影响SSD读写性能

下图是SSD写入page的简单示意图。当数据以4KB大小随机写入时,最左边的die的第一个block已经写满了,包括了有用数据或者invalid无效数据。

多维度深入剖析QLC SSD硬件延迟的来源

在SSD FW内部GC启动的策略下,最左边die的第一block的有效数据被搬迁到空闲的数据块block。同时该block开始执行Erase操作。此时,如果我们要读取在这个die的数据A的时候,因为同一颗die正在进行erase操作,就会导致A数据读操作无法执行(同时,如果同一个die或者plane有读操作进行,此时读取同一个die和plane,也会产生冲突,影响读性能),需要等待erase操作完成。最终导致读的延迟里面有多了一个erase block的操作,读性能就会看到一个抖动。

多维度深入剖析QLC SSD硬件延迟的来源

在GC的另外一种状态,SSD内部没有空闲的block,需要等待GC搬迁数据和擦除数据,腾出空闲的数据块,这个过程,erase的操作也影响到写性能。假如我要写入一个4KB的数据Z覆盖A,并恰好目标块没有空余的页区,需要进行GC回收。这个时候就需要把B、C、D、E、F五分数据都搬走,然后擦除整个数据块,擦除完成后再整体写入6个数据页。这个整个过程,Host虽然只写了4KB的数据,但实际过程中,由于GC的问题,NAND最终写入了24KB。那么写放大WAF=24KB/4KB=6. 这整个过程写延迟和写放大都受到了很大的影响。

多维度深入剖析QLC SSD硬件延迟的来源

扩展阅读:SSD写放大的优化策略要统一标准了吗?

(4)NAND其他特性对SSD读写性能的影响

比如要增加写性能,做法是在NAND array Bit Line方向增加plane的并发度,多个page一起写。另外,也可以通过减少Bit line的长度来降低RC延迟,这样可以提升读的性能。

多维度深入剖析QLC SSD硬件延迟的来源

同时,NAND ONFI接口的速率也会影响性能,目前常见的接口速率2400MT/s, 3200MT/s, 3600MT/s。

(5) ECC纠错对SSD读性能的影响

在host读取数据过程中,最理想的情况是一个Page Read Time的时间就可以直接返回数据。但现实情况是,我们可能会因为一些不想看到的问题,导致性能受损。

比如读写之间的温度差、Data Retention、读干扰、写干扰等。导致出现数据翻转,需要启动Read Retry重读机制、LDPC纠错、RAID纠错等修复机制。这个过程就会导致性能出现跌落或者延迟抖动。

多维度深入剖析QLC SSD硬件延迟的来源

在QLC SSD中,因为Vt level之间的电压差更狭小,访问同一个区域的扫描电压影响会更大,更容易引发读干扰的问题。

多维度深入剖析QLC SSD硬件延迟的来源

同样的,Data Retention也比较明显,读写温度差异对QLC NAND的更加敏感。

多维度深入剖析QLC SSD硬件延迟的来源

扩展阅读:SSD可靠性分析前传之NAND闪存可靠性概览

(6) 3D-NAND工艺对SSD性能的影响

目前业内3D-NAND工艺架构主要分为两个阵营,一个阵营,以Solidigm(Intel NAND卖给海力士后新成立的公司)为首,采用Floating Gate(FG)浮栅,另外一个阵营三星/WD等,采用Change Trap Flash。FG浮栅将电荷存储在导体中,而CTF将电荷存储于绝缘体中,这消除了单元之间的干扰,提高了读写性能,同时与浮栅技术相比减少了单元面积。不过,FG浮栅对read disturb和program disturb的抗干扰比CTF要好。

多维度深入剖析QLC SSD硬件延迟的来源

FG浮栅架构在Program过程,采用4-16 program算法,这个过程可以减少program disturb写干扰。

多维度深入剖析QLC SSD硬件延迟的来源

CTF架构,或者叫做RG架构,采用16-16 progam算法,两次program都要求所有page直接写入NAND,第一次program电压是放置在最终电压附近。CTF的Data Retention相对比较严重。

在写性能方面的对比,不同的架构有不同的表现。

  • 在TLC NAND中,CTF架构tPROG比FG浮栅低18%,所以在TLC SSD中,CTF架构TLC NAND SSD的性能比FG架构TLC NAND SSD性能要好。
  • 在QLC NAND中,由于program算法差异的影响,FG浮栅表现更好,FG架构QLC NAND SSD性能比CTF架构QLC NAND SSD性能要好。

再搬出这个QLC SSD性能对比图,同样4plane的QLC SSD,采用FG架构的Intel QLC SSD写延迟tPROG=1.63ms比采用CTF架构的SK Hynix写延迟tPROG=2.15ms要低。

不同的NAND工艺架构,在不同的维度各有千秋,对维度对比,供大家参考。

扩展阅读:3D-NAND向500层进发,天花板在哪里?

结语

不同的FW架构设计、FTL算法设计、NAND die plane/速率等的差异,都会直接影响SSD的性能与延迟,设计一块性能优越且稳定的SSD,是一项繁琐但具有很强艺术性的工程。

精彩推荐:

  • 漫谈固态硬盘SSD全生命周期的质量管理
  • 如何快速debug定位SSD延迟问题?
  • 汽车存储SSD面临的挑战与机遇
  • 超大规模云数据中心对存储的诉求有哪些?
  • SSD写放大的优化策略要统一标准了吗?
  • 阿里云Optane+QLC存储实践案例分享
  • “后Optane时代”的替代存储方案有哪些?
  • 浅析数据中心存储发展趋势
  • 浅析PCIe链路LTSSM状态机
  • 浅析Relaxed Ordering对PCIe系统稳定性的影响
  • 实战篇|浅析MPS对PCIe系统稳定性的影响
  • 浅析PCI配置空间
  • 浅析PCIe系统性能
  • PLC SSD虽来但远,QLC SSD火力全开
  • Backblaze2022中期SSD故障质量报告解读
  • 最全电脑固态硬盘SSD入门级白皮书
  • 存储随笔《NVMe专题》大合集及PDF版正式发布!
  • 加权循环仲裁WRR特性对NVME SSD性能有什么影响?
  • Linux NVMe Driver学习笔记之9: nvme_reset_work压轴大戏

继续阅读