SSD通俗原理简介

您所在的位置:网站首页 固态硬盘基本原理 SSD通俗原理简介

SSD通俗原理简介

2024-07-14 22:17| 来源: 网络整理| 查看: 265

1. 什么是SSD

SSD是Solid State Drive,即固态硬盘的缩写。目前主流的SSD是使用半导体闪存(Flash)作为介质的存储设备,SSD有别于HDD(Hard Disk Drive)机械硬盘。

SSD诞生于上世纪70年代,最早的SSD使用RAM,RAM掉电数据就会丢失,价格也特别贵。后来出现了基于闪存的SSD,闪存掉电之后数据不丢失,flash SSD慢慢取代了RAM SSD。此时HDD盘已占据了大部分的存储市场。到本世纪初,由于工艺的不断进步,SSD赢来了大发展,容量和性能不断提升,价格也不断下降。HDD的在工艺和技术上已经很难有突破性的进展,SSD在性能和容量上还在不断突破,相对于HDD市场的萎缩,无论是企业级市场还是消费级市场SSD的快速普及,SSD市场份额一直在扩大。相信不久的将来,SSD在在线存储领域会取代HDD成为主流的存储设备,成为软件定义存储的主流设备。

在工作方式上,HDD使用磁盘,即磁性介质作为数据存储介质,在数据读取和写入上,使用磁头+马达的方式进行机械寻址。因为机械硬盘靠机械驱动读写数据的限制,导致机械硬盘的性能提升遇到了瓶颈。特别是HDD盘的随机读写能力,受其机械特性的限制,是一个巨大的瓶颈。SSD使用Flash作为存储介质,数据读取写入通过SSD控制器进行寻址,不需要机械操作,有着优秀的随机访问能力。

下图分别是HDD和SSD的组成。HDD使用机械SSD由主控、闪存、DRAM(可选)、PCB(电源芯片、电阻、电容等)、接口(SATA、SAS、PCIe等)。

 

SSD分为前端、中间、后端。前端是接口和相关的协议模块(STAT/SAS/PCIe等),中间是FTL(Flash Transhlation Layer)模块,后端是和闪存通信模块(闪存遵循ONFI或者Toggle协议)。

 

2. SSD的工作原理 2.1 SSD的存储单元

Flash的基本存储单元是 - 浮栅晶体管。

 

上图是浮栅晶体管的结构,最下面的是衬底,源极和漏极。衬底之上,有隧道氧化层、Floating Gate(浮栅层)、氧化层、控制栅极。中间的Floating Gate被绝缘层包围着,电子易进难出,通过对Floating Gate充放电子,来对晶体管进行写入和擦除。

在源极( Source)和漏极( Drain)之间电流单向传导的半导体上形成存储电子的浮栅,浮栅上下被绝缘层包围,存储在里面的电子不会因为掉电而消失,所以闪存是非易失性存储器。

下图是浮栅晶体管的写和擦除的原理。

写操作如左图,是在上面的控制栅极加正电压Vpp,使电子通过绝缘层进入浮栅。擦除操作正好相反 ,如右图,是在衬底加正电压Vpp,把电子从浮栅中吸出来 。写入的过程是充电子的过程,如果写入的page之前已经写过,在写入之前,必须先对flash进行擦除0,清除浮栅中的电子。

 

数据是以0和1二进制进行保存的,根据浮栅中有没有电子两种状态,可以表示数据的0和1,这样就可以进行数据的存储。一般把有电子的状态记为0,没有电子的状态记为1。

2.2 闪存的分类

根据制作工艺,闪存存储器可以分为NOR型和NAND型。

NOR型是为了替代EEPROM而设计,可以按位或者按字节进行访问,NOR型闪存芯片具有可靠性高、随机读取速度快的优势,但擦除和编程速度较慢,容量小,主要用于存储可执行的成都代码。

NAND闪存容量大,按页进行读写,容量大,适合进行数据存储。本文介绍都是基于NAND flash。

2.3 NAND flash的擦除、读、写 擦除,在衬底施加电压足够长的时间,把电子从浮栅中吸出来,擦除之后,整个block的数据都变成了1。由于一个block共用一个衬底,所以在擦除时,一次擦除一个block,即擦除的单位为block。写,写的过程是对浮栅充电子,也称为编程。写之前需要先进行擦除,由于擦除之后,数据都变成了1,所以需要对要写入0的浮栅进行充电。读,读取的时候,对晶体管施加一个低电压,如果浮栅中没有电子,那么管子就是导通的,读到1;如果浮栅中有电子,管子不导通,读到0。读取数据时,因为是否有电子会影响到管子的导通性,所以可以利用电流感应浮栅里电子捕获量的多寡,靠感应强度转换成二进制的0与1。 2.4 闪存的内部组织架构

如下图的闪存的内部组织架构:

1个Chip/Device -> 多个DIE或者LUN1个DIE/LUN -> 多个PlanesDIE/LUN是接收和执行闪存命令的基本单元1个Plane -> 上千个Blocks每个Plane有独立的register,一个Page register,一个Cache register1个Block -> 上百个PagesBlock是擦除的基本单位1个Page -> 一般是4KB 或者 8 KB + 几百个字节的隐藏空间Page是读或者写的基本单位Cells -> flash存储信息的基本单位,根据每个cell可以保存1bit, 2bit, 3bit可以分为SLC, MLC, TLC

2.5 3D NAND FLASH

传统的Flash,是以二维的方式组成的,主要由word line(WL)和bit line(BL)组成,如下图。一条word line代表一个page,在读写的时候,bit line控制word line上的每一个bit。这样的word line和bit line交叉,组成了一个block。block平铺组成了flash。

 

