習偉 弓羽箭 韓輝 閆佳偉



摘? 要: 目前基于雙核CPU的AMP的混合多系統存在較大的缺陷和不足,首先會導致消耗不必要的資源與時間;其次,綁定硬件大多只局限于ARM;并且復雜度高、維護困難,對電力系統中其他運行應用程序的影響極大,會造成實時性任務抖動。該文提出一種適用于多核板卡的通用軟件平臺,其通過自動化配置工具對硬件資源進行配置,將混合多系統平臺抽象出ARCH與BSP層,通過心跳包監測其他CPU是否正常運行,通過cache劃分通用寄存器,設置消除核間廣播,可實現配置智能化和硬件平臺的多樣化,增加系統穩定性。
關鍵詞: 電力系統; 多核板卡; 軟件平臺; 混合多系統; 資源配置; 試驗驗證
中圖分類號: TN911?34? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼: A? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2020)22?0006?04
Abstract: There are major defects and disadvantages in AMP hybrid multi?systems based on dual?core CPU, which will lead to unnecessary consumption of resources and time. Most of the binding hardware is limited to ARM, and it has high complexity and difficult maintenance, which has a great impact on other running applications in the power system, and can cause real?time task jitter. A general software platform suitable for multi?core board is proposed, which configures hardware resources by means of the automated configuration tools, abstracts the ARCH and BSP layers out of the hybrid multi?system platform, and monitors whether other CPUs are running normally through heartbeat packets. The inter core broadcast is eliminated by setting the general register by cache partition, which can realize intelligent configuration and diversify hardware platforms, and increase system stability.
Keywords: power system; multi?core board; software platform; hybrid multi system; resource allocation; experimental verification
0? 引? 言
隨著嵌入式產品的更新升級,越來越多的功能被集中在同一塊硬件上,往往各個功能之間互相聯系,互相影響[1]。為了更好地處理實時性任務與非實時任務,混合多系統可以使任務分工更精細,靈活地適應不同情景[2]。目前基于雙核CPU的AMP的混合多系統存在較大的缺陷和不足[3?4],首先會導致消耗不必要的資源與時間;其次,綁定硬件大多只局限于ARM;并且復雜度高、維護困難,對電力系統中其他運行應用程序的影響極大,會造成實時性任務抖動。基于此,本文提出一種適用于多核板卡的通用軟件平臺,其通過自動化配置工具對硬件資源進行配置,將混合多系統平臺抽象出ARCH與BSP層,通過心跳包監測其他CPU是否正常運行,通過cache劃分通用寄存器,設置消除核間廣播,可實現配置智能化和硬件平臺的多樣化,增加系統穩定性。
1? 混合多系統的現狀以及缺陷分析
1.1? 混合多系統核間通信技術的現狀[3]
目前,一般的混合多系統為基于雙核CPU的移動頁面加速(Accelerated Mobile Pages,AMP)技術,大多使用Linux與實時多任務操作系統(Micro?Controller Operating System,[μCOS])搭配實現,即CPU0運行Linux,CPU1運行[μCOS]。
1.2? 存在的不足之處
這種方法有較大的缺陷和不足,首先是會消耗不必要的資源與時間,其需要提前在代碼階段劃分好內存資源,規定所運行的CPU,重新編譯后再進行加載工作。這些代碼往往分布在不同內核組件中,修改時費事費力。第二,需要綁定硬件,大多只局限于ARM,現有方法僅適用于ARM體系架構的雙核處理器,并且隨著功能復雜度的增加,硬件處理器的性能提升令硬件無法適用,例如X86架構的intel處理器,四核ARM Cortex A53的MPSOC處理器都無法適用。第三,在運行過程中無法判斷其他CPU核是否正常運行,容易造成對應用提供數據、功能錯誤,復雜度高,維護困難;另外,該混合系統對系統中其他運行應用程序影響極大,造成實時性任務抖動。
也就是說,如果其中一個CPU上的任務出現bug導致重啟運行,那么另一個CPU將也被重啟運行,這樣會導致正常運行的CPU被重啟;如果其中一個CPU上的任務進行大量的系統調用等進入內核特權態的操作,會對另一個CPU上任務的運行造成很大的抖動。
2? 平臺架構原理
本文提出一種適用于所有多核板卡的通用軟件平臺。該平臺不僅減少核間相互干擾,而且提供了很多直接可用的功能組件,方便程序員使用。圖1為本文所提出的適用于所有多核板卡的通用軟件平臺的架構圖。
該架構適用于所有多核板卡的通用軟件平臺,包括ARCH層與板級支持包BSP(Board Support Package)層,自動化配置工具對平臺資源進行修改。
3? 通用軟件平臺的實現
3.1? 總體框架
如圖1和圖2所示的適用于所有多核板卡的通用軟件平臺中主核和從核可以是任意操作系統。圖2中的主核和從核均為SylixOS,主核和從核均包括通用異步收發傳輸器URAR1、媒體訪問控制MAC、嵌入式多媒體卡eMMC和寄存器CACHE;硬件公有部分包括中斷控制器GIC和片上存儲器OCM。
以下以主核運行Linux,其他核CPU運行SylixOS為例,其中SylixOS為國產大型嵌入式實時操作系統。
主核CPU0運行Linux,其他核CPU運行SylixOS,將SylixOS的編譯鏈部署在Linux上,ARCH層與BSP層提供不同的鏡像庫。
自動化配置工具對腳本進行修改,自動定位到配置代碼處,對內存資源、CPU資源、中斷資源、硬件架構選擇修改,編譯后自動運行。
抽象出ARCH層與BSP層,其中ARCH層與BSP層是操作系統為上層應用所提供通用接口設計的,在應用編寫過程中,直接調用應用程序編程接口。當沒有ARCH層與BSP層時,應用程序調用的僅為空函數接口,當操作系統將ARCH層與BSP層的具體應用鏈接到編程接口時,應用程序即可完成調用。
3.2? 用戶操作方法以及平臺運行方法
適用于所有多核板卡的通用軟件平臺的用戶操作方法中的用戶操作方法包括:用戶啟動程序、打開配置工具、選擇架構與BSP、對硬件資源進行配置、自動編譯所有CPU上的操作系統OS,從而啟動通用軟件平臺。
通用軟件平臺運行方法包括:通用軟件平臺啟動程序、打開配置工具、 自動導入源碼工程、自動尋找目錄修改相關系統文件、自動編譯所有CPU上的操作系統OS,從而啟動平臺,如圖3所示。
3.3? 多核間重啟
當其中一個CPU上的任務出現bug導致重啟運行時,由于提前通過配置文件進行了中斷的綁定,即私有中斷,需要啟動從核時進行判斷是否為異常重啟,即非掉電重啟;如果不是異常重啟,則初始化所有硬件資源;如果是異常重啟,則判斷是否為CPU所用的資源。如果是CPU所用的資源,則初始化硬件資源;如果不是CPU所用的資源,則不做初始化操作,即不再重新初始化其他CPU上的操作系統資源,從而實現多核之間的獨立重啟,不影響其他CPU上任務的正常運行。圖4為適用于所有多核板卡的通用軟件平臺實現多核之間的獨立重啟方法。
3.4? 心跳檢測
平臺內部需提供心跳檢測功能,用于判斷其他CPU是否正常運行。具體在于,所有CPU在正常運行的狀態下,向其他CPU發送心跳包,其他CPU在收到心跳包后查詢心跳數據,如果確認CPU核正常運行,則繼續進行心跳檢測功能。適用于所有多核板卡的通用軟件平臺內部心跳檢測的方法如圖5所示。
3.5? 試驗驗證
提前對last level cache進行劃分處理,鎖定于各個CPU之上,同時對硬件輔助寄存器進行操作,屏蔽由于轉換檢測緩沖區TLB(Translation Lookaside Buffer)一致性而產生的廣播操作。如果其中一個CPU上的任務在進行大量的系統調用等進入內核特權態的操作時,其他CPU不會因此被影響,真正做到任務更加獨立。
在處理器設計中,一般last level cache被所有CPU核所共享使用,在ARMv7架構中會提供相應寄存器,可以設置使用cache保證不被其他核清除,具體代碼如下所示:
3.6? 試驗結果
本文所提的適用于所有多核板卡的通用軟件平臺使用方便,節約時間,通過智能配置工具,輕松實現對硬件和資源的配額修改,還可實現配置智能化與硬件處理器多樣化,滿足足夠多用戶的使用場景。通過對軟件平臺的ARCH層與BSP層抽象,可以實現硬件平臺的多樣化,能夠適配多種硬件平臺,以及智能檢測軟件完整性,通過心跳檢測功能,保證平臺的健壯性以及完成度,保證上層應用正常運行。最后,平臺穩定性強,通過處理多核之間的影響,如cache lock、廣播屏蔽等操作保證平臺穩定性。需要說明的是,本文中的計算機可讀存儲介質,包括處理器和存儲器,存儲器中存儲有計算機程序指令,計算機程序指令被處理器執行時,用以實現所述方法。
4? 結? 論
本文從分析現有技術中的多混合系統特性出發,總結了現有技術中的多混合系統中存在的不足,提出一種簡單的多混合系統,通過實驗驗證了通用軟件平臺的可行性,為后續的混合多系統研究提供了可靠的理論支撐。
本文中的技術方案的全部或部分可以以軟件產品的形式體現出來。計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得1臺計算機設備(可以是個人計算機、服務器,或者網絡設備等)執行本文設計的各個實例方法的全部或部分步驟。而前述的存儲介質包括U盤、移動硬盤、只讀存儲器(Read?Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
參考文獻
[1] 吳相楠,龔行梁,周強,等.雙核處理器AMP模式在電力設備控制中的應用[J].單片機與嵌入式系統應用,2018,18(6):38?41.
[2] 張象羽,施慧莉.基于以太網和PCIe的多核DSP開發平臺[J].計算機工程與科學,2019,41(10):1731?1737.
[3] 董延軍,項濤.多核嵌入式操作系統及板級結構探討[J].信息通信,2018(12):145?147.
[4] 占鵬.基于多核CPU的電力系統多速率電磁暫態仿真[D].北京:華北電力大學,2018.
[5] 王豐,印釗.基于多核CPU的運行時驗證技術的研究與實現[J].電子設計工程,2018,26(11):23?27.
[6] 馮文波,廉迎戰,甘玉軒,等.基于多核CPU的嵌入式數控系統研究[J].工業控制計算機,2016,29(6):8?9.
[7] 許少尉,呂浩.多核處理器系統節能調度技術研究[J].航空計算技術,2018,48(1):98?101.
[8] 喻文燁.探究軟件工程技術在電力系統中的應用[J].明日風尚,2017(9):344.
[9] 顧威,張艷,古庭赟,等.一種大規模全范圍電力系統實時仿真的研究和應用[J].電力大數據,2017,20(11):8?11.
[10] 呂國遠,劉晨,尚博祥.基于電力大數據的信息系統體系結構研究[J].經營與管理,2017(4):112?114.