QLC 闪存给主控带来了很大的难题?

news2024/11/20 8:48:12

前言

世界各大主流闪存厂商,如美光、海力士、铠侠和长江存储积极致力于QLC的研发,并相继推出了QLC SSD 产品。随着技术的不断进步,人们普遍担心的QLC擦写寿命少正逐渐被改善。QLC SSD 成本是最大的优势,不指望说替代 TLC SSD, 替代 HDD 指日可待。

但因为 PLC NAND 本身的一些劣势, 对 NAND 闪存控制器(主控)带来了很大的挑战。
今天我们一起聊一聊?

随着NAND Flash的制程越来越先进、单个Cell里面的bit数量不断增加。
NAND Flash由最初的SLC发展到目前的QLC,虽然存储密度获得了很大的提高,单位Bit的成本得到极大降低,但是也带来性能和可靠性缺陷。性能&可靠性对比是SLC>MLC>TLC>QLC,随着每个cell的bit数量的增加,读写寿命逐渐变短,速度变慢,能耗高,出错概率大

1. 对芯片纠错能力要求更高

为什么随着NAND密度的增加,主控芯片纠错能力的重要性更大?

在这里插入图片描述
造成出错的主要原因是当每个cell(存储单元)存储多个bit时,相比SLC,存储单元之间的干扰就会增大。因此MLC,TLC乃至QLC对主控芯片和差错控制技术提出了更高的要求,而纠错技术也从BCH过渡到了LDPC。随着工艺的不断进步,下一代NAND存储单元所容纳的Bit数量会越来越多,对算法的纠错能力要求也会越来越高。

在高密度存储中,每个cell bit数量增加,互相干扰增大,擦写次数增加,存储结构中的氧化层会遭到破坏,捕获电子的能力越差,影响产品寿命,

一问如何解决QLC NAND 误码率?

一方面闪存原厂利用浮栅技术,降低出错概率
在这里插入图片描述
RWB (Read Window Budget,阈值电压窗口) 指标对于NAND可靠性至关重要。RWB越大越好,出错概率越小。上图展示了1b/c (1 bit/cell)一直到 4b/c (4 bit/cell)之间的差别,你会注意到位之间的差距越小,每个单元的位数越多。

然而,如果看看右侧的图表——其中对比了浮动栅极单元和电荷捕获单元两种技术的RWB——可以看到浮栅单元的RWB高于电荷捕获技术。RWB越高,数据保留周期就越长,可靠性越好,从而也更容易实现4b/c, 5b/c等技术的产品化。浮栅技术的RWB非常卓越,这大大提升了QLC的数据维持能力,减少误码率。

二问如何解决QLC NAND 误码率?

另一方面闪存主控有效的纠错编码, 提高纠错能力

TLC NAND 的主控芯片主要采用2K LDPC编码。 但QLC 误码率更大, 需要用到4K LDPC(低密度奇偶校验Low-Density Parity-Check)纠错技术。4K LDPC在同样的码率下(纠错码使用bit数量一样),实测4K LDPC纠错比2K方案降低UBER至少两个数量级以上,大大提高纠错性能。

不过在芯片中实现4K LDPC的难度还是很大的,如果不做优化,相当于至少2个2K LDPC,因此对主控芯片面积、功耗都有极大的挑战和要求。

正因为原厂持续不断的优化技术降低误码, 和主控厂家不断提升的纠错能力。 这才很好地加速QLC的商用化落地。

2. 更高并行度

SSD性能高的秘密就在于有很多个闪存芯片可以并行读写,虽然单个芯片带宽不高,芯片并行起来速度就可成倍增长,实现非常高的性能。

QLC 闪存芯片单颗容量会很大,同样是 1TB 的SSD, QLC 就不需要那么多颗,这就会产生一个严重的问题,一旦SSD内部没有这么多的闪存颗粒,并行度就会下降,导致性能上不去,这该怎么办?

目前闪存厂商在想办法让NAND Flash内部提升并行度。主要做法是Plane(平面)数目会增加。相较于目前主要是4个plane,长江存储的 QLC 达到了 6 Plane. 未来闪存有可能会有8个甚至16个plane。主控需要支持更多的 Plane 组合。

因为 Plane 还不能完全做到延迟(Latency)并行, Intel 发展了一项新技术,让Plane0/1 和 Plane 2/3 独立, 这样变成了两个 双 Plane, 这两个双 Plane 可以完全并行。这自然是一个先进技术,对了提高并行速度效果很明显, 但这也要闪存控制芯片 FTL 算法支持这样。

