国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

通用非對稱多核方案設(shè)計(jì)①

2021-08-02 11:09
關(guān)鍵詞:網(wǎng)絡(luò)通信總線內(nèi)存

陳 彬

(南京國電南自電網(wǎng)自動化有限公司,南京 211153)

隨著摩爾定律的終結(jié),多核處理器和并行計(jì)算得到大量關(guān)注,多核并行計(jì)算技術(shù)因?yàn)槟艹浞掷卯?dāng)前計(jì)算機(jī)系統(tǒng)的計(jì)算能力,同時(shí)降低成本和功耗[1–3],提升產(chǎn)品競爭力,是當(dāng)前的熱點(diǎn)應(yīng)用技術(shù).但目前多核處理器較少應(yīng)用于實(shí)時(shí)系統(tǒng),這是因?yàn)閷?shí)時(shí)系統(tǒng)要求任務(wù)的執(zhí)行時(shí)間不能超過截止期,而相對于單核處理器而言,多核處理器在訪問硬件共享資源(如Cache、內(nèi)部互聯(lián)總線、內(nèi)存等)時(shí)產(chǎn)生競爭干擾,很難獲得任務(wù)安全、準(zhǔn)確的最壞情況執(zhí)行時(shí)間,這就要求處理器體系結(jié)構(gòu)設(shè)計(jì)能給出確定性的實(shí)時(shí)性預(yù)估結(jié)果[4].

微機(jī)保護(hù)測控裝置是對電力系統(tǒng)內(nèi)一次設(shè)備進(jìn)行監(jiān)察、測量、控制、保護(hù)、調(diào)節(jié)的輔助設(shè)備[5],其中電氣量采集分析、保護(hù)控制信號響應(yīng)等功能有硬實(shí)時(shí)性要求,而屏幕顯示、鍵盤輸入、打印、網(wǎng)絡(luò)通信等功能對實(shí)時(shí)性要求不高,但希望軟件功能豐富,硬件覆蓋全面[6,7].為滿足這些需求,微機(jī)保護(hù)測控裝置多采用分布式多板卡多處理器硬件設(shè)計(jì)方案[8–10],使用不同的板卡或處理器來分別執(zhí)行實(shí)時(shí)任務(wù)和非實(shí)時(shí)任務(wù).這種分布式硬件方案可擴(kuò)展性高,實(shí)時(shí)功能和非實(shí)時(shí)功能的隔離性好,但是系統(tǒng)方案復(fù)雜,軟件開發(fā)難度大,設(shè)備功耗大,成本高.而多核處理器的出現(xiàn),通過非對稱多處理(Asymmetric MultiProcessing,AMP),在一個(gè)或多個(gè)處理器核心上運(yùn)行通用操作系統(tǒng),如Linux,獲得完善的硬件生態(tài)支持和豐富功能,在另外一個(gè)或多個(gè)處理器核心上運(yùn)行實(shí)時(shí)操作系統(tǒng)或裸程序,滿足裝置的實(shí)時(shí)計(jì)算和控制要求.相比于傳統(tǒng)的分布式硬件設(shè)計(jì)方案,AMP 方案利用一個(gè)多核處理器實(shí)現(xiàn)了多個(gè)板卡或處理器的功能,對成本敏感的低壓保護(hù)等裝置,能帶來較大競爭優(yōu)勢.

現(xiàn)有的AMP 硬件設(shè)計(jì)方案中,以異構(gòu)處理器和Xilinx Zynq-7000 處理器為主.異構(gòu)處理器多是CPU+DSP 結(jié)構(gòu)[11–13],其中CPU 運(yùn)行非實(shí)時(shí)任務(wù),DSP 運(yùn)行實(shí)時(shí)任務(wù).Xilinx Zynq-7000是一款雙核CPU+FPGA結(jié)構(gòu)的SoC 芯片,其中CPU0 運(yùn)行非實(shí)時(shí)任務(wù),CPU1運(yùn)行實(shí)時(shí)任務(wù)[14–16].Xilinx Zynq-7000 針對AMP 應(yīng)用場景做了諸多芯片設(shè)計(jì)優(yōu)化,并開發(fā)了OpenAMP 軟件開發(fā)框架[17].

