全景剖析SSD SLC Cache缓存设计原理-2

四、SLC缓存对SSD的寿命是否有优化?

当使用QLC或TLC NAND闪存并将其切换到SLC模式进行写入时,会对闪存的寿命产生以下影响:

  1. 短期寿命提升:

    • SLC模式下,每个存储单元仅存储一个比特数据,相对于QLC或TLC来说,每个单元的状态变化更少,因此每次写入操作对单元的物理损伤较小。

    • 由于SLC模式的单元只需要区分两种电荷状态,其电压窗口更大,信号质量更好,这降低了误码率,增强了数据的稳定性,从而减少了需要进行纠错操作的次数,进一步减轻了单元的负担。

    • 结果是,在SLC模式下进行写入时,NAND闪存的擦写次数(P/E cycles)理论上会显著增加,表现为短期的寿命提升

  1. 长期总体寿命折损:

    • 尽管SLC模式下单个单元的寿命更长,但需要注意的是,SLC模式实际上是利用了一部分QLC或TLC闪存的空间来模拟SLC的行为。这意味着原本设计为存储多位数据的单元现在只能存储一位数据,相当于牺牲了存储密度

    • 因此,为了维持相同的总存储容量,SSD控制器必须使用更多的物理单元来对应同样的逻辑容量,这意味着在SLC模式下写入相同的数据量,实际上会消耗更多物理单元的擦写次数。

    • 例如,如果一个QLC单元在SLC模式下只用作一个SLC单元,那么为了达到同样的存储容量,需要使用四倍数量的QLC单元。虽然单个单元的擦写次数增加了,但由于使用的单元总数也相应增加,长期来看,整体的闪存寿命可能并未得到显著改善,甚至可能因为单元数量的增加而导致更早达到总的P/E周期限制。

  1. 动态调整与缓存策略

    • 实际上,现代SSD在设计时通常采用SLC缓存策略,即利用一部分QLC或TLC NAND以SLC模式工作作为高速写入缓冲区。这种设计允许在短时间内以SLC模式快速接收和暂存新数据,然后再在后台以QLC或TLC模式将这些数据异步迁移到主存储区域。

    • 这种动态调整机制避免了持续以牺牲存储密度的方式运行整个闪存,而是仅在需要加速写入时短暂启用SLC模式。这样既利用了SLC模式下的高速写入优势,又避免了长期对闪存寿命造成过大影响。

所以说,将QLC或TLC NAND切换到SLC模式进行写入可以短期内提高单元的耐用性,若持续以此模式运行整个闪存,由于牺牲存储密度导致的单元数量增加,可能会导致整体闪存寿命并未得到显著提升,甚至可能因为单元数量的增加而提前达到总的P/E周期限制。然而,通过合理运用SLC缓存策略,可以在不显著影响整体寿命的前提下,有效提升写入性能。

因此,实际SSD产品中,SLC模式通常作为一种智能缓存技术被用来临时提升写入速度,而非永久改变整个闪存的工作模式。

五、业内对SLC缓存的优化方案

1.Solidigm提出了“Fast Lane” SLC缓存方案

在传统SSD中,大多数数据在短时间内会从SLC缓存迁移到QLC主存储区。一旦数据被转移到QLC,现有的缓存机制并不具备智能将这些数据重新带回SLC的能力。换言之,一旦数据离开SLC,其后续的访问速度将取决于QLC的性能,而不会因为其访问频率或重要性变化而被重新考虑放入SLC缓存。

图片

“Fast Lane”提出的缓存解决方案同样使用SLC作为写缓冲区,但在此基础上引入了智能缓存机制。这种智能缓存的目标是尽可能多地、尽可能长久地将“热”数据(即访问频率高、近期活跃或对性能敏感的数据)保留在SLC中。这意味着该方案不仅仅是被动地利用数据在SLC中的偶然存在,而是主动监控数据访问模式,识别出“热”数据,并确保这些数据即使在被写入一段时间后,仍能被优先保留在SLC缓存中,以提供持续的高性能访问。

图片

存储驱动程序在识别出数据的“热”、“冷”状态后,会将这些信息以“提示”(hints)的形式传递给SSD固件。SSD固件是嵌入在SSD硬件中的专用软件,负责控制SSD的内部操作,包括数据的读写、缓存管理、错误纠正等。通过接收驱动程序提供的数据热度提示,固件获得了关于数据重要性与访问需求的额外知识。

