概念
总线
元器件之间有相互沟通的需求,如果A元器件和B元器件需要相互沟通,就需要总线来建立通路。
比如CPU想和显卡交互数据,就需要建立一条通往显卡的电路。同样如果和硬盘、内存交互,也需要这样一条电路。像这种不同设备之间交互数据的通路被我们称为总线(Bus)
总线也是物理结构,他也有承载能力,不可能做到所有的数据秒传。总线在单位时间内传输的数据量我们称之为“带宽”。
目前电脑内传输数据的总线有三种,民用:SATA、PCIe,服务器:SAS
协议
协议的概念在计算机中非常通用,就是两个设备之间交互的一种规矩。比如
- 如何识别对方
- 如何建立链接
- 使用讯号的类型
- 数据编码解码方式
- 数据传输类型
- 数据传输方式
- 物理层电压电流
- 保持和截止时间
两个设备之间的协议一致或者相互兼容,那么他们之间才能互相通讯。
如果我们想从硬盘内读取数据,那么就需要满足以下三点:
- 数据协议做沟通
- 传输总线做媒介
- 物理接口硬盘接入
目前硬盘的数据协议有四种。民用:IDE(早期硬盘使用协议,目前已经被淘汰了)、AHCI、NVME,服务器:SCSI
接口
当有了协议和总线后,还需要物理层面的接口接入硬件设备。目前民用的接口主要就是5种
- SATA
- mSATA
- SATA Express
- PCIe
- M.2
- B-Key
- M-Key
- 企业级的是U.2和SAS
总线、协议、接口三者相辅相成,就算协议制定的如何优秀,如果总线和接口不匹配,那么也无法发挥硬件的全部实力。反之如果总线和接口设计的很牛逼,但是没有一个足够好的协议,同样也是跑不动。就像木桶原理,任何一个出现瓶颈都会导致整体性能下降
我们往往不需要考虑协议和接口层面,只需要看传输总线的承载能力即可。大部分的硬盘性能发挥其实是受制于传输总线
性能
总线
SATA
SATA总线版本目前普及比较广的是SATA3.0,理论带宽6Gpbs
PCIe
PCIe的带宽和长度有关系,X4的速率就是X1的4倍
SAS
理论带宽12Gpbs
接口
- SATA
SATA接口使用的是SATA总线,协议是AHCI。SATA3总线速率上线是600MB/S,加上各种损耗和干扰,实际速率最多只能跑到500+M每秒。所以如果采用SATA3总线作为传输载体的硬盘,无论是固态还是机械,都不可能超过这个上限
- mSATA
同样是SATA总线AHCI协议,这个接口在一些淘汰的老旧笔记本上非常常见。诞生的目的就是为了给SATA接口的固态缩小体积。这个接口同样也没有绕开SATA总线速度500M/S的限制
- SATA Express
使用PCIe * 2的总线。既可以走AHCI的协议,也可以走NVMe的协议。为了向下兼容,可以把他当成两个普通的SATA来用,也可以用一整个款的接口走PCIe * 1 或者 PCIe * 2
- M.2
M.2接口即可以走SATA总线AHCI协议,此时他和普通的SATA硬盘没有区别,速率同样会被限制在500M/S每秒。也可以走PCIe总线和AHCI协议。也可以走PCIe总线NVMe协议,这个是目前应用最广泛的组合,大部分的固态硬盘都是PCIe3.0 * 4,也就是4GB/S以内
B-Key的豁口在左边,M-Key的豁口在右边
- PCIe
PCIe既可以作为总线,承担传输通道的作用,也可以作为接口链接设备。通常主板上横着的长槽和短槽就是PCIe插槽,比如显卡就是插在这里,同样这个插槽也可以插无线网卡、有线网卡、采集卡、声卡等。目前直接以PCIe为接口的固态硬盘常见于超高性能等级企业级固态硬盘上,民用级固态硬盘还是以M.2接口为主
- SAS
SAS接口使用的是SAS总线,SCSI协议。这种接口服务器上用的非常多。可以理解为一种强化版的SATA接口,在SATA上增加了更多的功能,并且支持了速率更高的SAS总线。SAS可以兼容SATA
- U.2
U.2是在SAS接口上改款而来,除了兼容SATA还可以兼容SAS,也额外提供了PCIe * 4总线的支持。这个接口也是常用于服务器
PCIe总线的硬盘他们的接口大部分可以互相转换,所以接口其实并不是完全限制速率发挥的因素。所以如何判断一个硬盘使用的接口速率上限,以及主板的接口会不会限制硬盘性能发挥,还是要参考一下他们所使用的总线比较好,单纯的通过协议去判断并不准确
文中插图和部分文字引用自【【硬件科普】硬盘的SATA M.2 NGFF NVME是什么意思,详解硬盘的总线协议与接口】,感谢原作者的分享
评论区