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

news2024/10/5 17:27:30

在ZNS SSD设计中,也有很多的挑战

  1. Open Zones 对写入缓冲区的需求保持大量的 open zones(例如 1K+)会增加对带宽的需求,并要求控制器提供足够的缓冲空间来管理并发写入请求。这需要较大的高带宽写入缓冲区以降低延迟并优化性能。

  2. Charge-trapping QLC NAND 的编程需求由于 charge-trapping QLC NAND 需要两次编程操作和两次数据传输,以及 要解决CTF相邻位之间的耦合效应可能导致编程电压分布不均匀引入的N WL gaps,因此在处理写入请求时可能需要更大的缓冲空间。这会进一步增加对写入缓冲区的需求。

    图片

    这也是为什么FG架构QLC NAND SSD性能比CTF架构QLC NAND SSD性能要好(具体介绍请参考:浅析不同NAND架构的差异与影响)

    图片

    尽管存在这些问题,但 charge-trapping QLC NAND 的高密度和低成本优势使其成为大容量存储应用的理想选择

  3. 写入冲突管理:为了处理 write-write collision 和 write-erase collision,SSD 控制器需要额外的缓冲空间来存储等待写入的数据。这导致了对写入缓冲区容量的需求增大。

  4. SSD 控制器内部 SRAM 的限制:通常情况下,SSD 控制器内部的 SRAM 容量有限(通常为 8-16MB),可能不足以满足所有 open zones 的数据操作和编程缓冲需求。

  5. 使用 DRAM 的限制:虽然可以考虑使用 DRAM 作为编程缓冲区,但 DRAM 带宽有限,并且受到超级电容的影响。此外,DRAM 的成本也相对较高。

  6. RAID 纠错码 (parity) 缓冲区大小和容量开销:在使用 RAID 纠错机制的环境中,需要预留额外的空间用于存放 parity 数据。这增加了对 SSD 控制器资源的需求,并可能导致容量上的开销。

为了解决以上问题,业内有这么一种做法,使用 2-stage 缓存(SRAM+DRAM)处理数据操作和编程的方案

1.SRAM 和 DRAM 的作用:

  • SRAM:用于 RAID 编码、FW 元数据插入以及 RAID 纠错码 (parity) 缓冲区。

  • DRAM:用作 SLC 或直接编程 QLC 的数据缓冲区。

2.支持 1K+ Open/Active Zone:

  • SLC Copyback:这种方法将待编程的数据先写入到 SLC 区域,然后再从 SLC 区域复制回 QLC 区域。由于 SLC 的编程速度较快,可以减少整体的编程时间。然而,这种策略需要额外的硬件资源来监控 SLC 块的 RBER,并确保数据的可靠性。

    图片

  • SLC Backup:这种方法将待编程的数据直接存储在 DRAM 中,然后一次性写入到 QLC 区域。虽然这种方法可能会消耗更多的 DRAM 带宽,但它避免了在不同区域之间进行数据移动,简化了数据管理过程。

图片

在不同的Zone的大小,对Open Zone数量和RAID配置有不同的需求。ZNS 和 Die-block 结合使用可以带来一些优势,包括更好的数据组织、更高的 I/O 性能以及更有效的资源管理。ZNS 可以将存储设备划分为一系列连续的逻辑分区(zones),每个 zone 具有预设的最大容量。这种设计有利于顺序写入,从而降低写入放大效应和延迟。但也存在一些潜在挑战,如如何有效地分配和管理 zones,如何平衡不同 dies 或 LUNs 之间的负载等

小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 浅析不同NAND架构的差异与影响

  • SSD基础架构与NAND IO并发问题探讨

  • 字节跳动ZNS SSD应用案例解析

  • SSD数据在写入NAND之前为何要随机化?

  • 深度剖析:DMA对PCIe数据传输性能的影响

  • NAND Vpass对读干扰和IO性能有什么影响?

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

  • NVMe SSD:ZNS与FDP对决,你选谁?

  • 如何通过优化Read-Retry机制降低SSD读延迟?

  • 关于硬盘质量大数据分析的思考

  • 存储系统性能优化中IOMMU的作用是什么?

  • 全景解析SSD IO QoS性能优化

  • NVMe IO数据传输如何选择PRP or SGL?

  • 浅析nvme原子写的应用场景

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

  • 浅析PCIe链路LTSSM状态机

  • 浅析Relaxed Ordering对PCIe系统稳定性的影响

  • 实战篇|浅析MPS对PCIe系统稳定性的影响

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

  • 存储随笔《NVMe专题》大合集及PDF版正式发布!

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

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

相关文章

【功能更新】HelpLook AI能力数据分析能力强化提升!

功能更新速览👇 AI能力: 1.AI搜索支持设置为手动查看 2.新增文心一言3.5机器人模型 3.支持多轮对话 数据分析: 1.搜索词新增对应点击文章的数据统计 2.支持统计内容创建作者及相关数据 3.新增操作日志 4.新增获取留资列表API AI能力 1.AI搜索支持…

【数组Array】力扣-5 最长回文子串

目录 题目描述 题解labuladong 题目描述 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab"…

C++系列第八篇 数据类型下篇 - 复合类型(指针及动态内存申请)

