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