PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

SSD深度技术解析---FTL层算法对性能的影响

  [复制链接]
跳转到指定楼层
1#
neeyuese 发表于 2011-9-19 01:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:30051|回复数:35
相信大家对美光C400/M4的最新固件提升性能,对于SandForce不同固件之间性能差距的表现还历历在目,一个固件更新竟然可以改变那么大?这到底是啥道理?本次解析我就来谈谈我自己的理解吧。

这些对性能提升或者限制的根本原因主要是对SSD内部的FTL层做了改动,那么啥是FTL层呢?这是SSD的性能表现最关键的一个层面,里面包含了无数开发技术人员的心血。

FTL层就是一个让闪存完全模拟传统硬盘操作的软件层,有了FTL层,闪存设备才能使用,FTL层的效率直接影响设备的性能表现。



FTL层起到的作用主要有下面几部分:

1. 性能的表现:

A. 逻辑和物理地址的映射 (Mapping)
B. 垃圾回收的处理。 (GC)
C. 增量空间的供给。 (OP)
D. 冷/热数据的交换处理。
E. Plane,芯片,通道间的并行处理。
F. 任务请求的排序。
G. 缓冲区的管理。
等等。。。。

2. 稳定性的表现:

A. 坏块的管理。
B. 磨损平衡的处理。
C. 掉电恢复的处理。
D. ECC的处理。
等等。。。。

3. 其他功能的表现:

A. 加密的处理。
B. 压缩的处理。
C. 重复数据删除的处理。
等等。。。。

------------------分析FTL层的影响------------------------

我们来看下Barefoot-ECO主控搭配34nm的Intel MLC颗粒在原版固件下的性能。

Barefoot主控制器的参数:
▪ ARM7TDMI-S
▪ 96KB SRAM
▪ SATA 2.0 (3Gbps)
▪ Mobile SDRAM 64MB
▪ NAND flash 8/12/16-bit BCH ECC per sector
▪ SDRAM 2-byte RS ECC per 128 +4 bytes
▪ Maximum 64CE’s (4 channels, 8 banks/ch)
▪ System bus running up to 175MHz

SSD主控制器是4通道16bit的,所以内部拓扑图如下:



由于一个Bank是16bit的,但是使用的闪存是8bit的接口,所以用2颗闪存并联,分别处理高8bit和低8bit。




Barefoot在FTL层里重新定义了一个虚拟Page尺寸=颗粒物理Page尺寸 X 2(16bit并联)X 2Plane(单颗粒2plane),34nm MLC的Page为4KB,所以这里虚拟Page尺寸为16KB。




上面是采用这个主控的SSD的测试图,颗粒由128GB的Intel 34nm MLC组成,如果看随机4KB的速度话,9.63MB/s,我们来计算下。



Intel L63B颗粒参数:(34nm MLC)
Multilevel cell (MLC) technology
— Page size: 4,320 bytes (4,096 + 224 bytes)
— Block size: 256 pages (1,024K + 56K bytes)
— Plane size: 2,048 blocks
— Random read: 50 μs
— Sequential read: 20 ns
— Page program: 900 μs (TYP)
— Block erase: 2 ms (TYP)




内部操作是这样的,16KB拆分成4个4KB,分别写入一个通道的颗粒A(高8bit)和颗粒B(低8bit),然后每个颗粒里有2个Plane(T1代表Plane 1,T2代表Plane 2)

时间消耗计算: 颗粒A(T1)约等于 4320 X 20ns = 86.4μs . 颗粒A(T2)约等于 4320 X20ns = 86.4μs 颗粒B(T1)约等于 4320 X 20ns = 86.4μs . 颗粒B(T2)约等于 4320 X20ns = 86.4μs
总时间消耗(16KB编程总时间):   约等于 (86.4μs X 4) + 900μs = 1.245ms。
IOPS计算:1秒/1.245ms 约等于 800IOPS, 800IOPS X 16KB = 12.8MB/s , 去掉主控指令,数据包,ECC,主机接口延迟等等开销(20%),最后得到接近10MB/s的随机4KB性能。



如果我们把颗粒换成SLC的话,因为SLC的编程时间比MLC颗粒短了3倍以上,因此采用这个算法的主控随机4KB速度也会提高约3倍。下面这个就是SLC的颗粒跑的成绩。




如果我们改动下FTL层的算法,把指令集中起来发送到全部4个通道会如何?




理论上来说这样做之后,随机4KB性能可以提高接近4倍,实际表现会如何?



这么的改动后,128GB MLC的颗粒已经可以达到甚至超过之前FTL算法搭配SLC的性能。

很惊讶吧,即使完全相同的硬件,不同的FTL就可以造成那么大的差距,所以说FTL层影响SSD的性能发挥一点不过分。
这也很好的解释了即使Intel 510和美光C400使用的主控相同,但是由于固件内部FTL层的代码不同造成了完全2种类型的性能表现。