系列文章 C 系列 前篇 为什么学习C 及学习计划-CSDN博客 C 系列 第一篇 开发环境搭建(WSL 方向)-CSDN博客 C 系列 第二篇 你真的了解C吗?本篇带你走进C的世界-CSDN博客 C 系列 第三篇 C程序的基本结构-CSDN博客 C 系列 第四篇 C 数据类型…

改善代码质量,试试这10种方法

那么,什么是高质量的代码?如何才能写出高质量的代码?为什么有的程序员工作 5年,写出来的代码质量还不如 3年的程序员?今天我们就来聊一聊。 1. 什么是高质量代码 代码的“好”与“坏”是一个相对的描述,因…

WEB渗透—PHP反序列化(一)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

Vue3-16-【v-model】 表单数据绑定

作用描述 v-model 指令,实现了 表单输入组件的值 与 js 中的变量的值的绑定关系。 当我们在页面上执行输入动作时,js中变量的值也会同步发生变化。表单不仅仅局限于输入框,其他的如 : 单选按钮,复选框,下拉…

用AI画个女朋友回家过年,1行Python代码,免费实现

#这才是真功夫# 大家好,这里是程序员晚枫,全网同名。 马上过年了,还是单身的举个爪! 今年GPT系列的产品非常火爆,今天给大家分享一下,如何免费用AI代码画1个女朋友。👇 直接上代码 大家学习 或 …

【代码随想录】刷题笔记Day35

前言 日常学习,抵触心理5%;毫无指示的干活,抵触心理95% 122. 买卖股票的最佳时机 II - 力扣(LeetCode) 把整体利润拆分为每次利润,只要积上涨的就可以,so easy class Solution { public:int …

Android codec2 视频框架之编码输出内存管理

文章目录 pool的创建pool 中申请内存buffer 从service传递到clientC2buffer转换为MediaCodecBuffer编码 输出C2buffer的生命周期 buffer在框架中的流动流程,从buffer的申请、填充数据到binder中传递、转换为应用层数据、从应用层释放。 围绕以下的方面:…

业务代码-整合框架-存储-缓存常见错误详解一

一. java空指针和异常: 1.什么是空指针异常(java.lang.NullPointException): 1.1常见的空指针异常案例: public class WhatIsNpe {public static class User {private String name;private String[] address;public void print…

【C++11】右值引用与移动语义

一.左值与右值 左值:可以取地址的表示数据的表达式,左值可以出现在赋值符号左边 右值:不能取地址的表示数据的表达式,右值不能出现在赋值符号左边 int fun() {return 0; } int main() {int a 0;//a->左值const int b 1;//b-&…

Java 入门第四篇 集合

Java 入门第四篇 集合 一,什么是集合 在Java中,集合(Collection)是一种用于存储和操作一组对象的容器类。它提供了一系列的方法和功能,用于方便地管理和操作对象的集合。集合框架是Java中非常重要和常用的一部分&…

C++进阶篇9---类型转换

C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与 接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型 转换和…

参数学习——糖果问题(人工智能期末复习)

之前看了好久都不知道这题咋写,后来看了这篇机器智能-高频问题:糖果问题,大概看明白了,其实主要围绕着这两个公式 光看公式也看不懂,还是要结合题目来 己知有草莓味和酸橙味两种类型的糖果,分别放入5种不同…

深入了解—C++11特性

目录 一、 C11简介 二、初始化列表 2.1 C98中{}的初始化问题 2.2 内置类型的列表初始化 2.3 自定义类型的列表初始化 2.3.1. 标准库支持单个对象的列表初始化 2.3.2. 多个对象的列表初始化 三、变量类型推导 3.1 为什么需要类型推导 3.2 decltype类型推导 3.2.1. 推…

SIM初始化流程

ATR ATR(Answer To Reset):复位应答信号,有SIM卡传输给终端,包括SIM卡自身的一些信息,比如支持的传输速率,传输模式等。 SIM卡的ATR代表"Answer to Reset",即复位响应。当SIM卡被插入设备中时…

Java的String类常用方法 |StringBuilder和StringBuffer

文章目录 String类常用方法字符串查找转化字符串替换字符串拆分字符串截取其他操作方法 字符串的不可变性StringBuilder和StringBufferStringBuilder的介绍面试题 String类常用方法 字符串查找 方法功能char charAt(int index)返回index位置上字符,如果index为负数…

深度解读分布式事务Seata入门到实践 -尚马教育

目录 一、事务的回顾1、什么是事务2、事务的特性3、事务的隔离级别4、事务的分类 二、分布式事务1、什么是分布式事务2、分布式事务产生的背景3、分布式事务产生的场景4、分布式事务理论4.1 CAP理论4.2 Base理论 5、分布式事务的解决方案 三、强一致性介绍3.1 基本理解3.2 DTP模…

arm-none-eabi-gcc not find

解决办法:安装:gcc-arm-none-eabi sudo apt install gcc-arm-none-eabi; 如果上边解决问题了就不用管了,如果解决不了,加上下面这句试试运气: $ sudo apt-get install lsb-core看吧方正我是运气还不错,感…

环境搭建及源码运行_java环境搭建_mysql安装

1、介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一 1、源码中涉及到的表:mysql 表:订单、意见反馈、用户基础信息、商品、购物车等表 2、订单属于…