現(xiàn)有的AMP 軟件設(shè)計(jì)方案中,以MCAPI (Multicore Communications API)和OpenAMP 框架為主.MCAPI是一個(gè)輕量級開源多核通信框架,支持基于消息傳遞形式的嵌入式多核通信核同步編程[18];OpenAMP是Xilinx 與Mentor Graphics 公司共同開發(fā)的一個(gè)標(biāo)準(zhǔn)化的嵌入式多核框架,支持IPC 消息管理、共享內(nèi)存管理、從核CPU的生命周期管理和資源管理等功能[19].MCAPI 缺少從核CPU的生命周期管理功能;OpenAMP有硬件依賴層,目前只支持Xilinx Zynq 處理器.同時(shí),兩者實(shí)現(xiàn)相對復(fù)雜,不支持核間網(wǎng)絡(luò)通信機(jī)制,支持的實(shí)時(shí)操作系統(tǒng)種類也有限.

MCAPI 缺少從核CPU的生命周期管理功能,OpenAMP 缺少對通用處理器的支持.針對上述問題,本文提出一種基于通用多核處理器的AMP 解決方案,并重點(diǎn)討論了AMP 軟件總體設(shè)計(jì)、共享資源管理方法和核心模塊設(shè)計(jì).

1 AMP 軟件總體設(shè)計(jì)

AMP 軟件總體模塊框圖如圖1所示,分為AMP啟動和AMP 通信兩個(gè)子系統(tǒng).AMP 啟動子系統(tǒng)由用戶態(tài)模塊amprun和內(nèi)核態(tài)模塊amproc 實(shí)現(xiàn),負(fù)責(zé)AMP 從核的程序加載、啟動、停止、重啟等功能.AMP通信子系統(tǒng)由用戶態(tài)模塊ampcomm和內(nèi)核態(tài)模塊ampeth 實(shí)現(xiàn),負(fù)責(zé)AMP 核間網(wǎng)絡(luò)通信.內(nèi)核態(tài)模塊

圖1 AMP 軟件模塊框圖

amproc 主要實(shí)現(xiàn)AMP 從核的控制管理,通過sysfs 導(dǎo)出用戶態(tài)訪問接口給用戶態(tài)模塊amprun 使用;內(nèi)核態(tài)模塊ampeth 在Linux 網(wǎng)絡(luò)子系統(tǒng)和Linux 核間中斷子系統(tǒng)之上,基于共享內(nèi)存和核間中斷,實(shí)現(xiàn)一個(gè)虛擬網(wǎng)口,提供給用戶態(tài)模塊ampcomm 實(shí)現(xiàn)AMP 核間的套接字網(wǎng)絡(luò)通信.

與OpenAMP 相比,本方案對操作系統(tǒng)組件依賴少,沒有硬件依賴,為快速適配到不同的通用處理器和操作系統(tǒng)創(chuàng)造了有利條件.與MCAPI 相比,本方案增加了從核CPU的生命周期管理功能,功能更加全面.本方案的核間通信采用網(wǎng)絡(luò)通信機(jī)制,是OpenAMP和MCAPI 都不支持的.核間網(wǎng)絡(luò)通信的缺點(diǎn)是實(shí)時(shí)精度不高,但滿足繼電保護(hù)裝置的分布式板卡通信性能要求,而且有豐富的網(wǎng)絡(luò)應(yīng)用服務(wù)支撐和兼容當(dāng)前基于網(wǎng)絡(luò)通信的分布式系統(tǒng)架構(gòu)等優(yōu)點(diǎn).

2 共享資源管理

多核處理器中,除了CPU 核心、L1 Cache、TLB、MMU 等少數(shù)模塊是每個(gè)CPU的私有資源外,其他硬件資源都是CPU 共享資源,如Last Level Cache、片內(nèi)互聯(lián)總線、內(nèi)存、外設(shè)等.當(dāng)硬實(shí)時(shí)任務(wù)在同時(shí)訪問這些共享資源時(shí),就會發(fā)生資源訪問沖突,給硬實(shí)時(shí)任務(wù)帶來不可預(yù)測的額外執(zhí)行時(shí)間.為了避免訪問沖突,需要對所有共享資源進(jìn)行劃分和管理.

