《深入浅出SSD:固态存储核心技术、原理与实战》----学习记录(一)

news2024/11/18 20:23:10

前言

传统数据存储介质有磁带、光盘等,但更多的是硬盘(HDD)。随着数据呈爆炸式增长,对数据存储介质在速度上、容量上有更高的要求。时势造英雄,固态硬盘(Solid State Disk,SSD)横空出世。SSD使用电子芯片存储数据,没有HDD的机械式部件,因此在速度、时延、功耗、抗震等方面,与HDD相比有碾压式优势。无论是个人存储,还是企业存储,都在逐渐用SSD取代HDD。大数据时代,SSD必将是主角。

第1章 SSD综述

SSD(Solid State Drive),即固态硬盘,是一种以半导体闪存(NAND Flash)作为介质的存储设备。和传统机械硬盘(Hard Disk Drive,HDD)不同,SSD以半导体存储数据,用纯电子电路实现,没有任何机械设备,这就决定了它在性能、功耗、可靠性等方面和HDD有很大不同。

1.1 引子

SSD是一种以半导体为主要存储介质、外形和数据传输接口与传统的HDD相同的存储产品。目前主流SSD使用一种叫闪存的存储介质,未来随着存储半导体芯片技术的发展,它也可以使用更快、更可靠、更省电的新介质,例如3D XPoint、MRAM等。当前业界主要使用的还是闪存。

外观上,加上铝盒的2.5寸的SSD,和2.5寸HDD外观基本相同。除了有传统HDD的2.5寸和3.5寸的外观外,SSD还可以有更小的封装和尺寸,图1-2所示为M.2接口的SSD。

在这里插入图片描述
图1-2 SSD外观(左:2.5寸盘;右:M.2SSD) 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

SSD是用固态电子存储芯片阵列制成的硬盘,主要部件为控制器和存储芯片,内部构造十分简单。详细来看,SSD硬件包括几大组成部分:主控、闪存、缓存芯片DRAM(可选,有些SSD上可能只有SRAM,并没有配置DRAM)、PCB(电源芯片、电阻、电容等)、接口(SATA、SAS、PCIe等),其主体就是一块PCB,如图1-3所示。软件角度,SSD内部运行固件(Firmware,FW)负责调度数据从接口端到介质端的读写,还包括嵌入核心的闪存介质寿命和可靠性管理调度算法,以及其他一些SSD内部算法。SSD控制器、闪存和固件是SSD的三大技术核心。

在这里插入图片描述
图1-3 SSD结构 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

存储介质按物理材料的不同可分为三大类:光学存储介质、半导体存储介质和磁性存储介质。光学存储介质,就是大家之前都使用过的DVD、CD等光盘介质,靠光驱等主机读取或写入。在SSD出现之前,个人和企业的数据存储还是HDD的天下,HDD是以磁性存储介质来存储数据的;SSD出现以后,采取的是半导体芯片作为存储介质。现在及未来技术变革最快和主要方向还是半导体存储,从图1-4可以看出,半导体存储介质五花八门,目前可以看得出的主要方向还是闪存、3D XPoint、MRAM、RRAM等

在这里插入图片描述
图1-4 存储介质分类 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

1.2 SSD vs HDD

传统的HDD是“马达+磁头+磁盘”的机械结构,SSD则变成了“闪存介质+主控”的半导体存储芯片结构,两者有完全不同的数据存储介质和读写方式。对比如表1-1所示

在这里插入图片描述
表1-1 HDD vs SSD结构对比 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

SSD和HDD物理结构的不同,如图1-5所示

在这里插入图片描述
图1-5 SSD vs HDD结构 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

SSD与HDD相比具有如下优点

  • 性能好:表1-2所示某两款SSD和HDD的对比,读写速度有从几倍到几百倍的差异,随机读写性能差异最为明显
  • 功耗低:工作功耗HDD为6~8W,SATA SSD为5W,待机功耗SSD可降低到毫瓦(mW)级别。关于功耗,业界定义有几类:峰值功耗(Peak Power)、读写功耗(Active Power)、空闲功耗(Idle Power)、省电功耗(启动SSD内部休眠,尽可能多地关掉不工作的硬件模块,专业上定义为Standby/Sleep Power和DevSleep Power)。HDD与SSD的功耗对比如表1-3所示,从SSD功耗分解来看,读写功耗主要消耗在闪存上。数据读取和写入并发在后端的闪存,闪存的单位读写功耗是决定性的
  • 抗震防摔:SSD内部不存在任何机械部件,相比HDD更加抗震。HDD是机械式结构,磁头和磁片之间发生跌落时接触碰撞会产生物理损坏,无法复原。SSD是电子和PCB结构,PCB加半导体芯片,跌落时不存在机械损伤问题,因此更加抗震和可靠。另外SSD对环境的要求没有HDD那么苛刻,更适合作为便携式笔记本、平板电脑的存储设备。从可靠性角度来看,物理上的损伤以及带来数据损坏的概率,SSD比HDD更低
  • 噪声:客观上,由于结构上没有马达的高速运转,SSD是静音的
  • 身形小巧百变:HDD一般只有3.5寸和2.5寸两种形式,SSD除了这两种,还有更小的可以贴放在主板上的M.2形式,甚至可以小到芯片级,例如BGA SSD的大小只有16mm×30mm,甚至可做得更小

在这里插入图片描述
表1-2 HDD与SSD性能对比 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

在这里插入图片描述
表1-3 HDD与SSD功耗对比 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

1.3 固态存储及SSD技术发展史

StorageSearch是一家专门讲述各大固态存储公司产品的网站,本节中SSD发展史大部分内容来自于该网站的一篇文章:http://www.storagesearch.com/chartingtheriseofssds.html

1 昂贵的RAM SSD时代

1976年,Dataram公司开始出售叫作Bulk Core的SSD,容量是2MB,使用了8块大电路板,每个板子有18个256KB的RAM。RAM的优点是可以随机寻址,就是每次可以只读写一个字节的数据,速度很快;缺点也很明显,掉电数据就没了,价格还巨贵。在以后的20多年时间里,TMS(Texas Memory Systems)、EMC、DEC等玩家不断推出各种RAM SSD

2 机械硬盘(HDD)称霸世界

1988年费尔和格林贝格尔发现了巨磁阻效应,这个革命性的技术使得HDD容量变得很大,在各大企业的推广下,HDD进入千家万户。2013年全球卖出了5.7亿块HDD,市场为320亿美金。但是,HDD已经过了最鼎盛的时代

3 闪存——源于华人科学家的发明

1967年,贝尔实验室的韩裔科学家姜大元和华裔科学家施敏一起发明了浮栅晶体管(Floating Gate Transistor),这是现在SSD基础——闪存的技术来源。图1-9所示,相比MOSFET多了Floating Gate,悬浮在中间,所以叫浮栅。它被高阻抗的材料包裹,和上下绝缘,能够保存电荷,而电荷通过量子隧道效应进入浮栅

在这里插入图片描述
图1-9 浮栅晶体管结构 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

4 闪存SSD异军突起

20世纪90年代末,终于有一些厂商开始尝试使用闪存制造SSD,进行艰难的市场探索。1997年,Altec Computer Systeme推出了一款并行SCSI闪存SSD,接着1999年BiTMICRO推出了18GB的闪存SSD,从此,闪存SSD逐渐取代RAM SSD,成为SSD市场的主流。从2003年开始,SSD的时代终于到来,SSD开始成为存储行业的一个热词,固态硬盘的概念开始为许多人所知晓

5 2006年,SSD进入笔记本

2006年,NextCom制造的笔记本开始使用SSD。三星推出了32GB的SSD,并认为2007年SSD市场容量可达13亿美金,2010年将达到45亿美金。9月,三星推出了PRAM SSD,这另一种SSD技术,其采用了PRAM作为载体,三星希望能取代NOR闪存

6 2007,革命之年

2007年,Mtron和Memoright公司开发了2.5寸和3.5寸的闪存SSD,读写带宽和随机IOPS性能终于达到了最快的企业级HDD水平,同时闪存SSD开始在某些领域替代原来的RAM SSD。硬盘大战的序幕从此拉开

7 2008年,速度大战爆发

2008年,SSD厂商迅速达到了100家,就是说一年内新冒出了40家新的SSD厂商。这一年使用的闪存还是SLC。SLC虽然容量小、价格高,但是挡不住大家的热情,IOPS不断被打破

8 2009年,SSD的容量赶上了HDD

PureSilicon公司的2.5寸SSD做到了1TB容量,由128片64Gb的MLC闪存组成。SSD终于在同样的空间内,实现了和HDD一样大的容量

9 2010年,SSD市场开始繁荣

2010年,SSD市场达到了10亿美金

10 2011~2012年,上市、收购,群雄并起

企业级市场也开始使用MLC。闪存阵列厂商Skyera推出了44TB的SSD,售价13.1万美金!IBM收购了老牌RAM SSD厂商TMS

11 2013年,PCIe SSD进入消费者市场

台式机和笔记本觉得SATA已经不够用了,SATA是为HDD设计的接口,最大速度是6Gbps,只能达到最高600MB/s的带宽(扣除协议开销,实际速度可能只有560MB/s左右),同时命令队列不够深,不适合SSD使用。SSD开始在协议上引发存储技术的变革

12 2014年,SSD软件平台重构企业级存储

SSD大放异彩需要整个生态链的支持,因为以前的软件和协议都是为慢速HDD设计的。现在它们需要适应快速的硬盘

13 2015年,3D XPoint

Toshiba发布48层3D闪存样品,容量16GB。7月,Intel和Micron宣布开发出了新型存储器——3D XPoint

14 2016年,NVDIMM开始供货,关键是怎么标准化

  • Google经过测试认为不值得花那么多钱去买SLC,其实MLC性价比更高
  • NVMdurance再次融资,号称能延长闪存寿命
  • Cadence和Mellanox展示了PCIe 4.0技术,带宽达到16Gbps
  • Pure Storage表示2016年第一季度全闪存阵列收入超过了机械硬盘阵列头号厂商
  • Diablo的128GB DDR4Memory1开始供货
  • 希捷展示60TB的3.5寸SAS SSD
  • Nimbus在FMS上展示4PB 4U HA全闪存阵列
  • Everspin(MRAM)启动上市IPO进程
  • Rambus宣布了基于FPGA的数据加速卡项目
  • SiliconMotion发布了世界上第一颗SD 5.1标准的SD卡控制器
  • Violin破产保护

1.4 SSD基本工作原理

从主机PC端开始,用户从操作系统应用层面对SSD发出请求,文件系统将读写请求经驱动转化为相应的符合协议的读写和其他命令,SSD收到命令执行相应操作,然后输出结果,每个命令的输入和输出经协议标准组织标准化,这是标准的东西,和HDD无异,只不过HDD替换成SSD硬件存储数据,访问的对象变成SSD

SSD的输入是命令(Command),输出是数据(Data)和命令状态(Command Status)。SSD前端(Front End)接收用户命令请求,经过内部计算和处理逻辑,输出用户所需要的数据或状态。从图1-13所示可以看出,SSD主要有三大功能模块组成:

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

在这里插入图片描述
图1-13 SSD系统调用 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

SSD前端负责和主机直接通信,接收主机发来的命令和相关数据,命令经SSD处理后,最终交由前端返回命令状态或数据给主机。SSD通过诸如SATA、SAS和PCIe等接口与主机相连,实现对应的ATA、SCSI和NVMe等协议,如表1-5所示

在这里插入图片描述
表1-5 SATA/SAS/PCIe接口协议 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

SSD写操作:主机通过接口发送写命令给SSD,SSD接收到该命令后执行,并接收主机要写入的数据。数据一般会先缓存在SSD内部的RAM中,FTL会为每个逻辑数据块分配一个闪存地址,当数据凑到一定数量后,FTL便会发送写闪存请求给后端,然后后端根据写请求,把缓存中的数据写到对应的闪存空间。由于闪存不能覆盖写,闪存块需擦除才能写入。主机发来的某个数据块,它不是写在闪存固定位置,SSD可以为其分配任何可能的闪存空间写入。因此,SSD内部需要FTL这样一个东西,完成逻辑数据块到闪存物理空间的转换或者映射

举例:假设SSD容量为128GB,逻辑数据块大小为4KB,所以该SSD一共有128GB/4KB=32M个逻辑数据块。每个逻辑块都有一个映射,即每个逻辑块在闪存空间都有一个存储位置。闪存地址大小如果用4字节表示,那么存储32M个逻辑数据块在闪存中的地址则需要32M×4B=128MB大小的映射表

正因为SSD内部维护了一张逻辑地址到物理地址转换的映射表,当主机发来读命令时,SSD能根据需要读取的逻辑数据块查找该映射表,获取这些逻辑数据在闪存空间所在的位置,后端便能从闪存上把对应数据读到SSD内部缓存空间,然后前端负责把这些数据返回给主机

由于前端接口协议都是标准化的,后端和闪存的接口及操作也是标准化的(闪存遵循ONFI或者Toggle协议),因此,一个SSD在前端协议及闪存确定下来后,差异化就体现在FTL算法上了。FTL算法决定了性能、可靠性、功耗等SSD的核心参数。闪存不能覆盖写,因此随着用户数据的不断写入,闪存空间会产生垃圾(无效数据)。FTL需要做垃圾回收(Garbage Collection),以腾出可用闪存空间用以写用户数据

以图1-14所示为例,在Block x和Block y上有很多垃圾数据,其中Block x上的A、B、C为有效数据,Block y上的D、E、F、G为有效数据。垃圾回收就是把一个或者几个Block上的有效数据搬出来集中写到某个空闲Block上(比如Block z)。当这些Block上的有效数据都搬走后,FTL便能擦除这些Block,然后又能把这些Block拿出来供SSD写入新的数据了

在这里插入图片描述
图1-14 垃圾数据回收 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

闪存都是有寿命的,每个闪存块不能一直写数据,因此,为保证最大的数据写入量,FTL必须尽量让每个闪存块均衡写入,这就是磨损平衡(Wear Leveling)

1.5 SSD产品核心参数

以Intel一款企业级SATA接口数据中心盘S3710SSD产品手册为例,如图1-15所示,解读SSD产品的核心参数。

在这里插入图片描述
图1-15 Intel DC S3700固态硬盘规格书截图 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

从图1-15所示分类来看,这份文档给用户展示了SSD几大核心参数:

  • 基本信息:包括容量配置(Capacity)、介质信息(Component)、外观尺寸(Form Factor)、重量(Weight)、环境温度(Temperature)、震动可靠性(Shock和Vibration)、认证(Certifications)、加密(Encryption)等信息
  • 性能指标:连续读写带宽、随机读写IOPS、时延(Latency)、最大时延(Quality of Service)
  • 数据可靠性和寿命:Reliability、Endurance
  • 功耗:Power Management、Active Power和Idle Power
  • 兼容性等:Compliance、Compatibility(与操作系统集成时参考)

1.5.1 基本信息剖析

1 SSD容量

SSD容量是指提供给终端用户使用的最终容量大小,以字节(Byte)为单位。以二进制为单位的容量行业内称为裸容量,以十进制为单位的容量称为用户容量。裸容量比用户容量多出7%。这里指GB级,当进入到TB级时,数值差距更大。对于闪存本身,它是裸容量。SSD可以利用这多出来的7%空间管理和存储内部数据,比如把这部分额外的空间用作FTL映射表存储空间、垃圾回收所需的预留交换空间、闪存坏块的替代空间等。这里的7%多余空间也可以转换为OP概念(Over Provisioning),公式是

在这里插入图片描述
公式来源于《深入浅出SSD:固态存储核心技术、原理与实战》

2 介质信息

当前SSD盘核心存储介质是闪存,闪存这种半导体介质有其自身物理参数,例如寿命(PE cycles,编程擦除次数)、Program(写编程)、Erase(擦除)和Read(读)时间、温度对读写擦的影响、闪存页的大小、闪存块的大小。这些都是介质的信息,介质的好坏直接影响数据存储的性能和完整性

闪存分SLC、MLC、TLC(甚至QLC),它指的是一个存储单元存储的比特数,见表1-6

在这里插入图片描述
表1-6 SLC、MLC和TLC参数比较 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

  • SLC(Single-Level Cell)即单个存储单元存储1bit的数据。SLC速度快,寿命长(5万~10万次擦写寿命),但价格超贵(约是MLC 3倍以上的价格)
  • MLC(Multi-Level Cell)即单个存储单元存储2bit的数据。MLC速度一般,寿命一般(约为3k~10k次擦写寿命),价格一般
  • TLC(Trinary-Level Cell)即单个存储单元存储3bit的数据,也有闪存厂家叫8LC,速度慢,寿命短(约500~1500次擦写寿命),价格便宜

闪存发展到现在,经历了2D平面到现在的3D立体制程(Process)的大发展,目标只有一个:硅片单位面积(mm2 )能设计生产出更多的比特(bit),让每GB成本和价格更低

2D与3D闪存结构示意图,如图1-16所示

在这里插入图片描述
图1-16 2D vs.3D闪存结构示意图 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

2D到3D的单位面积比特数的比较,见表1-7

在这里插入图片描述
表1-7 不同闪存密度对比 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

3 外观尺寸

SSD是标准件,外观尺寸需要满足一定的规定要求(长宽高和接口连接器),这又通常称为Form Factor。SSD细分为3.5寸、2.5寸、1.8寸、M.2、PCIe card、mSATA、U.2等Form Factor标准,见图1-18,每个Form Factor也都有三围大小、重量和接口引脚等明确规范

在这里插入图片描述
图1-18 SSD尺寸部分一览 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

4 其他

  • 温度:所有工业品都有温度规范,SSD应在一定温度范围内使用。工作温度为0℃~70℃,说的是SSD在运行状态时的温度,超出这个温度范围SSD可能出现产品异常和数据异常。非工作温度为-50℃~90℃,这是SSD储存和运输期间的温度,也就是在非开机工作状态下,产品运输和仓库存储时的参考温度参考。超出-50℃~90℃,SSD可能会发生损坏
  • 认证及兼容性信息:SSD硬件和软件都应通过一定认证测试来反映产品的标准测试情况,从而让客户明确是不是过了相应的测试。认证和兼容性是对应标准组织的测试集,标准组织属于第三方,独立客观,测试通过意味着可以免去客户一部分测试

1.5.2 性能剖析

1 性能指标

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

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

2 访问模式

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

  • Random/Sequential:随机(Random)和连续(Sequential)数据命令请求。何为随机和连续?指的是前后两条命令LBA地址是不是连续的,连续的地址称为Sequential,不连续的地址称为Random
  • Block Size:块大小,即单条命令传输的数据大小,性能测试从4KB~512KB不等。随机测试一般用小数据块,比如4KB;顺序测试一般用大块数据,比如512KB
  • Read/Write Ratio:读写命令数混合的比例

3 时延指标

时延有平均时延和最大时延,数值越低越好。平均时延计算公式是整个应用或者测试过程中所有命令响应时间总和除以命令的个数,反映的是SSD总体平均时延性能;最大时延取的是在测试周期内所有命令中响应时间最长的那笔,反映的是用户体验

4 服务质量指标

服务质量(Quality of Service,QoS)表达的是时延“置信级”(Confidence Level),如图1-20所示,在测试规定的时间内使用2个9(99%)到5个9(99.999%)的百分比的命令中最大的时延(Max Latency),也就是最慢的那条命令的响应时间。整体上看,一个SSD盘QoS时延分布整体越靠左越好,即时延越小越好

在这里插入图片描述
图1-20 SSD时延分布图 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

5 性能数据一览

一组性能测试数据,包括SSD、HDD和SSHD(SSD和HDD混合硬盘)的性能数据,如图1-21所示:

在这里插入图片描述
图1-21 SSD、HDD和SSHD性能数据一览 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

1.5.3 寿命剖析

用户拿到一款SSD,除了关心其容量和性能参数外,还会关心它的寿命(Endurance)指标,也就是在SSD产品保质期内,总的寿命是多少,能写入多少字节的数据量。衡量SSD寿命主要有两个指标:

  • DWPD(Drive Writes Per Day),即在SSD保质期内,用户每天可以把盘写满多少次
  • TBW(Terabytes Written),在SSD的生命周期内可以写入的总的字节数

1 DWPD

总的写入量可以换算成DWPD,一些SSD指标上更多使用DWPD作为寿命参数。从应用的角度出发,多数应用读多写少,少数应用写多读少,应用不同,对SSD的寿命要求也不同。可以将其归类为:写密集(Write Intensive)和读密集(Read Intensive)两种类型。表1-8比较好地归纳出应用场合和应用读写特点所需求的DWPD参数

在这里插入图片描述
表1-8 DWPD参数 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

2 TBW

TBW就是在SSD的生命周期内可以写入的总的字节数,用来表达SSD的寿命指标,公式如下:

在这里插入图片描述
公式来源于《深入浅出SSD:固态存储核心技术、原理与实战》

上式中:

  • NAND PE Cycles:SSD使用的闪存标称写擦除次数,如3K、5K
  • Capacity:SSD单盘用户可使用容量
  • WA:写入放大系数,这跟SSD FW的设计和用户的写入的数据类型(顺序写还是随机写)强相关

TBW和DWPD的计算公式:

在这里插入图片描述
公式来源于《深入浅出SSD:固态存储核心技术、原理与实战》

1.5.4 数据可靠性剖析

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

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

1 数据可靠性

UBER是一种数据损坏率衡量标准,等于在应用了任意特定的错误纠正机制后依然产生的每比特读取的数据错误数量占总读取数量的比例(概率)
为什么会产生错误数据?SSD的存储介质是闪存,闪存有天然的数据比特翻转率。主要有以下几种原因导致:

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

虽然SSD主控和固件设计会用纠错码(ECC)的方式(可能还包括其他方式,如RAID)来修正错误数据,但错误数据在某种条件下依然有纠不回来的可能,所以需要用UBER让用户知道数据误码纠不回来的概率

闪存原始的数据比特翻转加上BCH码(一种ECC纠错算法)经ECC校验码保护后,可以计算转换到UBER。影响UBER最核心的因素是RBER。图1-24所示为从RBER、ECC编码长度(Code Length)和保护强度(Strength)换算到UBER,从中得出结论:相同的ECC编码长度,随着保护强度的增长,UBER在大幅度降低

在这里插入图片描述
图1-24 UBER和纠错强度的关系 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

在相同的ECC编码长度和保护强度下,RBER越低,UBER越低,并呈指数级降低,如图1-25所示

在这里插入图片描述
图1-25 UBER和RBER的关系 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

RBER反映的是闪存的质量。所有闪存出厂时都有一个RBER指标,企业级闪存和消费级闪存的RBER显然是不同的,价格当然也有所不同。RBER指标也不是固定不变的,如图1-26所示,闪存的数据错误率会随着使用寿命(PE Cycle)的增加而增加。为了挑战极限,必须准备好处理每100个bit就有1个坏bit的情况

在这里插入图片描述
图1-26 RBER和PE的关系 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

RBER还跟闪存内部结构也有关系。两个相邻闪存块的RBER有可能完全不同,图1-27是单个闪存块里面不同闪存页的RBER分布图。看得出来,Upper Page的RBER比Lower Page的RBER要高两个数量级

在这里插入图片描述
图1-27 Lower&Upper page RBER 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

2 MTBF

工业界MTBF指标反映的是产品的无故障连续运行时间,也是产品的可靠性指标。MTBF计算有一些标准,目前最通用的权威性标准是MIL-HDBK-217、GJB/Z299B和Bellcore,分别用于军工产品和民用产品

MTBF主要考虑的是产品中每个器件的失效率。但由于器件在不同的环境、不同的使用条件下其失效率会有很大的区别,在计算可靠性指标时,必须考虑多种因素。所有这些因素几乎无法通过人工进行计算,但借助软件(如MTBFcal软件)和其庞大的参数库,能够轻松得出MTBF值

1.5.5 功耗和其他剖析

1 SSD产品功耗

SSD定义了以下几种功耗类型:

  • 空闲(Idle)功耗:当主机无任何命令发给SSD,SSD处于空闲状态但也没有进入省电模式时,设备所消耗的功耗
  • Max active功耗:最大功耗是SSD处于最大工作负载下所消耗的功耗,SSD的最大工作负载条件一般是连续写,让闪存并发忙写和主控ASIC满负荷工作,这时的功耗值对应最大功耗
  • Standby/Sleep功耗:规范规定了SSD状态,包括:Active、Idle、Standby和Sleep,功耗值从Active到Sleep逐级递减,具体的实现由各商家自行定义。一般来讲,在Standby和Sleep状态下,设备应尽可能把不工作的硬件模块关闭,降低功耗。一般消费级SSD Standby和Sleep功耗为100~500mW
  • DevSleep功耗:这是SATA和PCIe新定义的一种功耗标准,目的是在Standby和Sleep基础上再降一级功耗,配合主机和操作系统完成系统在休眠状态下(如Hibernate),SSD关掉一切自身模块,处于极致低功耗模式,甚至是零功耗。一般是10mW以下

对于主机而言,它的功耗状态和SSD作为设备端是一一对应的,而功耗模式发起端是主机,SSD被动执行和切换对应功耗状态。系统Power State(SATA SSD作为OS盘):

  • S0:工作模式,OS可以管理SATA SSD的Power State,D0或者D3都可以
  • S1:是低唤醒延迟的状态,系统上下文不会丢失(CPU和Chipset),硬件负责维持所有的系统上下文
  • S2:与S1相似,不同的是处理器和系统Cache上下文会丢失(OS负责维护Cache和处理器上下文)。收到唤醒要求后,从处理器的reset vector开始执行
  • S3:睡眠模式(Sleep),CPU不运行指令,SATA SSD关闭,除了内存之外的所有上下文都会丢失。硬件会保存一部分处理器和L2cache配置上下文,从处理器的reset vector开始执行
  • S4:休眠模式(Hibernation),CPU不运行指令,SATA SSD关闭,DDR内容写入SSD中,所有的系统上下文都会丢失,OS负责上下文的保存与恢复
  • S5:Soft off state,与S4相似,但OS不会保存和恢复系统上下文。消耗很少的电能,可通过鼠标键盘等设备唤醒

进入功耗模式有一定的时延,当然退出功耗模式也需要一定的时延,通常恢复SSD到初始功耗模式所花费的时间更长,如表1-10所示

在这里插入图片描述
表1-10 各种功耗模式下SSD进入和退出的时间 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

2 最大工作功耗与发热控制

前面已解释过最大工作功耗,单独把最大工作功耗拉出来讨论,是因为当SSD一直处于最大功耗工作负载下,器件会存在发热问题。为SSD功耗最大的是ASIC主控和闪存模块,因此二者也是发热大户,当热量积累到一定程度,器件会损坏掉,这是一定不能容忍的。当外界环境温度(Ambient Temperature)处在50℃或60℃时,不加以控制,发热的速度和损坏器件的概率也会随之增大。所以工作在最大负载下,控制SSD温度是固件设计要考虑的,就是设计降温处理算法

做法具体的原理:当SSD温度传感器侦测到温度达到阈值,如70℃,固件启动降温算法模块,限制闪存后端并发写的个数,由于SSD中发热大户是闪存芯片,故当写并发数减少后,温度自然下降。同时由于写并发下降,SSD写性能也会下降,这是性能和温度的一个折中

1.5.6 SSD系统兼容性

SSD的各项参数中,系统兼容性指标无法量化,最不直观,也最容易被忽视。但不可否认的是,实际应用场合中除了性能功耗和可靠性问题,最让人头疼的是系统兼容性问题,表现为各种场景下盘无法识别、不兼容某些型号主板、操作系统无法兼容等问题。站在用户角度,SSD盘的性能、功耗、可靠性设计得都不错,测试出来的成绩单很漂亮,但就是系统兼容性差,再好的盘放到电脑上就变砖,看上去就是漂亮的花瓶,中看不中用。所以渐渐地用户开始重视系统兼容性问题,在SSD引入前期用比较强的测试覆盖去验证和观察系统兼容性。从技术上系统兼容性问题归类为如下几类:

1 BIOS和操作系统的兼容性

SSD上电加载后,主机BIOS开始自检,主机中的BIOS作为第一层软件和SSD进行交互:第一步,和SSD发生链接,SATA和PCIe走不同的底层链路链接,协商(negotiate)到正确的速度上,自此主机端和SSD连接成功;第一步,发出识别盘的命令(如SATA Identify)来读取盘的基本信息,基本信息包括产品part number、FW版本号、产品版本号等,BIOS会验证信息的格式和数据的正确性,然后BIOS会走到第三步去读取盘其他信息,如SMART,直到BIOS找到硬盘上的主引导记录MBR,加载MBR;第四步,MBR开始读取硬盘分区表DPT,找到活动分区中的分区引导记录PBR,并且把控制权交给PBR,最后,SSD通过数据读写功能来完成最后的OS加载。完成以上所有这些步骤就标志着BIOS和OS在SSD上电加载成功。任何一步发生错误,都会导致SSD交互失败,进而导致系统启动失败,弹出Error window或蓝屏。

对SSD而言,其功能已经通过了白盒黑盒测试,但上述的加载初始化流程以及特定的BIOS和OS版本结合的相关功能测试并没有覆盖到,所以涉及这些功能有时可能会导致SSD设备加载失败。

由于现实世界中有太多的主板型号和版本号,一块兼容性良好的SSD需要在这些主机上都能正常运行。从测试角度来看,系统兼容性认证包括以下各个方面:

  • OS种类(Windows、Linux)和各种版本的OS;
  • 主板上CPU南北桥芯片组型号(Intel、AMD)和各个版本;
  • BIOS的各个版本;
  • 特殊应用程序类型和各个版本(性能BenchMark工具、Oracle数据库)

2 电信号兼容性和硬件兼容性

电信号兼容性和硬件兼容性指的是SSD工作时,主机提供的电信号处于非稳定状态,比如存在抖动、信号完整性差等情况,但依然在规范误差范围内,此时SSD通过自身的硬件设计和接口信号完整性设计依然能正常工作,数据也依然能正确收发。同理,在高低温、电磁干扰的环境下,SSD通过硬件设计要有足够的鲁棒性

3 容错处理

错误处理与硬件和软件相关。系统兼容性的容错特指在主机端发生错误的条件下,SSD盘即使不能正常和主机交互数据,至少不能变砖。当然,SSD盘若能容错并返回错误状态给主机,提供足够的日志来帮助主机软硬件开发人员调试就更好了。这里的错误包括接口总线上的数据CRC错误、丢包、数据命令格式错误、命令参数错误等

1.6 接口形态

SSD接口形态和尺寸的英文是SSD Form Factor,不同应用场景下的SSD,其Form Factor尺寸也不一样,如图1-31所示。表1-11列出了当下SATA、PCIe、SAS接口和协议的SSD所使用的Form Factor

在这里插入图片描述
图1-31 各种类型的SSD示意图 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

在这里插入图片描述
表1-11 SSD form Factor和接口 表格来源于《深入浅出SSD:固态存储核心技术、原理与实战》

1.6.1 2.5寸

2.5寸是主流企业级SSD的尺寸,这类SSD包括SATA、SAS和PCIe三种不同接口和性能的企业级SSD,1U存储和服务器机架上可以放入20~30块硬盘,专为2.5寸尺寸设计。消费级SSD,尺寸主流包括2.5寸和更小尺寸的M.2,2.5寸多应用于桌面型PC,而轻薄型笔记本更多地使用M.2

1.6.2 M.2

如图1-32所示,首先看看M.2Form Factor(包括M.2普通和BGA SSD)的三围标准:Type 1216、Type 1620、Type 1630、Type 2024、Type 2226、Type 2228、Type 2230、Type 2242、Type 2260、Type 2280、Type 2828、Type 3026、Type 3030、Type 3042、Type 22110,前两个数字为宽度,后两个(或三个)数字是高度

在这里插入图片描述
图1-32 各种不同M.2规格 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

参数定义参考图1-33,图中明确定义了宽、高、厚尺寸和接口总线形式,甚至可以支持USB/SD卡接口,同时又保留了一些总线接口

在这里插入图片描述
图1-33 M.2的命名规则 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

1.6.3 BGA SSD

早在几年前,Intel和几家公司就在讨论在消费级平板或笔记本市场推出M.2BGA SSD及其标准,如比较传统的M.22260/2280/22110SSD,它有几点技术优势:

  • 节省了15%以上的平台空间;
  • 增加了10%的电池寿命;
  • 节省了0.5mm~1.5mm SSD本身的高度;
  • 具有更好的散热性(由于是BGA封装,热可以由ball pin传导到PCB板散出)

1.6.4 SDP

SDPTM 就是SATA Disk in Package,是指将SSD主控芯片、闪存芯片在封装厂封装成一体化模块,经过开卡量产、测试后出厂。这种产品形态相当于SSD的半成品,只需要加上外壳就能成为完整的SSD产品。SDPTM 具有尺寸小、功耗低、质量轻等亮点,其尺寸大小仅为33.4×17.2×1.23mm,功耗低至1430mW,质量仅为1.9g

1.6.5 U.2

U.2俗称SFF-8639,这是新生产物,采用非AIC形式,以盘的形态存在。开发U.2的目的是统一SAS、SATA、PCIe三种接口,方便用户部署。其标准至本书完稿时还在不断更新和补充中。不可否认的是,在PCIe取代SATA甚至SAS的未来,U.2连接器和Form Factor会成为企业级SSD盘存在的主要形态,PCIe接口成为主要接口

1.7 固态存储市场

1.7.1 SSD正在取代HDD

从2000年年初SSD雏形诞生,到几大闪存原厂布局SSD产品,SSD经历了用户对闪存和数据可靠性的质疑,到实际产品的试水、铺开,一直到2015年才掀起SSD替换HDD的浪潮

1.7.2 SSD、HDD应用场合

数据按照热度的不同会采取不同的存储方式,这样可以平衡性能和成本的问题,俗称性价比。在HDD和SSD二分天下的今天,SSD主要用于存放和用户贴近的热数据,其对总容量需求较小,性能优先;HDD主要用于存放和用户较远的温(warm)数据或冷(cold)数据,其对总容量需求较大,价格优先。这是一种设计的平衡。具体来讲:

  • 数据加速层:采用PCIe接口的高性能的SSD
  • 热数据(频繁访问)层:采用普通SATA、SAS SSD
  • 温数据层:采用高性能HDD
  • 冷数据层:采用HDD
  • 归档层:采用大容量价格低廉的HDD,甚至磁带

1.7.3 SSD市场情况

从2016年Trend Focus的SSD市场占有率调研来看,总体来说三星(Samsung)领跑整个市场,占据SSD市场的半壁江山如图1-43所示

在这里插入图片描述
图1-43 2016各家SSD厂商市占率 图片来源于《深入浅出SSD:固态存储核心技术、原理与实战》

致谢《深入浅出SSD:固态存储核心技术、原理与实战》

在这里插入图片描述

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模算法(基于matlab和python)之 改进的欧拉方法与四阶L-K方法(4/10)

实验目的及要求: 1、熟悉各种初值问题的算法,编出算法程序; 2、明确各种算法的精度寓所选步长有密切关系; 3、熟悉在Matlab平台上直接求解常微分方程初值问题。 实验内容: 1、编写改进的欧拉公式通用子程序&#xff0…

禽流感病毒防治VR模拟实训教学效率高-深圳华锐视点

对于临床兽医学实训而言,学生在实验教学中依托传统的教学方式已经无法满足学生的学习效率,理论知识和实验教学无法完美结合。 随着互联网数字化的飞速发展,数字化虚拟仿真教学兴起,有效的提升了传统教学的质量,学生在实…

Blender骨骼绑定

演示视频参考连接:Blender骨骼绑定教程3:清除绑定 & Deform & 权重修改_哔哩哔哩_bilibili 对给定人体Mesh建立骨骼的操作步骤: 在Blender中打开人体Mesh模型,并确保该模型处于object模式。或者使用快捷键“Shift A”并选择“骨骼…

【FFmpeg实战】视频容器

原文地址:https://alphahinex.github.io/2020/03/12/video-container/ 视频容器 我们常见的视频格式有 avi 或 mp4 等,这些所谓的视频格式,实际上指的只是视频容器的格式。就像 zip 格式的压缩包里面可以放置任意类型的文件一样,…

【初识 Docker | 中级篇】 Docker 中部署 Spring Boot 微服务详解

文章目录 前言一、生成 Docker 镜像1.编写Dockerfile2.构建镜像 二、启动容器1.运行服务2.测试 三、jar包映射部署1.更新Dockerfile文件2.构建镜像3.创建&启动容器 总结 前言 本文将为您详细介绍如何在Docker容器中部署Spring Boot服务。 首先,您需要为您的Sp…

Argo CD 实践教程 07

在本章中,我们将探讨如何设置用户访问Argo CD的权限,以及从终端或CI/CD管道连接CLI的选项,以及如何执行基于角色的访问控制。我们将查看单点登录(SSO)选项,通常这是一个需要付费的功能,但由于Ar…

Bean与@Bean注解

文章目录 一、背景与IoC二、注解Bean1、Bean注解用法2、Bean注解源码3、Bean注解演示 一、背景与IoC 之前的代码书写现状—耦合度偏高。如下图,业务层需要数据层实现类对象BookDaoImpl,于是自己new了一个,此时,当数据层类名改为B…

隐藏菜单之菜单和搜索

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>菜单</title><style>/* css代码开始*/* {margin: 0;padding: 0;box-sizing: border-box;}b…

人工智能(pytorch)搭建模型15-手把手搭建MnasNet模型,并实现模型的训练与预测

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型15-手把手搭建MnasNet模型&#xff0c;并实现模型的训练与预测&#xff0c;本文将介绍MnasNet模型的原理&#xff0c;并使用PyTorch框架构建一个MnasNet模型用于图像分类任务&#xff0c;…

1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume

1、数据仓库概念 数据仓库&#xff08; Data Warehouse &#xff09;&#xff0c;是为企业制定决策&#xff0c;提供数据支持的。可以帮助企业&#xff0c;改进业务流程、提高产品质量等。 数据仓库的输入数据通常包括&#xff1a;业务数据、用户行为数据和爬虫数据等。 业务数…

Linux——使用第三方库链接的方式——动态式

回顾上文&#xff1a; (122条消息) Linux使用第三方库链接的使用方式——静态式_橙予清的zzz~的博客-CSDN博客https://blog.csdn.net/weixin_69283129/article/details/131414804?spm1001.2014.3001.5502 上篇文章中&#xff0c;我讲到了关于链接第三方库作为静态库的使…

股票技术分析方法综述

文章目录 K线均线MACDKDJ和RSIBOLL线趋势理论、支撑位和压力位形态理论量价关系理论道氏理论波浪理论江恩理论缠论自定义指标 K线 K线的组合形态是K线技术分析中的重要部分&#xff0c;包括早晨之星、黄昏之星、红三兵、黑三兵等。 早晨之星&#xff1a;由三根K线组成&#x…

OpenGL 抗锯齿

1.简介 你可以看到&#xff0c;我们只是绘制了一个简单的立方体&#xff0c;你就能注意到它存在锯齿边缘。 可能不是非常明显&#xff0c;但如果你离近仔细观察立方体的边缘&#xff0c;你就应该能够看到锯齿状的图案。如果放大的话&#xff0c;你会看到下面的图案&#xff1a…

家校互动、班级管理系统

最近做了一款使用若依开源框架搭建的一款家校互动、班级管理的平台&#xff0c;采用uniapp作为APP端&#xff0c;原生小程序作为小程序的家长端。

软件测试的概念与过程(软件测试的历史、概念、结构、过程)

软件测试的概念与过程----软件测试的历史 软件测试的历史软件的概念软件的结构软件测试的过程 软件测试的历史 1、早期的的软件开发过程中&#xff0c;将测试“调试”&#xff0c;目的是纠正软件已经知道的故障&#xff0c;常常有开发人员自己去完成这部分工作。 2、1957年&…

使用数据集工具

一.数据集工具介绍 HuggingFace通过API提供了统一的数据集处理工具&#xff0c;它提供的数据集如下所示&#xff1a; 该界面左侧可以根据不同的任务类型、类库、语言、License等来筛选数据集&#xff0c;右侧为具体的数据集列表&#xff0c;其中有经典的glue、super_glue数据集…

Unity | HDRP高清渲染管线学习笔记:材质系统Lit着色器

目录 一、Lit着色器 1. Surface Options 2. Surface Inputs&#xff08;表面输入&#xff09; 3. Transparency Inputs 二、HDRP渲染优先级 我们可以把现实世界中的物体分成不透明物体和透明物体&#xff08;其中包括透明或者半透明&#xff09;。在实时渲染时&#xff0c…

Debian二次开发网关支持Docker+RS485+网口

随着物联网技术的不断发展&#xff0c;瑞芯微边缘计算网关作为一种集成多种接口和功能的智能网关&#xff0c;逐渐成为了物联网领域中的热门产品。本文将详细介绍瑞芯微边缘计算网关的特点和优势&#xff0c;并探讨其在实际应用中的广泛应用。 瑞芯微Linux系统边缘计算网关是一…

【Java】 Java 私有接口方法的使用

本文仅供学习参考&#xff01; 相关教程地址&#xff1a; https://www.baeldung.com/java-interface-private-methods https://www.geeksforgeeks.org/private-methods-java-9-interfaces/ https://www.runoob.com/java/java9-private-interface-methods.html 接口是定义一组方…

java之路—— SpringMVC的常用注解解析以及作用、应用

创作不易&#xff0c;真的希望能给个免费的小 文章目录 1、Controller2、RequestMapping3.GetMapping、PostMapping、PutMapping、DeleteMapping4. RequestParam5.PathVariable6.RequestHeader7.CookieValue8.RequestBody9.ResponseBody10.SessionAttribute11.ControllerAdvice…