大家好,我是廣元兄。很高興和大家分享信號完整性的相關知識。希望大家點贊,分享。有什么問題加微交流學習,微信號【SI_Basic】。
Slogan:一起學習,共同進步!
這篇文檔是SATA3.2版本,2013年的文檔。
之前一直搞不清協議和總線以及接口間的關系,做了簡單的總結,其實有些可以接口是復用的:
這里有講到SAS和SATA,它們有共通性,比如相同的供電接口/規范,SATA硬盤可以直接插在SAS接口上工作,但SAS硬盤無法接在SATA接口上工作。
當然它們之間也是有區別的:
- SAS針對企業級的,SATA針對消費類產品;
- SAS支持雙端口,SATA支持單端口;
- SAS支持全雙工傳輸數據,SATA支持半雙工;
- SAS支持8m線纜,SATA支持1m線纜。
針對服務器,多磁盤設備,比如多個SATA設備,通過RAID卡進行管理,使用的是RAID功能。關于RAID,簡單地說,RAID是一種把多塊獨立的硬盤(物理硬盤)按不同方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能和提供數據冗余的技術。
SATA3.2協議一共分為五層:應用層、命令層、傳輸層、鏈路層和物理層。根據SATA接口協議,SATA主機端和設備端實現通信時,各層之間進行數據交互。
物理層:實現主機端控制器與設備端控制器的鏈路初始化和速度協商,并將主機和設備的鏈路狀態向鏈路層反饋,建立數據通道,實現串并轉換、并串轉換等操作。
SATA的電氣性能部分,簡單地列一下:
這里沒有針對損耗和串擾給出相關的標準,但是在線纜(Cable)部分,就給出了量化的指標:
線纜部分,還有一點,需要注意的是:SATA支持的最大電流1.5A。
不同于PCIe只在TX端擺放耦合電容,SATA Gen1可選,Gen2和Gen3的TX/RX端都要擺放,容值≤12nF。
高速信號的協議測試,針對Gen3測試部分,有一個CIC(Compliance Interconnect Channel)一致性互連通道的問題。
一致性互連通道 (CIC) 定義為應用于發射器配對連接器的一組校準物理測試電路,代表著最高損耗的互連。
CIC用于發射端上的信號電氣特性是否匹配連接器以確保符合Gen3i的輸入電氣規范,作為頻率函數的這種最壞情況損耗的幅度在數學上定義為發射一致性傳遞函數 (TCTF)。任何線性、無源、差分雙端口(例如,SATA 電纜)在所有頻率上的損耗都大于 TCTF 并且滿足 ISI 損耗約束(定義如下)被定義為 CIC一致性互連通道。
之前提到CIC,以為是CRC循環冗余校驗(Cyclic Redundancy Check, CRC)一種利用除法及余數的原理來作錯誤偵測的,根據網絡數據包或計算機文件等數據產生簡短固定位數校驗碼的一種信道編碼技術。
鏈路層:接收傳輸層的數據,計算數據的CRC校驗值,給數據加上幀頭、幀尾和CRC校驗信息。幀流量管控,從構建的幀中獲取數據,使用 8b/10b 對每個字節進行編碼或解碼,并插入控制字符以便可以正確解碼10位數據流。
基元(Primitives)是用于控制和提供串行線路狀態的 Dword 實體。基元始終以控制字符開頭,所有基元都使用 K28.3 控制字符來表示基元的開始,但以 K28 開頭的 ALIGNp 除外。
一些基元的功能:
- ALIGNp 基元:物理層依靠ALIGNp進行數據對齊,成對發送;
- DMATp基元:通知發送端停止數據傳輸;
- CONTp基元:避免連續發送長串重復信息,減少EMI;
- HOLDp:流量的管控,避免接收數據緩沖區溢出。
鏈路層狀態機是鏈路層的控制中心,主要包括四個部分:
- 空閑狀態機;
- 發送狀態機;
- 接收狀態機;
- 電源管理狀態機。
傳輸層:在鏈路層和應用層之間,負責組幀和解幀,主機和設備通過傳輸幀(Frame)的交互完成數據傳遞。
傳輸層不需要知道幀是如何傳輸和接收的。傳輸層簡單地構造用于傳輸的幀信息結構 (FIS) 并分解接收到的 FIS。
FIS 是一組在主機和設備之間傳遞信息。如前所述,基元用于定義 FIS 的邊界,并且可以插入以控制信息流的速率。本節描述 FIS 的信息內容稱為有效負載(Payload),信息內容分為三類:
- 寄存器類型;
- 設置類型;
- 數據類型。
命令層:分為設備命令層和主機命令層
設備命令層/主機命令層主要是對收到的ATA/ATAPI命令的解析,并作出相關的回復。
主要的幾條命令有:
- Non-data:檢查設備的狀態或者功能設置;
- PIO data in/out:主機端發送命令到設備端,設備端接到命令,準備好空間,接受/發送數據;
- NCQ:(Native Command Queue)命令的特點是主機可以一次發送多個命令,而不是一個命令完成再發送第二個命令,設備端決定命令的執行順序。命令對應的數據不再限制一個數據庫內,而是受FIS大小限制。例如主機發送兩個PIO IN命令,設備可能只需要回一個PIO SETUP FIS和一個Data FIS就完成數據傳輸。這樣在傳輸數據時,可以減小主機端與設備端FIS交互,提高傳輸數據的效率。
應用層:負責所有ATA命令的解析和執行,向處理器報告硬盤的運行狀態,發起數據讀寫請求,完成硬盤工作模式的設置和讀取等。
文檔的第八章,當然別的章也有提到OOB(Out of Band)。SATA信號鏈接的建立主要是靠OOB(Out Of Band)的檢測實現的,并且向上層鏈路層提供了物理層的連接情況。
OOB實際上主要有COMRESET/COMINIT與COMWAKE三個PHY信號線。
OOB主要作用:
- 初始化(initialization),對應COMINIT信號,設備端送往主機端,要求信號初始化。
- 傳輸速率的協商與對接,決定主機端與設備端做Gen1,Gen2或Gen3的傳輸,對應于COMRESET信號;
- 從省電狀態的喚醒與重置,對應于 COMWAKE信號。
需要注意的是,雖然COMREST和COMINIT形式上是一樣的,但COMREST只能從主機端到設備端,而COMINIT只能從設備端到主機端。
除了前面所說的RAID卡,還有SAS卡和HBA卡。
SAS卡:在某些不支持sas的服務器上面額外增加的一塊pcie卡。便于服務器安裝sas硬盤。一般支持做Raid0、1、10、1E或者直接識別sas硬盤。同時也兼容sata硬盤。
HBA卡:主機總線適配器(Host Bus Adapter,HBA)是一個在服務器和存儲裝置間提供輸入/輸出(I/O)處理和物理連接的電路板和/或集成電路適配器,是服務器內部的I/O通道與存儲系統的I/O通道之間的物理連接,這種連接也可以是通用服務器和存儲服務器之間的連接。
主機總線適配卡內部有一個小的中央處理器,一些內存作為數據緩存以及連接光纖通道和總線的連接器件等。這個小的中央處理器負責PCI和光纖通道兩種協議的轉換。它還有其他的一些功能,初始化與光纖通道網絡連接的服務器端口,支持上層協議例如TCP/IP,SCSI等,8b/10b的編碼解碼等。
HBA卡種類:FC-HBA卡(俗稱:光纖網卡)、iSCSI-HBA卡(RJ45接口)。