ftl有三种映射地址_NAND和闪存转换层(FTL)

我们使用的固态硬盘(SSD),U盘等存储设备,有别于机械硬盘,其实际存储颗粒为NAND。而NAND存储颗粒受其物理特性影响必然存在坏块,同时也不能直接写0写1。

NAND有别于机械硬盘,主要体现在一下几个方面。

一,如果你想往某个区域存储一个字节的数据,比如0x55,首先需要确认当前区域是没有写入过数据的,也就是必须是全部0xFF的,因为NAND写入的时候每个bit只能从1变成0,不能从0变成1。如果不是全FF,则需要擦除操作,讲该区域全部变成0xFF,才可以写入你想要的0x55写进去。

二,NAND还存在另外一个特性是数据容易出错,写进去的是0x55,回读可能是0x5A,这时候需要ECC算法将错误的数据纠正过来,ECC算法比较复杂,在此不论述。

三,NAND存储颗粒的擦写次数是有限的,一般一个块也就是3000次左右,不能无线擦写。

四,NAND存储颗粒是存在坏块的,也就是实际物理地址上的某个区域是不能正常存储数据的。

这些特性都导致电脑不能向机械硬盘一样直接操作NAND。比如我们的电脑管理了全部文件内容,管理这些文件内容的功能叫文件系统。类似FAT文件系统会在固定的区域存储所有的文件信息,包括文件名,大小,作者等,例如存储在地址0里面。而我们需要频繁的修改文件,那么地址0存储的文件信息就需要频繁的更新,假如存储地址0对应NAND地址0,那么这块控件将很快达到其擦写次数寿命,导致损坏,我们的文件信息就会发生错乱。而且NAND不接受直接写入,必须先擦除再写入,还需要记录NAND中的坏块在哪里,避免写入已经坏掉的区域。读取的时候还需要进行ECC纠错,防止数据出错,这都会大大增加系统的负担,是不会被厂家接受的。大家都懒,谁愿意为了你的问题而改变自己呢,除非你给钱。

FTL闪存转换增这时候被提出来了,其作用就是文件系统和NAND之间的沟通桥梁。对于文件系统来说,它操作的实际第一对象是FTL,依然向机械硬盘一样管理所有的数据,不需要变动,什么都不需要改,除了问题一定是你的,因为我没改。这样系统方恨开心。但是管理NAND的脏活累活就得FTL来做了,谁让SSD等厂家想卖钱呢。

a8820cbbdb9e9a8328d05c77ba5d6564.png

FTL算法,其实就是一种逻辑地址到物理地址的映射。当文件系统发送指令要写入或者更新一个特定的逻辑页时,FTL实际上是把数据写入到一个不同的空闲物理页并更新映射表(逻辑地址和物理地址的关联数据),并把这个页上包含的"旧数据"标记为"无效"(更新后的数据已经写入新的物理地址,旧地址的数据自然就失效了)。正是因为FTL的存在,操作系统才能把SSD当成机械硬盘那样操作,因此FTL转换的性能也就直接影响SSD的性能表现,而且FTL算法也是影响SSD寿命及稳定性的决定因素之一。

FTL还需要管理坏块,磨损均衡(与NAND寿命直接相关),ECC算法等功能,只有这样才能伪装的自己是一个机械硬盘,别人才会用你。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值