前言
小黄鱼上200收了一台2013年4+128GB的MacbookAir,在企图给这玩意换硬盘的时候发现有文章提到在更换了NVME的固态以后将无法装回10.12及以下的系统……可是经查询资料得知Apple确确实实在这一代Macbook上用上了PCIEx2通道SSD——从直接买个转接卡就可以安装NVEM固态这一点也看出来此话不假。那这一代Macbook上的SSD到底是个什么玩意?
原来,这类固态是个怪胎——通过PCIE通道传输AHCI协议的SSD,从Apple的系统信息里也可以看到这个固态实际上是挂到串行ATA设备树下面的。

这个时候有的聪明的小伙伴就站了起来:那我买个“SATA协议的M.2接口SSD”装到上面去不就可以了?
不,也不行,前面提到了,这些固态是通过PCIE通道传输的,而那些带有M和Bkey的固态走的是SATA进行数据传输,传输协议不对当然不可能被识别……
这到底是什么情况?为什么新的固态换上去就是在NVMExpress下面还装不了老系统?(╯‵□′)╯︵┻━┻
软件协议?传输协议?物理接口?
别急,接下来请看这张图,网络上对于这些接口,协议都有很严重的混淆,这张图较为清晰的展示了这些协议之间的联系
上层软件协议:这些协议告诉硬件间应当使用何种指令进行操作。
传输协议:两个设备之间使用何种指令进行数据交换。

可以看到,作为传输协议的PCI-E可以同时对接到AHCI和NVME的两种软件协议,而可以传输PCI-E协议的接口又有着M.2、PCIE、U.2三种,而我们平时狭义上的“M.2固态“又有着SATA和PCIE两种传输协议,这两个传输协议又分别连接了AHCI和NVMe两种软件协议……
byd,这博主叽里咕噜说什么呢?啥SATA不AHCI,NVEe不M.2的?走了走了
光说确实很难理解,我们直接上图

这是一块微星的MS450固态,他的一块软件协议为NVMe,通过PCIE传输协议进行传输数据的M.2接口的固态,也是我们目前提到“M2硬盘”或者“NVMe固态”常代指的固态


上图是一块软件协议为AHCI,通过SATA传输协议传输数据的带有BkeyM.2接口的国产杂牌固态,这样的固态常见于4-9代intel平台的OEM笔记本或台式机上,披着M.2接口的“狼皮”却通过SATA传输协议传输数据,这类固态由于使用SATAIII传输协议因此理论速度最高只有6Gbps,和下图的SATA接口的固态在软件协议和传输协议上没有任何区别,这两种固态只有接口不同而已

那”通过PCIE通道传输AHCI协议的SSD“到底是个什么鬼?这难道不是上面这种固态吗?
非也非也,请看下面这张图

