前面说过,闪存的读写单位为页,而页的大小一般为4KB或8KB,但我们的操作系统读写数据是按HDD的扇区尺寸进行的(512Byte(字节)),更麻烦的是闪存擦除以块作单位,而且未擦除就无法写入,这导致操作系统现在使用的文件系统根本无法管理SSD,需要更换更先进、复杂的文件去解决这个问题,但这样就会加重操作系统的负担。
       而为了不加重操作系统的负担,SSD采用软件的方式把闪存的操作虚拟成磁盘的独立扇区操作,这就是FTL。因FTL存在于文件系统和物理介质(闪存)之间,操作系统只需跟原来一样操作LBA即可,而LBA到PBA的所有转换工作,就全交由FTL负责。(请看下图)
       
       FTL算法,其实就是一种LBA到PBA的映射。当文件系统发送指令要写入或者更新一个特定的逻辑页时,FTL实际上是把数据写入到一个不同的空闲物理页并更新映射表(LBA和PBA的关联数据),并把这个页上包含的“旧数据”标记为“无效”(更新后的数据已经写入新的PBA,旧地址的数据自然就失效了)。正是因为FTL的存在,操作系统才能把SSD当成HDD那样操作,因此FTL转换的性能也就直接影响SSD的性能表现。
       我们现在看下图,假设在page0上写入数据(物理地址n),接下来写入数据到page1(物理地址n+1)。接着page0数据被更新,但是更新后的数据并不是覆盖上去,FTL会把它写入到地址(n+2)上,然后标记(地址n)为“无效”。经过多次这样的操作后,这个块上就会装满了许多“有效”及“无效”的数据。如果要再次写入到这个块,就需要先擦除整个块的数据,当然就需要先把所有“有效”的数据复制到另外的空白块上再进行擦除。这样的操作就是GC(即垃圾回收,相关知识在后面会独立介绍)。
       

FTL(Flash translation layer)闪存转换层的更多相关文章

  1. A Mixed Flash Translation Layer Structure for SLC-MLC Combined Flash Memory System

    http://blog.sina.com.cn/s/blog_502c8cc40100pztk.html 摘要 1.In this paper, we propose the SLC-MLC mixe ...

  2. MNFTL: An Efficient Flash Translation Layer for MLC

    1. we propose two approaches, namely, concentrated mapping and postponed reclamation, to effective r ...

  3. VMware的存储野心(下):虚拟卷和闪存缓存

    http://storage.chinabyte.com/187/12494187_2.shtml 在上一篇<VMware的存储野心(上):软件定义.分布式DAS支持>中,我们分别讨论了& ...

  4. 固态硬盘SSD与闪存(Flash Memory)

    转自:http://qiaodahai.com/solid-state-drives-ssd-and-flash-memory.html 固态硬盘SSD(Solid State Drive)泛指使用N ...

  5. eMMC真能优化成UFS?谈谈手机闪存的文件系统

    和UFS闪存相比,eMMC的性能更弱,同一型号的手机混用这两种规格的闪存,让一些消费者感到了不满.对此,厂商称通过优化,eMMC的产品也可以获得优秀的体验.这个优化到底是怎么回事?根据以往的一些宣传, ...

  6. 原创:应用串行NOR闪存提升内存处理能力

    在嵌入式系统中,NOR闪存一直以来仍然是较受青睐的非易失性内存,NOR器件的低延时特性可以接受代码执行和数据存储在一个单一的产品.虽然NAND记忆体已成为许多高密度应用的首选解决方案,但NOR仍然是低 ...

  7. 闪存主控IC的作用

    闪存主要是由闪存芯片.主控芯片.晶振.PCB板等部件组成的.其中主控芯片相当于闪存的“灵魂”,它控制着闪存的工作.主控芯片也是处理单元,在里面写入的程序对整个电路做控制.主控IC是把flash跟hos ...

  8. U盘中的闪存白片与黑片

    简单的说,黑片的概念主要用于芯片,白片的概念既用于芯片也用于闪存卡.黑片就是指芯片工厂选出的淘汰的次品,没有打上工厂标和芯片型号的芯片,这样的芯片都经过个种渠道流通到市场上来,现在很多U盘大厂大量的采 ...

  9. NAND闪存颗粒结构及工作原理

    NAND闪存是一种电压元件,靠其内存电压来存储数据,现在我们就来谈谈它的结构及工作原理. 闪存的内部存储结构是金属-氧化层-半导体-场效晶体管(MOSFET),里面有一个浮置栅极(Floating G ...

随机推荐

  1. C语言实现有序二叉树(1)

    在cpp中使用的C语言 头文件 /* 有序二叉树 BsTree */ #ifndef _BT_H #define _BT_H /*节点*/ typedef struct BsTreeNode { in ...

  2. HTML5兼容IE各版本的写法

    IE下判断IE版本的语句 <!--[if lte IE 6]> <![endif]--> IE6及其以下版本可见   <!--[if lte IE 7]> < ...

  3. submit与onsubmit(转)

    发生顺序:onsubmit -> submit 1.阻止表单提单: <script>function submitFun(){    //逻辑判断    return true; / ...

  4. AutoIt 函数学习之----Send函数

    Send: 作用:向激活窗口发送模拟键击操作. 语法: send('按键'[,标志]) 参数: 按键:要发送的按键序列. 标志:[可选参数] 更改程序处理“按键”的方式:  标志 = 0 (默认),按 ...

  5. ETL中的数据增量抽取机制

    ETL中的数据增量抽取机制 (     增量抽取是数据仓库ETL(extraction,transformation,loading,数据的抽取.转换和装载)实施过程中需要重点考虑的问 题.在ETL过 ...

  6. 强大的DELPHI RTTI–兼谈需要了解多种开发语言

    一月 27th, 2005 by 猛禽 风焱在<“18般武艺”?>中说到他碰上的被多种语言纠缠的问题.我在回复里说: 很多语言只要能看懂几分就行了,没必要每一种都精通 但是如果只会很少的一 ...

  7. Saiku图表导出时中文显示问题的解决方法

    Saiku图表导出时png,jpg,pdf三种格式的中文显示都有问题,目前找到一种不太完善的解决方法(中文可以显示但不清晰),需要修改Saiku项目下的ExporterResource.java文件, ...

  8. poj2486 Apple Tree (树形dp)

    题意:有一颗苹果树,树上的u节点上有num[u]个苹果,树根为1号节点,囧king从根开始走,没走到一个节点就把接点上的苹果吃光,问囧king在不超过k步的情况下最多吃多少个苹果. 解题思路:处理出两 ...

  9. 快速定位MS Sql Server 数据库死锁进程

    最近在做一个大型项目,由于数据设计采用离散型数据库设计,以方便需求变更及用户自定义流程要素,因为要素用户自定义,数据完整性靠代码约束变得不太现实,只能依靠表间关系来约束,结果因此导致数据的操作经常产生 ...

  10. 使用 AngularJS 从零构建大型应用

    0.导言 1.准备工作 2.构建框架 3.丰富你的directives 4.公用的services 5.用controllers组织业务 导言 纵览线上各种AngularJS教程,大部分都是基础与一些 ...