接收到数据热度提示的SSD固件,会据此调整数据在不同存储介质中的存放策略。具体来说,固件会确保“热”数据存储在“快”介质中,而“冷”数据则存放在“慢”介质中。这里的“快”介质通常指SSD中的高速缓存区域,如SLC(Single-Level Cell)存储层,其特点是读写速度快、延迟低,但成本较高;相反,“慢”介质通常指SSD的主存储区域,如QLC(Quad-Level Cell)存储层,其存储密度高、成本较低,但读写速度和延迟相对较高。

相比传统缓存策略,随着SSD填充率增加、缓存空间相应减小,Fast Lane策略下重要数据快速可用的概率反而更高。原因在于传统策略通常仅基于数据的写入时间(即最近写入的数据优先保留在缓存中)进行缓存决策,这种简单粗放的方法往往无法精准识别出真正重要的“热”数据。在SSD使用过程中,随着可用缓存空间不断缩小,传统策略的不足愈发明显,而Fast Lane通过智能识别和优先保留重要数据,即使在缓存空间有限的情况下也能确保更高的缓存命中率。

图片

实际测试结果显示,当SSD填充率达到50%时,采用Fast Lane缓存策略的系统在QD1(队列深度为1)随机读取速度上,相比于未采用此策略的同类系统,性能提升可达120%。QD1随机读取速度是衡量系统响应速度的一个关键指标,其显著提升说明Fast Lane有效地解决了高填充率下缓存空间不足导致的性能瓶颈问题,极大地增强了系统的即时响应能力和用户体验。

不过,需要注意,Solidigm这个方案需要软件驱动一起配合,整体方案可能对于普通用户不是特别友好。

2.三星基于强化学习(RL) SLC缓存管理技术

这是来自一篇来自三星的之前发布的论文内容,论文详细介绍了基于强化学习(RL)的SLC缓存管理技术,旨在改善使用QLC NAND闪存的固态硬盘(SSD)的写入性能

图片

设计混合SSD时需要考虑两个重要因素:

  • SLC缓存大小:需要权衡容量损失与SLC-to-QLC迁移开销。SLC块容量小于QLC块,SLC区域越大,总容量损失越多。但若SLC区域过小,将导致迁移成本增加、写请求延迟增大及写放大率提高。因此,SLC缓存大小应根据工作负载特征和SSD内部行为(如迁移成本)动态调整。

  • 热/冷分离阈值:考虑到SLC-to-QLC迁移成本,应尽量只在SLC区域写入频繁更新的“热”数据,其他“冷”数据直接写入QLC区域。区分热/冷数据需考虑请求数据大小、目标地址、更新频率等因素。简单启发式方法是基于数据大小,认为小数据更可能为热数据。阈值设定会影响写入SSD缓存的数据量,进而影响性能。

由于现有技术采用固定、经验性设定的参数且不支持运行时调整,论文提出了一种基于强化学习的SLC缓存管理技术。通过观察工作负载模式和混合SSD内部状态,动态确定最优SLC缓存参数,以最大化SSD效率。实验表明,该技术平均可将写吞吐量和写放大因子分别提高77.6%和20.3%

图片

根据论文内容介绍,RL技术更动态地调整SLC缓存大小和热/冷分离阈值。在PC工作负载(频繁更新数据多)中,RL技术分配的SLC块数少于UST,但保持较高的阈值(如512 KB),以尽可能长时间存储热数据。RL技术降低了QLC-to-QLC或SLC-to-SLC垃圾回收开销,与UST相比,其迁移和垃圾回收成本降低65.2%,与DWA相比,QLC写入开销减少。

图片

参考资料:

1.HotStorage20:《Reinforcement Learning-Based SLC Cache Technique for Enhancing SSD Write Performance》

2.Solidigm 2023 FMS:《Evolution of Client SSD Architecture》

3.https://driveshero.com/ssd-dram-cache-vs-slc-cache/

4.https://sabrent.com/blogs/storage/slc-caching

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

