此前,存储随笔有发布一篇关于SSD QoS相关问题,文章中有从以下方面做了全景的分析:
扩展阅读:
-
全景解析SSD IO QoS性能优化
-
SSD基础架构与NAND IO并发问题探讨
本文主要在之前文章的基础上,再做个补充,本次更新主要内容是LDPC纠错过程对QoS的影响。
首先,我们看下,host数据到落入NAND要经过的过程。
-
1/2步会进行CRC/E2E校验写入缓存。
-
3/4步有闪存控制器Flash IP进行E2E/CRC LDPC编码后写入NAND。
在host读取数据过程中,最理想的情况是一个Page Read Time的时间就可以直接返回数据。但显示的情况是,我们可能会因为一些不想看到的问题,导致性能受损。
这个读取过程中,NAND相关问题的纠错对延迟也有很大的影响。
比如读写之间的温度差、Data Retention、读干扰、写干扰等。导致出现数据翻转,需要启动Read Retry重读机制、LDPC纠错、RAID纠错等修复机制。这个过程就会导致性能出现跌落或者延迟抖动。
纠错码是一种用于检测和纠正数据传输过程中出现的错误的技术。它们在固态硬盘(SSD)中扮演着关键角色,因为NAND闪存介质具有内在的不稳定性,容易受到各种因素的影响,如读取噪声、编程/擦除过程中的磨损等。BCH(Bose-Chaudhuri-Hocquenghem)和LDPC(Low Density Parity Check)是两种常见的纠错编码技术。
1.BCH(Bose-Chaudhuri-Hocquenghem)纠错码
BCH码是由印度数学家J. R. Bose和D. K. Ray-Chaudhuri以及加拿大工程师W. W. Peterson独立发现的一种线性分组码。BCH码的特点是在编码时引入了校验位,这些校验位可以根据原始数据计算得出,以确保接收端能够检测并纠正特定数量的比特错误。BCH码的优势在于其相对简单的硬件实现,但在纠错能力上不如LDPC码。