SSD通俗原理简介

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

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或者LUN
  • 1个DIE/LUN -> 多个Planes
  • DIE/LUN是接收和执行闪存命令的基本单元
  • 1个Plane -> 上千个Blocks
  • 每个Plane有独立的register,一个Page register,一个Cache register
  • 1个Block -> 上百个Pages
  • Block是擦除的基本单位
  • 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)之写在前面的话/

搞定目标检测(SSD篇)(下) 搞定目标检测(SSD篇)(上)主要分析了目标检测的基本原理和技术局限,本文将继续上集的未尽事宜,详解如何使用SSD搞定目标检测。先打个预防针,本文的内容会比较烧脑,最好结合代码和论文来理解,而且本文的阅读前提是默认你已经掌握了上集的内容,当然我也会尽量用通俗易懂的语言给你讲清楚。Github: https://github.com/alexshuang/pascal-voc-pytorch。 S... 阅读详情

相关推荐

SSD基本工作原理了解

SSD与RAM的原理有些类似,RAM使用晶体管和电容来表示0或1,晶体管用于将电荷转移到电容器或从电容器中吸取电荷,并且电荷必须每几微秒刷新一次。而SSD相比于RAM的非易失性来自于其使用的浮栅晶体管。其创造了一个小笼子,不需要外界的电容来保持充电,并通过鼓励电子通过量子隧穿效应来进出笼子。

iUcool的博客 989

NAND flash组成结构及驱动解读

NAND Flash 的数据是以bit的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。这些Line会再组成Page,(NAND Flash 有多种结构,我使用的NAND Flash 是K9F1208,下面内容针对三星的K9F1208U0M),每页528Bytes(512byte(Main Area)+16byte(Spare Area)),每32个page形成一个Block(32*528B)。具体一片flash上有多少个Block视需要所定。我所使用的三星 k9f1208U0M具有4096个block,故总容量为4096*(32*528B)=66MB,但是其中的2MB是用来保存ECC校验码等额外数据 的,故实际中可使用的为64MB。 NAND flash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址:

第三章 SSD存储介质:闪存 3.1

对要读的Page加低电压使电流断开,看Floating Gate中是否有电子,有电子为0, 否则为1。

fengbaobaola的博客 3560

一篇介绍nand flash结构与分析的文档

一篇介绍nand flash结构与分析的文档。看程序的时候结合本文看看,会有很大收获。

半导体存储器件原理概述

简述SRAM和ROM的存储原理

快乐分享 4191

闪存基础

目前绝大多数SSD都是以NAND FLASH为存储介质的。SSD工作原理很多都是基于NAND FLASH特性的。比如,NAND FLASH在写之前必须先擦除,而不能覆盖写,于是SSD 才需要垃圾回收(Garbage Collection,或者叫 Recycle);NAND FLASH 每个块(Block)擦写次数达到一定值,这个块就不能用了(数据丢失,或者写入不了),所以SSD 固件必须做 Wear

陈 浩 1万+

2021-06-24

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

langtaoshaqiu的博客 6907

【大虾送书第七期】深入浅出SSD:固态存储核心技术、原理与实战

近年来国家大力支持半导体行业,鼓励自主创新,中国SSD技术和产业良性发展,产业链在不断完善,与国际厂商的差距逐渐缩小。但从行业发展趋势来看,SSD相关技术仍有大幅进步的空间,SSD相关技术也确实在不断前进。随着闪存芯片制程工艺的进步、堆叠层数的增加等,SSD面临闪存大页问题、写放大导致的性能问题、3D堆叠导致的可靠性问题等,因此,我们仍需不断攻克核心技术,通过软硬件协同等多种方法提升SSD的性能和寿命,从而满足日益增长的应用需求。

大虾好吃吗 2万+

SSD原理解读-从入门到精通

SSD原理解读-从入门到精通

QQ哥的专栏 12万+

ssd原理简介

ssd原理简介

ffuygggh的博客 615

SSD算法通俗详解

算法简介 算法原理 样本构造 损失函数 使用细节 #ssd算法: ##简介 刘伟在2016年提出,发表在ECCV;是一种通过直接回归的方式去获取目标类别和位置的one-stage算法,不需要proposal;作用在卷积网络的输出特征图上进行预测,而且是不同尺度,因此能够保证检测的精度,图像的分辨率也比较低,属于端到端的训练; input->CNN->Lreg,Lcls CNN特征-&g...

