本發(fā)明涉及航天遙感數(shù)據(jù)存儲領(lǐng)域,具體涉及一種遙感數(shù)據(jù)存儲結(jié)構(gòu)和數(shù)據(jù)存儲系統(tǒng),特別是一種用于實現(xiàn)遙感衛(wèi)星高速海量內(nèi)存訪問的數(shù)據(jù)存儲結(jié)構(gòu)和數(shù)據(jù)存儲系統(tǒng)。
背景技術(shù):
現(xiàn)有的遙感衛(wèi)星數(shù)據(jù)存儲系統(tǒng)采用TCP/IP(Transmission Control Protocol/Internet Protocol,傳送控制協(xié)議/網(wǎng)絡(luò)之間互聯(lián)協(xié)議)協(xié)議進(jìn)行數(shù)據(jù)傳輸,并將接收數(shù)據(jù)存儲在操作系統(tǒng)的內(nèi)存上,然后再對該數(shù)據(jù)進(jìn)行后端處理。該方案存在處理流程延遲長、實時性差等缺陷,具體如下:
1)由于TCP/IP協(xié)議架構(gòu)層次復(fù)雜(包括物理層、鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層),因此采用該協(xié)議進(jìn)行數(shù)據(jù)傳輸會存在不確定延時;此外,該協(xié)議架構(gòu)中應(yīng)用層需要軟件支持(如傳輸控制協(xié)議TCP),因而會對處理器造成一定的開銷;TCP/IP協(xié)議不支持硬件的糾錯重傳;
2)由于現(xiàn)有方案是將接收數(shù)據(jù)存儲到操作系統(tǒng)的內(nèi)存上,而該內(nèi)存是基于實際物理介質(zhì)的虛擬地址,虛擬地址與物理地址的映射管理關(guān)系需要由操作系統(tǒng)進(jìn)行維護(hù)管理,因此當(dāng)內(nèi)存使用達(dá)到一定大小后會對處理器造成一定的開銷;另外,由于服務(wù)器采用的操作系統(tǒng)為非實時操作系統(tǒng),存在著用戶層與內(nèi)核層的分層關(guān)系,因此將接收數(shù)據(jù)存放到物理介質(zhì)上需要處理器的參與,會造成一定的計算開銷和存儲延時。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)解決問題是:克服現(xiàn)有技術(shù)的不足,提供了一種數(shù)據(jù)存儲結(jié)構(gòu)和遙感衛(wèi)星數(shù)據(jù)存儲系統(tǒng),采用數(shù)據(jù)與地址分離的數(shù)據(jù)存儲結(jié)構(gòu),實現(xiàn)數(shù)據(jù)的快速讀取,進(jìn)而可以實現(xiàn)遙感衛(wèi)星海量數(shù)據(jù)的實時記錄和訪問處理,滿足了遙感衛(wèi)星海量數(shù)據(jù)實時處理和記錄的需求。
本發(fā)明的技術(shù)解決方案是:一種數(shù)據(jù)存儲結(jié)構(gòu),包括地址模塊和數(shù)據(jù)模塊;
所述數(shù)據(jù)模塊用于存儲數(shù)據(jù),包括N2個數(shù)據(jù)子模塊;
所述地址模塊用于存儲數(shù)據(jù)的地址信息,包括N1個地址子模塊,每個地址子模塊包括M1個地址單元,其中前(M1-1)個地址單元中每個地址單元分別存儲一個數(shù)據(jù)子模塊的首物理地址,第M1個地址單元存儲下一個地址子模塊的首物理地址。
所述數(shù)據(jù)子模塊為彼此不相關(guān)的離散數(shù)據(jù)子模塊,每個數(shù)據(jù)子模塊內(nèi)部具有連續(xù)物理地址。
所述地址子模塊為彼此不相關(guān)的離散地址子模塊,每個地址子模塊內(nèi)部具有連續(xù)地址。
所述第N1個地址子模塊的第M1個地址單元存儲第1個地址子模塊的首物理地址。
一種遙感衛(wèi)星數(shù)據(jù)存儲系統(tǒng),包括數(shù)據(jù)接收單元、數(shù)據(jù)上傳單元和用戶接口單元;
所述數(shù)據(jù)接收單元用于接收來自前端傳輸?shù)臄?shù)據(jù);
所述數(shù)據(jù)上傳單元用于接收來自數(shù)據(jù)接收單元的輸出數(shù)據(jù),并將數(shù)據(jù)上傳至用戶指定內(nèi)存,
所述用戶接口單元在遙感衛(wèi)星上位機(jī)中開辟數(shù)據(jù)存儲結(jié)構(gòu),實現(xiàn)對數(shù)據(jù)上傳單元上傳數(shù)據(jù)的管理,所述數(shù)據(jù)存儲結(jié)構(gòu)為上述所述的數(shù)據(jù)存儲結(jié)構(gòu)。
所述數(shù)據(jù)接收單元為RapidIO數(shù)據(jù)接收單元,所述RapidIO數(shù)據(jù)接收單元用于接收來自前端采用Rapidio協(xié)議進(jìn)行傳輸?shù)臄?shù)據(jù)。
所述數(shù)據(jù)上傳單元為PCIE數(shù)據(jù)上傳單元,所述PCIE數(shù)據(jù)上傳單元接收來自數(shù)據(jù)接收單元的輸出數(shù)據(jù),并將數(shù)據(jù)打包成PCIE協(xié)議格式上傳至用戶指定內(nèi)存。
所述數(shù)據(jù)上傳單元采用實時DMA技術(shù)(Direct Memory Access,直接存儲器存取)將數(shù)據(jù)上傳至用戶指定內(nèi)存。
所述PCIE數(shù)據(jù)上傳單元采用實時DMA技術(shù)將數(shù)據(jù)上傳至用戶指定內(nèi)存。
本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
本發(fā)明設(shè)置包括數(shù)據(jù)模塊和地址模塊的數(shù)據(jù)存儲結(jié)構(gòu),地址模塊中形成地址鏈表實現(xiàn)對數(shù)據(jù)模塊的訪問,進(jìn)而可以實現(xiàn)遙感衛(wèi)星海量數(shù)據(jù)的實時記錄和訪問處理,滿足了遙感衛(wèi)星海量數(shù)據(jù)實時處理和記錄的需求。
附圖說明
圖1為數(shù)據(jù)存儲結(jié)構(gòu)示意圖;
圖2為本發(fā)明中遙感衛(wèi)星數(shù)據(jù)存儲系統(tǒng)結(jié)構(gòu)示意圖;
圖3為RapidIO數(shù)據(jù)接收單元流程示意圖;
圖4為PCIE數(shù)據(jù)上傳單元流程示意圖;
圖5為用戶接口單元流程示意圖。
具體實施方式
為了使本發(fā)明所解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明,應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示為本發(fā)明中數(shù)據(jù)存儲結(jié)構(gòu)示意圖,從圖1可知,本發(fā)明提出的一種數(shù)據(jù)存儲結(jié)構(gòu),包括地址模塊和數(shù)據(jù)模塊;
所述數(shù)據(jù)模塊用于存儲數(shù)據(jù),包括N2個數(shù)據(jù)子模塊;
所述地址模塊用于存儲數(shù)據(jù)的地址信息,包括N1個地址子模塊,每個地址子模塊包括M1個地址單元,其中前(M1-1)個地址單元中每個地址單元分別存儲一個數(shù)據(jù)子模塊的首物理地址,第M1個地址單元存儲下一個地址子模塊的首物理地址。
進(jìn)一步地,為了更好的實現(xiàn)對數(shù)據(jù)的訪問,防止數(shù)據(jù)或地址重疊對數(shù)據(jù)存儲、訪問和處理的干擾,在實際應(yīng)用中,需要保證N2個數(shù)據(jù)子模塊為彼此不相關(guān)的離散數(shù)據(jù)子模塊,每個數(shù)據(jù)子模塊內(nèi)部具有連續(xù)地址。N1個地址子模塊為彼此不相關(guān)的離散數(shù)據(jù)子模塊,每個地址子模塊內(nèi)部具有連續(xù)地址。以上所述離散指各個數(shù)據(jù)子模塊以及各個地址子模塊之間沒有重疊或連續(xù)的地址。
進(jìn)一步地,所述第N1個地址子模塊的第M1個地址單元存儲第1個地址子模塊的首物理地址,這樣可以形成一個數(shù)據(jù)鏈表,從而可以實現(xiàn)從任意一個地址子模塊開始進(jìn)行數(shù)據(jù)讀取,到最終讀取完所有地址模塊的地址信息。
以上所述數(shù)據(jù)子模塊的個數(shù)N2由實際需要進(jìn)行存儲或處理的數(shù)據(jù)量以及每個數(shù)據(jù)子模塊的存儲量決定,需要保證數(shù)據(jù)子模塊的個數(shù)N2與每個數(shù)據(jù)子模塊的存儲量的乘積大于等于實際需要進(jìn)行存儲或處理的數(shù)據(jù)量。
基于上述的數(shù)據(jù)存儲結(jié)構(gòu),本發(fā)明進(jìn)一步提出一種遙感衛(wèi)星數(shù)據(jù)存儲系統(tǒng),系統(tǒng)框圖如圖2所示,從圖2可知,本發(fā)明中的遙感衛(wèi)星數(shù)據(jù)存儲系統(tǒng)包括數(shù)據(jù)接收單元、數(shù)據(jù)上傳單元和用戶接口單元;
其中數(shù)據(jù)接收單元用于接收來自前端傳輸?shù)臄?shù)據(jù);在實際應(yīng)用中,上述的數(shù)據(jù)接收單元優(yōu)選為RapidIO數(shù)據(jù)接收單元,所述RapidIO數(shù)據(jù)接收單元用于接收來自前端采用Rapidio協(xié)議進(jìn)行傳輸?shù)臄?shù)據(jù),由于RapidIO協(xié)議架構(gòu)層次更為簡單(包括物理層、傳輸層、邏輯層),因此相較于采用TCP/IP協(xié)議,采用RapidIO協(xié)議時數(shù)據(jù)傳輸延時非常低可忽略不計;并且該協(xié)議簡單、流控機(jī)制及軟件復(fù)雜度低,使得糾錯重傳機(jī)制乃至整個協(xié)議棧易于采用硬件實現(xiàn),不會對處理器帶來開銷;此外,采用該協(xié)議還存在以下優(yōu)點:高效率、低系統(tǒng)成本,支持點對點或是點對多點的通信,支持DMA操作,支持消息傳遞模式交換數(shù)據(jù),支持分散處理和多主控系統(tǒng),支持多種拓樸結(jié)構(gòu)。
數(shù)據(jù)上傳單元用于接收來自數(shù)據(jù)接收單元的輸出數(shù)據(jù),并將數(shù)據(jù)上傳至用戶指定內(nèi)存;
進(jìn)一步地,上述數(shù)據(jù)上傳單元優(yōu)選為PCIE數(shù)據(jù)上傳單元,所述PCIE數(shù)據(jù)上傳單元接收來自數(shù)據(jù)接收單元的輸出數(shù)據(jù),并將數(shù)據(jù)打包成PCIE協(xié)議格式上傳至用戶指定內(nèi)存。由于采用PCIE協(xié)議,使得接收數(shù)據(jù)存儲到內(nèi)存時無需處理器的干預(yù),并且利用PCIE協(xié)議傳輸數(shù)據(jù)是使用實際物理地址,因此傳輸延時非常低。另外,PCIE協(xié)議本身具有許多優(yōu)點:協(xié)議架構(gòu)簡單、易于硬件實現(xiàn)、打包效率高、傳輸延時低等。
進(jìn)一步地,為了進(jìn)一步提高數(shù)據(jù)讀取的速度,數(shù)據(jù)上傳單元采用實時DMA技術(shù)將數(shù)據(jù)上傳至用戶指定內(nèi)存。
用戶接口單元在遙感衛(wèi)星上位機(jī)中開辟數(shù)據(jù)存儲結(jié)構(gòu),實現(xiàn)對數(shù)據(jù)上傳單元上傳數(shù)據(jù)的管理,所述數(shù)據(jù)存儲結(jié)構(gòu)為任一上述的數(shù)據(jù)存儲結(jié)構(gòu)。
具體實施例
在上位機(jī)開辟兩種離散內(nèi)存模塊,分別用于存儲數(shù)據(jù)模塊和地址模塊。數(shù)據(jù)模塊中有N2個大小為4KB,不相關(guān)的離散地址,但4KB內(nèi)是連續(xù)的。地址模塊是有n/512個大小為2056byte(64位的地址,257*8byte),不相關(guān)的離散地址,但需要說明的是2056byte內(nèi)地址是連續(xù)的。每個地址模塊存儲257個地址單元,其中前256單元為存儲數(shù)據(jù)模塊每4KB的首物理地址,第257個是下一個地址模塊的首物理地址,第n/512個地址的第257存儲單元為第一個地址模塊的首物理地址。這樣就形成一個地址鏈表。
FPGA(Field-Programmable Gate Array,現(xiàn)場可編輯門陣列)程序根據(jù)下發(fā)的地址模塊中的首物理地址,每次讀取257個地址(即每個地址模塊的大小),當(dāng)256個地址用完,再根據(jù)第257個地址的內(nèi)容,讀取下一個地址模塊中的內(nèi)容,如此反復(fù)。
本實施例中的RapidIO數(shù)據(jù)接收單元,主要功能為接收來自前端采用Rapidio協(xié)議進(jìn)行高速傳輸?shù)臄?shù)據(jù);該部分的接口為1個4XRapidio接口,物理形式為QSFP(Quad Small Form-factor Pluggable,四通道電信號轉(zhuǎn)換為光信號接口)。該部分由數(shù)據(jù)接收主控模塊、接收緩存控制模塊、Rapdio協(xié)議轉(zhuǎn)換模塊組成。
該單元的處理流程如圖3所示,具體為:首先對RapidIO數(shù)據(jù)接收單元進(jìn)行初始化;完成后向前端數(shù)據(jù)源發(fā)送復(fù)位指令包,并等待反饋的復(fù)位指令響應(yīng)包;當(dāng)接收到復(fù)位指令響應(yīng)包后向數(shù)據(jù)源發(fā)送請求數(shù)據(jù)響應(yīng)包;然后等待接收響應(yīng)包,并對接收到的響應(yīng)包進(jìn)行識別,判斷該響應(yīng)包為有數(shù)據(jù)響應(yīng)還是無數(shù)據(jù)響應(yīng),如果為有數(shù)據(jù)響應(yīng),則等待前端數(shù)據(jù)源發(fā)送過來的數(shù)據(jù),如果為無數(shù)據(jù)響應(yīng),開始下次請求過程或結(jié)束。接收到數(shù)據(jù)后并一直等待判斷是否為請求時的數(shù)據(jù)量大小,滿足要求開始下次傳輸或結(jié)束。
本實施例中的PCIE數(shù)據(jù)上傳單元,主要功能為接收RapidIO數(shù)據(jù)接收單元輸出的數(shù)據(jù),并將數(shù)據(jù)打包成PCIE協(xié)議格式,按著初始化配置的參數(shù)使用DMA自動上傳到用戶指定的內(nèi)存中。該部分由PCIE傳輸主控、地址控制、數(shù)據(jù)緩存控制、PCIE協(xié)議轉(zhuǎn)換組成。
該單元的處理流程如圖4所示,具體為:首先接收來自上位機(jī)下發(fā)的復(fù)位信號,并對PCIE板卡進(jìn)行復(fù)位;接收來自上位機(jī)配置的寄存器參數(shù),并按照相應(yīng)變量進(jìn)行配置;讀取上位機(jī)建立的地址FIFO(First Input First Output,先進(jìn)先出)中的數(shù)據(jù),并判斷數(shù)據(jù)FIFO中是否有數(shù)據(jù),如果有則將數(shù)據(jù)傳輸?shù)降刂稦IFO中數(shù)據(jù)所指示的物理首地址中。
本實施例中的用戶接口單元,主要功能為管理上位機(jī)中開辟指定大小(大小可調(diào)節(jié),且無上限)的內(nèi)存,實現(xiàn)對硬件程序的配置管理和對PCIE數(shù)據(jù)上傳單元上傳的數(shù)據(jù)管理。該部分由數(shù)據(jù)緩存管理、地址緩存管理、板卡初始化、硬件狀態(tài)監(jiān)測組成。
該單元的處理流程如圖5所示,具體為:首先初始化內(nèi)存生成所需要的離散內(nèi)存數(shù)據(jù)結(jié)構(gòu)和復(fù)位指定的硬件,并下發(fā)初始化配置參數(shù)給硬件;初始化完成后開始啟動數(shù)據(jù)上傳流程,數(shù)據(jù)上傳到緩沖區(qū)后判斷是否滿足輸出標(biāo)準(zhǔn),如果滿足,則以數(shù)據(jù)幀為單位復(fù)制數(shù)據(jù)到指定的內(nèi)存中,等待用戶進(jìn)一步處理。
本發(fā)明說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員的公知技術(shù)。
以上通過具體的和優(yōu)選的實施例詳細(xì)的描述了本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)該明白,本發(fā)明并不局限于以上所述實施例,凡在本發(fā)明的精神和原則之內(nèi),所作任何修改、等同替換等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。