zoukankan      html  css  js  c++  java
  • Trim

    Trim

    参考资料《深入浅出SSD》

    1.概述

    1)是一个指令,即Data Set Management(SATA)or Deallocate(NVME),用于告诉NAND闪存,SSD要擦除哪些数据。

    2)当相关页面的数据可以被覆盖时,操作系统会给SSD发送一个trim指令,SSD控制器等到操作系统执行删除或再次写入时,

       将执行安全擦除操作。

    3)因为在写入过程中不用花时间去擦除原有的数据,所以写入速度会快很多。

    2.作用

    增强SSD的性能,延长SSD的寿命

    3.SSD处理Trim命令的流程

    前提条件:逻辑页0~7的映射,分别写在物理地址PBA a~h

    说明

    1)一般FTL有3个表,

      FTL映射表记录每个LBA对应的物理页位置;

      Valid Page Bit Map(VPBM)记录每个物理块上哪个页有有效数据;

      Valid Page Count(VPC)记录每个物理块上的有效页个数

    2)通常GC会根据VPC进行排序来回收最少有效页的闪存块

    3)VPBM为了在GC时只读有效数据(有的FTL省略这个表)

    4)FTL的映射往往是非常分散的,连续的逻辑页对应地址会在很多不同的闪存块上

    流程

    1)主机向SSD发送Trim命令,删除0~7的逻辑页上的数据,让SSD可以把这些数据当做垃圾来处理

    2)SSD清除L2P table到空地址

    3)清除Valid Page Bit map上对应的bit

    4)重复2,3,4直到完成每一个LBA

    5)根据新的VPC重新 计算GC的优先级

    6)回收最少VPC的block

    7)擦除全是垃圾的block

    4.案例:用户删除文件

    1)操作系统把文件划分为若干个逻辑块,然后写入SSD的闪存空间

    2)当用户删除文件A时,实际上它只是切断了用户与 操作系统的联系,即用户访问不到这些地址空间

    3)但是在SSD内部,逻辑页与物理页的映射关系依然存在,即文件数据依然是有效的,如下图

    4)在没有Trim前,SSD无法知道这些被删除的数据是否无效,必须等到系统要求在相同的地方(用户空间,逻辑空间)写入数据时才知道数据是无效的,进而放心删除

    5)由于SSD不知道这些数据是无效的,在做垃圾回收时,仍把它们当做有效的数据进行数据搬移,这不仅影响性能还影响SSD的寿命(写放大增大)

    6)当用户需要删除一个文件时,操作系统发trim命令给SSD,告诉SSD该文件对应的数据无效了;

       这样SSD在做垃圾回收时,回把这些删除的数据抛弃掉,而不是去做无谓的数据迁移

     

    5.注意

    Trim命令不会触发GC

  • 相关阅读:
    POJ 1953 World Cup Noise
    POJ 1995 Raising Modulo Numbers (快速幂取余)
    poj 1256 Anagram
    POJ 1218 THE DRUNK JAILER
    POJ 1316 Self Numbers
    POJ 1663 Number Steps
    POJ 1664 放苹果
    如何查看DIV被设置什么CSS样式
    独行DIV自适应宽度布局CSS实例与扩大应用范围
    python 从入门到精通教程一:[1]Hello,world!
  • 原文地址:https://www.cnblogs.com/marton/p/12638232.html
Copyright © 2011-2022 走看看