仙行一步 发表于 2018-5-4 10:59

【PCEVA 玩转SSD】第7期 FTL作用及发展方向

由主编@Essence执笔编写的【PCEVA 玩转SSD】系列节目开播了
深入浅出的了解SSD的各种知识


我们主要投稿网站有优酷、B站和腾讯视频,欢迎大家观看。


优酷视频地址


B站视频地址
另外B站允许外链,如果想在这里看的可以直接点击下方的视频进行观看
PS:Chrome浏览器因为Flash协议问题,播放不了,请进入视频网站或者更换浏览器观看
http://static.hdslb.com/miniloader.swf?aid=22602485&page=1


腾讯视频地址



FTL作用及发展方向,固态硬盘主控要消失了?


经常有朋友问到,这我这个配置能不能加装固态硬盘啊?

我的联想笔记本能不能安装浦科特的硬盘?是不是必须到联想的售后装上才能用呢?


另外还有这样问的:十几年前的老电脑,那会儿还没固态硬盘呢,现在真的能升级固态硬盘吗?我怎么不敢相信呢?


其实这些问题答案都一样,统统可以装。别怕硬件老了不认识新硬盘,只要有SATA接口,固态硬盘统统可以装,统统能够兼容!一块SATA固态一把梭!


不同品牌的显卡、硬盘为何都能在电脑中工作?这种兼容性是基于它们遵守共同的接口或协议。几乎所有显卡都支持DirectX,固态硬盘都支持AHCI或NVMe协议,尽管由不同厂商制造,它们能够和谐相处的基础就是接口协议的兼容。


网上有很多段子调侃A卡和N卡的画面对比,虽然比较夸张,但相同的游戏通过不同显卡输出的画质的确是存在一些细微差异的。也就是说虽然软件接口(DirectX)相同,但实现方式(硬件架构及驱动)有差异。

而硬盘呢就不允许记录下来的数据有差异了,它们的个体差异之处体现在读写速度这些性能表现上。今天的话题就是谈谈影响固态硬盘性能的FTL映射表。在PCEVA玩转固态硬盘第一期中我们曾简单的聊过FTL,今天除了它的功能之外,还将介绍一些关于FTL新的发展方向。


第一部分:固态硬盘是如何与机械硬盘兼容的?

很多朋友都有疑问,机械硬盘和固态硬盘一个是机械盘片旋转,一个是闪存电子芯片,它们是如何做到兼容的呢?

原来,固态硬盘作为后来者,主动寻求了与机械硬盘的兼容,在闪存特性与传统机械硬盘操作方式之间通过FTL闪存映射表建立了一个桥梁。


固态硬盘的主控除了要管理闪存之外,还要维护FTL这样一个虚拟转换层,使得主机端认为连续的逻辑地址,能够在闪存当中随机化分布。


在FTL的基础上,固态硬盘主控还需要实现ECC纠错、垃圾回收、坏块管理和磨损均衡等功能,可以说主控要负责的任务非常多,所以就不难理解主控是现在固态硬盘里发热最大的部件了。


第二部分:FTL如何影响固态硬盘性能?

闪存的随机读取速度虽说要比机械旋转的盘片快很多,但终究是不如顺序读取速度高。以一颗没有SLC缓存的MLC固态硬盘为例,下图当中128K顺序读取速度是473MB/s,而128K随机读取速度则只有244MB/s。

再来看写入速度,大家都知道闪存写入要比读取慢,为什么这块固态硬盘的随机写入速度和顺序写入速度非常接近呢?一方面这是由于128K的测试区块比较大,可以被主控分解成多个小区块并行写入,另一方面也是由于主控在处理随机写入数据时会自动进行合并写入,尽可能将随机写入归并成对闪存的顺序写入,以便提升性能。


最理想的情况呢是固态硬盘在收到写入请求后,先将写入数据留在缓存里,等凑齐一定容量之后,一次性写满所有闪存晶粒中的一个Page页,这种情况下可以最大化发挥固态硬盘的并行处理效能。


把零碎的、逻辑地址随机的写入请求缓存后写入,就能达到接近于顺序写入的速度。




另一方面,写入到固态硬盘的数据总有删除的时候,这又涉及到了垃圾回收的效率。闪存的最小擦除单位是Block块,最理想的情况是整个块中的数据同时失效,这样就不必做有效页的搬移,可以直接擦除掉。


