原文链接:https://forum.51nb.com/thread-1670848-1-1.html

IT 界总喜欢发明新名词。而且同一个东西,可能有几个不同的名字。同一个名字,又可能指不同的东西。存贮设备,近年有许多新发展,因此新名词也层出不穷,造成不少混乱。这里班门弄斧整理一下,如有错误,欢迎指正。由于篇幅的关系,太旧的标准就不讨论了,如 IDE、PATA 等。这里主要讨论 SATA、PCIe、AHCI 和 NVMe。(关于 NGFF/M.2,那是物理尺寸标准,请参考 http://forum.51nb.com/thread-1669981-1-1.html)。

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 模式则比较新,支持 SATA 独有的功能,如热插拔、原生命令队列(NCQ)等。现在基本上所有 SATA 设备都是 AHCI 模式了。(Advanced Host Controller Interface)

大家还记得 Windows 7 时代的 AHCI 问题吧?许多机器的 BIOS 中可以选择传统模式或 AHCI 模式。当时出于兼容性考虑,缺省是传统模式。许多人安装 Windows 7 (最初版)的时候,就是在传统模式下安装的,不需要特殊驱动。如果安装之后,进 BIOS 改成 AHCI 模式,Windows 7 就会蓝屏了,因为没有 AHCI 驱动。如果想在 AHCI 模式下安装,Windows 会找不到硬盘,因为没有驱动。这时候要加第三方驱动。后来 Windows 7 SP1 才在安装盘中加入原生 ACHI 驱动程序。历史总是不断重演,现在 NVMe 也面对同样的问题(下面会讨论)。

--- 华丽分割线 ---

PCIe - Peripheral Component Interconnect Express

PCIe 是另一种总线标准,由 AGP、PCI、PCI-x 发展而来。上了年纪的同学都记得,这些总线的发展,主要的动力是显卡的发展。AGP 就是 Accelerated Graphics Port(加速图像端口)的缩写。由于显卡需要很大的带宽和速度,PCI 总线标准就不断升级来满足要求。当然,除了显卡外,PCI 总线还用于其他的扩展卡,如网卡(包括有线网卡、无线网卡、3G/4G卡等)。

从上面 SATA 的不同版本可以看到,提速是一个主要任务(当然也有其他的改进)。但进入 SSD 时代后,SATA 的改版速度(由于要考虑向下兼容),已经跟不上传输速度的要求了。这时候,业界就考虑采用 PCIe 来连接存贮设备。但在驱动程序层面,仍然采用 AHCI。这是因为 AHCI 已经非常成熟,广泛被各种操作系统(如 Windows、Linux)所采用。

以下是 PCIe 各版本的对比。注意在同一个版本中,也有不同的速率,取决于产品使用多少条通道(Lane)。

--- 再来一条分割线 ---

NVMe - Non-Volatile Memory Express

前面说过,AHCI 是为了发挥 SATA 的潜能而设计的,当时算是“高大上”了。但当时仍然是机械硬盘统治市场,因此 AHCI 的设计是基于机械硬盘的特性(旋转式磁性盘片)。虽然 AHCI 也可以用于 SSD,但却不能发挥极致。因为 SSD 更像内存,而不像“盘片”。譬如说,机械硬盘,如果磁头错过了一个扇区,那就得等盘片转一圈回来才能访问。SSD 就不存在这个问题。因此,业界重新设计一个新的 NVMe 协议,希望发挥 SSD 的潜能。下面是 AHCI 和 NVMe 的对比:

注意,NVMe 和 AHCI 一样,是逻辑(或者说软件、驱动程序)上的标准。而 SATA 和 PCIe 则更注重于物理层面(电流、电压、触脚等)。NVMe 比较新,Windows 7 没有原生驱动,因此安装的时候需要加第三方驱动。这个和当年 Windows 7 / AHCI 类似。

--- 物理接口 ---

说完了总线和协议,下面说说物理接口。无论采用什么总线和协议,主板总得连接到存贮设备上。这里所说的物理接口,指是是物理尺寸和形状,电气特征不作讨论。接口又分主机端和设备端。由于种类繁多,这里挑几个常见的。

1. SATA 设备端。下图是大家所熟悉的 SATA 硬盘接口(设备端)。大部分 2.5" SSD 也是用这种接口。采用这种接口的,只能使用 SATA 总线。不能使用 PCIe 总线。

2. M.2 接口。(以前叫 NGFF,现在统一叫 M.2 了,大家改改习惯吧)。采用这种接口的 SSD,可以使用 SATA 或者 PCIe 总线(取决于主板和SSD)。如果采用 PCIe 总线,又分 AHCI 和 NVMe 两种协议。因此总共有三种。下面是代表性产品:

a) 三星 850 EVO M.2 接口,SATA 总线,AHCI 协议

