串行ATA總線應(yīng)用技術(shù)
1 SATA技術(shù)要點(diǎn)
1.1 簡(jiǎn)化的模型
SATA串行鏈路接口協(xié)議借鑒了ISO/OSI和TCP/IP模型的組織方式和對(duì)象、服務(wù)、層次封裝等概念,沿用層次化的描述方法,從低向上分別為物理層、鏈路層、傳輸層和應(yīng)用層四層。由于通信是在主機(jī)和存儲(chǔ)設(shè)備非對(duì)等的雙方進(jìn)行的,所以傳統(tǒng)的peer-to-peer實(shí)體指代發(fā)生了變化。
1.2 協(xié)議狀態(tài)機(jī)機(jī)制
SATA協(xié)議操作主要通過通信實(shí)體協(xié)議棧的傳輸控制狀態(tài)機(jī)(Transport State Machine)和鏈路狀態(tài)機(jī)(Link State Machine)兩大核心子模塊完成,其中鏈路狀態(tài)機(jī)完成與串行線路相關(guān)的操作,傳輸控制狀態(tài)機(jī)通過把上層操作分解成可與鏈路狀態(tài)交換的一系列動(dòng)作,使用接口中的子模塊資源,完成與主機(jī)平臺(tái)相關(guān)的操作。兩狀態(tài)機(jī)在傳輸數(shù)據(jù)過程中相互協(xié)調(diào)工作行為,最優(yōu)化應(yīng)用資源。
1.3 精簡(jiǎn)高效的核心技術(shù)
SATA是高速串行總線技術(shù),為了在區(qū)區(qū)4條數(shù)據(jù)線上得到比并行16條數(shù)據(jù)線還要高的數(shù)據(jù)傳輸率,結(jié)構(gòu)上減少協(xié)議層次,精簡(jiǎn)協(xié)議內(nèi)容和算法復(fù)雜性;技術(shù)上各層大量采用支持高速或有利于傳輸?shù)募夹g(shù)。這些技術(shù)主要有:
幀技術(shù) SATA采用幀作為基本傳輸單元,支持七種類型、最大長(zhǎng)度達(dá)8192字節(jié)的幀傳輸。在幀結(jié)構(gòu)中,HOLD、HOLDA(32位)原語(yǔ)用于流量控制,F(xiàn)IS Content是有效載荷。
本地命令隊(duì)列 NCQ[3](NCQ-Native Command Queuing)是在SATA I中引入的一個(gè)強(qiáng)大的磁盤接口技術(shù),目的在于減少主機(jī)和設(shè)備的握手次數(shù)、聚合數(shù)據(jù)中斷,減少接口事務(wù)數(shù)量。達(dá)到減少驅(qū)動(dòng)器的尋道和旋轉(zhuǎn)的機(jī)械位置延遲,提高隊(duì)列負(fù)載性能的目的。NCQ是對(duì)SATA 1.0所做的諸多功能擴(kuò)展中唯一與性能密切相關(guān)的技術(shù)。NCQ采用RPO磁盤旋轉(zhuǎn)位置命令調(diào)度算法,支持線程和最大達(dá)32級(jí)深度的命令隊(duì)列管理,增加Race-free狀態(tài)返回機(jī)制、中斷聚合和First Parity DMA三個(gè)新的能力。
· 點(diǎn)到點(diǎn)的連接 SATA存儲(chǔ)設(shè)備與主機(jī)的連接采用點(diǎn)對(duì)點(diǎn)連接和星型拓?fù)?,連接帶寬專用,降低了共享仲裁和配置的復(fù)雜性,避免了單點(diǎn)故障,改善了可擴(kuò)展性和并發(fā)操作能力。
· 全層次錯(cuò)誤檢測(cè)支持 在SATA協(xié)議棧中,錯(cuò)誤的檢測(cè)從低層一直延伸到頂層[4]。層之間的錯(cuò)誤通過接口狀態(tài)寄存器和接口錯(cuò)誤寄存器進(jìn)行傳遞,每層都有錯(cuò)誤發(fā)現(xiàn)、錯(cuò)誤控制和錯(cuò)誤報(bào)告恢復(fù)能力。根據(jù)錯(cuò)誤性質(zhì)和可恢復(fù)程度,有Freeze、Abort、Retry和Track/Ignore四種處理策略。
·改進(jìn)的線纜連接器和熱插[5] SATA的信號(hào)線和電源線獨(dú)立配置,各信號(hào)線或電源線之間使用地線分隔。盲匹配設(shè)計(jì),頭部有額外的用于插拔定位和保護(hù)的凸出;支持帶外硬盤檢測(cè),實(shí)現(xiàn)了完整的熱插拔支持。
·其他技術(shù) SATA使用字母標(biāo)記來描述數(shù)據(jù)位和控制變量,使用8B/10B編碼方案把SATA未編碼的數(shù)據(jù)和控制字節(jié)翻譯成字符串。傳輸?shù)男盘?hào)采用與現(xiàn)有SCSI電路兼容的(偏移值為250mv)的低電壓差動(dòng)(LVD)技術(shù)。電源管理細(xì)粒度化,它不僅能對(duì)存儲(chǔ)設(shè)備的電源進(jìn)行管理,還具有自我管理功能,能把不運(yùn)行的部分置于低功耗模式。
2 SATA應(yīng)用方案
2.1 橋
串行存儲(chǔ)設(shè)備定位于桌面和中低端網(wǎng)絡(luò)存儲(chǔ),為了能夠在這些并行接口主導(dǎo)的領(lǐng)域開展應(yīng)用,業(yè)界沿用了傳統(tǒng)的“并串兼容共存、逐漸過渡到純串行”的策略。目前實(shí)現(xiàn)這種策略的主流方案是橋。SATA/PATA橋是基于現(xiàn)有系統(tǒng)總線,通過附加SATA/PATA轉(zhuǎn)換卡,實(shí)現(xiàn)串行/并行轉(zhuǎn)換,把先進(jìn)的串行設(shè)備集成到并行結(jié)構(gòu)環(huán)境中。
橋是目前解決SATA和PATA在系統(tǒng)中共存的一個(gè)理想、便捷的方案,具有不影響原有的系統(tǒng)、開發(fā)周期短等優(yōu)勢(shì),不足在于橋芯片沒有提高性能,卻增加了成本、板空間和功耗,同時(shí)還增加驅(qū)動(dòng)器印刷電路板設(shè)計(jì)和生產(chǎn)的復(fù)雜性,所以只能作為一個(gè)過渡的解決方案。
2.2 本地設(shè)備
該策略是直接把SATA硬盤連入系統(tǒng)結(jié)構(gòu)中,省缺了橋方式中大量的轉(zhuǎn)換和策略延遲,最大限度發(fā)揮SATA功能特性。AHCI[6](Advanced Host Controller Interface)是一種理想的實(shí)現(xiàn)本地設(shè)備策略的方案,它通過PCI BAR(Base Address Register)實(shí)現(xiàn)原生的SATA功能。
AHCI本質(zhì)是一種PCI類設(shè)備,在系統(tǒng)內(nèi)存總線和串行ATA設(shè)備內(nèi)部邏輯之間扮演一種通用接口的角色。這個(gè)類設(shè)備描述了一個(gè)含控制和狀態(tài)區(qū)域、命令序列入口表的通用系統(tǒng)內(nèi)存結(jié)構(gòu);每個(gè)命令表入口包含SATA設(shè)備編程信息,和一個(gè)指向(用于在設(shè)備和主機(jī)傳輸數(shù)據(jù)的)描述表的指針。
本地設(shè)備方案通過集成SATA到芯片組實(shí)現(xiàn),它可以充分利用SATA減少信號(hào)數(shù)量的優(yōu)點(diǎn),表現(xiàn)SATA的高速度,節(jié)省了板空間,增加了可靠性,減少了功耗,實(shí)施更簡(jiǎn)單容易。不足是由于SATA接口是高速信號(hào),給讀取信道帶來干擾,所以在設(shè)計(jì)芯片和主板時(shí)必須考慮采取適當(dāng)?shù)男盘?hào)完整性保護(hù)措施。由于AHCI統(tǒng)一接口的研發(fā)成功,使得支持串行ATA產(chǎn)品的開發(fā)工作大為簡(jiǎn)化,操作系統(tǒng)和設(shè)備制造商省去了單獨(dú)開發(fā)接口的工作,取而代之的是直接在統(tǒng)一接口上進(jìn)行操作,就能實(shí)現(xiàn)包括NCQ在內(nèi)的諸多功能。
2.3 橋與本地設(shè)備方案的比較
橋和本地設(shè)備方案除了具有上述的技術(shù)實(shí)質(zhì)差別外,還有如表1給出的多個(gè)不同之處。從比較中也可以看出橋?qū)ATA支持的局限性,從一個(gè)側(cè)面表現(xiàn)了技術(shù)對(duì)現(xiàn)狀的妥協(xié),也注定了橋?qū)儆诩夹g(shù)發(fā)展過渡階段的產(chǎn)物。
3 SATA設(shè)備編程
3.1 SATA的數(shù)據(jù)流
在SATA系統(tǒng)中,數(shù)據(jù)操作對(duì)象按粒度大小分為Primitive、FIS和Command三種。數(shù)據(jù)在(主機(jī))適配器和存儲(chǔ)設(shè)備之間交換,參與交換的對(duì)象和數(shù)據(jù)結(jié)構(gòu)關(guān)系[7]如圖1所示。在圖中,箭頭從父對(duì)象指向子對(duì)象,數(shù)字1和n代表父對(duì)象擁有子對(duì)象的數(shù)目。適配器對(duì)象代表控制板或HBA,它有一個(gè)與適配器相關(guān)的適配器信息數(shù)據(jù)結(jié)構(gòu)。適配器可以擁有多個(gè)控制器,每個(gè)控制器有自己獨(dú)立的控制器信息,內(nèi)含控制器公共寄存器數(shù)據(jù)結(jié)構(gòu)和其他控制信息。而每個(gè)控制器又有多個(gè)供連接目標(biāo)設(shè)備的端口。每個(gè)端口連接一個(gè)存儲(chǔ)設(shè)備,每個(gè)設(shè)備有一個(gè)深度為1或更大的命令隊(duì)列,而每條命令由與數(shù)據(jù)結(jié)構(gòu)和DMA對(duì)象相關(guān)的命令對(duì)象代表。另外,對(duì)于一些含有多口的存儲(chǔ)設(shè)備,允許它連到其他控制器的端口上,以提高設(shè)備的可用性和可靠性。
3.2 SATA的編程結(jié)構(gòu)
SATA的編程結(jié)構(gòu)如圖2(其中右部是各層次API關(guān)系),特定操作系統(tǒng)模塊(圖2中①)完成把不同操作系統(tǒng)對(duì)低層驅(qū)動(dòng)器件的請(qǐng)求翻譯成低層器件能夠識(shí)別的格式。SATA庫(kù)模塊(圖2中②)包括通用SATA邏輯和SATA控制邏輯兩個(gè)組件,為不同操作系統(tǒng)的驅(qū)動(dòng)器模塊提供獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)API。其中,通用SATA邏輯模塊是獨(dú)立于控制器、操作系統(tǒng)和結(jié)構(gòu)的,主要實(shí)現(xiàn)所有的算法和例程。SATA控制邏輯描述的是所有專用控制器代碼,具體內(nèi)容依賴于控制器的主控制芯片。操作系統(tǒng)服務(wù)層(圖2中③)提供一個(gè)獨(dú)立于操作系統(tǒng)的與SATA庫(kù)層的接口。它與具體的操作系統(tǒng)相關(guān),能把上層操作系統(tǒng)類的請(qǐng)求翻譯成目標(biāo)操作系統(tǒng)能夠識(shí)別的請(qǐng)求格式。
3.3 操作系統(tǒng)對(duì)SATA應(yīng)用支持
3.3.1 Windows平臺(tái)
Windows平臺(tái)中,橋是通過仿真Windows支持的PATA模式控制器,加載和使用PATA控制器實(shí)現(xiàn)。為了提供對(duì)SATA兩種模式的支持,微軟開發(fā)了支持最新ATA/ATAPI命令集的Ataport,該命令集支持PATA、SATA混合應(yīng)用環(huán)境。應(yīng)用Ataport開發(fā)的SATA控制器,一般提供兩個(gè)微口(Miniport),其中一個(gè)是支持現(xiàn)PATA控制器的默認(rèn)微口驅(qū)動(dòng)器,替換現(xiàn)有的PATA和SATA仿真PATA的驅(qū)動(dòng)棧功能實(shí)體;另一個(gè)是支持AHCI SATA的微口驅(qū)動(dòng)器,在未來的Windows系統(tǒng)中實(shí)現(xiàn)本地設(shè)備模式。在Ataport中,每個(gè)設(shè)備的工作模式通過PCI規(guī)范中基類01(塊存儲(chǔ)器)的子類代碼設(shè)置,當(dāng)SATA設(shè)備運(yùn)行在仿真并行模式時(shí),子類代碼設(shè)置為01h;運(yùn)行在本地SATA模式時(shí),應(yīng)設(shè)置為06h。要說明的是,Windows 2003 Server及以前的所有版本都不提供對(duì)本地設(shè)備的支持。
3.3.2 Linux平臺(tái)
Linux平臺(tái)對(duì)SATA設(shè)備的支持是通過借鑒成熟的PATA,并對(duì)PATA與SATA相異部分加以改進(jìn),擴(kuò)充一些SATA支持的新功能實(shí)現(xiàn)。
IDE設(shè)備驅(qū)動(dòng)器模塊(ide.c)含有一些特定的設(shè)備子驅(qū)動(dòng)器如ide-pci.c、ide-probe.c、ide-pnp.c、ide-dma.c、ide-proc等。根據(jù)SATA的新特性,對(duì)SATA設(shè)備的物理發(fā)現(xiàn)和傳輸進(jìn)行完善和改進(jìn),即對(duì)原有的PATA的ide-probe.c、ide-dma.c子驅(qū)動(dòng)器等進(jìn)行修訂,其他子驅(qū)動(dòng)器可以直接借鑒PATA。用戶只需通過驅(qū)動(dòng)器層的可選擇配置,即實(shí)現(xiàn)對(duì)橋和本地兩種模式的支持。
4 發(fā)展趨勢(shì)
SATA是一種新興的總線技術(shù),是PATA的理想的替代技術(shù),對(duì)它的研究和應(yīng)用已成為一種趨勢(shì)。這種趨勢(shì)表現(xiàn)在:
(1) 標(biāo)準(zhǔn)化工作將進(jìn)一步加快 主導(dǎo)SATA標(biāo)準(zhǔn)化工作的SATA工作組、Intel、Seagate、Maxtor、IBM等在不斷完善SATA標(biāo)準(zhǔn),現(xiàn)已有SATA1.0(a,b,c,d,等多個(gè)版本)、SATA I (Extensions to Serial ATA 1.0a, revision 1.1)等多個(gè)版本。2004年5月6日,Serial ATA工作組把原本在第二代推出的物理層帶寬3Gbps編入Serial ATA Ⅱ標(biāo)準(zhǔn)中。與新標(biāo)準(zhǔn)迅速地進(jìn)展相對(duì)比,工業(yè)化步伐也急需快速跟上。關(guān)鍵工作急需統(tǒng)一驅(qū)動(dòng)器、主板和PC供應(yīng)商,特別是芯片廠商等對(duì)SATA通信和功能的理解,創(chuàng)造一個(gè)真正的即插即用和相互共存環(huán)境。
(2) 協(xié)議硬件化 硬件化是減少協(xié)議的復(fù)雜性和運(yùn)行效率的有效途徑,為了高效實(shí)現(xiàn)SATA功能,第二和第三層的部分或全部協(xié)議功能硬件化(集成到芯片組)將是SATA功能實(shí)現(xiàn)的主要途徑。
(3) SATA的應(yīng)用將逐步過渡到本地模式 橋應(yīng)用模式是PATA向SATA遷移過程存在的一種廉價(jià)、全兼容PATA環(huán)境的方案。但隨著SATA、AHCI標(biāo)準(zhǔn)化和工業(yè)化的發(fā)展,現(xiàn)在PATA和SATA共存的現(xiàn)狀將逐步過渡到以SATA主導(dǎo)。
(4) SATA將應(yīng)用于網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域 SATA具有高帶寬、拓?fù)湟讛U(kuò)展、數(shù)據(jù)完整性、可靠性、盤體MTBF與SCSI相當(dāng)、支持熱插拔網(wǎng)絡(luò)存儲(chǔ)等特點(diǎn),具備組成低廉的RAID進(jìn)入網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域的條件。加之SAS(Serial Attached SCSI)支持SATA,提供STP(SATA Tunnel Protocol)最大限度地兼容SATA等等內(nèi)容,都為SATA進(jìn)入網(wǎng)絡(luò)存儲(chǔ)領(lǐng)域提供了技術(shù)條件。
隨著ATA-100/133的引入,PATA的發(fā)展已經(jīng)到了盡頭,引入SATA代替PATA是技術(shù)發(fā)展的必然趨勢(shì)。SATA引入了大量的新技術(shù),并保持與PATA兼容。Windows和Linux操作系統(tǒng)都提供應(yīng)用支持,開展應(yīng)用簡(jiǎn)單快捷。以相對(duì)較低的成本獲得比PATA高得多的性能,并為中、低端企業(yè)級(jí)存儲(chǔ)和其他外存應(yīng)用拓展空間,將是未來存儲(chǔ)技術(shù)發(fā)展的主流技術(shù)之一。
參考文獻(xiàn)
1 Wong, William, A year of transition: Machines get faster,smaller, smarter[J],Electronic Design, v 51, n 13, Jun 16, 2003, p34~36
2 Bob Norman, Frank Lee. Implementing serial ATA in next-generation computer systems.Computer Technology Review[J].Feb 2002
3 Amber Huffman, Joni Clark. Serial ATA Native Command Queuing[S].www.intel.com. Jul 2003.
4 APT Technologies Inc, Dell Computer Corporation, Intel Cor-poration, etc. Serial ATA: High Speed Serialized AT Attach-ment(Revision 1.0a) [S] , www.serialata.org , Jan 2003.
5 Dell Computer Corporation. Intel Corporation, Maxtor Corpo-ration, etc. SerialⅡ: Cable and Connector volume 1("Final Specification") [S], www.serialata.org, Feb 2003.
6 Intel Corporation. Serial ATA: Advanced Host Controller In-terface (Revision 1.0) [S], www.intel.com, May 2004
7 Intel Corporation, Serial ATAⅡ Native Command Queuing Overview[R], www.intel.com, Apr. 2003