SSD LDPC软错误探测方案解读

上一篇文档中,基于SSD LDPC(Low-Density Parity-Check Codes)原理背景和纠错能力作了简单的介绍。

扩展阅读:

  • 关于SSD LDPC纠错能力的基础探究

  • 浅析LDPC软解码对SSD延迟的影响


本篇结合SMI发布的研究成果,通过SSD控制内部LDPC更底层的架构,来解读如何增强软错误探测能力和抗噪声干扰能力。

图片

在固态硬盘SSD模块级别,噪声源主要有以下几类:

  1. 控制器外部数据传输总线噪声:比如PCIe总线,以及与DRAM缓存和闪存芯片之间的接口。这些接口在高速数据交换过程中会产生电磁干扰,影响数据的准确传输。

  2. NAND编程/读取/擦除操作噪声:NAND闪存的P/E(编程/擦除)周期中,由于电荷迁移、漏电流等因素,尤其是在高密度QLC存储单元中,噪声和各种干扰现象会变得更严重。

  3. 辐射诱导的软错误:宇宙射线等放射性粒子对电子设备中的存储单元造成单粒子翻转(Single Event Upset, SEU),导致数据位错误。

  4. 其他噪声:除了上述明确提及的噪声源外,还有诸如电源波动、温度变化、器件老化等其他不确定因素产生的噪声。

为了对抗这些噪声导致的数据错误,SSD模块采用了ECC技术。ECC能够检测和纠正部分错误,通过将数据编码成带有冗余信息的编码字(codewords),可以区分出可纠正错误和不可纠正错误,同时也能够识别出可检测错误和未被检测出的错误。

在固态存储中,数据通常会被划分为多个数据块(Chunks),每个数据块除了包含用户数据外,还会附加额外的信息,如HE2E、元数据(Meta)、种子(Seed)、CRC校验值以及LDPC奇偶校验码。

图片

LDPC奇偶校验完整性检查是一个确保基于LDPC编码的数据在写入或读取过程中不遭受意外损坏的关键环节。在数据写入NAND闪存前,首先需要对用户数据和相关辅助信息进行LDPC编码生成相应的奇偶校验位,这些奇偶校验位包含了足以恢复潜在错误的信息。LDPC编码器本身包含了大量的组合逻辑和寄存器结构,甚至包括只读存储器(ROM)部分,以实现复杂而高效的编码过程。

图片

在实际操作中,由于宇宙射线等自然现象引发的单粒子翻转(Single Event Upset, SEU)可能会导致LDPC奇偶校验位出现错误。为了避免这种情况导致的无效写入,必须在数据从控制器传输至NAND的过程中对LDPC奇偶校验的完整性进行即时检查。如果检测到奇偶校验位错误,则跳过编程指令,避免将错误的奇偶校验信息写入NAND,而是重新进行编码后再尝试写入。

此外,在数据读取阶段,同样会进行多重验证以确保数据的准确无误。读取的数据不仅通过LDPC解码器来尝试纠正潜在的软错误,同时还需要通过CRC校验来验证整个数据块的完整性。另外,介质端到端(Media End-to-End, E2E)信息的比较也是重要的一环,通过对比原始写入时记录的E2E信息与当前读出的数据进行一致性校验,确保即使是在错误的位置上但内容仍然可纠正的数据块能够被正确识别和处理。

在SSD控制器设计中,LDPC解码器作为一个强大的错误纠正工具,用于修复在数据路径中发生的大部分软错误。通过LDPC编码和解码技术,可以有效地检测并修复由噪声或者其他不可预见因素引起的错误位。

图片

当错误被检测到时,会执行读重试操作,这是高效错误恢复步骤的一部分,体现了LDPC解码器在纠正偶尔错误方面的灵活性和效率。除了LD

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mitmproxy代理

文章目录 mitmproxy1. 网络代理2. 安装3. Https请求3.1 启动mitmproxy3.2 获取证书3.3 配置代理3.4 运行测试 4. 请求4.1 读取请求4.2 修改请求4.3 拦截请求 5. 响应5.1 读取响应5.2 修改响应 6. 案例:共享账号6.1 登录bilibili获取cookies6.2 在代理请求中设置cook…

Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!

内容概要 BeanDefinitionRegistry接口提供了灵活且强大的Bean定义管理能力,通过该接口,开发者可以动态地注册、检索和移除Bean定义,使得Spring容器在应对复杂应用场景时更加游刃有余,增强了Spring容器的可扩展性和动态性&#xf…

哪里下载Mac上最全面的系统清理工具,CleanMyMac X4.15中文版永久版资源啊

哪里下载Mac上最全面的系统清理工具,CleanMyMac X4.15中文版永久版资源啊,CleanMyMac X4.15中文版是一款全面的Mac系统优化工具。它能够扫描、检测并清理不需要的文件和应用程序,优化内存使用和磁盘空间,提高Mac的性能表现。此外&…

基于Springboot+Layui餐厅点餐系统

一、项目背景 在互联网经济飞速发展的时代,网络化企业管理也在其带领下快速兴起,开发一款自主点餐系统会受到众多商家的青睐。现如今市场上的人力资源价格是非常高昂的,一款自主点餐系统可以减少餐厅的人力开销,将服务员从繁忙的…

传输请求(同服务器不同Client 不同服务器)

Landscape: 1. 同服务器不同Client间传输 100配置完需要在UT环境- DEV200测试的场合: 100生成的传输请求无需释放,直接在DEV200 Tcode SCC1接收即可(S4 hana: SCC1N)输入传输请求号,指定目标…

08 |「Fragment 」

