ATA: AT attachment 是IDE(Integrated Drive Electronics)硬盘的接口标准。包括PIO(Programming I/O)和DMA(Direct Memory Access) 两种传输模式。ATA本身可以支持串行或并行。
PATA: Paralle ATA。并行协议,基于ATA,也就是IDE接口。
SATA: Serial ATA。 串行协议,基于ATA。
SCSI: Small Computer System Interface。 是一种专门为小型计算机系统设计的存储单元接口模式,主要用于中,高端服务器和高档工作站。
SCSI和ATA是现流行的两大主机与外设通信的协议规范,各自有自己的物理接口定义。对于ATA协议对应的有IDE接口(并行)和SATA接口(串行),对于SCSI协议对应的就是SCSI接口。
SCSI接口跟ATA/IDE不兼容,相对于ATA硬盘的接口支持数量更多。
SCSI接口是并行还是串行呢?跟ATA一样两个都有。并行SCSI是基于总线技术,速度很慢,只有 320 MB/sec (Ultra320 SCSI),已经不能满足现代企业的需要。串行SCSI就是Serial Attached SCSI (SAS)。
SAS: Serial Attached SCSI。串行协议,基于SCSI,又可以向下兼容SATA。SAS drive多用于企业级硬盘,SATA drive多用于消费级硬盘。
SAS 协议可分为3块:
SSP是串行SCSI协议,用于传输SCSI协议。
SMP是SCSI管理协议,用于对连接设备的维护和管理。
STP是SATA tunnel协议,用于SAS和SATA之间数据的传输。即把SATA Frame当做SAS协议的数据来传输,跟隧道一样。
SAS跟SATA的比较:
我发现很多网上的比较都是泛泛而谈,下面这个链接讲的比较好, https://kb.sandisk.com/app/answers/detail/a_id/10510/~/differences-between-sas-and-sata
另外,
SATA有而SAS没有的feature有:BIST Activavte
SAS有而SATA没有的feature有:TX Training。
等等。下次补充。
顺便提一下为什么SAS有Tx Training,这是当SAS的interface到了12Gbps才有的。当SAS的interface是1.5Gbps, 3Gbps, 6Gbps的时候可以用一般的Speed Negotiation的方法对齐(align),但到了SAS-3(12Gbps)的时候,速率太高,必须用Tx Training的步骤才能对齐。
另外还有mSATA(用于消费级笔记本领域),但已被M.2淘汰。M.2原名是(NGFF, Next Generation Form Factor),是为Ultrabook定制的接口标准。M.2本身只规范了一种引脚接线形式,它上面走什么协议和总线要看具体产品。
PCI: Peripheral Component Interconnect。是在CPU和原来系统总线内部插入的一级总线。主要用于电脑内部主板的扩展插槽,连接显卡,声卡,网卡和Modem等设备。PCI总线只有133MB/s 的带宽。注意它不是硬盘接口。
PCI采用的是总线型拓扑结构,一条PCI总线上挂着若干PCI终端设备或桥设备(比如说北桥南桥)。这些设备共享该PCI总线,如果那个设备想说话必须获得总线使用权。
PCIe: PCI Express。向下兼容PCI,串行协议(PICe比PCI快就是因为它是串行)。PCIe 2.0为例,每秒5GT(Gigatransfer)原始数据传输率,编码方式为8b/10b(每10个位元只有8个有效数据),即有效频宽为4Gb/s = 500MByte/s。PCIe可以用于SSD的接口,但不用于机械硬盘的接口,因为机械硬盘的读写速度达不到这么高,没有必要用PCIe。
PCIe采用树形拓扑结构。Root Complex(RC)是树的根,相当与CPU的agent。CPU必须通过RC来访问内存和其他PCIe设备(如PCIe SSD, PCIe网卡)。PCIe设备可以直接连到RC上,也可以通过switch来连到RC上。Switch上也可以连switch。PCIe bridge可以将PCIe总线换成PCI总线(或反过来),实现PCIe和PCI设备的互联。
PCIe采用点到点(endpoint to endpoint)的通信方式,每个设备独享通道带宽,速度和效率都比PCI好。理论上任何两个PCIe endpoint(PCIe设备)都可以互相通信,但实际上endpoint一般要通过RC与另一个endpoint通信,因为两个设备的数据格式可能不一样。
PCI Express 1X和PCI Express 32X 意思就是1个通道到32个通道。
注意:PCIe也是Dual-Simplex模式,可以理解为全双工模式。
PCIe定义了下三层:
事务层(Transaction Layer): 发送或接收TLP(Transaction Layer Packet), 流量控制, QoS, 事务排序等。
数据链路层(Data Link Layer): 发送或接收DLLP(Data Link Layer Packet), Ack/Nak协议,流量控制,电源管理等。
物理层(Physical Layer,包括逻辑子模块和电气子模块):处理所有的packet的物理传输。
注意:
SATA的主机接口协议是AHCI(Advanced Host Controller Interface),SAS的interface是
SAS没有等同与SATA的AHCI的通用主机接口协议。
PCIe的主机接口协议是NVMe(Non-Volatile Memory Express),专门为SSD服务。
U.2 Form Factor (SFF-8639)最开始是PCIe SSD 2.5寸盘的接口标准,后来统一了SATA, SAS和PCIe 三种物理接口,是一种新型连接器Form Factor。
FC: Fiber Channel。是基于Fabric Channel环路协议基础上的串行技术,通过给后端磁盘提供带宽2.0Gbit/s或者4.0Gbit/s的FC环路来进行磁盘的连接。本来FC是给网络系统开发的,FC线缆的连接距离远,比较容易扩展。因为存储系统对速度要求高,所以也用在多硬盘系统的通信中。
另外, ATA, SCSI和NVMe都针对SSD加了一些新的命令,比如说ATA里面的Trim。当用户删除一个文件时,操作系统会发Trim告诉SSD该文件对应数据无效,这样SSD在做垃圾回收的时候就可以把这些数据删除掉,不用再做数据迁移。SCSI里面的同等命令叫UNMAP, NVMe里面脚Deallocate。