孟 琪,張 杰,范曉星
(西安電子科技大學(xué) 電子信息攻防對抗與仿真技術(shù)教育部重點實驗室,陜西 西安 710071)
基于PowerPC的SATA固態(tài)硬盤存儲陣列設(shè)計
孟 琪,張 杰,范曉星
(西安電子科技大學(xué) 電子信息攻防對抗與仿真技術(shù)教育部重點實驗室,陜西 西安 710071)
設(shè)計了基于SATA接口的固態(tài)陣列存儲系統(tǒng)。系統(tǒng)選用FPGA作為硬件平臺,內(nèi)嵌PPC440處理器作為處理單元,以SATA接口的固態(tài)硬盤陣列作為存儲介質(zhì),并采用RAID0技術(shù)。該存儲陣列系統(tǒng)具有海量、高帶寬等特點。系統(tǒng)同時具有實時存儲、傳輸和管理等功能,并可脫機(jī)運行。
FPGA;PPC440處理器;SATA接口;固態(tài)硬盤;RAID0
在科研和生產(chǎn)中,往往需要記錄實時性強(qiáng)的信息便于后續(xù)的分析處理。隨著科學(xué)技術(shù)的發(fā)展,高速、海量、能脫機(jī)的數(shù)據(jù)存儲設(shè)備已成為工業(yè)和科研不可或缺的關(guān)鍵設(shè)備。而目前市場上常見的硬盤、Flash等存儲介質(zhì)均不具有海量且高速的特點,無法滿足需求。因此研究一種同時具有高速傳輸、海量存儲、能脫機(jī)運行等特點的數(shù)據(jù)存儲設(shè)備具有重要意義。
磁盤陣列(RAID)基本思想是將多個相對便宜的硬盤組合,成為一個硬盤陣列組,使性能達(dá)到甚至超過一個價格昂貴、容量巨大的硬盤性能。RAID由多個硬盤組成,通過在多個硬盤上同時存儲數(shù)據(jù)來大幅度提高存儲系統(tǒng)的數(shù)據(jù)吞吐量。固態(tài)硬盤(SSD)是一種基于閃存的存儲技術(shù)。與普通磁盤相比,固態(tài)硬盤由半單體存儲器構(gòu)成,沒有移動的部件,因而隨機(jī)訪問的時間比旋轉(zhuǎn)磁盤要快,能耗更低,同時也更結(jié)實。不過,SSD也有一些缺點。首先,因為反復(fù)寫之后,閃存塊會磨損,所以SSD也容易磨損。其次,SSD的價格較高?;赗AID技術(shù)的固態(tài)硬盤存儲陣列系統(tǒng)[1]不僅解決了SSD單盤容量較小的問題,且提升了硬盤的傳輸速率,因而具有高傳輸帶寬、大容量、無損、攜帶輕便等特點。
本文選用FPGA作為硬件平臺,內(nèi)嵌PPC440處理器作為處理單元,以SATA接口的固態(tài)硬盤陣列作為存儲介質(zhì),并采用RAID0技術(shù)設(shè)計了基于SATA接口的固態(tài)陣列存儲系統(tǒng),此設(shè)計對傳輸帶寬的提升和容量的增大具有重要作用。
SATA控制器是SSD控制的核心。系統(tǒng)選用Xilinx Virtex5 FPGA作為SATA控制器。SATA控制器根據(jù)SATA協(xié)議實現(xiàn)主機(jī)與硬盤之間的數(shù)據(jù)傳輸和管理。系統(tǒng)的數(shù)據(jù)管理和傳輸上述功能的軟件處理部分,包括SATA應(yīng)用層的命令傳輸協(xié)議,對數(shù)據(jù)流的分配等,通過嵌在FPGA內(nèi)部的處理器PPC440實現(xiàn)。系統(tǒng)在FPGA上集成了SATA控制器、多端口控制器(MPMC)、與PPC440通過PLB總線互聯(lián),實現(xiàn)了片上系統(tǒng),完成了與硬盤的通信以及數(shù)據(jù)的傳輸。
圖1 系統(tǒng)框圖
SATA控制器基于SATA協(xié)議2.0實現(xiàn),SATA2.0協(xié)議的結(jié)構(gòu)體系分為:物理層、鏈路層、傳輸層和應(yīng)用層。其中,命令層響應(yīng)ATA命令并控制映像寄存器組。SATA控制器邏輯框圖如圖2所示。
圖2 SATA控制器邏輯框圖
如圖1所示,SATA控制器邏輯模塊包括物理層、SATA_CORE和用戶接口模塊。物理層通過對集成在FPGA內(nèi)部的千兆位級串行收發(fā)器GTX進(jìn)行參數(shù)配置可以實現(xiàn);SATA_CORE模塊實現(xiàn)了SATA協(xié)議的鏈路層和傳輸層的功能,負(fù)責(zé)幀的封裝、發(fā)送、接收與解析;用戶接口模塊包括映像寄存器組,PLB接口和NPI接口。
應(yīng)用層提供了一個映像寄存器組。本設(shè)計中將映像寄存器組由32個32位寄存器組成,其中有5個寄存器是用戶自定義的,其余的兼容ATA協(xié)議指令集,包括Status、Command、Error、LBA low等,用于存放SATA_CORE的控制信息、狀態(tài)信息、命令、參數(shù)、LBA地址等。該寄存器組是地址映射的,一端與PLB總線相連,用于PPC處理器對寄存器的讀寫,另一端與SATA_CORE模塊相連,用于記錄SATA_CORE的狀態(tài)信息。
PLB總線是一種高帶寬、低延遲、高性能的處理器內(nèi)部總線,用于連接高性能CPU高速存儲控制器、仲裁器等。由于PLB總線協(xié)議的復(fù)雜性,為了讓用戶更加方便的地使用,Xilinx公司開發(fā)了PLB生成向?qū)?。該向?qū)г赑LB總線與IP核引入了PLB接口,即IPIF。利用IPIF對映像寄存器進(jìn)行配置便可實現(xiàn)SATA控制器的控制功能。
圖3 IPIF
SATA控制器在傳輸命令以及控制信息時通過PLB總線,而對數(shù)據(jù)的讀寫是通過NPI接口與多端口控制器(MPMC)相連,直接讀寫存儲單元。NPI接口控制器(NPI_CTRL)用于實現(xiàn)NPI接口協(xié)議,數(shù)據(jù)寬度為64位,支持burst工作模式,一次burst讀或?qū)懽疃嗫蓚鬏?56 Byte數(shù)據(jù),每次burst之后硬件會自動更新地址,得到下一個burst的起始地址。
圖4 64 bit NPI 32 word burst 讀
SATA協(xié)議定義了一系列命令傳輸協(xié)議,包括軟件復(fù)位協(xié)議、PIO數(shù)據(jù)輸入命令協(xié)議、PIO數(shù)據(jù)輸出命令協(xié)議、DMA數(shù)據(jù)輸入命令協(xié)議、DMA數(shù)據(jù)輸出命令協(xié)議等。其中DMA方式是一種效率極高的傳輸方式,大量數(shù)據(jù)的傳輸一般使用DMA模式。圖5為DMA讀寫命令過程中主機(jī)與硬盤之間幀的交換情況。
下面以主機(jī)向設(shè)備數(shù)據(jù)的過程為例來說明數(shù)據(jù)傳輸?shù)牧鞒?系統(tǒng)上電后,PPC初始化SATA控制器,包括NPI控制模塊(控制內(nèi)存條讀寫),AD_DATA_CHECK模塊(硬盤讀數(shù)據(jù)模塊),初始化中斷系統(tǒng),設(shè)置硬盤工作模式模塊,DMA模式設(shè)置,如圖6所示。
圖5 DMA讀寫過程框圖
圖6 與硬盤建立通信連接
圖7 設(shè)置硬盤模式與建立中斷系統(tǒng)
主機(jī)向設(shè)備發(fā)送數(shù)據(jù)時,NPI接口控制模塊按照NPI接口協(xié)議將訪問地址,數(shù)據(jù)長度和控制信號給多端口存儲控制器MPMC,在NPI控制模塊和MPMC的共同控制下,原始數(shù)據(jù)經(jīng)過NPI接口寫入發(fā)送數(shù)據(jù)緩沖區(qū)中。發(fā)送數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)聚集到一定數(shù)量時,幀生成模塊讀出發(fā)送數(shù)據(jù)緩沖區(qū)的原始數(shù)據(jù),經(jīng)過對數(shù)據(jù)編碼、校驗、添加幀邊界、組幀,將完整的幀寫入幀發(fā)送緩沖區(qū)。當(dāng)幀發(fā)送緩沖區(qū)中數(shù)據(jù)聚集到一定數(shù)量時,幀發(fā)送模塊發(fā)送請求原語,按照SATA協(xié)議的時序控制幀發(fā)送緩沖區(qū)的讀使能。將從幀發(fā)送緩沖區(qū)讀出的數(shù)據(jù)寫入GTX,將數(shù)據(jù)轉(zhuǎn)變?yōu)榈蛪翰罘中盘?發(fā)送到SATA電纜上。
為了實時存儲無間斷的、高速數(shù)據(jù),系統(tǒng)采用基于多片DDR2交替緩存的技術(shù)。先將數(shù)據(jù)分為數(shù)據(jù)塊,然后交替的寫入DDR2。為了突破總線帶寬瓶頸,系統(tǒng)將數(shù)據(jù)與信息分開傳輸。利用高帶寬的NPI接口直接傳輸數(shù)據(jù),用PLB總線來傳輸命令和狀態(tài)信息。系統(tǒng)實例如圖6所示。
圖8 存儲系統(tǒng)實例圖
FPGA選用Xilinx公司的XC5vfx200tff1738-2,嵌入式處理器選用FPGA內(nèi)嵌的PPC440,高速緩存單元由 DDR2a內(nèi)存條和DDR2b內(nèi)存條組成,其容量為1 GB、64位的DDR2內(nèi)存條,磁盤陣列由8塊SSD硬盤組成。
采集的數(shù)據(jù)通過data_collection_0模塊、data_collection_1模塊分別寫入內(nèi)存條DDR2_a和DDR2_b。將1 GB的DDR2_a、DDR2_b劃分為8個128 MB的數(shù)據(jù)塊,其中數(shù)據(jù)塊0~3稱為上半頁,數(shù)據(jù)塊4~7稱為下半頁。
圖9 DDR2內(nèi)存條
圖10為從存儲陣列讀寫數(shù)據(jù)的流程圖,其中Work_en為工作標(biāo)志位;W_flag為寫標(biāo)志位;R_flag為讀標(biāo)志位;flagA_L,flagB_L分為DDR2_a,DDR2_b上半頁寫滿標(biāo)志位;flagA_H,flagB_H分為DDR2_a,DDR2_b下半頁寫滿標(biāo)志位。
圖10 存儲陣列讀寫過程
用上述構(gòu)建的存儲架構(gòu),分別向單個硬盤及8盤存儲陣列寫入10 GB數(shù)據(jù),存儲帶寬如圖11所示。通過對比單個SATA控制器控制硬盤存儲與8個SATA控制器控制硬盤并行存儲,得出通過增加控制器數(shù)量,能夠增加存儲系統(tǒng)的帶寬。
圖11 單盤和8盤存儲陣列存儲帶寬對比圖
本文介紹了一種SATA接口固態(tài)存儲陣列的實現(xiàn)
形式。在單片F(xiàn)PGA中實現(xiàn)多個SATA控制器,形成磁盤陣列,提高了存儲帶寬。數(shù)據(jù)的傳輸是通過NPI接口直接訪問存儲器,控制信息以及狀態(tài)信息是通過PLB總線傳輸,突破了總線帶寬限制的瓶頸。
[1] 呂衛(wèi)祥.基于SATA硬盤陣列的高速數(shù)據(jù)存取技術(shù)研究[D].南京:南京理工大學(xué),2010.
[2] 何賓.片上可編程系統(tǒng)原理及應(yīng)用[M].北京:清華大學(xué)出版社,2010.
[3] Xilinx.Virtex-5 FPGA GTX transceiver user guide[M].USA:Xilinx,2009.
[4] Xilinx.Multi-port memory controller[M].USA:Xilinx,2008.
[5] Xilinx.FIFO generator v4.4 user guide[M].USA:Xilinx,2008.
[6] 步凱.基于RAID技術(shù)的固態(tài)存儲陣列系統(tǒng)的研究與設(shè)計[D].長沙:國防科學(xué)技術(shù)大學(xué),2008.
[7] 葉肇晉,張稀楠,馬磊.基于Xilinx FPGA片上嵌入式用戶IP核開發(fā)[M].西安:西安電子科技大學(xué)出版社,2008.
[8] Xilinx.PLBV46 slave single[M].USA:Xilinx,2008.
[9] Xilinx.PLB usage in Xilinx FPGAs[M].USA:Xilinx,2005.
[10]趙峰,馬迪銘,孫煒,等.FPGA上的嵌入式系統(tǒng)設(shè)計實例[M].西安:西安電子科技大學(xué)出版社,2008.
Design of Hard Disk Storage Array of SATA SSD Based on PowerPC
MENG Qi,ZHANG Jie,FAN Xiaoxing
(Key Lab.of Electronic Information Countermeasure and Simulation Technology of Ministry of Education,Xidian University,Xi’an 710071,China)
The paper puts forward a solid-state storage array system based on the SATA interface.The design selects FPGA as the hardware platform and the embedded PPC440 as CPU to control the whole system.The storage array based on the SATA solid disk adopts RAID0 technology and is used to improve hard disk drive storage and bandwidth.The design can implement the functions of real-time data storage,transmission and management and achieve offline operation.
FPGA;PPC440 processor;SATA interface;solid disk;RAID0
2014- 09- 02
孟琪(1990—),女,碩士研究生。研究方向:片上嵌入式系統(tǒng)。E-mail:mengqi1120@163.com
10.16180/j.cnki.issn1007-7820.2015.04.030
TN79
A
1007-7820(2015)04-111-05