孫德榮



摘要 本文分析了國內外多種嵌入式數據存儲和管理的常用方案的優劣,提出了一種基于PowerPC處理器的大容量高速率數據存儲及數據轉發技術實現方案。該方案以高速串行Rapidl0作為信號處理機數據和控制命令輸入接口,千兆以太網口為數據輸出轉發接口,以大容量PCI Express為NAND FLASH存儲陣列的接口,以VxWorks買時操作系統為運行環境,構建了一種具有強實時性、以標準文件系統進行存儲管理的大容量高速率數據存儲系統。
【關鍵詞】PowerPC Rapidlo PCI Express 數據存儲
1 引言
嵌入式系統大容量高速率存儲技術廣泛應用于航空、航天、雷達、偵察等領域,從機載的“黑匣子”到航天測控的數據記錄設備,到偵查設備的大容量存儲陣列,都對大容量高速率數據存儲設備有極大的需求。因此,急需構建一種運行強實時處理,高可靠性,并可按照標準文件系統進行數據存儲和管理的設備。
2 國內外發展現狀
2.1 基于PCIE的嵌入式設備存儲方案
如圖1所示,國外常見的嵌入式設備存儲方案具有高速大容量數據存儲能力,通常進行機箱內存儲,機箱具有主控板,通常是單板計算機,存儲陣列采用PCI Express標準電子盤存儲器陣列,單板計算機與存儲器陣列通過PCI Express背板總線進行互聯。
這種設備的優點在于作為單機箱設備,板卡配備齊全,具有計算機主板,可運行Windows等具有良好用戶界面的操作系統;具有PCI Express接口的存儲板為標準電子盤結構,直接連接在主控板的北橋設備上,可直接通過主控板訪問;PCI Express設備在主板程序開發過程中可完全延續過去PCI總線開發的經驗,開發難度降低。缺點在于設備背板總線結構復雜,需滿足多種總線拓撲結構,實現難度大。同時,在高速總線接口上不支持Rapidl0總線接口。
2.2 基于Rapidl0的嵌入式存儲設備方案
如圖2所示,國內常見嵌入式存儲設備方案采用DSP+FPGA架構,DSP和FPGA之間采用Local并行總線數據交互,在FPGA后擴展大規模并行NAND FLASH存儲陣列。
由于NAND FLASH芯片由于工藝等問題天生就存在缺陷,在其生產和使用過程中容易產生壞塊,而壞塊無法正常存儲數據。因此,有效的壞塊管理是嵌入式數據存儲無法回避的關鍵問題。壞塊管理的實現可通過軟件實現也可通過硬件實現,通常在CPU里建立壞塊表,對FLASH陣列進行掃描,對壞塊進行標注,數據存儲時跳過壞塊,并重新建立邏輯地址與物理地址的映射。同時每次上電都需要重建壞塊表,并將壞塊表存入非易失性存儲器中。
這種通過FPGA進行陣列管理的存儲方案的優缺點非常明顯。優點在于:
(1)硬件架構易實現;
(2)具有高速串行數據總線接口,可實現高傳輸帶寬;
(3)在FPGA中對數據進行分路并行存儲到多個FLASH矩陣中,可實現數據橫向位寬的提升和縱向數據容量的提高,從而實現高速數據記錄。
然而,此種方案的缺點同樣不容忽視。由于將所有FLASH陣列管理工作都交由FPGA或CPU實現,并行分配、壞塊管理、數據校驗等工作都由FPGA或CPU完成,同時FPGA還要兼顧高速接口、DDR2、網口MAC等若干IP核的開發。軟件開發難度高,工作量極大,換句話說,此方案入門容易但做精卻有很多技術門檻需要突破。因此,該方案的可靠性很大程度上受到軟件開發質量的影響,難以保證。故而該方案尚未見大規模實用。
3 基于PowerPC的存儲方案
3.1 存儲方案硬件設計
基于PowerPC的大容量高速率存儲,克服了已有嵌入式存儲設備方案的接口和可靠性缺陷。采用FLASH控制器芯片連接多個NAND FLASH芯片,完成壞塊管理、數據校驗等工作,通過橫向擴展位寬、縱向擴展容量成為存儲器陣列。由于FLASH控制器芯片只具備SATA接口,與大多數嵌入式處理器并不兼容。因此添加PCI Express轉SATA的橋片,從而滿足與高性能PowerPC嵌入式處理器接口的要求。
選用PowerPC MPC8548E處理器為存儲設備的核心,它具有一個e500處理器內核,支持一個8x PCI Express接口或者一個4x PCIExpress接口加一個4x Rapidl0接口,它具有最大可支持16Gb的大容量DDR2外部存儲器,具有千兆以太網MAC接口,在接口上能滿足系統構建的需要。如圖3所示。
存儲設備具有Rapidl0接口,通過交換芯片TSI578,提供4x 2.5Gbps傳輸速率,與外部多個Rapidl0輸入端口相連,分別接收控制命令和存儲的數據。PowerPC通過PCIExpress交換芯片和轉SATA橋Marvell芯片,直接控制FLASH控制器,讀寫FLASH陣列。每個存儲陣列容量為512 GB。兩個存儲陣列容量可達到1TB。
3.2 FLASH陣列設計
存儲設備通過NAND FLASH存儲器陣列組合進行擴展,存儲陣列的設計是容量和訪問速率提高的關鍵。
FLASH控制器選用Indilinx公司的IDX110MOO芯片,它提供4個存儲陣列通道,每個通道( Channel)可由8個塊區(BANK)組成,每個BANK分配一個CE空間進行訪問。如通道A,有8個BANK組成,分別通過CEO、CE4、CE8------CE28對該通道的每個BANK進行訪問。FLASH控制器通道組成如圖4所示。
FLASH控制器有32個CE空間,外接4個通道的FLASH存儲陣列,每組空間具有16位數據和地址位。因此,用兩片8位的NAND FLASH芯片并行連接組成16位,這兩片NAND FLASH芯片共享CE空間。如FLASH1作為低位數據(DQO-DQ7),FLASH2作為高位數據(DQ8-DQ15).這兩片FLASH共享CEO、CE8、CE16、CE24。如圖5所示。
3.3 存儲方案應用軟件設計
大容量高速存儲方案主要需解決兩個問題,一是數據如何可靠的存儲,二是數據如何方便的轉發。本方案在PowerPC處理器上運行VxWorks實時操作系統,保證軟件的實時性和可靠性,在VxWorks上運行文件系統,保證數據維護和轉發的便捷易用。
如圖6所示,數據存儲實際工作流程為:PowerPC處理器從Rapidl0控制接口收到存儲指令,通過文件系統建立文件列表,打開文件,從數據接口接收數據,組包并寫入文件,從控制接口收到停止命令,停止接收數據。存儲過程中有兩點是需要注意的。
其一是文件管理。由于在VxWorks上運行文件系統,文件系統要求文件不可大于4GB,因此,大于4GB的數據需分成多個文件進行存儲。在創建文件列表時,首先建立文件夾,文件夾名字即為顯示在文件列表的名字,在文件夾內,創建文件名為Ol.dat、02.dat之類的文件名,若當前文件即將存滿,就建立新的文件,繼續存儲。
其二是數據組包。數據通過Rapidl0接口輸入,最大4KB為一包,考慮到FLASH讀寫效率,包分得太細,則寫操作過于頻繁并不利于寫速率的提高,包分得太大,則數據存儲的延時過大,不滿足用戶需要。綜合考慮,選擇32KB為一包,對數據暫存組包并存儲,能達到較好的效果。
數據網絡轉發實際工作流程為:在停止狀態PowerPC處理器從Rapidl0控制接口收到轉發命令,處理器依照默認TCP或UDP的地址和端口參數配置Socket,建立鏈接后,從指定文件列表依次讀取文件數據,并通過Socket發送到網絡總線上。如圖7所示。
3.4 VxWorks驅動軟件移植
本文采用基于嵌入式實時操作系統VxWorks的軟件運行環境,需開發PCIExpress設備的驅動程序,即PCI Express轉SATA橋芯片的驅動程序。
驅動程序軟件在VxWorks 6.7環境下進行設計。從VxWorks 6.5版本以上,風河公司提出了基于VxBus的設備驅動程序架構。VxBus驅動程序架構對與操作系統和硬件設備互聯提供了標準定義的接口,在系統最小板級支持包(BSP)的基礎上,通過匹配機制實現驅動到硬件設備的訪問。在程序編寫的時候通過適當的添加宏定義和修改相關配置文件,可在WorkBench開發環境上,方便的加入和去掉設備驅動程序,便于程序移植。
(1)在config.h文件中,定義設備的宏定義。
(2)注冊驅動程序到VxBus。通過注冊,告訴VxBus存在一個設備,VxBus根據hcfDeviceList[]表格定義的設備查詢VxBus總線上掛接的設備。在sysHwlnit2函數中調用vxbXxAhciStorageRegister()函數,將設備注冊到總線設備上。
(3) 設備初始化。 包括vxbXxAhcilnstlnit、vxbXxAhcilnstlnit2和vxbXxAhciInstConnect,完成后,設備被連接到VxBus總線上。
完成初始化后設備可按照標準文件系統方式對存儲陣列進行正常訪問。
4 存儲能力測試
大容量高速率數據存儲設備的關鍵指標在于存儲容量和讀寫速率。存儲容量由NANDFLASH存儲陣列的排列和芯片數量等硬件因素決定。本方案在一個6U的板卡上實現了64片128Gb的NAND FLASH芯片,總共可達到1TB的存儲容量。
存儲設備的讀寫速率指標主要由硬件操作帶寬,操作系統的效率,驅動程序的效率,讀寫數據包的大小,存儲區域是否連續等因素影響。
由于PCI Express存儲陣列可看作標準固態電子盤的形式,因此制作了存儲子板,可直接在計算機測試其讀寫能力。通過第三方IO測試軟件對存儲設備的讀寫能力進行測試,分別設置數據包大小和訪問方式,在使用一個存儲陣列時,得到測試結果如圖7所示。
連續讀數據速率達到460MB/s,連續寫數據速率達到260MB/s??蓾M足高速數據存儲要求。
對數據網絡轉發進行測試,按照TCP協議進行測試,將存儲設備與普通調試計算機通過直連網線進行連接,在計算機上開發socket收數程序。當打開計算機寫入開關,轉發速率測試為20MB/s,與通常理解的TCP在千兆以太網下的效率相當。當按照UDP協議進行測試,數據轉發速率可達到45MB/s。當接收計算機使用固態硬盤或其他高速設備時,轉發速率還應能進一步提高。
5 結束語
使用專用FLASH控制器芯片可極大減少軟件開發工作量,避免壞塊管理、數據校驗等復雜運算算法,而將軟件開發的重心放在高速接口,協議解析上,文件系統上,實現的難度也降低了。
嵌入式系統大容量高速率存儲技術是嵌入式設備中的關鍵技術之一,本文分析了國內外的多種數據存儲技術的實現方案,提出了一種基于PowerPC處理器的大容量高速率數據存儲技術實現方案。該方案以高速串行Rapidl0作為信號處理機數據和控制命令輸入接口,千兆以太網口為數據輸出轉發接口,以大容量PCI Express為NAND FLASH存儲陣列的接口,以VxWorks實時操作系統為運行環境,構建了一種具有強實時性、以標準文件系統進行存儲管理的大容量高速率數據存儲系統。它的優勢在于具有標準硬件架構,穩定可靠,具有標準的文件系統進行存儲,數據訪問、數據轉發簡單易行。此外,采用VxWorks嵌入式實時操作系統,軟件實時性也能得到保證。本方案己成功應用于某高速數據收發設備。
參考文獻
[1]張元凱,蔡惠智,劉垚,王維.基于PCIe和RAID5的高速存儲系統設計[J].微計算機信息,2010(23):12-2.
[2]張萍,沈輝.基于PCI Express總線的高速數據記錄卡設計[J].現代雷達,2010 (11).
[3]王立峰,胡善清,劉峰等,基于閃存的高速海量存儲模塊設計[J].計算機工程,2011 (04).
[4]FreescaleMPC8548E PowerQUICC rM IIIIntegrated Processor ReferenceManual,2005 (07).
[5] Wind RiverVxWorks Device DriverDeveloper' s Guide 6.7,2008 (11).