0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FTL垃圾回收,磨损平衡的学习笔记

SSDFans 来源:lq 2018-12-14 16:01 次阅读

垃圾回收的概念其实是很简单的,太多了资料可以看看就会明白,主要的经典算法就是Greedy policy,Cost-benefit policy, Cost-Age-Times(CAT)policy。这里我就简单说一下需要掌握的几个关键性概念:

1、预留空间 OP(Over Provisioning) 和 WAF(Write Amplification Factor)

由于WAF的大小和copy 有效数据有关,想要减少WAF的值出发点是减少copy。

2、掌握垃圾回收,沿着以下线路进行探索(1)GC的原因:块最终会被写满,必须时刻保证有free page 来满足新的写入需求(2)GC的过程:When to GC 什么时候唤醒GC操作->Which block选择作为victim block, 这里的选择方法就是上述提到的经典算法以及改进->How many blocks将要被erase 擦除,只要涉及到擦除,就会和磨损平衡有关->How to 写回这些有效数据,Where to 分配这些有效数据,这里称之为Data redistribution policy数据再分配策略Where 来分配新请求写入的数据

想要改进GC的算法,最基本的简单的就是按照上述来思考。

现如今的都是在经典算法上进行改良。我在学习的时候做过三种算法的模拟,后来自己加了一个Two-block Policy 来实现block再分配,做了一个简简单单的改良,WAF写放大,以及copy次数显著减少。就是有两类block,一类是host write block, 写入的是从host发来的新数据;另一类是copy write block,写入的是victim block上的有效数据。Z这样简单的分类对后续学习磨损平衡很有帮助。包括那些经常更新的数据还有不经常更新的数据怎么来做处理都是学习和思考的点。

对Wear Leveling 磨损平衡的认知:

在写数据操作不断更新的情况下,使得物理闪存块的擦除操作频繁发生,而每一个块上的擦除操作次数不是无限的,是有一定寿命的,也就是经常看到的Program/Erase Cycle 来衡量闪存的寿命。一个block擦除次数到达了一定的阈值,会使得这个块报废,降低闪存的寿命。磨损平衡的出发点是不能一直让那几个块一直不断的erase,应该让所有的block平摊这个任务,最好的理想状态就是每个block的擦除次数是平均的,达到平衡的效果,以此来延长闪存的寿命。

拿一张纸记笔记来说,如果不断的更改内容在一处,不断的用橡皮擦erase,用不了几次,这里就会破掉,因此每次擦除尽量在整张纸上找刚擦一两次的,这会延长纸张整体寿命。

关于闪存的预期寿命:

这个overhead是指文件系统和闪存管理数据结构的开销。

在看了很多论文以及材料的时候以下是常常会接触到的概念:

在研究磨损平衡的时候把擦除次数Erase Counts多的块称之为old blocks,这类块年岁已高,寿命即将到达尾声,因此尽量不要让他们再经受擦除的折磨来长命百岁,任务就给那些擦出次数少的块成为young block,年轻力壮,可以帮老人们多多承担擦除的任务。

前面有提到,擦除是由于用户写入数据不断更新而造成的,那些不断更新的数据称之为hot data,具有high locality,相对比,不常更新的称之为cold data。

在研究了经典的CAT垃圾回收算法时,因为Copy的有效数据可以是cold data 也可以是hot data,而不断更新的新的请求数据,那些也可以是cold data和hot data,那么怎样处理这些数据,怎么样分配闪存的 物理块,能够减少copy的次数,能够延长闪存的寿命,这里就会启发很多想法。

磨损平衡分为动态和静态两种:

动态磨损平衡:主要特点是下一次写数据选择那些擦除次数少的即young blocks来写,但是那些存放cold data的块的擦除次数是比存放hot data的少很多的,因此尽可能的把hot data 写进young blocks上,但是cold data不能一直占用擦出次数少的块,会造成失衡,因此需要静态磨损平衡,冷热数据的分离对性能影响很大。

静态磨损平衡:主要做的就是追踪所有的好块,把cold data从young blocks里面copy 到 older blocks中,这样可以让young blocks歇一歇。我们要记得磨损平衡不是为了减少copy次数,而是为了延闪存的寿命。

二者的比较动态磨损平衡是低成本并且降低静态磨损平衡的复杂度,静态磨损平衡是最大化的延长了寿命,所以要将二者结合。

磨损平衡的终极目标就是:

Hot data -> young blocks

Cold data -> old blocks

Hot-Cold Swapping 技术

核心算法(结合CAT垃圾回收算法):

每个block都记录着对应的擦出次数

定期检查所有块的擦出次数,这个激活期成为AP(Activation Period)

只要任何两个块的擦除次数之间的最大差异大于阈值,它们就会被交换

由于磨损平衡,会带来的性能开销会使得WAF增大。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 闪存
    +关注

    关注

    16

    文章

    1782

    浏览量

    114892
  • 算法
    +关注

    关注

    23

    文章

    4607

    浏览量

    92826

