SSD的各项参数中,系统兼容性指标无法量化,最为不直观,也最容易被忽视。但不可否认的是,实际应用场合中除了性能功耗和可靠性问题,最头疼的问题就是系统兼容性问题,表现为各种场景下盘无法识别、不兼容某些型号主板、操作系统无法兼容等问题。站在用户角度,SSD盘的性能功耗可靠性设计得都不错,测试出来的成绩单漂亮,但就是系统兼容性差,再好的盘放到电脑上就变砖,看上去就是漂亮的花瓶,中看不中用。所以渐渐地用户开始重视起系统兼容性问题,所以在SSD引入前期用比较强的测试覆盖去验证和观察系统兼容性。
从技术上系统兼容性问题归类为:
BIOS和操作系统兼容:SSD上电加载后,主机BIOS开始自检,会作为第一层软件和SSD进行交互:第一步和SSD发生链接,SATA和PCIe走不同的底层链路链接,协商(negoate)到正确的速度上(当然不同接口有上下兼容性问题),自此主机端和SSD连接成功,下一步发出识别盘的命令(如SATA Idenfy)来读取盘的基本信息,包括:产品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需要在这些主机上都能跑过。从测
试角度来看,系统兼容性认证包括:
l OS种类(Windows、Linux)和各种版本OS
l 主板上CPU南北桥芯片组型号(Intel、AMD),版本
l BIOS版本
l 特殊应用程序类型和版本(性能BenchMark工具、Oracle数据库…)
电信号兼容,硬件兼容:指的是SSD工作在主机提供的电信号非稳定状态,如抖动,信号完整性差,但依然在规范误差范围内,SSD自身的硬件设计power regulator、接口信号完整性设计依然能正常工作,数据能否收发正确,甚至放在高低温、电磁干扰的环境下,硬件设计足够鲁棒(Robust)。
容错处理:错误处理有硬件和软件相关,系统兼容性的容错特指主机端的错误条件下,SSD盘即使不能正常的和主机交互数据,至少不能变砖。当然,SSD盘能容错并返回错误状态给到主机,提供足够的日志帮助主机软硬件开发人员调试,是更好的。这里的错误包括:接口总线上的数据CRC错误,丢包,数据命令格式错误,命令参数错误等等。
为了更好的提高SSD盘的系统兼容性,从设计角度考虑加入容错模块设计,了解系统特性,积累经验,同时加入系统兼容性测试的覆盖,这些都是提高SSD系统兼容性的手段和方法。但从过去的经验看,系统兼容性重在对主机系统的方方面面的理解,这需要积累,该趟的雷总是要趟的,趟过去了就变成经验,这些不是教科书或书本上能直接看到的。
最后要说的是SSD的系统兼容性是SSD的核心竞争力之一,不可忽视。
接口形态
SSD接口形态尺寸英文是SSD Form Factor,由于SSD是标准件,它必须符合一定的接口尺寸大小和电气特性,在应用层面易于统一和部署,所以厂商和标准组织来制订Form Factor规范,SSD厂商和系统提供商去遵守。
图1-1 各种类型的SSD示意图
根据不同SSD应用场合,是企业级还是消费级SSD,Form Factor尺寸也不一样。