• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于核間中斷實(shí)現(xiàn)的嵌入式多核系統(tǒng)通信方法*

      2021-06-04 04:11:52
      艦船電子工程 2021年5期
      關(guān)鍵詞:間通信共享內(nèi)存寄存器

      (中船重工(武漢)凌久電子有限責(zé)任公司 武漢 430074)

      1 引言

      隨著VLSI技術(shù)的發(fā)展和多核結(jié)構(gòu)模型理論的進(jìn)一步成熟,2001年IBM公司推出第一個(gè)商用的多核處理器POWER4,至此開啟了多核處理器新紀(jì)元。經(jīng)過數(shù)十年的發(fā)展,多核處理器已被廣泛應(yīng)用于多媒體計(jì)算,嵌入式設(shè)備,個(gè)人計(jì)算機(jī),商用服務(wù)器和高性能計(jì)算機(jī)等眾多領(lǐng)域[1]。多核系統(tǒng)被認(rèn)為是最能滿足那些對(duì)性能要求不斷增加的嵌入式系統(tǒng)和高性能計(jì)算領(lǐng)域[2],通過增加處理器核心數(shù)目來提高性能。與單核系統(tǒng)相比,多核系統(tǒng)運(yùn)行在更低的頻率范圍來減少能量的消耗以及降低處理器的發(fā)熱量,通過有效管理多指令同步執(zhí)行提升多核系統(tǒng)整體性能[3]。

      多核處理器帶來性能的提升的同時(shí),也有其自身不可避免的缺點(diǎn)。在多核處理器系統(tǒng)中,各核心共用緩存,外部存儲(chǔ)空間,網(wǎng)絡(luò)控制器等資源。運(yùn)行在多核處理器上的應(yīng)用程序在共享使用這些資源同時(shí),也會(huì)有一些信息交互[4],如果各核間不能進(jìn)行有效的通信,勢(shì)必會(huì)影響系統(tǒng)整體性能,核間通信成為多核系統(tǒng)的性能瓶頸[5]。

      2 核間中斷原理

      本文選取TI公司的TMS320C6678 DSP平臺(tái)為研究對(duì)象,該處理器是8核同構(gòu)處理器,采用TI最新的KeyStone架構(gòu)。每個(gè)C66x內(nèi)核頻率為1.25GHz,提供每秒高達(dá)40GB MAC定點(diǎn)運(yùn)算和20GB FLOP浮點(diǎn)運(yùn)算能力[6]。TMS320C6678處理器內(nèi)部以及處理器與外部間的通信離不開多核導(dǎo)航器、共享存儲(chǔ)器、TeraNet高速互聯(lián)總線和Hyper-Link 接口[7~8],這些豐富的功能組件配合中斷機(jī)制的使用能為TMS320C6678芯片提供多種靈活的通信方法。中斷機(jī)制是現(xiàn)代計(jì)算機(jī)系統(tǒng)中的基本機(jī)制之一,它幫助系統(tǒng)完成對(duì)外部各種事件的響應(yīng)和處理,是實(shí)現(xiàn)多道程序設(shè)計(jì)的必要條件。

      2.1 CorePac中斷機(jī)制

      TMS320C6678設(shè)備有8個(gè)C66xCorePac核心,每個(gè)CorePac內(nèi)部集成了一個(gè)中斷控制器(INTC),中斷控制器對(duì)系統(tǒng)中斷源進(jìn)行配置,中斷控制器允許最多128個(gè)系統(tǒng)事件被路由到12個(gè)可屏蔽中斷輸入(INT4~I(xiàn)NT15)中去,這128個(gè)系統(tǒng)事件可以是內(nèi)部事件或者外部事件。中斷控制器內(nèi)部集成有Interrupt Selector和 Event Combiner部件,Interrupt Selector使得編程人員可以將這128個(gè)系統(tǒng)事件中的任一事件映射到INT4~I(xiàn)NT15中的任何一個(gè),從而完成事件響應(yīng)。CorePac中總共有128個(gè)系統(tǒng)事件,其中4~127號(hào)事件是來自芯片內(nèi)部或者外部的事件,有實(shí)際物理意義的。Event Combiner可以將第4~127號(hào)系統(tǒng)事件中若干個(gè)合成為0~3事件中的任一個(gè),則系統(tǒng)等效有128個(gè)事件[9]。CorePac內(nèi)部中斷路由結(jié)構(gòu)如圖1所示。

      2.2 核間中斷

      在TMS320C6678設(shè)備中91號(hào)事件默認(rèn)對(duì)應(yīng)為核間中斷[10](IPC_LOCAL),每個(gè)核心通過配置中斷寄存器讓事件控制器產(chǎn)生91號(hào)事件中斷。主要配置的寄存器有IPCGRx和IPCARx兩種類型,其中IPCGRx為中斷生成寄存器,IPCARx為中斷確認(rèn)寄存器,他們共同完成核間中斷。TMS320C6678有8個(gè) IPCGRx(0~7)寄存器和 8 個(gè) IPCARx(0~7)寄存器[11]。當(dāng)向IPCGRx中的IPCG位寫1時(shí),將向corex發(fā)送一個(gè)核間中斷,與此同時(shí)寄存器將相應(yīng)的中斷確認(rèn)寄存器的SRCCx位置1。當(dāng)中斷被確認(rèn)后,寄存器將SRCCx和相應(yīng)的SRCSx位同時(shí)置0。通過查詢中斷確認(rèn)寄存器中對(duì)應(yīng)位值,中斷服務(wù)程序可以知道中斷的來源。C6678多核處理器間的核間中斷即完成一次中斷通信過程。此處的核間通信僅能起到同步通知作用,并不能傳輸數(shù)據(jù)信息。核間中斷實(shí)現(xiàn)過程如圖2所示。

      圖2 核間中斷實(shí)現(xiàn)過程

      DSP工作在有許多外部異步事件存在的環(huán)境中,當(dāng)事件發(fā)生時(shí)他們要求DSP能夠立即去處理該事件。中斷是事件用來停止CPU當(dāng)前運(yùn)行的任務(wù)轉(zhuǎn)而去執(zhí)行該事件的過程。事件的來源可以是芯片內(nèi)部或者芯片外部,例如時(shí)鐘,AD轉(zhuǎn)換,其他外設(shè)等。

      3 核間通信設(shè)計(jì)與實(shí)現(xiàn)

      在嵌入式系統(tǒng)中,中斷機(jī)制可以平衡外部設(shè)備與處理器之間的速度差異,實(shí)現(xiàn)更友好的人機(jī)交互,是所有處理器必須具備的一個(gè)能力。在多核系統(tǒng)中,各種通信方式幾乎都離不開中斷機(jī)制。如SRIO通信方式[12]中有SRIO中斷,PCIe通信方式有PCIe中斷,EDMA通信方式有EDMA中斷[13]等。

      中斷機(jī)制在數(shù)據(jù)通信中起著重要作用,靈活運(yùn)用中斷機(jī)制能夠?yàn)橄到y(tǒng)性能帶來提升。本文基于TMS320C6678提供的共享存儲(chǔ)器,利用多核處理器核間中斷機(jī)制,設(shè)計(jì)并實(shí)現(xiàn)了一種簡(jiǎn)易的核間通信方法,下面從通信數(shù)據(jù)結(jié)構(gòu)、核間中斷請(qǐng)求和響應(yīng)、消息發(fā)送、消息接收及消息通信過程五個(gè)部分進(jìn)行詳細(xì)介紹。

      3.1 通信數(shù)據(jù)結(jié)構(gòu)

      在進(jìn)行數(shù)據(jù)通信時(shí),消息都是以一定的結(jié)構(gòu)存放于系統(tǒng)內(nèi)存中,稱之為通信數(shù)據(jù)結(jié)構(gòu),本文設(shè)計(jì)的通信數(shù)據(jù)結(jié)構(gòu)如下:

      基于TMS320C6678的存儲(chǔ)體系結(jié)構(gòu),將用于通信的數(shù)據(jù)(即sysMsg類型數(shù)據(jù))存放于共享內(nèi)存(如:DDR3)中,以實(shí)現(xiàn)多核間的數(shù)據(jù)通信。由于多核之間可相互進(jìn)行通信,且多核之間并行運(yùn)行,如果使用同一塊共享內(nèi)存,那么多核之間必然存在競(jìng)爭(zhēng),可能導(dǎo)致系統(tǒng)死鎖或者數(shù)據(jù)無效,因此,需要對(duì)共享內(nèi)存空間進(jìn)行劃分。本文設(shè)計(jì)的通信方法為每一對(duì)通信核單獨(dú)劃分一塊固定的共享內(nèi)存塊,這樣可以避免多核并行運(yùn)行時(shí)系統(tǒng)出現(xiàn)錯(cuò)誤,如圖3所示,TMS320C6678有8個(gè)核,兩兩組成一對(duì)通信核,因此,將共享內(nèi)存劃分為28個(gè)固定存儲(chǔ)塊用于存放sysMsg類型數(shù)據(jù),并且,通過sysMsg類型中的標(biāo)志位域進(jìn)行通信雙方的同步。

      圖3 共享內(nèi)存空間劃分

      3.2 核間中斷請(qǐng)求和響應(yīng)

      當(dāng)消息發(fā)送方完成數(shù)據(jù)發(fā)送后,本文設(shè)計(jì)的通信方法通過核間中斷喚醒接收方進(jìn)行數(shù)據(jù)接收,避免了查詢,提高了處理器利用率和通信效率。

      核間中斷主要包括中斷請(qǐng)求(即觸發(fā)中斷)和中斷響應(yīng)(即運(yùn)行中斷服務(wù)程序)。其中,發(fā)送方可以通過配置核間中斷寄存器產(chǎn)生核間中斷,同時(shí)將發(fā)送方所在核(源核)信息保存在中斷確認(rèn)寄存器中,詳細(xì)方法參見本文第二章。當(dāng)接收方所在的核(目的核)響應(yīng)該核間中斷時(shí),將從中斷確認(rèn)寄存器中獲取源核信息,同時(shí)處理消息數(shù)據(jù)。由于同一個(gè)核可能同時(shí)接收來自不同核發(fā)送的消息數(shù)據(jù),因此,本文設(shè)計(jì)了一個(gè)全局中斷服務(wù)函數(shù)表gFunc,用于存放源核x對(duì)應(yīng)的中斷服務(wù)函數(shù)。當(dāng)目標(biāo)核收到源核發(fā)送的核間中斷后,立即響應(yīng)該中斷跳轉(zhuǎn)到中斷服務(wù)程序,調(diào)用中斷服務(wù)函數(shù)表中的函數(shù)進(jìn)行消息數(shù)據(jù)處理。中斷處理過程如圖4所示。

      圖4 中斷處理過程

      3.3 消息發(fā)送

      完成通信數(shù)據(jù)結(jié)構(gòu)定義、共享內(nèi)存空間劃分和中斷服務(wù)函數(shù)設(shè)置后,通過消息發(fā)送函數(shù)進(jìn)行核間通信。在消息發(fā)送過程中,首先,指定發(fā)送目的核號(hào);其次,根據(jù)通信雙方核號(hào)查找對(duì)應(yīng)的共享內(nèi)存塊;然后,獲取共享資源互斥鎖,循環(huán)檢查標(biāo)志位狀態(tài)信息,直到共享內(nèi)存塊可寫(即標(biāo)志位為0);接著,向共享內(nèi)存塊中寫入消息數(shù)據(jù),設(shè)置共享內(nèi)存塊不可寫(即標(biāo)志位置為1),釋放共享資源互斥鎖;最后,向目的核發(fā)送核間中斷,通知目的核接收消息。其發(fā)送流程如圖5所示。

      圖5 消息發(fā)送流程圖

      3.4 消息接收

      當(dāng)源核消息發(fā)送完成后,通過核間中斷通知目的核進(jìn)行消息接收,即源核將消息寫入共享內(nèi)存塊后,向目的核發(fā)送核間中斷,目的核收到該中斷后,立即響應(yīng)并執(zhí)行中斷服務(wù)程序,并根據(jù)源核號(hào)跳轉(zhuǎn)到對(duì)應(yīng)的中斷服務(wù)函數(shù)中進(jìn)行消息接收處理。在消息接收過程中,首先,根據(jù)源核號(hào)與目的核號(hào)查找存放消息的共享內(nèi)存塊;然后,獲取共享資源互斥鎖,循環(huán)檢查標(biāo)志位狀態(tài)信息,直到共享內(nèi)存塊可讀(即標(biāo)志位為1);接著,從共享內(nèi)存塊中讀出消息數(shù)據(jù),設(shè)置共享內(nèi)存塊可寫(即標(biāo)志位置為0),釋放共享資源互斥鎖;最后,對(duì)消息數(shù)據(jù)進(jìn)行處理。消息接收流程如圖6所示。

      圖6 消息接收流程圖

      3.5 消息通信過程

      結(jié)合消息發(fā)送流程和消息接收流程,一次完整的核間消息通信過程如圖7所示。

      圖7 消息通信過程圖

      消息塊結(jié)構(gòu)體包含兩個(gè)成員,標(biāo)志位和消息體。標(biāo)志位用于監(jiān)控當(dāng)前傳輸狀態(tài),當(dāng)標(biāo)志位為0時(shí),發(fā)送方才能向消息體寫入數(shù)據(jù),當(dāng)標(biāo)志位為1時(shí)接收方才能從消息體中讀取數(shù)據(jù)。標(biāo)志位可以保證頻繁發(fā)送時(shí),前一次發(fā)送的數(shù)據(jù)不被覆蓋。下面以核0向核1發(fā)送消息為例對(duì)傳輸過程進(jìn)行說明:

      1)核0查看0核和1核這一對(duì)通信核對(duì)應(yīng)的共享內(nèi)存塊標(biāo)志位是否為0,若為0,則轉(zhuǎn)入步驟2);若不為0,則表明上一次傳輸?shù)南⑦€沒處理,核0向核1發(fā)送核間中斷,并轉(zhuǎn)入步驟1)。

      2)核0向共享內(nèi)存塊的消息體寫入數(shù)據(jù),并更改共享內(nèi)存塊的標(biāo)志位為1。

      3)核0向核1發(fā)送核間中斷,通知核1進(jìn)行處理消息。

      4)核1收到核0的核間中斷后,進(jìn)入中斷服務(wù)程序函數(shù),對(duì)共享內(nèi)存塊中的消息體數(shù)據(jù)進(jìn)行處理,處理完成后更改共享內(nèi)存塊中的標(biāo)志位為0。

      4 核間通信測(cè)試

      本文選擇TI的TMS320C6678開發(fā)板卡作為實(shí)驗(yàn)平臺(tái),對(duì)本文設(shè)計(jì)的核間通信方法進(jìn)行壓力測(cè)試和性能測(cè)試。

      壓力測(cè)試通過選取DSP任意一個(gè)核作為主核向其他從核連續(xù)發(fā)送消息,從核收到消息后立即回發(fā)給主核一個(gè)應(yīng)答消息,主核收到所有的從核應(yīng)答消息后進(jìn)行下一輪測(cè)試,該過程持續(xù)測(cè)試4h,檢查系統(tǒng)是否正常運(yùn)行。

      性能測(cè)試通過選取任意兩個(gè)核進(jìn)行通信,發(fā)送核循環(huán)向目標(biāo)核發(fā)送100萬次消息,目標(biāo)核收到消息后立即處理,統(tǒng)計(jì)發(fā)送100萬次所耗時(shí)間,并計(jì)算發(fā)送速率,其測(cè)試結(jié)果如表1所示。

      表1 核間通信測(cè)試結(jié)果

      經(jīng)測(cè)試,該核間通信方法可以完成核間消息傳輸;在進(jìn)行4h的一對(duì)多核傳輸壓力測(cè)試過程中,消息無丟失且數(shù)據(jù)傳輸正確,該方法可保證消息傳輸?shù)挠行?;在一?duì)一傳輸速率測(cè)試中,測(cè)試100萬次,其發(fā)送速率可達(dá)到33.3萬次/s。

      5 結(jié)語

      采用多核處理器是提高嵌入式系統(tǒng)性能的一個(gè)重要途徑,雖然多核系統(tǒng)能較大地提高系統(tǒng)的運(yùn)算能力,但同時(shí)也給應(yīng)用開發(fā)人員帶來了一些困難。嵌入式多核系統(tǒng)應(yīng)用開發(fā)所面臨的難題之一是多核之間的通信,只有保證通信數(shù)據(jù)的有效性和實(shí)時(shí)性,運(yùn)行在多核處理器上的任務(wù)才能高效并行運(yùn)行,多核處理器的性能才能得到充分發(fā)揮。

      本文在研究了嵌入式多核處理器架構(gòu)的基礎(chǔ)上,充分利用多核處理器核間中斷機(jī)制,將共享內(nèi)存塊作為消息載體,設(shè)計(jì)并實(shí)現(xiàn)了一種包含消息發(fā)送與接收的多核處理器間消息通信方法。經(jīng)過測(cè)試驗(yàn)證,該方法可以滿足多核處理器之間的高效、穩(wěn)定通信。在后續(xù)的研究工作中,可對(duì)本方法進(jìn)行功能擴(kuò)展與優(yōu)化,以滿足日益復(fù)雜的應(yīng)用場(chǎng)景需求。

      猜你喜歡
      間通信共享內(nèi)存寄存器
      細(xì)胞間通信預(yù)測(cè)方法研究進(jìn)展
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      通過QT實(shí)現(xiàn)進(jìn)程間的通信
      綜合航電分區(qū)間通信元模型設(shè)計(jì)研究
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      基于PCI總線的多處理器協(xié)同機(jī)制研究
      QNX下PEX8311多路實(shí)時(shí)數(shù)據(jù)采集的驅(qū)動(dòng)設(shè)計(jì)
      電子世界(2014年21期)2014-04-29 06:41:36
      一種高效RTAI 共享內(nèi)存管理層的研究與實(shí)現(xiàn)*
      基于核間寄存器的多核虛擬機(jī)系統(tǒng)中虛擬機(jī)間通信研究
      一種適應(yīng)多核處理器核間通信機(jī)制的設(shè)計(jì)
      雅江县| 乐安县| 伊宁县| 澄江县| 田林县| 建湖县| 镇原县| 荔浦县| 于都县| 芒康县| 聊城市| 中山市| 威海市| 蕉岭县| 正宁县| 新乡县| 武清区| 泊头市| 民丰县| 古蔺县| 多伦县| 云阳县| 台北县| 盱眙县| 永安市| 夹江县| 门源| 邓州市| 桂东县| 长兴县| 吉木乃县| 襄城县| 新巴尔虎右旗| 崇文区| 宝清县| 洛宁县| 湘潭市| 北碚区| 钟山县| 栖霞市| 梅河口市|