简单介绍SSD各种协议标准与接口
引入
首先看一张图,这张图来自于视频【硬件科普】硬盘的SATA M.2 NGFF NVME是什么意思,详解硬盘的总线协议与接口_哔哩哔哩_bilibili。
这张图将各个名词的关系直观地展示了出来,如果你有兴趣,推荐去看看原视频。本文章将简单科普一下各个协议和接口的知识。
协议
所谓协议,就是一种规则或是规范。不同的协议就是不同的规则,而硬盘上的协议指的是主机与硬盘之间采用什么规则来传输数据。类似于公路上的交通法,车辆要在公路上运输,就必须依照交通法规定的内容来执行。
目前个人PC硬盘最常见的协议就是NVMe和AHCI,而SCSI协议则基本用于服务器,在个人PC上普及率太低。从表现性能上来说,采用NVMe协议的硬盘会比AHCI协议的硬盘更好。因为NVMe协议是专门为SSD而设计的,比起AHCI是一种更年轻的协议,AHCI主要用于HDD,目前上市的新硬盘,特别是高性能的硬盘基本都是采用NVMe协议。
总线
总线,就是一条传输电信号的通道,就像房子外面的公路。车辆能不能跑得快,不仅取决于规定的限速(即上面所说的协议),还取决于公路是几车道(两车道、四车道、八车道)、路面质量等公路自身的情况(当然也和车辆自身有关,这里只是类比了客观情况)。
不同的总线有着不同的条件,也就是不同的总线的位宽大小与传输频率,它们决定了在一次传输中能够提供的最大速度。
常见的总线是SATA和PCIe,SAS性价比处在PCIe和SATA之间,地位尴尬,如今的市场上几乎没有消费级的SAS总线的硬盘(可能很多人都没听说过)。
从性能上来说,PCIe远超于SATA,特别是如今基本普及的PCIe3.0,拥有理论上1GB/s的读写速率,在四通道的情况下,拥有4GB/s的理论读写速度(游戏加载飞快,不过笔者实测现在的PCIe3.0x4的硬盘也基本有3000MB/s左右的速度,得看电脑配置)。再看看SATA3,理论上最大带宽为6Gbp/s,换算过来就750MB/s左右,我的评价是没得打。
接口
接口,也就是物理接口,就是主板上供硬盘插那个的槽。随着硬盘的不断发展迭代,出现了很多不同大小形状的硬盘,人们也给不同的槽取了不同的名字,比如M.2、U.2等。M.2是消费级的,U.2则是给服务器用的。
如果是SATA和PCIe接口,那么一般就是指这块硬盘用的总线协议就是SATA或PCIe。
目前最好的消费级硬盘就是NVMe协议+PCIe总线+M.2接口的硬盘了。
下面将深入一些介绍各个协议、总线和接口的内容。
协议
NVMe
NVMe的全称是Non-Volatile Memory Express,即非易失性内存主机控制器接口规范,这个非易失性内存就是指的是掉电后数据不会消失的存储器,也就是ROM和闪存,现在一般的SSD用的都是闪存。不过这个名字看起来依然不太好懂,如果你想懂,这里有一些更深入的内容可以参看SSD学习笔记(三)NVMe | CC’s Zone (ccs.zone),下面只介绍下一些常识性的东西。
NVMe是一种更优秀的协议,它的诞生始于2009年下半年,其规范由包含90多家公司在内的工作小组所定制,Intel是主要领头人,小组成员包括美光、戴尔、三星、Marvell、NetAPP、EMC、IDT等公司,目的就是为SSD建立新的存储规范标准,让它在老旧的SATA与AHCI中解放出来。2011年,NVMe标准正式出炉,该标准是根据闪存存储的特点量身定制的,新的标准解除了旧标准施放在SSD上的各种限制。直至目前,已发展到NVME1.4。
NVMe协议是专为PCIe总线标准设计的,充分考虑到了PCIe的低延时,带来了更加高性能的体验,其物理接口基本都是M.2。但是要注意,应用NVMe协议的SSD都是PCIe总线,但是PCIe总线的SSD并不全是用的NVMe协议。因为在NVMe还未出现之前,就已经有了基于AHCI协议的PCIe总线的SSD。
AHCI
AHCI(Serial ATA Advanced Host Controller Interface)串行ATA高级主控接口/高级主机控制器接口协议。这个名字一听就非常高级,但是在现在的时代它已经不高级了,它诞生于2004年,比NVMe早7年。
AHCI早期是专为机械硬盘(HDD)设计的,机械硬盘与固态硬盘的架构可以说是完全不同,这里简单概括一下机械硬盘的存储原理。HDD的存储原理是用盘面上的磁性物质是否被磁化来表示0和1,从而存储二进制信息,在机械硬盘工作时,盘面高速旋转,速度是每分钟几千转甚至上万转。显然,这种机械的工作方式受限于物理结构,肯定达不到更高的速度,长期使用下来也难免会造成硬盘损伤,比如坏道。而SSD没有机械机构,也没有扇区,如果有人说他的SSD坏道了,那么他可能是完全不懂哦。目前HDD的优势还是有的,比如便宜。
回到AHCI上,既然它早期是专为HDD设计的,那么它又怎么用在SSD上呢?原理暂且不讲,从应用市场来说,目前采用AHCI协议的硬盘主要是HDD和低端的SSD,这些硬盘基本都是服务的都是老电脑了,或者是移动硬盘。除了价格,它们的性能都不是目前主流家用SSD的对手。所以总结如下:NVMe > AHCI。
SCSI
SCSI是“Small Computer System Interface”的缩写,即小型计算机系统接口。它的名字虽然有个“小”,但是它一定都不年轻,它诞生于1982年(要素察觉)。
目前家用电脑几乎没有这种硬盘了,可能很多服务器上还会用这种硬盘,在京东一搜,都没几个SCSI硬盘的结果。故这里也不多做介绍了。
总线
PCIe
PCI-Express(peripheral component interconnect express)是一种高速串行计算机扩展总线标准,由PCI发展过来,其中的“express”是“快”的意思。它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。
关于PCIe更加详细的内容可以参看SSD学习笔记(二)PCIe | CC’s Zone (ccs.zone)。这里主要讲一下SATA的内容。
SATA
SATA是Serial ATA的缩写,即串行ATA。2000年11月由“Serial ATA”团体所制定了1.0标准。它是一种电脑总线,主要功能是用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输,由于采用串行方式传输数据而得名,还具有结构简单、支持热插拔的优点。
2002年,确立了SATA2.0标准;2009年,确立了SATA3.0标准。
很多人常将SATA与NVMe相比较好坏,实际上这两个就不是一个层次的东西(从开局一张图就能看出),虽不能比较不过可以依然给出结论:NVMe(PCIe) > SATA。因为NVMe是跑在PCIe上的,而PCIe吊锤SATA。
值得研究的是PCIe和SATA的区别,它们才是一个层次的东西。从诞生时间看,SATA与PCIe是同个时期的产物,这两种总线标准也是当下绝大部分SSD采用的标准,前者至今已经是3.0,而PCIe已经是4.0。
那么为什么SATA比不上PCIe呢?
不分析深层的协议结构,仅从速率来看,最新的SATA3带宽是6.0Gb/s,这是定死了的,换算过来理论传输峰值就是768MB/s,又因为SATA3采用8/10编码(一个10bit的数据包只包含8bit的有效数据),这样算下来数据流中有效数据就在600MB/s左右,再考虑传
输损耗等等因素,这个传输速率最终就被定死在了最高600MB/s。也就是说,SATA的SSD读取性能不可能超过600MB/s,如果超过,那就打12315投诉。
再来看PCIe的速度,目前主流的旗舰PCIe3.0x4的理论速率是约3120MB/s左右(SATA甚至不和它在一个数量级),即使是PCIe2.0x2的理论速率也是780MB/s,这速度是非一般的快。
从采用的协议来看,SATA的上层协议是AHCI,PCIe的上层协议是NVMe。前文已经说过AHCI是专门为HDD设计的,NVMe是专为采用PCIe总线的SSD设计的,而AHCI是远不如NVMe的,所以无论是上层协议还是自己本身的总线标准,SATA都输的太多了。正因如此,目前主流的高端SSD都是NVMe+PCIe。
那么,既然SATA输得这么多,为什么现在还有这么多SATA硬盘呢?
笔者认为,虽然NVMe+PCIe的SSD速度比SATA的SSD快得多,但是对于一般消费者来说几乎感觉不到差别,如果你不是臭打游戏的,也不是大型专业软件的工作者,那么可能最大的感受就是电脑开机时快了几秒钟而已。性能差不明显,但是SATA硬盘的价格可比NVMe硬盘的价格便宜多了(尤其是现在矿老板还喜欢拿着SSD挖矿)。
不过,可想而知,未来SSD的发展必定是NVME+PCIe的天下了。
SAS
SAS(Serial Attached SCSI)是传统SCSI硬盘的串行版本,上层协议是SCSI协议,主要针对企业级、服务器的应用。SAS和SATA采用类似的物理层,但是连接器不一样,其数据速率可以为3Gbps、6Gbps,以及目前的12Gbps标准,速率介于SATA3和PCIe之间。因为它一般用于企业级SSD,所以关注率较低,这里也不多做介绍。
接口
M.2接口
M.2的硬盘总体上长得像根内存条,也几乎是现在超极本的标配,主流的高端家用SSD基本都是采用这种引脚接口,也就是金手指长得像下图这样的。
M.2接口细分两种,即B key和M key,也叫做Socket2和Sccket3。它们区别在于,M key多了PCIe x4,可以支持4个通道,接口带宽可达4GB/s;而B key仅支持PCIe x2,接口带宽最高2GB/s。两者都可以支持SATA,但显然M key才是更好的选择。
U.2接口
采用U.2接口的硬盘基本都是企业级,装上托槽插在服务器上的那种,不过这种硬盘也可以用PCIe转接板接在一般的主板上。
PCIe接口
采用这种接口的硬盘就是指它的总线协议是PCIe。
在消费级主板上,PCIe插槽一般就是插显卡的,金手指如下图所示。
SATA接口
采用这种接口的硬盘就是指它的总线协议是SATA。
mSATA接口
简单理解为SATA接口硬盘的mini板,一般用于超极本。
参考文献
《深入浅出SSD:固态存储核心技术、原理与实战》–SSDFans
ATA/SATA/SCSI/SAS/FC总线简介 - 阿良 - 博客园 (cnblogs.com)
百度百科
必应图片