基于LDPC的下一代SSD控制器的延迟问题

基于LDPC的下一代SSD控制器的延迟问题

作者: Stephen Bates

延迟的多变性

上一篇博文谈到了企业级谈到了企业级SSD控制器中纠错代码(ECCs)正在向低密度奇偶校验(LDPC)转化。文中还暗示到,这一转化将对下一代SSD控制器中的延迟带来深刻的影响,本文将就此作出进一步阐述。

SSD中与LDPC ECC相关的延迟主要源于三处:

1.       LDPC编码过程

2.       NAND闪存上与数据首次读出数据相关的LDPC解码过程

3.       NAND闪存上与后续读出数据相关的LDPC解码过程

高性能SSD中,与第一个源头相关的延迟可以忽略不计。它们通常利用回写缓存等技术而隐藏起来,不为用户所知。然而,与第二个及第三个源头相关的延迟无法对用户隐藏。

接下来继续将第二个和第三个源头产生的延迟做进一步分析。下表展示了企业级SSD上与随机读相关的若干主要延迟组成要素。有趣的是,其中只有t_read和t_ldpc两项具有可变性,并且,t_read的可变性要比t_ldpc大得多(60us
vs. 19us)。


项目


时间(us)


类别(us)


最大值(us)


说明


闪存读时间 (t_read)


60


80


120


当前MLC NAND 闪存常见、具有代表性的数值


转换时间 (t_trans)


10.2


10.2


10.2


假设操作为4KB 读,速度为400MT/s ONFI/TOGGLE.


LDPC 解码时间 (t_ldpc)


1


4


20


假设LDPC 解码器的每次迭代延迟为1us。最少迭代1次,通常迭代4次,最多20次。

闪存读时间(t_read)的变化部分取决于页面索引(有些页面本质上比其他页面读出要快);其余的则随同一页面的单次读出而随机改变。对于基于LDPC和基于BCH的SSD而言,该指标保持一致。

LDPC解码时间的变化是从闪存解码数据所需迭代次数的函数。LDPC解码器通常采用迭代解码过程,在解码开始时迭代的次数通常是不可知的。常用的方法是给迭代次数设置上限,以便在解码失败时给t_ldpc一定限制。

LDPC解码中的迭代次数取决于LDPC编码的参数以及NAND闪存上读操作发生区段上的出错数目,注意到这一点有助于我们进一步思考,因为它意味着可以通过控制上述的两项指标中任意一个或者二者来改变t_ldpc。

下图显示出:在多种NAND闪存出错率下,LDPC参数的选择均可以影响并改变t_ldpc。

NAND闪存出错数目很低时,t_ldpc对于ldpc1和ldpc2是一样的。但是,随着出错数目的增加,相比ldpc1而言,ldpc2开始表现出较低的延迟(t_ldpc)。在SSD中,可以通过以下两种方式来利用这一发现:

1.       静态 LDPC配置–如果想要获得最小化的延迟,则可以在SSD中选择使用ldpc2。

2.       动态 LDPC配置–如果SSD支持动态配置,则可以在NAND出错率较低时选择ldpc1(即在SSD生命周期伊始),继而随着SSD
NAND闪存的老化,转向采用ldpc2。

值得注意的是,任何一个给定SSD控制器,都可能具备两种以上的LDPC代码供其选择,在此情形下,可以灵活地在LDPC代码的参数及与t_read相关的延迟之间进行折衷。

如果起始的LDPC解码失败了,事情就更妙了。这种情况下,接下去要做的就是回到NAND闪存本身,开始朝软决策LDPC解码的方向努力。本系列博文中的下一篇将会研讨这个问题。

基于LDPC的下一代SSD控制器的延迟问题

时间: 2024-10-22 13:14:17

基于LDPC的下一代SSD控制器的延迟问题的相关文章

IOS 页面跳转控制器有延迟

一般控制器有延迟是应该我们控制器的视图view是栏加载的,等我们用到的时候才会加载,所有我们在利用UINavigationCongtroller,的这个方法 [self.navigationController pushViewController:controller animated:YES];跳转的时候,控制器需要加载视图view.所有会延迟一会儿.解决办法: view.frame = CGRectMake(0, 0, ZXScreenW, ZXScreenH);,手动调用下view的se

基于状态空间模型的PID控制器用M语言实现