3. 支持更高的闪存接口速度

闪存芯片的接口速度也在日新月异,国际闪存原厂下一代闪存芯片接口将达到2400MT/s甚至更高。
我国自主的长江存储推出的128层QLC产品,接口速度达到1600MT/s,标志着我国闪存芯片的设计能力已达到世界先进水平。

QLC NAND 需要增加接口速度以支持使用PCIe 4.0和最终PCIe 5.0的下一代NVMe SSD应用,对主控芯片的主频和高频信号质量提出了更高的要求。

4. 其他挑战

QLC还有其他缺点:

  1. 写延迟是12ms,非常长
  2. 擦写次数通常只能达到2000
  3. Data Retention 问题

这些都需要通过主控技术进行补偿。
写延迟需要通过DRAM 缓存(或HMB技术借用主机内存缓存)提高速度。
擦写次数低, 要求主控的磨损均衡要更加优秀。
Data Retention 需要主控刷新数据。

不过我认为主控之前就有这些技术, 只是现在针对更极端的场景,要优化主控的管理算法, 更加适用 QLC NAND 的特点。

结语与展望

随着每个cell的bit数量的增加,读写寿命逐渐变短,速度变慢,能耗高,另外,一个主要的缺点是出错概率大。QLC NNAD 给闪存主控带来了很大的挑战,强大的低密度奇偶校验(LDPC)纠错对于NAND控制器来说至关重要。

QLC NAND 需要增加接口速度以支持使用PCIe 4.0和最终PCIe 5.0的下一代NVMe SSD应用,对主控芯片的频率和信号完整性提出了更高的要求。

但好在主控厂商已准备好了。慧荣、群联、英韧等都已推出了支持 QLC 的主控。这对于QLC SSD 的普及,有如神助。

QLC最有可能在数据中心有更大的应用场景,因其具有巨大的成本优势,尤其在海量数据的应用场景中。QLC本身容量大、成本低,因此使用了QLC SSD之后,存储密度更高,服务器集成度更高,这会极大地节省数据中心面积,进而节省运营成本。

参考
http://www.ssdfans.com/?p=113823
https://www.163.com/dy/article/EODB68AO0511DQFI.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

408 | 【2011年】计算机统考真题 自用回顾知识点整理

