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