关于SSD的FTL

FTL Flash Translation Layer 闪存转换层

作用:完成主机逻辑地址空间到闪存物理空间的映射
简言之,使用者在C盘下写入一个文件,对应这个文件资料写进SSD,SSD会记录这份资料存储的位置,在HOST再次读取时,从SSD闪存对应位置再取出资料的一张对照表。有点像仓库管理员的职责,记录出入库产品位置信息,别人来拿的时侯准确拿到

FTL的作用不仅仅只是做地址映射,还包含如下功能:

1.GC : Garbage Collection 垃圾回收

这是由于我们的闪存时不可覆写的,就是写资料前你得保证这个Page里面是空的,所以,当我们写的资料更新以后,可能就会存在Block里面有一些有用数据,有一些没用得数据,这些存储没用的数据得空间我们得给他空出来呀,不然整个SSD里面存了好多无用资料,把空间盛满了,就没办法写新的资料进去了。
所以在SSD空闲或者空间不太够的时候,就需要主动去做GC,把有用的数据读出来重新放到新的地方去,然后这个Block整个擦掉,整理出来更多的空间,以便后续写入
注意,GC同时也会影响读写性能,但又不得不去做,否则我们不停的更新资料不做,来不及GC擦掉无用数据,最终SSD会没办法写入新更新的资料,所以这个是需要SSD固件去平衡的一个点

2.WL : Wear Leveling 磨损均衡

之前提到,闪存有寿命,有擦写的上限。假如我们一直在对同一个地方高强度的写入再擦除就会造成这个位置的Block的擦写次数(P/E Cycle [Program/Erase Cycle])严重高于其他地方的Block,长此以往,这些Block很快就寿终正寝了。所以为了平衡整体的寿命,就需要适时调整,让数据尽量均匀的分布到每个闪存块上。

3.处理Read disturb问题

之前说闪存存在读干扰,一直不停读会导致最后数据出错,所以FTL也需要适时的将这些一直在读取的位置的资料做搬移再写入的操作,避免最后数据出错

4.处理Data Retention问题

数据长时间保存,会导致电子偷偷溜走,导致数据丢失。在上电的情况下,FTL也需要定期维护这些数据,假如存在问题,就需要做重新读取写入动作,以免数据丢失

5.坏块管理

闪存存在寿命,又坏块如何处理?自然是标注起来不再使用,FTL也需要记录这些坏块
坏块包含,擦写失败,ECC无法纠正的读失败

6.闪存类型配置

简单说,就是为了性能或其他因素,在条件允许的情况下,将原本是QLC或者TLC的闪存配置为SLC来使用,一方面提升读写速度,一方面也可以提高寿命和可靠性
当然,所以我们在消费级SSD上能看到,最开始写入速度飞快,写到一定数据量,比如50G以后速度突然以下就断崖式跌落,就是因为SSD上配置的SLC被消耗完了,TLC或QLC写入相对就会慢非常多

衍生问题思考:

针对第六点:QLC配置为SLC,提速了,但容量变小了,我如果一直写,把SLC都写完,继续写QLC,为了保证容量,原本的SLC是否还会再继续释放出来,变成QLC,这个处理过程是不是更会影响速度?
SLC变QLC的过程应该也算GC的一种吧?那我之前认为的顺序写不会有GC的理解是错误的,对于这样的消费级产品,顺序写也会造成GC?

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

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

相关文章

【随笔记录】VMware搭建python开发环境

Vmware虚拟机总是连接不到网络。 环境为:笔记本WLAN 解决方法。 1.直接使用VMware 编辑->虚拟网络编辑器->恢复默认设置。 2.取消网卡的IP的dhcp获取,改为static。网关为提供IP的主机的网络IP(NAT模式) 3.windows打开共享网…

kotlin 防范竞态

