何志敏 王佳 程利甫 何俊 李欣欣
(1上海航天電子技術(shù)研究所/八院智能計(jì)算技術(shù)重點(diǎn)實(shí)驗(yàn)室,上海,201109;2上海航天技術(shù)研究院,上海,201109)
近年來(lái)隨著集成電路制造水平的不斷提升,相同尺寸芯片內(nèi)部能夠集成的元器件數(shù)目按照指數(shù)速度持續(xù)增加,芯片的計(jì)算能力和低功耗水平不斷提高,基于SoC、SiP等先進(jìn)集成電路設(shè)計(jì)技術(shù)的微系統(tǒng)電路已經(jīng)得到廣泛應(yīng)用[1]。
由于宇航領(lǐng)域型號(hào)任務(wù)的發(fā)展需要,星載信息處理系統(tǒng)逐漸呈現(xiàn)出復(fù)雜化、實(shí)時(shí)化、大數(shù)據(jù)化等特點(diǎn),從而對(duì)星載信息系統(tǒng)的小型化、輕量化、高可靠、高性能提出了發(fā)展需求。傳統(tǒng)組裝方案下,星載電子產(chǎn)品的功能密度與組裝密度已基本達(dá)到極限,而新一代宇航型號(hào)所需的星載信息系統(tǒng)產(chǎn)品,不僅亟需處理性能的提升,還對(duì)體積、重量和功耗的減小提出了新挑戰(zhàn)[2]。
星載信息系統(tǒng)微系統(tǒng)電路利用大規(guī)模集成電路設(shè)計(jì)技術(shù),把計(jì)算機(jī)的主要功能集成到一塊芯片上,從而大幅提升系統(tǒng)的性能和集成度。目前微系統(tǒng)技術(shù)已在民用行業(yè)得到廣泛應(yīng)用。在航天領(lǐng)域星載信息系統(tǒng)中,使用微系統(tǒng)技術(shù)可滿足新一代航天器高性能、一體化的要求,是提升星載信息系統(tǒng)性能的有效途徑,也是未來(lái)星載信息系統(tǒng)的發(fā)展方向[3],能夠滿足未來(lái)宇航領(lǐng)域型號(hào)對(duì)計(jì)算機(jī)在自主任務(wù)規(guī)劃、星務(wù)管理、平臺(tái)控制等方面的需求。
根據(jù)宇航任務(wù)應(yīng)用需求進(jìn)行面向星載信息系統(tǒng)的多核異構(gòu)微系統(tǒng)電路設(shè)計(jì),面向用戶需求場(chǎng)景和未來(lái)技術(shù)發(fā)展趨勢(shì),形成面向星載信息系統(tǒng)微系統(tǒng)硬件的整體設(shè)計(jì)方案。
筆者提出的微系統(tǒng)電路以RISC-V指令集雙核處理器和大規(guī)模國(guó)產(chǎn)FPGA為主控核心,此外還包括硬件系統(tǒng)必需的相關(guān)外設(shè)輔助模塊、多層次總線 (系統(tǒng)總線、數(shù)據(jù)總線和配置總線和總線橋接)、存儲(chǔ)器接口 (數(shù)據(jù)存儲(chǔ)器、配置存儲(chǔ)器)等。星載信息系統(tǒng)微系統(tǒng)電路組成如圖1所示。
圖1 星載信息系統(tǒng)微系統(tǒng)電路組成框圖
采用基于RISC-V指令集的雙核處理器作為計(jì)算機(jī)控制核心,以滿足宇航任務(wù)對(duì)于星載信息系統(tǒng)微系統(tǒng)電路高處理性能的應(yīng)用需求。RISC-V指令集的開(kāi)放、可擴(kuò)展特性與航天領(lǐng)域?qū)π巧嫌?jì)算架構(gòu)自主可控、高性能、高可靠的需求高度契合,其軟件和硬件的生態(tài)環(huán)境已經(jīng)可以支持芯片和整個(gè)應(yīng)用體系的開(kāi)發(fā)。RISC-V摒除了以往指令集為了商業(yè)兼容而作的種種妥協(xié),作為一款開(kāi)源指令集,它沒(méi)有專利問(wèn)題的限制且高度可定制[4]。
微系統(tǒng)電路集成一片全國(guó)產(chǎn)的BQ5VSX95T型號(hào)大規(guī)模FPGA作為計(jì)算機(jī)處理核心。該FPGA最高系統(tǒng)工作頻率可達(dá)450MHz,內(nèi)嵌時(shí)鐘管理模塊、單塊36Kbits的BRAM、可編程FIFO邏輯與糾檢錯(cuò)電路。此外,F(xiàn)PGA上還內(nèi)置一塊支持補(bǔ)碼乘法運(yùn)算的DSP 48E核、一路PCIe總線收發(fā)器、16路RapidIO接口等豐富外設(shè)擴(kuò)展資源,為整個(gè)微系統(tǒng)電路提供了擴(kuò)展途徑。
為滿足星載信息系統(tǒng)實(shí)際工作需求,微系統(tǒng)電路主要提供外設(shè)及配置資源,包括SATA3.0存儲(chǔ)接口、1路CAN總線、1路1553B總線接口、2路PCIe高速傳輸總線、2路RapidIO高速串行總線等。
此外,微系統(tǒng)電路還包括一些通用外部設(shè)備,如中斷控制器、定時(shí)器、UART控制器、PLL鎖相環(huán)、1個(gè)IEEE 1149.1邊界掃描控制器(JTAG)、可編程GPIO單元等,以構(gòu)建完整的星載信息系統(tǒng)微系統(tǒng)功能[5]。
為了支持微系統(tǒng)電路多個(gè)核心之間的互連,采用多總線結(jié)構(gòu)實(shí)現(xiàn)高帶寬、低延時(shí)的數(shù)據(jù)傳輸和配置傳輸,包括系統(tǒng)總線、數(shù)據(jù)總線、配置總線和總線橋接單元,并與不同功能模塊、存儲(chǔ)模塊實(shí)行差異化的連接。通過(guò)差異化的連接,多總線結(jié)構(gòu)有效地區(qū)分了應(yīng)用數(shù)據(jù)、配置數(shù)據(jù)和系統(tǒng)控制數(shù)據(jù)的傳輸需求,消除了不同數(shù)據(jù)對(duì)總線結(jié)構(gòu)的搶占、等待等問(wèn)題。
星載信息系統(tǒng)微系統(tǒng)平臺(tái)包含了CPU處理器、大規(guī)模FPGA等執(zhí)行單元,在執(zhí)行時(shí)會(huì)產(chǎn)生大量的應(yīng)用數(shù)據(jù)、配置數(shù)據(jù)和系統(tǒng)數(shù)據(jù)的訪問(wèn)請(qǐng)求,并在時(shí)間和空間上相互交疊。為了匹配多個(gè)執(zhí)行單元的計(jì)算能力,滿足多層次存儲(chǔ)架構(gòu)的需求,需要多總線互連結(jié)構(gòu),緊密聯(lián)系處理器、FPGA及其他外設(shè)接口,同時(shí)進(jìn)行高性能設(shè)計(jì),在保證高傳輸帶寬的同時(shí)保證訪問(wèn)的延時(shí)需求。
微系統(tǒng)電路中涉及多個(gè)外設(shè)單元,其數(shù)據(jù)交互具有總量小,但對(duì)延遲較為敏感的特點(diǎn),因此需要專門的系統(tǒng)總線連接多外設(shè)和處理核。這部分充分借鑒現(xiàn)有高性能SoC總線設(shè)計(jì)方案,采用成熟的總線協(xié)議完成系統(tǒng)互連。另外,由于處理核會(huì)部分參與到控制密集型部分的運(yùn)算中,為了避免應(yīng)用數(shù)據(jù)與系統(tǒng)數(shù)據(jù)相沖突,大量占用系統(tǒng)數(shù)據(jù)的總線帶寬,采用應(yīng)用數(shù)據(jù)總線與系統(tǒng)數(shù)據(jù)總線分離的結(jié)構(gòu)。主處理器會(huì)根據(jù)數(shù)據(jù)的不同類型選擇不同的總線與其他功能單元進(jìn)行交互。
應(yīng)用數(shù)據(jù)總線連接了主處理器和FPGA,構(gòu)成了芯片在執(zhí)行任務(wù)時(shí)的主要數(shù)據(jù)交互通道。應(yīng)用數(shù)據(jù)交互情況復(fù)雜多變,尤其在當(dāng)前復(fù)雜應(yīng)用場(chǎng)景下,大數(shù)據(jù)量猝發(fā)現(xiàn)象較為突出,因此應(yīng)用數(shù)據(jù)總線的設(shè)計(jì)需要兼顧高帶寬和低延時(shí)兩個(gè)設(shè)計(jì)目標(biāo)。另外,由于應(yīng)用數(shù)據(jù)總線連接的執(zhí)行單元較多,總線事務(wù)占用時(shí)間較長(zhǎng),為了盡可能避免對(duì)總線控制權(quán)的競(jìng)爭(zhēng)沖突,將會(huì)在應(yīng)用數(shù)據(jù)總線上開(kāi)展進(jìn)一步的優(yōu)化設(shè)計(jì),包括仲裁機(jī)制的優(yōu)化、數(shù)據(jù)打包傳輸優(yōu)化、可搶占式的數(shù)據(jù)傳輸優(yōu)化以及專用和通用分工結(jié)構(gòu)優(yōu)化等。
在星載信息系統(tǒng)微系統(tǒng)芯片中,配置信息具有一定的數(shù)據(jù)量,因此需要合理地劃分應(yīng)用任務(wù),減少大塊配置信息在系統(tǒng)層面的重復(fù)傳輸。由于FPGA支持動(dòng)態(tài)配置加載,因此配置信息不僅僅在系統(tǒng)初始化時(shí)需要訪問(wèn),在運(yùn)行期也會(huì)產(chǎn)生隨機(jī)的訪問(wèn)請(qǐng)求。為了減少配置信息與應(yīng)用數(shù)據(jù)的沖突和總線競(jìng)爭(zhēng),專門設(shè)計(jì)配置總線的結(jié)構(gòu)。該結(jié)構(gòu)連接了FPGA以及片上的配置數(shù)據(jù)緩存,從而為運(yùn)行時(shí)的配置數(shù)據(jù)加載提供專門的高速訪問(wèn)通道,有利于發(fā)揮FPGA的動(dòng)態(tài)可重構(gòu)能力,提高處理性能。
FPGA作為應(yīng)用處理任務(wù)的主要執(zhí)行單元,在FPGA間設(shè)計(jì)了專門的高性能互連結(jié)構(gòu),以滿足FPGA和數(shù)據(jù)總線之間大數(shù)據(jù)量、低延時(shí)的數(shù)據(jù)交互需求。同時(shí),該結(jié)構(gòu)可以充分利用FPGA內(nèi)部大量的塊狀存儲(chǔ)器資源和分布式存儲(chǔ)資源作為輔助存儲(chǔ)空間,對(duì)存儲(chǔ)空間進(jìn)行擴(kuò)展;還可以借助FPGA靈活的可配置邏輯資源,對(duì)難以實(shí)現(xiàn)的復(fù)雜控制邏輯操作進(jìn)行有效的支持,從而增強(qiáng)處理能力,拓展應(yīng)用場(chǎng)景,提高處理性能。
星載信息系統(tǒng)微系統(tǒng)為包含處理器與FPGA的多核系統(tǒng),可通過(guò)多核處理器鎖步技術(shù)研究,實(shí)現(xiàn)核間不同任務(wù)的工作協(xié)同。
星載信息系統(tǒng)上的關(guān)鍵任務(wù)在不同核上鎖步運(yùn)行。利用冗余核提高容錯(cuò)能力,非關(guān)鍵任務(wù)各自在單核上獨(dú)立運(yùn)行,當(dāng)多個(gè)非關(guān)鍵任務(wù)同時(shí)運(yùn)行時(shí),實(shí)現(xiàn)線程級(jí)并行,從而提高性能;關(guān)鍵任務(wù)與非關(guān)鍵任務(wù)切換時(shí),處理器核間連接關(guān)系發(fā)生重構(gòu)。基于這種處理器架構(gòu),可以將星載信息系統(tǒng)上要執(zhí)行的任務(wù)進(jìn)行關(guān)鍵等級(jí)劃分。高關(guān)鍵等級(jí)的任務(wù)應(yīng)盡可能確保不出錯(cuò),需分配多個(gè)核進(jìn)行多核鎖步執(zhí)行;低關(guān)鍵等級(jí)任務(wù)可以各自在單核上并行執(zhí)行。
基于已在ARM Cortex處理器上取得成功的雙核鎖步技術(shù),在航天領(lǐng)域應(yīng)用上采取三核鎖步處理器架構(gòu)提升可靠性。三核鎖步處理器架構(gòu)在雙核鎖步系統(tǒng)上增加一個(gè)冗余核來(lái)達(dá)到提高容錯(cuò)能力的目的。鎖步運(yùn)行的三個(gè)核共享Cache,通過(guò)多數(shù)表決決定最終的輸出,這樣便使得在發(fā)生軟錯(cuò)誤需要進(jìn)行重同步的時(shí)候無(wú)需修正Cache。該處理器架構(gòu)使得單個(gè)核無(wú)需具備很好的容錯(cuò)能力,因此單核內(nèi)部微架構(gòu)實(shí)現(xiàn)可以采用商業(yè)上流行的技術(shù),相比于抗輻射加固處理技術(shù)擁有更好的性能和能效比。
為了滿足大數(shù)據(jù)的存儲(chǔ)需求以及低延時(shí)的數(shù)據(jù)訪問(wèn)需求,微系統(tǒng)電路采用不同類型存儲(chǔ)器和管理方式,構(gòu)成層次化的存儲(chǔ)空間設(shè)計(jì),主要包括外部存儲(chǔ)器、片上數(shù)據(jù)緩存以及各個(gè)處理設(shè)備內(nèi)部的局部緩存和共享存儲(chǔ)空間,如圖2所示。通過(guò)采用多層次數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),可以最大化地獲取存儲(chǔ)容量和訪問(wèn)延時(shí)之間的平衡。同時(shí),為了滿足CPU處理器與FPGA配置的需要,降低配置動(dòng)態(tài)加載的延時(shí),實(shí)現(xiàn)低開(kāi)銷的上下文切換,該架構(gòu)還添加了層次化的配置存儲(chǔ)空間,并與數(shù)據(jù)存儲(chǔ)空間共享外部存儲(chǔ)接口。
圖2 層次化存儲(chǔ)示意圖
通用信號(hào)處理和信息加密等運(yùn)算在處理數(shù)據(jù)的過(guò)程中,存在部分?jǐn)?shù)據(jù)處理的局部性很強(qiáng),而模塊級(jí)數(shù)據(jù)處理前后依賴相對(duì)較弱的情況,因此構(gòu)建分層多級(jí)緩存結(jié)構(gòu),為局部性數(shù)據(jù)提供低延時(shí)的數(shù)據(jù)訪問(wèn)結(jié)構(gòu),減少數(shù)據(jù)的反復(fù)搬移,有利于提高處理性能。另一方面,可以根據(jù)數(shù)據(jù)特點(diǎn)構(gòu)建數(shù)據(jù)的流傳輸機(jī)制,從而提高數(shù)據(jù)存取和傳輸?shù)耐掏侣省?/p>
為了達(dá)到這一目標(biāo),星載微系統(tǒng)電路采用多級(jí)緩存機(jī)制,主要由片上數(shù)據(jù)緩存空間、CPU處理器與FPGA的局部數(shù)據(jù)緩存空間和內(nèi)部的私有數(shù)據(jù)空間等部分組成。片上數(shù)據(jù)緩存空間臨近主存儲(chǔ)器,為CPU處理器與FPGA的共享數(shù)據(jù)提供動(dòng)態(tài)管理。同時(shí),這一集中式的片上數(shù)據(jù)緩存空間具有一定的容量,可以較好地利用數(shù)據(jù)的局部性提供較快的數(shù)據(jù)訪問(wèn)。CPU與FPGA內(nèi)部的局部數(shù)據(jù)緩存處于更高層次,可以為FPGA運(yùn)算產(chǎn)生的中間數(shù)據(jù)提供存儲(chǔ)空間。本分級(jí)緩存架構(gòu),在面向項(xiàng)目目標(biāo)應(yīng)用提供針對(duì)性設(shè)計(jì)的同時(shí),保證了靈活性,優(yōu)化了存儲(chǔ)傳輸通道。
由于空間復(fù)雜環(huán)境造成星載信息系統(tǒng)微系統(tǒng)電路故障的多樣性和不確定性,容錯(cuò)問(wèn)題不能在器件和電路層次得到完全解決,通過(guò)在較高層次的結(jié)構(gòu)設(shè)計(jì)進(jìn)一步提高微系統(tǒng)電路在宇航領(lǐng)域的運(yùn)行可靠性[6]。
考慮單粒子瞬態(tài)脈沖對(duì)MHz頻率工作下電路波形影響,需要在系統(tǒng)級(jí)對(duì)電路關(guān)鍵部分進(jìn)行冗余設(shè)計(jì)。根據(jù)已有的技術(shù)基礎(chǔ)對(duì)部分模塊進(jìn)行三模冗余設(shè)計(jì)。通過(guò)對(duì)模塊復(fù)制,并對(duì)三個(gè)模塊的輸入和輸出進(jìn)行選舉,檢測(cè)各模塊的工作是否正常。當(dāng)發(fā)現(xiàn)某個(gè)模塊發(fā)生錯(cuò)誤時(shí) (假定不存在兩個(gè)模塊同時(shí)發(fā)生錯(cuò)誤的可能性),在較短時(shí)間內(nèi)將正確的狀態(tài)導(dǎo)入發(fā)生錯(cuò)誤的模塊,從而使其錯(cuò)誤得到恢復(fù)。
控制流錯(cuò)誤是指程序指令的實(shí)際執(zhí)行流與正常執(zhí)行流的偏離。根據(jù)檢測(cè)錯(cuò)誤的不同實(shí)現(xiàn)方式,控制流錯(cuò)誤檢測(cè)可分為軟件實(shí)現(xiàn) (SWCFC)、硬件實(shí)現(xiàn) (HW-CFC)和軟硬件協(xié)同實(shí)現(xiàn) (SH-CFC)三類[7]。SW-CFC方法通過(guò)插入監(jiān)督代碼實(shí)現(xiàn),沒(méi)有硬件開(kāi)銷,可移植性好,但插入較多的代碼增加了存儲(chǔ)開(kāi)銷和性能開(kāi)銷,而且故障覆蓋率不高且插入的監(jiān)督代碼本身也可能發(fā)生控制流故障。HW-CFC方法一般采用協(xié)處理器實(shí)現(xiàn),但在協(xié)處理器中存儲(chǔ)整個(gè)程序的控制流信息需要相當(dāng)大的硬件資源。SH-CFC方法通過(guò)在程序代碼中嵌入冗余的預(yù)期控制流信息 (特征值),利用專門監(jiān)督硬件將實(shí)際控制流與預(yù)期控制流進(jìn)行比對(duì)來(lái)實(shí)現(xiàn)錯(cuò)誤檢測(cè)。它以較小的性能損失和少量的代碼開(kāi)銷實(shí)現(xiàn)很高的故障覆蓋率,并且硬件復(fù)雜性低。
當(dāng)檢測(cè)到無(wú)法糾正的數(shù)據(jù)或控制流發(fā)生錯(cuò)誤時(shí),需要將處理器狀態(tài)恢復(fù)到某一個(gè)特定的點(diǎn),處理器從該點(diǎn)出發(fā)繼續(xù)執(zhí)行,從而糾正發(fā)生的錯(cuò)誤。采用軟硬件協(xié)同的方法主動(dòng)保存檢查點(diǎn) (包括程序計(jì)數(shù)器、寄存器文件以及關(guān)鍵數(shù)據(jù)等)來(lái)進(jìn)行錯(cuò)誤恢復(fù),當(dāng)檢測(cè)到不可糾正的錯(cuò)誤時(shí),恢復(fù)以前保存的檢查點(diǎn)。而硬件僅需提供錯(cuò)誤通知機(jī)制,例如觸發(fā)中斷等。
針對(duì)星載信息系統(tǒng)輕小型化、高集成化、智能化的發(fā)展方向,本文提出了基于SOC/SIP先進(jìn)集成電路技術(shù)的微系統(tǒng)電路。根據(jù)宇航應(yīng)用需求進(jìn)行微系統(tǒng)電路總體設(shè)計(jì),并進(jìn)行多總線互連結(jié)構(gòu)、多核處理器鎖步技術(shù)、層次化存儲(chǔ)空間設(shè)計(jì)等微系統(tǒng)架構(gòu)與核間協(xié)作機(jī)制研究。最后,考慮空間復(fù)雜工作環(huán)境,提出星載信息系統(tǒng)微系統(tǒng)電路的結(jié)構(gòu)級(jí)抗輻照加固設(shè)計(jì)方案,滿足宇航應(yīng)用對(duì)可靠性的要求。