前面讲到如何将状态空间量建模,现在用PID控制方法并通过m语言来实现: 搞清楚这两个问题,加深对PID控制器的理解: u = Kp * (x_last - x(i)) + Ki * (x_last - 2 * x(i - 1) + x(i - 2)) + Kd * x_last u为控制量,x_last为目标值.x(i)为当前值(公式具体怎么写忘记了,但形式应该是对的) 1 比例调节无法令实际值调整到目标值! 原因:我们只看比例部分,u = Kp * (x_last - x(i)),当实际值趋近

基于NAND闪存的SSD解决方案的STT-MRAM

作为克服现有基于NAND闪存的SSD的解决方案,everspin提供具有ST-DDR3和ST-DDR4接口的STT-MRAM,可通过提供高速非易失性存储来提高SSD的系统性能和可靠性.机上数据.通过添加STT-MRAM来补充或替换SSD控制器的DDR总线上的易失性DRAM(图1),SSD控制器现在可以将该高速非易失性存储器用于写缓冲区和之前运行的任何其他关键数据易挥发的. 图1具有电源故障保护功能的混合DDR / STT-MRAM SSD架构 对于企业级固态硬盘,电源管理系统的设计很重要.系统必

SSD ECC中的LDPC编解码原理

转自:http://blog.csdn.net/zhuzongpeng/article/details/78899198 目前SSD中ECC纠错代码主要两种BCH和LDPC.不过,随着SSD对ECC纠错技术要求越来越高,BCH纠错码开始有些吃力,所以,LDPC纠错码是发展趋势,也是最新最主流的纠错码. 为何需要LDPC? 我们先回顾一下NAND闪存的基础知识.在这里以MLC NAND为例.在MLC NAND中,有四个Vt level. 如下图, 随着P/E cycles的增加,MLC NAND的

[转帖]深度: NVMe SSD存储性能有哪些影响因素?

深度: NVMe SSD存储性能有哪些影响因素? http://www.itpub.net/2019/07/17/2434/ 之前有一个误解 不明白NVME 到底如何在队列深度大的情况下来提高性能, 现在看来是因为 比AHCI多了 多队列的控制来提高性能. 导读: NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NVMe SSD的性能影响因素进行分析,并给出

PCIe闪存控制器技术解析

一.PCIe-SSD架构解析 PCIe作为CPU的局部总线,最大的特点在于数据传输吞吐量大和延迟低.对于NandFlash固态存储而言,传统磁盘存储领域存在的随机读写问题将不复存在,因此,整个存储系统的瓶颈从存储介质转移到了传输接口上来了.为存储而生的SATA/SAS接口在SSD上的表现不是那么理想了,非常影响IO的传输延迟.为此,显而易见,存储接口应该从传统的SATA/SAS往离CPU更近的系统总线PCIe或者DIMM方向发展. 大家其实很早就认识到了这一点,当年Fusion-io推出基于PC

为SSD编程(4)——高级功能和内部并行

原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-4-advanced-functionalities-and-internal-parallelism/ 在这个部分,我将简要的介绍一些SSD的主要功能,如TRIM和预留空间.我同样会介绍SSD中不同等级的内部并行. 5. 高级功能 5.1 TRIM 让我们假设一个程序向SSD所有的逻辑块地址都写入文件,这个SSD当然会被装满.然后删除这些文件.文件系统会报告所有的地方都是空的,尽

Memblaze 联手PMC推出用于超大规模数据中心的高性能PCIe SSD

Memblaze 联手PMC 推出用于超大规模数据中心的高性能PCIe SSD Memblaze 产品在容量.灵活度及延迟等方面均领先业界       引领大数据连接.传送以及存储,提供创新半导体及软件解决方案的PMC?公司(纳斯达克代码:PMCS)今日宣布,忆恒创源科技有限公司( Memblaze Technology Co. Ltd)在其下一代PCIe产品中采用了PMC的Flashtec? NVM Express (NVMe) NVMe控制器. 基于Flashtec的Memblaze的PBl

为SSD编程(3):页、块和闪存转换层

原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-3-pages-blocks-and-the-flash-translation-layer/ 在这个部分,我会解释写操作在页和块级是如何处理的,以及写入放大和损耗均衡计算的基本概念.此外,我描述了闪存转换层(FTL)的概念,以及应用了闪存转换层的两个技术:逻辑块地址映射和垃圾回收.更详细的说,我解释了在混合逻辑块映射背景下的写操作是怎么实现的. 3. 基本操作 3.1 读出.写入