当你调用成员,这个成员可能为null,可能为空值,就必须采用防范竞态条件,这个是 KT 编程的规范化 下面举例: 防范竞态条件【尽量使用 ? 内置函数 空合并操作符】 fun test(){val info: String ? "&q…

软件学院PTA天梯赛初赛选拔赛题解

目录 7-2 生肖确定(模拟) AC代码: 7-3 韩信点兵(模拟) AC代码: 7-4 程序员买包子(模拟) AC代码: 7-5 h0078. 蛇形矩阵变形 AC代码: 7-6 军事体能成绩…

23.11.26日总结

图片与文字顶部对齐&#xff1a; <div class"addDishImgBox"><span class"addDishImgZi">商品图片&#xff1a;</span><img :src"myStorePhoto" class"addDishImg"> </div> .addDishImgBox{display: f…

8.前端--CSS-文本属性【2023.11.26】

CSS Text&#xff08;文本&#xff09;属性可定义文本的外观&#xff0c;比如文本的颜色、对齐文本、修饰文本、文本缩进、行间距等 1.文本颜色 color 属性用于定义文本的颜色。 语法&#xff1a; div { color: red; }属性&#xff1a; 2.文本对齐 text-align 属性用于设置元…

学生党福音!一个能自定义词库的单词软件--单词魔方

大家好 我是Yhen 这一期给大家介绍一款自制的单词软件–单词魔方 文章目录 一.创作缘由二.功能介绍&升级内容三.使用方法四.程序获取 一.创作缘由 为什么会有想法开发这个单词软件呢&#xff1f; 因为平时自己在做阅读&#xff0c;看电影时积累下来了一些单词 当我想要系…

【Linux】Linux项目自动化构建工具 --- make / makefile

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和Linux还有算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 …

uniapp使用Vue3挂载函数到全局

在uni-app中&#xff0c;我们可以使用Vue3的全局API来挂载函数到全局。以下是一个简单的示例&#xff1a; 首先&#xff0c;我们需要在main.js文件中引入Vue3和我们的全局函数&#xff1a; import { createApp } from vue import App from ./App.vue import globalFunction f…

零基础学python第二天||除法

除法啰嗦&#xff0c;不仅是python。 整数除以整数 进入python交互模式之后&#xff08;以后在本教程中&#xff0c;可能不再重复这类的叙述&#xff0c;只要看到>>>&#xff0c;就说明是在交互模式下&#xff09;&#xff0c;练习下面的运算&#xff1a; >>…

Vue3 实现 PDF 文件在线预览功能

我们可以使用 pdf.js 这个库。首先需要安装 pdf.js&#xff1a; npm install pdfjs-dist接下来&#xff0c;我们在 Vue3 项目中创建一个名为 PdfViewer.vue 的组件&#xff1a; <template><div class"pdf-viewer"><canvas ref"pdfCanvas"…

Grafana采用Nginx反向代理,部分功能报错‘Origin not allowed’ behind proxy

只有部分功能会有这个提示&#xff0c;比如修改密码啥的&#xff0c;网上找了下&#xff0c;官方找到了答案&#xff1a;https://community.grafana.com/t/after-update-to-8-3-5-origin-not-allowed-behind-proxy/60598 有个回复是这样的&#xff1a; tl:dr: try adding prox…

Node.js下载安装及配置镜像源

一、进入官网地址下载安装包 https://nodejs.org/dist 选择对应你系统的Node.js版本 这里我选择的是Windows系统、64位 二、安装程序 &#xff08;1&#xff09;下载完成后&#xff0c;双击安装包&#xff0c;开始安装Node.js (2)直接点【Next】按钮&#xff0c;此处可根据…

【labelimg打不开】

labelimg打不开 一、 报错1.1 排除错误 **解决方法&#xff1a;** 一、 报错 当运行labelimg程序报错此条时 AssertionError: Missing string id : useDefaultLabel 1.1 排除错误 第一&#xff0c;进入创建的虚拟环境&#xff0c;输入pip list 查看是否安装了labelimg 第二&…

数据结构 / 顺序表操作 / 顺序表堆区申请内存

代码 #include <string.h> #include <stdlib.h> #include <stdio.h>#define MAXSIZE 20 typedef int data_type;typedef struct SQLIST {//数据元素data_type arr[MAXSIZE];int len;}sqlist;sqlist *req_mem();int main(int argc, const char *argv[]) {ret…

jmeter 接口测试快速入门 以飞致云平台为例

飞致云电商API地址系统来自飞致云项目。接口API地址&#xff1a;https://gz.fit2cloud.com/swagger-ui.html 飞致云电商系统接口文档 V1.0&#xff1a;见 有道云笔记 该网站可以做接口测试练习。快速了解如何测试接口&#xff0c;如何做关联 系统基地址&#xff1a;https://g…

树套树 (线段树+splay)

树套树&#xff0c;就是线段树、平衡树、树状数组等数据结构的嵌套。 最简单的是线段树套set&#xff0c;可以解决一些比较简单的问题&#xff0c;而且代码根线段树是一样的只是一些细节不太一样。 本题中用的是线段树套splay&#xff0c;代码较长。 树套树中的splay和单一的…

【数据结构】堆(C语言)

今天我们来学习堆&#xff0c;它也是二叉树的一种&#xff08;我滴神树&#xff01;&#xff09; 目录 堆的介绍&#xff1a;堆的代码实现&#xff1a;堆的结构体创建&#xff1a;堆的初始化&#xff1a;堆的销毁&#xff1a;堆的push&#xff1a;堆的pop&#xff1a;判空 &am…

第三题-红色和紫色-【第六届传智杯程序设计挑战赛解题分析详解复盘】(JavaPythonC++实现)

🚀 欢迎来到 ACM 算法题库专栏 🚀 在ACM算法题库专栏,热情推崇算法之美,精心整理了各类比赛题目的详细解法,包括但不限于ICPC、CCPC、蓝桥杯、LeetCode周赛、传智杯等等。无论您是刚刚踏入算法领域,还是经验丰富的竞赛选手,这里都是提升技能和知识的理想之地。 ✨ 经典…

力扣373场周赛题解

第一题&#xff1a; 这个题是一个简单题&#xff0c;数据范围也特别小&#xff0c;所以直接使用模拟方式暴力解答。 直接进行行移动的过程&#xff0c;然后检查移动后的结果是否与移动前相同。 代码&#xff1a; ​ public class Solution {// 将指定行循环右移k次pri…

6.前端--CSS-基础选择器【2023.11.26】

1.CSS基本选择器 标签选择器&#xff1a; 标签选择器&#xff08;元素选择器&#xff09;是指用 HTML 标签名称作为选择器&#xff0c;按标签名称分类&#xff0c;为页面中某一类标签指定统一的 CSS 样式。标签选择器可以把某一类标签全部选择出来&#xff0c;比如所有的 <…