探秘SSD磨损均衡和闪存管理

news2024/11/29 0:51:15

一块2TB的SSD要进行3000PE耐久度测试,需要在顺序写入方式下(写入放大比接近1)写入2TB x 3000=6000TB的数据,这需要相当长的时间才能完成。

有朋友可能会问:在SSD里划分一个1GB容量的小分区,往里面覆盖写入3000GB,不就能测试闪存3000PE了吗?

简明版答案:闪存不支持直接覆盖写入。SSD具有磨损均衡功能,能平衡每个闪存单元的擦写次数。所以划分1GB小分区单独测SSD耐久度的方法是不可行的。

看似简单的问题,背后却有着很多深层次的秘密。

Flash Translation Layer闪存转换层:

拥有FTL闪存转换层是SSD和HDD之间的显著差别。FTL闪存转换层的影响下,操作系统以及用户角度看来固定不变的位置,在SSD内可以对应不同的闪存单元。并且FTL的映射关系是动态可变的,无法定向瞄准特定闪存单元反复擦写。

FTL除了提供闪存映射,还会参与垃圾回收和磨损均衡。

Wear Leveling磨损均衡:

SSD主控管理的磨损均衡算法会平衡所有闪存单元的擦写循环次数,避免让个别闪存单元提早损坏。

磨损均衡分为静态磨损均衡与动态磨损均衡。和很多朋友想象中不同的是,在这里静态要比动态更先进:静态磨损均衡是在每次写入时从空白闪存单元中挑选擦写次数最少的进行写入,已经存储有数据的闪存单元就无法参与到磨损均衡当中来。而静态磨损均衡会在条件具备的情况下搬走长期占用“年轻闪存单元”的静态不变数据,将其释放出来用于新数据写入,从而避免过度消耗其他闪存单元的寿命。

有了磨损均衡算法,SSD中的闪存寿命将被均匀地消耗。容量越大的SSD,使用寿命也将越长。致态TiPlus5000 2TB拥有高达1200TBW的官标耐久度,按5年计算每天可写入高达657.5GB的数据,远超日常使用所需!

SLC缓存和延缓释放:

致态TiPlus5000和其他TLC SSD一样,都具备SLC缓存功能。主控通过一系列智能SLC算法来优化SSD写入寿命。

正常情况下,写入SSD的数据都先进入SLC缓存内,然后空闲时在主控管理下释放到闪存的TLC存储区域,相当于每次数据写入会对闪存造成两次磨损。

好消息是闪存在SLC模式下写入的寿命要比TLC模式更持久。另外SSD会应用延缓释放算法,若SLC缓存内的数据后续又被删除,就免去了缓存释放产生的二次磨损。

闪存单元既能用作模拟SLC,也能直接以TLC使用,在使用选择上也是有一定讲究的。主控通常会挑选那些健壮性指标较高的闪存单元用于模拟SLC写入,其中的原因跟下面将要提到的Copyback有关。

Copyback和闪存品质:

SLC缓存释放、动态磨损均衡、垃圾回收以及处理读取干扰,都需要SSD在闪存内移动数据到其他位置。

正常情况下要移动闪存内的数据,需要SSD从特定位置读出数据内容到主控,经过ECC纠错后写入到其他位置。如果闪存支持Copyback,就可以简化这一步骤:由主控发出指令,数据无需经过主控,直接在闪存内部完成位置移动。

Copyback之所以高效是因为它实现了主控减负,不会影响到SSD执行其他任务。不过也因为未经主控纠错,数据移动过程发生的比特错误可能无法被立即发现和纠正,一旦累积到超过主控纠错引擎能力的水平,就会影响数据安全。挑选健壮性较高的闪存单元用作SLC缓存,就可以提高SSD缓存释放过程中使用Copyback的可靠性。

