• home > theory > CST > Constitution >

    数据存储(4):SATA/M.2/PCI-E/AHCI/NVME这些的区别是什么?

    Author:zhoulujun Date:

    这篇文章先从SATA-2、SATA-3、M 2接口接口开始,从固态盘Socket 2跟Socket 3到NVME和AHCI协议,一些杂乱的笔记

    之前在写微星电脑升级固态盘(《MSI电竞笔记本硬盘扩容固态盘选择与内存条选择》)里面提过,固态盘有m.2接口与sata接口。但是不止看接口,还要看协议。今天好好来科普这个。

    新一代的固态硬盘普遍采用SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2 NVME接口等。

    这么多,看着懵B……

    1. 物理接口

    M.2 , U.2 , AIC, NGFF 这些属于物理接口。

    像 M.2 可以是 SATA SSD 也可以是 NVMe(PCIe) SSD。金手指上有一个 SATA/PCIe 的选择信号,来区分两者。很多笔记本的M.2 接口也是同时支持两种类型的盘的。

    • M.2 , 主要用在 笔记本上,优点是体积小,缺点是散热不好。

    • U.2,主要用在 数据中心或者一些企业级用户,对热插拔需求高的地方。优点热插拔,散热也不错。一般主要是pcie ssd(也有sas ssd),受限于接口,最多只能是 pcie 4lane

    • AIC,企业,行业用户用的比较多。通常会支持pcie 4lane/8lane,带宽上限更高

    2. 高速信号协议

    SAS,SATA,PCIe 这三个是同一个层面上的,模拟串行高速接口。

    • SAS 对扩容比较友好,也支持双控双活。接上SAS RAID 卡,一般在阵列上用的比较多。

    • SATA 对热插拔很友好,早先台式机装机市场的 SSD基本上都是SATA的,现在的 机械硬盘也是SATA接口居多。但速率上最高只能到 6Gb/s,上限 550MB/s左右,现在已经慢慢被pcie取代。

    • PCIe 支持速率更高,也离CPU最近。很多设备 如 网卡,显卡 也都走pcie接口,当然也有SSD。现在比较主流的是PCIe 3.0,8Gb/s 看起来好像也没比 SATA 高多少,但是 PCIe 支持多个LANE,每个LANE都是 8Gb/s,这样性能就倍数增加了。目前,SSD主流的是 PCIe 3.0x4 lane,性能可以做到 3500MB/s 左右。

    3. 传输层协议

    SCSI,ATA,NVMe 都属于这一层。主要是定义命令集,数字逻辑层。

    • SCSI 命令集 历史悠久,应用也很广泛。U盘,SAS 盘,还有手机上 UFS 之类很多设备都走的这个命令集。

    • ATA 则只是跑在SATA 协议上

    • NVMe 协议是有特意为 NAND 进行优化。相比于上面两者,效率更高。主要是跑在 PCIe 上的。当然,也有NVMe-MI,NVMe-of之类的。是个很好的传输层协议。

    上面的这个看的还是很懵,这篇文章先从SATA-2、SATA-3、M.2接口接口开始,从固态盘Socket 2跟Socket 3到NVME和AHCI协议,一些杂乱的笔记


    SATA接口

    SATA:是Serial ATA的缩写,即串行ATA

    image.png

    SATA接口,从洞那里分为两部分,少的那边是走数据的,多的那边是供电的。


    作为目前应用最多的硬盘接口,SATA 3.0接口最大的优势就是成熟。普通2.5英寸SSD以及HDD硬盘都使用这种接口,理论传输带宽6Gbps(实际读写最高500MB/s左右),虽然比起新接口的10Gbps甚至32Gbps带宽差多了,对于机械音频最高,最高速度也很难突破200。之前的老的2.5英寸SSD也没这么高的需求,500MB/s多的读写速度也够用。到那时新的固态盘,这个就不够用了。

    SATA接口的机械硬盘

    SATA发展简洁

    image.png

    速度越来越快


    GenerationSpeedSpecial Features
    SATA 1.01.5Gbs(150 MB/s)
    SATA 2.03Gbs(300 MB/s)Native Command Queueing(NCQ) support
    SATA 3.06Gbs(600 MB/s)

    NSQ management feature,Improved power management,

    Support for new connectors,TRIM Command

    SATA 3.16Gbs(600 MB/s)mSATA support



    mSATA接口

    mSATA接口,全称迷你版SATA接口(mini-SATA)。是早期为了更适应于超级本这类超薄设备的使用环境,针对便携设备开发的mSATA接口应运而生。可以把它看作标准SATA接口的mini版,而在物理接口上(也就是接口类型)是跟mini PCI-E接口是一样的。

    这玩意很快就死了,因为:mSATA接口是SSD小型化的一个重要过程,不过mSATA依然没有摆脱SATA接口的一些缺陷,比如依然是SATA通道,速度也还是6Gbps

    mSATA接口

     SAS:Serial Attached SCSI 串行连接SCSI

    image.png

    从外观上看,区别不大,唯一的不同是SATA接口中间有个洞,SAS接口中间那片也没有针脚,但不是一个洞,两边是连通起来的。请放大上图仔细看。

    SAS接口中间那片也没有针脚

    SATA的针脚都是29针的,SAS的针脚就有不同的款型,也有29针的可兼容SATA,如上图。也有36针的mini SAS, 如下图,在企业存储中,mini SAS应用比较广泛

    36针的mini SAS

    也许你会奇怪36明明比29大,为啥还叫mini SAS呢,因为29针的是平铺,36的是4层,每层只有9针,所以整体体积就小了很多,如上图。除了29和36,SAS还有其他的针脚规格,就不展开。

    盘的大小上,SATA一般是3.5寸,SAS一般是2.5寸

    image.png

    SAS也是一种数据传输协议,同样也是SATA对比,SATA 3.0传输速率是6Gb/s, SAS目前应用最广泛的是SAS-3速度是SATA的两倍 12Gb/s简单总结,提到SAS盘的时候可以反应过来,是SAS接口,普通家用是和SATA一样的29针规格的接口,企业存储中多为36针脚的小巧型mini SAS接口,比SATA盘小,2.5寸,速度比SATA快很多。


    M.2接口

    M.2接口是Intel推出的一种替代mSATA的新的接口规范,也就是我们以前经常提到的NGFF,即Next Generation Form Factor。

    早先我们使用的电脑硬盘都是3.5英寸或者2.5英寸IDE或者SATA机械硬盘,这个相信大家都有印象。2.5英寸的设计源自于服务器,由于碟片尺寸更小,2.5英寸机械硬盘更容易实现高转速,如15000rpm,它在容量方面虽然不及3.5英寸机械硬盘,但通过部署多张2.5英寸盘,可以实现更高的IOPS性能。

    SSD最早的样式也是源自2.5英寸硬盘,采用SATA接口,可以和SATA机械硬盘无缝衔接,没有兼容问题,但性能更好。这个阶段大概在十年前,特别是当年ThinkPad X300问世的时候,其64GB SLC 2.5英寸SSD可谓是惊艳全场。

    PCIe SSD最早可能要追溯到国内的一个小团队,Memblaze,其研究PCIe SSD的时间恐怕比Intel还要早一些,也正是通过其首个PCIe SSD样品,IOPS大约30、40万,第一次让整个SSD行业看到了PCIe的巨大潜力。

    早先的PCIe SSD都是AIC(类似显卡)的样式,走私有协议,需要安装独立的驱动程序才能使用。NVMe协议大概是2011年推出的,由Intel发布了首个NVMe产品,但是,真正跟进该协议,并推出全球第二款NVMe SSD的团队,还是Memblaze,甚至比三星、西数、东芝(现在的铠侠)都要早。

    链接:https://www.zhihu.com/question/48972075/answer/2488169003

    M.2接口的固态硬盘宽度22mm,单面厚度2.75mm,双面闪存布局也不过3.85mm厚,但M.2具有丰富的可扩展性,最长可以做到110mm,可以提高SSD容量。M.2 SSD与mSATA类似,也是不带金属外壳的,常见的规格有主要有2242、2260、2280三种,宽度都为22mm,长度则各不相同

    image.png


    不仅仅是长度,M.2的接口也有两种不同的规格,分别是“socket2”和”socket3”

    一种是金手指有两个缺口的Socket 2跟金手指只有一个缺口的Socket 3,这两种可以走不同的通道,我们后面会说到

    image.png

    看似都是M.2接口,但其支持的协议不同,对其速度的影响可以说是千差万别,M.2接口目前支持两种通道总线

    • SATA总线:当然,SATA通道由于理论带宽的限制(6Gb/s),极限传输速度也只能到600MB/s,

    • PCI-E总线:带宽可以达到10Gb/s,所以看似都为M.2接口

    但走的“道儿”不一样,速度自然也就有了差别。

    M.2(Socket 2)的固态可以走SATA3或者PCI-E 3.0×2通道(就是两条PCI-E),而M.2(Socket 3)的固态则可以走PCI-E 3.0×4通道

    PCI-E接口已经发展到 了第4代,PCI-E接口支持1,2,4,8,16个总线宽度。消费级SSD使用的大多数是PCI-E3.0 x4,也就是说消费级SSD最大传输速率理论上可以达到4GB/s,这个比SATA的SSD快了差不多7倍。

    PCI-E ArchitectureInterconnect BandwidthBandwidth Lane DirectionTotal Bandwidth for x16 link
    PCIE 1.12 Gbs250 MB/s4 GB/s
    PCIE 2.04 Gbs500 MB/s8 GB/s
    PCIE 3.08 Gbs1 GB/s16 GB/s
    PCIE 4.016 Gbs2 GB/s32 GB/s

    更多的可以推荐查看金士顿关于m.2固态盘的介绍:

    M.2 固态硬盘的两种类型:SATA 和 NVMe https://www.kingston.com/cn/blog/pc-performance/two-types-m2-vs-ssd


    NVME和AHCI

    其实NVMe跟AHCI都是一种规范——都是逻辑设备接口标准!

    AHIC是针对SATA这种接口的数据协议

    NVME规范是走PCI-E这种接口的数据协议。

    如果是之前老旧笔记本把HDD机械硬盘换成SDD固态盘硬盘,想要让SSD发挥出真正实力的话要去BIOS里面把SATA控制器模式切换成AHCI,对SATA设备来说使用AHCI模式的确是正确的选择,切换成AHCI可获得更好的性能(但是现在最新存储接口M.2和SATA-E接口走的都是PCI-E通道,对与PCI-E来说AHCI可不是一个好的选择,想发挥最佳性能其实需要新的标准——NVMe)。

    随着高端SSD的战场已经抛弃SATA向PCI-E转移,老旧的AHCI标准已经不合时宜, 未来是属于NVMe的,那么NVMe到底是啥呢?

    NVMe

    NVMe全称Non-Volatile Memory Express,非易失性存储器标准,是使用PCI-E通道的SSD一种规范,NVMe的设计之初就有充分利用到PCI-E SSD的低延时以及并行性,还有当代处理器、平台与应用的并行性。SSD的并行性可以充分被主机的硬件与软件充分利用,相比与现在的AHCI标准,NVMe标准可以带来多方面的性能提升。

    NVMe的由来

    所用的SATA接口与AHCI标准其实是为高延时的机械硬盘而设计的,目前主流SSD依然继续使用它们,早期SSD性能不高时可能还不觉得有什么问题,但是随着SSD的性能逐渐增强,这些标准已经成为限制SSD的一大瓶颈,专为机械硬盘而设计的AHCI标准并不太适合低延时的SSD。

    当然,业界早就意识到这一问题,2009年下半年,关于NVMe的技术工作正式启动,NVMe规范由包含90多家公司在内的工作小组所定制,Intel是主要领头人,小组成员包括美光、戴尔、三星、Marvell、NetAPP、EMC、IDT等公司,目的就是为SSD建立新的存储规范标准,让它在老旧的SATA与AHCI中解放出来

    2011年,NVMe标准正式出炉,该标准是根据闪存存储的特点量身定制的,新的标准解除了旧标准施放在SSD上的各种限制。2012年标准升级到NVMe 1.1,2014所推出NVMe 1.2标准。

    只有SSD运行在NVMe上

    因为NVMe驱动器要比SATA快得多,所以将NVMe与HDD放在一起使用来提高性能似乎是个好主意。但是请记住,NVMe代表非易失性存储接口规范,它是专门为NAND 闪存等非易失性存储设计的(尽管它也可以用于较新的非易失性内存,比如3D XPoint)。

    当系统从HDD读取数据时,它一次只能读取一块数据。因为它必须进行旋转以定位到第一个数据块的正确物理位置,然后再次旋转,移动到第二个数据块的正确位置,以此类推。另一方面,闪存和其他非易失性存储技术没有移动部件。这意味着系统可以同时从许多不同的位置读取数据。这就是为什么SSD可以利用NVMe提供的并行性,而HDD不能。


    PCIe和NVMe有关系,但它们不是同一个东西

    Me最令人困惑的部分是它与PCIe的关系。一些厂商使用NVMe作为标签来指代他们的SSD,另外一些厂商则使用PCIe标签,还有一些厂商似乎可以互换使用这些术语。

    虽然PCIe和NVMe密切相关,但两个术语指的是略有不同的技术。可以将PCIe看作是系统的物理部分。当您将一个NVMe SSD插入服务器时,您需要通过一个PCIe插槽连接它。

    相比之下,NVMe是一种协议,是一组允许SSD使用PCIe总线的软硬件标准。可以这么说,NVMe是允许存储设备与服务器连接的语言,而PCIe是实际的物理连接。


    NVME的优势总结

    NVMe的优势一:低延时

    说到NVMe标准对比AHCI标准的优势,其中之一就是低延时,看上图比较直观,NVMe标准是面向PCI-E SSD的,使用原生PCI-E通道与CPU直连可以免去SATA与SAS接口的外置控制器(PCH)与CPU通信所带来的延时

    在软件层方面,NVMe标准的延时只有AHCI的一半不到,NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗8000次CPU循环,从而造成大概2.5微秒的延迟

    更低的延时可让SSD的4KB QD1传输能力暴涨!

    NVMe的优势二:IOPS大增

    另外NVMe也大大的提升了SSD的IOPS性能,在制定AHCI规范时并行性的想法并没有完全融合到规范内,利用NCQ功能可以对传输能力进行优化,但是接口并不允许SSD真正最大限度地发挥其应有的并行性。

    现在SSD测试通常最多只会测试到队列深度为32的IOPS能力,其实终究原因这是AHCI的上限,其实许多闪存主控可以提供更好的队列深度。NVMe则可以把最大队列深度从32提升到64000,SSD的IOPS能力也会得到大幅提升

    NVMe的优势三:功耗更低

    NVMe加入了自动功耗状态切换和动态能耗管理功能,设备从Power State 0闲置50ms后可以切换到Power State 1,继续闲置的话,在500ms后又会进入功耗更低的Power State 2,切换时会有短暂延迟SSD在闲置时可以非常快速的控制在极低的水平,在功耗管理上NVMe标准的SSD会比现在主流的AHCI SSD拥有较大优势,这一点对移动设备来说尤其重要,可以显著增加笔记本和平板电脑的续航能力。

    NVMe的优势四:驱动适用性广

    驱动程序的兼容性也是所有PCI-E SSD的一个共有问题,每个产品都有对应不同系统的专用驱动,这方面有些厂商做的非常出色,而另一些则 不怎么样,然而许多PCI-E SSD需要加载驱动才能够正常引导。

    NVMe标准的出现解决了这个问题,NVMe SSD可以很方便的匹配不同的平台、系统,无需厂家提供相应的驱动就可以正常工作,目前Windows、Linux、Solaris、Unix、VMware、UEFI等都加入了对NVMe SSD的支持。当然Intel的产品拥有自己的驱动程序,不安装Intel驱动的话SSD能正常工作,但是性能不能完全发挥,之前测试Intel 750时就有这个问题,其他厂商的不知道怎么样。




    参考文章:

    SATA、mSATA、M.2、M.2(NVMe)、PCIE固态硬盘接口详解 https://zhuanlan.zhihu.com/p/490076119

    固态硬盘的PCIE,SATA,M2,NVMe,AHCI https://www.cnblogs.com/yi-mu-xi/p/10469458.html

    SATA与PCI-E速度对比 https://www.cnblogs.com/chaoguo1234/p/14828624.html




    转载本站文章《数据存储(4):SATA/M.2/PCI-E/AHCI/NVME这些的区别是什么?》,
    请注明出处:https://www.zhoulujun.cn/html/theory/ComputerScienceTechnology/Constitution/2023_0911_8979.html