当前位置: 首页 > article >正文

FTL——简介

说明:本文章内容来自《深入浅出SSD 固态存储核心技术 原理与实战.pdf》

什么是FTL?

FTL的全称是Flash Translation Layer,即闪存转换;

FTL的分类

FTL分为Host Based(基于主机)和Device Based(基于设备);
Host Based:FTL是在Host(主机)端实现,用的是计算机的CPU和内存资源,如下:
在这里插入图片描述

Device Based:FTL在Device(设备)端实现,用的是SSD上的控制器和RAM资源,如下:
在这里插入图片描述

FTL的作用

1.地址映射:记录每一笔用户数据逻辑地址到物理地址的映射关系;这也是FTL最重要的一个功能;
2.垃圾回收GC (Garbage Collection):由于闪存需要先擦除后才能写入,由于闪存块不能覆盖写,当写人一笔新的数据时,不能直接在老地方更改(闪存不允许在一个闪存页(Page)上重复写人,一次擦除只能写人一次),必须写到一个新的位置,因此,FW (FirmWare,固件)需要维护一张逻辑地址到物理地址的映射表。另外,往一个新的位置写人数据,会导致老位置上的数据无效化,这些数据就变为了垃圾数据。垃圾数据会占用闪存空间,当闪存可用空间不够时,FTL需要做垃圾回收,即把若干个闪存块上的有效数据搬出,写到某个新的闪存块,然后把这些之前的闪存块擦除,得到可用的闪存块,这就是GC (Garbage Collection,垃圾回收),是FTL需要做的一件重要的事情;
3.均衡处理(Wear Leveling):每擦除一次闪存块,都会对闪存块造成磨损,因此闪存块都是有寿命的,可以用PE(Program/Erase Count)数衡量。我们不能集中往某几个闪存块上写数据,不然这几块很快就会因PE耗尽而死亡,这不是我们想看到的。我们期望所有闪存块都用来均摊数据的写人,而不是有些块飞快磨损,而其他块毫无作为。所以FTL需要做Wear Leveling,让数据写人均摊到每个闪存块上,即让每个块磨损都差不多,从而保证SSD具有最大的数据写入量;
4.读干扰(Read Disturb):每个闪存块读的次数是有限的,读得太多了,上面的数据便会出错,
(Read Disturb)问题。
FTL需要处理读干扰问题,当某个闪存块读的次数将要达到一定阂值时,这些数据从该闪存块上搬走,从而避免数据出错;
5.数据保持(Data Retention):由于电荷的流失,存储在闪存上的数据是会丢失的。这个时间长则十多年,短则几年、几个月,甚至更短(这是在常温下,如果是在高温环境下,电荷流失速度会加快,数据保存的时间就更短了)。
如果SSD不上电,FTL对此也是毫无办法,因为没有运行机会。但一旦上电,FTL就需要对此做点什么,比如扫描闪存,发现是否存在数据保持问题,如果存在,则需要搬动数据,防患于未然。好的FTL,就需要有处理数据保持问题的能力。
6.坏块管理:坏块的症状是擦写失败或者读失败(ECC不能纠正数据错误)。坏块管理也是FTL的一
大任务。
7.Lower Page corruption:对MLC或TLC来说,存在Lower Page corruption的问题。即在对Upper Page/ExtraPage(和Lower Page共享存储单元的闪存页)写人时,如果发生异常掉电,也会把之前Lower Page上成功写人的数据破坏掉;
8.不同产商的FTL可能还会有其他功能;

note:后续章节将逐个介绍FTL的功能。。。

http://www.lryc.cn/news/2415239.html

相关文章:

  • 红帽认证-RHCE
  • 如何利用postfix发送邮件
  • 自定义Tooltip 组件:根据内容长度判断是否需要提示信息
  • 异步编程学习之路(五)-线程池原理及使用,2024年最新springcloudalibb面试题
  • SVN(subversion)及其使用
  • 常见的Dos攻击
  • Linux中软连接详解
  • 65个源码网站
  • BSS,ESS,SSID,BSSID,ESSID,VAP概念详解
  • JS中的字符串、数组、对象
  • Windows Installer CleanU(Windows 安装程序清理实用程序 )
  • Android反编译第一神器JADX,超40k star
  • 超链接语法介绍、路径部分应用(萌新必看)
  • 九、Linux C/C++ 实现DNS客户端请求域名IP
  • LinuxAIX常用命令(学会即上岗)
  • JQuery-Ajax 使用
  • # Java环境变量配置(附带多版本切换配置教程)
  • Linux学习(虚拟机快照的建立,删除,管理)
  • AI Studio PyTorch 环境配置
  • 管理SourceForge项目的方法[zz]
  • Windows批处理(cmd/bat)常用命令小结
  • Kubernetes简称k8s(超详细教程)
  • power designer概述
  • NCBI(pubmed)里医学主题词(MeSH)完整词库获取
  • GNN图神经网络的原理及GGNN、GCN原理及发代码分析
  • background-position的用法
  • C指针:回调函数
  • 文件下载时的Content-Type Content-Disposition的说明
  • 思科模拟器(Cisco Packet Tracer)6.2.0.0052安装步骤
  • windows安装 vnc server