暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

闪存与固态硬盘

BitsMan 2021-03-31
822

闪存(Flash Memory)

闪存是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。

  • NOR型:NOR Flash可以任意随机存取,但不能任意随机改写。需要很长的时间进行擦写,但是它提供完整的寻址与资料总线,并允许随机存取存储器上的任何区域,这使得它非常适合取代老式的ROM芯片。最常见用途是BIOS ROM

  • NAND型:NAND Flash不支持任意随机存取,也不能任意随机改写,只能按页Page存取。一般来说这些页的大小为512或2048或4096字节。数个页构成区块Block。在各个页之间彼此的连接区域会有几个字节(一般而言是资料大小的1/32),这些空间用于存储错误修正码的校验和。常见应用是固态硬盘

存储单元阶位划分

一个存储单元内存储N个二进制位数。常见的一至四阶存储单元为SLC、MLC、TLC和QLC。这四种存储单元存储信息量和可实现容量依次增加,价格逐渐使用寿命依次下降。

  • SLC:传统上,每个存储单元内存储1个信息比特,称为单阶存储单元(Single-Level Cell,SLC),使用这种存储单元的闪存也称为单阶存储单元闪存(SLC flash memory),或简称SLC闪存。SLC闪存的优点是传输速度更快,功率消耗更低和存储单元的寿命更长。然而,由于每个存储单元包含的信息较少,其每兆字节需花费较高的成本来生产,大多数用在企业上,很少有消费型SLC存储设备拿来贩卖

  • MLC:多阶存储单元(Multi-Level Cell,MLC)可以在每个存储单元内存储2个以上的信息比特,其“多阶”指的是电荷充电有多个能阶(即多个电压值),如此便能存储多个比特的值于每个存储单元中。借由每个存储单元可存储更多的比特,MLC闪存可降低生产成本,但比起SLC闪存,其传输速度较慢,功率消耗较高和存储单元的寿命较低,因此MLC闪存技术会用在标准型的储存卡,也用在最常见的消费型固态硬盘和U盘上。

  • TLC:三阶储存单元(Triple-Level Cell, TLC),这种架构的原理与MLC类似,但可以在每个储存单元内储存3个信息比特。TLC的写入速度比SLC和MLC慢,寿命也比SLC和MLC短(使用LDPC的话,约有1500次),大约1000次。现在,厂商已不使用TLC这个名字,而是称其为3-bit MLC。

  • QLC:四阶储存单元(Quad-Level Cell, QLC),每个存储单元有4个bits的格式,寿命为四者之中最短,大约只有500次。

闪存缺点

  • 区块擦除:Flash只能按照block进行擦除。

  • 记忆损耗:可擦写次数有上限,也就使得使用寿命受限。

  • 读写干扰:由于设计问题,读取时会检测周围存储单元,大量多次读取某单元后,其周围单元可能发生位状态变化。写入干扰(编程干扰)是指当对页(page)进行写入时,由于阈值电压接近的关系,相邻的位(bit)也被升高,从而造成相邻的位出错。闪存电荷非常不稳定,相邻存储电荷的悬浮门间会相互干扰,造成相邻悬浮门间的bit错误,MLC由于存在4组接近的电压,与SLC相比更容易受到干扰。

  • 掉速问题:随着擦写次数增多,或者磁盘容量降低到一定阈值,读写速度将会大幅下降。

4K对齐

由于分区偏移尺寸一般是从63扇区开始(63x512B=31.5KB),这就会导致用户第一个数据的前4KB存放在系统逻辑扇区的第31.5KB到35.5KB之间。持续下去后,后续所有数据就都会卡在2个物理扇区之间,那么一次正常的写入(“读”→“写”),就被硬生生地变为“读”→“擦”→“写”三个步骤。二次往复读取,读取数据时间増加,读写效率降低。

4K对齐其实就是让一个4KB大小的数据一步写入,以避免出现被拆分二次写入的情形。可以通过专业工具进行验证和对齐。

固态硬盘

  • SSD常见接口

    • SATA

    • M.2

    • PCIe

  • SSD常见协议

    • SATA

    • NVMe

  • SSD速度

    • SATA接口 = M.2接口SATA协议 << M.2接口NVMe协议 = PCIe接口

