SSD《一》-- 基础知识

SSD工作原理

    从主机PC端开始,用户从操作系统应用层面对SSD发出请求,文件系统将读写请求经drive转化为相应的符合协议的命令,SSD收到命令执行相应操作,然后输出结果。
    对SSD来说,输入的是Command,输出是Data和Command Status。SSD前端(Front End)接受用户命令请求,经过内部处理,输出用户请求的数据或状态。
    SSD前端负责和主机直接进行通信,接受主机发来的命令和相关数据,命令经SSD处理后,最终交由前端返回命令状态数据给主机。
    SSD通过SATA、SAS、PCle等类型接口与主机相连,遵守相应的ATA、SCSI、NVMe协议。如下表所示:

接口类型协议命令主机控制器接口标准组织文档链接
SATAATA/SATA Command SetAHCI(Advanced Host Controller Interface)ATA-IOSATA Spec
SASSCSI Command SetSCSIT10 of INCITsSCSI Express
PCleNVMe Command SetNVMePCle Express/NVM Expressnvm Express

下面是SSD系统调用的一张简要示意图:
SSD系统调用
从图中可以看出,SSD主要有三大功能模块组成:

  • 前端接口和相关协议模块
  • 中间FTL层(Flash Translation Layer)模块
  • 后端和闪存通信模块
SSD的写和读操作

    主机通过接口发送写命令给SSD,SSD接收到命令后执行,并接受主机将要写入的数据。数据一般会先缓存在SSD内部的RAM中,FTL为每个逻辑数据块分配一个闪存地址,当数据凑到一定数量后,FTL发送写入闪存请求给后端,后端根据写请求,把缓存里的数据写到对应的NAND内存空间。
    对于一个写满的块(block),由于闪存(Flash)不能覆盖写,Flash block要擦除才能写入。主机发出来的某个数据不是写在固定位置,SSD内部需要FTL这样一个东西,来完成逻辑数据块到物理数据块的映射。
    假设一个128G的SSD,logic block大小为4KB,所以该SSD一共有128GB/4KB = 32M个logic block。每个logic block都有一个映射,即每个逻辑数据块在闪存空间都有一个存储位置。闪存地址大小如果用4bytes表示,那么存储32M个逻辑数据块在内存中的地址则需要32M*4B = 128MB大小的映射表。
    SSD内部维护了一张逻辑地址到物理地址的映射表,当主机发出命令时,SSD能根据需要读的逻辑数据块查找该映射表,获得这些逻辑数据在闪存空间中的位置,后端便能从闪存上把对应数据读取到SSD内部缓存空间,然后前端负责把这些数据返回给主机。
    由于前端接口协议都是标准化的,后端和闪存的接口及操作也是标准化的(内存遵循ONFI或者Toggle协议),因此,一个SSD在前端协议及闪存确定下来后,差异化就体现在FTL算法上了。FTL算法决定了性能、可靠性、功耗等SSD的核心参数。
    其实,FTL除了完成逻辑数据到闪存空间的映射,还需要做很多其他事情,例如,由于闪存不能覆盖写,因此随着用户数据的不断写入,闪存空间会产生垃圾(无效数据)。此时FTL需要做垃圾回收,以腾出可用闪存空间用以写用户数据。除此之外,FTL还需要实现坏块管理、磨损均衡、读干扰处理、数据保持处理、错误处理等很多其他重要功能。FTL是整个存储处理的核心,关于FTL后续会有专门的文章进行分析。

SSD的核心参数
SSD容量

    SSD容量是指提供给终端用户使用的最终容量大小,以字节(Byte)为单位,标称的都是以十进制为单位。以二进制为单位的容量行业内称为裸容量,以十进制为单位的容量称为用户容量。同样一组数据,二进制比十进制会多出7%容量。

存储介质

    当前SSD盘核心存储介质是闪存,闪存这种半导体介质有其自身物理参数,例如寿命(PE cycles ,编程擦写次数 )、Program(写编程)、Erase(擦除)和Read(读)时间、温度对读写擦的影响、闪存页的大小、闪存块的大小等等都是闪存的信息,介质的好坏直接影响数据存储的性能和完整性。
    闪存根据每个单元存储的比特数不同分为SLC、MLC、TLC(甚至QLC)等;

  • SLC(Single-Level Cell)即单个存储单元存储1bit的数据。SLC速度快,寿命长(5万~10万的擦写次数),但是价格昂贵(约是MLC的三倍)
  • MLC(Multi-Level Cell)即单个存储单元存储2bit的数据。MLC速度一般,寿命一般,(3k~10k的擦写次数),价格一般。
  • TLC(Trinary-Level Cell)即单个存储单元存储3bit的数据,也有闪存厂家叫8LC,速度慢,寿命短(约500~1500次擦鞋寿命),价格便宜。
