深入浅出SSD 学习笔记整理——Johnathan Sung

SSD ( Solid State Drive),即固态硬盘,是一种以半导体闪存( NAND Flash)作为介质的存储设备。和传统机械硬盘(Hard Disk Drive,HDD)不同,SSD以半导体存储数据,用纯电子电路实现,没有任何机械设备,这就决定了它在性能、功耗、可靠性等方面和HDD有很大不同。

第一章:介绍了SDD的优势与相关接口参数;

第二章:主要介绍了全闪存的结构(二维,三维)与时序,错误干扰之类的;

在这里插入图片描述

第三章:储存介质:闪存

在这里插入图片描述

第四章:FTL(SSD核心技术)

FTL是Flash Translation Layer (闪存转换层)的缩写,

简介:

完成主机(或者用户,Host)逻辑地址空间到闪存( Flash)物理地址空间的翻译(Translation),或者说映射(Mapping)。SSD每把一笔用户逻辑数据写人闪存地址空间,便记录下该逻辑地址到物理地址的映射关系。当主机想读取该数据时,SSD便会根据这个映射,从闪存读取这笔数据然后返回给用户。

基本功能:

完成逻辑地址空间到物理地址空间的映射。

闪存的特性:

(1) 闪存块(Block)不能覆盖写,需要维护一张逻辑地址到物理地址的映射表,FTL需要做垃圾回 收,即使GC ( Garbage Collection, 垃圾回收)
(2) 闪存块有一定寿命,FTL需要做Wear Leveling,让数据写入均摊到每个闪存块上,即让每个块磨损都差不多,从而保证SSD具有最大的数据写入量。
(3) 闪存块读的次数有限,次数过多会有读干扰(具体见第三章),FTL需要处理读干扰问题,当某个闪存块读的次数将要达到一定阈值时,FTL需要把这些数据从该闪存块上搬走,从而避免数据出错。
(4) 数据的保存问题,必须上电,FTL才有效,好的FTL,就需要有处理数据保持问题的能力。
(5) 坏块问题,FTL管理坏块。
(6) 对MLC或TLC来说,存在Lower Page corruption 的问题。即掉电异常问题。好的FTL,应该有机制避免这个问题。
(7) MLC或TLC的读写速度都不如SLC,但它们都可以配成SLC模式来使用。好的FTL,会利用该特性去改善SSD的性能和可靠性。

映射管理:

分类:
(1)块映射:块映射有好的连续大尺寸的读写性能,但小尺寸数据的写性能是非常糟糕的。
(2)页映射:闪存页远比闪存块多,因此需要更多的空间来存储映射表。但它的性能更好,尤其体现在随机写上面。为追求性能,SSD一般都采用页映射。
(3)混合映射:块内采用页映射的方式。
在这里插入图片描述
在这里插入图片描述

                                  映射表大小=SSD大小/逻辑页大小
(准确来说,映射表大小是SSD容量大小的1/1024。前提条件是:映射页大小为4KB,物理地址用4Byte表示。).

映射表存储在DRAM中,

HMD ( Host Memory Buffer,主机高速缓冲存储器):主机在内存中专门划出一部分空间给SSD用,SSD可以把它当成自己的DRAM 使用。因此,映射表完全可以放到主机端的内存中去。

垃圾回收:

垃圾回收就是把某个闪存块上的有效数据读出来,重写,然后把该闪存块擦除,就得到新的可用闪存块了。
在这里插入图片描述
随机存取时候,如何挑选要回收的内存块,挑垃圾比较多的闪存块来回收,因为有效数据少,要搬移的数据少,这样腾出空闪存块的速度快。

写放大(WA):

在这里插入图片描述
写放大越大,意味着额外写人闪存的数据越多,一方面磨损闪存,减少SSD寿命,另一方面,写人这些额外数据会占用底层闪存带宽,影响SSD性能。

解决方法:
顺序写(不可控)
增大OP(预留空间)(可控)
在这里插入图片描述
OP越大,写放大越小:(很好理解,OP越大,每个闪存块有效数据越少,垃圾越多,因此需要重写更少的数据,因此写放大越小。同时,由于GC需要重写的数据越少,SSD满盘写性能也越好。)

在这里插入图片描述在这里插入图片描述
垃圾回收可以简单地分为三步:
1 )挑选源闪存块。(BPA算法)
2 )从源闪存块中找有效数据。
3)把有效数据写人到目标闪存块。

垃圾回收时机:

(1)当用户写人数据时,如果可用的闪存块小于一定阈值,这时就需要做GC,以腾出空间给用户写。这时做的GC,叫作Foreground GC (前台垃圾回收)。(被动)
(2)Background GC (后台垃圾回收),它是在SSD空闲(Idle)的时候,SSD主动去做的GC,这样在用户写人的时候就有充裕的可用闪存块,不需要临时抱佛脚(做Foreground GC),从而改善用户写人性能。但是,出于功耗考虑,有些SSD可能就不做后台垃圾回收了,当SSD空闲后,直接进入省电模式,或者做少量的GC,然后进人省电模式。(主动)

