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

作者通过SimpleSSD仿真模型,采用SLC+QLC混合模式来开展进一步的验证工作。评估过程中,当写入请求到达固态硬盘时,首先会被写入缓存(DRAM),然后才被回写到NAND。文中引入了一个名叫做LRU(Least Recently Used)识别数据热度,以便将热点数据和冷数据分别写入SLC和QLC区域。与页面大小对齐的写入请求会被立即写入SSD,而小于16KB的IO请求则暂时保留在缓存等待与后续的IO聚合。

图片

同时,为了对比不同的workload差异,论文中提供了10个workload压力模型。

图片

在QLC NAND闪存中,由于需要等待一层中的所有字线(WLs)完成粗略编程后才能进行精细编程,因此这个时间间隔在写操作过程中是无法忽略的。研究结果显示,QLC闪存中两次编程步骤间的平均时间要远大于3D TLC闪存中编写一层所需的时间。

图片

不同工作负载之间的时间间隔表现出显著变化,这主要是由于这些工作负载间写请求平均大小的巨大差异所导致。例如,Src2_2和Proj_0这类具有与页面大小相同的小型子请求的工作负载,在数据立即被写入底层NAND闪存的情况下,其经过时间较短。大多数工作负载的平均经过时间接近50ms,最坏情况下甚至可能超过300ms。在这样长的时间段内,由于数据更新操作,发生无效编程问题的可能性非常高。

论文提到影响无效编程严重程度的四个关键因素:

  • 缓存大小

  • Block块大小(即一个块中包含的页数)

  • Open Block计数(SSD中可以并行写入的最大块数)

  • LRU长度(用于区分冷热数据)

通过改变评估存储系统的这些参数,研究发现无效编程问题在基于3D QLC的存储系统中普遍存在。具体来说,两次编程步骤之间被无效化的页面数量定义为“Invalid Page Count”,完成第一步编程的页面数量定义为“Page Count”,而无效比例(Invalid Ratio)则根据这两个指标计算得出。

图片

此外,文中还提出另外一个参数:“回写比例”。所有写请求所涉及的总页数为“Request Page Count”,即请求页面计数。同时,写到底层NAND闪存的实际页数定义为“Write Back Page Count”。

图片

这个写回比例有助于量化存储系统处理写请求时,实际需要对NAND闪存执行编程操作的数据量,以及缓存系统如何有效地吸收和管理这些写入数据,从而影响整体性能和闪存寿命。随着缓存大小、块大小以及开放块数量等参数的变化,写回比例也会发生变化,这会直接影响无效编程的发生情况

缓存大小对无效编程(Invalid Programming)也有非常大的影响。在3D QLC NAND闪存中,由于采用两步编程规则,小于Page Size的IO请求首先被写入缓存,随后回写到底层存储设备。当缓存达到其容量上限时,会使用LRU(Least Recently Used)替换算法来淘汰较冷数据,并将其写回到闪存内存中。

图片

实验结果表明,在大多数情况下,随着缓存大小的增加,无效比率(Invalid Ratio)也随之增长。这是因为更大的缓存可以容纳更多的写请求,导致更少的数据需要写到底层闪存中。

图片

对于诸如Prxy_0和Wdev_0这类平均IO请求小于Page Size的工作负载来说,部分写请求会被缓存吸收,写入NAND的比例较低。

简而言之,缓存的大小与无效比率的增长密切相关,缓存越大,能暂存的待处理冷数据越多,进而可能导致无效编程现象增多

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

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

相关文章

【Unity中的A星寻路】Navigation导航寻路系统四大页签详解

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

几种读nii图像方法的轴序比较

读 .nii / .nii.gz 图像并转成 numpy 可用 medpy.io、nibabel、itk、SimpleITK 几种方法,然而几种方法读出来的轴序有出入,本篇比较此几种方法。 Datum 所用数据来自 verse,经 iTomxy/data/verse/preprocess.py 预处理,朝向和轴…

【观察】Aginode安捷诺:坚守“长期主义”,服务中国数字经济

毫无疑问,随着整个社会加速数字化转型,尤其是5G、人工智能、大数据等技术兴起,以及智慧医疗、智慧金融、智能制造等应用加速落地,算力网络在经济社会发展中扮演了愈来愈重要的角色,成为支撑数字经济蓬勃发展的“新引擎…

根本记不住MySQL进阶查询语句

1 MySQL进阶查询 1.1 MySQL进阶查询的语句 全文以数据库location和Store_Info为实例 ---- SELECT ----显示表格中一个或数个字段的所有数据记录 语法:SELECT "字段" FROM "表名"; select 列名 from 表名 ; ---- DISTINCT ----不显示重复的数…

高清网络视频监控平台的应用-城市大交通系统视联网