凌桑的自我修养--You are the Eternity 6534

SSD GC机制简介

背景 闪存基本构成:页page(4K)→块block(通常64个page组成一个block,有的是128个)→面plane(多个blcok组成)→die(plane就是一个die)→闪存片(多个die组成)→SSD(多颗闪存片组成);(可能不同型号具体数字不同)。 SSD上已经被写入过的Page页在重新被写入之前,必须要将page页所在的block块擦除,而不是直接覆盖写。这个是由Nand Flash的工作原理决定的。因此产生了Gc的概念; gc触发的位置 FTL层 gc分类: 限制垃圾回收:不占用

鲸鱼写程序的专栏 3745

深入浅出SSD:固态存储核心技术、原理与实战(文末赠书)

作为经典畅销书的升级版,本书在第1版的基础上新增了大量新知识(如闪存、UFS、测试、文件系统等),并改写或删减了许多过时或不适用的内容,总修改量超过60%。本书由SSD技术社区SSDFans的核心团队成员联合业界、高校SSD方面的专家共同完成,相对于第1版,内容更全面、更新,也更有深度。本书从产品、技术和应用3个维度展开,全面、详细讲解了SSD的发展历史、产品形态、工作原理、整体架构,以及各个功能模块的原理和使用,从SSD的前端接口协议到FTL算法,再到后端的闪存和纠错,以及测试,本书都有涉及。

阿玥的小博客 3088

SSD目标检测算法——通俗易懂解析

SSD目标检测算法——通俗易懂解析

chase 3679

《深入浅出SSD》:固态存储核心技术、原理与实战

《深入浅出SSD》:固态存储核心技术、原理与实战

weixin_58070962的博客 2908

【目标检测从放弃到入门】SSD / RCNN / YOLO通俗讲解

最近有幸在项目上接触到了深度学习中的目标检测领域,通过数周来的实践和相关知识的查阅,现在也算是在能在目标检测入门处徘徊了。这篇文章会在三大目标检测经典算法原理上加上自己的理解,希望大家看了此文能不再一脸懵逼地出去。 目标检测 什么是目标检测 一句话概括即:在视图中检测出物体的【类别】和【位置】。 目标检测的三大算法 上面我们已经说了,目标检测就是分类和定位(回归,注:回归即得到确定值)...

weixin_42499919的博客 1088

SSD 固态硬盘取证:TRIM、DRAT 和 DZAT 对 SSD 取证的真正意义

TRIM 不会“删除”数据 – 它只是告诉 SSD:“我不再使用此块。”,其余的完全取决于 SSD 控制器。不要预期已删除的数据仍然存在了解 SSD 的行为小心使用可能不遵循 DRAT 或 DZAT 规则的旧 SSDSSD 的取证工作不仅仅是使用什么工具,还需要了解幕后发生的事情。

2302_82041293的博客 997

小白解读SSD

目录前言基本概念整体框架网络结构先验框生成损失函数L2正则化模型训练说明 前言 最近,一直在研究关于SSD目标检测的论文和代码,我想着从基础层面去理解它,作为研究小白的我(关于这方面没有任何专业背景,完全靠自己推),我需要尽量使用通俗的理解,于是,我决定写一个全面细致的解析,不仅可以加深我对SSD的理解,也希望能帮助更多的人去理解。(ps:仅供参考,如有误解,还望指出) 基本概念 简单来说,目标检测就是对目标进行特征分割自动提取,在复杂场景中,能够实时处理,并将其识别出来,识别的准确率和速度是判断模型优劣的

m0_47988908的博客 875

SSD 和 HDD 的区别详解

SSD与HDD核心区别:SSD采用电子信号读写,速度快、抗震、静音且轻薄,适合系统盘和移动设备;HDD依靠机械部件工作,容量大、价格低但速度慢、怕震动,适合存储大量数据。最佳方案是SSD+HDD组合,兼顾速度与容量。选购时根据需求选择:追求性能选SSD,注重存储选HDD。

code_pranger的博客 1860
上一篇: BlueStore-先进的用户态文件系统《二》-BlueFS
下一篇: CRUSH算法的原理与实现
老马农
博客等级 码龄17年 89粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值