国产精品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>

      基于多核處理器的通信方法及其檢測(cè)方法和控制方法

      文檔序號(hào):6429945閱讀:183來(lái)源:國(guó)知局
      專利名稱:基于多核處理器的通信方法及其檢測(cè)方法和控制方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及包含多核處理器的計(jì)算機(jī)內(nèi)部的通信方法及其檢測(cè)方法和控制方法,具體地,涉及進(jìn)程間通信(IPC)和虛擬機(jī)間通信及其安全機(jī)制。
      背景技術(shù)
      計(jì)算機(jī)技術(shù)發(fā)展的一個(gè)重要方向是使用多核處理器。多核處理器在一枚處理器(chip)中集成兩個(gè)或多個(gè)完整的計(jì)算引擎(內(nèi)核)。多個(gè)內(nèi)核協(xié)同工作,以達(dá)到性能倍增的效果。多核處理器可以將不同的進(jìn)程分配在不同的內(nèi)核上同時(shí)運(yùn)行,從而可以提高多任務(wù)處理的效率。在分配多任務(wù)時(shí),多核處理器的調(diào)度機(jī)制分別設(shè)置各個(gè)進(jìn)程的處理器親和性(CPUaffinity),即將某個(gè)進(jìn)程指定給某個(gè)處理器上盡量長(zhǎng)時(shí)間地運(yùn)行而不被遷移到其他處理器的傾向性。 多核處理器中的每一個(gè)內(nèi)核具有自己的高級(jí)可編程中斷控制器標(biāo)識(shí)(AdvancedProgrammable Interrupt Controller Identification Number,縮寫為APIC ID)。多核處理器利用APIC ID識(shí)別特定的內(nèi)核并向其發(fā)送指令。多核處理器的不同內(nèi)核之間借助于獨(dú)立的通信網(wǎng)絡(luò)實(shí)現(xiàn)內(nèi)部通信,例如使用總線共享結(jié)構(gòu)、交叉開關(guān)互連結(jié)構(gòu)以及片上網(wǎng)絡(luò)(network on chip,N0C)。上述的通信網(wǎng)絡(luò)為多核處理器的內(nèi)核提供了內(nèi)部通信的基礎(chǔ)設(shè)施。在多核處理器的不同內(nèi)核上運(yùn)行的不同進(jìn)程可以利用內(nèi)部消息機(jī)制實(shí)現(xiàn)內(nèi)部通信。然而,仍然期望在多核處理器中提供進(jìn)程間通信的新方法,以滿足特殊條件下(如MAC訪問(wèn)控制下)進(jìn)程間通信和安全監(jiān)測(cè)、管理的要求。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種基于多核處理器的通信方法及其檢測(cè)方法和控制方法,該方法基于現(xiàn)有的內(nèi)部通信基礎(chǔ)設(shè)施和現(xiàn)有的操作系統(tǒng)的調(diào)度機(jī)制。根據(jù)本發(fā)明的一方面,提供一種基于多核處理器的通信方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,所述方法包括發(fā)送方通過(guò)選擇接收方在哪個(gè)內(nèi)核上運(yùn)行來(lái)發(fā)送信息,接收方通過(guò)識(shí)別自己在哪個(gè)內(nèi)核上運(yùn)行來(lái)接收信息。根據(jù)本發(fā)明的通信方法的優(yōu)選實(shí)施例,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的進(jìn)程。根據(jù)本發(fā)明的通信方法的優(yōu)選實(shí)施例,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的虛擬機(jī)。根據(jù)本發(fā)明的另一方面,提供一種基于多核處理器的通信的檢測(cè)方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,所述方法包括監(jiān)測(cè)進(jìn)行親和性設(shè)置的發(fā)送方;監(jiān)測(cè)進(jìn)行內(nèi)核標(biāo)識(shí)識(shí)別的接收方;以及如果在一定時(shí)間內(nèi)既存在發(fā)送方又存在接收方,則判定存在利用擇核機(jī)制的內(nèi)部通信。根據(jù)本發(fā)明的檢測(cè)方法的優(yōu)選實(shí)施例,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的進(jìn)程。根據(jù)本發(fā)明的檢測(cè)方法的優(yōu)選實(shí)施例,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的虛擬機(jī)。根據(jù)本發(fā)明的另一方面,提供一種基于多核處理器的通信的控制方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,所述方法包括允許/禁用至少一個(gè)內(nèi)核的親和性設(shè)置,和/或允許/禁用至少一個(gè)內(nèi)核的內(nèi)核標(biāo)識(shí)識(shí)別。根據(jù)本發(fā)明的控制方法的優(yōu)選實(shí)施例,禁用全部?jī)?nèi)核的親和性設(shè)置和/或內(nèi)核標(biāo)識(shí)識(shí)別,以關(guān)閉利用擇核機(jī)制的通道(channel)。根據(jù)本發(fā)明的控制方法的優(yōu)選實(shí)施例,允許全部?jī)?nèi)核的親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)另O,以最大化利用擇核機(jī)制的通道的帶寬。
      本發(fā)明適用于大多數(shù)多核處理器(例如Intel公司和AMD公司的多核處理器)及操作系統(tǒng)(例如,可以設(shè)置親和性的操作系統(tǒng)包括Windows,Linux, Xen等)。多核處理器和操作系統(tǒng)/虛擬機(jī)分別在硬件層和操作系統(tǒng)/虛擬機(jī)層共同支持親和性設(shè)置函數(shù);多核處理器在硬件層獨(dú)立支持所在核識(shí)別命令。本發(fā)明提供了進(jìn)程間和虛擬機(jī)間的新的通信方法,以及對(duì)應(yīng)的檢測(cè)方法和控制方法。本發(fā)明拓展了進(jìn)程間和虛擬機(jī)間通訊的方式,并且在常規(guī)進(jìn)程通信方法受限制的情形下,例如在強(qiáng)制訪問(wèn)控制的環(huán)境下,根據(jù)本發(fā)明的利用擇核機(jī)制的通信方法仍然有效。因而,本發(fā)明可以提高多核處理器環(huán)境下的多任務(wù)協(xié)同處理的效率和靈活性,并可以在常規(guī)的進(jìn)程間通信(IPC)和虛擬機(jī)間通信方法失效的時(shí)候作為補(bǔ)充的通信方法。


      圖I示意性地示出根據(jù)本發(fā)明的第一實(shí)施例利用擇核機(jī)制通信的基本原理。圖2示意性示出了根據(jù)本發(fā)明的第一實(shí)施例利用擇核機(jī)制通信的流程。圖3示意性地示出根據(jù)本發(fā)明的第二實(shí)施例利用擇核機(jī)制通信的基本原理。圖4示意性示出了根據(jù)本發(fā)明的第二實(shí)施例利用擇核機(jī)制通信的流程。
      具體實(shí)施例方式
      以下將參照附圖更詳細(xì)地描述本發(fā)明。<第一實(shí)施例>圖I示意性地示出根據(jù)本發(fā)明的第一實(shí)施例利用擇核機(jī)制通信的基本原理。在該示例中,該多核處理器包括兩個(gè)內(nèi)核,即內(nèi)核I和內(nèi)核2。根據(jù)多核處理器的調(diào)度機(jī)制,在初始狀態(tài),進(jìn)程I和進(jìn)程2分別運(yùn)行于內(nèi)核2和內(nèi)核I上,如圖Ia所示。進(jìn)程I可以設(shè)置自身的內(nèi)核親和性并將自身遷移到內(nèi)核I上,如圖Ib所示。根據(jù)多核處理器的調(diào)度機(jī)制,進(jìn)程2將自動(dòng)遷移至空閑的內(nèi)核2上,如圖Ic所示。進(jìn)程2識(shí)別自身所運(yùn)行的內(nèi)核標(biāo)識(shí),并且認(rèn)為自身的遷移行為表示數(shù)據(jù)’ I’或’ O’。圖2示意性示出了根據(jù)本發(fā)明的第一實(shí)施例利用擇核機(jī)制通信的流程。該進(jìn)程間通信開始于步驟SOl,在初始狀態(tài),進(jìn)程I作為發(fā)送方并位于內(nèi)核2中,進(jìn)程2作為接收方并位于內(nèi)核I中,如圖Ia所示。在步驟S02,進(jìn)程I設(shè)置自身的內(nèi)核親和性,將其自身綁定至內(nèi)核I或內(nèi)核2至少達(dá)一定時(shí)間(例如500毫秒)并全速運(yùn)行。
      在步驟S03,多核處理器的調(diào)度機(jī)制根據(jù)進(jìn)程I的內(nèi)核親和性設(shè)置產(chǎn)生內(nèi)核遷移指令,以決定進(jìn)程I運(yùn)行于哪一個(gè)內(nèi)核。如果進(jìn)程I將其自身綁定至內(nèi)核1,多核處理器的調(diào)度機(jī)制產(chǎn)生進(jìn)程I的內(nèi)核遷移指令。如果進(jìn)程I將其自身綁定至內(nèi)核2,多核處理器的調(diào)度機(jī)制將不會(huì)產(chǎn)生進(jìn)程I的內(nèi)核遷移指令。在步驟S04,多核處理器的調(diào)度機(jī)制根據(jù)是否產(chǎn)生內(nèi)核遷移指令而執(zhí)行不同的操作。如果已經(jīng)產(chǎn)生內(nèi)核遷移指令,則進(jìn)行至步驟S05,其中進(jìn)程I從內(nèi)核2遷移至內(nèi)核I至少達(dá)一定時(shí)間(例如500 毫秒),從而在該瞬時(shí)狀態(tài)在內(nèi)核I上同時(shí)運(yùn)行進(jìn)程I和進(jìn)程2,如圖Ib所示。如果未產(chǎn)生內(nèi)核遷移指令,則進(jìn)行至步驟S06,其中進(jìn)程I維持在內(nèi)核2上運(yùn)行。在進(jìn)程I從內(nèi)核2遷移至內(nèi)核I的情形下,多核處理器的調(diào)度機(jī)制隨后將發(fā)現(xiàn)內(nèi)核2處于空閑狀態(tài),因而進(jìn)一步產(chǎn)生進(jìn)程2的內(nèi)核遷移指令,將未設(shè)置內(nèi)核親和性的進(jìn)程2遷移到內(nèi)核2。進(jìn)程I和進(jìn)程2分別運(yùn)行于內(nèi)核I和內(nèi)核2上,如圖Ic所示。在步驟S07,進(jìn)程2例如通過(guò)CPWD匯編指令等方式識(shí)別自己所運(yùn)行的內(nèi)核標(biāo)識(shí)例如APIC ID,從而判斷自身是否遷移。Intel公司和AMD公司在1993年之后的CPU基本上都可以執(zhí)行CPUID匯編指令。在步驟S08,進(jìn)程2根據(jù)自身是否遷移而執(zhí)行不同的操作。如果已經(jīng)遷移(如圖Ic所示),則進(jìn)行到步驟S09,其中進(jìn)程2認(rèn)為其遷移行為表示從進(jìn)程I接收到數(shù)據(jù)’ I’。反之,如果未遷移(未示出),則進(jìn)行到步驟S10,其中進(jìn)程2認(rèn)為其未發(fā)生遷移行為表示從進(jìn)程I接收到數(shù)據(jù)’ O’。如果需要傳送大量的數(shù)據(jù),則重復(fù)上述步驟S02至S10,直到全部傳送所需的數(shù)據(jù),然后在步驟Sll結(jié)束進(jìn)程間通信。優(yōu)選地,在步驟SOl和S02之間,還包括附加的噪聲水平檢測(cè)步驟。該噪聲可能來(lái)自在多核處理器中運(yùn)行的其他進(jìn)程,例如除了進(jìn)程1(發(fā)送方)和進(jìn)程2(接收方)之外的另一個(gè)進(jìn)程3(干擾源)也可能引起進(jìn)程2(接收方)的內(nèi)核遷移。該檢測(cè)步驟包括在進(jìn)程間通信開始時(shí),進(jìn)程I檢測(cè)每一個(gè)內(nèi)核的負(fù)載水平,如果每一個(gè)內(nèi)核的負(fù)載小于預(yù)定的閾值水平m,例如50%,則認(rèn)為干擾噪聲在可忽略的水平,可以執(zhí)行進(jìn)程間通信的隨后步驟。優(yōu)選地,在步驟S9、SlO和步驟Sll之間,還包括附加的校驗(yàn)步驟。該校驗(yàn)步驟包括在進(jìn)程間通信結(jié)束時(shí),利用校驗(yàn)碼判斷傳送的數(shù)據(jù)中是否存在錯(cuò)誤。在判斷存在錯(cuò)誤時(shí),可以重新傳送數(shù)據(jù)以糾正錯(cuò)誤。根據(jù)優(yōu)選的實(shí)施例,在進(jìn)程間通信開始時(shí)的噪聲水平檢測(cè)步驟和/或在進(jìn)程間通信結(jié)束時(shí)的校驗(yàn)步驟可以提高數(shù)據(jù)傳送的可靠性。作為第一實(shí)施例的示例,發(fā)送方(即上述的進(jìn)程I)主程序sender的執(zhí)行步驟如下/*sender*/第一步創(chuàng)建一個(gè)處理器消耗型線程threadfunc ;第二步調(diào)用pthread_setaffinity_np函數(shù),將threadfunc線程的親核性設(shè)為CPUl第三步打開要發(fā)送的二進(jìn)制文件filel
      第四步讀取定長(zhǎng)為L(zhǎng)的文件filel中一個(gè)bit的值,并賦給變量ch第五步執(zhí)行循環(huán)體如果ch的值為'I ',則調(diào)用pthread_setaffinity_np函數(shù),更改線程threadfunc的親核性。即如果該線程目前綁定的內(nèi)核為CPU1,則改為綁定CPU2 ;如果目前該內(nèi)核綁定的為CPU2,則改為綁定CPU1)。如果ch的值為’ O’,則什么都不做。否則中斷退出循環(huán)體。調(diào)用nanosleep睡眠500毫秒,與接收方(即上述的進(jìn)程2)同步。
      讀取文件filel中的下一個(gè)bit的值,并賦給變量ch,循環(huán)變量k自增I (如k++)如果k = L則退出,否則重復(fù)第五步。其中,threadfunc函數(shù)作為計(jì)算資源耗盡型的線程,此線程歸屬于進(jìn)程1,進(jìn)程I通過(guò)設(shè)置其所屬的線程的親核性來(lái)控制自身的親核性。pthread_setaffinity_np是內(nèi)核親和性設(shè)置函數(shù),用于設(shè)置線程或進(jìn)程的內(nèi)核親和性。在該示例的程序中,內(nèi)核親和性設(shè)置函數(shù)在發(fā)送數(shù)據(jù)'Ii時(shí)設(shè)置線程threadfunc的內(nèi)核親和性。接收方(即上述的進(jìn)程2)主程序receiver的執(zhí)行步驟如下/^receiver*/第一步打開/創(chuàng)建一個(gè)文件file2,用于寫入對(duì)方發(fā)送的信息內(nèi)容。第二步在500毫秒內(nèi)做大量消耗CPU資源的循環(huán)計(jì)算(如循環(huán)a++)第三步用GetAPIC ID函數(shù)獲取本進(jìn)程運(yùn)行所在內(nèi)核的ID,并將該ID值賦給變量P第四步執(zhí)行循環(huán)體調(diào)用nanosleep睡眠500毫秒,與發(fā)送方(即上述的進(jìn)程I)同步。調(diào)用GetAPIC_ID函數(shù),獲取本進(jìn)程運(yùn)行所在的內(nèi)核ID,賦給變量apicid。比較apicid的值與變量P的值,如果相等,則接收一個(gè)bit的值為’ O’,否則接收的值’ 1’,并將其寫入file2文件。將剛才獲得的所在內(nèi)核ID值,即變量apicid的值賦給變量P,循環(huán)變量k自增I (如k++)如果k = L(即進(jìn)程I中filel的定長(zhǎng)),則結(jié)束。否則重復(fù)循環(huán)第四步。其中,GetAPIC_ID是內(nèi)核標(biāo)識(shí)讀取函數(shù)。在進(jìn)程間通信時(shí),進(jìn)程2循環(huán)讀取自身的內(nèi)核標(biāo)識(shí)并由此判斷是否已經(jīng)遷移,據(jù)此判斷從進(jìn)程I接收到數(shù)據(jù)'r還是'O'。盡管在上述通信方法中描述了進(jìn)程間通信,但按照該實(shí)施例的變型實(shí)現(xiàn)虛擬機(jī)間通信的方法是可行的。例如,在XEN的半虛擬化條件下,將發(fā)送方虛擬機(jī)的不同VCPU與不同物理CPU內(nèi)核綁定后,上述方法在不同虛擬機(jī)間可以實(shí)施通信。盡管在上述通信方法中描述了雙核處理器環(huán)境下進(jìn)程間通信,但按照該實(shí)施例的變形實(shí)現(xiàn)更多核處理器環(huán)境下的通信方法是明顯的。根據(jù)本發(fā)明的第一實(shí)施例的通信方法可以在常規(guī)的進(jìn)程間通信(IPC)和虛擬機(jī)間通信方法失效的時(shí)候作為補(bǔ)充的通信方法。<第二實(shí)施例>圖3示意性地示出根據(jù)本發(fā)明的第二實(shí)施例利用擇核機(jī)制通信的基本原理。在該示例中,該多核處理器包括兩個(gè)內(nèi)核,即內(nèi)核I和內(nèi)核2。根據(jù)多核處理器的調(diào)度機(jī)制,在初始狀態(tài),進(jìn)程I和進(jìn)程2分別運(yùn)行于內(nèi)核2和內(nèi)核I上,如圖3a所示。進(jìn)程I可以設(shè)置進(jìn)程2的內(nèi)核親和性并將進(jìn)程2遷移到內(nèi)核2上,如圖3b所示。根據(jù)多核處理器的調(diào)度機(jī)制,進(jìn)程I將自動(dòng)遷移至空閑的內(nèi)核I上,如圖3c所示。進(jìn)程2識(shí)別自身所運(yùn)行的內(nèi)核標(biāo)識(shí),并且認(rèn)為自身的遷移行為表示數(shù)據(jù)’ I’或’ O’。圖4示意性示出了根據(jù)本發(fā)明的第二實(shí)施例利用擇核機(jī)制通信的流程,在此僅指出第二實(shí)施例與第一實(shí)施例的區(qū)別。在根據(jù)本發(fā)明的第一實(shí)施例的步驟SOl開始進(jìn)程間通信之后,代替根據(jù)本發(fā)明的第一實(shí)施例的步驟S02-S06,執(zhí)行以下步驟·
      在步驟S02’,進(jìn)程I直接設(shè)置進(jìn)程2的內(nèi)核親和性,將進(jìn)程2綁定至內(nèi)核I或內(nèi)核2至少達(dá)一定時(shí)間(例如500毫秒)。在步驟S03’,多核處理器的調(diào)度機(jī)制根據(jù)進(jìn)程2的內(nèi)核親和性設(shè)置確定是否產(chǎn)生內(nèi)核遷移指令,以決定進(jìn)程2運(yùn)行于哪一個(gè)內(nèi)核。如果進(jìn)程I將進(jìn)程2綁定至內(nèi)核2,多核處理器的調(diào)度機(jī)制產(chǎn)生進(jìn)程2的內(nèi)核遷移指令。如果進(jìn)程I將進(jìn)程2綁定至內(nèi)核1,多核處理器的調(diào)度機(jī)制將不會(huì)產(chǎn)生進(jìn)程2的內(nèi)核遷移指令。在步驟S04’,多核處理器的調(diào)度機(jī)制根據(jù)是否產(chǎn)生內(nèi)核遷移指令而執(zhí)行不同的操作。如果已經(jīng)產(chǎn)生內(nèi)核遷移指令,則進(jìn)行至步驟S05’,其中進(jìn)程2從內(nèi)核I遷移至內(nèi)核2至少達(dá)一定時(shí)間(例如500毫秒)。如果未產(chǎn)生內(nèi)核遷移指令,則進(jìn)行至步驟S06’,其中進(jìn)程2維持在內(nèi)核I上運(yùn)行。然后,繼續(xù)執(zhí)行根據(jù)本發(fā)明的第一實(shí)施例的步驟S07至S11,從而完成進(jìn)程間通信的數(shù)據(jù)傳送。優(yōu)選地,在根據(jù)本發(fā)明的第二實(shí)施例中也可以包括上文描述的附加的噪聲水平檢測(cè)步驟和/或校驗(yàn)步驟。根據(jù)優(yōu)選的實(shí)施例,在進(jìn)程間通信開始時(shí)的噪聲水平檢測(cè)步驟和在進(jìn)程間通信結(jié)束時(shí)的校驗(yàn)步驟可以提高數(shù)據(jù)傳送的可靠性。作為第二實(shí)施例的示例,發(fā)送方(即上述的進(jìn)程I)主程序sender的執(zhí)行步驟如下/*sender*/第一步在500毫秒內(nèi)做大量消耗CPU資源的循環(huán)計(jì)算(如循環(huán)a++)第二步調(diào)用setaffinity np函數(shù),將receiver進(jìn)程的親核性設(shè)為CPUl第三步打開要發(fā)送的定長(zhǎng)為L(zhǎng)的二進(jìn)制文件filel第四步讀取文件filel中一個(gè)bit的值,并賦給變量ch第五步執(zhí)行循環(huán)體如果ch的值為,I!,則調(diào)用setaffinity_np函數(shù),更改receiver進(jìn)程的親核性。即如果該進(jìn)程目前綁定的內(nèi)核為CPU1,則改為綁定CPU2 ;如果目前該內(nèi)核綁定的為CPU2,則改為綁定CPU1)。
      如果ch的值為’ O’,則什么都不做。否則中斷退出循環(huán)體。
      調(diào)用nanosleep睡眠500毫秒,與接收方(即上述的進(jìn)程2)同步。讀取文件filel中的下一個(gè)bit的值,并賦給變量ch, 循環(huán)變量k自增I (如k++)如果k = L則退出,否則重復(fù)第五步。其中,sender作為進(jìn)程1,進(jìn)程I直接或間接擁有系統(tǒng)最高權(quán)限,如下文所述receiver作為進(jìn)程2, setaffinity_up是內(nèi)核親和性設(shè)置函數(shù),用于設(shè)置線程或進(jìn)程的內(nèi)核親和性。在該示例的程序中,內(nèi)核親和性設(shè)置函數(shù)在發(fā)送數(shù)據(jù)’ I’時(shí)設(shè)置receiver進(jìn)程的內(nèi)核親和性。接收方(即上述的進(jìn)程2)的主程序receiver的執(zhí)行步驟如下/^receiver5^/第一步打開/創(chuàng)建一個(gè)文件file2,用于寫入對(duì)方發(fā)送的信息內(nèi)容。第二步在500毫秒內(nèi)做大量消耗CPU資源的循環(huán)計(jì)算(如循環(huán)a++)第三步用GetAPIC_ID函數(shù)獲取本進(jìn)程運(yùn)行所在內(nèi)核的ID,并將該ID值賦給變量P第四步執(zhí)行循環(huán)體調(diào)用nanosleep睡眠500毫秒,與發(fā)送方(即上述的進(jìn)程I)同步。調(diào)用GetAPIC ID函數(shù),獲取本進(jìn)程運(yùn)行所在的內(nèi)核ID,賦給變量apicid。比較apicid的值與變量P的值,如果相等,則接收一個(gè)bit的值為’ O’,否則接收的值’ 1’,并將其寫入file2文件。將剛才獲得的所在內(nèi)核ID值,即變量apicid的值賦給變量P,循環(huán)變量k自增I (如k++)如果k = L(即進(jìn)程I中filel的定長(zhǎng)),則結(jié)束。否則重復(fù)循環(huán)第四步。其中,GetAPIC_ID是內(nèi)核標(biāo)識(shí)讀取函數(shù)。在進(jìn)程間通信時(shí),進(jìn)程2連讀取自身的內(nèi)核標(biāo)識(shí)并由此判斷是否已經(jīng)遷移,據(jù)此判斷從進(jìn)程I接收到數(shù)據(jù)’ I’還是’ O’。盡管在在上述通信方法中描述了進(jìn)程間通信,但按照該實(shí)施例的變型實(shí)現(xiàn)虛擬機(jī)間通信的方法是可行的。例如,在XEN的DomainO和一個(gè)DomainU之間,由于DomainO可以運(yùn)行擁有系統(tǒng)最高權(quán)限的管理程序“xm vcpu-pin”,這個(gè)程序可以實(shí)現(xiàn)虛擬機(jī)的親核性設(shè)置,故上述方法可以通過(guò)xm vcpu-pin命令在DomainO和一個(gè)DomainU之間實(shí)施通信。盡管在上述通信方法中描述了雙核處理器環(huán)境下進(jìn)程間通信,但按照該實(shí)施例的變形實(shí)現(xiàn)更多核處理器環(huán)境下的通信方法是明顯的。根據(jù)本發(fā)明的第二實(shí)施例的通信方法可以在常規(guī)的進(jìn)程間通信(IPC)和虛擬機(jī)間通信方法失效的時(shí)候作為補(bǔ)充的通信方法。〈第三實(shí)施例〉根據(jù)本發(fā)明的第三實(shí)施例涉及一種基于多核處理器的通信的檢測(cè)方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別。
      該檢測(cè)方法包括監(jiān)測(cè)進(jìn)行親和性設(shè)置作的發(fā)送方;監(jiān)測(cè)進(jìn)行內(nèi)核識(shí)別的接收方;以及如果在一定時(shí)間t (例如t = 3秒)內(nèi)既存在發(fā)送方的親和性設(shè)置操作又存在接收方的內(nèi)核標(biāo)識(shí)識(shí)別操作,則判定存在利用擇核機(jī)制的內(nèi)部通信?!吹谒膶?shí)施例〉根據(jù)本發(fā)明的第四實(shí)施例涉及一種基于多核處理器的通信的控制方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,所述方法包括允許/禁用至少一個(gè)內(nèi)核的親和性設(shè)置,和/或允許/禁用至少一個(gè)內(nèi)核的內(nèi)核標(biāo)識(shí)識(shí)別。優(yōu)選地,禁用全部?jī)?nèi)核的親和性設(shè)置和/或內(nèi)核標(biāo)識(shí)識(shí)別,以關(guān)閉利用擇核機(jī)制的通道。優(yōu)選地,允許全部?jī)?nèi)核的親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,從而在進(jìn)程之間共享全部?jī)?nèi)核,以最大化利用擇核機(jī)制的通道的帶寬。
      以上描述只是為了示例說(shuō)明和描述本發(fā)明,而非意圖窮舉和限制本發(fā)明。因此,本發(fā)明不局限于所描述的實(shí)施例。對(duì)于本領(lǐng)域的技術(shù)人員明顯可知的變型或更改,均在本發(fā)明的保護(hù)范圍之內(nèi)。
      權(quán)利要求
      1.一種基于多核處理器的通信方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)另Ij,所述方法包括 發(fā)送方通過(guò)選擇接收方在哪個(gè)內(nèi)核上運(yùn)行來(lái)發(fā)送信息;以及 接收方通過(guò)識(shí)別自己在哪個(gè)內(nèi)核上運(yùn)行來(lái)接收信息。
      2.根據(jù)權(quán)利要求I所述的方法,其中發(fā)送信息的步驟包括發(fā)送方設(shè)置自身的內(nèi)核親和性以決定是否產(chǎn)生發(fā)送方的內(nèi)核遷移指令,并且多核處理器的調(diào)度機(jī)制決定是否產(chǎn)生接收方的內(nèi)核遷移指令。
      3.根據(jù)權(quán)利要求I所述的方法,其中發(fā)送信息的步驟包括發(fā)送方設(shè)置接收方的內(nèi)核親和性以決定是否產(chǎn)生接收方的內(nèi)核遷移指令。
      4.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其中接收信息的步驟包括接收方采用CPUID匯編指令讀取自身所運(yùn)行的內(nèi)核的APIC ID。
      5.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的進(jìn)程。
      6.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的虛擬機(jī)。
      7.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其中發(fā)送信息的步驟包括在開始發(fā)送信息時(shí),發(fā)送方檢測(cè)每一個(gè)內(nèi)核的負(fù)載水平,并且在負(fù)載水平小于預(yù)定閾值時(shí)才繼續(xù)執(zhí)行發(fā)送信息的后續(xù)步驟。
      8.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,其中接收信息的步驟包括在結(jié)束接收信息時(shí),接收方校驗(yàn)接收到的信息,并且在存在錯(cuò)誤時(shí)重新傳送數(shù)據(jù)。
      9.一種基于多核處理器的通信的檢測(cè)方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,所述方法包括 監(jiān)測(cè)進(jìn)行親和性設(shè)置的發(fā)送方; 監(jiān)測(cè)進(jìn)行內(nèi)核標(biāo)識(shí)識(shí)別的接收方;以及 如果在一定時(shí)間內(nèi)既存在發(fā)送方又存在接收方,則判定存在利用擇核機(jī)制的通道的內(nèi)部通信。
      10.根據(jù)權(quán)利要求9所述的方法,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的進(jìn)程。
      11.根據(jù)權(quán)利要求9所述的方法,其中發(fā)送方和接收方是在多核處理器上運(yùn)行的不同的虛擬機(jī)。
      12.一種基于多核處理器的通信的控制方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,所述方法包括 允許/禁用至少一個(gè)內(nèi)核的親和性設(shè)置,和/或 允許/禁用至少一個(gè)內(nèi)核的內(nèi)核標(biāo)識(shí)識(shí)別。
      13.根據(jù)權(quán)利要求12所述的方法,其中禁用全部?jī)?nèi)核的親和性設(shè)置和/或內(nèi)核標(biāo)識(shí)識(shí)另U,以關(guān)閉利用擇核機(jī)制的通道。
      14.根據(jù)權(quán)利要求12所述的方法,其中允許全部?jī)?nèi)核的親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別,以最大化利用擇核機(jī)制的通道的帶寬。
      全文摘要
      本申請(qǐng)公開了包含多核處理器的計(jì)算機(jī)內(nèi)部的通信方法及其檢測(cè)方法和控制方法,所述多核處理器支持親和性設(shè)置和內(nèi)核標(biāo)識(shí)識(shí)別。該通信方法包括發(fā)送方通過(guò)選擇接收方在哪個(gè)內(nèi)核上運(yùn)行來(lái)發(fā)送信息;以及接收方通過(guò)識(shí)別自己在哪個(gè)內(nèi)核上運(yùn)行來(lái)接收信息。本發(fā)明提供了進(jìn)程間和虛擬機(jī)間的新的通信方法,以及對(duì)應(yīng)的檢測(cè)方法和控制方法。本發(fā)明可以提高多核處理器環(huán)境下的多任務(wù)協(xié)同處理的效率和靈活性,并可以在常規(guī)的進(jìn)程間通信(IPC)和虛擬機(jī)間通信方法失效的時(shí)候作為補(bǔ)充的通信方法。
      文檔編號(hào)G06F15/163GK102915292SQ20111022030
      公開日2013年2月6日 申請(qǐng)日期2011年8月2日 優(yōu)先權(quán)日2011年8月2日
      發(fā)明者沈晴霓, 李揚(yáng)威, 卿斯?jié)h 申請(qǐng)人:北京大學(xué)
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1