PCEVA,PC绝对领域,探寻真正的电脑知识
  • 内容展现
  • 最新评论
市场新选择 浦科特M2S与M2P两款128GB SSD测试
2011-11-5 01:17| 发布者: neeyuese| 查看: 58643| 评论: 1
摘要:
技术分析 闪存FTL层对性能的影响

FTL层是SSD的性能表现最关键的一个层面,里面包含了无数开发技术人员的心血。

FTL层是一个让闪存完全模拟传统硬盘操作的软件层,是一种逻辑地址到物理地址的映射,当文件系统发送指令说要写入或者更新一个特定的逻辑页,FTL事实上是把数据写入到一个不同的空闲物理页并且更新映射表(逻辑地址映射物理地址的关联),并把这个页上包含的“旧数据”标记为“无效”。(更新后的文件已经写入新地址了,旧地址的文件自然就失效了)。这样即隐藏了闪存的“擦除”操作,完全模拟传统硬盘“覆盖”操作。(闪存不支持覆盖操作,只有擦除操作)。因此,有了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. 重复数据删除的处理。
等等

为了让大家更加了解本次测试的SSD性能差距造成的原因,我稍微讲解下闪存FTL层对性能的影响。(详细做法是厂商的核心机密,作者本人非业内人士,这里只是非常简单的原理解析,如有错误,还请指正。)

在FTL层里很重要的一环就是映射表的处理方式,直接影响SSD的性能表现(甚至稳定性)。

FTL层的映射表做法非常多,不过主要分为Page Mapping, Block Mapping, Hybrid Mapping 3类,如下图所示:

Page映射性能最好,如图中这样,逻辑页和物理页地址一一对应,但是最大的问题是需要大量的SRAM空间放映射表,打个比方,一个16GB的SSD,Page尺寸是2KB,则映射表至少是32MB。随着闪存越来越大,SRAM非常昂贵,则大容量SSD不可能做的下去。

Block映射性能最差,如图这样,逻辑页变成逻辑块,再计算对应物理块的号码,问题是这样处理后,闪存内部碎片非常多,垃圾回收的开销会非常大,直接影响了整个SSD的性能,JMF602的就是类似这种处理方式,随机性能烂到不能接受,持续也不咋样。Block映射的优点自然是映射表很小,比如某颗粒是256个Page组成1个Block,那么映射表容量即可比Page映射小256倍。

如果把2种极端的映射方式取长补短呢?综合起来的做法就是Hybrid FTL了,Hybrid FTL也分很多种,各自都有自身的优缺点,不过做法都是把闪存拆成2部分,一部分做数据块(Block映射),一部分做记录块(Page映射),Hybrid FTL的问题主要体现在记录区块和数据区块的合并处理上,会造成非常大量的处理器开销,闪存合并操作写放大也不低,因此速度和写入放大做不到极致。这种做法就类似本文评测的浦科特M2S,Intel的510等,他们的随机小文件的读写都做不上去,因为极端的随机小文件测试会造成大量的记录区块合并操作,主控完全来不及处理。因此给出休息时间即可恢复回一定性能,给出一定的OP空间也是临时解决方法。

看到上面3种基本的映射方式后,我们也知道page映射是速度最快的,那么如何避免映射表过大,又要避免过多的合并操作来拖慢随机性能呢?因此各大厂商都有自己的特殊处理方式,我这里再举个FTL的处理例子:基于Page的mapping,但是稍作改变,即可去掉映射表过大的缺点,又不需要做合并操作,如何做?

原理:1.基于Page映射。 2.完整的大容量Page映射表存放在闪存内。3.采用时间局部性(被访问过的数据可能会再次被访问)法则灵活的从闪存和SRAM里进行调用/卸载映射表。

优点:局部Page缓存映射, 高性能(不如纯Page映射) ,降低了内存需求

缺点:实际映射表很大 ,随机写入做不到极致(接近持续),垃圾回收消耗大。
1. 如果请求的数据在已缓存的映射表里,那么直接即可对物理地址操作。
2. 如果请求的数据不在已缓存的映射表里,已缓存的映射表也有空间,则查找全局转换目录,从闪存里取得映射表,并装载进已缓存的映射表内。(回到1)
3. 如果请求的数据不在已缓存的映射表里,已缓存的映射表没有空间,则先在已缓存映射表里选择一个需要卸载的Lpn,写入到闪存保证同步。(回到2)

以上的操作模式,最恶劣情况下是读2次转换页,写1次转换页。

转换区块垃圾回收:
1. 复制所有有效页到新的转换区块。
2. 更新全局映射表。

数据区块垃圾回收:
1. 复制所有有效页到新的数据区块。
2. 更新所有数据区块的Page映射表了和全局转换目录。

类似做法的SSD有SandForce主控(实际更复杂的多),因为没有大容量的外置SDRAM做为缓存,即用闪存来存放完整的映射表,靠压缩算法能大量增加已缓存映射表命中率,减少垃圾回收的消耗,实际表现很大程度取决于SSD内的数据是否可压缩。而美光M4,浦科特M2P这类拥有大容量SDRAM做缓存的SSD,也是基于Page映射的处理方法,来达到随机写入接近持续写入的实力。理论来说,外置SDRAM越大,算法架构更好做(放得开,开发周期可以缩短),但是掉电后的数据保护即会成为新的问题。但也可以避免,还是要看数据处理方式和外围硬件的设计。

收藏 邀请
0
本文版权归 PCEVA,PC绝对领域,探寻真正的电脑知识 原作者所有 转载请注明出处
发表评论

最新评论

引用 annimoto 2012-5-29 18:05
建兴公司还在某发展!老公司了!!

查看全部评论(1)

热门评论
    热门评论
      返回顶部