感谢HOMOLAB的精彩文章,让我对SSD有了更为科学的认识
PART I 固态硬盘(SSD)基础
1.1 发展历史与演进
-
NAND Flash
-
原理:1145141919810个浮栅晶体管平铺堆叠(发配到模电区)。把晶体管在不同挡位的电压(浮栅晶体管捕获存储的电子数量差异导致电压不同)当作信息。
- 比特数与存储密度
单元 数据量(二进制位数) SLC 1 MLC 2 TLC 3 QLC 4 -
性能与耐用性
-
从SLC➡MLC➡TLC➡QLC:
-
存储数据难度上升:主控在写入数据时,需要精确地控制浮栅中电子的数量;
-
读取数据的难度上升:主控在读取数据时,也必须非常精确地判断当前电压属于哪个区间,否则可能导致误读;
- 耐久性降低:存储信息越多,对电压精度要求越高。擦写次数越多,浮栅的磨损就越大,电压状态就越不稳定。
-
- 原因:如QLC,将16种不同的电压状态挤在一个小小的浮栅晶体管里,就好比在一条狭窄的公路上行驶16辆车。每辆车之间的安全距离会变得非常小。
-
1.2 SSD 的基本构成
-
NAND Flash 存储芯片:浮栅晶体管堆叠,有着比较玄学的寿命说
- Block(擦除的最小单位) ➡ Page(读写最小单位)➡ Cell
-
主控(Controller):硬盘里管理数据的大脑,在如今SSD产品损坏的案例里一般是由于主控物理暴毙或者固件暴毙导致的
-
DRAM 缓存(不是都有)
-
无缓(DRAMless SSD)
- 有缓(DRAM SSD):存储FTL表,便于寻址
-
PART II SSD工作原理
2.1 读写与擦除
REW(Read-Erase-Write)
固态的擦除是以block为单位、读写以page为单位,nand的物理特性决定了他不能覆盖写入。因此如果我们要对一个已有数据的page进行写入,那么必须先要把这个page所在的block中的数据读出,block清空后再把所有数据写进去。
2.2 核心技术与机制
PART III SSD性能参数与协议
3.1 关键性能指标
-
IOPS(Input/Output Operations Per Second):如英文名,硬盘每秒钟能够处理的输入/输出操作次数。
-
传统指标:随机和顺序是HDD时代传承下来的概念,在SSD中或许不再适用,但仍然被广泛使用。
-
顺序读写(Sequential Read/Write): 顺序读写是指数据在存储介质上连续存储和读取的方式,通常用于大文件传输或连续数据流的处理。参数通过用大文件进行读写测试来获得。
-
随机读写(Random Read/Write):随机读写是指数据在存储介质上分散存储和读取的方式,通常用于小文件或随机访问的数据。一般使用大量小文件进行读写测试。
- 相关论述文章《随机 稳态 缓外 无知以及谎言,不存在的随机写入》总结:
-
SSD数据存储在NAND的多个页(Page)中,页是SSD的最小读写单位;
-
SSD读取数据时,一般需要根据FTL(Flash Translation Layer)将逻辑地址转换为物理地址;
-
FTL表的查询需要时间,如果一个文件分布在临近的物理空间上,那么对其进行读写的操作就不需要多次查询FTL表从而节省开销;
-
FTL表的映射是非线性的,物理上连续的存储单元未必在逻辑上是连续的;
- 对于一个大块的连续文件写入而言,看起来是顺序写入,但数据不会集中在某一个NAND的某一个DIE的某一个plane的某一个block,而是分布在不同NAND上的不同block中;
- 因此,顺序读写和随机读写的概念对于SSD并不完全适用,SSD的性能更多地取决于其内部结构和数据管理方式;因此,顺序读写和随机读写的概念对于SSD并不完全适用,SSD的性能更多地取决于其内部结构和数据管理方式;
-
-
缓外速度(Sustained Write Speed):在SLC Cache技术应用后产生的概念
-
定义:缓外速度是指在SSD的SLC Cache被填满后,数据写入到TLC或QLC NAND Flash时的速度。通常情况下,SLC Cache可以提供更高的写入速度,而缓外速度则较低。
- 备注:缓外速度不等同于SSD的实际写入速度,在如今常常导致用户对SSD性能的误解。实际上,连续大容量写入分多个阶段(关键词:SLC Cache释放、REW、Writeback惩罚、TLC/QLC直写、GC回收),而这受到厂家设计策略的影响,部分用户观察到的缓外速度没有太大的意义。
-
-
WAF(Write Amplification Factor)
-
定义:写放大因子,表示实际写入的数据量与原始数据量的比率。
-
产生原因:SSD是以页为单位进行读写,但由于NAND Flash的特性,无法直接覆盖写入,因此需要先擦除整个块(Block),然后再写入新的数据。这种操作会导致实际写入的数据量大于原始数据量,从而产生写放大现象。
- WAF与脏盘度(Dirty Page):WAF与脏盘度密切相关,较高的脏盘度意味着更多的数据需要被擦除和重写,从而增加了写放大现象。
-
3.2 消费级常见接口与协议
-
SATA(Serial ATA)
-
传输速率:SATA III的最大传输速率为6 Gbps(约750 MB/s)。
-
特点:SATA接口是传统的硬盘接口,主要用于连接机械硬盘和早期的SSD。
- 目前SATA接口的SSD产品性价比较低
-
-
NVMe(Non-Volatile Memory Express)
-
传输速率:NVMe接口的传输速率远高于SATA接口,理论上可以达到32 Gbps(约4 GB/s)甚至更高。
- 特点:NVMe接口专为SSD设计,能够充分发挥NAND Flash的高速性能,具有更低的延迟和更高的并发处理能力。
-
-
UFS(Universal Flash Storage)
-
传输速率:UFS 3.0的最大传输速率为23.2 Gbps(约2.9 GB/s)。
- 特点:UFS接口主要用于移动设备,如智能手机和平板电脑,具有更低的功耗和更高的性能。
-
-
CFexpress(CompactFlash Express)
-
传输速率:CFexpress 1.0的最大传输速率为1 GB/s,CFexpress 2.0可以达到2 GB/s。
- 特点:CFexpress接口主要用于专业相机和摄像机,支持PCIe和NVMe协议,具有高性能和低延迟。
-
-
SD Express(Secure Digital Express)
-
传输速率:SD Express的最大传输速率为985 MB/s。
- 特点:SD Express是SD卡的最新标准,支持PCIe和NVMe协议,主要用于移动设备和相机。
-
PART IV 主控与固件深度解析
4.1 SSD主控的功能与作用
SSD主控是固态硬盘的核心组件,负责管理数据的读写、擦除和存储。它的主要功能包括:
- 数据管理:主控负责将数据从主机传输到NAND Flash,并在需要时将数据从NAND Flash传输回主机。
- 地址映射:主控使用FTL(Flash Translation Layer)将逻辑地址转换为物理地址,以便正确地读写数据。
- 垃圾回收:主控定期执行垃圾回收操作,以释放被删除或过时数据占用的空间,从而提高SSD的性能和寿命。
- 性能优化:主控通过各种技术(如SLC Cache、OP等)来优化SSD的性能和耐用性。
- 固件更新:主控可以通过固件更新来修复错误、改进性能或添加新功能。
4.2 固件的优化策略
4.2.1 SLC Cache
-
产生原因:SLC Cache是为了提高SSD的写入性能而设计的。由于SLC(单层单元)具有更高的写入速度和耐用性,SSD制造商通常会将一部分TLC或QLC NAND Flash配置为SLC Cache(主控只需要区分两种电压状态),以便在写入数据时先使用SLC Cache进行高速写入。
-
种类:
-
全盘SLC Cache:将整个SSD的部分空间配置为SLC Cache,通常在SSD的容量较大时使用。比较考验主控的算法设计能力。
-
分区SLC Cache:将SSD的部分空间划分为SLC Cache,通常在SSD的容量较小或中等时使用。
- 动态SLC Cache:根据实际写入需求动态分配SLC Cache的大小,通常在SSD的空闲空间较多时,SLC Cache会较大。比较考验主控的算法设计能力。比较出色的产品:Solidigm P41 Plus(QLC)
-
-
写入流程(与主控、算法与固件有关,此处仅仅阐释常见的SLC Cache写入流程):
-
FOB阶段:主控将数据写入SLC Cache,SLC Cache的写入速度通常较快,因为SLC只需要区分两种电压状态(0和1)。
-
Transition过渡态:当剩余空间处于一定低线时,SSD内部将并未完整写入的page进行整理、触发GC回收机制将标记删除的数据从Nand上物理的删除掉。由于还有部分未写入的page可以利用,因此R-E-W惩罚为中等,并发效率受到一定程度的限制。
- R-E-W惩罚:在这一阶段,由于GC回收和数据整理的需求,SSD的写入性能可能会受到影响,导致写入延迟增加。
- GC回收:当所有的空间都不可用或者可用度很低,SSD不得不实时性的进行垃圾的释放(GC回收):读取垃圾文件所在块上的其他有效数据➡擦除整个块➡把这些数据整理并腾挪到其他地方。
- Steady稳态:GC回收、R-E-W进入了一个动态均衡的状态,因而性能维持在一条线上。主控和NAND成为当前的主要瓶颈(对于主控来说,它在这一高负载的情况下需要频繁的进行GC回收的处理、写入与读取数据的命令分配、磨损平衡的计算、数据纠错等操作)
-
4.2.2 地址映射表(FTL)
-
定义:FTL(Flash Translation Layer)是SSD中的一种关键技术,负责将逻辑地址映射到物理地址,以便正确地读写数据。
-
优化策略:为了提高FTL的性能,SSD制造商通常会采用多种优化策略,如:
-
使用DRAM缓存:在SSD中增加DRAM缓存,以提高映射表的查询速度。
-
采用分层映射:将映射表分为多个层次,以减少查找时间。类比内存中的多级页表。
- 进行预读和预写:根据访问模式预测数据的读写需求,提前加载或写入数据。
-
4.2.3 OP(Over-Provisioning)
-
定义:OP(Over-Provisioning)是指在SSD中预留一部分额外的空间,以提高性能和延长寿命。
-
原理:通过增加闲置空间,OP可以减少写放大现象,提高垃圾回收效率,从而提升SSD的整体性能和耐用性。
- 注意事项:
- OP的大小需要根据实际使用场景进行合理配置,过大或过小都会影响SSD的性能。
- OP的使用需要与其他优化策略结合,以达到最佳效果。
4.3 Writeback惩罚的原理与影响
-
定义:Writeback惩罚是指在SSD中,由于数据写入策略和垃圾回收机制的影响,导致写入性能下降的现象。
-
原因:当SSD的SLC Cache被填满后,数据需要写入到TLC或QLC NAND Flash中,这个过程通常会比SLC写入慢得多。此外,在进行垃圾回收时,SSD需要读取、擦除和重写数据,这也会导致写入性能下降。
- 影响:Writeback惩罚会导致SSD在高负载情况下出现明显的性能下降,影响用户的使用体验。
4.4 SSD维护
4.4.1 S.M.A.R.T.表
-
功能:S.M.A.R.T.可以实时监测SSD的各项指标,如温度、写入/读取错误率、剩余寿命等,并在出现异常时发出警告。
-
关键指标:
-
03:可用备用空间,代表SSD中已使用Over-Provisioning的大小。
- 0E:介质与数据完整性错误计数,只要大于0则表示存在潜在的介质损坏风险。
-
4.4.2 TRIM
-
定义:TRIM是一种命令,允许操作系统通知SSD哪些数据块不再使用,从而帮助SSD进行垃圾回收。
- 方法:大多数现代操作系统(如Windows、Linux和macOS)都支持TRIM命令,用户无需手动操作。
Comments | NOTHING