目 录 一、应用需求 二、系统架构设计 三、功能介绍 1.实时视频监控 2.云台控制 3.语音功能 4. 录像管理与回放 5.告警联动 6.多种显示终端呈现 (1)CS客户端 (2)web客户端 (3&#xf…

seo分享:慎重使用蜘蛛池

其实要提高搜索引擎蜘蛛的来访次数,唯一的方法还是要通过网站本身的内容更新。频繁更新有质量的内容,才能够提高蜘蛛的来访次数。如果本身内容更新不多,外部引流的蜘蛛过多,最终发现没什么内容索引,蜘蛛来访的次数也会…

【竞技宝】DOTA2:tundra宣布解散旗下阵容 whitemon留队

北京时间2024年1月4日,在DOTA2ESL吉隆坡站的比赛结束后,最近将要迎来的是BB Dacha别墅杯的预选赛,目前随着AR官宣新赛季阵容,国内一线队伍都已经全部公布了大名单。而国外还有一些队伍仍在进行人员调整,其中就包括前TI…

Strict MIME type checking is enforced for module scripts per HTML spec.

目录 前言错误信息如下:前言 最近使用docker打包Nginx和vue 为镜像文件,启动镜像时报错 错误信息如下: index89886.js:1 Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Stri…

MySQL之、CRUD、函数及union查询(实施必会)

文章目录 前言一、CRUD1.1SELECT(查询)1.2INSERT(新增)1.3UPDATE(修改)1.4DELETE(删除) 二、函数2.1常见函数2.1.1字符函数2.1.2数字函数2.1.3日期函数 2.2流程控制函数(重点)2.3聚合函数 三、union与union all思维导图: 前言 本篇博主给大家带来MySQL之、CRUD、常…

搜维尔科技:ART光学跟踪系统在工业VR/AR领域的应用

ART公司成立于1999年,拥有38万员工遍布全球,ART一直致力于红外线光学跟踪系统的研发与生产,并将先进的科技应用于产品研发,产品制造,市场营销,产品销售以及优秀的客户支持。主要向客户提供高端的虚拟现实跟…

MySQL Enterprise版本各系统安装包下载

一、官方下载地址 oracle下载地址 https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 使用oracle账号登录进去 Category选择Download Package(下载安装包),搜索栏输入mysql Enterprise关键字点search进行搜索。选项结果第一个MySQL Enterprise Edition&a…

JAVA的引用与C++的指针有什么区别

JAVA的引用与C的指针有什么区别 1. Java值类型与引用类型1.1 变量初始化1.2 变量赋值1.3 函数传参 2. Java数据存储方式2.1 Java局部变量&&Java方法参数2.2 Java数组类型引用和对象2.3 String类型数据 3. Java引用类型3.1 强引用3.2 软引用3.3 弱引用3.4 虚引用 4. JAV…

MySQL8.0安装教程

Mysql安装教程 1.Mysql下载 进入官网https://www.mysql.com/进行下载: 2.Mysql安装 双击文件进行安装,选择默认安装方式: 这里列出了五种安装类型: Developer Default:默认安装类型;Server only&#x…

在Ubuntu22.04上部署Stable Diffusion

在AI绘画软件领域Stable-Diffusion(简称SD)在开源领域绝对是不二之选,他的插件方式可以让此软件具有更多的功能,开发者社群为此提供了大量免费高质量的外接预训练模型(fine-tune)和插件,并持续维…

Linkage Mapper 各工具参数详解——Barrier Mapper

【小白一学就会无需其他教程】此文档用于解析使用Linkage Mapper 各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。 从以下链接中获取内容&#…

Linux文件fd剖析

学习之前,首先要认识什么是文件? 空文件也是要在内存中占据空间的,因为它还有属性数据。文件 属性 内容文件操作 对内容 对属性 或者对内容和属性的操作标定一个文件的时候,必须使用:路径文件名,文件具…

交换机03_基本配置

一、思科设备的命令行基础 1、进入设备的命令行界面 设备支持命令行 去查看设备上的接口,是否有console口需要有console线 右击此电脑设备管理器需要通过超级终端软件进行连接,如putt、secret CRT、xshell等软件 (1)思科模拟器…

Python从入门到精通之元类

系列 Python从入门到精通之安装与快速入门-CSDN博客 Python从入门到精通之基本数据类型和变量-CSDN博客 Python从入门到精通之集合(List列表、Tuple元组、Dict字典、Set)-CSDN博客 Python从入门到精通之条件语句、循环语句和函数-CSDN博客 Python从…

02、Kafka ------ 配置 Kafka 集群

目录 配置 Kafka 集群配置步骤启动各Kafka节点 配置 Kafka 集群 启动命令: 1、启动 zookeeper 服务器端 小黑窗输入命令: zkServer 2、启动 zookeeper 的命令行客户端工具 (这个只是用来看连接的节点信息,不启动也没关系&#…

Python从入门到网络爬虫(面向对象详解)

前言 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本…