杜 斐,何嘉文,王宣明,蔡葉芳,田 澤
(航空工業西安航空計算技術研究所,陜西 西安 710068)
隨著嵌入式技術的不斷發展,HMPU逐漸廣泛應用于高性能計算領域。異構多核處理器,即具有兩個或以上處理器內核的處理器,因其計算效率高,且可針對不同應用調整結構,其應用相當廣泛。在具體應用中,多核處理器的不同處理器核之間需要進行大量的、頻繁的數據交換,因此,處理器核間的通信效率嚴重影響處理器的性能[1]。
目前通過調查研究,異構多核處理器芯片核間通信領域在國內外已經取得了一些顯著研究成果。例如,Mittal等提出了一種適應于多核處理器CPU-GPU核間通信機制,通過不同的通信通道合理地遷移任務來提高核間協作以及核間通信的效率;馮強等基于ARM與DSP雙核架構嵌入式數控系統,設計并實現了一種基于共享內存的核間通信機制,該通信機制優化了雙核間的數據傳輸延遲和數據傳輸量[1]。馮瑞青等[2]著重研究分析了ARM+DSP片上基于共享總線的Mailbox異構多核間通信機制,實現了ARM核上Linux與DSP核上Reworks之間的多核通信組件、DSP核的動態加載程序、協同計算等功能。國常義等針對目前通用的達芬奇異構多核處理器[3],研究了ARM核、DSP核以及視頻協作處理器之間的通信與協作機制,詳細闡述了核間互連結構與核間互連軟件的實現[4-6]。
基于上述研究,根據信息融合處理系統的發展需求,以先進SoC為技術手段,基于國內現有IP和自主工藝平臺,在單芯片上實現數據處理及信號處理、多數據接口、高精度采集以及異構多核可定制信息處理為目的,提出一種基于“CPU+DSP+FPGA+IO”結構的異構多核處理器芯片(heterogeneous multi-processor unit,HMPU)的設計方案。采用共享總線的Mailbox異構多核間通信機制,以滿足信號采樣處理、總線協議處理、數據處理及控制功能。
PLB總線是一種適用于處理器的高性能指令和數據總線,其功能為在主設備和從設備之間交換指令和數據。PLB總線的地址線為32位(支持擴展到64位總線),數據線為128位,每個PLB的主設備,其地址線、寫數據線、讀數據線、控制通路均獨立連接到PLB總線上,PLB總線通過PLB仲裁器根據設置的優先級進行不同主設備的仲裁[7-8]。
OPB總線用于連接低性能的設備,包括IIC、UART、GPIO等,其工作頻率、總線地址和數據寬度均低于PLB總線。DCR總線為直接訪問總線,其優先級高于PLB和OPB總線,用于關鍵外設的寄存器配置。數字信號處理IP核采用AXI master 兼容的接口作為數字信號處理器與片上其它設備交互的核心接口,AXI支持讀寫、請求地址和數據的完全獨立處理[9-10]。
異構多核處理器(以下簡稱HMPU)內部集成了嵌入式處理器、數字信號處理器以及多種常用接口,同時集成了現場可編程邏輯,可以完成信號采樣處理、總線協議處理、數據處理及控制功能,是一款具有豐富外設接口的高性能、低功耗異構多核處理器。
異構多核處理器體系架構框圖如圖1所示。其中嵌入式處理器負責I/O處理與管理,數據信號處理器負責數據解算處理,FPGA供用戶定制所需邏輯功能[11-12]。

圖1 異構多核處理器體系架構框圖
數字信號處理器主要負責計算功能,且僅能控制DPRAM與FPGA,數字信號處理器通過EMIF訪問SDRAM等外部存儲器,而嵌入式處理器負責設備管理。兩個處理器處于對等位置,數字信號處理器在嵌入式處理器不工作時可以控制所有設備,同時工作時需要預先設定設備分配以維護數據一致性。
此體系架構具有如下優點:
(a)地位對等的雙核。
除數字信號處理器IP內部集成的設備外,所有片上設備嵌入式處理器和數字信號處理器均可以訪問;
嵌入式處理器和數字信號處理器可以在對方關閉情況下獨立工作;
靈活性高,可以自由分配設備所有權。
(b)分工確定的主從式。
嵌入式處理器作為IO處理機管理CoreConnect設備,數字信號處理器主要負責運算;
數字信號處理器獨立工作時無法訪問CoreConnect設備;
保留了數字信號處理器到PLB通路,提供一定程度的靈活性。
2.2.1 郵箱中斷控制器(MailBox)
為解決多核處理器工作同步與容錯處理問題,引入互中斷、互復位、互調試機制。數字信號處理器與嵌入式處理器可以通過MailBox方式發起中斷對方操作,用于關鍵消息同步。數字信號處理器與嵌入式處理器周期喂狗,可檢測軟件運行情況,如軟件異常不能周期喂狗,則產生WDT中斷上報對方處理器。在某方處理器異常時,另一方處理器可對其復位。
MailBox模塊具有標準DCR總線從設備接口和AXI總線接口,可連接嵌入式處理器和數字信號處理器。該模塊的功能框圖如圖2所示。

