第4章 SSD核心技术:FTL 4.3-4.5

这篇具有很好参考价值的文章主要介绍了第4章 SSD核心技术:FTL 4.3-4.5。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

4.3 垃圾回收

4.3.1 垃圾回收原理

      WA(Write Amplification),即写放大。

      OP(Over Provisioning),即预留空间。

4.3.2 写放大

 第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

        对于空盘来说(未触发GC),写放大一般为1,即用户写入多少数据,SSD写入闪存也是多少数据。

       GC触发后,WA怎么算?以下面的Block为例,深色的是垃圾数据,浅色的是有效数据,

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

 一共36个方块,其中有12个有效数据块,做完垃圾回收后,需把这12个有效数据块写回,如下,

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

 第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

        

        增大OP为何能减小写放大?

        OP比例 = (闪存空间 - 用户空间)/(用户空间)。

        SSD容量 = 主机端看到的SSD大小,即用户空间。

        闪存空间 = SSD容量 + OP空间。

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

 

       影响写放大的因素主要有:

        (1)OP:OP越大,写放大越小;

        (2)用户写入的数据Pattern:顺序写,GC做的量就少,写放大就小;

        (3)GC策略:挑选有效数据最少(垃圾数据最多)的Block,写放大就小;

        (4)磨损均衡:为平衡每个Block的擦除次数,需要数据的搬移,写放大就大;

        (5)读干扰和数据保持:数据搬移增加写放大;

        (6)主控:带压缩和不带压缩的控制器会影响写放大;

        (7)Trim:有没有Trim,对写放大影响很大。

4.3.3 垃圾回收实现

   1. 步骤

      (1)挑选源Block;

      (2)从源Block中找到有效数据;

      (3)把有效数据写入到目标Block。

  详细步骤如下:

     (1)挑选源Block。

          一般常见的算法是挑选有效数据最小的Block,这样需要重写的有效数据越少,写放大页越小。这种BPA算法叫做Greedy算法,是绝大多数SSD采用的一种策略。

    (2)把数据从源Block读出来。怎么读才最有效率?有以下三种方法

        1)方法一

         固件FW在往一个Block上写入逻辑页时,会更新和维护闪存块的有效数据量,因此可以快速挑选中源闪存块。

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

         该方法的缺点:固件开销大。

         2)方法二

         如果没有每个闪存块的有效数据Bitmap,FW做GC时,可以选择把所有数据都上来。那,这些数据中,哪些是有效数据(需要重写的)呢?

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件 第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

         该方法的缺点:GC做的慢。

        3)方法三         第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

 

     (3)重写。即把读出来的有效数据写入闪存。

4.3.4 垃圾回收时机

     有两种:前台垃圾回收和后台垃圾回收。均是由SSD自己内部控制的

  1. 前台垃圾回收Foreground GC

        当用户写入数据时,可用的Block小于一定的阈值,此时需要做GC,以腾出空间给用户写。

        被动的做GC

  2. 后台垃圾回收BackGround GC

        在SSD空闲(Idle)时,SSD主动去做的GC。

4.4 Trim

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件 

         Trim是一个新增的ATA命令(Data Set Management)。当用户删除一个文件时,操作系统会发trim命令给SSD,使SSD知晓这些数据已无效,可以被回收掉,从而避免了无谓的数据搬移。

       第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

4.5 磨损平衡Wear Leveling

  1. 含义:磨损平衡,就是让SSD中的每个Block的磨损(擦除)都保持均衡。

  2. 需要磨损平衡的原因:闪存是有寿命的,即擦写次数有限。

  3. 如何实现磨损平衡的?

     冷数据(Cold Data):用户不经常更新的数据;

     热数据(Hot Data):用户频繁更新的数据;

     年老的(Old):擦写次数(EC,Erase Count)比较多的Block;

     年轻的(Young):擦写次数比较少的Block。

4. 磨损平衡算法

     有动态磨损平衡(Dynamic WL)和静态磨损平衡(Static WL)两种。

     动态磨损平衡:把热数据写到年轻的Block上;

     静态磨损平衡:把冷数据写到年老的Block上。

第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

 第4章 SSD核心技术:FTL 4.3-4.5,SSD入门学习,嵌入式硬件

      为什么冷热数据混在一起不好呢?冷热数据混合在一起,那么冷数据就可能经常需要被搬移到另一个Block上,会引入额外的写,导致写放大增大。

     如何解决该问题呢?做静态磨损平衡的时候采用专门的Block存放冷数据。

        文章来源地址https://www.toymoban.com/news/detail-544508.html

到了这里,关于第4章 SSD核心技术:FTL 4.3-4.5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包