闪存类型SLCMLCTLC
每单元比特数123
擦除次数(k)10031
读取时间(us)305075
编程时间(us)3006001000
擦除时间(us)150030004500
SSD性能剖析
性能指标

    硬盘性能指标一般包括IOPS(Input Output Operations Per Second,反映的是随机读写性能)、吞吐量(Throughput,单位是MB/s,反映的是顺序读写性能)、Response Time/Latency(响应时间/时延,单位为ms或us)。

  • IOPS:单位IOPS,即设备每秒完成IO请求数,一般是小块数据读写命令的响应次数,比如4KB数据块大小。IOPS数值越大越好。
  • 吞吐量:单位MB/s,即每秒读写命令完成的数据传输量,也叫带宽(bandwidth),一般是大块数据读写命令,比如512KB数据块大小。吞吐量越大越好。
  • 响应时间:也叫时延(Latency),即每个命令从发出到收到状态回复所需要的响应时间,时延指标有平均时延(Average Latency)和最大时延两项(Max Latency)。响应时间越小越好。
访问模式

性能测试设计上需要考虑访问模式(access pattern),包括以下三个部分:

  • Random/Sequential:随机(Random)和连续(Sequential)数据命令请求。前后两条命令LBA地址连续称为Sequential,不连续称为Random。
  • Block size:块大小,即单条命令传输的数据大小,性能测试从4KB~512KB不等。随机测试一般用小数据块,比如4KB;顺序测试一般用大数据块,比如512KB。
  • Random/Write Ratio:读写命令数混合的比例。
    任何测试负荷(workload)都是这些模式的组合,例如:
    1)顺序读测试:指的是LBA连续读,块大小为256KB、512KB等大尺寸数据块,读写比例为100%:0
    2)随机写测试:指的是LBA不连续的写,块大小一般为4KB,读写比例为0:100%;
    3)混合随机读写:指的是LBA不连续的读写混合测试,块大小一般为4KB,读写保持一定的比例。
时延指标

时延有平均时延和最大时延,数值越低越好。平均时延计算公式是整个应用或者测试过程中所有命令响应时间总和除以命令的个数,反映的是SSD总体平均时延性能;最大时延取的是在测试周期内所有命令中响应时间最长的那一次,反映的是用户体验,例如最大时延影响应用通过操作系统操作SSD时有无卡顿的用户体验。时延上了秒级,用户就会有明显的的卡顿感知。

数据可靠性剖析

SSD有几个关键指标来衡量其可靠性:UBER、PBER和MTBF。

  • UBER:Uncorrectable Bit Error Rate,不可修复的错误比特率。
  • RBER:Raw Bit Error Rate,原始错误比特率。
  • MTBF:Mean Time Between Failure,平均故障时间间隔。
数据可靠性

    UBER是一种数据损坏率衡量标准,等于应用了任何特定的错误纠正机制后依然产生的每比特读取的数据错误数量占总读取数量的比例(概率)。
    为什么SSD要定义UBER?任何一项存储设备产品,包括HDD,用户最关心的都是数据保存之后的读取正确性。试想数据丢失和损坏对客户产生的后果是怎样的?尤其是企业级用户数据。那如何让用户相信存储设备系统是可靠的呢?UBER指标描述的是出现数据错误的概率,给用户以直观的概率数据以描述错误数据出现的可能性,当然该指标越低越好。
    为什么会产生错误数据?SSD的存储介质是闪存,闪存有天然的数据比特翻转率。主要是以下几个原因导致:

  • 擦写磨损 (P/E cycle)
  • 读取干扰(Read Disturb)
  • 编程干扰(Program Disturb)
  • 数据保持(Data Retention)发生错误

    虽然SSD主控和固件设计会用纠错码(ECC)的方式(可能还包括其他方式,比如RAID)来修正错误数据,但是错误数据在某种条件下依然有就不回来的可能,所以需要用UBER让用户知道数据错误码纠不回来的概率。
    闪存原始的数据比特翻转加上BCH码(一种ECC纠错算法)经ECC校验码保护后,可以计算转换到UBER。影响UBER最核心的因素是PBER,PBER反映的是闪存的质量。在相同的ECC编码长度和保护强度下,PBER越低,UBER越低,并呈指数级降低 。
    企业级闪存和消费级闪存的PBER显然是不同的,价格也当然是不同的。PBER也不是固定不变的,闪存的数据错误率会随着使用寿命(PE cycle)的增加而增加。为了挑战极限,必须准备好处理每100bit就有1个坏bit的情况。PBER还跟闪存内部结构有关系。两个相邻闪存块的PBER有可能完全不同。

MTBF

   &nbsp工业界MTBF反映的是产品的无故障连续运行时间,也是产品的可靠性指标。MTBF计算有一些标准,目前最通用的权威性标准是MIL-HDBK-217、GJB/Z299B和Bellcore,分别是用户军用产品和民用产品。其中,MIL-HDBK-217是由美国国防部可靠性分析中心及Rome实验室提出的,现已成为行业标准,专门用于军工产品MTBF值的计算;GJB/Z299B是我国的军用标准;Bellcore是由AT&T贝尔实验室提出的,现已成为商用电子产品MTBF值计算的行业标准。
    MTBF主要考虑的产品中每个器件的失效率。但是由于器件在不同的环境、不同的使用条件下其失效率会有很大的区别。所以,在计算可靠性指标时,必须考虑多重因素。所有的这些因素几乎无法通过人工进行计算,一般的做法是借助软件(MTBFcal软件)和其庞大的参数库,能够轻松得出MTBF值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值