zoukankan      html  css  js  c++  java
  • FTL-映射管理

    映射管理

    参考资料《深入浅出SSD》

    映射的种类

    1.块映射

    1)划分标准,以闪存的块为映射粒度

    2)注意,一个用户逻辑块可以映射到任意一个闪存的物理块,但是映射前后每个页在块中的偏移不变

    3)优缺点,映射表只存储块的映射->所需存储映射表的空间小;

          连续大尺寸的读写性能好,但是小尺寸的写性能很差;

        (即使只写一个逻辑页,也需要把整个物理块数据读上来,然后改变逻辑页的数据再整个块写入->性能差)

    4)用户空间被化成一个个逻辑区域,每个区域与闪存块的大小相同

    2.页映射

    1)划分标准,以闪存的页为映射粒度 ,一个逻辑页可以映射到任一物理页中

    2)注意,由于闪存页远比闪存块多,因此需要更多的空间来存储映射表

    3)优缺点,性能很好,尤其体现在随机写上

    4)用户空间被化成一个个逻辑区域,每个区域与闪存页的大小相同

    3.混合映射

    1)划分标准,块映射和页映射的结合

    2)一个逻辑块映射到任一物理块,但是块中的每个页的偏移并不是固定不变的,块内采用页映射的方式,一个逻辑块的逻辑页可以映射

      到对应物理块的任一页,因此它所需要的空间以及性能都是介于块映射和页映射之间的。

    3)用户空间划分成一个个逻辑区域,逻辑区域和闪存块大小相同,每个逻辑块对应一个闪存块,但逻辑块内部有分成一个个逻辑页,与对应闪存页

      随机对应

    映射原理

    1.用户通过LBA访问SSD,每个LBA代表一个逻辑块(逻辑页,用户访问SSD的基本的单元,大小:512B/4KB/8KB)

    2.SSD内部,SSD主控是以闪存页(物理页)为基本单元读写闪存的

    3.用户写入一个逻辑页数据,SSD主控会找一个物理页把数据写入,SSD内部的映射表记录了这条映射

    4.下次用户再读这个逻辑页时,可以通过映射表中的映射关系找到闪存物理页中存储的数据

    5.案例

    SSD内部维护一张逻辑页到物理页地址转换的映射表

            V

    用户每写入一个逻辑页,就会产生一个新的映射关系,

    这个新的映射关系会加入或者更改映射表

            V

    当读取某个逻辑页时,SSD主控首先查找映射表,找到该逻辑页对应的物理页,

    然后访问闪存读取相应的数据

    6.映射表的大小

    SSD大小为256G,逻辑块数据大小为4KB -> 256GB/4KB = 64M个逻辑数据块; 

    每个逻辑数据块在闪存空间都有一个存储位置,即一个映射,闪存大小用4字节表示;

    存储64M个逻辑数据块在闪存中的地址需要64M*4B = 256M大小的映射表。

    总结:映射表大小为SSD容量的1/1024(物理地址用4B表示,映射页大小为4KB)

    7.对于带DRAM的SSD,DRAM的作用就是用来存储映射表的,优点是映射关系可以快速访问,如图

    例子:SSD工作时,只需查找DRAM中的映射表,获取到物理地址后读取闪存中的数据,只需访问一次闪存

     

    8.不带DRAM的SSD,一般采用二级映射,如图

     二级表是L2P表(Logical Address to Physical address),它被分成一块一块的,小部分缓存在RAM,大部分都存在闪存上

        一级映射常驻RAM,存储这些块在闪存中的物理地址,它不是很大,如图

    例子:SSD工作时,首先查看逻辑页对应的映射关系是否在RAM内,如果在直接根据映射关系读取闪存中的数据,

    如果不在,首先需要把映射关系从闪存中读取出来,然后再根据这个映射关系读取数据,需要读取量词闪存,底层有效带宽减少

     

    9.对于顺序读,映射关系连续,一次映射块的读可以满足很多用户数据的读,不带DRAM的SSD可以有很好的顺序读性能,

       对于随机读,映射关系分散,一次映射关系的加载基本只能满足一笔逻辑页的读,需要访问量词闪存才能完成读操作,性能相对会差

  • 相关阅读:
    c语言中的增量与减量········不要太聪明
    存储器··············RAM,SRAM,EEPROM 等等
    对于 sizeof(char)的一些零碎······
    C语言中float,double等类型,在内存中的结构
    同步异步存储器
    Linux的帧缓冲设备(Framebuffer)简介
    嵌入式 c 中结构体经常碰到_I、 __O 、__IO是什么意思?
    新型的按键扫描程序
    数据结构
    jQuery(八)选择器与选择方法
  • 原文地址:https://www.cnblogs.com/marton/p/12587494.html
Copyright © 2011-2022 走看看