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

2024-01-05 09:36

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

图片

数据块大小Block Size对无效编程(Invalid Programming)比率的影响。研究范围内Block Size大小从128 Pages到2048 Pages不等。实验结果显示,随着块大小的增加,无效比率也呈现上升趋势,但增长速率较小。

这种现象的原因在于,每个Open Block的最后一部分页面可以立即进行精调编程而无需等待,因为这些页面在第一步粗调编程操作中没有后续页面。当缓存大小和Open Block数量固定时,单个Block中的Pages数量增多将会降低“无需等待”进行精调编程的Page数量,从而导致无效比率增加。然而,能够立即精调编程的页面仅占块内总页面的一小部分,因此即使块大小增大,无效比率也不会有显著变化。

在NAND闪存阵列中,同时等待精调编程的最大页面数量取决于可以并行写入Block(即Open Block)的数量。一般来说,等待第二步精调编程的同时进行的页面数量越多,无效比率就越高。

图片

实验结果显示,在不同Open Block数量(从4个到64个)下,各种工作负载的无效比率表现各异。对于诸如Mds_0和Prxy_0这样的工作负载,随着Open Block数量的增加,无效比率显著上升。这是因为更多Open Block数量意味着在相同时间内写入单个开放块的数据量减少。然而,在其他一些工作负载上,当开放块数量从4个增加到16个时,无效比率也可能下降。

在NAND闪存系统中,LRU列表用于区分热数据和冷数据,从而决定数据应被放置到SLC还是QLC存储区域。相比于热数据,写入QLC的冷数据更新频率更低,对无效编程问题的敏感度也较低。

图片

通过延长LRU列表的长度,更多的数据将被分类为热数据并随后写入SLC,这会导致无效比率显著下降。实验结果显示,在不同LRU长度(从32到512)下,对于大多数工作负载,随着LRU长度的增加,无效比率会降低。

图片

值得注意的是,对于Proj_0工作负载,其无效比率略有上升。这是因为随着LRU长度的扩展,粗调编程页面所需的平均时间也会延长,这使得这些页面更有可能提前失效。

在3D QLC NAND闪存中,采用两步编程策略,一次会对四个页面同时进行编程。因此,在第二次编程步骤中,无效页面的数量可能从0到4不等

图片

实验结果显示,不同工作负载表现出不同的行为特征,但对于所有的工作负载来说,在第二次编程步骤中有相当大比例的WL存在无效页面。例如,在Web_1工作负载中,少于50%的WL在第二次编程时其四个页面都是有效的。而在遭受无效编程的WL中,大多数WL有一到两个页面在精细编程之前就被无效化了。然而,也有一些WL的情况是所有四个页面都被无效化。

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



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

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据