国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      內(nèi)核間報文描述消息的傳遞方法

      文檔序號:7616875閱讀:142來源:國知局
      專利名稱:內(nèi)核間報文描述消息的傳遞方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及多內(nèi)核處理器中內(nèi)核間的通信方法,更具體的說,本發(fā)明涉及一種多內(nèi)核處理器中內(nèi)核間報文描述消息的傳遞方法。
      背景技術(shù)
      隨著信息技術(shù)的發(fā)展,處理器處理的數(shù)據(jù)流量越來越大。傳統(tǒng)單個處理內(nèi)核的處理器已無法滿足處理性能的要求。因此出現(xiàn)了多個處理內(nèi)核的處理器,在這種多內(nèi)核的處理器中,習(xí)慣上把一個特定的功能模塊在一個處理內(nèi)核中實現(xiàn),這一類處理器的內(nèi)核使用公共的動態(tài)隨機存取存儲器(DRAM,Dynamic Random-Access Memory)、靜態(tài)隨機存取存儲器(SRAM,SynchronousRandom-Access Memory)等資源存儲處理的數(shù)據(jù)報文,這樣不同的處理內(nèi)核之間數(shù)據(jù)報文的傳遞,并不需要進行數(shù)據(jù)報文的完整傳遞,參考圖1所示,只需要把數(shù)據(jù)報文的屬性(如數(shù)據(jù)的存放索引等)等報文描述消息傳送給下一個內(nèi)核的相應(yīng)模塊即可。
      良好的消息傳送機制是發(fā)揮多內(nèi)核處理器性能的重要因素,由于各個內(nèi)核模塊間的消息傳遞量很大,因此需要使用高效的消息傳遞方法,保證內(nèi)核模塊之間消息的高速和可靠傳遞。
      參考圖2所示,現(xiàn)有技術(shù)中采用ring的方法實現(xiàn)在內(nèi)核間傳送報文描述消息,以內(nèi)核CPU和內(nèi)核ME之間的通信為例進行說明,CPU和ME之間的通信是通過兩個環(huán)形隊列(ring)來實現(xiàn)的,兩個環(huán)形隊列的結(jié)構(gòu)一致,由128個entry組成,每個ring由兩個指針(讀和寫),其中ME和CPU各維護一個。
      其中ring entry的結(jié)構(gòu)如表一所示表一
      ENTRY結(jié)構(gòu)中各個長字詳細定義如表二所示表二
      根據(jù)上述的entry結(jié)構(gòu),具體的報文描述消息傳遞流程分為接收端和發(fā)送端分別描述如下接收端1)若read_ptr!=write_ptr,開始接收read_ptr指向的entry的報文描述消息。
      2)若entry中的D字段為真,處理entry中的buffer pointer指向的報文描述消息,若D標志為假,等待發(fā)送端把entry中D字段設(shè)置為真。
      3)當前entry接收處理完成,把entry中R字段置為真,D字段置為假,read_ptr加一。
      4)返回1)繼續(xù)接收。
      發(fā)送端1)如果read_ptr?。絯rite_ptr+1,向write_ptr指向的entry發(fā)送報文描述消息。
      2)釋放entry中上次接收完的buffer pointer,如果buffer pointer被接收端修改,可能導(dǎo)致buffer pointer丟失。
      3)如果entry中的R字段為真,向entry中的相應(yīng)消息字段填寫報文描述消息,如果所述的R字段為假,等待接收端把R字段設(shè)置為真。
      4)當前entry發(fā)送處理完成,把D字段置為真,R字段設(shè)置為假,write_ptr加一。
      5)返回1)繼續(xù)接收。
      上述現(xiàn)有技術(shù)存在如下的缺點首先,根據(jù)上述的entry結(jié)構(gòu),報文描述消息讀寫控制域中包括R、D、S、E字段,在對所述的R、D、S字段的處理時會造成ring異常吊死。例如接收端內(nèi)核如果發(fā)現(xiàn)read_ptr不等于write_ptr,認為消息需要接收,但是entry中的D字段(因為誤操作)沒有設(shè)置成真,則接收端內(nèi)核會在當前entry一直等待,使ring吊死;反之如果發(fā)送端出現(xiàn)R字段設(shè)置錯誤,處理也會停止。
      其次,上述現(xiàn)有技術(shù)中若對entry結(jié)構(gòu)的R、D字段處理異?;騜uffer不釋放,可能導(dǎo)致buffer丟失,使報文的處理出現(xiàn)問題。
      再次,由于報文緩存地址buffer addr和R、D、S、E設(shè)置在一個長字中,具體處理時,內(nèi)核讀寫該長字可能導(dǎo)致該長字錯誤(例如CPU通過PCI讀寫該長字),使報文緩存地址丟失。例如在對R、D、S、E等字段的操作中可能造成buffer pointer的錯誤(由于在一個長字中,誤操作難以避免),正確的bufferpointer指向的緩存buffer將會丟失。

      發(fā)明內(nèi)容
      本發(fā)明解決的技術(shù)問題是提供一種內(nèi)核間報文描述消息的傳遞方法,以避免傳遞消息的環(huán)形隊列異常吊死。
      為解決上述問題,本發(fā)明提供的內(nèi)核間報文描述消息的傳遞方法,包括A、在所述的環(huán)形隊列的每項入口entry的報文描述消息讀寫控制域中僅設(shè)置標識一個報文結(jié)束的報文結(jié)束字段;
      B、通過所述的報文結(jié)束字段將傳遞的各個報文的報文描述消息寫入環(huán)形隊列中;C、通過所述的報文結(jié)束字段從所述的環(huán)形隊列中讀取傳遞的各個報文的報文描述信息。
      其中,步驟B包括B1、對環(huán)形隊列進行初始化,分配該環(huán)形隊列各個入口entry的緩存地址;B2、發(fā)送報文描述信息時,獲取所述的環(huán)形隊列寫指針指向的entry的緩存地址;B3、獲取報文描述信息內(nèi)容;B4、將所述的報文描述信息內(nèi)容寫入寫指針指向的entry的相應(yīng)字段中;B5、一個報文的報文描述消息寫入完畢,將緩存該報文最后一個報文描述消息的entry中報文結(jié)束字段置為真。
      其中,步驟C包括C1、接收報文描述消息時,獲取所述的環(huán)形隊列讀指針指向的entry的緩存地址;C2、從所述的讀指針指向的entry的緩存地址的entry相應(yīng)字段中讀取報文描述消息;C3、檢測到entry中報文結(jié)束字段為真,則接收該entry中的報文描述消息后,讀取一個報文的報文描述消息完畢。
      其中,所述的報文描述消息包括報文緩存地址、地址偏移、報文類型、報文長度和報文連接特性。
      其中,所述的環(huán)形隊列的每項入口entry中以一個長字標識所述的報文緩存地址。
      其中,所述的環(huán)形隊列的入口entry包括如下字段
      長字0,標識報文結(jié)束的報文結(jié)束字段、保留字段和地址偏移字段;長字1,報文連接特性字段;長字2,報文類型字段和報文長度字段長字3,報文緩存地址字段。
      與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果首先,本發(fā)明的環(huán)形隊列ring的entry結(jié)構(gòu)中報文描述消息讀寫控制域中僅設(shè)置標識一個報文結(jié)束的報文結(jié)束字段,各個內(nèi)核都根據(jù)所述的報文結(jié)束字段進行報文描述消息的接收和發(fā)送,因此可避免現(xiàn)有技術(shù)中對R、D和S字段處理造成的ring異常吊死問題;其次,本發(fā)明中ring的entry結(jié)構(gòu)中沒有設(shè)置R、D字段,可避免現(xiàn)有技術(shù)中若R、D字段處理異?;騜uffer不釋放,導(dǎo)致buffer丟失,進一步使報文處理出現(xiàn)的問題情況;再次,本發(fā)明中ring的entry結(jié)構(gòu)中以一個單獨的長字標識報文緩存地址,報文結(jié)束字段E設(shè)置在另一個長字中,由內(nèi)核讀寫該E字段所在的長字時,即使讀寫該長字錯誤,也不會出現(xiàn)報文緩存地址buffer addr丟失的問題。


      圖1是現(xiàn)有技術(shù)多內(nèi)核處理器中內(nèi)核間傳遞報文描述消息的示意圖;圖2是現(xiàn)有技術(shù)中內(nèi)核間以環(huán)形隊列進行通信的示意圖;圖3是本發(fā)明內(nèi)核間報文描述消息的傳遞方法中內(nèi)核間以環(huán)形隊列進行通信的示意圖;圖4是本發(fā)明內(nèi)核間報文描述消息的傳遞方法中根據(jù)讀寫指針進行消息讀寫的示意圖;
      圖5是本發(fā)明內(nèi)核間報文描述消息的傳遞方法中向ring中寫入報文描述消息的流程圖;圖6是本發(fā)明內(nèi)核間報文描述消息的傳遞方法中從ring中讀取報文描述消息的流程圖。
      具體實施例方式
      參考圖3,本發(fā)明中內(nèi)核之間的報文描述消息傳遞通過ring進行,每個內(nèi)核擁有一個ring供且僅供本內(nèi)核取報文描述消息進行處理,但是每個ring的報文描述消息可以由多個內(nèi)核提供,具體的,本發(fā)明中應(yīng)用的ring是一種環(huán)形隊列,一般由N個entry組成,訪問N后歸0。Ring的訪問位置和許可由兩個指針write_ptr、read_ptr維護,write_ptr為當前寫的指針,read_ptr為當前讀的指針。
      參考圖4,本發(fā)明中Ring滿的狀態(tài)為write_ptr=read_ptr-1。Ring空的狀態(tài)為write_ptr=read_ptr。發(fā)送方只要ring不是滿的狀態(tài)就可以往write_ptr指向的ring entry中寫消息。接收方只要ring不是空的狀態(tài)就應(yīng)該從read_ptr指向的ringentry中讀數(shù)據(jù)。
      本發(fā)明中所述的環(huán)形隊列的每項入口entry的報文描述消息讀寫控制域中僅設(shè)置標識一個報文結(jié)束的報文結(jié)束字段;具體發(fā)送消息時,通過所述的報文結(jié)束字段將傳遞的各個報文的報文描述消息寫入環(huán)形隊列中;接收消息時,同樣以所述的報文結(jié)束字段從所述的環(huán)形隊列中讀取傳遞的各個報文的報文描述信息。由于讀寫報文描述消息的內(nèi)核都僅根據(jù)報文結(jié)束字段進行消息讀寫,各個內(nèi)核的操作流程一致,不會出現(xiàn)ring異常問題。
      通常在內(nèi)核之間傳送的是報文,傳遞一個報文需要的報文描述消息通常包括報文存放的buffer的地址、偏移,以便用于找到報文的內(nèi)容;如果報文存放在多個buffer,報文的結(jié)束標志,用于定界一個完整報文。
      報文類型、長度以及連接特性(對于ATM報文,連接特性包括PVC信息等)。
      本發(fā)明中同樣需要通過在ring的entry結(jié)構(gòu)中設(shè)置相應(yīng)的消息字段存儲上述的報文描述消息。
      下面以內(nèi)核間傳遞ATM報文的具體例子進行說明。
      本實施例中ring的entry可以設(shè)置如表三所示表三

      其中各個長字的定義如表四所示表四

      上述ring的entry結(jié)構(gòu)中報文描述消息的控制指示域中僅設(shè)置報文結(jié)束字段E,另外,報文緩存地址Free_Buffer_Address單獨設(shè)置在一個長字中(本實施例設(shè)置在長字3)。
      下面具體說明根據(jù)上述ring的entry結(jié)構(gòu)進行報文描述消息的傳遞流程。
      本發(fā)明中需要對ring進行初始化操作,給ring的各個entry分配一個緩存buffer,并計算該緩存buffer的緩存地址buffer_addr,然后封裝entry的緩存地址buffer_addr,設(shè)置該entry的其他字段為0。
      參考圖5,該圖是本發(fā)明內(nèi)核間報文描述消息的傳遞方法中向ring中寫入報文描述消息的流程圖,具體的,向ring中寫入報文描述消息主要包括如下步驟在步驟10,發(fā)送報文描述信息時,獲取所述的環(huán)形隊列寫指針指向的entry的緩存地址;然后在步驟11,獲取報文緩存地址、地址偏移、報文類型和報文連接特性等的報文描述消息;進一步在步驟12,將報文緩存地址、地址偏移、報文類型和報文連接特性等的報文描述消息寫入寫指針指向的entry的相應(yīng)消息字段中;最后在步驟13,一個報文的報文描述消息寫入完畢,將緩存該報文最后一個報文描述消息的entry中報文結(jié)束字段置為真。
      參考圖6,該圖是本發(fā)明內(nèi)核間報文描述消息的傳遞方法中從ring中讀取報文描述消息的流程圖。從ring接收報文描述消息主要包括以下步驟在步驟20,接收報文描述信息時,獲取所述的環(huán)形隊列讀指針指向的entry的緩存地址;在步驟21,從所述的讀指針指向的entry的緩存地址的entry相應(yīng)消息字段中讀取報文描述信息;在步驟22,檢測到entry中報文結(jié)束字段為真,則接收該entry中的報文描述信息后,讀取一個報文的報文描述消息完畢。
      以上所述僅為本發(fā)明的優(yōu)選實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護范圍之內(nèi)。
      權(quán)利要求
      1.一種內(nèi)核間報文描述消息的傳遞方法,所述的內(nèi)核間以環(huán)形隊列進行通信,通過所述的環(huán)形隊列的讀指針和寫指針控制進行傳遞的各個報文的報文描述消息的接收和發(fā)送,其特征在于,包括A、在所述的環(huán)形隊列的每項入口entry的報文描述消息讀寫控制域中僅設(shè)置標識一個報文結(jié)束的報文結(jié)束字段;B、通過所述的報文結(jié)束字段將傳遞的各個報文的報文描述消息寫入環(huán)形隊列中;C、通過所述的報文結(jié)束字段從所述的環(huán)形隊列中讀取傳遞的各個報文的報文描述信息。
      2.根據(jù)權(quán)利要求1所述的內(nèi)核間報文描述消息的傳遞方法,其特征在于,步驟B包括B1、對環(huán)形隊列進行初始化,分配該環(huán)形隊列各個入口entry的緩存地址;B2、發(fā)送報文描述信息時,獲取所述的環(huán)形隊列寫指針指向的entry的緩存地址;B3、獲取報文描述信息內(nèi)容;B4、將所述的報文描述信息內(nèi)容寫入寫指針指向的entry中;B5、一個報文的報文描述消息寫入完畢,將緩存該報文最后一個報文描述消息的entry中報文結(jié)束字段置為真。
      3.根據(jù)權(quán)利要求2所述的內(nèi)核間報文描述消息的傳遞方法,其特征在于,步驟C包括C1、接收報文描述消息時,獲取所述的環(huán)形隊列讀指針指向的entry的緩存地址;C2、從所述的讀指針指向的entry中讀取報文描述消息;C3、檢測到entry中報文結(jié)束字段為真,則接收該entry中的報文描述消息后,讀取一個報文的報文描述消息完畢。
      4.根據(jù)權(quán)利要求1-3任一項所述的內(nèi)核間報文描述消息的傳遞方法,其特征在于,所述的報文描述消息包括報文緩存地址、地址偏移、報文類型、報文長度和報文連接特性。
      5.根據(jù)權(quán)利要求4所述的內(nèi)核間報文描述消息的傳遞方法,其特征在于,所述的環(huán)形隊列的每項入口entry中以一個長字標識所述的報文緩存地址。
      6.根據(jù)權(quán)利要求5所述的內(nèi)核間報文描述消息的傳遞方法,其特征在于,所述的環(huán)形隊列的入口entry包括如下字段長字0,標識報文結(jié)束的報文結(jié)束字段、保留字段和地址偏移字段;長字1,報文連接特性字段;長字2,報文類型字段和報文長度字段長字3,報文緩存地址字段。
      全文摘要
      本發(fā)明公開一種內(nèi)核間報文描述消息的傳遞方法,所述的內(nèi)核間以環(huán)形隊列進行通信,通過所述的環(huán)形隊列的讀指針和寫指針控制進行待傳送的各個報文的報文描述消息的接收和發(fā)送,該方法包括在所述的環(huán)形隊列的每項入口entry的報文描述消息讀寫控制域中僅設(shè)置標識一個報文結(jié)束的報文結(jié)束字段;通過所述的報文結(jié)束字段將傳遞的各個報文的報文描述消息寫入環(huán)形隊列中;通過所述的報文結(jié)束字段從所述的環(huán)形隊列中讀取傳遞的各個報文的報文描述信息。本發(fā)明由于僅設(shè)置報文結(jié)束字段,可避免ring吊死問題。
      文檔編號H04L12/42GK1842056SQ20051006258
      公開日2006年10月4日 申請日期2005年3月31日 優(yōu)先權(quán)日2005年3月31日
      發(fā)明者張少雄 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1