精彩推荐:

  • 存储革新:下一代低功耗PCM相变存储器

  • 多层磁介质让HDD容量翻倍,可超过120TB

  • 下一代分层存储方案:CXL SSD

  • 字节跳动入局存储内存SCM

  • 解读“CFMS中国闪存市场峰会”存储技术看点

  • 首个业内DNA存储技术规范发布

  • 如何突破SSD容量提升的瓶颈?

  • 固态存储是未来|浅析SSD架构的演进与创新技术

  • 论文解读:NAND闪存中读电压和LDPC纠错码的高效设计

  • 华为新发布磁电存储“王炸”,到底是什么?

  • SSD LDPC软错误探测方案解读

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

  • 存储系统如何规避数据静默错误?

  • PCIe P2P DMA全景解读

  • 深度解读NVMe计算存储协议

  • 对于超低延迟SSD,IO调度器已经过时了吗?

  • 浅析CXL P2P DMA加速数据传输的原理

  • NVMe over CXL技术如何加速Host与SSD数据传输?

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

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

  • SSD在AI发展中的关键作用:从高速缓存到数据湖

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

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

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

  • CXL崛起:2024启航,2025年开启新时代

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

  • 浅析PCI配置空间

  • 浅析PCIe系统性能

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

图片

如果您也想针对存储行业分享自己的想法和经验,诚挚欢迎您的大作。
投稿邮箱:Memory_logger@163.com (投稿就有惊喜哦~)

《存储随笔》自媒体矩阵

图片

更多存储随笔科普视频讲解,请移步B站账号

图片

如您有任何的建议与指正,敬请在文章底部留言,感谢您不吝指教!如有相关合作意向,请后台私信,小编会尽快给您取得联系,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在 Elasticsearch 中扩展 ML 推理管道:如何避免问题并解决瓶颈

作者:来自 Elastic Iulia Feroli 是时候考虑语义搜索运营了吗? 无论你是一位经验丰富的搜索工程师,希望探索新的人工智能功能,还是一位机器学习专家,希望更多地利用搜索基础设施来增强语义相似性模型 —— 充分利用这…

python统计分析——用sklearn进行回归

参考资料:python统计分析【托马斯】 scikit-learn提供了简单而有效的数据挖掘和数据分析工具,包括监督和无监督学习。它提供了如下工具: 分类:辨别出新的观测值应该属于哪一组类别。 回归:对一个新的例子预测一个连续值…

Rust腐蚀服务器常用参数设定详解