2.1 內(nèi)存

在各類共享資源中,對系統(tǒng)性能影響最大的是共享內(nèi)存和Cache,為了緩解這一問題,除了增加可用共享資源外,公平高效地管理和利用共享內(nèi)存資源至關(guān)重要[20].基于通用考慮,AMP 通信功能基于共享內(nèi)存實(shí)現(xiàn).內(nèi)存劃分為3 部分,即共享內(nèi)存區(qū)、Linux內(nèi)存區(qū)和RTOS內(nèi)存區(qū),如圖2所示.

圖2 內(nèi)存劃分圖

共享內(nèi)存區(qū)位于內(nèi)存頭部,方便Linux內(nèi)存區(qū)和RTOS內(nèi)存區(qū)的擴(kuò)展.共享內(nèi)存由Linux 初始化,Linux和RTOS 共同使用.共享內(nèi)存區(qū)內(nèi)部劃分為多個(gè)段,在AMP 驅(qū)動加載時(shí)按需動態(tài)申請,段信息由共享內(nèi)存區(qū)頭header 維護(hù),其中包括RTOS的環(huán)境變量env、RTOS的啟動參數(shù)段cmdline、AMP 從核運(yùn)行狀態(tài)amproc.stat、AMP 核間通信網(wǎng)絡(luò)狀態(tài)ampeth.stat、AMP 核間通信網(wǎng)絡(luò)發(fā)送緩存ampeth.tx、AMP 核間通信網(wǎng)絡(luò)接收緩存ampeth.rx 等.

不同的內(nèi)存區(qū)設(shè)置不同的內(nèi)存屬性,其中共享內(nèi)存的內(nèi)存屬性設(shè)置為non-cacheable,避免單次數(shù)據(jù)占用緩存資源;Linux內(nèi)存區(qū)和RTOS內(nèi)存區(qū)的內(nèi)存屬性設(shè)置為non-shareable,避免cache/TLB 一致性維護(hù)在核間廣播,擠占內(nèi)部互連總線帶寬資源,影響CPU 性能.

2.2 外設(shè)

根據(jù)AMP 主核和從核的不同功能定位,將除內(nèi)存之外的所有外設(shè)分別分配給AMP 主核或從核使用,盡量保證主核和從核上的外設(shè)在不同的總線上,避免外設(shè)總線訪問競爭.

2.3 處理器

AMP 從核工作模式設(shè)置為AMP 模式,保證AMP從核不會發(fā)送和接受cache/TLB的一致性維護(hù)廣播,有利于提升AMP 從核的實(shí)時(shí)性.

2.4 Cache 緩存

AMP 從核關(guān)閉Last Level Cache,保證AMP 從核能獲得可靠的任務(wù)最壞情況執(zhí)行時(shí)間,避免因?yàn)锳MP主核任務(wù)污染Last Level Cache 而造成AMP 從核任務(wù)執(zhí)行時(shí)間的抖動和惡化.Last Level Cache 由AMP 主核控制和使用.如果AMP 從核希望對L2 Cache 進(jìn)行刷新、無效等操作,需要通知AMP 主核,由主核進(jìn)行操作.

2.5 片內(nèi)總線

多核處理器大都在互聯(lián)結(jié)構(gòu)中集成了控制多核之間優(yōu)先級的總線仲裁功能,可以在啟動AMP 從核的同時(shí)設(shè)置相應(yīng)優(yōu)先級.

如果處理器缺少控制多核之間優(yōu)先級的總線仲裁功能,為了保證實(shí)時(shí)任務(wù)的實(shí)時(shí)計(jì)算,AMP 主核上的軟件需要精心設(shè)計(jì),避免長時(shí)間的總線訪問風(fēng)暴,大量的總線沖突導(dǎo)致訪問隊(duì)列迅速增長,延遲加劇,造成AMP 從核實(shí)時(shí)任務(wù)超時(shí).

3 AMP 軟件功能設(shè)計(jì)

