杜 斐,何嘉文,王宣明,蔡葉芳,田 澤
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
隨著嵌入式技術(shù)的不斷發(fā)展,HMPU逐漸廣泛應(yīng)用于高性能計(jì)算領(lǐng)域。異構(gòu)多核處理器,即具有兩個(gè)或以上處理器內(nèi)核的處理器,因其計(jì)算效率高,且可針對(duì)不同應(yīng)用調(diào)整結(jié)構(gòu),其應(yīng)用相當(dāng)廣泛。在具體應(yīng)用中,多核處理器的不同處理器核之間需要進(jìn)行大量的、頻繁的數(shù)據(jù)交換,因此,處理器核間的通信效率嚴(yán)重影響處理器的性能[1]。
目前通過調(diào)查研究,異構(gòu)多核處理器芯片核間通信領(lǐng)域在國(guó)內(nèi)外已經(jīng)取得了一些顯著研究成果。例如,Mittal等提出了一種適應(yīng)于多核處理器CPU-GPU核間通信機(jī)制,通過不同的通信通道合理地遷移任務(wù)來提高核間協(xié)作以及核間通信的效率;馮強(qiáng)等基于ARM與DSP雙核架構(gòu)嵌入式數(shù)控系統(tǒng),設(shè)計(jì)并實(shí)現(xiàn)了一種基于共享內(nèi)存的核間通信機(jī)制,該通信機(jī)制優(yōu)化了雙核間的數(shù)據(jù)傳輸延遲和數(shù)據(jù)傳輸量[1]。馮瑞青等[2]著重研究分析了ARM+DSP片上基于共享總線的Mailbox異構(gòu)多核間通信機(jī)制,實(shí)現(xiàn)了ARM核上Linux與DSP核上Reworks之間的多核通信組件、DSP核的動(dòng)態(tài)加載程序、協(xié)同計(jì)算等功能。國(guó)常義等針對(duì)目前通用的達(dá)芬奇異構(gòu)多核處理器[3],研究了ARM核、DSP核以及視頻協(xié)作處理器之間的通信與協(xié)作機(jī)制,詳細(xì)闡述了核間互連結(jié)構(gòu)與核間互連軟件的實(shí)現(xiàn)[4-6]。
基于上述研究,根據(jù)信息融合處理系統(tǒng)的發(fā)展需求,以先進(jìn)SoC為技術(shù)手段,基于國(guó)內(nèi)現(xiàn)有IP和自主工藝平臺(tái),在單芯片上實(shí)現(xiàn)數(shù)據(jù)處理及信號(hào)處理、多數(shù)據(jù)接口、高精度采集以及異構(gòu)多核可定制信息處理為目的,提出一種基于“CPU+DSP+FPGA+IO”結(jié)構(gòu)的異構(gòu)多核處理器芯片(heterogeneous multi-processor unit,HMPU)的設(shè)計(jì)方案。采用共享總線的Mailbox異構(gòu)多核間通信機(jī)制,以滿足信號(hào)采樣處理、總線協(xié)議處理、數(shù)據(jù)處理及控制功能。
PLB總線是一種適用于處理器的高性能指令和數(shù)據(jù)總線,其功能為在主設(shè)備和從設(shè)備之間交換指令和數(shù)據(jù)。PLB總線的地址線為32位(支持?jǐn)U展到64位總線),數(shù)據(jù)線為128位,每個(gè)PLB的主設(shè)備,其地址線、寫數(shù)據(jù)線、讀數(shù)據(jù)線、控制通路均獨(dú)立連接到PLB總線上,PLB總線通過PLB仲裁器根據(jù)設(shè)置的優(yōu)先級(jí)進(jìn)行不同主設(shè)備的仲裁[7-8]。
OPB總線用于連接低性能的設(shè)備,包括IIC、UART、GPIO等,其工作頻率、總線地址和數(shù)據(jù)寬度均低于PLB總線。DCR總線為直接訪問總線,其優(yōu)先級(jí)高于PLB和OPB總線,用于關(guān)鍵外設(shè)的寄存器配置。數(shù)字信號(hào)處理IP核采用AXI master 兼容的接口作為數(shù)字信號(hào)處理器與片上其它設(shè)備交互的核心接口,AXI支持讀寫、請(qǐng)求地址和數(shù)據(jù)的完全獨(dú)立處理[9-10]。
異構(gòu)多核處理器(以下簡(jiǎn)稱HMPU)內(nèi)部集成了嵌入式處理器、數(shù)字信號(hào)處理器以及多種常用接口,同時(shí)集成了現(xiàn)場(chǎng)可編程邏輯,可以完成信號(hào)采樣處理、總線協(xié)議處理、數(shù)據(jù)處理及控制功能,是一款具有豐富外設(shè)接口的高性能、低功耗異構(gòu)多核處理器。
異構(gòu)多核處理器體系架構(gòu)框圖如圖1所示。其中嵌入式處理器負(fù)責(zé)I/O處理與管理,數(shù)據(jù)信號(hào)處理器負(fù)責(zé)數(shù)據(jù)解算處理,F(xiàn)PGA供用戶定制所需邏輯功能[11-12]。
圖1 異構(gòu)多核處理器體系架構(gòu)框圖
數(shù)字信號(hào)處理器主要負(fù)責(zé)計(jì)算功能,且僅能控制DPRAM與FPGA,數(shù)字信號(hào)處理器通過EMIF訪問SDRAM等外部存儲(chǔ)器,而嵌入式處理器負(fù)責(zé)設(shè)備管理。兩個(gè)處理器處于對(duì)等位置,數(shù)字信號(hào)處理器在嵌入式處理器不工作時(shí)可以控制所有設(shè)備,同時(shí)工作時(shí)需要預(yù)先設(shè)定設(shè)備分配以維護(hù)數(shù)據(jù)一致性。
此體系架構(gòu)具有如下優(yōu)點(diǎn):
(a)地位對(duì)等的雙核。
除數(shù)字信號(hào)處理器IP內(nèi)部集成的設(shè)備外,所有片上設(shè)備嵌入式處理器和數(shù)字信號(hào)處理器均可以訪問;
嵌入式處理器和數(shù)字信號(hào)處理器可以在對(duì)方關(guān)閉情況下獨(dú)立工作;
靈活性高,可以自由分配設(shè)備所有權(quán)。
(b)分工確定的主從式。
嵌入式處理器作為IO處理機(jī)管理CoreConnect設(shè)備,數(shù)字信號(hào)處理器主要負(fù)責(zé)運(yùn)算;
數(shù)字信號(hào)處理器獨(dú)立工作時(shí)無(wú)法訪問CoreConnect設(shè)備;
保留了數(shù)字信號(hào)處理器到PLB通路,提供一定程度的靈活性。
2.2.1 郵箱中斷控制器(MailBox)
為解決多核處理器工作同步與容錯(cuò)處理問題,引入互中斷、互復(fù)位、互調(diào)試機(jī)制。數(shù)字信號(hào)處理器與嵌入式處理器可以通過MailBox方式發(fā)起中斷對(duì)方操作,用于關(guān)鍵消息同步。數(shù)字信號(hào)處理器與嵌入式處理器周期喂狗,可檢測(cè)軟件運(yùn)行情況,如軟件異常不能周期喂狗,則產(chǎn)生WDT中斷上報(bào)對(duì)方處理器。在某方處理器異常時(shí),另一方處理器可對(duì)其復(fù)位。
MailBox模塊具有標(biāo)準(zhǔn)DCR總線從設(shè)備接口和AXI總線接口,可連接嵌入式處理器和數(shù)字信號(hào)處理器。該模塊的功能框圖如圖2所示。
圖2 Mailbox系統(tǒng)應(yīng)用框圖
2.2.1.1 讀寫數(shù)據(jù)傳輸
各處理器核的通信使用MailBox,分為發(fā)送級(jí)MailBox和接收級(jí)MailBox,發(fā)送級(jí)MailBox可供發(fā)送主設(shè)備發(fā)送數(shù)據(jù)以便傳遞消息,而接收級(jí)MailBox則設(shè)計(jì)為方便接收主設(shè)備讀MailBox的相關(guān)寄存器來獲取數(shù)據(jù)。無(wú)論是寫操作還是讀操作,MailBox內(nèi)部均有特定的讀寫數(shù)據(jù)控制模塊,控制內(nèi)部發(fā)送寫操作還是讀操作。讀寫控制單元受FIFO當(dāng)前數(shù)據(jù)空滿的影響。若此時(shí)FIFO為空,只能發(fā)出寫操作,不能發(fā)出讀操作,若此時(shí)FIFO為滿,只能發(fā)出讀操作,不能發(fā)出寫操作,否則均會(huì)導(dǎo)致錯(cuò)誤并使主機(jī)暫停,等待處理此錯(cuò)誤。
2.2.1.2 MailBox狀態(tài)功能
為獲取當(dāng)前MailBox的運(yùn)行狀態(tài),設(shè)計(jì)者設(shè)計(jì)了一個(gè)查詢MailBox的機(jī)制,即設(shè)計(jì)一個(gè)寄存器,其包含了MailBox的接收和發(fā)送方向的FIFO狀態(tài)以及當(dāng)前是否正在進(jìn)行接收和發(fā)送操作。MailBox的接收和發(fā)送方向的FIFO狀態(tài)表明當(dāng)前門限是否超出標(biāo)準(zhǔn),當(dāng)前是否正在進(jìn)行接收和發(fā)送操作表明當(dāng)前FIFO的空滿,以避免寫錯(cuò)誤和讀錯(cuò)誤。
2.2.1.3 發(fā)送與接收中斷門限功能設(shè)定
為避免MailBox超出門限,設(shè)計(jì)者設(shè)計(jì)了一套機(jī)制,即通過中斷將FIFO的內(nèi)部信息反饋到使用者,并將FIFO信息加入MailBox特定信號(hào)。例如,當(dāng)前發(fā)送操作時(shí),F(xiàn)IFO之間的數(shù)據(jù)總數(shù)多余門限的要求,系統(tǒng)將發(fā)送門限中斷提醒使用者以避免錯(cuò)誤。
2.2.1.4 中斷狀態(tài)功能
MailBox具有中斷請(qǐng)求功能,此設(shè)計(jì)包括兩類,即容錯(cuò)中斷和郵箱中斷,其中容錯(cuò)中斷包括看門狗中斷和錯(cuò)誤狀態(tài)中斷,兩郵箱中斷包括發(fā)送和接收門限中斷。前兩種中斷是一種容錯(cuò)機(jī)制,需對(duì)處理器進(jìn)行相關(guān)矯正,而后兩種中斷則是郵箱中斷,表明FIFO的狀態(tài)。
2.2.1.5 中斷使能方式
MailBox對(duì)中斷請(qǐng)求的控制也有獨(dú)立的控制電路,該部分需要上層主設(shè)備根據(jù)具體使用情況配置中斷使能位,若使能位為開,則當(dāng)滿足觸發(fā)條件時(shí),會(huì)產(chǎn)生中斷請(qǐng)求,提醒上層主設(shè)備處理相關(guān)情況。
2.2.1.6 看門狗定時(shí)功能設(shè)定
為防止軟件鎖死情況的發(fā)生,MailBox設(shè)計(jì)了看門狗中斷,即檢測(cè)處理器是否長(zhǎng)時(shí)間處于等待響應(yīng)的狀態(tài),若等待時(shí)間超過主設(shè)備設(shè)置的時(shí)間,即會(huì)產(chǎn)生看門狗中斷,此時(shí)主機(jī)端必須復(fù)位處理器方可使處理器恢復(fù)正常工作。
2.2.1.7 復(fù)位控制功能
MailBox設(shè)有通信時(shí)的容錯(cuò)機(jī)制。該機(jī)制由看門狗定時(shí)器觸發(fā)對(duì)方主機(jī)中斷,對(duì)方主機(jī)會(huì)采取相應(yīng)措施來恢復(fù)該錯(cuò)誤,這種恢復(fù)機(jī)制主要是通過對(duì)方主機(jī)配置軟件向MailBox發(fā)出控制指令,而MailBox中設(shè)有對(duì)主機(jī)核復(fù)位的功能,該功能可以復(fù)位軟件執(zhí)行過程以達(dá)到糾正異常的情況。
2.2.2 數(shù)據(jù)共享區(qū)(DPRAM)
數(shù)據(jù)共享區(qū)采用雙端口靜態(tài)隨機(jī)存儲(chǔ)器(DPRAM)實(shí)現(xiàn),作為嵌入式處理器和數(shù)字信號(hào)處理器直接共享資源。DPRAM還提供了信號(hào)量機(jī)制來支持對(duì)共享資源的仲裁。
從整體架構(gòu)分析,DPRAM的接口一般為mem讀寫接口,而不是處理器需要的PLB總線接口和AXI總線接口,因此必須在DPRAM的兩個(gè)讀寫接口外分別添加時(shí)序轉(zhuǎn)換接口(可根據(jù)實(shí)際應(yīng)用在以下接口中選擇兩個(gè)),包括PLB-DPRAM接口、AXI-DPRAM接口、DCR-DPRAM接口、硬線接口、低功耗接口申請(qǐng)接口。其中,PLB-DPRAM接口、AXI-DPRAM接口用于處理器核間的數(shù)據(jù)交互,而DCR-DPRAM接口、AXI-DPRAM接口用于處理器間的控制流交互。
為降低功耗,需要給控制邏輯增加相應(yīng)的低功耗申請(qǐng)接口。上層設(shè)備可根據(jù)需要選擇是否在處理器空閑時(shí)進(jìn)行休眠狀態(tài),以減小功耗。
硬線接口的作用是通過外部接口設(shè)置重要寄存器的復(fù)位值,使用者可根據(jù)芯片的使用場(chǎng)景通過硬線對(duì)寄存器復(fù)位值進(jìn)行重置。
DPRAM控制器是PLB和AXI總線的從設(shè)備,因此能夠接收PLB和AXI接口的各種類型的訪問操作。為增加通信效率,DPRAM應(yīng)支持單拍、line和Burst操作,且應(yīng)能夠響應(yīng)PLB一側(cè)的非法操作。
2.2.3 FPGA可編程邏輯(FPGA)
FPGA為內(nèi)嵌在異構(gòu)多核處理器中的現(xiàn)場(chǎng)可編程邏輯門陣列,可以支持用戶根據(jù)設(shè)計(jì)需求對(duì)其進(jìn)行編程從而實(shí)現(xiàn)所需求的電路功能,可支持嵌入式處理器和數(shù)字信號(hào)處理器對(duì)其內(nèi)部資源訪問,支持PROM和軟件兩種方式進(jìn)行FPGA的配置。FPGA包含F(xiàn)PGA處理器接口電路、FPGA配置電路及IP核。
其中FPGA處理器接口模塊主要提供嵌入式處理器和數(shù)字信號(hào)處理器訪問FPGA內(nèi)部資源的接口,功能框圖如圖3所示。嵌入式處理器或數(shù)字信號(hào)處理器如需訪問FPGA內(nèi)部資源,需首先向PLB/AXI仲裁邏輯發(fā)起訪問請(qǐng)求,等待授權(quán)后方能通過PLB/AXI到FPGA接口邏輯訪問到FPGA內(nèi)部資源,訪問完成后需通知PLB/AXI仲裁邏輯解除占用[13-15]。
圖3 FPGA處理器接口模塊框圖
FPGA配置電路實(shí)現(xiàn)PROM和軟件方式來進(jìn)行IP的配置,通過將應(yīng)用指定的配置數(shù)據(jù)下載入內(nèi)部配置存儲(chǔ)器的方法完成配置下載操作。
模塊級(jí)驗(yàn)證是在計(jì)算機(jī)仿真環(huán)境中,借助于仿真工具,運(yùn)行模塊級(jí)測(cè)試平臺(tái)和測(cè)試用例,向被測(cè)試模塊/IP注入測(cè)試激勵(lì),以模擬模塊/IP的各種應(yīng)用場(chǎng)景,達(dá)到預(yù)期的代碼覆蓋率和功能覆蓋率。
模塊級(jí)驗(yàn)證的對(duì)象是異構(gòu)多核處理器設(shè)計(jì)中用到的模塊/IP。在各模塊代碼設(shè)計(jì)完成后,首先是在計(jì)算機(jī)上進(jìn)行基于各模塊功能的獨(dú)立虛擬驗(yàn)證。參照各模塊的功能規(guī)范,根據(jù)對(duì)模塊功能的理解和可能的各種應(yīng)用環(huán)境,編寫測(cè)試平臺(tái)和測(cè)試用例代碼來產(chǎn)生激勵(lì),模擬各種應(yīng)用環(huán)境來測(cè)試驗(yàn)證各模塊的功能,確保各模塊功能的正確性。模塊級(jí)驗(yàn)證,可檢查各個(gè)模塊在系統(tǒng)集成之前的功能是否正確,性能是否滿足設(shè)計(jì)的要求。根據(jù)各模塊特點(diǎn),部分模塊無(wú)法在IP級(jí)進(jìn)行仿真,需在系統(tǒng)集成后才能進(jìn)行仿真驗(yàn)證[16]。模塊/IP級(jí)仿真驗(yàn)證平臺(tái)如圖4所示。
圖4 模塊/IP級(jí)仿真驗(yàn)證平臺(tái)
異構(gòu)多核處理器芯片虛擬仿真驗(yàn)證平臺(tái)如圖5所示。虛擬原型驗(yàn)證平臺(tái)的工作流程為,分別編寫嵌入式處理器平臺(tái)測(cè)試軟件與數(shù)字信號(hào)處理器平臺(tái)測(cè)試軟件,分別經(jīng)過編譯連接后,生成存儲(chǔ)器映像文件到存儲(chǔ)器模型中,系統(tǒng)復(fù)位撤消后,處理器和DSP(數(shù)字信號(hào)處理器)分別從外部FLASH模型中讀取指令,之后控制整個(gè)虛擬驗(yàn)證平臺(tái)。另外使用外部邏輯監(jiān)控處理器的工作,或使用程序讀寫處理器的相關(guān)存儲(chǔ),以判斷處理器的工作狀態(tài)正確與否。
圖5 異構(gòu)多核處理器芯片虛擬仿真驗(yàn)證平臺(tái)框圖
FPGA原型驗(yàn)證,通過開發(fā)異構(gòu)多核處理器的FPGA原型驗(yàn)證板,將HMP的RTL級(jí)電路設(shè)計(jì)經(jīng)EDA工具綜合、實(shí)現(xiàn)后下載到FPGA芯片中,測(cè)試程序準(zhǔn)備好后,使用專用編程電纜將程序燒寫到FPGA驗(yàn)證板上的FLASH器件上,之后上電后將復(fù)位信號(hào)設(shè)置足夠長(zhǎng)復(fù)位時(shí)間后置為不復(fù)位,此時(shí)處理器將自動(dòng)從FLASH地址32’hFFFFFFFC取出第一條指令,之后按照指令跳轉(zhuǎn),直到測(cè)試完成。
FPGA驗(yàn)證和虛擬平臺(tái)驗(yàn)證兩者是相輔相成的,虛擬驗(yàn)證是進(jìn)行精細(xì)的驗(yàn)證,F(xiàn)PGA則可模擬芯片實(shí)際使用環(huán)境,對(duì)芯片進(jìn)行大數(shù)據(jù)量長(zhǎng)時(shí)間的測(cè)試,兩者配合能夠盡可能地提高芯片驗(yàn)證的覆蓋率,并且FPGA驗(yàn)證平臺(tái)稍加改進(jìn),即可改為芯片應(yīng)用驗(yàn)證平臺(tái),還能夠驗(yàn)證配套軟件驅(qū)動(dòng)的正確性[17-18]。
介紹了一種基于“CPU+DSP+FPGA+IO”結(jié)構(gòu)的異構(gòu)多核處理器芯片的設(shè)計(jì)方案,實(shí)現(xiàn)了信號(hào)采樣處理、總線協(xié)議處理、數(shù)據(jù)處理及控制功能。目前此芯片一次流片成功,通過對(duì)芯片的功能、性能測(cè)試以及系統(tǒng)應(yīng)用驗(yàn)證結(jié)果表明,該款芯片可以在單片SoC上實(shí)現(xiàn)多個(gè)系統(tǒng)的主要功能,且通過多數(shù)據(jù)接口、高精度采集以及異構(gòu)多核可定制SoC靈活實(shí)現(xiàn)了新一代信息融合處理系統(tǒng)小型化、低功耗、高可靠性及國(guó)產(chǎn)化水平,進(jìn)一步提高了對(duì)于環(huán)境適應(yīng)性的要求,并可以廣泛推廣到其他新一代信息處理系統(tǒng)中。