选择题 T3:循环队列 不同指针指向,队列判空/判满条件 1. rear:指向队尾元素 front:指向队头元素前一个位置 (1)牺牲一个存储空间 (2)判空条件:front rear (3&#xff0…

【RHCSA】管理Linux的联网

目录 rhel8与旧版本的区别 NetworkManager的特点 配置网络 (1)使用P命令配置临时生效的网络连接 (2)修改配置文件,前提是需要有network服务[不推荐] (3)nmcli(命令行工具) 网络测试命令 Ⅰ、使用ping命令测试网络的连通性 Ⅱ、使用tracepath命令跟踪并显示网…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java危险品运输车辆信息管理系统b2z1o

大学毕业设计,一般都是自己或者几个同学一起弄,lunwen都是去,百度,图书馆找很多资料参考,(就是把里面都了,自己再按照各个意思重新表达),但是前提,提纲要想好…

【附源码】计算机毕业设计SSM微课程服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

神经网络芯片的单片机,什么是神经网络芯片

1、神经网络做图像分类一定要用到gpu吗? GPU最大的价值一直是“accelerating”(加速),GPU不是取代CPU,而是利用GPU的并行计算架构,来将并行计算的负载放到GPU上来处理从而极大的提升处理速度。GPU本质上在异构计算架构上属于协处…

Hello Word你真的理解了么?今天教我的表弟,有些感悟

🍬博主介绍 👨‍🎓 博主主页:喵的主页 ✨主攻领域:【大数据】【java】【python】【面试分析】 Hello world1. 编写程序2. 打开命令行3. 运行 .class 文件4. 排查错误1. 编写程序 是不是都忘了我们初学时是打开记事本的…

9-1 Kubernetes二进制部署的Prometheus实现服务发现

文章目录前言创建用户复制Token配置文件全局配置Master节点发现Node节点发现Namespace Pod发现自定义Pod发现前言 在上一章节介绍了 8-5 在Prometheus实现Kubernetes-apiserver及Coredns服务发现 基于K8s集群内部安装的Prometheus,添加服务发现时更加方便。Prometh…

二叉树遍历原理 | 深度优先-广度优先 | 栈-队列

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 14天阅读挑战赛 文章目录二叉树遍历原理队列和栈区别深度优先遍历(DFS)前序遍历(根-左-右)中序遍历(左-根-右)后序遍历(左-右-根)广度优先遍历(BFS)逐层遍历(上-下 | …

软件研发人效提升之道,法,术,器,势

在华为的寒气传递之前,笔者已经在思考和实战如何提高研发人效。目的目标很明确: 提高软件研发人效,所谓的软件人效,简单粗暴的定义就是以最低单位人均成本,快速,高质量,高频率,安全地交付软件产…

C++笔记之bitset使用

C++笔记之bitset使用 文章目录 C++笔记之bitset使用0.进制介绍1.cppreference2.常规使用3.用法总结3.1.bitset是什么3.2.使用方法3.3.相关使用函数3.4.转换函数0.进制介绍 1.cppreference

C语言高级教程-C语言数组(五):二维(多维)数组初始化和基于数组的综合实例->帽子选购问题

C语言高级教程-C语言数组(五):二维(多维)数组初始化和基于数组的综合实例->帽子选购问题一、本文的编译环境二、二维数组的初始化三、三维数组的初始化四、使用for循环求三维数组元素值的和4.1、for循环求数组元素值…

行业周期分析的主要内容,怎么分析行业生命周期

如何分析经济周期? 很多人认为经济周期分析很难,很复杂。但是作为一个投资者,必须了解一定的经济周期分析原理。所以今天康少就用一张图来简单讲解下经济周期的分析。 一、经济周期判断1、经济趋向繁荣:普通股收益将大幅提高&am…

第07篇:巧用Spring类型转换, ConverterFormatter知识点学习。

公众号: 西魏陶渊明 CSDN: https://springlearn.blog.csdn.net 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 文章目录一、前言1.1 类型转换1.2 格式化输出二、Converter 类型转换2.1 Converter2.1.1 接口定义2.1.2 接口功能2.2 ConverterFactory2.2.1 接口定义…

java8特性,lambda表达式,简写的演变及应用

🍬博主介绍 👨‍🎓 博主主页:chad_chang的主页 ✨主攻领域:【大数据】【java】【python】【面试分析】 文章目录lambda表达式1.1.简介1.1.1.什么是Lambda?1.1.2.为什么使用Lambda1.1.3.Lambda对接口的要求1…

【Linux】特别篇--SMBus 协议

【Linux】特别篇--SMBus 协议一、SMBus 简介二、SMBus 与 I2C 区别三、SMBus协议分析3.1 符号含义3.2 SMBus Quick Command3.3 SMBus Receive Byte3.4 SMBus Send Byte3.5 SMBus Read Byte3.6 SMBus Read Word3.7 SMBus Write Byte3.8 SMBus Write Word3.9 SMBus Block Read3.1…

672页21万字智慧高速数据中心大数据平台建设方案

目 录 第1章 设计总述 6 1.1 项目概述 6 1.1.1 项目名称 6 1.1.2 建设单位概况 6 1.1.3 公司具备的优势 6 1.2 对项目的理解分析 7 1.2.1 项目现状分析 7 1.2.2 建设目标分析 10 1.2.3 建设内容分析 13 1.2.4 项目建设重难点分析 19 1.2.5 项目风险分析 22 1.2.6 各中心职能需求…

python控制台颜色输出设置

python控制台颜色输出设置 控制台输出内容的颜色有前景色与背景色 控制台的展示效果有限,并不能像前端一样炫酷,只能做一些简单的设置 原理 python终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无…

【C++笔试强训】第十天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦 &…

操作系统的地址、数据存储和大小端问题

文章目录基本概念什么是位,什么是字节?地址总线内存地址物理地址虚拟地址寻址空间存储单元CPU位数CPU寻址大端存储和小端存储原理为什么会有大小端模式的区分基本概念 什么是位,什么是字节? 位表示的是二进制位,一般…

C语言中用sizeof和strlen观察数组的变化2

目录 一.前言 二.用sizeof观察字符串数组的变化 代码 运行结果 结果解释 图解 三.用sizeof观察字符数组的变化 代码 注意 运行结果 图解 注意 证明 一.前言 数组名大部分情况下是首元素的地址,只有两种情况除外: sizeof(数组名&…