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

FTL-- GC 垃圾回收

引入概念:

OP :独立于用户看的见的容量之外的容量,可以看作是隐藏的容量
WA:写放大,也就是用户写入一笔数据对NAND来说需要写入更多,造成写放大

OP作用:

多出来的空间一般用于存储一些固件的L2P表,更换坏块,GC时零时调用出来做数据搬移等等。OP对于整个SSD的寿命以及随机写性能以及写放大是有帮助的
简单说,OP越大,寿命越长,写性能越强,写放大越小
比如我们一块NAND实际容量256G的SSD,在Host端下识别为240GB,其中16GB就是OP。
OP比例 = (闪存空间-用户空间)/ 用户空间

GC作用:

数据更新的时候,由于闪存不可覆写,所以需要擦掉旧数据写入新数据
假如我们一个Block是一个9宫格,其中三个是无用数据,6个是有用数据,假如我们一直不做处理,当数据越来越多,达到SSD的存储上限,可能会发现,原本240G的硬盘只能存储不到240G的文件,我删除文件并没有让原本占用的空间释放出来
所以,为了避免这样的状况就需要及时整理我们的Block,把里面不需要的垃圾数据清除出去,于是乎,我们需要把有用的数据读出来,然后擦除掉整个Block,再把有用的数据写进去。

WA

垃圾回收就会造成写放大,相当于我们写入一笔数据,但实际NAND为了腾出这笔数据的存放空间,自己做了GC,需要把其他有用资料读出来,再一起写进去。所以对于SSD来说,实际写入的资料要大于Host传过来需要保存的资料量的
于是得到公式:
WA = NAND写入量/Host 写入量

然后引入一个 有效数据计数的概念
上文提到GC是清除掉block上的不需要的数据,那么如何得知这个Block上多少数据是需要的,多少数据是无效的,挑选那些Blcok做GC可以更高效呢?这就需要用到 有效数据计数 ,类似会把每个Block上有效的page计数,这样做GC时优先选择有效数据低的block进行操作.
所以FTL上还有另外两张表,
VPBM(Valid Page Bit Map) 记录物理块上那个page上的数据是有效数据
VPC(Valid Page count)记录物理块上的有效Page数

另一个是如何得知这些数据是无效数据了呢?
引入另一个概念trim
我们在Host端删除文件的时候,系统同时也会下发命令告知SSD,这个我不再需要了,于是乎SSD会把这些资料标注起来,凡是打上标签的都是不需要的资料,后续SSD可以进行处理

理论上,主动下发trim命令后,对Host而言,在重新读这个位置,SSD应该要回复空数据


http://www.kler.cn/a/145458.html

相关文章:

  • 【动态规划】--- 斐波那契数模型
  • 光学设计MTF和艾里斑 像元的关系
  • 挖掘机的市场现状和发展前景:全球增长潜力,重塑基础设施建设新篇章
  • vue3中自定一个组件并且能够用v-model对自定义组件进行数据的双向绑定
  • 智能体0门槛开发
  • C# 中 default 使用详解
  • [ubuntu]ubuntu上如何彻底卸载C++的opencv而不影响下次安装使用
  • 物联网后端个人第十二周总结
  • 有关HarmonyOS-ArkTS的Http通信请求
  • 【已解决】HBase 2.2.6 集群部署后,从节点未启动 HRegionServer
  • 浅用tensorflow天气预测
  • 基于亚马逊云科技大语言模型等服务打造企业知识库
  • flv视频轮播功能(单个时)
  • 算法通关村第一关—Java链表(青铜)
  • SpringBoot——LiteFlow引擎框架
  • 项目启动出现白屏问题需要刷新后才能显示解决方案
  • MySQL的体系结构与SQL的执行流程
  • uniapp+vue3路由跳转传参
  • git提交报错error: failed to push some refs to ‘git url‘
  • GLP-1 , GLP-1R
  • Linux环境下自动化创建大量的账号
  • Javascript的闭包有哪些应用?
  • 城市NOA加速落地,景联文科技高质量数据标注助力感知系统升级
  • 【公网远程手机Android服务器】安卓Termux搭建Web服务器
  • 电商又有大动静,又一短视频进军电商领域!
  • CountDownLatch实战应用——批量数据多线程协调异步处理(子线程执行事务回滚)