当前位置: 首页 > news >正文

QLC SSD:LDPC纠错算法的优化方案

随着NAND TLC和QLC出现,LDPC也在不断的优化研究,提升纠错能力小编看到有一篇来自Microchip发布的比较详细的LDPC研究数据,根据自己的理解分析解读给大家,如有错误,请留言指正!

文档中测试LDPC(Low-Density Parity-Check)码是为了评估其在不同配置下对数据错误的有效纠正能力,并优化现代NAND设备所需的错误纠正解决方案。实验针对两种不同的码率(Code Rate, CR)进行了测试:一种为0.919,另一种为0.871,这两种码率下的数据块分别有不同的数据和校验位组合。

  • FEC(Forward Error Correction)块是一种数据结构,其中不仅包含用户实际要存储或传输的数据部分,还包含了用于错误检测和纠正的LDPC(Low-Density Parity-Check)校验位。在NAND闪存等存储技术中,通过添加这些校验信息可以提高数据的可靠性和鲁棒性。

  • 码率(Code Rate, CR)是一个关键参数,它定义了有效数据量与整个编码块大小之间的比率。具体而言,CR等于数据大小除以(数据大小加上校验位大小)。例如,如果一个FEC块中有4352字节数据和384字节的LDPC校验位,则其码率为0.919,这意味着该编码方案中大约92%的空间被用来存储有效数据,而剩余8%的空间用于提供错误修正能力。

  • Bit-Error Rate(BER)描述的是在一个数据块内,每一个比特发生错误的概率是相同的。也就是说,在进行错误模拟时,每比特都独立且具有相同概率地发生错误。

  • Error Rate(Err)则是在一组数据块中,确保每个数据块内部含有相同数量的错误比特,这是一种不同的错误插入模型,关注的是整体错误分布的均衡性,而非单个比特的独立性。

  • Frame-Error Rate(FER)则是指经过LDPC译码后,一个FEC块出现错误的概率,即未能正确解码的FEC块所占的比例。它是衡量纠错编码系统性能的一个重要指标,理想情况下,FER应该尽可能低,以确保数据传输或存储过程中的高可靠性。

对于4k字节的数据块,实验采用了以下几种配置:

  1. 4352字节数据,4736字节数据和校验位,CR为0.919;

  2. 4352字节数据,4992字节数据和校验位,CR为0.871。

同样,对于16k字节的数据块,其大小恰好是4k字节块的四倍,并且也有相应的测试配置:

  1. 17408字节数据,18952字节数据和校验位,CR仍为0.919;

  2. 17408字节数据,19968字节数据和校验位,CR保持在0.871。

实验使用了一种通用的最小和解码算法对这些LDPC码词进行了解码,并对比了不同码率、不同数据块大小下的帧错误率(FER)与比特错误率(BER)的关系。

图片

从LDPC FER与BER对比的图表(红色曲线代表CR为0.919,蓝色曲线代表CR为0.871,虚线表示4k字节块,实线表示16k字节块)中可以看出:

  • 16k字节块的“瀑布曲线”更为陡峭,表明在同等BER水平下,16k字节块的FER表现更好,即需要更高的BER才会导致解码失败,意味着较大的数据块在采用相同LDPC编码时能更有效地抵抗随机比特错误。

图片

此外,为了公平比较不同大小数据块的FER,将4k字节块的结果转换为等效于16k字节的FER值,通过公式16keq = 1-(1-FER)^4进行调整,结果显示在特定BER下(如BER=1e-4),16k等效FER的表现比原始4k字节块约提升了15%

BER 4k Byte Error PDF 是关于4k字节数据块在不同比特错误率(Bit Error Rate, BER)下的错误分布概率密度函数(Probability Density Function, PDF)的图表。这个图表详细描述了在给定BER水平下,4k字节数据块中错误比特数目的概率分布状况。

图片