随着闪存技术制造工艺的发展,二维闪存的尺寸不断缩小,单元间的干扰随尺寸的缩小不断变大。3D Nand Flash技术的出现,有效的解决了单元干扰的问题。

下图是一种3D闪存的立体图,在这种三维闪存中,flash堆叠了起来。如果2D Nand Flash比作平房,那么3D Nand Flash可以看做是楼房,3D Nand Flash可以通过提高flash的层数在单位面积上堆更多的晶体管。3D Nand Flash在单位面积堆更多的存储单元,在降低每bit成本上很有优势。

 

3. SSD的特性? 3.1 读写不平衡

读的速度很快;写入数据时,因为需要通过加压的方式对存储单元进行电子填充,所以速度略慢;擦除速度最慢,擦除块的时间在ms级。在使用SSD的时,需要考虑到SSD的读写不平衡的特性。

3.2 先擦后写

Nand Flash的写入以page为单位,擦除以block为单位。在Page页写入之前,必须要将page页所在的block块擦除。这个是由Nand Flash的工作原理决定的。

3.3 块擦页写

一个Wordline对应着一个或若干个Page,具体是多少取决于是SLC、 MLC或者TLC。对SLC来说,一个Word line对应一个Page; MLC则对应2个Page,这两个Page是一对( Lower Page和Upper Page); TLC对应3个Page( Lower Page、 Upper Page和Extra Page,不同闪存厂家叫法不一样)。一个Page有多大,那么Wordline上面就有多少个存储单元,就有多少个Bitline。写入以页为单位。

一个Block当中的所有这些存储单元都是共用一个衬底的。当对衬底施加强电压,上面所有浮栅级的电子都会被吸出来。所以擦除是以块为单位的。

 

3.4 寿命有限

每个NAND Block都有擦写次数的限制,当超过这个次数时,该Block可能就不能用了:浮栅极充不进电子(写失败),或者浮栅极的电子很容易就跑出来(比特翻转,0->1),或者浮栅极里面的电子跑不出来(擦除失败)。这个最大擦写次数按SLC,MLC,TLC依次递减:SLC的擦写次数可达十万次,MLC一般为几千到几万,TLC降到几百到几千。

3.5 SLC/MLC/TLC

根据一个存储单元可以存储多少bit的数据,闪存单元可以分为SLC(Single Level Cell)、MLC(Multiple Level Cell)、TLC(Triple Level Cell)。

 

上图是闪存芯片里面存储单元的阈值电压分布函数,横值是阈值电压,纵轴是存储单元数量。

一个存储单元电子划分得越多,那么在写入的时候,控制进入浮栅极的电子个数就要越精细,所以写耗费的时间就越长;同样的,读的时候,需要尝试用不同的参考电压去读取,一定程度上加长了读取时间。在性能上, TLC不如MLC, MLC不如SLC。 在寿命上,SLC > MLC > TLC。在价格上 SLC > MLC > TLC。下表是SLC、MLC、TLC的一些参数比较,数据比较旧了,但是对比趋势不变。现在还出现了一种QLC,一个闪存单元可以储存4个bit的数据。

闪存类型SLCMLCTLC每单元bit数123每单元表示的状态248擦除次数(k)10031读取时间(us)305075写入时间(us)3006001000擦除时间(us)150030004500

4. SSD的FTL

FTL是Flash Translation Layer的缩写,是SSD的一个重要组成部分,实现了以下功能:

Interface Adapter: 在内部FTL中主要关联eMMC/SCSI/SATA/PCIe/NVMe等接口,而在外部FTL中主要关联Linux Block Device。Address Translation: 地址映射,也可以叫做mapping,负责逻辑地址和物理地址之间的映射,多技术模块都以该机制为核心进行。众所周知,Nand Flash具有写时擦除的特性,因此写入数据时不得不异地更新。Garbage Collection: 垃圾回收,简称GC,回收异地更新产生的脏数据所占空间的回收工作。Wear Leveling: 磨损均衡,简称WL,避免某一个Nand Block很快坏去,使所有Block的PE Cycle均衡发展。因为flash的擦写次数是有限制的,如果不进行磨损均衡,整个SSD的有些block可能擦写次数不平衡很快坏去。Power off Recovery: 掉电恢复,简称POR。正常掉电,SSD会把缓存中的数据刷新到闪存,重新加载保存的数据即可。如果是异常掉电,因为某些人为或自然外力的原因导致数据没有成功写入到Nand中,掉电恢复要恢复到掉电前的安全状态,比如恢复RAM中的数据和Address Translation中的映射表。Parallelization and Load Balancing: 在前面的2.4小节的闪存的内部组织架构介绍中,可以知道SSD中存在的一定的并发性,利用这些并发性可以提供SSD的并发请求处理能力,提高其性能。Cache Manager: Cache不仅可以存放用户数据,也可以存放FTL Metadata,对系统的整体性能有着天然的优势。Error Handler: 处理读写操作中遇到的Fatal Error或ECC Error状况,以及Bad Block或Weak Block的管理。

在下一篇文章《带你了解SSD(2)-FTL》中,会详细的介绍FTL的各功能。

Notes

作者:网易存储团队攻城狮 陈威

如有理解和描述上有疏漏或者错误的地方,欢迎共同交流;参考已经在参考文献中注明,但仍有可能有疏漏的地方,有任何侵权或者不明确的地方,欢迎指出,必定及时更正或者删除;文章供于学习交流,转载注明出处

5 参考文献

[1] SSDFans.深入浅出SSD:固态存储核心技术、原理与实战[M].北京:机械工业出版社,2018.6.

[2] http://codecapsule.com/2014/02/12/coding-for-ssds-part-1-introduction-and-table-of-contents/

[3] http://www.ssdfans.com/blog/2018/02/02/ftl那些事(0)之写在前面的话/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3