HDD和SSD对比

  • 顺序读写

    • HDD:30-150 MB/s

    • SSD:500MB/s

    • NVMe:3000-3500MB/s

  • 4K读写

    • HDD:0.1-1.7MB/s

    • SSD:50-250MB/s


固态硬盘(SSD)机械硬盘(HDD)
容 量较小
价 格便宜
随机存取极快一般
写入次数SLC:10万次/MLC:1万次无限制
磁盘阵列极难
工作噪音
工作温度极低较为明显
防震能力很好较差
数据恢复容易

SSD写放大

成因

SSD一般采用NAND Flash实现,不能覆盖写,只能先擦除再写入。SSD每次写入的最小单位为Page,每个Page是4KB大小,而每次擦除的大小单位为Block,Block通常由64或128个Page组成。也就是说,正是由于SSD写入与擦除的单位大小不匹配,导致了写入放大。

解决方案
  • 批量写:尽量在代码逻辑之中减少随机写的次数,来避免由少量写操作引发的写放大问题,同时可以考虑通过块对齐的方式来进一步减少写入产生的写放大问题。(当然这里所谓块对齐的思路在是与程序运行环境紧耦合的,程序的可移植性会大打折扣)

  • 预留空间,容量预警:SSD中的三级预留空间。(层级1:7.37%,230和109之间的差距。HDD和SSD基于十进制衡量空间,而不是像内存那样用二进制单位。层级2:0,7,或28%,控制寿命、容量、性能达到期望平衡的比例。SSD由工厂设置层级2的预留空间,以维持基本的性能和寿命。层级3:?%,在SSD的使用过程中波动。(假设支持TRIM)存储的用户数据在变化,空闲空间被自动用作预留空间。)


  • 写压缩:写压缩是依赖SSD的主控芯片的,部分SSD主控芯片支持写压缩。也就说接受到操作系统发送要写入20M数据,主控芯片可以通过一些流压缩或块压缩的算法压缩数据,在读取数据时,再重新进行解压。这种方式强依赖硬件,并且新的瓶颈可能会是主控芯片的压缩,解压的速度。

  • TRIM命令:TRIM是操作系统层级的命令。操作系统利用TRIM命令来标记SSD上某个Page的数据可以回收。一旦某个Page被SSD标记为可以回收,在SSD空闲的时候SSD的主控芯片会将这些被标记的Page数据收集到同一个Block,然后共同擦除。这样每次需要写数据时,就在已经有足够空闲的Page可以写入新的数据。

消费电子产品存储

  • eMMC(Embedded Multimedia Card):是一种新的存储技术,是一种主要用于印刷电路板的嵌入式非易失性存储器系统.eMMC不是用户可随意移动的卡,而是永久性的电路板附件。如果eMMC出现内存或其控制器的问题,则可能需要更换整个PCB(印刷电路板)来修复。几乎所有在2016年之前生产的手机和平板电脑都使用这种形式的主存储器,直到2016年UFS开始渐渐占领市场。


写入(MB/s)读取(MB/s)
UFS1.X150350
eMMC 5.1125250
eMMC 5.090250
eMMC4.550140
  • UFS(Universal Flash Storage):通用闪存存储(Universal Flash Storage)是一种设计用于数字相机、智能电话等消费电子产品使用的闪存存储规范。它的设计目标是发展一套统一的快闪存储卡格式,在提供高数据传输速度和稳定性的同时,也可以减少消费者对于市面上各种存储卡格式的混淆和不同存储卡转接器的使用。UFS相较eMMC最大的不同是并行信号改为了更加先进的串行信号,从而可以迅速提高频率;同时半双工改为全双工;UFS基于小型电脑系统接口(SCSI)结构模型(英语:SCSI architectural model)以及支持SCSI标记指令序列(SCSI Tagged Command Queuing)。


UFS1.01.12.02.13.03.1
介绍2011-02-242012-06-252013-09-182016-04-042018-01-302020-01-30
通道带宽300 MB/s300 MB/s600 MB/s600 MB/s1450 MB/s1450 MB/s
最大通道数量112222
最大总带宽300 MB/s300 MB/s1200 MB/s1200 MB/s2900 MB/s2900 MB/s




文章转载自BitsMan,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论