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

news2024/11/26 10:20:56

四、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站账号

图片

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

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

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

相关文章

matlab学习002-函数及流程控制语句

目录 一,matlab编程基础 1)matlab脚本和函数文件 ①脚本文件 ②函数文件 2)函数的定义和调用 ①定义 ②调用 3)程序流程控制 ①使用for求 122^2……2^622^63之和 ②使用while语句求122^2……2^622^63之和 ③使用matl…

【御控物联】 Java JSON结构转换(2):对象To对象——属性重组

文章目录 一、JSON结构转换是什么?二、案例之《JSON对象 To JSON对象》三、代码实现四、在线转换工具五、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换,生成新的JS…

【Python】实现导入、提交文件并显示其路径的基础GUI界面

The tkinter package (“Tk interface”) 是一个基于Tcl/Tk GUI工具标准的Python接口。集合在大多数操作系统都有Tk和tkinter 库,包括MacOS,Window还有一些Unix类的操作系统 【基础操作】 1 设置窗口 # -*- coding: utf-8 -*- from tkinter import *#创…

2024年认证杯SPSSPRO杯数学建模D题(第一阶段)AI绘画带来的挑战全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 D题 AI绘画带来的挑战 原题再现: 2023 年开年,ChatGPT 作为一款聊天型 AI 工具,成为了超越疫情的热门词条;而在 AI 的另一个分支——绘图领域,一款名为 Midjourney(MJ&…

Matlab调C/C++简单模板例子

如果你是需要快速搭建一个matlab调c/c环境,这篇文章可以参考 有了c代码,想在matlab里面调用,可以参考我这个模板 matlab调用代码: clear all close all clcinput1 1; input2 2;[output1,output2] mexfunction(input1,input2);…

充电有喜分析

参考相关应用 华为市场 -> 充电有喜2.0.1网络查找 -> 充电有喜1.0.0 http://www.xz7.com/downinfo/609008.html反编译app有个文字漏洞,找到 来福充电宝 https://sj.qq.com/appdetail/com.evenhaexplo.courte 需要解决的问题 电源插拔注册为什么需要悬浮窗权…

Linux C柔性数组(零长数组)

零长数组&#xff0c;大小为0&#xff0c;一般用在结构体中&#xff08;网络通信&#xff0c;省流&#xff09;&#xff0c;节省空间&#xff0c;方便善后&#xff08;相对于指针类型&#xff09;&#xff0c;我们通过具体例子进行理解。 常规定长数组 #include <stdio.h&…

[温故] 红黑树算法

前言 最近在突然想起一些基础的东西, 向着温故知新, 有了些新的感悟和大家分享一下. 排序算法是数据结构的一个重要组成部分, 当时学习的时候没有少折腾, 这里来看看大佬们怎么运用这些数据结构来构建庞大的计算机体系的. 二叉树是排序算法的一个衍生, 基于二叉树的构建不同…

【路径规划】基于六次多项式的多关节机器人避障路径规划

最近迷上了机械臂避障轨迹规划&#xff0c;因为之前一直做的都是无障碍物轨迹规划&#xff0c;所以这次想试一下有障碍物的&#xff0c;把避障算法用在我的SimMechanics机械臂上&#xff0c;看看效果咋样。以下定义不区分路径规划和轨迹规划。   by the way&#xff0c;本文实…

一种跳板机的实现思路

一、 跳板机思路简介 本文所描述的跳板机&#xff08;下文称为“jmp”&#xff09;支持&#xff1a; Linux服务器 Windows服务器 其他终端&#xff08;MySQL终端、Redis终端、网络设备终端 等等&#xff09; 有别于市面上常见的jumpserver方案&#xff0c;使用本文所搭建的跳…

CSS实现卡片在鼠标悬停时突出效果

在CSS中&#xff0c;实现卡片在鼠标悬停时突出&#xff0c;通常使用:hover伪类选择器。 :hover伪类选择器用于指定当鼠标指针悬停在某个元素上时&#xff0c;该元素的状态变化。通过:hover选择器&#xff0c;你可以定义鼠标悬停在元素上时元素的样式&#xff0c;比如改变颜色、…

最新PDD批发Anti-Content参数逆向分析与算法还原

文章目录 1. 写在前面2. 接口分析3. 分析与扣代码 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Py…

Java(今天偷懒一丢丢

今天学了一点点io流 基本概念 输入流&#xff08;InputStream&#xff09;&#xff1a;用于从数据源读取数据。输出流&#xff08;OutputStream&#xff09;&#xff1a;用于向目标写入数据。 分类 按功能分类 字节流&#xff1a;处理字节数据&#xff0c;如 InputStream 和…

CSS aspect-ratio属性设置元素宽高比

aspect-ratio 是CSS的一个属性&#xff0c;用于设置元素的期望宽高比。它设置确保元素保持特定的比例&#xff0c;不受其内容或容器大小的影响。 语法&#xff1a; aspect-ratio: <ratio>;其中 <ratio> 是一个由斜杠&#xff08;/&#xff09;分隔的两个数字&…

韩顺平 | 零基础快速学Python(12) OOP基础

面向对象编程-基础 类与对象 类提供了把数据和功能绑定在一起的方法。创建新类时创建了新的对象类型&#xff0c;从而能够创建该类型的新实例/对象。 类时抽象的概念&#xff0c;作为数据类型代表一类事物&#xff1b;对象时具体实际的&#xff0c;作为实例代表具体事物&…

【c语言】atoi函数---使用和模拟实现(详解)

atoi函数---使用和模拟实现 atoi函数在Cplusplus中的定义 atoi函数的使用 #include <stdio.h> #include <stdlib.h>int main() {char arr[20] "4831213";int ret 0;ret atoi(arr);printf("arr:%s\n", arr);printf("ret:%d\n", re…

JWT重放漏洞如何攻防?你的系统安全吗?

大家好&#xff0c;我是石头~ 在数字化浪潮席卷全球的今天&#xff0c;JSON Web Token&#xff08;JWT&#xff09;作为身份验证的利器&#xff0c;已成为众多Web应用的首选方案。 然而&#xff0c;正如硬币有两面&#xff0c;JWT的强大功能背后也隐藏着潜在的安全风险&#xf…

手把手教你如何下载学浪上的视频课程

学浪直播课程下载技术尚未攻克&#xff0c;但视频课程下载却易如反掌。 1.首先解压好我给大家准备好的压缩包 学浪下载器链接&#xff1a;https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码&#xff1a;kqvj --来自百度网盘超级会员V10的分享 2.首先解压我…

OpenHarmony编译构建系统

这篇来聊聊OpenHarmony的编译构建&#xff0c;经过前面的实践&#xff0c;再来看编译构建。 编译构建概述 在官网中提到了&#xff0c;OpenHarmony编译子系统是以GN和Ninja构建为基座&#xff0c;对构建和配置粒度进行部件化抽象、对内建模块进行功能增强、对业务模块进行功能…

数据采集仪:自动化监测系统的核心组件

在当代的工业自动化领域&#xff0c;数据采集仪成为了一个关键的技术工具&#xff0c;它不仅仅是简单地将电信号转化为数据信号&#xff0c;而是能够实时、有效地处理和显示各种信号&#xff0c;确保整个监测系统的稳定、高效运行。 点击输入图片描述&#xff08;最多30字&…