3.1 AMP 從核鏡像加載

AMP 從核運(yùn)行實(shí)時(shí)系統(tǒng)需要加載的鏡像文件包括RTOS 鏡像、配置文件config、環(huán)境變量env和啟動參數(shù)cmdline 四部分.

RTOS 鏡像、配置文件config 采用FIT (Flattened Image Tree)格式打包,amprun 模塊根據(jù)FIT 鏡像中的屬性信息如文件列表、壓縮格式、校驗(yàn)算法、加載地址等,負(fù)責(zé)解析、校驗(yàn)、解壓、加載到RTOS內(nèi)存區(qū).

環(huán)境變量env 存儲在nor flash 上,而nor flash 由AMP 主核控制,所以需要amprun 模塊從nor flash中讀出環(huán)境變量,并寫入共享內(nèi)存區(qū)的環(huán)境變量env 段,以便AMP 從核啟動時(shí)使用.

為了靈活控制RTOS的啟動模式和功能等,啟動參數(shù)cmdline 需要根據(jù)用戶輸入動態(tài)生成,所以amprun模塊根據(jù)用戶輸入動態(tài)生成cmdline,并寫入共享內(nèi)存區(qū)的啟動參數(shù)cmdline 段.

3.2 AMP 從核啟動

完成AMP 從核鏡像加載后,amprun 模塊使用amproc 模塊提供的接口,完成AMP 從核的啟動、停止、重啟等生命周期的控制管理.

啟動AMP 從核操作過程如下:

1)初始化AMP 從核運(yùn)行狀態(tài)amproc.stat;

2)禁止CPU 本地中斷;

3)內(nèi)存屏障;

4)刷新L1和L2 Cache(PoU);

5)通知其他所有SMP CPU 等待AMP 從核完成啟動(方法與步驟(11)相同);

6)設(shè)置CPU 軟件復(fù)位啟動地址寄存器為AMP 從核RTOS 鏡像的入口地址;

7)復(fù)位AMP 從核;

8)復(fù)位AMP 從核的L1 Cache;

9)禁止AMP 從核的外部調(diào)試訪問;

10)解復(fù)位AMP 從核,AMP 從核啟動;

11)循環(huán)檢查AMP 從核運(yùn)行狀態(tài)amproc.stat,等待AMP 從核完成啟動.(AMP 從核完成啟動后會更新amproc.stat);

12)使能CPU 本地中斷;

停止AMP 從核操作過程如下:

1)復(fù)位AMP 從核;

2)禁止AMP 從核的外部調(diào)試訪問;

3)下電AMP 從核;

4)初始化AMP 從核運(yùn)行狀態(tài)amproc.stat;

3.3 AMP 核間通信

AMP 核間通信通過虛擬網(wǎng)絡(luò)接口,其基于共享內(nèi)存和核間中斷實(shí)現(xiàn).共享內(nèi)存段中的ampeth.stat、ampeth.tx、ampeth.rx 用于AMP 核間通信.ampeth.tx、ampeth.rx 共享內(nèi)存段結(jié)構(gòu)相同,由64個(gè)緩沖區(qū)描述符對象(Buffer Descriptor,BD)組成.每個(gè)BD 由有效狀態(tài)valid、幀長len和幀數(shù)據(jù)區(qū)data 三部分組成.ampeth.tx 對于AMP 主核是發(fā)送緩沖區(qū),對于AMP 從核是接收緩沖區(qū);ampeth.rx 對于AMP 主核是接收緩沖區(qū),對于AMP從核是發(fā)送緩沖區(qū).ampeth.stat 共享內(nèi)存段由發(fā)送緩沖區(qū)描述符對象頭索引tx_idx和發(fā)送緩沖區(qū)描述符對象頭索引rx_idx 組成,用于tx_idx和rx_idx 在主從核間的同步.