这是三星XP941,他就是一块软件协议为AHCI,通过PCIE传输协议传输数据的M.2接口的固态,这类固态和那台2013年的Macbook Air上的固态是同一类,也就是:
PCIe 总线
AHCI 协议
非 NVMe
的奇葩固态
那么为什么会出现这种奇葩固态?
混乱的协议与标准
首先要说明的是,SATA 和 PCIe 两个都是总线标准。它们是并列发展的关系,并不是谁取代谁的关系
SATA 由 IDE/ATA 标准发展而来,主要用途是把存贮设备(硬盘)连接到主机(主板)。SATA 经历了如下版本:
SATA revision 1.0 (1.5 Gbit/s, 150 MB/s)
SATA revision 2.0 (3 Gbit/s, 300 MB/s)
SATA revision 3.0 (6 Gbit/s, 600 MB/s)
SATA revision 3.1
SATA revision 3.2 (16 Gbit/s, 1969 MB/s)在 IT 界,有一样很重要的东西叫“向下兼容”。SATA 在发展的过程中,也要考虑“向下兼容”因素。譬如,主板上 SATA-3 的接口,可以连接 SATA-2 的硬盘。
出于向下兼容的考虑,SATA 可以工作在两种模式:传统模式和 AHCI 模式。传统模式是为了兼容以前的 IDE/PATA。AHCI 模式(Advanced Host Controller Interface)则比较新,支持 SATA 独有的功能,如热插拔、原生命令队列(NCQ)等。现在基本上所有 SATA 设备都是 AHCI 模式。
在2010年之前,PC市场大多以机械硬盘为主,受到物理学的限制,家用机械硬盘的转速即使转飞最多也不过200多MB/S,连SATAII的理论速度都吃不满。因此此时诞生的AHCI协议并没有针对当时还是“富豪的玩具”的SSD进行优化。
一刻没有为达到发展瓶颈的HDD哀悼,紧接着赶到战场的是——迅猛发展的SSD!2007年2月,Mtron 推出的PATA SSD写速度为80MB/,但是仅仅8个月后,忆正的FATA 和SATA SSD 的读写速度达到100MB/S。当时间来到两年后的2009年,浦芯微电子的2.5英寸SSD做到了1TB 容量,SSD 终于在同样的空间内,实现了和HDD一样大的容量。打破了HDD厂商认为 HDD 的优势是增大容量只需增加盘片密度,而SSD必须将内部芯片数量翻番才能实现容量翻倍的固有认知。这款MILC SSD 证明一个存储单元(Cell)多存儿位数据也可以让容量翻倍,而性能却远超 HDD:读写带宽分别为240MB/s和 215MB/s,读延迟小于 100us,随机读写分别为 5Ok IOPS 和 10k IOPS。HDD厂商的危机来临了。
进入2013年,各家已不再满足于仅仅于SATA III的6Gbps的传输速度。SATA-IO在单纯提高传输频率失败情况下转向了PCI-E,推出了SATA Express,结合了SATA与PCI Express技术,通过整合PCIe物理层实现带宽跃升,在PCIE2.0x2下最高支持10Gbps传输速率。但是这个美丽废物不仅要占用宝贵的两条PCIE通道,还要占用两个SATA口但却不起到数据传输的功能。同时期的SATA-IO也没忘记尝试在小型机和笔记本上分一杯羹,推出了mSATA尝试将设备小型化。这抽象玩意虽然接口和miniPCIe一样,但是电气信号与其完全不同,意味着这两种接口根本不互相兼容,如果不小心互相误插(接口一样)甚至可能造成设备损坏
接口大一统
终于,intel看不下去了,跟着这群虫豸怎么能做好小型化??推出了NGFF接口,并在2013年之后更名为M.2接口。Intel 在制订M.2接口的规范时,并未限制其所使用的信号协议,仅定义了尺寸规格与工作电压等项目,也因此M.2得以兼容于多种接口信号控制器,包括 SATA、PCIe、USB、音频等等,对于厂商在设计产品时,可提供更高的自由度。

