基于SATA2.0的高速存儲系統設計實現
摘要:本文介紹了一種高速數據存儲系統,該系統采用SATA2.0協議,存儲介質選擇的是Intel公司新型固態硬盤,控制器選擇的是Xilinx公司的Viretx-5系列FPGA,以及所提供的軟件開發平臺ISE和EDK聯合開發工具,最后使用ChipScope對系統進行測試。多次測試結果顯示,本系統能穩定有效地完成高速數據傳輸,且存儲速度達到800MB/s。
本文引用地址:http://www.j9360.com/article/201606/293258.htm引言
科學技術的快速發展使得人類快速地從網絡時代邁入大數據時代,于是人們在社會生活中產生的數據量呈現爆炸式增長,這給數據的存儲帶來了很大的壓力。正是基于這種現狀,借助于計算機與電子技術的快速發展,本文提出一種SATA2.0協議的高速大容量數據存儲系統,相比于更早的PATA協議具有無可比擬的優勢。SATA協議的數據傳輸模式傳輸速度比PATA協議更快,將40根數據線簡化到7根,并且采取差分傳輸形式,能有效解決信號間的串擾問題,最長1m的數據線長度擴展使用范圍并能支持熱插拔[1]。為實現更快的傳輸速度,本系統還采取磁盤陣列方式進行存儲,采用四塊固態硬盤組成RAID0模式磁盤陣列。FPGA作為本系統的控制器是實現整個系統的關鍵,采用EDK的IP核生成工具定制實現SATA協議的IP核,因此數據可以直接從FPGA寫入磁盤陣列。
1 SATA協議介紹
SATA概念[2]由Intel公司在2000年提出,隨后誕生的SATA1.0協議規定采用串行數據傳輸模式,速率為1.5Gbps。之后SATA2.0將速率提升到3.0Gbps,并加入NCQ(本地指令列隊)、EM(機架管理)等新技術,同時支持熱插拔。最新版本SATA3.0傳輸速率高達6.0Gbps。
SATA協議從上到下有四層,即物理層、鏈路層、傳輸層和應用層[1],其架構如圖1所示。
SATA協議中,應用層主要負責的是對所有命令的解析和執行,會根據處理器的要求實現一系列操作,像PIO傳輸、DMA傳輸、軟件復位以及中斷等;傳輸層主要負責幀的封裝和解析,在發送端將要發送的數據按照要求封裝成各種類型的FIS,在接收端把接收到的FIS解析成數據;鏈路層主要負責的是幀的校驗和抗干擾處理,將根據上兩層傳輸命令生成原語發送出去,并且接收來自于下一層的原語,將其轉換成命令發送給上兩層;物理層主要實現與對方物理層建立通信連接,負責差分數據的傳輸[2]。在發送端從鏈路層接收數據[1],加入同步字符后對數據做串行化處理,再采用低壓差分方式傳輸。在接收端對低壓差分數據進行解串處理以分離時鐘與數據,通過同步字符實現數據對齊,最終恢復出發送時的數據。
2 總體方案的設計
存儲系統的整體方案如圖2所示,FPGA內部集成兩個主頻550MHz的PowerPC440處理器,通過PLB總線[4]控制整個系統,數據輸入端是四路GTX,參考時鐘設置為150MHz,傳輸數據位為16位,高速緩存是容量1GB的DDR2,SATA控制器實現協議規定的所有功能,包括啟動DMA傳輸模式,把數據封裝成幀,進行CRC校驗、加擾和解擾處理,最后進行8B/10B編碼,數據被串行化后通過四路GTX寫入固態硬盤組成的磁盤陣列。
3 存儲系統的實現
3.1 通信鏈路初始化
通信鏈路建立前需要進行上電復位和電源管理,并對通信模式和傳輸速率進行配置[1]。因此,雙方要建立通信先要進行握手,握手成功后才能建立可靠的連接。SATA協議規定使用OOB信號進行上電復位和電源管理。SATA2.0標準定義了三種OOB信號,即COMRESET、COMINIT和COMWAKE來實現鏈路初始化。
上電硬件復位后,雙方須先初始化,使通信鏈路都置于空閑狀態。對于物理層的初始化,通信雙方是利用OOB信號的硬件復位信號使設備端完成復位操作,設備端完成復位后準備建立通信鏈接(速度協商、時鐘恢復等),其上電過程如圖3所示。
● 主機/設備端處于斷電狀態;
● 電源上電,主機端將TX和RX拉到共模電壓;
● 主機端就連續發送多個COMRESET信號,然后把總線設置成等待狀態;
● 設備端發送COMINIT信號,一旦檢測到COMRESET信號,設備端發送COMINIT信號作為響應,無論何時設備端上電完成,都可以發送該序列請求建立連接;
● 主機端校準,主機端接收到COMINIT信號后進行校準,校準完成之后發送COMWAKE信號給設備端作為響應;
● 設備端響應,設備端在其接收端上檢測COMWAKE信號并校準發射器;
● 速率協商,雙方要進行速率協商,此時主機端以最低速率連續發出D10.2字符,如果設備端能夠鎖定該速率則速率協商成功,否則重新進行;
● 設備端鎖存,假如此時設備端可以建立連接,回復SYNC原語表明設備端允許建立連接。
如果主機端接收到的是三個連續的非ALIGN原語后,這就表明雙方連接成功,即可傳輸數據。
3.2 數據傳輸過程
數據在SATA協議中傳輸是以幀(Frame)形式傳遞[3]。幀由一組Dwords構成,以SOF原語開始,內部含有多個數據,最后一位是CRC校驗值,并以EOF原語結束。有時為調節速率,幀中間也會插入一些原語(CONT、HOLD、HOLDA)用來控制流量。幀的典型內部結構圖如圖4所示。
原語是由雙字組成的最簡單信息單元,主要用于建立通信鏈接、傳遞最新狀態和傳輸控制命令等。原語雙字之一是控制字符另外三個字節的存放數據。
在數據通信過程中,信號會受到各種各樣的干擾,因此,在數據發送之前要對數據作校驗處理,SATA協議采用的是CRC校驗,這要對數據幀中SOF與EOF之間包含的所有數據作循環冗余運算,其計算單位是雙字(32bits),如需要計算的數據量不是雙字的整數倍,處理方法是在數據的后面添加“0”補成32位。CRC的運算公式如公式(1)所示:
(1)
為使數據在傳輸過程中能更加穩定,要對方法的數據進行加擾,加擾處理的原理就是利用擾碼的正交性,一般都采用偽隨機序列碼。加擾后的信號可以降低噪聲對信號的影響,解擾碼的原理跟加擾一樣。加擾的特征方程如公式(2)所示:
(2)
現以一個數據幀的傳輸過程為例來說明原語在傳輸過程中的作用以及其間應答關系,傳輸過程如圖5所示。
A.若發送端有數據要發送,發送X_RDY,通知接收端準備接收;
B.若接收端可以接收數據,發送R_RDY;
C.發送端開始發送數據;
D.接收端在接收到數據時,發送R_IP;
E.發送端數據未準備好,發送HOLD原語告訴接收端等待;
F.接收端接收到HOLD原語后,發送HOLDA原語應答;
G.發送端可以繼續發送數據,發送HOLD原語結束等待;
H.繼續發送數據;
I.接收端接收到數據時,發送R_IP原語;
J.發送端發送完數據以后,發送WTRM原語給接收端,發送端等待接收結果;
K.接收端接收完成并校驗正確后,發送R_OK原語給發送端,數據接收正確;
L.發送端發送SYNC原語進入空閑狀態;
M.接收端發送SYNC原語進入空閑狀態。
4 數據的測試與驗證
數據測試是整個系統開發期間最為耗時的部分,為方便測試而選用Xilinx公司提供的一款在線邏輯分析軟件Chipscope Pro。在ISE中直接調用數據采集的核(包括ICON、ILA和VIO)就能使用Chipscope來觀測FPGA芯片內部的信號。模擬產生一串從0開始遞增的數據發送給GTX,然后通過Chipscope檢測接收到的數據值,其采樣圖如圖6所示。
從圖7可看出數據呈現非常規律的分布,從數據放大后的圖中可看出是非常規律的遞增碼。本系統自設計完成以來已經做過多次測試,為配合數據測試的需要還為本系統開發一套上位機數據誤碼檢測軟件。由于每次測試使用的數據格式都不同,每次存儲的數據量不少于2TB,數據存入固態硬盤后用數據誤碼檢測軟件對數據進行檢測,經反復測試后的結果證明,所設計的高速存儲系統存儲速度不低于800MB/S并且性能穩定、數據準確率高。
5 結束語
本文給出了一個基于SATA協議的高速存儲系統的設計,由于SATA協議傳輸速率較高、通信過程較為復雜,以往只能在專用芯片上實現。隨著越來越多高端FPGA集成了串行通信模塊,在FPGA內部可以實現整個SATA協議,系統設計完成后,測試結果顯示其體積小、抗干擾能力強、傳輸速度快且穩定性好,因而有很廣闊的應用前景。
參考文獻:
[1]Serial ATA International Organization.Serial ATA Revision2.0[S].USA,2005.08.
[2]張天文.基于SATA2.0接口的固態硬盤控制器的設計與實現[D]. 中北大學, 2015.
[3]寇科男. SATA接口技術研究及設計[D]. 哈爾濱工業大學, 2010.
[4]Xilinx.Process Local Bus(PLB)v4.6(v1.03a)[S].USA:Xilinx,2008.
[5]趙峰. FPGA上的嵌入式系統設計實例[M].西安:西安電子科技大學出版社, 2008.
[6]趙國慶.雷達對抗原理[M].西安:西安電子科技大學出版社,1999.
[7]Xilinx.FIFO Generator v4.4 User Guide[S].USA:Xilinx,2008.
本文來源于中國科技期刊《電子產品世界》2016年第6期第39頁,歡迎您寫論文時引用,并注明出處。
評論