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
SAS is designed for mission-critical enterprise applications whereas SATA is a general-purpose interface common in the consumer market.
SAS supports multiple initiators, while SATA has no such provision.
SAS is dual ported where as SATA is single ported. SAS is therefore capable of multi path I/O without additional hardware. Moreover, SAS can make use of both ports to scale performance.
SAS是雙端口,而SATA單端口。所以SAS支持多路I/O而無需額外硬件。SAS還可以用雙端口來提高性能。
SATA transfers data at half duplex while SAS can transfer data at full duplex. Thus, for SAS, each port can read and write data at the same time whereas SATA cannot.
最主要的區別: SATA是半雙工**(任何時候只能有一側傳輸數據)。而SAS是全雙工(可以兩側同時傳輸數據)。SAS任意一個端口可以同時讀寫。**打個比方,SAS類似手機,雙方可同時講話。SATA類似對講機,一個人在說話,另一個人就只能聽,不能說。
SAS uses SCSI commands for error recovery and error reporting, which have more functionality than the ATA command set used by SATA.
SAS can support cables up to 8m long, while maximum cable length for SATA is 1m.
另外,
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。