本文总结:以当前工艺来说,一个闪存芯片的速度(MLC Die),一般来说最大只有持续读取150MB/s附近,持续写入速度也不会超过50MB/s(同步模式或者DDR模式)。如果SSD在读写持续文件时,只使用1个通道内的1个闪存芯片来读写的话,那么大家会见到SATA 6G接口的持续只有150MB/s和50MB/s的SSD。可想而知,SSD的操作是靠着把一个大文件拆分,经过主控制器的各个通道,分别写入通道下的所有闪存内,来达到高速度的道理。上文中,虚拟Page起到的主要就是合并拆分的作用,但这个定义并不适用所有的SSD控制器FTL层的操作方式,FTL层是各家主控固件的机密,做法各异。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1活跃度 +100 收起 理由
无心飘落 + 100 精品文章

查看全部评分

2#
James007ss 发表于 2011-9-20 16:48 | 只看该作者
所以其实真正显示厂商实力的是固件的算法怎么写,SF的盘,再多品牌,也都是贴牌的,固件算法是SF说了算。可惜消费级除了SF外,能买到的其它选择也就只有INTEL和美光了。
3#
tux2049 发表于 2011-9-20 17:09 | 只看该作者
这是体现厂商真正功底的啊
4#
kb000827 发表于 2011-9-20 19:10 | 只看该作者
看不太懂 觉得很强
5#
hnlgy 发表于 2011-9-20 20:27 | 只看该作者
拜读浴室新作,学习了!
6#
Mufasa 发表于 2011-9-20 21:17 | 只看该作者
底层的东西,看着确实是清楚透彻。
7#
Mufasa 发表于 2011-9-20 21:21 | 只看该作者
本帖最后由 Mufasa 于 2011-9-20 21:23 编辑

发多了一个。。。。

关于主控把数据拆分以后通过多个闪存通道存储,这个我在其他地方也看到过。

不过我还有点小疑问是。
物理地址和逻辑存储的映射表,是放在SSD的片上DRAM里面的吗?
还是有另外的手段?
(因为放在片上DRAM里面,存在停电瞬间无法写入的问题)
8#
neeyuese  楼主| 发表于 2011-9-20 21:34 | 只看该作者
映射表存放在NAND里,启动时调用进SRAM/DRAM,一般都是如此。
9#
hjd19821210 发表于 2011-9-20 21:41 | 只看该作者
拜读浴室新作,学习了!
10#
cwjragnarok 发表于 2011-9-20 22:09 | 只看该作者
看懂了,如果按照每个厂商各异的话,那么就是说上面举例的方案只是针对这个主控而成的ftl优化方案吧?
11#
neeyuese  楼主| 发表于 2011-9-20 22:21 | 只看该作者
只是针对这个主控某个固件的ftl方案里的性能处理部分的基础,因为如果这么改动ftl处理方式的话,会造成别的地方出现问题,比如合并写入,势必增加掉电风险,需要在外围电路,内部缓存处理上另外做调解等等。
12#
cwjragnarok 发表于 2011-9-20 22:28 | 只看该作者
只是针对这个主控某个固件的ftl方案里的性能处理部分的基础,因为如果这么改动ftl处理方式的话,会造成别的 ...
neeyuese 发表于 2011-9-20 22:21

明白,感谢解答
13#
maxforce 发表于 2011-9-20 22:41 | 只看该作者
顶完慢慢看
14#
Liuxudong926 发表于 2011-9-21 01:38 | 只看该作者
那么这么说510还有提升性能的空间?

不过英特尔把它定位企业级,性能不是关键寿命,故障率才是。

也许M4再努力努力让英特尔有压力那么510就会降价,改固件变成发烧友的定位了。
15#
neeyuese  楼主| 发表于 2011-9-21 09:21 | 只看该作者
510是消费级的,710才是企业级的,看价格就知道了。
510有提升空间,不过Intel不可能让他提升,费时费力。
16#
liwenchao 发表于 2011-9-21 15:06 | 只看该作者
了解了一下底层的的知识。那颗粒的耐久度是什么决定的?
17#
bello 发表于 2011-9-21 21:09 | 只看该作者
拜读浴室新作,学习了!
18#
wohengdkj 发表于 2011-9-22 23:53 | 只看该作者
拜读浴大新作,学习了!
19#
zjzkl 发表于 2011-9-23 17:30 | 只看该作者
浴室   心中的神{:1_305:}
20#
nde123456 发表于 2011-9-23 22:34 | 只看该作者
映射表存放在NAND里,启动时调用进SRAM/DRAM,一般都是如此。
neeyuese 发表于 2011-9-20 21:34


每次写操作都会同时导致修改FTL映射表,因此这个表是SSD中写入最频繁的数据结构。

关于“映射表存放在NAND里,启动时调用进SRAM/DRAM”,能不能麻烦再详细一点解释下。
例如:
1.为什么不完全放在SRAM中,映射表太大SRAM放不下吗?
2.SRAM/DRAM起什么作用?读缓存?还是写缓存?机制大概是怎样的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部