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