BER模型表明,在分析每块数据时,其内部错误遵循高斯分布(Gaussian distribution),即随着BER的增加,错误数目的分布宽度也随之扩大。这意味着在较高的BER值下,数据块中可能会遇到更多数量的错误比特,分布范围更广。此外,对于16k字节的数据块,即便在相同的BER条件下,它们的错误分布更为紧密,即错误数目落在某特定区间的概率更高,这是因为在较大的数据块中,即使总体错误率不变,单个比特出错的概率会因为数据块内比特总数的增加而变得更加均匀分布

下图不同码率对应的不同数据块大小的平均迭代次数随BER变化的曲线,可以帮助我们观察并量化不同条件下的纠错效率。在选择最优LDPC编码方案时,除了考虑平均迭代次数外,还需要满足其他性能要求,比如软触发率阈值,通常设定在FER(Frame Error Rate)为1e-2到1e-6之间。最优解决方案应当是在满足FER要求的同时,具有最低的平均迭代次数,从而实现最大的数据传输或存储吞吐量。

图片

“LDPC FER vs. Err (Scaled)”图表显示:

  • 在BER指标下,尤其是在BER较高区域,16k字节和4k字节数据块的性能差异较大。

  • 但在统一错误率模型下,相较于按照BER标准评价时的情况,4k字节和16k字节数据块在处理相同数量错误比特时的性能差距有所缩小,这表明在某些应用场景下,特别是在存在均匀分布错误的情况下,16k字节数据块可能并不会因为其尺寸增大而带来明显的纠错劣势。同时这也体现出LDPC编码在处理不同类型的错误模式时具有较强的适应性和灵活性。

图片

根据提供的样本NAND闪存错误分布的分析,揭示了实际NAND闪存设备中错误出现的统计特性。Y轴表示错误发生的概率,X轴表示错误率。每个数据块中的错误数量等于错误率乘以数据块大小。典型特征是大多数数据块的错误率都很低,但有一小部分数据块存在较高的错误率ÿ

相关文章:

QLC SSD:LDPC纠错算法的优化方案

随着NAND TLC和QLC出现,LDPC也在不断的优化研究,提升纠错能力。小编看到有一篇来自Microchip发布的比较详细的LDPC研究数据,根据自己的理解分析解读给大家,如有错误,请留言指正! 文档中测试LDPC(Low-Density Parity-Check)码是为了评估其在不同配置下对数据错误的有效…...

【Flutter 面试题】main()和runApp()函数在Flutter的作用分别是什么?有什么关系吗?

【Flutter 面试题】main()和runApp()函数在Flutter的作用分别是什么?有什么关系吗? 文章目录 写在前面解答补充说明 写在前面 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主&…...

ChatGPT高效提问——说明提示技巧

ChatGPT高效提问——说明提示技巧 现在,让我们开始体验“说明提示技巧”(IPT, Instructions Prompt Technique)和如何用它生成来自ChatGPT的高质量的文本。说明提示技巧是一个通过向ChatGPT提供需要依据的具体的模型的说明来指导ChatGPT输出…...

从零学算法41

