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