回顾PCEVA去年进行的SSD耐久度测试,在3000次PE之后,相当一部分SSD的SLC缓存容量出现大跳水。在其他的测试中,我们还曾发现某些SSD在寿命末期出现SLC缓存彻底被禁用的情况,这些都是SSD闪存磨损达到一定程度之后为了保障安全而在性能端做出的牺牲。

如此看来,选择采用原厂高品质闪存的SSD,无疑能获得更为持久的高性能使用体验。

最后我们回顾一下文章开头提出的问题,在致态TiPlus5000 2TB中将一个1GB文件反复覆盖写入3000次会发生什么?答案是仅仅消耗1200TBW耐久度的0.25%!真的是小case啦。

出处: 百家号 https://baijiahao.baidu.com/s?id=1753517073983035206

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

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

相关文章

2022年总结:责任驱动开源

文章目录概览阅读2022阅读清单2023 阅读目标文章2022文章列表2023 目标社区WeDataSpherecube-studio (aiops平台)社区展望小结概览 2022年一年过去,在此总结过往,展望未来,每年都写总结,我希望继往开来&am…

STC单片机基于Keil平台在线调试仿真

STC单片机基于Keil平台在线调试仿真⚡目前STC32G12K128型号的单片机仅支持需要通过SWD接口(STC-USB LINK 1D)进行调试,STC8H系列可以通过HID接口或者串口进行调试,其他不带HID功能型号的只能通过串口进行调试。 ✨初次调试&#x…

RHCE——编写playbook ansible

1.按照要求定义以下变量。(可以在多个位置下定义实现相应操作即可) | 变量名 | 值 | | --------- | ------- | | file_name | newfile | | user_name | devops | | pk_name | httpd | 2.编写任务模块在node1和node2主机中根据以上变量值创建对应文本文件…

IPC进程间通信-管道

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、了解进行间通信①进程间通信的必要性②进程间通信的技术背景二、管道①管道原理管道原理,三步走管道pipe②匿名管道进程间通…

CANoe-System And Communication Setup介绍