AMP 核間通信虛擬網(wǎng)口的發(fā)送流程如圖3所示.首先檢查當(dāng)前發(fā)送BD是否空閑,如果非空閑,說明整個(gè)發(fā)送緩存已沒有可用的空閑BD,丟棄發(fā)送幀并退出.如果當(dāng)前BD 空閑,檢查發(fā)送幀長度是否超過BD數(shù)據(jù)區(qū)長度,如果超出,丟棄發(fā)送幀并退出.當(dāng)所有檢查都通過后,將發(fā)送幀數(shù)據(jù)拷貝到當(dāng)前發(fā)送BD的數(shù)據(jù)區(qū),并將當(dāng)前BD 設(shè)置為有效BD,然后更新網(wǎng)絡(luò)統(tǒng)計(jì)計(jì)數(shù),移動發(fā)送BD的頭索引到下一位置,并將新的發(fā)送BD 頭索引更新到ampeth.stat 段中,最后給AMP核發(fā)送一個(gè)IPI 收包中斷,通知AMP 核可以從共享內(nèi)存中接收數(shù)據(jù)了.

圖3 核間通信虛擬網(wǎng)口發(fā)送流程

AMP 核間通信虛擬網(wǎng)口的接收操作流程如圖4所示.當(dāng)AMP 核接收到IPI 收包中斷,進(jìn)入中斷處理函數(shù)后,首先關(guān)閉核間IPI 收包中斷,然后喚醒收包線程進(jìn)行收包.為了避免大量的網(wǎng)絡(luò)流量造成中斷風(fēng)暴,從而嚴(yán)重影響系統(tǒng)性能,我們在進(jìn)行收包前先關(guān)閉IPI 收包中斷,當(dāng)有大量數(shù)據(jù)包進(jìn)來后,通過收包線程進(jìn)行輪詢收包,收完所有有效包后再打開IPI 收包中斷,同時(shí)為了避免收包線程長時(shí)間收包占用處理器資源,影響其他任務(wù),對輪詢收包的個(gè)數(shù)做了配額限制,收包機(jī)制類似于Linux內(nèi)核NAPI 收包機(jī)制[21].

圖4 核間通信虛擬網(wǎng)口接收流程

收包線程喚醒后,首先檢查輪詢收包的個(gè)數(shù)是否超出了配額限制,如果輪詢收包的個(gè)數(shù)超過64個(gè),則使能核間IPI中斷后等待下次喚醒.如果收包個(gè)數(shù)未超過配額限制,再檢查當(dāng)前接收BD是否空閑,如果空閑,說明接收緩存中的所有數(shù)據(jù)已全部接收,使能核間IPI中斷后等待下次喚醒.如果BD 非空閑,說明接收BD中有數(shù)據(jù),再檢查當(dāng)前接收BD的len 字段是否有效,如果無效則丟棄接收幀,否則將BD的數(shù)據(jù)拷貝到接收內(nèi)存空間,并清除BD的valid和len 字段.然后更新網(wǎng)絡(luò)統(tǒng)計(jì)計(jì)數(shù),并移動接收BD的頭索引到下一位置,將新的接收BD 頭索引更新到ampeth.stat 段中.至此,一個(gè)BD的收包處理完成.

通過AMP 核間通信虛擬網(wǎng)口,AMP 主核可以借助完善的TCP/IP 網(wǎng)絡(luò)服務(wù),為從核提供更加豐富復(fù)雜的網(wǎng)絡(luò)服務(wù),如網(wǎng)絡(luò)文件系統(tǒng)、FTP、ssh 等;另外傳統(tǒng)微機(jī)保護(hù)測控裝置采樣分布式硬件架構(gòu),其板間通信以網(wǎng)絡(luò)通信為主,使用虛擬網(wǎng)口實(shí)現(xiàn)AMP 核間通信,可以很好地兼容現(xiàn)有微機(jī)保護(hù)測控裝置的嵌入式軟件架構(gòu)和通信機(jī)制.

4 工程應(yīng)用