圖2 Mailbox系統應用框圖
2.2.1.1 讀寫數據傳輸
各處理器核的通信使用MailBox,分為發送級MailBox和接收級MailBox,發送級MailBox可供發送主設備發送數據以便傳遞消息,而接收級MailBox則設計為方便接收主設備讀MailBox的相關寄存器來獲取數據。無論是寫操作還是讀操作,MailBox內部均有特定的讀寫數據控制模塊,控制內部發送寫操作還是讀操作。讀寫控制單元受FIFO當前數據空滿的影響。若此時FIFO為空,只能發出寫操作,不能發出讀操作,若此時FIFO為滿,只能發出讀操作,不能發出寫操作,否則均會導致錯誤并使主機暫停,等待處理此錯誤。
2.2.1.2 MailBox狀態功能
為獲取當前MailBox的運行狀態,設計者設計了一個查詢MailBox的機制,即設計一個寄存器,其包含了MailBox的接收和發送方向的FIFO狀態以及當前是否正在進行接收和發送操作。MailBox的接收和發送方向的FIFO狀態表明當前門限是否超出標準,當前是否正在進行接收和發送操作表明當前FIFO的空滿,以避免寫錯誤和讀錯誤。
2.2.1.3 發送與接收中斷門限功能設定
為避免MailBox超出門限,設計者設計了一套機制,即通過中斷將FIFO的內部信息反饋到使用者,并將FIFO信息加入MailBox特定信號。例如,當前發送操作時,FIFO之間的數據總數多余門限的要求,系統將發送門限中斷提醒使用者以避免錯誤。
2.2.1.4 中斷狀態功能
MailBox具有中斷請求功能,此設計包括兩類,即容錯中斷和郵箱中斷,其中容錯中斷包括看門狗中斷和錯誤狀態中斷,兩郵箱中斷包括發送和接收門限中斷。前兩種中斷是一種容錯機制,需對處理器進行相關矯正,而后兩種中斷則是郵箱中斷,表明FIFO的狀態。
2.2.1.5 中斷使能方式
MailBox對中斷請求的控制也有獨立的控制電路,該部分需要上層主設備根據具體使用情況配置中斷使能位,若使能位為開,則當滿足觸發條件時,會產生中斷請求,提醒上層主設備處理相關情況。
2.2.1.6 看門狗定時功能設定
為防止軟件鎖死情況的發生,MailBox設計了看門狗中斷,即檢測處理器是否長時間處于等待響應的狀態,若等待時間超過主設備設置的時間,即會產生看門狗中斷,此時主機端必須復位處理器方可使處理器恢復正常工作。
2.2.1.7 復位控制功能
MailBox設有通信時的容錯機制。該機制由看門狗定時器觸發對方主機中斷,對方主機會采取相應措施來恢復該錯誤,這種恢復機制主要是通過對方主機配置軟件向MailBox發出控制指令,而MailBox中設有對主機核復位的功能,該功能可以復位軟件執行過程以達到糾正異常的情況。
2.2.2 數據共享區(DPRAM)
數據共享區采用雙端口靜態隨機存儲器(DPRAM)實現,作為嵌入式處理器和數字信號處理器直接共享資源。DPRAM還提供了信號量機制來支持對共享資源的仲裁。
從整體架構分析,DPRAM的接口一般為mem讀寫接口,而不是處理器需要的PLB總線接口和AXI總線接口,因此必須在DPRAM的兩個讀寫接口外分別添加時序轉換接口(可根據實際應用在以下接口中選擇兩個),包括PLB-DPRAM接口、AXI-DPRAM接口、DCR-DPRAM接口、硬線接口、低功耗接口申請接口。其中,PLB-DPRAM接口、AXI-DPRAM接口用于處理器核間的數據交互,而DCR-DPRAM接口、AXI-DPRAM接口用于處理器間的控制流交互。
為降低功耗,需要給控制邏輯增加相應的低功耗申請接口。上層設備可根據需要選擇是否在處理器空閑時進行休眠狀態,以減小功耗。
硬線接口的作用是通過外部接口設置重要寄存器的復位值,使用者可根據芯片的使用場景通過硬線對寄存器復位值進行重置。
DPRAM控制器是PLB和AXI總線的從設備,因此能夠接收PLB和AXI接口的各種類型的訪問操作。為增加通信效率,DPRAM應支持單拍、line和Burst操作,且應能夠響應PLB一側的非法操作。
2.2.3 FPGA可編程邏輯(FPGA)
FPGA為內嵌在異構多核處理器中的現場可編程邏輯門陣列,可以支持用戶根據設計需求對其進行編程從而實現所需求的電路功能,可支持嵌入式處理器和數字信號處理器對其內部資源訪問,支持PROM和軟件兩種方式進行FPGA的配置。FPGA包含FPGA處理器接口電路、FPGA配置電路及IP核。
其中FPGA處理器接口模塊主要提供嵌入式處理器和數字信號處理器訪問FPGA內部資源的接口,功能框圖如圖3所示。嵌入式處理器或數字信號處理器如需訪問FPGA內部資源,需首先向PLB/AXI仲裁邏輯發起訪問請求,等待授權后方能通過PLB/AXI到FPGA接口邏輯訪問到FPGA內部資源,訪問完成后需通知PLB/AXI仲裁邏輯解除占用[13-15]。