41.给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3 示例 2: 输入:nums […...

FPGA高端项目:FPGA基于GS2971的SDI视频接收+OSD动态字符叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用…...

UML-类图详解

UML中基本概念说明 UML类图中关系连接线说明 ​ UML类图说明 号表示public、-表示表示private、#表示protected ​ UML类关系详解 泛化(Generalization)关系 简单的讲就是类之间的继承关系。在UML中,泛化关系用空心三角形实线来表示&…...

Python 快速获取PDF文件的页数

有时在处理或打印一个PDF文档之前,你可能需要先知道该文档包含多少页。虽然我们可以使用Adobe Acrobat这样的工具来查看页数,但对于程序员来说,编写脚本来完成这项工作会更加高效。本文就介绍一个使用Python快速获取PDF文件页数的办法。 安装…...

uniapp开发小程序使用x-www-form-urlencoded; charset=UTF-8 编码格式请求案例

使用x-www-form-urlencoded,header要放在前面,第一行位置。 uni.request({ header: { content-type: application/x-www-form-urlencoded; charsetUTF-8},url: ,method:POST, //请求方式POST\GETdata:that.loginData,success: funct…...

酷开科技服务升级,酷开系统给消费者更好的使用体验!

看电视的时候你是不是也会有选择困难症?不知道要看哪个?不知道如何操作?体验不够顺畅?现在,有了酷开系统9.2,这些通通不再是问题!酷开科技,一直致力于服务升级,给消费者更…...

【leetcode热题】单词拆分

难度: 中等通过率: 33.7%题目链接:. - 力扣(LeetCode) 题目描述 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#…...

【论文阅读】MC:用于语义图像分割的深度卷积网络弱监督和半监督学习

【论文阅读】MC:用于语义图像分割的深度卷积网络弱监督和半监督学习 文章目录 【论文阅读】MC:用于语义图像分割的深度卷积网络弱监督和半监督学习一、介绍二、联系工作三、方法四、实验结果 Weakly- and Semi-Supervised Learning of a Deep Convolutio…...

读书·基于RISC-V和FPGA的嵌入式系统设计·第3章

72.8051单片机的弊端和指令集架构CISC的缺点 76.RV指令集的特征(⭐) 特权架构和特权指令集是相关但不完全相同的概念。 特权架构(Privileged Architecture)指的是计算机体系结构中用于实现特权级操作的硬件和软件机制。特权架构定…...

本地项目推送到腾讯云轻量应用服务器教程(并实现本地推送远程自动更新)

将本地项目上传到腾讯云轻量应用服务器并实现后续的推送更新,具体步骤如下: 在本地项目目录下初始化 Git 仓库: cd 项目目录 git init将项目文件添加到 Git 仓库并提交: git add . git commit -m "Initial commit"在…...

MacOS安装反编译工具JD-GUI 版本需要1.8+

Java Decompiler http://java-decompiler.github.io/ 将下载下来的 jd-gui-osx-1.6.6.tar 解压,然后将 JD-GUI.app 文件拷贝到 Applications 应用程序目录里面 1.显示包内容 2.找到Contents/MacOS/universalJavaApplicationStub.sh 3.修改sh文件 内容修改为下面…...

计算机大数据毕业设计-基于Flask的旅游推荐可视化系统的设计与实现

基于Flask的旅游推荐可视化系统的设计与实现 编程语言:Python3.10 涉及技术:FlaskMySQL8.0Echarts 开发工具:PyCharm 摘要:以Pycharm为旅游推荐系统开发工具,采用B/S结构,使用Python语言开发旅游景点推…...

java实现pdf转word

java实现pdf转word 前言pom文件启动入口过滤器对象ConvertPdfToWordWithFlowableStructure转换实现类 前言 1.java实现pdf转word。 2.纯免费开源。 3.pdf解析完会生成word文件和图片文件夹。 4.无页码限制,文本类型生成到word中,图片生成到图片文件夹中…...

【操作系统概念】 第4章:线程

文章目录 0.前言4.1 概述4.1.1 多线程编程的优点 4.2 多线程模型4.2.1 多对一模型4.2.2 一对一模型4.2.3 多对多模型 4.3 线程库4.4 多线程问题4.4.1 系统调用fork()和exec()4.4.2 取消4.4.3 信号处理4.4.4 线程池4.4.5 线程特定数据 0.前言 第3章讨论的进程模型假设每个进程是…...

STM32/GD32——I2C通信协议

芯片选型 Ciga Device — GD32F470系列 通讯规则 I2C协议(或称IIC)是由飞利浦(现在的恩智浦半导体)公司开发的一种通用的总线协议。它使用两根线(时钟线和数据线)来传输数据,支持多个设备共享…...

Apache Paimon 使用之Creating Catalogs

Paimon Catalog 目前支持两种类型的metastores: filesystem metastore (default),在文件系统中存储元数据和表文件。 hive metastore,将metadata存储在Hive metastore中。用户可以直接从Hive访问表。 1.使用 Filesystem Metastore 创建 Cat…...

IntelliJ IDEA分支svn

IntelliJ IDEA分支svn 【为何使用分支】 项目开发中经常会遇到这种情况,项目中功能开发完上线后,新的需求又来了,风风火火的在项目里开发, 突然有一天测试说有个很致命的bug需要紧急修改上线,完蛋了,原来…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...