b) 三星 SM951 M.2 接口,PCIe 总线,AHCI 协议

c) 三星 SM951 M.2 接口,PCIe 总线,NVMe 协议

3. SATA Express 接口。SATA Express 使用的是 PCIe 总线,向下兼容 SATA 总线。设备端物理接口如下图。给眼神不好的同学提个醒:设备端的触脚是连在一起的,而不是 SATA 那样分成两部分。目前 T460/T560/X260/P50s 可以支持 SATA Express 的设备(东芝品牌的 SSD)。

--- 总结 ---

下图总结了目前不同标准/协议之间的组合。

由于上图可见,AHCI 和 NVMe 是驱动程序层面的。顾名思义,NVMe 只适用于 SSD(SSD和主板也要支持 NVMe 才行)。AHCI 则适用于机械硬盘和SSD。

在主板芯片层面,有 AHCI 控制器和 PCIe 控制器。有趣的是 AHCI 驱动程序“居然”可以使用 PCIe 控制器(中间那条橙色的线)。这个其实是个过渡方案,目的是在利用 PCIe 高带宽的同时,保持对上层软件的兼容性。目前在笔记本上,用这个方案的产品并不多。楼主也不觉得会成为主流。

绿色那个框是主板上的物理接口。参见以上“物理接口”一节。注意即使是同样的物理接口,也可以选择不同的总线和协议(如果主机和设备支持的话)。因此不要以为买了 M.2 的盘就一定是高大上,买了 2.5" 的盘就一定是屌丝。

左下角的 SATA 设备就不用多说了。大家都很熟悉。

右下角的 PCIe SSD 设备则可以有两种不同的控制器(最下面的两个框):AHCI 和 NVMe。因此,同样是 PCIe 的 SSD,也可以有不同的传输效能。

说了这么多,相信大家已经晕了。下面按传输效率做个排序,希望对大家有帮助。

1. PCIe NVMe。
这个是最高大上的。在笔记本市场,根据效能,可以再细分为两个等级:
1A 是 M.2 尺寸的 NVMe(如三星 950 PRO)。可以有四条 PCIe 通道,速度最快。但由于电路板面积限制,容量和发热都是个问题。
1B 是 2.5" 尺寸的 NVMe(如东芝 XG3),采用 SATA Express 接口,可以有两条 PCIe 通道,传输速率较低。由于 2.5" 体积较大,容量和发热比 M.2 要好。在 T460/T560/X260/P50s 上可用。

2. PCIe AHCI。
效能比 1 稍低,是由于 AHCI 协议的滞后性决定的。笔记本上只有 M.2 外形,没有 2.5" 外形。(如三星 SM951 AHCI 版)。

3. SATA AHCI。
效能最低,但兼容性最好,根据外形可分为两类。这两类的传输效能是一样的,无分高低。如果要便宜、容量,则选 2.5"。如果要轻薄,则选 M.2。
3A 是 2.5" 外形的设备,如目前广泛使用的机械硬盘,固态硬盘等。
3B 是 M.2 外形的设备,如三星 850 EVO 的 M.2 盘。