同期的主板厂商迅速跟进,在Z97高端芯片组的主板上迅速出现了这个人见人夸的接口。前面提到M.2能够兼容于多种接口,因此主板厂商们也按照规范允许这个先进的接口传输SATA和PCIe两种不同的传输协议。部分存储厂商如三星和闪迪也迅速跟进,拿出了基于这个接口的固态,一部分便是前面提到的软件协议为AHCI,通过SATA传输协议传输数据的带有BkeyM.2接口的固态(反正就是换个接口的事情。
但是当时的高端SSD虽得以采用PCI Express总线制造,但需使用非标准规范的接口,为了兼容当时的UEFI固件不得不采用传统的AHCI软件协议进行传输(你愿意让用户买到手的固态插上去发现装系统的时候就识别不了吗,此时财大气粗的Apple也恰好把mSATA的600MB / s榨到了极限,因此苹果在这一代开也始使用PCIe 2.0 x2接口,带来了迄今为止最大的性能提升。此时闪迪与三星恰好是Apple的主要闪存芯片供应商,于是这些采用传统的AHCI软件协议但是走PCIe协议传输的固态便出现在了2013-2014年的Macbook上。
是新协议哦!
随着SSD技术的发展,老旧的且支持的命令队列只有32个命令协议的AHCI已经不能满足SSD的高速传输了。这意味着数据从存储传输到服务器主机时,会进入一行或队列。传统的SATA连接只能支持一个队列,一次只能接收32条数据。

还是我们最亲爱的Intel,着手寻找SATA的替代方案的Intel最终拉着一众厂商成立了非易失性内存主机控制器接口工作组,也就是大名鼎鼎的NVMExpress,其基于设备逻辑接口的总线传输协议规范,用于访问PCIe总线附加的非易失性存储器介质,相比AHCI有着巨大的提升
当数据从存储传输到服务器主机时,会进入一行或队列。传统的SATA连接只能支持一个队列,一次只能接收32条数据。而NVMe存储支持最多64000个队列,每个队列有64000个条目。
NVMe使用原生PCIe通道,免去了SATA与SAS接口的主机控制器与CPU通信所带来的延时。NVMe标准的延时只有AHCI的一半不到:NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗8000次CPU循环,从而造成大概2.5微秒的延迟。
NVMe支持同时从多核处理器接受命令和优先处理请求,这在企业级的重负载时优势明显。
NVMe加入了自动功耗状态切换和动态能耗管理功能。设备从Power State 0闲置50ms后可以切换到Power State 1;继续闲置的话,在500ms后又会进入功耗更低的Power State 2,切换时会有短暂延迟。SSD在闲置时可以非常快速的控制在极低的水平,在功耗管理上NVMe标准的SSD会比AHCI SSD拥有较大优势。
NVME是如此的香,香到大家都十分乐意采用它,同时intel到了100系列芯片组由于PCIE3.0的加持M.2接口在x4通道下最高可以跑到32Gbps速度,相比Z97上PCIE2.0x2的可怜的10Gbps的速度可谓是质的飞跃,两个协议相互配合如鱼得水。UEFI固件厂商很开心,因为统一的NVME规范降低了开发难度。存储厂商很开心,因为高速固态的实力有了用武之地。OEM厂商也很开心,Apple在2015年就拥抱了这个规范,在新的mac上配备了对于的新SSD。
买到新产品享受到新技术的用户当然十分开心,不开心的只有还在拥有旧设备的用户。拥有Z97芯片组和M.2接口主板的玩家欢天喜地的买了新的NVME固态后发现插上去后Windows7操作系统由于没有集成NVME驱动无法识别,而且部分早期的Z97主板的UEFI固件甚至没有集成NVMEDxe驱动,这意味着你根本无法在UEFI中看到你新安装的NVME固态,更别说引导操作系统启动了。好在各家主板厂商十分勤快的更新了自家的BIOS固件纷纷让Z97主板得到了支持。

更惨的诸如还有Z87、B85或者更早的P67之类芯片组的老用户,Z97好歹还有像模像样的支持,而不如狗的老用户没有任何办法,即使你将到手的固态使用转接卡插在PCIe插槽上也因为UEFI固件没有相应的集成驱动无法引导系统,最多在进入系统后当个数据盘。也因此,部分玩家学会了将主板的固件提取出来,手动使用MMTools插入NVMEDxe后继续开心的使用新的NVME SSD。
当然,尊贵的拥有2013-2014的Mac用户不会想到,由于Apple没有理由给自家旧系统添加对NVME支持,且理论上更换第三方固态不在Apple的考虑范围内,在多年后他们给自己的旧爱机升级为NVME固态时将会遇到旧系统无法识别、睡眠问题、Trim无法开启等一系列阴间问题——毕竟Apple没有理由给第三方添加支持。你可是尊贵的原装mac用户啊。聪明的你一定想到了,那我去买一个“走PCIE的AHCI硬盘”插上转接卡不就好啦?很抱歉,这样的产品十分短命,在NVME协议推广开来和M2接口出现的2013-2014时间节点只有Samsung XP941 (2013)、SanDisk A110 (2013)、Apple 自家 OEM SSD(用于 MacBook 2013–2014)以及部分早期AHCI版本的Samsung SM951。更何况在2013年时间节点上出货的大多都是128GB的固态,256GB的固态本就很少,512GB的固态可以说是稀世奇品你说你买个128GB的固态换上去干啥
后记(其实是写不下去了
这篇文章写到这里差不多该结束了。如果你正在计划升级 SSD,无论你的设备是老 Mac 还是旧主板,记住一条最重要的原则:接口形状代表外观,协议标准代表灵魂。
真正决定你的 SSD 能不能被识别、能不能引导系统的,是协议与固件,而不是它长得像不像 M.2。
M.2 是个洞,不是个协议。
文章引用链接
M.2 - 维基百科,自由的百科全书 (wikipedia.org)
NVM Express - 维基百科,自由的百科全书 (wikipedia.org)
万字长文!揭秘SSD发展史:速度、容量、成本的完美平衡_硬盘_什么值得买 (smzdm.com)
评论