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