从SATA、SAS到NVMe SSD

HDD和早期SSD绝大多数都是使用SATA接口,跑的是AHCI(Advanced Host Controller Interface),它是由Intel联合多家公司研发的系统接口标准。AHCI支持NCQ(Native Command Queuing)功能和热插拔技术。NCQ最大深度为32,即主机可以发最多32条命令给HDD或者SSD执行,跟之前硬盘只能一条命令一条命令执行相比,硬盘性能大幅提升。

这在HDD时代,或者SSD早期,AHCI协议和SATA接口足够满足系统性能需求,因为整个系统性能瓶颈在硬盘端(低速,高延时),而不是在协议和接口端。然而,随着SSD技术的飞速发展,SSD盘的性能飙升,底[……]

阅读全文

PCIe SSD为什么那么快?

现在,SSD已经大跨步迈入PCIe时代。作为SSD的一项重要技术,我们有必要对PCIe有个基本的了解。

那为什么SSD要用PCIe接口?因为它快,比SATA快。它究竟有多快?我们首先从PCIe接口的速度开始我们的PCIe之旅。

PCIe发展到现在,从PCIe 1.0,PCIe 2.0,到现在的PCIe 3.0,速度一代比一代快。

image

图1-1 PCIe各代的带宽

2017年PCIe 4.0已经发布,但本章内容仅限于PCIe 3.0及更早版本。

链接速度这一行,我们看到x1,x2,x4,….,这是什么意思?这是指PCIe连接的通道数(Lane)。就像高速一样,有单根道,有2根道的,有4根道的,不过像8根道[……]

阅读全文

固态硬盘越写越慢是真的吗?

垃圾回收(Garbage Collection,GC)是FTL的一个重要任务。我们虚构一个小小的SSD空间,来讲垃圾回收原理,以及与之紧密联系的WA(Write Amplification,写放大)和OP (Over Provisioning,预留空间)等概念。

麻雀虽小五脏俱全。翠花,上麻雀。

image

图1-1 虚构的小小SSD空间

我们假设该SSD底层有4个通道(Channel,CH0-CH3),连接着4个Die (每个Channel上的Die可并行操作),假设每个Die只有6个闪存块(Block0-Block5),所以一共24个闪存块。每个闪存块内有9个小方块,每个小方块的大小和逻辑页大小一样。24个[……]

阅读全文

SSD写放大

由于GC的存在,就有一个问题,用户要写入一定的数据,SSD为了腾出空间写这些数据,需要额外的做一些数据的搬移,也就是额外的写,最后导致的后果往往就是SSD往闪存中写入的数据量比实际用户写入SSD的数据量多。因此,我们SSD中有个重要参数,就是写放大(WA, Write Amplification):

image

对空盘来说(未触发GC),写放大一般为1,即用户写入多少数据,SSD写入闪存也是多少数据量(这里忽略SSD内部数据的写,如映射表的写入)。在SandForce控制器出来之前,写放大最小值为1。但是由于SandForce控制器内部具有实时数据压缩模块,它能对用户写入的数据进行实时压缩,然后再把它们写入[……]

阅读全文

SSD核心技术:FTL

FTL算法的好坏,直接决定了SSD在性能(Performance)、可靠性(Reliability)、耐用性(Endurance)等方面的好坏,FTL可以说是SSD固件的核心组成。

大家天天在说FTL,也知道FTL的重要性,那么什么是FTL?FTL是Flash Translation Layer的缩写,完成主机(或者用户,Host)逻辑地址空间到闪存(Flash)物理地址空间的翻译(Translation),或者说是映射(Mapping)。SSD每把一笔用户逻辑数据写入到闪存地址空间,便记录下该逻辑地址到物理地址的映射关系,下次主机想读取该数据,SSD根据这个映射,便能从闪存上把这笔数据读上来然[……]

阅读全文