如同经典通信模式中,在Simulation Setup界面创建网络、添加节点、导入dbc数据库一样,新型通信模式使用System And Communication Setup完成这些配置 System And Communication Setup是通信配置的中心起点,在这里你可以配置: 应用层(application models)通信层(communic…

【自学Python】Python bytes类型

Python bytes类型 Python bytes类型教程 Python3 新增了 bytes 类型,用于代表字节序列。 字符串(string) 是一串字符组成的序列,字符串处理的基本单位是字符,bytes 类型是一串字节组成的序列,bytes 类型处理的基本单位是字节。…

三维重建基础: 坐标系 (更新中)

文章目录概述计算机视觉:投影矩阵M: 世界坐标系 -> 像平面坐标系相机坐标系 -> 像平面坐标系:世界坐标系 -> 相机坐标系计算机图形:MVP变换view/camera 变换常见坐标系定义colmap中的坐标系线性代数相关基础待办附录概述…

微信小程序安装 Vant 组件库与API Promise组件库

在项目内右键空白处选择在外部终端打开2、在终端窗口输入 npm init -y,创建package-lock.jsonnpm init -y3、在终端输入npm i vant/weapp1.3.3 -S --production,创建node_modules文件夹npm i vant/weapp1.3.3 -S --production4、详情-本地设置&#xff0…

安信证券资管清算重要业务在原生分布式数据库的创新实践

作者:安信证券信息技术委员会运维部系统平台室 刘盛彩、肖昭、张杰 来源:《金融电子化》 近日,《国务院关于数字经济发展情况的报告》(以下简称报告)提请十三届全国人大常委会第三十七次会议审议, 报告提出&#xff1a…

【Vue + Koa 前后端分离项目实战8】使用开源框架==>快速搭建后台管理系统 -- part8 【权限控制联调】

不要为了不值得的事和人感伤悲秋 本章主要关联章节:【Vue Koa 前后端分离项目实战3】使用开源框架>快速搭建后台管理系统 -- part3 权限控制行为日志_小白Rachel的博客-CSDN博客_koa权限管理 本章主要实现综合的系统权限管理 目录 一、权限控制说明 二…

【Linux】Linux常用指令(28个,以及热键,关机重启)

文章目录1、ls 指令2、pwd 命令3、cd 指令4、touch 指令5、mkdir 指令6、rmdir和rm 指令7、man 指令8、cp 指令9、mv 指令10、cat11、echo(输出,输入,追加重定向)12、wc13、more14、less15、head16、tail(以及管道 | )17、date18、cal19、find(which、wh…

KubeSphere使用外部ES进行日志收集(多行日志)

环境kubesphere : v3.3.1Docker:20.10.8Fluent-Bit:2.0.6-2.0.8ESKibana:7.9.3Docker日志示例{"log":"2023-01-10 11:32:50.021 - INFO --- [scheduling-1] traceId: p6spy : 1|conn-0|statement|SELECT fd_id A…

Java 泛型的介绍和使用

什么是泛型? 1.数据类型变得广泛,或者是数据类型变量化,这就是泛型.(广泛的类型). 2.有一个变量是用来存放一个数据类型,这就叫做泛型. 比如泛型T存放的是一个int 就表示为:Tint 当然T也可以是其他的数据类型,就取决我们给它数据类型. 3.泛型允许程序员在强类型程序设计语…

kafka zookeeper单机版安装部署全教程 含安装包

kafka zookeeper安装部署全教程 含安装包 大家好,我是酷酷的韩~ 一.基础软件安装 1.JDK安装部署 linux安装jdk1.8全教程(包含安装包) 二.安装包准备 1.kafka (kafka_2.12-2.8.0.tgz) https://kafka.apache.org/downloads 2.zookeeper (apache-zookeeper-3.7.…

最近爆火的电子血氧仪的基本原理

继口罩、抗原、药品之后,最近电子血氧仪的价格也开始水涨船高。从一个多月前的100多元,暴涨到了300多元。 那么,这类家用的电子血氧仪是如何工作的呢?测量数据到底准不准?今天就带大家来分析一下。 一、血氧仪工作原理 血氧仪是一种监测脉搏、血氧饱和度等指标的医疗器械…

人工智能-EM算法

目录1、EM算法2、EM算法介绍3、EM算法实例1、EM算法 EM算法:期望最大化算法。解决数据缺失情况下的参数估计问题 它是一个基础算法,是HMM等的基础 期望步:E步,最大步M步 步骤: 1,根据已经给出的观测数据,估计出模型参…

世界上第一款启用 QMK/VIA 的薄型无线机械键盘 Keychron K3 Pro 我刚刚入手

文章目录1. Keychron K3 Pro 是什么2. 键盘参数3. 打字音效测试4. 超薄5. 支持热插拔6. 薄型 Gateron 开关7. 薄型双射 PBT 键帽8. 多功能键9. 键盘部件可自定制10. 电池11. QMK 和 VIA 定制12. 产品清单13. 与 keychron k3 对比14. 与 keychron 其他系列对比14.1 为什么没有选…

Swin Transformer阅读笔记

Swin Transformer 使用了移动窗口的层级式的Vit(Hierarchical Vision Transformer using Shifted Windows) 总体来说:Swin Transformer想让Transformer像卷积神经网络一样,可以分为多个block,可以做层级式特征提取&a…

Flowable工作流——基础篇

1. 介绍 Flowable是BPMN的一个基于Java的软件实现,但是不仅仅限于BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理,微服务API的功能,是一个服务平台。 是由开发了Acitivity6的开发人员,再次升…

nacos的使用

此篇博客是对nacos安装运行进行简单的介绍,后续博客会介绍下nacos的简单使用。nacos的安装安装可以去github上进行下载,下载地址(不建议下载最新版本,可以找比较稳定的版本)可以点解Tags查看所有历史版本我下载的是2.2…