存储⑤—深入浅出SSD-SSD存储介质:闪存
存储⑤——深入浅出SSD-SSD存储介质闪存闪存物理结构SLC、MLC、TLC和QLCSLCSingle Level Cell一个存储单元存 1bit数据MLCMultiple Level Cell一个存储单元存 2bit数据TLCTriple Level Cell一个存储单元存 3bit数据QLCQuad-Level Cell一个存储单元存 4bit数据规律n bit的单元共有2的n次方个状态单元存储 bit 数越多单位容量成本越低但寿命、性能会随之下降闪存芯片组织方式NAND 闪存由大到小层级颗粒封装→Die 裸片→Plane 平面→Block 擦除块→Page 页→Cell 存储单元。Cell存储单元基础存储单元分 SLC/MLC/TLC/QLC单单元存 1~4bitPage页读写最小单位Block擦除块擦除最小单位Plane平面/Bank/Die裸片/晶粒支持并行操作提升读写性能。关键操作边界①读、写Program最小单位 Page②擦除Erase最小单位 Block③硬件并行单元Plane、Die、独立 Package 颗粒④容量密度 / 寿命区分最底层 Cell 类型SLC→QLC 容量升高、擦写寿命递减闪存实战闪存命令集闪存寻址两种闪存寻址体系五层硬件层级寻址控制器全局寻址和ONFI行列地址寻址颗粒内部总线寻址五层硬件层级寻址①定义SSD 控制器管理多颗闪存颗粒时从整机阵列到存储页的完整分层定位链路覆盖外部多颗粒硬件阵列 颗粒内部全部层级。②寻址分段从高位到低位逐级筛选颗粒号多颗粒阵列通过片选信号选定目标封装芯片Die (LUN) 号选中芯片内独立裸片Die 可并行读写Plane 号Die 内平面地址占用 Block 地址最低 bit支持多平面并发操作Block 地址擦除最小单元磨损均衡、垃圾回收操作单位Page 地址读写最小单元定位块内目标数据页。③核心用途控制器侧硬件调度、并发管理、FTL 逻辑地址转完整物理地址覆盖多颗粒整机架构。ONFIOpen NAND Flash Interface/开放 NAND 闪存接口 行列地址寻址①定义控制器下发给单颗闪存颗粒的命令地址规范仅描述单颗芯片内部的地址不含外部颗粒片选分为行、列两段地址。②两段地址拆分1行地址 Row Address用于定位到完整一页等价于五层寻址中「DiePlaneBlockPage」部分ONFI 标准位域结构LUN(Die)地址 → Block地址低位嵌入Plane编号 → Page地址2列地址 Column AddressPage 内部字节偏移锁定一页内具体读写的数据位置。③核心用途闪存芯片底层通信发送读写 / 擦除命令时传递页地址与页内偏移。读、写、擦除时序读时序命令00h → 30h传输阶段①先发读命令00h②依次传输 5 个地址周期2 个列地址 (C1/C2)3 个行地址 (R1/R2/R3)③发送结束命令30h。状态与数据输出①发完30h后状态寄存器SR[6]置 Busy闪存将 Page 数据载入页缓存②等待tWB、tR等就绪延时SR[6]变回 Ready③通过 DQx 总线输出页数据 DOUT。特点地址包含列偏移支持读取页内任意位置数据。写编程时序命令80h → 10h传输阶段①先发写起始命令80h②传输地址2 列地址 3 行地址完整写入时列地址通常为 0③等待tADL延时后向闪存页寄存器传输待写入数据 DIN④数据全部下发后发送编程确认命令10h。状态与介质编程①收到10h后SR[6]置 Busy闪存执行介质编程tPROG②编程完成后SR[6]切为 Ready写操作结束。关键约束不从头整页写入易引发数据错误。块擦除时序命令60h → D0h传输阶段①先发擦除起始命令60h②仅传输 3 个行地址 R1/R2/R3无列地址擦除最小单位为 Block无需页内偏移发送擦除确认命令D0h。状态与擦除动作①收到D0h后SR[6]置 Busy执行块擦除tBERS②擦除完成后SR[6]恢复 Ready。特点只需要 Block 行地址单次擦除整 Block 内所有 Page。闪存特性闪存寿命以 P/E 擦写循环衡量SLCMLCTLCQLC单元存储比特越多寿命越短靠磨损均衡、冗余 OP 空间、降低写放大来延长整体寿命。MLC 使用特性一个存储单元存 2bit一根字线分高低两页需按顺序编程电荷区间窄读写干扰更强、擦写寿命弱于 SLC但存储密度更高、成本更低需要更强 ECC 纠错。读干扰原理对同一 Block 内任意 Page 执行读取操作时读取电压会轻微改变同字线相邻存储单元的电荷多次高频读取后相邻 Cell 电荷偏移出现比特错误。关键规则①干扰范围仅影响同一 Block内未擦除的其他 Page跨 Block 无影响②触发条件上万次重复读同一 Block 后故障概率显著上升③应对方案1.后台刷新高频读取的 Block 定期重新编程恢复偏移电荷2.均衡读访问逻辑避免长期集中读取同一个 Block3.ECC 实时修正读干扰产生的少量错误比特。数据保存期定义指闪存断电后电荷稳定留存、数据可正确读出的最长时间核心影响因素颗粒类型SLC MLC TLC QLC比特越多电荷区分窗口越小保存时间越短老化程度Block 擦写次数越接近寿命上限电荷泄漏速度越快温度环境高温大幅加速电荷流失低温有利于长期保存。闪存数据完整性闪存随使用、存储时长增加易出现比特翻转制程越小故障越突出读错误来源闪存数据发生错误主要有以下几个原因①擦写老化P/E 次数增多氧化层老化电荷不稳原始误码率上升。②电荷流失断电后电子缓慢泄漏阈值电压左移电平判读出错。③读干扰频繁读同块加压造成相邻单元轻微充电阈值电压右移。④单元耦合相邻 Cell 电容互相干扰周边状态改变会偏移自身阈值电压。⑤原生写错误MLC 两段编程依赖低位页数据底层出错会直接写入错误电平。SSD 依靠 5 类技术保障数据可靠①ECC 纠错校验并修正页内少量比特错误②RAID 数据恢复多颗粒冗余单颗颗粒损坏可恢复数据固态硬盘的RAID一般采用RAID 5。RAID 5由至少 3 块硬盘组成数据与校验信息分散存储在所有磁盘上无单独校验盘。任意一块盘损坏时可通过其余盘的数据 校验位计算还原丢失数据③重读 Read Retry调整读取电压重试修复阈值偏移引发的读错④扫描重写 Read Scrub后台巡检冷数据提前刷新衰减页面⑤数据随机化打散规律电平分布降低单元间耦合干扰。