前言 实践是最好的学习方式,技术也如此。 文章目录 前言一、简介1、是什么2、为什么要有 Fragment3. Fragment 详细解释 二、Fragment 与 Activity 的直观理解三、Fragment 的创建1、Fragment 的创建方式2、Fragment 的增删替查1) 替换(常见&…

Linux - 进程控制

1、进程创建 1.1、fork函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程&#xff1b; #include <unistd.h> pid_t fork(void); 返回值&#xff1a;自进程中返回0&#xff0c;父进…

融资项目——OpenFeign的降级与熔断

当一个微服务调用其他微服务时&#xff0c;如果被调用的微服务因各种原因无法在规定时间内提供服务&#xff0c;则可以直接使用本地的服务作为备选&#xff0c;即进行降级熔断。 如之前所提到的微服务为例&#xff1a; 如果希望实现降级熔断&#xff0c;可以在本地创建一个实现…

Spring事务注解@Transactional的流程和源码分析

Spring事务简介 Spring事务有两种方式&#xff1a; 编程式事务&#xff1a;编程式事务通常使用编程式事务管理API实现&#xff0c;比如Spring提供的PlatformTransactionManager接口&#xff0c;使用它操控事务。声明式事务&#xff1a;注解式事务使用AOP&#xff08;面向切面…

【C++从0到王者】第五十站:B树

文章目录 一、内查找与外查找1.内查找2.外查找 二、B树概念三、B树的插入1.B树的插入分析2.B树插入总结3.插入代码实现4.B树满树和最空时候的对比5.B树的删除6.遍历B树7.B树的性能分析 一、内查找与外查找 1.内查找 像我们之前所用的在内存中的查找就是内查找 种类数据格式时…

IEEE754标准的c语言阐述,以及几个浮点数常量

很多年前&#xff0c;调研过浮点数与整数之间的双射问题&#xff1a; win7 intel x64 cpu vs2013 c语言浮点数精度失真问题 最近重新学习了一下IEEE754标准&#xff0c;也许实际还有很多深刻问题没有被揭示。 计算机程序设计艺术&#xff0c;据说这本书中也有讨论。 参考&…

如何将字体添加到 ONLYOFFICE 桌面编辑器8.0

作者&#xff1a;VincentYoung 为你写好的文字挑选一款好看的字体然而自带的字体列表却找不到你喜欢的怎么办&#xff1f;这只需要自己手动安装一款字体即可。这里教你在不同的桌面操作系统里的多种字体安装方法。 ONLYOFFICE 桌面编辑器 ONLYOFFICE 桌面编辑器是一款免费的办…

【C语言】终の指针(前篇)

个人主页点这里~ 指针初阶点这里~ 指针初阶2.0点这里~ 指针进阶点这里~ 终の指针 一、回调函数二、qsort函数1、整形比较2、结构数据比较①结构体②-> 的使用③结构数据比较 一、回调函数 回调函数就是⼀个通过函数指针调用的函数。 把一个函数的指针作为参数传递给另一…

@ResponseStatus

目录 概述&#xff1a; 用途&#xff1a; 参数&#xff1a; 注意事项&#xff1a; 自定义异常类&#xff1a; 底层原理&#xff1a; 概述&#xff1a; 在 Spring MVC 中&#xff0c;我们有很多方法来设置 HTTP 响应的状态码其中最直接的方法&#xff1a;使用 ResponseSt…

思维题(蓝桥杯 填空题 C++)

目录 题目一&#xff1a; ​编辑 代码&#xff1a; 题目二&#xff1a; 代码&#xff1a; 题目三&#xff1a; 代码&#xff1a; 题目四&#xff1a; 代码&#xff1a; 题目五&#xff1a; 代码&#xff1a; 题目六&#xff1a; 代码七&#xff1a; 题目八&#x…

分享关于如何解决系统设计问题的逐步框架

公司广泛采用系统设计面试&#xff0c;因为在这些面试中测试的沟通和解决问题的技能与软件工程师日常工作所需的技能相似。面试官的评估基于她如何分析一个模糊的问题以及如何逐步解决问题。测试的能力还包括她如何解释这个想法&#xff0c;与他人讨论&#xff0c;以及评估和优…

外包干了2年,技术退步明显

先说一下自己的情况&#xff0c;研究生&#xff0c;19年进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

docker部署若依项目

目录 目录 一、搭建局域 二、redis安装 1.创建目录 2. redis.conf修改 三、MySQL安装 1. 安装 2. 设置远程连接 3. 创建数据库 四、若依后端项目搭建 1. 切换到家目录 2. 上传jar包 3. 上传Dockerfile文件 4. 构建镜像 5. 运行容器 6. 查看运行情况 7. 测试(自己…

mysql bug( InnoDB: Error number 22),表突然不能读取

mysql bug&#xff08; InnoDB: Error number 22&#xff09;&#xff0c;表突然不能读取 bug最开始的bug&#xff1a;表突然不能读取关闭mysql容器&#xff0c;再次重启失败 解决方案不重建容器的几种可能措施重建容器重建如果懒得打命令或者忘记命令可能的run bug&#xff1a…

Hololens 2应用开发系列(2)——MRTK基础知识及配置文件配置(上)

Hololens 2应用开发系列&#xff08;2&#xff09;——MRTK基础知识及配置文件配置 一、前言二、MRTK基础知识2.1 MRTK概述2.2 MRTK运行逻辑2.3 MRTK配置文件介绍2.4 MRTK服务 三、配置文件使用3.1 总配置文件3.2 相机配置3.3 其他配置 参考文献 一、前言 在前面的文章中&…