然而呢事与愿违,多数情况下固态硬盘通过缓存整理合并后一次性写入的数据,来源自多个不同的程序。有些程序写入的数据会长期留存,而有些程序写入的则是临时文件性质的,很快就失效。这就使得理想中的垃圾回收条件——一个块中数据同时被删除,很少能真正出现。


更为雪上加霜的是,随着3D闪存的发展,存储密度越来越大,同时每个block块的容量也越来越大,这就使得固态硬盘主控处理垃圾回收变得更加困难。


举个例子,很多年前的时候一个SLC闪存block的容量只有128K左右。固态硬盘要做垃圾回收,只要在128K的范围内捡出少量的有效页,就可以擦除整个闪存块了。


发展到15nm 2D MLC之后,一个block块的容量达到了4M左右。


再看64层堆叠的东芝3D TLC闪存,单个block块容量已经达到13MB以上。


再夸张一点,英特尔的第二代3D TLC,单个block块的容量达到了36MB左右。大家可以想象一下,在36MB的Block块当中,会有很多残存的有效页面,需要在垃圾回收之前提前读取并整理到其他地方,这个工作量是很大的。虽然一次性花上15毫秒可以擦除很多很多个存储单元,但擦除之前的准备工作更加复杂了,需要根据FTL查表与Page读取、Copy Back写入操作才能完成。

所以你不要看现在有些固态硬盘进入稳定态后为什么性能那么差呀,如果考虑到block容量增大给垃圾回收带来的困难,就不会再有那么多抱怨了,主控和固件设计起来很不容易的。


第三部分:微软的尝试

前边说的这些困难,都是为了给今天的核心内容做铺垫。我们知道,固态硬盘从问世之初就选择了主动去兼容和迁就原有的机械硬盘工作模式,即便有了NVMe取代AHCI成为专门的闪存接口协议,在操作系统层面上使用的依然是机械硬盘那老一套文件系统。


微软呢它觉得这件事它有责任,而且微软现在正在大力发展自家的云计算业务,也非常重视固态硬盘在数据中心应用中的性能问题,所以它就牵头发起了一项德纳里计划。

德纳里峰也就是麦金利山,是美国阿拉斯加州的一座山峰。微软将这项计划以德纳里峰命名,也是代表它所要处理和面对的数据体量。简单来说,德纳里计划的目标就是要让主机CPU或者由主机控制的独立加速芯片分担一部分原本由固态硬盘主控执行的任务,其中主要包括地址映射、垃圾回收和磨损均衡;而剩余部分与闪存管理相关的如数据纠错、坏块管理、断电保护,则继续由固态硬盘内的主控完成。

微软的思路很明确,软件的部分交给我管理,哪些数据该放到闪存哪个位置,我说了算,就像重新定义了文件系统一样,和过去不同的是现在这个全新的“文件系统”更懂闪存的心。而存储单元的健康状况涉及到闪存底层了,这方面是你闪存制造商熟悉的,还让固态硬盘主控自己来负责。

德纳里计划目前已经得到了全球主要闪存制造商的支持和参与,微软也与合作伙伴一起制造出了早期的原型产品,经过试验呢发现它的性能和延迟表现都比过去传统的固态硬盘有所提升。不过距离应用到家庭环境呢还需要一定的时间。

当然,家庭应用的写入量还是很小的,也没有数据中心级固态硬盘同时面对的大量虚拟机那样复杂,我们还可以等。固态硬盘依然处在一个快速发展的时期,不管是3D堆叠还是QLC类型的闪存,都将给我们带来日新月异的变化。在提升性能、提高耐久度方面更是有大量新技术不断问世,总之一句话:前途光明,未来可期。

感谢大家观看本期节目,欢迎关注PCEVA微信公众号,我们下期节目,再见。




yhhuada66 发表于 2018-5-4 13:18

好东西,干货呀,学习了

tualatin 发表于 2018-5-4 19:22

ftl就是老机械硬盘转换的毒瘤。

红色狂想 发表于 2018-5-5 16:59

在科普FTL时没有采用打酱油模式,理解起来略微吃力{:1_443:}

guangyunjian 发表于 2018-5-6 19:06

道理深入浅出,视频图片猥琐。期待微软。

cloudpopo 发表于 2018-5-14 11:47

看标题还以为是超光速(Faster Than Light)技术{:1_470:}
讲得不错。学习了。

haierccc 发表于 2018-5-15 19:07

SSD大大提高了PC的速度,善莫大焉!
页: [1]
查看完整版本: 【PCEVA 玩转SSD】第7期 FTL作用及发展方向