本發(fā)明涉及一種星載計算機(jī)內(nèi)部處理器單元和IO單元之間的數(shù)據(jù)交換系統(tǒng)及方法,屬于星載計算機(jī)內(nèi)部處理器單元和IO單元之間的數(shù)據(jù)交換技術(shù)領(lǐng)域,適用于各種星載高性能計算場合,特別是即需要大數(shù)據(jù)量采集又需要高性能運算的場合。
背景技術(shù):
星載計算機(jī)內(nèi)部普遍采用處理器通過數(shù)據(jù)地址控制三總線直接訪問IO板的數(shù)據(jù)交換方式,如圖1所示,自定義三總線方式下CPU訪問外部IO時,CPU直接發(fā)出控制(讀或?qū)?信號以及相應(yīng)的地址或數(shù)據(jù)信號。上述三種信號必須維持一定的信號幅度和時間(可理解為滿足一定條件的波形),IO才能正確響應(yīng)CPU的讀寫操作。
如果IO速度比較慢,CPU在讀寫訪問時可插入一定的等待時間,使信號時序滿足IO的要求。但CPU插入的等待時間有一個上限。
目前星載計算機(jī)處理器的主頻在以較快速度提高,IO訪問受制于外設(shè)速度少有變化。處理器處理速度快,IO響應(yīng)速度慢,處理器又不能無限制的插入等待時間,造成處理器難以直接訪問IO。處理器或者降頻運行,或者通過一次長時間的握手等待完成一次IO訪問。如果繼續(xù)沿用三總線的結(jié)構(gòu),CPU的性能不能得到充分發(fā)揮。
技術(shù)實現(xiàn)要素:
本發(fā)明解決的技術(shù)問題為:克服現(xiàn)有技術(shù)不足,提供一種星載計算機(jī)內(nèi)部處理器單元和IO單元之間的數(shù)據(jù)交換系統(tǒng)及方法,即提供一種設(shè)計簡單、靈活通用的星載計算機(jī)處理器單元和IO之間的數(shù)據(jù)交換方法,解決現(xiàn)有的高速處理器難以直接訪問慢速IO的問題,充分發(fā)揮處理器的性能。
本發(fā)明的技術(shù)解決方案為:一種星載計算機(jī)內(nèi)部處理器單元和IO單元之間的數(shù)據(jù)交換系統(tǒng),其特征在于:包括CPU、總線控制單元、時序控制單元、SRAM、SpaceWire控制器、IO單元;
SpaceWire控制器包括主機(jī)總線接口(HOCI)、SpaceWire接口和存儲器訪問接口(COMI);
CPU具有本地總線LOCAL BUS;
主機(jī)總線接口(HOCI)用于實現(xiàn)CPU和SpaceWire控制器的互聯(lián),Spacewire控制器通過HOCI接口掛接在CPU的本地總線LOCAL BUS上,CPU通過HOCI接口可直接訪問SpaceWire控制器;
SpaceWire控制器通過SpaceWire接口連接IO單元,IO單元用于實現(xiàn)SpaceWire控制器和外設(shè)的橋接功能;
SpaceWire控制器通過COMI接口訪問本地緩存SRAM;
CPU設(shè)置COMI需要數(shù)據(jù)讀寫的接收起始地址、接收結(jié)束地址、發(fā)送起始地址、發(fā)送結(jié)束地址;建立COMI需要數(shù)據(jù)讀寫的發(fā)送結(jié)束地址與接收起始地址、接收結(jié)束地址、發(fā)送起始地址之間的映射關(guān)系;CPU對COMI口上述功能的設(shè)置通過直接操作HOCI口實現(xiàn);
SRAM中設(shè)置多個數(shù)據(jù)存儲單元,每個存儲單元設(shè)置一個地址,當(dāng)COMI要從SRAM中讀取數(shù)據(jù)時,COMI根據(jù)設(shè)定的需要讀取的數(shù)據(jù)存儲單元的發(fā)送起始地址和發(fā)送結(jié)束地址從SRAM中自動順序讀取數(shù)據(jù);當(dāng)COMI要對SRAM中寫入數(shù)據(jù)時,COMI根據(jù)設(shè)定的需要接收的數(shù)據(jù)存儲單元的接收起始地址和接收結(jié)束地址向SRAM中自動順序?qū)懭霐?shù)據(jù);
CPU包括通用輸入輸出接口GPIO,在通用輸入輸出接口GPIO為高電平時,通用輸入輸出接口GPIO給時序控制單元高電平信號,時序控制單元在收到高電平信號后,進(jìn)行電平轉(zhuǎn)換得到低電平,給總線控制單元輸出低電平信號,總線控制單元在接收到時序控制單元發(fā)送的低電平信號時,能夠?qū)–PU與SRAM之間的總線通信,CPU能夠訪問SRAM,即向SRAM寫入數(shù)據(jù),并將數(shù)據(jù)存在COMI需要寫入的數(shù)據(jù)存儲單元的發(fā)送起始地址和發(fā)送結(jié)束地址之間的數(shù)據(jù)存儲單元內(nèi),且禁止SpaceWire控制器訪問SRAM;CPU寫入的數(shù)據(jù)分為兩種類型,通過數(shù)據(jù)前帶有的指令區(qū)分為寫指令和讀指令,寫指令將寫指令后的數(shù)據(jù)發(fā)送至外部,讀指令將數(shù)據(jù)從外部讀回;
在通用輸入輸出接口GPIO置為低電平時,通用輸入輸出接口GPIO給時序控制單元低電平信號,時序控制單元在收到低電平信號后,進(jìn)行電平轉(zhuǎn)換得到高電平,給總線控制單元輸出高電平信號,總線控制單元在接收到時序控制單元發(fā)送的高電平信號時,能夠斷開CPU與SRAM之間的總線通信,同時允許SpaceWire控制器訪問SRAM;
然后將通用輸入輸出接口GPIO為低電平,設(shè)置COMI的發(fā)送結(jié)束地址,根據(jù)COMI需要數(shù)據(jù)讀寫的發(fā)送結(jié)束地址,SpaceWire控制器能夠自動從SRAM中的發(fā)送起始地址的數(shù)據(jù)存儲單元開始讀取數(shù)據(jù),到發(fā)送結(jié)束地址結(jié)束數(shù)據(jù)讀取,并將讀取的數(shù)據(jù)通過SapceWire接口發(fā)送給IO單元,完成數(shù)據(jù)發(fā)送;當(dāng)輸入輸出接口GPIO為低電平時,SpaceWire控制器通過SpaceWire接口收到的數(shù)據(jù)存儲到SRAM中從接收起始地址到接收結(jié)束地址對應(yīng)的數(shù)據(jù)存儲單元中,完成數(shù)據(jù)接收;
當(dāng)完成數(shù)據(jù)發(fā)送和數(shù)據(jù)輸出后,SpaceWire控制器向時序控制單元輸出一個負(fù)脈沖信號,時序控制單元在收到SpaceWire控制器發(fā)送的負(fù)脈沖信號后,向總線控制單元發(fā)送低電平信號,總線控制單元在接收到時序控制單元發(fā)送的低電平信號時,能夠?qū)–PU與SRAM之間的總線通信,同時禁止SpaceWire控制器訪問SRAM;
CPU每隔固定時間查詢SpaceWire控制器的狀態(tài),當(dāng)SpaceWire控制器完成數(shù)據(jù)發(fā)送和數(shù)據(jù)接收,通用輸入輸出接口GPIO置為高電平,數(shù)據(jù)CPU從接收起始地址到接收結(jié)束地址對應(yīng)的數(shù)據(jù)存儲單元中順序讀取數(shù)據(jù);
IO單元將SpaceWire控制器通過SpaceWire鏈路發(fā)送的帶有寫指令的數(shù)據(jù)發(fā)送至外設(shè);
SpaceWire控制器向IO單元發(fā)送讀指令,IO單元接收到讀指令后,將外部數(shù)據(jù)讀入,通過SpaceWire鏈路回送至SpaceWire控制器。
IO接口接收SpaceWire控制器發(fā)送來的數(shù)據(jù),將其轉(zhuǎn)換為IO的本地總線(LOCAL BUS),進(jìn)行對應(yīng)的讀寫操作。
IO接口將IO接收到帶有寫指令的數(shù)據(jù)發(fā)送到外部;
IO接口接收到帶有讀指令,將外部數(shù)據(jù)讀入,通過SpaceWire鏈路回送至SpaceWire控制器。
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于:
(1)本發(fā)明規(guī)避慢速IO對處理器運行速度的影響,充分發(fā)揮處理器性能;
(2)本發(fā)明取消了產(chǎn)品內(nèi)部單板之間的自定義三總線設(shè)計,有利于單板的標(biāo)準(zhǔn)化設(shè)計;
(3)本發(fā)明避免應(yīng)用軟件頻繁的IO訪問操作,有利于軟件編程實現(xiàn)。
附圖說明
圖1為目前星載計算機(jī)內(nèi)部普遍采用處理器通過數(shù)據(jù)地址控制三總線直接訪問IO板的數(shù)據(jù)交換方式的系統(tǒng)圖;
圖2為本發(fā)明的整體原理框圖;
圖3為圖2中虛線框部分的進(jìn)一步說明;
圖4的本發(fā)明處理器和IO數(shù)據(jù)交互圖,(a)為處理器寫,(b)為SpaceWire發(fā)送,(c)為數(shù)據(jù)回送。
具體實施方式
本發(fā)明的基本思路為:一種星載計算機(jī)內(nèi)部處理器單元和IO單元之間的數(shù)據(jù)交換系統(tǒng)及方法,設(shè)計了一個具有自主執(zhí)行IO訪問指令能力的控制器,CPU可以直接訪問IO控制器也可以通過一個高速存儲器和IO控制器實現(xiàn)數(shù)據(jù)交互。處理器可將需要IO控制器執(zhí)行的指令預(yù)存至高速存儲器中,然后由IO控制器自動讀取存儲器指令并執(zhí)行相應(yīng)操作,操作完畢后等待處理器的下一步指令,本發(fā)明效果顯著,規(guī)避了慢速IO對處理器運行速度的影響,充分發(fā)揮處理器性能;取消了產(chǎn)品內(nèi)部單板之間的自定義三總線設(shè)計,有利于單板的標(biāo)準(zhǔn)化設(shè)計;避免應(yīng)用軟件頻繁的IO訪問操作,有利于軟件編程實現(xiàn)。
下面結(jié)合附圖和具體實施例對本發(fā)明做進(jìn)一步詳細(xì)描述,
如圖3所示,CPU可選用任意的高速處理器,本發(fā)明選用Atmel公司生產(chǎn)AT697F。SpaceWire控制器選用BM4802,選用BM4802基于兩方面考慮:一是其本身支持指定發(fā)送起始地址、發(fā)送終止地址后的塊數(shù)據(jù)傳輸功能,可以外接大容量SRAM作為數(shù)據(jù)存儲單元;二是BM4802可被高速處理器的訪問,不限制處理器的運行速度。
總線控制單元和時序控制單元使用分立器件搭建,主要利用CPU的一個GPIO口和BM4802的發(fā)送標(biāo)志COCI和COCO等實現(xiàn),通過上述電路,BM4802和CPU可共享使用一片SRAM,實現(xiàn)兩者之間數(shù)據(jù)交換。
BM4802對外通過LVDS接口芯片可輸出三路SpaceWire,每路SpaceWire連接一個IO單元,即整個系統(tǒng)可連接三個IO單元。如圖2所示,IO單元可將通過SpaceWire傳送過來的信息轉(zhuǎn)化為IO單元內(nèi)部的本地總線,此處的IO本地總線可以匹配訪問慢速的IO外設(shè)。本發(fā)明IO單元采用FPGA(ACTEL公司A54SX72A)實現(xiàn),實際應(yīng)用中也可采用智能處理單元實現(xiàn)。
以處理器從IO讀取數(shù)據(jù)為例,可分為以下三步:
a)處理器發(fā)出指令
b)IO單元執(zhí)行指令采數(shù)并搬數(shù)
c)處理器讀取數(shù)據(jù)
各步的信息流如圖4(a)、圖4(b)、圖4(c)所示。
在實際使用中,處理器可將多條指令或待處理數(shù)據(jù)預(yù)存于“高速緩存”之中,然后通知IO控制器開始批量執(zhí)行指令,待指令執(zhí)行完畢后,處理器再從高速緩存中讀取數(shù)據(jù)。IO執(zhí)行指令的過程無需處理器進(jìn)行干預(yù),處理器此時可執(zhí)行其他任務(wù)。
假設(shè)處理器的工作頻率為f,IO訪問響應(yīng)時間為t1,處理器需從IO中連續(xù)獲取N字節(jié)數(shù)據(jù),但每次訪問只能獲取1字節(jié)。若f和t1不相匹配,如優(yōu)選f=100MHz,t1=1us,處理器無法直接訪問IO,除非處理器降低工作頻率同時插入足夠數(shù)量的等待時間,此時獲取N字節(jié)的總耗時為T1=N*t1。
采用本發(fā)明的設(shè)計之后,處理器單次訪問時間只取決于IO控制器和高速緩存。本發(fā)明要求IO控制器和高速緩存可被高速處理器直接訪問,假設(shè)響應(yīng)時間為t2(應(yīng)有t2<<t1)。此時處理器獲取N字節(jié)的總耗時約為T2=N*t2+Δt,Δt為處理器發(fā)出指令時間。
處理器在IO訪問上提高的效率為
由于t1>>t2,Δt通常較小在大數(shù)據(jù)量訪問時影響可忽略不計,處理器在IO訪問時效率可大為提高。如t1=1us,t2=100ns,IO訪問提高效率為90%。