目录

  • SSD工作原理
  • SSD的写和读操作
  • SSD的核心参数
    • SSD容量
    • 存储介质
  • SSD性能剖析
    • 性能指标
    • 访问模式
    • 时延指标
  • 数据可靠性剖析
    • 数据可靠性
    • MTBF
SSD工作原理

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

接口类型 协议命令 主机控制器接口 标准组织 文档链接
SATA ATA/SATA Command Set AHCI(Advanced Host Controller Interface) ATA-IO SATA Spec
SAS SCSI Command Set SCSI T10 of INCITs SCSI Express
PCle NVMe Command Set NVMe PCle Express/NVM Express nvm Express

下面是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次擦鞋寿命),价格便宜。
闪存类型 SLC MLC TLC
每单元比特数 1 2 3
擦除次数(k) 100 3 1
读取时间(us) 30 50 75
编程时间(us) 300 600 1000
擦除时间(us) 1500 3000 4500
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值。

SSD《一》-- 基础知识相关推荐

  1. 硬件:固态硬盘SSD的基础知识及安装注意事项!

    固态硬盘就是用固态电子存储芯片阵列而制成的硬盘,相对于机械硬盘,固态硬盘的读写速度更快,但是固态硬盘的缺点是寿命不如机械硬盘. 固态硬盘有写入寿命,平均起来约为3000次P/E,1P/E为硬盘存储上限 ...

  2. Flash Memory/SSD的基础知识

    SSD在今天越来越流行,业内的很多公司都开始尝试使用,甚至作为主要的存储媒介,从Research的角度讲,SSD更是一个重磅炸弹,因为它颠覆了原有hard disk的一些基本假设,所以,理论上讲,原先 ...

  3. 第四章:磁盘和SSD基础知识(提供原稿)

    本文对服务器知识进行了汇总,第四章:磁盘和SSD基础知识. 本系列内容包括9大章节,从服务器的概念.服务器重要部件技术和架构组成,并且对磁盘.RAID知识,网卡等知识做了深度详细介绍.全系列总共145 ...

  4. linux 基础知识及命令总结

    1.mkdir   创建目录 -p 创建多级目录  mkdir -p /data/test -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p, ...

  5. 基础知识 | 对目标检测认识及理解

    本文分享自华为云社区<目标检测基础知识>,原文作者:lutianfei . 图片分类任务我们已经熟悉了,就是算法对其中的对象进行分类.而今天我们要了解构建神经网络的另一个问题,即目标检测问 ...

  6. 重磅:服务器基础知识全解终极版(145页PPT)

    重磅:服务器基础知识全解终极版(145页PPT) 2020-12-26   阅 1  转 19 终极版来啦,本文内容共145页PPT干货,针对历史发布内容在CPU.内存.GPU.硬盘.网卡等9个章节做 ...

  7. 电脑基础知识精选(硬件篇)

    电脑基础知识精选(硬件篇) 电脑基础知识 一.处理器 CPU 二.内存 RAM 三 .硬盘 Disk 四.显卡 GPU 五.主板 Motherboard 六.电源和显示器 七.选配电脑常见问答 八.如 ...

  8. 2021-7-19-OpenStack基础知识学习

    OpenStack基础知识学习 参考文献:Wolf_Coder,百度百科 1,云计算 1.1,出现原因 由亚马逊公司提出.1.随着业务增加公司内部的服务器不够使用,进行虚拟化技术->2.随着公司 ...

  9. 计算机硬件知识硬盘,DIY硬件知识:小白必看的硬盘基础知识大全

    硬盘是DIY硬件最为重要的存储设备,如果没有硬盘,虽然能够点亮机器,但是你不能进入系统并且保存任何资料文件.众所周知,目前主流的硬盘类型有两种,一种为机械硬盘,另一种为固态硬盘,固态硬盘是目前最流行的 ...

  10. 程序员教程-1章-计算机系统基础知识

    觉得自己看第一章看了很长时间,才看了二.三十页,而且也是稀里糊涂的,先记下吧.(补记:稀里糊涂看完了,这章只考选择题,也就没深入了解,其实是了解一下头就大) 先记录一下目录结构,方便以后回忆内容. 本 ...

最新文章

  1. golang sql查询获取结果集个数
  2. LCA 在线倍增法 求最近公共祖先
  3. day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)
  4. Servlet和JSP规范及版本对应关系
  5. TortoiseGit for windows安装与配置
  6. 深入理解JavaScript系列(5):强大的原型和原型链
  7. c语言回文字符串原理,回文串(c语言)注意字符串比较和字符比较的区别
  8. html留言板 php,linux下使用Apache+php实现留言板功能的网站
  9. win右键管理工具3.3.3.0
  10. 基于RTP协议的数据通讯程序
  11. 万万没想到:从啤酒评分 app 中竟能找到情报人员和军人的敏感信息
  12. OpenCV-Python实战(番外篇)——基于 Haar 级联的猫脸检测器
  13. 迁移学习—Geodesic Flow Kernel for Unsupervised Domain Adaptation
  14. iPhone防止系统自动下载更新
  15. DNS劫持使用DNS加速有哪些作用
  16. 中科院ICTCLAS分词汉语词性标记集
  17. printf如何按二进制格式打印
  18. “字体arial不支持样式regular“的解决方法
  19. 顶部BANNER广告图片放大后再自动缩小消失
  20. 【flutter】tabbar文字抖动处理方案

热门文章

  1. 东文财、赵栋《面向对象程序设计(java)》第十一周学习总结
  2. 201771010137 赵栋《面向对象程序设计(java)》第十周学习总结
  3. 认知智能三大技术体系之类脑模型简介
  4. 矩阵的秩+基础解系的秩为什么等于n?
  5. 判定覆盖 与 条件覆盖 的区别
  6. 【了解结构体与指针、数组、函数、字符串之间的关系】(学习笔记14--结构体)
  7. mpAndroidchart 坐标和图表距离_小O地图-互联网地图数据挖掘|处理|分析|图表软件...
  8. Android4.4监听耳机插入处理方法
  9. 计算机电脑维修 维修不求人,电脑维修不求人:电脑常见故障维修大全及解决方法...
  10. 深入分析事物以及什么是分布式事物?