Trim(移除):新增的ATA命令( Data Set Management), 专为SSD而生

在这里插入图片描述
在没有Trim之前,SSD无法知道那些被删除的数据页是否无效,必须等到系统要求在相同的地方(用户空间、逻辑空间)写人数据时才知道那些数据是无效的,进而放心删除。

一般FTL都有这3个表:
(1)FTL映射表记录每个LBA对应的物理页位置;
(2)Valid Page Bit Map (VPBM)记录每个物理块上哪个页有有效数据;
(3)Valid Page Count (VPC)则记录每个物理块上的有效页个数。
通常GC会使用VPC进行排序来回收最少有效页的闪存块; VPBM则是为了在GC时只读有用的数据,也有部分FTL会省略这个表。
SSD收到Trim命令后,为了实现数据删除,固件要按顺序做以下的事情:
在这里插入图片描述
5~7是Trim命令处理后,GC的处理,不是Trim命令处理的部分。Trim命令不触发GC。
在这里插入图片描述

磨损平衡:

磨损平衡,就是让SSD中的每个闪存块的磨损(擦除)都保持均衡。
冷数据( Cold Data): 不经常更新的块
热数据( Hot Data): 更新频繁的数据
年老的(Old)块: 擦写次数较多的块
年轻的(Young)块: 擦写次数较少的块 EC(擦除次数)

SSD一般有动态磨损平衡( Dynamic WL)和静态磨损平衡( Static WL)两种算法。

动态磨损平衡算法的基本思想是把热数据写到年轻的块上,即在拿一个新的闪存块用来写的时候,挑选擦写次数小的;
静态磨损平衡算法基本思想是把冷数据写到年老的块上,即把冷数据搬到擦写次数比较多的闪存块上。

在这里插入图片描述

掉电恢复:

正常掉电:
在这里插入图片描述
异常掉电:
为防止异常掉电导致的数据丢失,一个简单的设计就是在SSD上加电容,SSD一旦检测到掉电,就让电容开始放电,然后把RAM中的数据刷到闪存上面去,从而避免数据丢失。

重构:
SSD在把用户数据写到闪存的时候,会额外打包一些数据,我们叫它元数据,(Meta Data)
在这里插入图片描述
映射表恢复原理:
只要全盘扫描整个闪存空间,就能获得所有的映射关系,最终完成整个映射表的重构。(time过长)

坏块管理:

在这里插入图片描述
坏块鉴别:
在这里插入图片描述
坏块管理策略:
一是略过(Skip) 策略,
二是替换(Replace)策略。(用户空间与预留空间)采用替换策略,SSD内部需维护一张重映射表( Remap Table) ;

SLC cache(缓冲):

SLC相对MLC和TLC来说,有更好的读写性能和更长的寿命。这里所说的SLC Cache是把MLC或者TLC里面的一些闪存块配置成SLC模式来访问。
优点:
(1) 性能考虑
(2) 防止Lower Page数据被带坏
(3) 解决闪存的缺陷
(4) 更多的数据写入量
在这里插入图片描述
强制写人策略能保护Lower Page数据,而后者不能。非强制SLC写入策略,具有更好的后期写入性能。
在这里插入图片描述

RD&DR:

RD指的是Read Disturb(读打扰),DR指的是Data Retention(数据保留)。 两者都能导致数据丢失,但原理和固件处理方式都不一样。

Host Based FTL:

在这里插入图片描述
Device Based存在以下缺点:
(1)FTL架构通用,不能针对具体应用做定制化。
(2)控制器芯片功能复杂,设计难度大,研发成本高。
(3)闪存更新很快,一般每年闪存厂商都会推出新一代产品,有新的使用特性,需要控制器芯片做出修改,但是芯片改版成本很高。
(4)企业级应用需要高性能、大容量,通用控制器芯片支持的最大性能和容量有限制。
(5)企业级市场需求多种多样,有些需求需要控制器提供特殊功能支持,这些是通用SSD主控芯片无法提供的。
Host Based FTL架构:
Host Based SSD一般的模式是把闪存的读写接口直接开放给驱动程序,这样驱动程序就能自行管理闪存内部资源。控制器大都采用可编程逻辑器件FPGA,功能比较简单,主要实现ECC纠错和闪存时序控制。如图所示,主机驱动直接管理闪存阵列,控制器只是起到ECC纠错算法和物理协议转换的作用。
在这里插入图片描述

未完待续…关注我阅读后面章节

第五章:PCIe介绍(前端协议)

第六章:NVMe介绍(前端协议)

第七章:SSD测试

第八章:SSD电源管理介绍了几种SSD的省电模式

第九章:ECC原理

  • 23
    点赞
  • 107
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值