Rust腐蚀服务器常用参数设定详解 大家好我是艾西,一个做服务器租用的网络架构师上期我们分享了rust腐蚀服务器的windows系统搭建方式,其中启动服务器bat参数因为涉及的东西比较多所以想通过这篇文章给大家做一下详细的分享。 (注本文中xxxx…

基于 FPGA 的 DE1-SoC 功率估算器

Introduction 功耗是当今许多技术都要考虑的重要因素。例如,手机生产商总是谈论他们在电源管理方面的改进,以及如何延长电池的使用寿命。功能与功耗之间的平衡是许多人都在研究的有趣课题。然而,当我们做实验时,我们很少会考虑我…

【Godot4.2】CanvasItem绘图函数全解析 - 8.绘制点索引

概述 在示意图绘制过程中或者测试过程中,可能需要标记点的索引。 最常见的形式就是用一个圆圈作为背景,用阿拉伯数字作为索引。 实现的重点是动态计算背景圆的半径。原理是,获取字符串的矩形,取对角线长度的一半作为外接圆的半…

【JavaScript | RegExp】正则表达式

本文原创于CSDN秋说,未经授权,不得转载。 文章目录 定义特殊字符元字符字符表格汇总特殊结构标记优先级实例匹配常见的 HTTP 或 HTTPS URL匹配路径匹配URL的各个部分全局搜索邮箱正则表达式日期匹配正则表达式特殊字段匹配正则表达式匹配邮箱正则表达式用…

在Windows中用命令行编译C项目

在Windows中可以用命令行编译C项目 官方指导文档: 演练:在命令行上编译 C 程序 | Microsoft Learn 在官方文档中可以看到,可以只安装VS的命令行工具集,如下图所示

MySQL8.0.36-社区版:错误日志(2)

mysql有个错误日志,是专门记录错误信息的,这个功能默认是开启的 一般都是在/var/log/mysqld.log 日志中存放 1.错误日志的位置 首先我们使用命令去查看一下,这个错误日志文件究竟在哪 进入到mysql中,使用命令 show variables…

009、Python+fastapi,第一个后台管理项目走向第9步:ubutun 20.04下安装vscode+git环境配置

一、说明 git是一定要配置的,由于是白嫖的无影云电脑,东西得保存在网上,就继续白嫖gitee吧,显然国内github是不太合适的了 二、安装git 直接安装sudo apt install -y git git --version git version 2.25.1 三、配置git 在git上…

使用阿里云试用Elasticsearch学习:使用内置模型 lang_ident_model_1 创建管道并使用

文档:https://www.elastic.co/guide/en/machine-learning/current/ml-nlp-deploy-model.html 部署刚刚下载好的内置模型 部署内存不够用 还得花钱,拉几把倒吧。就用自带的吧。 测试模型 POST _ml/trained_models/lang_ident_model_1/_infer {"doc…

MySQL-触发器:触发器概述、触发器的创建、查看删除触发器、 触发器的优缺点

触发器 触发器1. 触发器概述2. 触发器的创建2.1 创建触发器语法2.2 代码举例 3. 查看、删除触发器3.1 查看触发器3.2 删除触发器 4. 触发器的优缺点4.1 优点4.2 缺点4.3 注意点 注:此为笔者学习尚硅谷-宋红康MySQL的笔记,其中包含个人的笔记和理解&#…

HarmonyOS实战开发-横竖屏切换

介绍 本实例展示如何使用媒体查询,通过ohos.mediaquery 接口完成在不同设备上显示不同的界面效果。 效果预览 使用说明 1.在竖屏设备上,首页展示新闻列表,点击新闻进入详情界面。 2.在横屏设备上,首页左侧展示新闻列表&#x…

RT-Thread内核简介

1、RT-Thread 内核介绍 RT-Thread 内核架构图,内核处于硬件层之上,内 核部分包括内核库、实时内核实现 内核库是为了保证内核能够独立运行的一套小型的类似 C 库的函数实现子集。这部分根据编译器的不 同自带 C 库的情况也会有些不同,当使用 GNU GCC 编译器时,会携带…

STM32外设配置以及一些小bug总结

USART RX的DMA配置 这里以UART串口1为例,首先点ADD添加RX和TX配置DMA,然后模式一般会选择是normal,这个模式是当DMA的计数器减到0的时候就不做任何动作了,还有一种循环模式,是计数器减到0之后,计数器自动重…

【GD32】MQ-3酒精检测传感器

2.31 MQ-3酒精检测传感器 MQ-3气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(Sn0)。当传感器所处环境中存在酒精蒸气时,传感器的电导率随空气中酒精蒸气浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。…

嵌入式STM32F407CET6移植OpenHarmony系统方法

第一:【实验目的】 1、STM32F407CET6开发版移植鸿蒙系统的方式 第二:【实验原理】 涉及到原理图添加原理图--普通STM32F407原理图第三:【实验步骤】 一、下载LiteOs源码,复制到到虚拟机中并解压 https://gitee.com/LiteOS/LiteOS

政安晨:【Keras机器学习实践要点】(二十九)—— 半监督图像分类使用具有SimCLR对比性预训练的方法

目录 介绍 半监督学习 对比学习 设置 超参数设置 数据集 图像增强 编码器结构 有监督基线模型 用于对比预训练的自我监督模型 对预训练编码器进行有监督微调 与基准线的比较 进一步改进 架构 超参数 相关工作 政安晨的个人主页:政安晨 欢迎 &#x…

Guava里一些比较常用的工具

随着java版本的更新提供了越来越多的语法和工具来简化日常开发,但是我们一般用的比较早的版本所以体验不到。这时就用到了guava这个包。guava提供了很多方便的工具方法,solar框架就依赖了guava的16.0.1版本,这里稍微介绍下。 一、集合工具类…

20240413,类和对象

对象:一切都可为对象,类:相同特性的对象;面向对象特性:封装,继承,多态 一,封装 CLASS 类名 { 访问权限 :属性/行为 } 实例化:通过一个类,创建一…

0101tomcat部署war访问mysql失败-容器间通信-docker项目部署

文章目录 一、简介二、部署1、mysql数据迁移2、docker部署redis3、docker部署tomcat并运行war包 三、报错四、解决1 分析2 解决 结语 一、简介 最近参与开发一个项目,其中一部分系统需要迁移。从阿里云迁移到实体服务器,使用docker部署。系统使用Java语…