(转)科普:SATA、PCIe、AHCI、NVMe的更多相关文章

  1. SATA接口、PCI/PCIe、NVMe的介绍

    SATA接口.PCI/PCIe.NVMe的介绍 SATA接口 SATA是Serial ATA的缩写,即串行ATA. SATA已经完全取代旧式PATA(Parallel ATA或旧称IDE)接口的旧式硬 ...

  2. 科普:PCI-E插槽都有哪些样子?

    主板上的扩展插槽曾经是多种多样的,例如曾经非常流行的组合就是PCI插槽搭配AGP插槽,其中AGP插槽主要用在显卡上,而PCI插槽的用途则更广一些,不仅有用在显卡上,还能用于扩展其它设备,如网卡.声卡. ...

  3. SATA、PCIe、AHCI、NVMe

    IT 界总喜欢发明新名词.而且同一个东西,可能有几个不同的名字.同一个名字,又可能指不同的东西. 从物理接口角度来说,我们常见的有IDE(淘汰),SATA,PCIe,M.2(固态硬盘) M.2插槽是有 ...

  4. AHCI vs NVMe

    http://www.hkepc.com/13139 儘管現時有不少高階 SSD 產品改用 PCIe 接口,以突破 SATA 接口的頻寬瓶頸,但控制器設計與 SATA  接口 SSD 一樣,採用老舊的 ...

  5. NVME SSD vs SATA SSD(转)

    NVMe是个啥?未来SSD主流标准早知 关注固态硬盘的朋友应该对于这个词汇并不陌生,特别是今年NVMe也频繁出现在各大媒体文章中,随着高端SSD市场逐渐从SATA专项PCI-E时,以前的AHCI标准已 ...

  6. [转帖]NVMe到底是什么?用它的SSD有啥优势?

    NVMe到底是什么?用它的SSD有啥优势? 2015-8-20 14:00  |  作者:Strike   |  关键字:NVMe,SSD,PCI-E SSD,超能课堂 分享到       有关注SS ...

  7. [转帖]PCI-E的部分知识

    PCI-E PCI-E全称是PCI Express,是新一代的总线接口.采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线 ...

  8. NVMe到底是什么?用它的SSD有啥优势?

    有玩过SSD的朋友应该都清楚想要让SSD发挥出真正实力的话要去BIOS里面把SATA控制器模式切换成AHCI,对SATA设备来说使用AHCI模式的确是正确的选择,切换成AHCI可获得更好的性能.但是现 ...

  9. NVMe到底是什么?

    转:http://www.expreview.com/42142.html 有关注SSD的朋友应该今年听到NVMe这个词的频率应该不低,随着高端SSD的战场已经抛弃SATA向PCI-E转移,老旧的AH ...

随机推荐

  1. IOS 上架要求视频及屏幕截屏

    客户提供上架的资料 1.IOS 上架要求视频演示,录制一段视频,上传到优酷,需要url连接. 2.手机截屏,每个尺寸5张.5s/6/6p *5=15张.截屏图片分辨率. iPhone4s手机 3.5I ...

  2. Python运维开发基础04-语法基础

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现"简单 ...

  3. gRPC初探——概念介绍以及如何构建一个简单的gRPC服务

    目录 引言 1. gRPC简介 2. 使用Protocol Buffers进行服务定义 2.1 定义消息 2.2 定义服务接口 3.构建简单的gRPC服务 3.1 编写proto文件,定义消息和接口 ...

  4. CloudStack 全局参数设置

    mem.overprovisioning.factor 内存超分参数 cpu.overprovisioning.factor cpu超分参数

  5. 有关jQuery valid 验证多个同name属性的input的问题

    今天遇到需要动态添加多个同name属性的input框,用jQuery valid进行验证时,没有指定不同的id,验证只会在第一个显示提示信息,因为jQuery valid显示的提示信息是根据每个inp ...

  6. git best practice

    1. https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud (atlassian家的git) 2. https: ...

  7. Tomcat8 配置APR模式

    首先说明下tomcat connector运行的3中模式及区别: 1)bio 默认的模式,同步阻塞,性能非常低下,没有经过任何优化处理和支持. 2)nio  同步非阻塞,利用java的异步io护理技术 ...

  8. iOS 越狱Keynote

    [iOS Keynote] 1.2009年暴露的IKee病毒是iOS上公开的第一款蠕虫病毒,它会感染那些已经越狱并且安装了SSH,但是又没有更改其默认root密码"alpine"的 ...

  9. MyBatis 插入主键方式和返回主键

    这使用的mysql数据库,下面这种方式(没有给mysql设置自动增长)是插入主键方式: <insert id="insertBook" parameterType=" ...

  10. 5 CrawlSpider操作

    CrawlSpider 提问:如果想要通过爬虫程序去爬取"糗百"全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬取进行实现(Reques ...