• 
    

    
    

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

      硬件信號量在多核處理器核間通信中的應(yīng)用

      2015-09-12 06:42:20劉德保汪安民韓道文
      關(guān)鍵詞:間通信信號量寄存器

      劉德保,汪安民,韓道文

      (1.同方電子科技有限公司研究所,九江332009;2.解放軍電子工程學院)

      引 言

      多核處理器由于片內(nèi)集成多個處理器,在對處理能力要求較高的應(yīng)用場合得到了大規(guī)模使用;同時多核處理器的超強處理能力,也推動了產(chǎn)品功能的多樣化。目前,多核處理器主要以片內(nèi)集成多款不同類型的處理芯片為主,一般集成FPGA/DSP/ARM/CPU 以及專用的協(xié)處理器等,如TI公司的AK2系列,集成多個DSP和多個ARM 核。此外,也有集成單一型號的多個處理器,如多核DSP 芯片TMS320C66系列,集成了2、4或8個同樣的DSP核。

      多核處理器中的多個單核一般需要聯(lián)合工作,聯(lián)合工作時它們之間的通信、握手、數(shù)據(jù)交換非常重要。尤其是在軟件復雜度較高,且對運行時序要求嚴格的情況下,核間通信成為整個軟件的關(guān)鍵。核間通信一般有3種方式:共享數(shù)據(jù)空間、硬件中斷和任務(wù)中斷。共享數(shù)據(jù)空間,是指兩個核都可以訪問相同的內(nèi)存空間,根據(jù)其信息來交換數(shù)據(jù)和狀態(tài)。該方式一般需要逐個核去查詢,但采用查詢方法一般很難適用于實時性要求較高的場合。硬件中斷方式,是核之間通過硬件中斷方式來通知狀態(tài),這種方式實時性最高,可以實時響應(yīng)中斷,但引起的問題是:如果存在多個任務(wù),核間中斷會打斷正在運行的較高優(yōu)先級的事件;如果在高級事件中屏蔽中斷,在多次中斷中只會響應(yīng)最后一次中斷,導致前面的中斷丟失。為了解決這兩個問題,多核處理器一般采用任務(wù)中斷方式來實現(xiàn)核間信息交互。在單核的軟件中,任務(wù)是實時運行的進程,由信號量來觸發(fā)。一個任務(wù)完成后退出,信號量會減1,直到該任務(wù)對應(yīng)的信號量為0;觸發(fā)一個任務(wù),就會給該任務(wù)的信號量加1。在多核處理器中,將信號量做成硬件信號量(Hardware Semaphore)來實現(xiàn)核間通信,硬件信號量具有硬件中斷的實時性,又具有任務(wù)的排隊機制,可以較好地解決核間通信問題。

      本文以8核DSP 芯片TMS320C6678為例介紹了硬件信號量的應(yīng)用。文中詳細介紹了硬件信號量模塊的結(jié)構(gòu)和寄存器組合,以及實現(xiàn)核間中斷的原理,最后以實例介紹兩個核之間利用硬件信號量交互信息的方法和流程。

      1 多核DSP及其結(jié)構(gòu)

      TMS320C6678(C6678)是TI公司多核處理器中的一款8核浮點型DSP,最高工作頻率達到1.25GHz,單核可以提供40GMAC定點計算或者20GFLOPS浮點計算能力,單個芯片可以提供320GMAC 或者160GFLOPS計算能力。C6678的片內(nèi)結(jié)構(gòu)如圖1所示。

      圖1 TMS320C6678內(nèi)部結(jié)構(gòu)圖

      C6678的每個核具有32KB的程序、32KB的數(shù)據(jù)以及512KB的二級Cache存儲空間,芯片片內(nèi)具有一個4 MB的共享SRAM。C6678具有DDR3控制器接口,可以外接DDR3,直接尋址范圍達到8GB。C6678的片內(nèi)設(shè)有RapidIO、PCIe、EMIF以及I2C/SPI等接口,這些接口通過片內(nèi)的TeraNet總線和各個處理器交互數(shù)據(jù)。從圖1中可以看出,核訪問共享RAM 的速度最快,它們之間不通過TeraNet,而是有專用的數(shù)據(jù)總線,也不會和其他外設(shè)產(chǎn)生沖突,每個核訪問共享RAM 的速率大概在50Gb/s。

      每個核訪問DDR3的速度僅次于訪問共享RAM,因為DDR3的數(shù)據(jù)需要通過共享RAM 過渡,其訪問速度讀寫有所差別,讀速率可以到10 Gb/s,寫速率可以到20Gb/s。核訪問其他片內(nèi)和片外設(shè)備都要經(jīng)過TeraNet,可能存在總線仲裁,但這些外設(shè)一般不會長時間占據(jù)TeraNet總線。各個核通過TeraNet訪問硬件信號量,也可以通過TeraNet和HyperLink接口實現(xiàn)兩個芯片之間的硬件信號量訪問。

      2 硬件信號量模塊

      硬件信號量模塊的組成如圖2所示,主要由信號量模塊、寄存器組和中斷模塊3部分組成。

      硬件信號量模塊由64個獨立的信號量組成,這64個信號量和硬件資源以及核之間沒有必然聯(lián)系,由軟件根據(jù)每個核處理任務(wù)的多少分配,任務(wù)多的核獲得更多的信號量。對信號量的訪問有3種方式:直接訪問(圖中的SEM_Dir)、間接訪問(SEM_inDir)和查詢方式(SEM_Query)。這3種方式軟件上訪問的方法都一樣,就是對相應(yīng)的寄存器進行讀寫操作,但不同訪問方式的硬件響應(yīng)機制不同。

      直接訪問方式下,如果該信號量空閑,訪問的核將馬上捕獲該信號量;如果該信號量被其他核占用,將返回,整個訪問工作結(jié)束。

      間接訪問方式和直接訪問的唯一差別就是當該信號量被占用時,訪問的事件被發(fā)布到隊列中排隊,一旦信號量被其他核釋放,隊列采用先進先出的方式給相應(yīng)的核發(fā)出中斷,相應(yīng)的核占用該信號量。

      查詢方式是利用寄存器查詢信號量的狀態(tài)。這3種訪問方式的狀態(tài)如表1所列。

      表1 三種硬件信號量訪問的狀態(tài)

      圖2 硬件信號量模塊

      硬件信號量有兩個中斷,其中一個為正常的捕獲中斷,該中斷由讀寫寄存器啟動,由信號量被釋放觸發(fā),反映到EOI(End Of Interrupt)寄存器,該寄存器發(fā)送中斷到相應(yīng)的CPU,CPU 根據(jù)中斷標志寄存器中(高32個信號量反映到FLAGH_0,低32個信號量反映到FLAGL_0)的標志位識別是來自哪個信號量的中斷。CPU 完成中斷服務(wù)程序,退出中斷時要通過FLAG_C 寄存器來清除標志位,為下一次中斷作準備;CPU 也可以通過FLAG_S寄存器人為設(shè)置一個中斷標志,產(chǎn)生一個中斷。

      硬件信號量的另外一個中斷為錯誤中斷,當出現(xiàn)錯誤訪問時會產(chǎn)生該中斷,中斷響應(yīng)及操作方法與捕獲中斷類似。產(chǎn)生錯誤的情況有:去釋放某個空閑信號量;去釋放其他核占用的信號量;捕獲一個自身占用的信號量;多次去捕獲一個被占用的信號量。

      3 軟件設(shè)計

      硬件信號量的軟件設(shè)計主要包括初始化、中斷響應(yīng)和中斷服務(wù)程序。由于硬件信號量是用于核間通信,使得調(diào)試工作需要在多個核之間切換,查閱各自寄存器。

      因為是核間通信,采用單核常用的斷點和單步這些調(diào)試方法將非常困難,需要軟件設(shè)計者非常清晰地了解多個核的程序運行情況。

      下面是核0和核1之間通過硬件信號量10來實現(xiàn)通信的例子。軟件流程如圖3所示。

      圖3 軟件流程

      首先各個核進行各自寄存器的初始化,主要包括硬件信號量寄存器和中斷寄存器的初始化。

      需要注意的是,由于每個核都進行初始化,而且每個核都可以訪問這些寄存器,所以不能出現(xiàn)配置的紊亂,也不能出現(xiàn)多個核同時對某個寄存器配置的情況,這樣可能會寫入錯誤數(shù)據(jù)(即使在寫入同樣數(shù)據(jù)情況下)。

      為了避免核1首先搶占信號量10,程序中核0先鎖定核1,然后確保自己可以捕獲到信號量10,捕獲后釋放核1,此時核1可以請求硬件信號量10。

      但此時,信號量10被核0占用,核1無法得到請求,核1的請求被放到請求隊列中,核1的請求任務(wù)結(jié)束,可以進行其他任務(wù)。一旦核0釋放了信號量10,核1會收到一個硬件中斷,因為中斷優(yōu)先級高于任務(wù),核1將響應(yīng)該中斷,進入中斷服務(wù)程序,完成中斷服務(wù)程序后會繼續(xù)執(zhí)行被打斷的任務(wù)。

      硬件信號量的中斷服務(wù)程序一般用于共享RAM 的讀寫,因為共享RAM 只有一組數(shù)據(jù)總線,無法實現(xiàn)多個核同時讀寫。如果多個核同時讀寫該空間,會出現(xiàn)等待現(xiàn)象,使得處理器的使用效率降低。

      如果時序處理不好,會出現(xiàn)總線互鎖現(xiàn)象,使得程序無法進行。采用硬件信號量后,可以按照優(yōu)先排隊方法進行隊列管理,而且由于一個核不可能多次申請一個硬件信號量,所以在軟件上很容易管理。如果軟件功能較多、設(shè)計復雜,可以通過增加硬件信號量來區(qū)分,最多可以增加64個硬件信號量,基本能夠滿足當前處理器的要求。

      結(jié) 語

      硬件信號量是多核處理器中一種新模塊,它將單核的信號量硬件化,實現(xiàn)快速實時的操作,并和硬件中斷聯(lián)系在一起,實現(xiàn)了多核之間的握手協(xié)議。硬件信號量具有相應(yīng)的隊列排隊機制,既不會出現(xiàn)中斷丟失問題,也不會出現(xiàn)多次訪問問題。硬件信號量解決了常規(guī)硬件中斷中多次中斷不響應(yīng)會丟失的問題,實現(xiàn)了軟件和硬件的相結(jié)合,在多核軟件編程中,是比較好的一種核間通信機制。

      [1]李巖,谷萍萍.硬件實時操作系統(tǒng)信號量管理的設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,2010(11).

      [2]Texas Instruments Inc.TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual[EB/OL].(2013-04)[2014-07].http://www.ti.com/.

      [3]Texas Instruments Inc.KeyStone Architecture Semaphore2 Hardware Module User Guide[EB/OL].(2012-04)[2014-07].http://www.ti.com/.

      [4]丁有源,汪安民.基于多核任務(wù)并行處理的DSP軟硬件設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2012(5).

      猜你喜歡
      間通信信號量寄存器
      基于STM32的mbedOS信號量調(diào)度機制剖析
      細胞間通信預(yù)測方法研究進展
      Lite寄存器模型的設(shè)計與實現(xiàn)
      綜合航電分區(qū)間通信元模型設(shè)計研究
      Nucleus PLUS操作系統(tǒng)信號量機制的研究與測試
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      μC/OS- -III對信號量的改進
      Linux操作系統(tǒng)信號量機制的實時化改造
      基于核間寄存器的多核虛擬機系統(tǒng)中虛擬機間通信研究
      一種適應(yīng)多核處理器核間通信機制的設(shè)計
      定襄县| 安仁县| 句容市| 明光市| 武城县| 新泰市| 仲巴县| 邹平县| 乌什县| 澜沧| 武乡县| 黎平县| 海南省| 香格里拉县| 中卫市| 凯里市| 榆中县| 沂南县| 镇沅| 安塞县| 安庆市| 阳高县| 富民县| 磐石市| 濉溪县| 荃湾区| 克拉玛依市| 准格尔旗| 自治县| 贵南县| 体育| 阜新| 佛坪县| 沧州市| 二连浩特市| 彩票| 白河县| 田林县| 济源市| 日照市| 积石山|