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

2024-04-14 05:36

本文主要是介绍全景剖析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站账号

图片

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

这篇关于全景剖析SSD SLC Cache缓存设计原理-2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

Java实现本地缓存的四种方法实现与对比

《Java实现本地缓存的四种方法实现与对比》本地缓存的优点就是速度非常快,没有网络消耗,本地缓存比如caffine,guavacache这些都是比较常用的,下面我们来看看这四种缓存的具体实现吧... 目录1、HashMap2、Guava Cache3、Caffeine4、Encache本地缓存比如 caff

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字