原文标题:FTL垃圾回收,磨损平衡的学习笔记

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AliOS Things KV组件的写平衡特性

    摘要: KV组件的写平衡磨损平衡)特性就是通过异地更新、垃圾回收等策略来平衡flash介质各个
    发表于 12-26 17:20

    固态硬盘垃圾回收方法

    由于NAND闪存的固有限制,写前擦除和擦除粒度较大,基于NAND Flash的固态硬盘(SSD)需要执行垃圾回收以重用失效页。然而垃圾回收带来的高开销会显著降低SSD的性能,也会直接影
    发表于 12-03 10:50 2次下载
    固态硬盘<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>方法

    基于逻辑区间热度的垃圾回收算法

    针对现有的NAND闪存垃圾回收算法中回收性能不高,磨损均衡效果差,并且算法内存开销大的问题,提出了一种基于逻辑区间热度的垃圾
    发表于 12-05 18:27 0次下载
    基于逻辑区间热度的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    Jvm垃圾回收机制及性能调优实战

    JVM中自动检测并移除不再使用的数据对象的这种机制称为:垃圾回收,简称GC。JVM通过使用垃圾收集器及使用相应的垃圾回收算法将内存中不再被使
    发表于 04-03 14:31 2次下载

    交大发布可回收垃圾分拣机器人,实现助力全国垃圾分类回收工作

    6月4日消息,交大中英国际低碳学院可回收垃圾分拣机器人,更是打破国外技术垄断,可实现每小时分拣垃圾5400次,并在大量垃圾中精准识别可回收
    的头像 发表于 06-04 14:31 2963次阅读

    Non-Balance磨损平衡算法:提升固态硬盘3倍以上寿命

    (Wear-Levelling)和垃圾回收(Garbage Collection)策略来规避这些问题的产生。 磨损平衡算法产生的背景 磨损
    发表于 03-26 15:02 1948次阅读
    Non-Balance<b class='flag-5'>磨损</b><b class='flag-5'>平衡</b>算法:提升固态硬盘3倍以上寿命

    智能垃圾回收机器人的应用优势是什么

    为什么需要垃圾回收机器人? 首先,垃圾分类回收是实现地球资源循环利用至关重要的一环,对于可持续发展有重大意义。垃圾分类也是对付
    发表于 07-22 09:26 2077次阅读

    智能垃圾回收机器人的应用优势有哪些

    为什么需要垃圾回收机器人? 首先,垃圾分类回收是实现地球资源循环利用至关重要的一环,对于可持续发展有重大意义。垃圾分类也是对付
    发表于 08-17 16:08 4247次阅读

    生活垃圾数据化分类回收方法及其回收系统(机械部分)

    一种生活垃圾数据化分类回收方法及其回收系统(机械部分)(1).doc 上传完成 删除 标题一种生活垃圾数据化分类回收方法及其
    发表于 11-05 18:18 0次下载

    详解JVM的垃圾回收算法和垃圾回收

    JVM 垃圾回收机制是对堆中没有使用的对象进行回收,那么判断对象是否“存活”就至关重要。在判断对象是否“存活”的方法中,我们会介绍引用计数算法和可达性分析法。
    的头像 发表于 03-29 13:55 1502次阅读
    详解JVM的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法和<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>器

    JVM入门之垃圾回收算法

    根据如何判定对象是垃圾垃圾回收算法分为两类:1、 「引用计数式垃圾收集」 (判定垃圾是通过引用计数器)别名:直接
    的头像 发表于 02-10 11:40 805次阅读
    JVM入门之<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>算法

    基于内部区域压实(IZC)的垃圾回收

    ​ ​ ​01 背景 ​目前基于闪存的固态硬盘保持着几十年前的块层接口,这在容量超额配置、页面映射表的DRAM、垃圾回收开销以及试图减轻垃圾回收的主机软件复杂性等方面带来了巨大的代价。
    的头像 发表于 06-30 10:28 1422次阅读
    基于内部区域压实(IZC)的<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>

    智能垃圾回收箱及其控制系统

    智能高效远程控制智能垃圾回收箱本文设计了基于机械传动、嵌入式系统和物联网技术的智能垃圾回收箱及控制系统,包括结构、硬件和软件设计,以及基于机智云后台服务器的操作系统,实现了用户信息识
    的头像 发表于 04-13 08:10 1207次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱及其控制系统

    智能垃圾回收箱控制系统硬件设计

    智能高效远程控制智能垃圾回收箱控制系统硬件部分的选型与设计是整个产品的基础,所有功能的实现都要围绕其进行开发。本章对智能垃圾回收箱控制系统的硬件进行详细设计。智能
    的头像 发表于 04-13 08:10 836次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱控制系统硬件设计

    智能垃圾回收箱功能实验

    需要系统地介绍智能垃圾回收箱软件硬件设计完成后的设备运行状况,包括正常工作和问题调试。同时,也要描述当所有设备正常工作时智能垃圾回收箱的操作流程。01硬件模块的试验在智能
    的头像 发表于 05-24 08:10 443次阅读
    智能<b class='flag-5'>垃圾</b><b class='flag-5'>回收</b>箱功能实验