圖3 FPGA處理器接口模塊框圖
FPGA配置電路實現PROM和軟件方式來進行IP的配置,通過將應用指定的配置數據下載入內部配置存儲器的方法完成配置下載操作。
模塊級驗證是在計算機仿真環境中,借助于仿真工具,運行模塊級測試平臺和測試用例,向被測試模塊/IP注入測試激勵,以模擬模塊/IP的各種應用場景,達到預期的代碼覆蓋率和功能覆蓋率。
模塊級驗證的對象是異構多核處理器設計中用到的模塊/IP。在各模塊代碼設計完成后,首先是在計算機上進行基于各模塊功能的獨立虛擬驗證。參照各模塊的功能規范,根據對模塊功能的理解和可能的各種應用環境,編寫測試平臺和測試用例代碼來產生激勵,模擬各種應用環境來測試驗證各模塊的功能,確保各模塊功能的正確性。模塊級驗證,可檢查各個模塊在系統集成之前的功能是否正確,性能是否滿足設計的要求。根據各模塊特點,部分模塊無法在IP級進行仿真,需在系統集成后才能進行仿真驗證[16]。模塊/IP級仿真驗證平臺如圖4所示。

圖4 模塊/IP級仿真驗證平臺
異構多核處理器芯片虛擬仿真驗證平臺如圖5所示。虛擬原型驗證平臺的工作流程為,分別編寫嵌入式處理器平臺測試軟件與數字信號處理器平臺測試軟件,分別經過編譯連接后,生成存儲器映像文件到存儲器模型中,系統復位撤消后,處理器和DSP(數字信號處理器)分別從外部FLASH模型中讀取指令,之后控制整個虛擬驗證平臺。另外使用外部邏輯監控處理器的工作,或使用程序讀寫處理器的相關存儲,以判斷處理器的工作狀態正確與否。

圖5 異構多核處理器芯片虛擬仿真驗證平臺框圖
FPGA原型驗證,通過開發異構多核處理器的FPGA原型驗證板,將HMP的RTL級電路設計經EDA工具綜合、實現后下載到FPGA芯片中,測試程序準備好后,使用專用編程電纜將程序燒寫到FPGA驗證板上的FLASH器件上,之后上電后將復位信號設置足夠長復位時間后置為不復位,此時處理器將自動從FLASH地址32’hFFFFFFFC取出第一條指令,之后按照指令跳轉,直到測試完成。
FPGA驗證和虛擬平臺驗證兩者是相輔相成的,虛擬驗證是進行精細的驗證,FPGA則可模擬芯片實際使用環境,對芯片進行大數據量長時間的測試,兩者配合能夠盡可能地提高芯片驗證的覆蓋率,并且FPGA驗證平臺稍加改進,即可改為芯片應用驗證平臺,還能夠驗證配套軟件驅動的正確性[17-18]。
介紹了一種基于“CPU+DSP+FPGA+IO”結構的異構多核處理器芯片的設計方案,實現了信號采樣處理、總線協議處理、數據處理及控制功能。目前此芯片一次流片成功,通過對芯片的功能、性能測試以及系統應用驗證結果表明,該款芯片可以在單片SoC上實現多個系統的主要功能,且通過多數據接口、高精度采集以及異構多核可定制SoC靈活實現了新一代信息融合處理系統小型化、低功耗、高可靠性及國產化水平,進一步提高了對于環境適應性的要求,并可以廣泛推廣到其他新一代信息處理系統中。