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