详细解读QLC SSD无效编程问题-1

2024-01-05 00:44

本文主要是介绍详细解读QLC SSD无效编程问题-1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

此前小编关于QLC SSD有过多篇文章,具体参考如下:

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • HDD与QLC SSD深度对比:功耗与存储密度的终极较量

  • QLC SSD在数据中心的发展前景如何?

  • 多维度深入剖析QLC SSD硬件延迟的来源

最近看到一篇厦门大学最近发表的关于QLC SSD无效编程的论文,有很多非常有意思的数据对比,这里分享给大家。存储随笔的论文解读,不是直接翻译,是小编先研读一遍后,再结合自己的理解再解读分享,可能讲述顺序与原始论文架构可能会有差异,如果不当之处,还望见谅。想直接阅读原文的朋友也可以后台私信关键词invalidQLC获取论文。也欢迎各位朋友给小编推荐更多有趣的论文!

在QLC闪存中采用的两步编程方法是为了应对高密度存储带来的挑战。QLC NAND闪存是一种每单元可存储4比特数据的存储技术,它将阈值电压细分为16个电压状态以实现这一目标。然而,由于每个电压状态分布非常窄且紧凑,相邻单元之间的编程干扰和早期电荷损失会对最终编程电压分布产生显著影响,从而导致高比特错误率。

图片

为了解决这个问题,3D QLC NAND闪存采用了两步编程策略:

  1. 粗略编程(Coarse Programming):首先对某一层中的一个字线(WL)进行粗略编程,将单元编程到比目标电压稍低的16个电压级别中。这个阶段的主要目的是快速地将数据写入闪存单元,但由于相邻单元间的影响,实际写入的电压可能与目标电压存在一定的偏差。

  2. 精调编程(Fine Programming):在完成同一层下一个字线或下一层对应字线的粗略编程之后,再返回来对先前粗略编程过的WL进行精调编程,将单元精确地编程到最终的目标电压状态。这种过程能够减少相邻单元间的编程干扰,并允许更准确地控制单元的电压水平,从而提高数据的可靠性

通过这种方式,虽然牺牲了一定的编程速度和增加了操作复杂性,但有效缓解了QLC NAND闪存中由于电压状态过多而引发的程序干扰问题,提高了整体的数据稳定性和存储系统的寿命。

Invalid-Programming Issue无效编程问题在3D QLC NAND闪存中,源于其采用的两步编程机制。具体来说,在该机制中,对某一层的一个字线(WL)进行精调编程之前,必须等待下一层对应位置的字线完成粗略编程。这种顺序要求导致了同一WL两次编程步骤之间存在一段实质性的等待时间

假设数据被写入WL𝑖,1并存储在缓存中,为了执行WL𝑖+1,1的粗略编程,需要缓存四个页面的数据。假定页面21已被写入缓存,并且有三个已粗略编程的新页面(8, 12, 20)现在又被更新。这会导致这三个页面在其对应的WL上失效,它们将与页面21一起被编程到WL𝑖+1,1。之后,WL𝑖,1可以进行精调编程,并从缓存中移除。但在WL𝑖,1的精调编程过程中,有一个页面已经无效,但所有四个页面都被进行了精调编程。这种情况会发生在其他字线上,第二次编程步骤中的无效页面数量可能不止一个。

图片

这一问题的核心在于,在两次编程步骤之间的时间间隔内,原本在缓存中等待精调编程的数据由于新的写入请求而被更新,即变为无效数据,但是按照原有的编程流程,这些无效数据依然会被进行精调编程,造成了时间和能源的浪费。

这篇关于详细解读QLC SSD无效编程问题-1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/571120

相关文章

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring