- 深入浅出SSD:固态存储核心技术、原理与实战
- SSDFans
- 1300字
- 2022-11-11 19:15:22
1.5 SSD产品核心参数
用户在购买SSD之前,会关注它的一些参数指标,比如能跑多快、用的是什么闪存等。特别是企业级用户,需要全方位研究SSD的核心指标,解决关注什么指标、如何关注、竞争产品对比等问题,最终逐一拨开产品内在本质。本节以Intel一款企业级SATA接口数据中心盘S3710 SSD产品手册为例(见图1-15),带大家一起解读SSD产品的核心参数。
图1-15 Intel DC S3700固态硬盘规格书截图
从图1-15所示分类来看,这份文档给用户展示了SSD几大核心参数:
❏ 基本信息:包括容量配置(Capacity)、介质信息(Component)、外观尺寸(Form Factor)、重量(Weight)、环境温度(Temperature)、震动可靠性(Shock和Vi bration)、认证(Certifications)、加密(Encryption)等信息。
❏ 性能指标:连续读写带宽、随机读写IOPS、时延(Latency)、最大时延(Quality of Service)。
❏ 数据可靠性和寿命:Reliability、Endurance。
❏ 功耗:Power Management、Active Power和Idle Power。
❏ 兼容性等:Compliance、Compatibility(与操作系统集成时参考)。
当然,还有其他一些重要信息在产品规范书里是无法体现出来的,比如产品可靠性(RMA Rate)。由于固件或者硬件缺陷导致产品返修率高低是很关键的,在保质期内产品返修率越低越好。尤其是企业级硬件,数据比SSD盘本身更重要,用户不能容忍的是由于固件、硬件可靠性问题或缺陷导致丢数据,或者数据无法通过技术手段恢复。
产品的测试条件信息、产品的系统兼容性好坏的信息等也是无法在产品规范书里体现出来的。这些也是考验购买SSD的用户对SSD理解的深度。从测试条件的苛刻设计中提炼出用户自己想要的测试用例,用测试结果来反映产品规范书里无法透露和显示的产品的实际数据信息。当然,能通过苛刻的测试,并在实际上线运行中经受住系统的考验,日积月累,产品的品牌就打出来了。每家SSD OEM客户都有自己的标准和测试,通过实际测试和运行数据检验出口碑和质量好或差的SSD供应商。
行业是公平的,长期来看,对于各供应商的SSD质量客户心中是有数的。
1.5.1 基本信息剖析
1. SSD容量
SSD容量是指提供给终端用户使用的最终容量大小,以字节(Byte)为单位。这里要注意,标称的数据都以十进制为单位的,程序员出身的人容易把它当成二进制。同样一组数据,二进制比十进制会多出7%的容量,例如:
十进制128GB:128×1000×1000×1000=128000 000000字节
二进制128GB:128×1024×1024×1024=137438 953472字节
以二进制为单位的容量行业内称为裸容量,以十进制为单位的容量称为用户容量。
裸容量比用户容量多出7%。这里指GB级,当进入到TB级时,数值差距更大。读者可自行计算。
对于闪存本身,它是裸容量。那么,裸容量多出的7%容量在SSD内部做什么用呢?SSD可以利用这多出来的7%空间管理和存储内部数据,比如把这部分额外的空间用作FTL映射表存储空间、垃圾回收所需的预留交换空间、闪存坏块的替代空间等。这里的7%多余空间也可以转换为OP概念(Over Provisioning),公式是:
2.介质信息
当前SSD盘核心存储介质是闪存,闪存这种半导体介质有其自身物理参数,例如寿命(PE cycles,编程擦除次数)、Program(写编程)、Erase(擦除)和Read(读)时间、温度对读写擦的影响、闪存页的大小、闪存块的大小……这些都是介质的信息,介质的好坏直接影响数据存储的性能和完整性。
闪存分SLC、MLC、TLC(甚至QLC),它指的是一个存储单元存储的比特数(见表1-6):
表1-6 SLC、MLC和TLC参数比较
❏ SLC(Single-Level Cell)即单个存储单元存储1 bit的数据。SLC速度快,寿命长(5万~10万次擦写寿命),但价格超贵(约是MLC 3倍以上的价格)。
❏ MLC(Multi-Level Cell)即单个存储单元存储2bit的数据。MLC速度一般,寿命一般(约为3k~10k次擦写寿命),价格一般。
❏ TLC(Trinary-Level Cell)即单个存储单元存储3 bit的数据,也有闪存厂家叫8LC,速度慢,寿命短(约500~1500次擦写寿命),价格便宜。
闪存发展到现在,经历了2D平面到现在的3D立体制程(Process)的大发展,目标只有一个:硅片单位面积(mm2)能设计生产出更多的比特(bit),让每GB成本和价格更低。这是介质厂商的目标和客户的诉求,同时也是半导体工业发展的趋势。
图1-16 2D vs. 3D闪存结构示意图
来看一下2D到3D的单位面积比特数的比较(见表1-7),48层Samsung的3D V-NAND每平方毫米能生产出2600Mb的数据,3倍于2D闪存,所以同样的晶元可以切割3倍的数据量,简单计算的话每GB的价格能降为原来的1/3。
表1-7 不同闪存密度对比
最后我们来看一下各家闪存生产发展节点图(见图1-17),若一句话来概括最终竞争的目标,则为:在制程允许的范围内,发展更密、更快、价格更低的闪存产品。
图1-17 闪存原厂路线图
3.外观尺寸
SSD是标准件,外观尺寸需要满足一定的规定要求(长宽高和接口连接器),这又通常称为Form Factor。那SSD会有哪些Form Factor呢?细分为3.5寸、2.5寸、1.8寸、M.2、PCIe card、mSATA、U.2等Form Factor标准(见图1-18),每个Form Factor也都有三围大小、重量和接口引脚等明确规范。
图1-18 SSD尺寸部分一览
Form Factor标准组织:
4.其他
我们这里看看温度和认证及兼容性信息这两个参数。
❏ 温度:所有工业品都有温度规范,SSD应在一定温度范围内使用。工作温度为0℃~70℃,说的是SSD在运行状态时的温度,超出这个温度范围SSD可能出现产品异常和数据异常,这不在产品保证和保修范围内。非工作温度为-50℃~90C,这是SSD储存和运输期间的温度,也就是在非开机工作状态下,产品运输和仓库存储时的参考温度参考。超出-50℃~90℃, SSD可能会发生损坏。
❏ 认证及兼容性信息(见图1-19):SSD硬件和软件都应通过一定认证测试来反映产品的标准测试情况,从而让客户明确是不是过了相应的测试。认证和兼容性是对应标准组织的测试集,标准组织属于第三方,独立客观,测试通过意味着可以免去客户一部分测试。
图1-19 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:读写命令数混合的比例。
任何测试负荷(workload)都是这些模式的组合,比如:
1)顺序读测试:指的是LBA连续读,块大小为256KB、512KB等大尺寸数据块,读写比例为100%:0;
2)随机写测试:指的是LBA不连续的写,块大小一般为4KB,读写比例为0:100%;
3)随机混合读写:指的是LBA不连续的读写混合测试,块大小一般为4KB,读写保持一定的比例。
3.时延指标
时延有平均时延和最大时延,数值越低越好。平均时延计算公式是整个应用或者测试过程中所有命令响应时间总和除以命令的个数,反映的是SSD总体平均时延性能;最大时延取的是在测试周期内所有命令中响应时间最长的那笔,反映的是用户体验,例如最大时延影响应用通过操作系统操作SSD时有无卡顿的用户体验。时延上了秒级,用户就会有明显的卡顿感知。
4.服务质量指标
服务质量(Quality of Service, QoS)表达的是时延“置信级”(Confidence Level),如图1-20所示,在测试规定的时间内使用2个9(99%)到5个9(99.999%)的百分比的命令中最大的时延(Max Latency),也就是最慢的那条命令的响应时间。整体上看,一个SSD盘QoS时延分布整体越靠左越好,即时延越小越好。
图1-20 SSD时延分布图
对消费级硬盘来说,用户对时延要求可能不是很高。但对企业级硬盘来说,像数据中心(Data Center)等企业应用对时延的要求很敏感,比如BAT(百度、阿里巴巴、腾讯)的互联网应用,时延的大小关乎用户体验和互联网应用快慢的问题。这种类型的应用对IOPS和吞吐量并不十分敏感,而更在乎时延(包括平均时延、最大时延或服务质量等指标)。
5.性能数据一览
我们来看一组性能测试数据,包括SSD、HDD和SSHD(SSD和HDD混合硬盘)的性能数据,如图1-21所示。
图1-21 SSD、HDD和SSHD性能数据一览
测量指标包括空盘(FOB, Fresh out of Box)和满盘下的IOPS、吞吐量、平均时延和最大时延。
测试空盘IOPS用的测试模式是“RND 4 KB 100% W”,即4KB(二进制4KB,即4096字节)随机100%纯写。
测试满盘下IOPS,用了三种测试模式,分别为:
1)RND 4KB 100% W:数据块大小为4KB的写命令,100%随机写;
2)RND 4KB 65:35 RW:数据块大小为4KB的读写命令,65%的读,35%的写,混合随机读写;
3)RND 4KB 100% R:数据块大小为4KB的读命令,100%随机读。
从图1-21中我们可以看出,对HDD和SSHD,满盘下和空盘下写的IOPS相差不大(都很糟糕),而对SSD来说,满盘和空盘写的IOPS相差很大。这是因为,对HDD来说,满盘后,没有垃圾回收操作,所以空盘和满盘下写的性能差不多;但对SSD来说,满盘后,写会触发垃圾回收,导致写性能下降。
对消费级SSD来说,商家给的测试数据一般是空盘下测试的数据,数字相当好看,“最高可达”常挂嘴边。新买的盘,我们测试时会发现性能和商家标称的差不多,但随着盘的使用,会出现掉速问题。垃圾回收是其中一个原因,还有可能就是SLC缓存用完了,这里就不具体展开了。
对企业级SSD来说,客户更关注的是稳态性能,即满盘性能。所以,商家给出的性能参数一般是满盘数据,“最高可达”字眼消失。我们可以从有没有“最高可达”来快速判断一个盘是企业级还是消费级。
关于吞吐量测试,有两种模式,分别为:
1)SEQ 1024KB 100% W:数据块大小为1024KB的顺序写测试;
2)SEQ 1024KB 100% R:数据块大小为1024KB的顺序读测试。
关于时延,如前所述,有平均时延和最大时延两种,其中最大时延反映的是服务质量。测试模式都是4KB 100%随机写。从上可以看出,SSD测试的是cache on下的时延,即数据到SSD的内部缓冲区即返回命令状态。为什么不是FUA?因为对闪存来说,即使是SLC,也没有办法做到几十微秒就能写入到闪存。如果是FUA命令测试的话,其平均时延至少是几百微秒。
1.5.3 寿命剖析
用户拿到一款SSD,除了关心其容量和性能参数外,还会关心它的寿命(Endurance)指标,也就是在SSD产品保质期内,总的寿命是多少,能写入多少字节的数据量。衡量SSD寿命主要有两个指标,一是DWPD(Drive Writes Per Day),即在SSD保质期内,用户每天可以把盘写满多少次;另一指标是TBW(Terabytes Written),在SSD的生命周期内可以写入的总的字节数。
1. DWPD
回头看一下上面的S3710 SSD的Endurance项:
200GB SSD五年使用期限内对应的寿命是3600TB,平均到每天可以写入3600TB/(5×365)=1972GB,这块盘本身200GB,1972GB相当于每天写入10次,也就是规范书说的10 Drive Writes Per Day,简称10 DWPD。DWPD为5年的寿命期内每天可以满盘写入的次数。
由上可以看出,总的写入量可以换算成DWPD,一些SSD指标上更多使用DWPD作为寿命参数。这里要特别说明的是,从应用的角度出发,多数应用读多写少,少数应用写多读少,应用不同,对SSD的寿命要求也不同。所以我们可以将其归类为:写密集(Write Intensive)和读密集(Read Intensive)两种类型。
表1-8比较好地归纳出应用场合和应用读写特点所需求的DWPD参数,这里就不展开解释了。
表1-8 DWPD参数
天下没有免费的午餐,DWPD越大,单盘价格自然越高。所以用户需要思考的是什么应用场景使用SSD,以及使用哪种DWPD寿命的SSD,照顾性能和经济的双重平衡。最好的平衡艺术就是根据用户数据的生存期及热度分层,或者在技术架构上根据数据冷热和存在时间为数据打标签,然后放入对应的层级以及不同DWPD的SSD。
以下是一个典型的应用场景的SSD分级应用,OLTP(联机事务处理)有大量写应用的数据(术语叫热数据),性能要求极高,所以放入T1-WI SSD层,这一层SSD单盘价格高,总容量低;第二层是写少读多应用(术语叫温数据),性能要求也很高,所以使用T2-RI SSD存放数据;第三层基本上是冷数据,极少被读到和写到,所以用大容量低价的HDD也无可厚非。总体来说OLTP用到了40%的SSD,算是对SSD需求量比较高的应用类型。当然也有不太需要SSD的应用,如图1-22最右列所示的Disaster Recovery(容灾备份)。
图1-22 数据分层及SSD应用
最后我们来看一下现实世界对SSD的DWPD要求。数据显示更多的应用是写少读多,83%的应用使用少于1 DWPD的SSD。想象一下消费级SSD,我们每天的数据写入量是极少的,盘生命周期内几乎不会被填满,所以极低的DWPD是可以接受的。业界主流的消费级SSD DWPD是0.3。可以预见的是,数据爆炸的时代,用户对数据总量的需求是逐年递增的,即新增数据成倍数逐年增加,尤其是企业级应用,这个83%是否会减少?答案是肯定的。
图1-23 SSD DWPD现实需求
2. TBW
TBW就是在SSD的生命周期内可以写入的总的字节数,用来表达SSD的寿命指标。从SSD的设计来看,如何设计来满足SSD的TBW要求或者SSD的TBW是如何计算的?哪些因素会影响SSD的TBW?
先给一个公式:
式中:
❏ NAND PE Cycles:SSD使用的闪存标称写擦除次数,如3K、5K。
❏ Capacity:SSD单盘用户可使用容量。
❏ WA:写入放大系数,这跟SSD FW的设计和用户的写入的数据类型(顺序写还是随机写)强相关。
TBW和DWPD的计算公式:
有了上面的公式,你可以简单计算一块SSD盘的TBW或者由TBW计算每天的写入量。
1.5.4 数据可靠性剖析
SSD有几个关键指标来衡量其可靠性:UBER、RBER和MTBF。
❏ UBER:Uncorrectable Bit Error Rate,不可修复的错误比特率。
❏ RBER:Raw Bit Error Rate,原始错误比特率。
❏ MTBF:Mean Time Between Failure,平均故障间隔时间。
1.数据可靠性
我们接着看一下S3710 SSD手册中Reliability(可靠性)项的截图:
UBER是一种数据损坏率衡量标准,等于在应用了任意特定的错误纠正机制后依然产生的每比特读取的数据错误数量占总读取数量的比例(概率)。
为什么SSD要定义UBER?任何一项存储设备产品,包括HDD,用户最关心的都是数据保存后的读取正确性。试想数据丢失和损坏对客户产生的后果是怎么样的?尤其是企业级用户数据。那如何让用户相信存储设备系统是可靠的呢?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和纠错强度的关系
在相同的ECC编码长度和保护强度下,RBER越低,UBER越低,并呈指数级降低,如图1-25所示。
图1-25 UBER和RBER的关系
RBER反映的是闪存的质量。所有闪存出厂时都有一个RBER指标,企业级闪存和消费级闪存的RBER显然是不同的,价格当然也有所不同。RBER指标也不是固定不变的,如图1-26所示,闪存的数据错误率会随着使用寿命(PE Cycle)的增加而增加。为了挑战极限,必须准备好处理每100个bit就有1个坏bit的情况。
图1-26 RBER和PE的关系
RBER还跟闪存内部结构也有关系。两个相邻闪存块的RB ER有可能完全不同,图1-27是单个闪存块里面不同闪存页的RBER分布图。看得出来,Upper Page的RBER比Lower Page的RBER要高两个数量级。
图1-27 Lower&Upper page RBER
通常商用企业级和消费级SSD的UBER指标如表1-9所示。
表1-9 企业级和消费级SSD的UBER值需求
2. MTBF
工业界MTBF指标反映的是产品的无故障连续运行时间,也是产品的可靠性指标。MTBF计算有一些标准,目前最通用的权威性标准是MIL-HDBK-217、GJB/Z299B和Bellcore,分别用于军工产品和民用产品。其中,MIL-HDBK-217是由美国国防部可靠性分析中心及Rome实验室提出的,现已成为行业标准,专门用于军工产品MTBF值的计算;GJB/Z299B是我国的军用标准;Bellcore是由AT&T贝尔实验室提出的,现已成为商用电子产品MTBF值计算的行业标准。
MTBF主要考虑的是产品中每个器件的失效率。但由于器件在不同的环境、不同的使用条件下其失效率会有很大的区别,例如,同一产品在不同的环境下,如在实验室和海洋平台上,其可靠性值肯定是不同的;又如一个额定电压为16V的电容在实际电压为25V和5V下的条件失效率肯定也是不同的。所以,在计算可靠性指标时,必须考虑多种因素。所有这些因素几乎无法通过人工进行计算,但借助软件(如MTBFcal软件)和其庞大的参数库,能够轻松得出MTBF值。
对于SSD而言,JESD218A标准定义了测试SSD每天读/写量的方法,还补充了SSD一些额外的失败测试。要考虑的另一件事是:什么工作负载用于测试MTBF?例如合格的SSD使用工作负载每天写20 GB,一共5年,基于这个工作负载加上补充性失效测试,这款SSD MTBF可达到120万小时。但如果工作量减少到每天写10 GB, MTBF将变为250万小时;如果每天写5 GB,就是400万小时。
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关闭,除了内存之外的所有上下文都会丢失。硬件会保存一部分处理器和L2 cache配置上下文,从处理器的reset vector开始执行。
❏ S4:休眠模式(Hibernation), CPU不运行指令,SATA SSD关闭,DDR内容写入SSD中,所有的系统上下文都会丢失,OS负责上下文的保存与恢复。
❏ S5:Soft off state,与S4相似,但OS不会保存和恢复系统上下文。消耗很少的电能,可通过鼠标键盘等设备唤醒。
进入功耗模式有一定的时延,当然退出功耗模式也需要一定的时延,通常恢复SSD到初始功耗模式所花费的时间更长,如表1-10所示。
表1-10 各种功耗模式下SSD进入和退出的时间
时延和性能之间存在着某种平衡,频繁的低功耗模式和正常模式之间换入换出,一定会带来性能的损失。对于SSD设备功耗模块设计而言,建议:尽可能优化低功耗模式的进入和退出时间。
从正常工作模式Active状态切换到低功耗模式,需要找到正确的切换Timer。太短的Timer会较早进入低功耗模式,但唤醒需要时延,带来主机端性能损失;太长的Timer有利于维持性能,但牺牲了功耗。
总之低功耗是一个好的SSD特性,消费级出于低功耗需求,极其需要这个特性,但企业级应用为了维持性能,在低功耗上是弱需求。
最后,SSD各项功耗是SSD产品的竞争力,尤其是对功耗敏感的消费级SSD的部署,最大写入功耗和低功耗是竞争力。最大写入功耗代表的是写入同样数据量所消耗的电能,主要是闪存写入功耗;低功耗是当用户空闲或休眠时设备节省下来的电能,这些对绿色能源数据中心等场合有很大帮助。我们来看看几款消费级SSD功耗的对比,如图1-28所示。
图1-28 AnandTech对几款SATA SSD的HIPM或DIPM slumber模式的低功耗对比
最大写入功耗对比(除了ASIC主控和板级PCB工作状态功耗,最大写入功耗和连续写性能紧密相关,写性能越高,功耗越高)如图1-29所示。
图1-29 AnandTech对比几款SSD的最大写入功耗
2.最大工作功耗与发热控制
前面已解释过最大工作功耗,单独把最大工作功耗拉出来讨论,是因为当SSD一直处于最大功耗工作负载下,器件会存在发热问题。为SSD功耗最大的是ASIC主控和闪存模块,因此二者也是发热大户,当热量积累到一定程度,器件会损坏掉,这是一定不能容忍的。当外界环境温度(Ambient Temperature)处在50℃或60℃时,不加以控制,发热的速度和损坏器件的概率也会随之增大。所以工作在最大负载下,控制SSD温度是固件设计要考虑的,就是设计降温处理算法。
做法具体的原理:当SSD温度传感器侦测到温度达到阈值,如70℃,固件启动降温算法模块,限制闪存后端并发写的个数,由于SSD中发热大户是闪存芯片,故当写并发数减少后,温度自然下降。同时由于写并发下降,SSD写性能也会下降,这是性能和温度的一个折中。
图1-30 温度控制和SSD性能的关系
当温度控制下降到低于阈值70℃后,SSD固件重新恢复到正常的后端写并发个数,性能又会上升,带来温度再次上升,如此往复……如图1-30所示。
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通过自身的硬件设计(比如power regulator)和接口信号完整性设计依然能正常工作,数据也依然能正确收发。同理,在高低温、电磁干扰的环境下,SSD通过硬件设计要有足够的鲁棒性(Robust)。
3.容错处理
错误处理与硬件和软件相关。系统兼容性的容错特指在主机端发生错误的条件下,SSD盘即使不能正常和主机交互数据,至少不能变砖。当然,SSD盘若能容错并返回错误状态给主机,提供足够的日志来帮助主机软硬件开发人员调试就更好了。这里的错误包括接口总线上的数据CRC错误、丢包、数据命令格式错误、命令参数错误等。
从设计角度考虑加入容错模块设计、加大系统兼容性测试的覆盖面,这些都是提高SSD系统兼容性的手段和方法。但从过去的经验看,系统兼容性重在对主机系统的理解,这需要长期积累经验,该趟的雷总是要趟的,趟过后就变成经验了,这些不是书本上能直接学到的。
最后要强调的是,SSD的系统兼容性是SSD的核心竞争力之一,不可忽视。