專利名稱:眾核處理器及其核間通信的方法、主核和從核的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器領(lǐng)域,特別涉及眾核處理器及其核間通信的方法、主核和從核。
背景技術(shù):
隨著半導(dǎo)體技術(shù)的發(fā)展,傳統(tǒng)的單核處理器暴露出許許多多的局限,體系結(jié)構(gòu)設(shè)計者為了在處理器性能進(jìn)一步提升的同時降低功耗和散熱,提出了多核處理器(multi-core processor)和眾核處理器(many-core processor)。多核處理器可以分為兩種同構(gòu)多核處理器和異構(gòu)多核處理器。同構(gòu)多核處理器內(nèi)的處理器核類型相同,在多核處理器中處于對等的地位;異構(gòu)多核處理器內(nèi)含有不同類型的處理器核,并且不同類型的處理器核在多核處理器內(nèi)部擔(dān)當(dāng)不同角色。眾核處理器與多核處理器相比,核心數(shù)量更多,而且眾核處理器通常都是異構(gòu)的。在使用眾核處理器時,需要選擇某個或者某幾個核對其他 核進(jìn)行運行控制和空間管理,從而構(gòu)成主從式的架構(gòu),所述的管理核為主核,被管理的核為從核。在眾核處理器中,核間的通信非常重要,一個高效的核間通信可以大大提高眾核處理器的可用性和穩(wěn)定性。如CELL處理器芯片這樣的異構(gòu)眾核,大量的協(xié)同處理單元(SPE, Synergistic Processing Elements)事務(wù)需要通過 Power 主處理器單兀(PPE, PowerProcessor Element)來處理,就需要設(shè)計一種可靠的核間通信機制,來保證系統(tǒng)高效穩(wěn)定的運行。但目前還沒有針對眾核處理器的核間通信的技術(shù)?,F(xiàn)有技術(shù)中,面向多核處理器的核間通信機制的實現(xiàn)方法有多種,其中包括1)基于核間中斷與共享內(nèi)存的方法;2)基于硬件寄存器的核間通信;3)基于共享內(nèi)存的核間通信。但由于在眾核處理器中,從核的數(shù)量眾多,通常多于64個,在從核數(shù)量遠(yuǎn)遠(yuǎn)多于主核的環(huán)境下,多核處理器的核間通信機制并不適用于眾核處理器的應(yīng)用場景。此外,在眾核處理器中,由于從核數(shù)量眾多,主核的處理能力有可能成為核間通信的瓶頸,在主核和從核的通信過程中,主核的消息處理能力達(dá)到上限就可能會出現(xiàn)系統(tǒng)程序無法正常響應(yīng)的狀況。例如,當(dāng)眾多從核同時向主核發(fā)送事務(wù)請求時,如果主核不對核間通信進(jìn)行流量控制,就會導(dǎo)致主核負(fù)荷太重,無法響應(yīng)正常的系統(tǒng)程序,進(jìn)入“假死”狀態(tài)。為了避免上述這種狀況的產(chǎn)生,就需要提出一個安全的針對眾核處理器核間通信的流量控制方法,以最大限度的滿足從核需求和系統(tǒng)的穩(wěn)定。其他有關(guān)核間通信的方法還可以參考公開號為CN101354693的中國發(fā)明專利申請,其公開了一種異構(gòu)多核處理器的核間通信調(diào)度系統(tǒng)及方法。
發(fā)明內(nèi)容
本發(fā)明技術(shù)方案解決的問題是現(xiàn)有技術(shù)眾核處理器在從核產(chǎn)生大量事務(wù)請求時造成消息丟失,主核無法響應(yīng)從核請求。為解決上述問題,本發(fā)明技術(shù)方案提供了一種眾核處理器核間通信的方法,包括從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知主核;所述主核在收到所述從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間;所述主核從所述共享交互區(qū)獲取消息并保存到申請到的緩存空間,之后所述主核釋放所述共享交互區(qū);所述主核處理所述消息,在處理完所述消息后,釋放所述申請到的緩存空間。可選的,還包括若所述主核申請共享緩存空間失敗,則所述主核在所述共享交互區(qū)中設(shè)置流量控制標(biāo)志??蛇x的,還包括主核判斷所述預(yù)留緩存空間是否被占用,在判斷出所述預(yù)留緩存空間未被占用后,清除所述共享交互區(qū)中的流量控制標(biāo)志??蛇x的,還包括所述從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息前,判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志,若是則等待所述主核清除流量控制標(biāo)志后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,若否則在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息。可選的,所述預(yù)留緩存空間由所述主核在系統(tǒng)初始化時分配給對應(yīng)的從核。
·
相應(yīng)的,本發(fā)明技術(shù)方案還提供了一種眾核處理器,包括主核、從核和共享交互區(qū),所述主核包括緩存隊列、工作隊列和控制單元,所述從核包括裝填單元,所述共享交互區(qū)包括數(shù)據(jù)區(qū),其中所述共享交互區(qū)適于主核和從核之間的消息共享;所述裝填單元適于在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知所述主核;所述緩存隊列適于在收到所述從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間;所述控制單元適于從所述共享交互區(qū)獲取消息并保存到所述緩存隊列申請到的緩存空間,之后釋放所述共享交互區(qū);所述工作隊列適于處理所述消息;所述緩存隊列還適于在所述工作隊列處理完所述消息后,釋放所述申請到的緩存空間??蛇x的,所述主核還包括設(shè)置單元,適于在所述緩存隊列申請共享緩存空間失敗后,在所述共享交互區(qū)中設(shè)置流量控制標(biāo)志??蛇x的,所述主核還包括清除單元,適于判斷所述預(yù)留緩存空間是否被占用,在判斷出所述預(yù)留緩存空間未被占用后,清除所述共享交互區(qū)中的流量控制標(biāo)志??蛇x的,所述從核還包括判斷單元,適于判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志;所述裝填單元適于在所述判斷單元的判斷結(jié)果為是時等待所述流量控制標(biāo)志清除后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,在所述判斷單元的判斷結(jié)果為否時在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息??蛇x的,所述主核還包括分配單元,適于在系統(tǒng)初始化時將所述預(yù)留緩存空間分配給對應(yīng)的從核??蛇x的,所述緩存隊列具有申請接口和釋放接口。相應(yīng)的,本發(fā)明技術(shù)方案還提供了一種主核,包括緩存隊列、工作隊列和控制單元,其中,所述緩存隊列適于在收到從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間;所述控制單元適于從對應(yīng)所述從核的共享交互區(qū)獲取消息并保存到所述緩存隊列申請到的緩存空間,之后釋放所述共享交互區(qū);所述工作隊列適于處理所述消息;所述緩存隊列還適于在所述工作隊列處理完所述消息后,釋放所述申請到的緩存空間??蛇x的,還包括設(shè)置單元,適于在所述緩存隊列申請共享緩存空間失敗后,在所述共享交互區(qū)中設(shè)置流量控制標(biāo)志??蛇x的,還包括清除單元,適于在所述工作隊列處理完所述消息后,判斷出所述預(yù)留緩存空間未被占用后,清除所述共享交互區(qū)中的流量控制標(biāo)志。可選的,還包括分配單元,適于在系統(tǒng)初始化時將所述預(yù)留緩存空間分配給對應(yīng)的從核??蛇x的,所述緩存隊列具有申請接口和釋放接口。相應(yīng)的,本發(fā)明技術(shù)方案還提供了一種與上述的主核進(jìn)行核間通信的從核,包括判斷單元和裝填單元,其中,所述判斷單元適于判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志;所述裝填單元適于在所述判斷單元的判斷結(jié)果為是時等待所述流量控制標(biāo)志清除后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,在所述判斷單元的判斷結(jié)果為否時在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,在裝填消息后利用利用核間中斷通知所述主核。
與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案提出了一種針對眾核處理器的核間通信方法。上述技術(shù)方案中主核申請保存消息的緩存空間時,主核首先申請使用共享緩存空間,申請使用共享緩存空間會產(chǎn)生申請成功和申請失敗兩種情況,當(dāng)申請成功時,表示此時從核產(chǎn)生的消息較少,共享緩存空間還有余,可以將從核的消息存入共享緩存空間,等待處理;當(dāng)申請失敗時,表示此時從核產(chǎn)生的消息較多,將共享緩存空間用盡,主核需要申請預(yù)留緩存空間,預(yù)留緩存空間是主核為各個從核預(yù)先保留的緩存空間,申請必定成功,主核將從核的消息存入預(yù)留緩存空間,等待主核處理,因此,保證了從核發(fā)送到主核的消息不會丟失,主核可以響應(yīng)從核的請求。進(jìn)一步的,本發(fā)明技術(shù)方案提出的眾核處理器的核間通信方法,具有面對從核的大量事務(wù)請求進(jìn)行流量控制的功能。上述技術(shù)方案中,當(dāng)主核申請使用共享緩存空間失敗時,表示共享緩存空間已經(jīng)用盡,主核的消息處理能力已經(jīng)達(dá)到了上限,因此需要進(jìn)行消息的流量控制,此時主核會在共享交互區(qū)中設(shè)置流量控制標(biāo)志;若從核要向主核發(fā)送消息首先會判斷共享交互區(qū)中是否存在流量控制標(biāo)志,當(dāng)存在流量控制標(biāo)志時,從核必須等待主核清除流量控制標(biāo)志后才能向主核發(fā)送消息,這就從源頭上控制了消息的來源,保證消息傳遞過程中不會出現(xiàn)擁塞,實現(xiàn)了可靠的具有流量控制功能的核間通信機制。
圖I是本發(fā)明技術(shù)方案的眾核處理器核間通信方法的流程示意圖;圖2是本發(fā)明技術(shù)方案的眾核處理器的結(jié)構(gòu)示意圖;圖3是本發(fā)明實施例的眾核處理器核間通信方法的流程示意圖;圖4是本發(fā)明實施例的眾核處理器的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明技術(shù)方案的上述目的、特征和優(yōu)點能夠更為明顯易懂,下面結(jié)合附圖和實施例對本發(fā)明的具體實施方式
做詳細(xì)的說明?,F(xiàn)有技術(shù)中,沒有針對眾核處理器的核間通信的方法,而且多核處理器的核間通信機制也不適用于眾核處理器的應(yīng)用場景。但在眾核處理器中,由于大量的從核事務(wù)請求需要主核來處理,需要一種核間通信方法,來保證系統(tǒng)高效穩(wěn)定的運行,防止從核發(fā)送事務(wù)請求的消息丟失。請參考圖I,本發(fā)明技術(shù)方案提供了一種眾核處理器核間通信的方法,所述眾核處理器核間通信的方法包括步驟S101,從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知主核。步驟S102,所述主核在收到所述從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間。步驟S103,所述主核從所述共享交互區(qū)獲取消息并保存到申請到的緩存空間,之后所述主核釋放所述共享交互區(qū)。步驟S104,所述主核處理所述消息,在處理完所述消息后,釋放所述申請到的緩存 空間。上述眾核處理器的核間通信方法中,從核向主核發(fā)送事務(wù)請求,將消息裝填在對應(yīng)的共享交互區(qū),主核申請使用共享緩存空間,當(dāng)申請失敗時,主核申請預(yù)留緩存空間,主核將從核的消息存入申請到的緩存空間,等待主核處理。由于主核可以申請使用共享緩存空間或者預(yù)留緩存空間,而預(yù)留緩存空間為系統(tǒng)為各個從核預(yù)先保留的緩存空間,申請必定成功,所以本技術(shù)方案確保了從核發(fā)送到主核的消息不會丟失,提供了一種可靠的核間通 目方法。對應(yīng)的,本發(fā)明技術(shù)方案提供一種眾核處理器,請參考圖2,包括主核201、從核203和共享交互區(qū)202,所述主核201包括緩存隊列、工作隊列和控制單元(未示出),所述從核203包括裝填單元(未示出),所述共享交互區(qū)202包括數(shù)據(jù)區(qū)(未示出),所述主核201的數(shù)量至少為一個,所述從核203的數(shù)量為多個,所述共享交互區(qū)202的數(shù)量為多個,且所述共享交互區(qū)202與所述從核203 —一對應(yīng)。所述共享交互區(qū)202用于主核201和從核203之間的消息共享;所述裝填單元用于在對應(yīng)的共享交互區(qū)202的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知所述主核201 ;所述緩存隊列用于在收到所述從核203發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核203的預(yù)留緩存空間;所述控制單元用于從所述共享交互區(qū)202獲取消息并保存到所述緩存隊列申請到的緩存空間,之后釋放所述共享交互區(qū)202 ;所述工作隊列用于處理所述消息;所述緩存隊列還用于在所述工作隊列處理完所述消息后,釋放所述申請到的緩存空間。進(jìn)一步的,在眾核處理器中,由于從核的數(shù)量遠(yuǎn)遠(yuǎn)多于主核,當(dāng)眾多從核同時向主核發(fā)送事務(wù)請求時,如果主核不對核間通信進(jìn)行流量控制,就會導(dǎo)致主核負(fù)擔(dān)太重,無法響應(yīng)正常的系統(tǒng)程序。本發(fā)明的眾核處理器核間通信的方法還可以通過流量控制標(biāo)志實現(xiàn)流量控制。下面結(jié)合實施例,對本發(fā)明技術(shù)方案的眾核處理器的核間通信方法進(jìn)行詳細(xì)說明。請參考圖3所示的本實施例的眾核處理器的核間通信方法的流程示意圖,所述核間通信方法包括步驟S301,從核向主核發(fā)送事務(wù)請求前,從核先判斷對應(yīng)的共享交互區(qū)是否存在流量控制標(biāo)志若存在流量控制標(biāo)志,則重復(fù)執(zhí)行步驟S301,也就是等待共享交互區(qū)的流量控制標(biāo)志清除;若不存在流量控制標(biāo)志,則執(zhí)行步驟S302。本實施例中,所述共享交互區(qū)包括數(shù)據(jù)區(qū)和標(biāo)志區(qū),其中,數(shù)據(jù)區(qū)供對應(yīng)的從核裝填消息,標(biāo)志區(qū)用于儲存流量控制標(biāo)志,所述共享交互區(qū)存在流量控制標(biāo)志是指標(biāo)志區(qū)中的流量控制標(biāo)志被設(shè)置(例如值為1),所述共享交互區(qū)不存在流量控制標(biāo)志是指標(biāo)志區(qū)中的流量控制標(biāo)志被清除(例如值為O)。步驟S302,從核裝填消息到共享交互區(qū)的數(shù)據(jù)區(qū),并利用核間中斷通知主核。步驟S303,主核收到從核發(fā)送的核間中斷后申請共享緩存空間,并判斷申請共享緩存空間是否成功若申請共享緩存空間成功,則執(zhí)行步驟S304 ;若申請共享緩存空間失敗,則執(zhí)行步驟S305。步驟S304,主核從與發(fā)送核間中斷的從核對應(yīng)的共享交互區(qū)中獲取消息數(shù)據(jù),保存到申請到的共享緩存空間,并釋放所述的共享交互區(qū),然后執(zhí)行步驟S307。步驟S305,主核申請與發(fā)送核間中斷的從核對應(yīng)的預(yù)留緩存空間,所述的預(yù)留緩存空間為系統(tǒng)為每個從核預(yù)先保留的緩存空間,例如,可以是在系統(tǒng)初始化時主核預(yù)留給 每個從核的緩存空間,所以申請必定成功;并且主核在與發(fā)送核間中斷的從核對應(yīng)的共享交互區(qū)的標(biāo)志區(qū)設(shè)置流量控制標(biāo)志。步驟S306,主核從與發(fā)送核間中斷的從核對應(yīng)的共享交互區(qū)中獲取消息數(shù)據(jù),保存到申請到的預(yù)留緩存空間,并釋放所述的共享交互區(qū),然后執(zhí)行步驟S307。步驟S307,主核啟動工作隊列處理消息,工作隊列處理完所述消息后,釋放緩存空間。具體地,若消息保存在共享緩存空間則釋放所述共享緩存空間,若消息保存在預(yù)留緩存空間則釋放所述預(yù)留緩存空間。步驟S308,主核判斷與發(fā)送核間中斷的從核對應(yīng)的預(yù)留緩存空間是否被占用,SP所述預(yù)留緩存空間中是否存有未處理完的消息若所述預(yù)留緩存空間被占用,則重復(fù)執(zhí)行S308 ;若所述預(yù)留緩存空間未被占用,則執(zhí)行S309。在工作隊列處理消息的過程中,主核可以判斷與發(fā)送核間中斷的從核對應(yīng)的預(yù)留緩存空間是否被占用,若所處理的消息保存在共享緩存空間,則該預(yù)留緩存空間是未被占用的;若所處理的消息保存在預(yù)留緩存空間,則該預(yù)留緩存空間是被占用的,直至工作隊列處理完消息,該預(yù)留緩存空間被釋放后,主核會判斷出該預(yù)留緩存空間是未被占用的。步驟S309,主核清除與發(fā)送核間中斷的從核對應(yīng)的共享交互區(qū)的流量控制標(biāo)志。上述實施例中,所述眾核處理器的核間通信方法,利用主核對共享緩存空間和預(yù)留緩存空間的申請和釋放,和主核在對應(yīng)從核的共享交互區(qū)設(shè)置和清除流量控制標(biāo)志共同實現(xiàn)主核和從核之間核間通信的流量控制。主核在申請共享緩存空間失敗后,申請預(yù)留緩存空間,并會在對應(yīng)從核的共享交互區(qū)設(shè)置流量控制標(biāo)志,表示主核的消息處理能力已經(jīng)達(dá)到了上限。所述從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息前,會判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志若是,則等待所述主核清除流量控制標(biāo)志后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息;若否,則在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息。這就從源頭上控制了從核消息的產(chǎn)生。當(dāng)主核處理完所述消息后,會判斷所述預(yù)留緩存空間是否被占用,若所述預(yù)留緩存空間未被占用,則表示還沒有達(dá)到主核通信流量的上限,可以繼續(xù)接收消息,則清除所述共享交互區(qū)中的流量控制標(biāo)志,若所述預(yù)留緩存空間仍然被占用,則保留所述流量控制標(biāo)志,等待對應(yīng)的預(yù)留緩存空間在消息處理完成后被釋放。通過以上設(shè)置和清除共享交互區(qū)的流量控制標(biāo)志和判斷預(yù)留緩存空間是否被占用的策略,就實現(xiàn)了對核間通信進(jìn)行流量控制的目的。對應(yīng)的,請參考圖4,圖4為本發(fā)明實施例的眾核處理器的結(jié)構(gòu)示意圖,需要說明的是,圖中僅示出主核與一個從核及其對應(yīng)的共享交互區(qū)的連接關(guān)系。所述眾核處理器包括主核401,共享交互區(qū)402和從核403。所述主核401和從核403為異構(gòu)。所述主核401的數(shù)量至少為一個,所述主核401—般為通用的處理器核心,其指令集為完整指令集,包括相關(guān)的控制指令、運算指令等,可以選自ARM,MIPS、X86或PowerPC中的一種,因此具有較高的通用性。所述從核403的數(shù)量為多個,例如所述從核403的數(shù)量為64個、128個或者256個等等。所述從核403為指令集和微結(jié)構(gòu)經(jīng)過簡化的處理器核心,但其結(jié)構(gòu)是針對運算指令進(jìn)行過專門優(yōu)化的,使其可以較高效的執(zhí)行圖形處理或數(shù)字信號處理(DSP,DigitalSignal Process)等計算密集型任務(wù),提高了所述運算任務(wù)的執(zhí)行效率,進(jìn)而提高了整個眾核處理器的性能。所述共享交互區(qū)402的數(shù)量為多個,且所述共享交互區(qū)402與所述從核
403 --對應(yīng),所述共享交互區(qū)402對于各個從核來說只有一塊,但由于主核401需要與各 個從核通信,所以對于主核401來說共享交互區(qū)402有多個。所述共享交互區(qū)402為集成在眾核處理器內(nèi)的片內(nèi)存儲器,如SRAM等,其存儲器空間與片外存儲器相比較小,用于主核401和從核403之間的消息共享。所述主核401包括緩存隊列401a、工作隊列401b、控制單元401c、設(shè)置單元401d、清除單元401e和分配單元401f ;所述共享交互區(qū)402包括數(shù)據(jù)區(qū)402a和標(biāo)志區(qū)402b ;所述從核403包括裝填單元403a和判斷單元403b。所述緩存隊列401a用于在收到從核403發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間,所述預(yù)留緩存空間為系統(tǒng)為每個從核預(yù)先保留的緩存空間,例如,可以是在系統(tǒng)初始化時主核401預(yù)留給每個從核403的緩存空間,所以申請必定成功。所述預(yù)留緩存空間通過主核401的分配單元401f在系統(tǒng)初始化時分配,所述預(yù)留緩存空間與從核403 —一對應(yīng),且為所對應(yīng)的從核403所獨享。本實施例中,所述的緩存隊列401a屬于整個眾核處理器核間通信機制中的一個子模塊,該模塊主要用于管理主核緩存空間,提供有申請接口和釋放接口,其中申請接口可以設(shè)置普通申請方式和強制申請方式的標(biāo)志,該標(biāo)志會隨著主核401調(diào)用申請接口而傳遞到該緩存隊列內(nèi),所述的普通申請方式申請共享緩存空間,所述的強制申請方式申請預(yù)留緩存空間。在主核401收到從核403發(fā)送的核間中斷后,主核401調(diào)用緩存隊列401a的申請接口申請緩存空間,此時緩存隊列401a的申請接口設(shè)置普通申請方式的標(biāo)志,申請共享緩存空間,若申請共享緩存空間成功,表示共享緩存空間還有余,則主核401從共享交互區(qū)402的數(shù)據(jù)區(qū)402a中獲取消息數(shù)據(jù),保存到申請到的共享緩存空間中;若申請共享緩存空間失敗,則表示共享緩存空間已經(jīng)用完,但為了保證從核403裝填在共享交互區(qū)402的數(shù)據(jù)區(qū)402a中的消息不會丟失,此時主核401會申請使用系統(tǒng)初始化時預(yù)留給各個從核403的較小的預(yù)留緩存空間,此時,緩存隊列401a的申請接口設(shè)置強制申請方式的標(biāo)志,隨著主核調(diào)用緩存隊列的申請接口而傳遞到緩存隊列中,由于所述的預(yù)留緩存空間與各個從核403 一一對應(yīng),且為所對應(yīng)的從核所獨享,所以申請必定成功,在申請預(yù)留緩存空間成功后,主核401從共享交互區(qū)402的數(shù)據(jù)區(qū)402a中獲取消息數(shù)據(jù),保存到申請到的預(yù)留緩存空間中。所述緩存隊列401a具有釋放接口,在工作隊列401b處理完所述消息后,主核401會調(diào)用緩存隊列401a的釋放接口,該接口主要就是回收緩存區(qū),釋放所述申請到的緩存空間。
所述工作隊列401b在控制單元401c從共享交互區(qū)402獲取消息并保存到所述緩存隊列401a申請到的緩存空間后,處理所述消息。所述控制單元401c與所述緩存隊列401a相配合,在緩存隊列401a申請到用于保存消息的緩存空間后,用于從共享交互區(qū)402的數(shù)據(jù)區(qū)402a獲取消息并保存到所述緩存隊列401a申請到的緩存空間,并釋放所述共享交互區(qū)402。所述設(shè)置單元401d用于在所述緩存隊列401a申請共享緩存空間失敗后,在所述共享交互區(qū)402的標(biāo)志區(qū)402b中設(shè)置流量控制標(biāo)志。當(dāng)所述緩存隊列401a申請共享緩存空間失敗時,表示共享緩存空間已經(jīng)用完,主核401的消息處理能力已經(jīng)達(dá)到了上限,需要控制從核403消息的產(chǎn)生,因此在共享交互區(qū)402的標(biāo)志區(qū)402b設(shè)置流量控制標(biāo)志,同時配合從核403發(fā)送消息時判斷流量控制標(biāo)志的策略,從而控制從核403消息的發(fā)送、達(dá)到防止主核401負(fù)擔(dān)太重的目的。所述清除單元401e用于在判斷出所述預(yù)留緩存空間未被占用后,清除所述共享 交互區(qū)402中的流量控制標(biāo)志。所述的清除單元401e是眾核處理器核間通信機制中的一個模塊,判斷所述預(yù)留緩存空間是否被占用若所述預(yù)留緩存空間已經(jīng)被釋放,表示主核401處理消息的負(fù)擔(dān)減輕,則清除所述共享交互區(qū)402中的流量控制標(biāo)志,當(dāng)與此共享交互區(qū)402相對應(yīng)的從核403產(chǎn)生消息時,由于從核403會首先判斷所述共享交互區(qū)402的流量控制標(biāo)志,當(dāng)流量控制標(biāo)志已經(jīng)被清除時,從核403就可以向主核401發(fā)送消息;若所述預(yù)留緩存空間仍然被占用,則說明主核401的處理能力依然處于上限,所述共享交互區(qū)402的流量控制標(biāo)志繼續(xù)保持,當(dāng)與所述共享交互區(qū)402相對應(yīng)的從核403產(chǎn)生消息時,需要繼續(xù)等待,不能向主核401發(fā)送。所述裝填單元403a用于在對應(yīng)的共享交互區(qū)402的數(shù)據(jù)區(qū)402a裝填消息,之后利用核間中斷通知主核401。所述核間中斷是硬件提供的一種事件機制,對于主核401來說屬于異步事件,產(chǎn)生的方式與硬件實現(xiàn)的具體方式有關(guān),例如可以通過從核寫通道或者寫硬件的IO寄存器來產(chǎn)生核間中斷信號。裝填單元403a通知主核401主要就是利用主從間的核間中斷實現(xiàn)的,由硬件保證可靠傳輸,當(dāng)主核401收到裝填單元403a發(fā)送的核間中斷后,進(jìn)入這個中斷相應(yīng)的處理流程。在本實施例中,所述核間中斷是當(dāng)從核403的裝填單元403a在對應(yīng)的共享交互區(qū)402的數(shù)據(jù)區(qū)402a中裝填消息之后,利用硬件提供的核間中斷機制,通過從核寫通道產(chǎn)生一個核間中斷,通知主核401消息已經(jīng)裝填入共享交互區(qū)402,等待主核401進(jìn)入對該消息的處理流程。所述判斷單元403b用于判斷所述共享交互區(qū)402中是否存在流量控制標(biāo)志。當(dāng)所述判斷單元403b的判斷結(jié)果為是時,表明主核401的消息處理能力已經(jīng)達(dá)到了上限,而且共享緩存空間已經(jīng)用盡,與該從核403相對應(yīng)的預(yù)留緩存空間也被占用,主核401暫時不能處理該從核403發(fā)送的消息,所以,此時所述從核403的裝填單元403a等待主核401清除所述流量控制標(biāo)志后才能在所述共享交互區(qū)402的數(shù)據(jù)區(qū)402a裝填消息;當(dāng)所述判斷單元403b的判斷結(jié)果為否時,表明所述從核403所對應(yīng)的預(yù)留緩存空間未被占用,主核401還可以接受從核403發(fā)送的消息,所以,此時所述裝填單元403b在該從核403對應(yīng)的共享交互區(qū)402的數(shù)據(jù)區(qū)402a裝填消息,之后利用核間中斷通知所述主核401。所述共享交互區(qū)402用于主核401和從核403之間的消息共享,所述共享交互區(qū)402包括數(shù)據(jù)區(qū)402a。所述數(shù)據(jù)區(qū)402a作為主核401和從核403之間消息的暫存區(qū),在從核403產(chǎn)生消息并通過判斷單元403b判斷出所述共享交互區(qū)402的標(biāo)志區(qū)402b不存在流量控制標(biāo)志時,裝填單元403a在共享交互區(qū)的數(shù)據(jù)區(qū)402a填裝消息,之后利用核間中斷通知所述主核401 ;主核401在收到所述從核403發(fā)送的核間中斷后,所述緩存隊列401a申請共享緩存空間或者預(yù)留緩存空間,申請成功后,緩存隊列401a獲取共享交互區(qū)的數(shù)據(jù)區(qū)402a中的消息存入緩存空間,等待處理。所述共享交互區(qū)402的標(biāo)志區(qū)402b中的流量控制標(biāo)志是由主核401設(shè)置和清除的。在本實施例中,標(biāo)志區(qū)402b可以保存一個比特位的標(biāo)志位,當(dāng)需要在標(biāo)志區(qū)402b設(shè)置流量控制標(biāo)志時,將此標(biāo)志位置I,當(dāng)需要清除標(biāo)志區(qū)402b的流量控制標(biāo)志時,將此標(biāo)志位置O。設(shè)置流量控制標(biāo)志的時機由緩存隊列401a申請共享緩存空間成功與否確定,清除流量控制標(biāo)志的時機由緩存空間釋放后判斷與所述從核403對應(yīng)的預(yù)留緩存空間是否被占 用確定。當(dāng)主核401接收到從核403發(fā)送的核間中斷后,緩存隊列401a申請用于保存消息的共享緩存空間,當(dāng)申請失敗時,表示共享緩存空間已經(jīng)用完,主核401的消息處理能力已經(jīng)達(dá)到了上限,主核401感覺到了通信壓力,需要控制從核403消息的產(chǎn)生,在與所述從核403相對應(yīng)的共享交互區(qū)的標(biāo)志區(qū)402b設(shè)置流量控制標(biāo)志,迫使從核403暫停消息發(fā)送,從而從源頭上減少主核401和從核403之間的通信流量。當(dāng)所述工作隊列401b處理完所述消息后,會判斷所述預(yù)留緩存空間是否被占用,若所述預(yù)留緩存空間未被占用,則表示主核401處理消息的負(fù)擔(dān)減輕,還沒有達(dá)到主核401通信流量的上限,可以繼續(xù)接收消息,則清除所述標(biāo)志區(qū)402b中的流量控制標(biāo)志,當(dāng)與此共享交互區(qū)402相對應(yīng)的從核403產(chǎn)生消息時,由于從核403會首先判斷所述標(biāo)志區(qū)402b的流量控制標(biāo)志,流量控制標(biāo)志已經(jīng)被清除時,從核403就可以向主核401發(fā)送消息。本發(fā)明雖然已以較佳實施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)對本發(fā)明技術(shù)方案做出可能的變動和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì)對以上實施例所作的任何簡單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案的保護范圍。
權(quán)利要求
1.一種眾核處理器核間通信的方法,其特征在于,包括 從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知主核; 所述主核在收到所述從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間; 所述主核從所述共享交互區(qū)獲取消息并保存到申請到的緩存空間,之后所述主核釋放所述共享交互區(qū); 所述主核處理所述消息,在處理完所述消息后,釋放所述申請到的緩存空間。
2.如權(quán)利要求I所述的眾核處理器核間通信的方法,其特征在于,還包括若所述主核申請共享緩存空間失敗,則所述主核在所述共享交互區(qū)中設(shè)置流量控制標(biāo)志。
3.如權(quán)利要求2所述的眾核處理器核間通信的方法,其特征在于,還包括主核判斷所述預(yù)留緩存空間是否被占用,在判斷出所述預(yù)留緩存空間未被占用后,清除所述共享交互區(qū)中的流量控制標(biāo)志。
4.如權(quán)利要求3所述的眾核處理器核間通信的方法,其特征在于,還包括所述從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息前,判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志,若是則等待所述主核清除流量控制標(biāo)志后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,若否則在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息。
5.如權(quán)利要求I所述的眾核處理器核間通信的方法,其特征在于,所述預(yù)留緩存空間由所述主核在系統(tǒng)初始化時分配給對應(yīng)的從核。
6.一種眾核處理器,其特征在于,包括主核、從核和共享交互區(qū),所述主核包括緩存隊列、工作隊列和控制單元,所述從核包括裝填單元,所述共享交互區(qū)包括數(shù)據(jù)區(qū),其中 所述共享交互區(qū)適于主核和從核之間的消息共享; 所述裝填單元適于在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知所述主核; 所述緩存隊列適于在收到所述從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間; 所述控制單元適于從所述共享交互區(qū)獲取消息并保存到所述緩存隊列申請到的緩存空間,之后釋放所述共享交互區(qū); 所述工作隊列適于處理所述消息; 所述緩存隊列還適于在所述工作隊列處理完所述消息后,釋放所述申請到的緩存空間。
7.如權(quán)利要求6所述的眾核處理器,其特征在于,所述主核還包括設(shè)置單元,適于在所述緩存隊列申請共享緩存空間失敗后,在所述共享交互區(qū)中設(shè)置流量控制標(biāo)志。
8.如權(quán)利要求7所述的眾核處理器,其特征在于,所述主核還包括清除單元,適于判斷所述預(yù)留緩存空間是否被占用,在判斷出所述預(yù)留緩存空間未被占用后,清除所述共享交互區(qū)中的流量控制標(biāo)志。
9.如權(quán)利要求8所述的眾核處理器,其特征在于,所述從核還包括判斷單元,適于判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志;所述裝填單元適于在所述判斷單元的判斷結(jié)果為是時等待所述流量控制標(biāo)志清除后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,在所述判斷單元的判斷結(jié)果為否時在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息。
10.如權(quán)利要求6所述的眾核處理器,其特征在于,所述主核還包括分配單元,適于在系統(tǒng)初始化時將所述預(yù)留緩存空間分配給對應(yīng)的從核。
11.如權(quán)利要求6所述的眾核處理器,其特征在于,所述緩存隊列具有申請接口和釋放接口。
12.—種主核,其特征在于,包括緩存隊列、工作隊列和控制單元,其中, 所述緩存隊列適于在收到從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間; 所述控制單元適于從對應(yīng)所述從核的共享交互區(qū)獲取消息并保存到所述緩存隊列申請到的緩存空間,之后釋放所述共享交互區(qū); 所述工作隊列適于處理所述消息; 所述緩存隊列還適于在所述工作隊列處理完所述消息后,釋放所述申請到的緩存空間。
13.如權(quán)利要求12所述的主核,其特征在于,還包括設(shè)置單元,適于在所述緩存隊列申請共享緩存空間失敗后,在所述共享交互區(qū)中設(shè)置流量控制標(biāo)志。
14.如權(quán)利要求13所述的主核,其特征在于,還包括清除單元,適于在所述工作隊列處理完所述消息后,判斷出所述預(yù)留緩存空間未被占用后,清除所述共享交互區(qū)中的流量控制標(biāo)志。
15.如權(quán)利要求12所述的主核,其特征在于,還包括分配單元,適于在系統(tǒng)初始化時將所述預(yù)留緩存空間分配給對應(yīng)的從核。
16.如權(quán)利要求12所述的主核,其特征在于,所述緩存隊列具有申請接口和釋放接口。
17.一種與權(quán)利要求14所述的主核進(jìn)行核間通信的從核,其特征在于,包括判斷單元和裝填單元,其中, 所述判斷單元適于判斷所述共享交互區(qū)中是否存在所述流量控制標(biāo)志; 所述裝填單元適于在所述判斷單元的判斷結(jié)果為是時等待所述流量控制標(biāo)志清除后再在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,在所述判斷單元的判斷結(jié)果為否時在所述共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,在裝填消息后利用利用核間中斷通知所述主核。
全文摘要
一種眾核處理器及其核間通信的方法、主核和從核,其中,所述眾核處理器核間通信的方法包括從核在對應(yīng)的共享交互區(qū)的數(shù)據(jù)區(qū)裝填消息,之后利用核間中斷通知主核;所述主核在收到所述從核發(fā)送的核間中斷后申請共享緩存空間,若申請共享緩存空間失敗則申請對應(yīng)所述從核的預(yù)留緩存空間;所述主核從所述共享交互區(qū)獲取消息并保存到申請到的緩存空間,之后所述主核釋放所述共享交互區(qū);所述主核處理所述消息,在處理完所述消息后,釋放所述申請到的緩存空間。本發(fā)明的眾核處理器及其核間通信方法不會造成消息丟失,提供了可靠的核間通信機制。
文檔編號G06F15/167GK102929834SQ20121044145
公開日2013年2月13日 申請日期2012年11月6日 優(yōu)先權(quán)日2012年11月6日
發(fā)明者許國春, 黃高陽, 陳斐, 殷紅武 申請人:無錫江南計算技術(shù)研究所