本方案應(yīng)用于35kV 及以下低壓保護(hù)測控裝置的研制,裝置中的CPU 板的核心器件包括四核處理器和FPGA.處理器中的3個(gè)CPU 核設(shè)置為SMP 模式,運(yùn)行Linux 操作系統(tǒng);1個(gè)CPU 核設(shè)置為AMP 模式,運(yùn)行實(shí)時(shí)操作系統(tǒng).FPGA 用于擴(kuò)展電力專用網(wǎng)絡(luò)(如MMS制造報(bào)文規(guī)范、GOOSE 面向通用對象變電站事件網(wǎng)、SV 采樣網(wǎng)等)和總線擴(kuò)展(如開關(guān)量輸入輸出模塊管理總線、快速報(bào)文總線、對時(shí)總線、人機(jī)接口模塊通信總線、打印通信總線等).裝置保護(hù)動作響應(yīng)時(shí)間小于10 ms,遙控傳輸延時(shí)小于1 s,遙信變化響應(yīng)時(shí)間小于1 s,通過保護(hù)測控裝置的實(shí)時(shí)性能和功能測試[5,6].在網(wǎng)絡(luò)報(bào)文攻擊和故障注入等異常測試中,裝置無死機(jī)或異常重啟,AMP 從核上的保護(hù)、采樣等實(shí)時(shí)任務(wù)可靠運(yùn)行.

裝置在正常負(fù)載情況下,AMP 核間虛擬網(wǎng)口網(wǎng)絡(luò)通信耗時(shí)約50 μs 左右,其中Linux 側(cè)收發(fā)包平均耗時(shí)約40 μs,RTOS 側(cè)收發(fā)包平均耗時(shí)約10 μs,而分布式多板卡方案中使用的百兆以太網(wǎng)口網(wǎng)絡(luò)通信耗時(shí)約500 μs 左右.AMP 主從核通過AMP 核間虛擬網(wǎng)口實(shí)現(xiàn)的網(wǎng)絡(luò)文件系統(tǒng)、遠(yuǎn)程登錄、端口轉(zhuǎn)發(fā)、網(wǎng)絡(luò)對時(shí)等網(wǎng)絡(luò)服務(wù)功能工作穩(wěn)定,性能符合裝置技術(shù)指標(biāo)要求.

現(xiàn)有繼電保護(hù)裝置的AMP 方案都是采用Zynq SOC芯片或異構(gòu)處理器,而不支持通用多核處理器.本方案的應(yīng)用結(jié)果表明基于通用多核處理器的AMP 方案是行之有效和穩(wěn)定可靠的.

5 結(jié)語

本文提出一種基于通用多核處理器的AMP 設(shè)計(jì)方案,支持AMP 核的生命周期管理和基于虛擬網(wǎng)口的核間通信.采用本方案研制的低壓保護(hù)測控裝置已批量發(fā)貨,現(xiàn)場運(yùn)行情況表明基于通用多核處理器的AMP方案,能夠滿足電力二次設(shè)備的實(shí)時(shí)性能要求.總結(jié)來說,本方案的優(yōu)勢有如下幾點(diǎn):

(1)簡化軟硬件設(shè)計(jì),節(jié)約成本;

(2)擴(kuò)大處理器選型范圍;相對于異構(gòu)處理器,通用多核處理器的選型范圍廣,成熟度高;

(3)基于虛擬網(wǎng)口的AMP 核間通信方案,兼容現(xiàn)有的分布式軟件架構(gòu)和網(wǎng)絡(luò)通信機(jī)制.

后續(xù)計(jì)劃在電力二次設(shè)備中應(yīng)用本方案,并適配到更多的多核處理器和實(shí)時(shí)操作系統(tǒng)中.

猜你喜歡
網(wǎng)絡(luò)通信總線內(nèi)存
信息化時(shí)代網(wǎng)絡(luò)通信安全的背景和對策
關(guān)于CAN總線的地鐵屏蔽門控制思路論述
筆記本內(nèi)存已經(jīng)在漲價(jià)了,但幅度不大,升級擴(kuò)容無須等待
“春夏秋冬”的內(nèi)存
4G系統(tǒng)的新技術(shù)和特點(diǎn)
5G網(wǎng)絡(luò)通信技術(shù)應(yīng)用的前瞻性思考
內(nèi)存搭配DDR4、DDR3L還是DDR3?
Q&A熱線
PCI9030及其PCI總線接口電路設(shè)計(jì)
上網(wǎng)本為什么只有1GB?