習(xí)偉 弓羽箭 韓輝 閆佳偉
摘? 要: 目前基于雙核CPU的AMP的混合多系統(tǒng)存在較大的缺陷和不足,首先會(huì)導(dǎo)致消耗不必要的資源與時(shí)間;其次,綁定硬件大多只局限于ARM;并且復(fù)雜度高、維護(hù)困難,對(duì)電力系統(tǒng)中其他運(yùn)行應(yīng)用程序的影響極大,會(huì)造成實(shí)時(shí)性任務(wù)抖動(dòng)。該文提出一種適用于多核板卡的通用軟件平臺(tái),其通過(guò)自動(dòng)化配置工具對(duì)硬件資源進(jìn)行配置,將混合多系統(tǒng)平臺(tái)抽象出ARCH與BSP層,通過(guò)心跳包監(jiān)測(cè)其他CPU是否正常運(yùn)行,通過(guò)cache劃分通用寄存器,設(shè)置消除核間廣播,可實(shí)現(xiàn)配置智能化和硬件平臺(tái)的多樣化,增加系統(tǒng)穩(wěn)定性。
關(guān)鍵詞: 電力系統(tǒng); 多核板卡; 軟件平臺(tái); 混合多系統(tǒng); 資源配置; 試驗(yàn)驗(yàn)證
中圖分類號(hào): TN911?34? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? ? ? ? ? ? ? ? ? ?文章編號(hào): 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? 引? 言
隨著嵌入式產(chǎn)品的更新升級(jí),越來(lái)越多的功能被集中在同一塊硬件上,往往各個(gè)功能之間互相聯(lián)系,互相影響[1]。為了更好地處理實(shí)時(shí)性任務(wù)與非實(shí)時(shí)任務(wù),混合多系統(tǒng)可以使任務(wù)分工更精細(xì),靈活地適應(yīng)不同情景[2]。目前基于雙核CPU的AMP的混合多系統(tǒng)存在較大的缺陷和不足[3?4],首先會(huì)導(dǎo)致消耗不必要的資源與時(shí)間;其次,綁定硬件大多只局限于ARM;并且復(fù)雜度高、維護(hù)困難,對(duì)電力系統(tǒng)中其他運(yùn)行應(yīng)用程序的影響極大,會(huì)造成實(shí)時(shí)性任務(wù)抖動(dòng)?;诖?,本文提出一種適用于多核板卡的通用軟件平臺(tái),其通過(guò)自動(dòng)化配置工具對(duì)硬件資源進(jìn)行配置,將混合多系統(tǒng)平臺(tái)抽象出ARCH與BSP層,通過(guò)心跳包監(jiān)測(cè)其他CPU是否正常運(yùn)行,通過(guò)cache劃分通用寄存器,設(shè)置消除核間廣播,可實(shí)現(xiàn)配置智能化和硬件平臺(tái)的多樣化,增加系統(tǒng)穩(wěn)定性。
1? 混合多系統(tǒng)的現(xiàn)狀以及缺陷分析
1.1? 混合多系統(tǒng)核間通信技術(shù)的現(xiàn)狀[3]
目前,一般的混合多系統(tǒng)為基于雙核CPU的移動(dòng)頁(yè)面加速(Accelerated Mobile Pages,AMP)技術(shù),大多使用Linux與實(shí)時(shí)多任務(wù)操作系統(tǒng)(Micro?Controller Operating System,[μCOS])搭配實(shí)現(xiàn),即CPU0運(yùn)行Linux,CPU1運(yùn)行[μCOS]。
1.2? 存在的不足之處
這種方法有較大的缺陷和不足,首先是會(huì)消耗不必要的資源與時(shí)間,其需要提前在代碼階段劃分好內(nèi)存資源,規(guī)定所運(yùn)行的CPU,重新編譯后再進(jìn)行加載工作。這些代碼往往分布在不同內(nèi)核組件中,修改時(shí)費(fèi)事費(fèi)力。第二,需要綁定硬件,大多只局限于ARM,現(xiàn)有方法僅適用于ARM體系架構(gòu)的雙核處理器,并且隨著功能復(fù)雜度的增加,硬件處理器的性能提升令硬件無(wú)法適用,例如X86架構(gòu)的intel處理器,四核ARM Cortex A53的MPSOC處理器都無(wú)法適用。第三,在運(yùn)行過(guò)程中無(wú)法判斷其他CPU核是否正常運(yùn)行,容易造成對(duì)應(yīng)用提供數(shù)據(jù)、功能錯(cuò)誤,復(fù)雜度高,維護(hù)困難;另外,該混合系統(tǒng)對(duì)系統(tǒng)中其他運(yùn)行應(yīng)用程序影響極大,造成實(shí)時(shí)性任務(wù)抖動(dòng)。
也就是說(shuō),如果其中一個(gè)CPU上的任務(wù)出現(xiàn)bug導(dǎo)致重啟運(yùn)行,那么另一個(gè)CPU將也被重啟運(yùn)行,這樣會(huì)導(dǎo)致正常運(yùn)行的CPU被重啟;如果其中一個(gè)CPU上的任務(wù)進(jìn)行大量的系統(tǒng)調(diào)用等進(jìn)入內(nèi)核特權(quán)態(tài)的操作,會(huì)對(duì)另一個(gè)CPU上任務(wù)的運(yùn)行造成很大的抖動(dòng)。
2? 平臺(tái)架構(gòu)原理
本文提出一種適用于所有多核板卡的通用軟件平臺(tái)。該平臺(tái)不僅減少核間相互干擾,而且提供了很多直接可用的功能組件,方便程序員使用。圖1為本文所提出的適用于所有多核板卡的通用軟件平臺(tái)的架構(gòu)圖。
該架構(gòu)適用于所有多核板卡的通用軟件平臺(tái),包括ARCH層與板級(jí)支持包BSP(Board Support Package)層,自動(dòng)化配置工具對(duì)平臺(tái)資源進(jìn)行修改。
3? 通用軟件平臺(tái)的實(shí)現(xiàn)
3.1? 總體框架
如圖1和圖2所示的適用于所有多核板卡的通用軟件平臺(tái)中主核和從核可以是任意操作系統(tǒng)。圖2中的主核和從核均為SylixOS,主核和從核均包括通用異步收發(fā)傳輸器URAR1、媒體訪問(wèn)控制MAC、嵌入式多媒體卡eMMC和寄存器CACHE;硬件公有部分包括中斷控制器GIC和片上存儲(chǔ)器OCM。
以下以主核運(yùn)行Linux,其他核CPU運(yùn)行SylixOS為例,其中SylixOS為國(guó)產(chǎn)大型嵌入式實(shí)時(shí)操作系統(tǒng)。
主核CPU0運(yùn)行Linux,其他核CPU運(yùn)行SylixOS,將SylixOS的編譯鏈部署在Linux上,ARCH層與BSP層提供不同的鏡像庫(kù)。
自動(dòng)化配置工具對(duì)腳本進(jìn)行修改,自動(dòng)定位到配置代碼處,對(duì)內(nèi)存資源、CPU資源、中斷資源、硬件架構(gòu)選擇修改,編譯后自動(dòng)運(yùn)行。
抽象出ARCH層與BSP層,其中ARCH層與BSP層是操作系統(tǒng)為上層應(yīng)用所提供通用接口設(shè)計(jì)的,在應(yīng)用編寫(xiě)過(guò)程中,直接調(diào)用應(yīng)用程序編程接口。當(dāng)沒(méi)有ARCH層與BSP層時(shí),應(yīng)用程序調(diào)用的僅為空函數(shù)接口,當(dāng)操作系統(tǒng)將ARCH層與BSP層的具體應(yīng)用鏈接到編程接口時(shí),應(yīng)用程序即可完成調(diào)用。
3.2? 用戶操作方法以及平臺(tái)運(yùn)行方法
適用于所有多核板卡的通用軟件平臺(tái)的用戶操作方法中的用戶操作方法包括:用戶啟動(dòng)程序、打開(kāi)配置工具、選擇架構(gòu)與BSP、對(duì)硬件資源進(jìn)行配置、自動(dòng)編譯所有CPU上的操作系統(tǒng)OS,從而啟動(dòng)通用軟件平臺(tái)。
通用軟件平臺(tái)運(yùn)行方法包括:通用軟件平臺(tái)啟動(dòng)程序、打開(kāi)配置工具、 自動(dòng)導(dǎo)入源碼工程、自動(dòng)尋找目錄修改相關(guān)系統(tǒng)文件、自動(dòng)編譯所有CPU上的操作系統(tǒng)OS,從而啟動(dòng)平臺(tái),如圖3所示。
3.3? 多核間重啟
當(dāng)其中一個(gè)CPU上的任務(wù)出現(xiàn)bug導(dǎo)致重啟運(yùn)行時(shí),由于提前通過(guò)配置文件進(jìn)行了中斷的綁定,即私有中斷,需要啟動(dòng)從核時(shí)進(jìn)行判斷是否為異常重啟,即非掉電重啟;如果不是異常重啟,則初始化所有硬件資源;如果是異常重啟,則判斷是否為CPU所用的資源。如果是CPU所用的資源,則初始化硬件資源;如果不是CPU所用的資源,則不做初始化操作,即不再重新初始化其他CPU上的操作系統(tǒng)資源,從而實(shí)現(xiàn)多核之間的獨(dú)立重啟,不影響其他CPU上任務(wù)的正常運(yùn)行。圖4為適用于所有多核板卡的通用軟件平臺(tái)實(shí)現(xiàn)多核之間的獨(dú)立重啟方法。
3.4? 心跳檢測(cè)
平臺(tái)內(nèi)部需提供心跳檢測(cè)功能,用于判斷其他CPU是否正常運(yùn)行。具體在于,所有CPU在正常運(yùn)行的狀態(tài)下,向其他CPU發(fā)送心跳包,其他CPU在收到心跳包后查詢心跳數(shù)據(jù),如果確認(rèn)CPU核正常運(yùn)行,則繼續(xù)進(jìn)行心跳檢測(cè)功能。適用于所有多核板卡的通用軟件平臺(tái)內(nèi)部心跳檢測(cè)的方法如圖5所示。
3.5? 試驗(yàn)驗(yàn)證
提前對(duì)last level cache進(jìn)行劃分處理,鎖定于各個(gè)CPU之上,同時(shí)對(duì)硬件輔助寄存器進(jìn)行操作,屏蔽由于轉(zhuǎn)換檢測(cè)緩沖區(qū)TLB(Translation Lookaside Buffer)一致性而產(chǎn)生的廣播操作。如果其中一個(gè)CPU上的任務(wù)在進(jìn)行大量的系統(tǒng)調(diào)用等進(jìn)入內(nèi)核特權(quán)態(tài)的操作時(shí),其他CPU不會(huì)因此被影響,真正做到任務(wù)更加獨(dú)立。
在處理器設(shè)計(jì)中,一般last level cache被所有CPU核所共享使用,在ARMv7架構(gòu)中會(huì)提供相應(yīng)寄存器,可以設(shè)置使用cache保證不被其他核清除,具體代碼如下所示:
3.6? 試驗(yàn)結(jié)果
本文所提的適用于所有多核板卡的通用軟件平臺(tái)使用方便,節(jié)約時(shí)間,通過(guò)智能配置工具,輕松實(shí)現(xiàn)對(duì)硬件和資源的配額修改,還可實(shí)現(xiàn)配置智能化與硬件處理器多樣化,滿足足夠多用戶的使用場(chǎng)景。通過(guò)對(duì)軟件平臺(tái)的ARCH層與BSP層抽象,可以實(shí)現(xiàn)硬件平臺(tái)的多樣化,能夠適配多種硬件平臺(tái),以及智能檢測(cè)軟件完整性,通過(guò)心跳檢測(cè)功能,保證平臺(tái)的健壯性以及完成度,保證上層應(yīng)用正常運(yùn)行。最后,平臺(tái)穩(wěn)定性強(qiáng),通過(guò)處理多核之間的影響,如cache lock、廣播屏蔽等操作保證平臺(tái)穩(wěn)定性。需要說(shuō)明的是,本文中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括處理器和存儲(chǔ)器,存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)程序指令,計(jì)算機(jī)程序指令被處理器執(zhí)行時(shí),用以實(shí)現(xiàn)所述方法。
4? 結(jié)? 論
本文從分析現(xiàn)有技術(shù)中的多混合系統(tǒng)特性出發(fā),總結(jié)了現(xiàn)有技術(shù)中的多混合系統(tǒng)中存在的不足,提出一種簡(jiǎn)單的多混合系統(tǒng),通過(guò)實(shí)驗(yàn)驗(yàn)證了通用軟件平臺(tái)的可行性,為后續(xù)的混合多系統(tǒng)研究提供了可靠的理論支撐。
本文中的技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái)。計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得1臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本文設(shè)計(jì)的各個(gè)實(shí)例方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(Read?Only Memory,ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
參考文獻(xiàn)
[1] 吳相楠,龔行梁,周強(qiáng),等.雙核處理器AMP模式在電力設(shè)備控制中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2018,18(6):38?41.
[2] 張象羽,施慧莉.基于以太網(wǎng)和PCIe的多核DSP開(kāi)發(fā)平臺(tái)[J].計(jì)算機(jī)工程與科學(xué),2019,41(10):1731?1737.
[3] 董延軍,項(xiàng)濤.多核嵌入式操作系統(tǒng)及板級(jí)結(jié)構(gòu)探討[J].信息通信,2018(12):145?147.
[4] 占鵬.基于多核CPU的電力系統(tǒng)多速率電磁暫態(tài)仿真[D].北京:華北電力大學(xué),2018.
[5] 王豐,印釗.基于多核CPU的運(yùn)行時(shí)驗(yàn)證技術(shù)的研究與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2018,26(11):23?27.
[6] 馮文波,廉迎戰(zhàn),甘玉軒,等.基于多核CPU的嵌入式數(shù)控系統(tǒng)研究[J].工業(yè)控制計(jì)算機(jī),2016,29(6):8?9.
[7] 許少尉,呂浩.多核處理器系統(tǒng)節(jié)能調(diào)度技術(shù)研究[J].航空計(jì)算技術(shù),2018,48(1):98?101.
[8] 喻文燁.探究軟件工程技術(shù)在電力系統(tǒng)中的應(yīng)用[J].明日風(fēng)尚,2017(9):344.
[9] 顧威,張艷,古庭赟,等.一種大規(guī)模全范圍電力系統(tǒng)實(shí)時(shí)仿真的研究和應(yīng)用[J].電力大數(shù)據(jù),2017,20(11):8?11.
[10] 呂國(guó)遠(yuǎn),劉晨,尚博祥.基于電力大數(shù)據(jù)的信息系統(tǒng)體系結(jié)構(gòu)研究[J].經(jīng)營(yíng)與管理,2017(4):112?114.