核間通信裝置及方法
【專(zhuān)利摘要】本發(fā)明提供了一種核間通信裝置及方法,該裝置包括:信箱模塊,用于存儲(chǔ)消息發(fā)送核發(fā)送給消息接收核的消息,并通知消息接收核讀取所述消息;總線適配模塊,連接于信箱模塊與進(jìn)行通信的消息接收核和消息發(fā)送核之間,用于提供信箱模塊與消息接收核和消息發(fā)送核的讀寫(xiě)接口,通過(guò)本發(fā)明,解決了現(xiàn)有技術(shù)中核間通信裝置和方法存在復(fù)雜度高、實(shí)時(shí)性差,以及多核應(yīng)用時(shí)可擴(kuò)展性差的問(wèn)題,進(jìn)而達(dá)到了顯著減少核間通信復(fù)雜度,減少通信時(shí)延,以及具備極好的可擴(kuò)展性和可裁減性的效果。
【專(zhuān)利說(shuō)明】核間通信裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及高性能芯片設(shè)計(jì)領(lǐng)域,具體而言,涉及一種核間通信裝置及方法。
【背景技術(shù)】
[0002]隨著多核處理器被越來(lái)越廣泛的應(yīng)用到各個(gè)【技術(shù)領(lǐng)域】,其強(qiáng)大的并行計(jì)算能力,低功耗以及高集成度的優(yōu)點(diǎn)逐漸被市場(chǎng)所接受。多核處理器的顯著特征是同一個(gè)任務(wù)可以被分解到多個(gè)內(nèi)核的線程或進(jìn)程上并行運(yùn)行,這種并行性帶來(lái)了性能的顯著提升。但是多核處理器帶來(lái)性能提升的同時(shí),也帶來(lái)了頻繁的核間通信任務(wù)以及復(fù)雜的對(duì)多核通信進(jìn)行管理等一系列問(wèn)題,而且隨著同一芯片上集成的核越來(lái)越多,此問(wèn)題變的越來(lái)越突出。因此,高速高效的核間通信裝置和方法成為多核處理器芯片的關(guān)鍵技術(shù)之一。
[0003]在相關(guān)技術(shù)中,普遍基于共享內(nèi)存進(jìn)行核間通信。例如,專(zhuān)利號(hào)為CN200510087321的專(zhuān)利“嵌入式實(shí)時(shí)操作系統(tǒng)中多核處理器的核間通信方法及裝置”,其采用共享內(nèi)存實(shí)現(xiàn)核間通信所需的共享消息池和消息數(shù)據(jù)管道。該種方法需要操作系統(tǒng)軟件創(chuàng)建消息隊(duì)列,需要建立核間通信的管道操作,因此復(fù)雜性較高;更關(guān)鍵的是為了完成對(duì)多核共享消息內(nèi)存的訪問(wèn)一致性需要采用自旋鎖資源以及額外的申請(qǐng)鎖釋放鎖等同步操作,這些復(fù)雜的軟件交互步驟將大大降低核間通信的效率,同時(shí)在核數(shù)量顯著增加時(shí)可靠性降低;其分離的消息操作和中斷通知機(jī)制也會(huì)導(dǎo)致效率下降。此外,基于共享內(nèi)存的方法由于核間消息必須與數(shù)據(jù)共用同一帶寬,在通信實(shí)時(shí)性上更增加了不確定性。
[0004]為解決基于共享內(nèi)存的核間通信機(jī)制的高復(fù)雜性高時(shí)延問(wèn)題,也產(chǎn)生了一些改進(jìn)方法。例如,專(zhuān)利號(hào)為 US20080988459 的專(zhuān)利 “Method and System for Generating andDelivering Inter-Processor Interrupts in a Mult1-Core Processor and in CertainShared Memory Mult1-Processor Systems”,其通過(guò)軟件操作一組專(zhuān)用的中斷屏蔽寄存器(Interrupt Mask Register,簡(jiǎn)稱(chēng)為IMR)來(lái)指定共享存儲(chǔ)區(qū)域,并在寫(xiě)操作針對(duì)所指定的共享存儲(chǔ)器區(qū)域時(shí)自動(dòng)觸發(fā)核間中斷生成。但其消息是存在共享存儲(chǔ)區(qū)的循環(huán)緩沖中,仍舊需要通過(guò)軟件實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行循環(huán)緩沖訪問(wèn);而消息通知所產(chǎn)生的中斷由MR產(chǎn)生。其仍需要提前設(shè)置MR寄存器,且寄存器操作與消息操作的分離以及軟件交互步驟多等因素直接導(dǎo)致其核間通信延遲較大,軟件編程復(fù)雜,無(wú)法滿(mǎn)足高性能多核通信的需要。同時(shí),該專(zhuān)利也未能解決為保證核間通信可靠性必須引入互斥操作而帶來(lái)的資源消耗和復(fù)雜度提升的問(wèn)題。
[0005]除了上面所述現(xiàn)有核間通信技術(shù)通信效率低,實(shí)時(shí)性無(wú)法保證的主要缺陷外,現(xiàn)有核間通信技術(shù)在核數(shù)量顯著增加時(shí),其將需要更多的硬件資源和更加復(fù)雜的軟件處理步驟;在異構(gòu)多核系統(tǒng)中,核的頻率,接口結(jié)構(gòu)以及對(duì)數(shù)據(jù)結(jié)構(gòu)的支持差異也大大增加了現(xiàn)有核間通信方法的軟件復(fù)雜性,異構(gòu)核通信程序的兼容性和可靠性不足。即現(xiàn)有核間通信技術(shù)在適應(yīng)核異構(gòu)和核數(shù)量增加時(shí)的可擴(kuò)展性和靈活性不足。
[0006]因此,在相關(guān)技術(shù)中的核間通信裝置和方法存在復(fù)雜度高、實(shí)時(shí)性差,以及多核應(yīng)用時(shí)可擴(kuò)展性差的問(wèn)題。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種核間通信裝置及方法,以至少解決現(xiàn)有技術(shù)中核間通信裝置和方法存在復(fù)雜度高、實(shí)時(shí)性差,以及多核應(yīng)用時(shí)可擴(kuò)展性差的問(wèn)題。
[0008]根據(jù)本發(fā)明的一個(gè)方面,提供了一種核間通信裝置,包括:信箱模塊,用于存儲(chǔ)消息發(fā)送核發(fā)送給消息接收核的消息,并通知所述消息接收核讀取所述消息;總線適配模塊,連接于所述信箱模塊與進(jìn)行通信的所述消息接收核和消息發(fā)送核之間,用于提供所述信箱模塊與所述消息接收核和所述消息發(fā)送核的讀寫(xiě)接口。
[0009]優(yōu)選地,該核間通信裝置還包括:仲裁模塊:用于在多個(gè)核同時(shí)向所述信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),按照預(yù)定的規(guī)則對(duì)所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求進(jìn)行仲裁,將所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求依次串行輸出。
[0010]優(yōu)選地,所述信箱模塊包括:總線接口單元,用于通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥。
[0011]優(yōu)選地,所述總線接口單元包括:第一互斥單元,用于通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)多個(gè)消息發(fā)送核向所述信箱模塊寫(xiě)消息的互斥;和/或,第二互斥單元,用于通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)消息發(fā)送核向所述信箱模塊寫(xiě)消息與消息接收核從所述信箱模塊讀消息的互斥。
[0012]優(yōu)選地,所述總線接口單元還包括:觸發(fā)子單元,用于在所述消息發(fā)送核向所述信箱模塊寫(xiě)入了消息,或者,所述消息接收核從所述信箱模塊讀取了消息之后,觸發(fā)所述總線錯(cuò)誤反饋寄存器的狀態(tài)變化。
[0013]優(yōu)選地,所述信箱模塊包括:存儲(chǔ)單元,用于根據(jù)消息訪問(wèn)地址對(duì)所述消息進(jìn)行存儲(chǔ)。
[0014]優(yōu)選地,所述信箱模塊包括:通知單元,用于通過(guò)中斷請(qǐng)求通知所述消息接收核接收消息。
[0015]根據(jù)本發(fā)明的另一方面,提供了一種核間通信方法,包括:信箱模塊通過(guò)總線適配模塊接收來(lái)自消息發(fā)送核發(fā)送的消息;所述信箱模塊向消息接收核發(fā)送中斷請(qǐng)求,其中,所述消息接收核根據(jù)所述中斷請(qǐng)求讀取所述消息。
[0016]優(yōu)選地,該方法還包括:在多個(gè)核同時(shí)向所述信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),按照預(yù)定的規(guī)則對(duì)所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求進(jìn)行仲裁,將所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求依次串行輸出。
[0017]優(yōu)選地,在多個(gè)核同時(shí)向所述信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥。
[0018]優(yōu)選地,通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥包括:通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)多個(gè)消息發(fā)送核向所述信箱模塊寫(xiě)消息的互斥;和/或,通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)消息發(fā)送核向所述信箱模塊寫(xiě)消息與消息接收核從所述信箱模塊讀消息的互斥。
[0019]優(yōu)選地,在所述消息發(fā)送核向所述信箱模塊寫(xiě)入了消息,或者,所述消息接收核從所述信箱模塊讀取了消息之后,觸發(fā)所述總線錯(cuò)誤反饋寄存器的狀態(tài)變化。
[0020]優(yōu)選地,在所述消息發(fā)送核向所述信箱模塊寫(xiě)入了消息之后,所述信箱模塊向所述消息發(fā)送核發(fā)送第一響應(yīng)消息,其中,所述消息發(fā)送核根據(jù)所述第一響應(yīng)消息確定所述消息發(fā)送核向所述信箱模塊寫(xiě)入消息成功;和/或,在所述消息接收核從所述信箱模塊讀取了消息之后,所述信箱模塊向所述消息接收核發(fā)送第二響應(yīng)消息,其中,所述消息接收核根據(jù)所述第二響應(yīng)消息確定所述消息接收核讀取消息成功。
[0021]優(yōu)選地,在所述消息接收核讀取了所述消息之后,還包括,所述信箱模塊將所述中斷請(qǐng)求清除。
[0022]根據(jù)本發(fā)明的再一方面,提供了一種核間通信裝置,包括:接收單元,位于信箱模塊中,用于通過(guò)總線適配模塊接收來(lái)自消息發(fā)送核發(fā)送的消息;發(fā)送單元,位于所述信箱模塊中,用于向消息接收核發(fā)送中斷請(qǐng)求,其中,所述消息接收核根據(jù)所述中斷請(qǐng)求讀取所述消息。
[0023]通過(guò)本發(fā)明,采用信箱模塊,用于存儲(chǔ)消息發(fā)送核發(fā)送給消息接收核的消息,并通知所述消息接收核讀取所述消息;總線適配模塊,連接于所述信箱模塊與進(jìn)行通信的所述消息接收核和消息發(fā)送核之間,用于提供所述信箱模塊與所述消息接收核和所述消息發(fā)送核的讀寫(xiě)接口,解決了現(xiàn)有技術(shù)中核間通信裝置和方法存在復(fù)雜度高、實(shí)時(shí)性差,以及多核應(yīng)用時(shí)可擴(kuò)展性差的問(wèn)題,進(jìn)而達(dá)到了顯著減少核間通信復(fù)雜度,減少通信時(shí)延,以及具備極好的可擴(kuò)展性和可裁減性的效果。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0024]此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
[0025]圖1是根據(jù)本發(fā)明實(shí)施例的核間通信裝置的結(jié)構(gòu)框圖;
[0026]圖2是根據(jù)本發(fā)明實(shí)施例的核間通信裝置的優(yōu)選結(jié)構(gòu)框圖;
[0027]圖3是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12的優(yōu)選結(jié)構(gòu)框圖一;
[0028]圖4是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12中總線接口單元32的優(yōu)選結(jié)構(gòu)框圖;
[0029]圖5是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中總線接口單元32的優(yōu)選結(jié)構(gòu)框圖;
[0030]圖6是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12的優(yōu)選結(jié)構(gòu)框圖二;
[0031]圖7是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12的優(yōu)選結(jié)構(gòu)框圖三;
[0032]圖8是根據(jù)本發(fā)明實(shí)施例的核間通信方法的流程圖;
[0033]圖9是根據(jù)本發(fā)明實(shí)施例的核間通信裝置的結(jié)構(gòu)框圖;
[0034]圖10是根據(jù)本發(fā)明實(shí)施例的多核芯片的核間通信裝置結(jié)構(gòu)框圖;
[0035]圖11是根據(jù)本發(fā)明實(shí)施例的核間通信方法的流程圖;
[0036]圖12是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊的結(jié)構(gòu)框圖;
[0037]圖13是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中總線適配模塊的結(jié)構(gòu)框圖;
[0038]圖14是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中仲裁模塊的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0039]下文中將參考附圖并結(jié)合實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明。需要說(shuō)明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。[0040]在本實(shí)施例中提供了一種核間通信裝置,圖1是根據(jù)本發(fā)明實(shí)施例的核間通信裝置的結(jié)構(gòu)框圖,如圖1所示,該核間通信裝置包括信箱模塊12和總線適配模塊14,下面對(duì)該裝置進(jìn)行說(shuō)明。
[0041]信箱模塊12,用于存儲(chǔ)消息發(fā)送核發(fā)送給消息接收核的消息,并通知消息接收核讀取該消息;總線適配模塊14,連接于上述信箱模塊12,并且,處于信箱模塊與進(jìn)行通信的消息接收核和消息發(fā)送核之間,用于提供信箱模塊與消息接收核和消息發(fā)送核的讀寫(xiě)接□。
[0042]通過(guò)上述核間通信裝置,僅采用信箱模塊以及連接于消息接收核與消息發(fā)送核之間的總線適配模塊的架構(gòu),相對(duì)于相關(guān)技術(shù)中采用共享內(nèi)存的方式,或者,采用專(zhuān)用中斷配合共享內(nèi)存的方式由于需要眾多軟件交互,從而導(dǎo)致核間通信步驟復(fù)雜,效率低下以及靈活性不高的問(wèn)題,采用信箱模塊與總線適配模塊構(gòu)成的簡(jiǎn)單架構(gòu)的核間通信裝置,通過(guò)核間通信裝置本身讀寫(xiě)消息訪問(wèn)及響應(yīng)讀寫(xiě)消息訪問(wèn)的反饋,顯著地減少了核間通信的復(fù)雜度,有效地減少了通信時(shí)延,同時(shí)僅靠增加模塊的方式就可以實(shí)現(xiàn),具備較佳的可擴(kuò)展性及可裁減性。
[0043]圖2是根據(jù)本發(fā)明實(shí)施例的核間通信裝置的優(yōu)選結(jié)構(gòu)框圖,如圖2所示,該裝置除包括圖1所示的所有模塊外,還包括仲裁模塊22,該仲裁模塊22:連接于信箱模塊12與總線適配模塊14之間,用于在多個(gè)核同時(shí)向信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),按照預(yù)定的規(guī)則對(duì)上述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求進(jìn)行仲裁,將該多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求依次串行輸出。
[0044]圖3是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12的優(yōu)選結(jié)構(gòu)框圖一,如圖3所示,該信箱模塊12包括:總線接口單元32,該總線接口單元32,用于通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥。
[0045]圖4是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12中總線接口單元32的優(yōu)選結(jié)構(gòu)框圖,如圖4所示,該總線接口單元32包括:第一互斥單元42和/或第二互斥單元44,下面對(duì)該優(yōu)選總線接口單元進(jìn)行說(shuō)明。
[0046]第一互斥單元42,用于通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)多個(gè)消息發(fā)送核向該信箱模塊寫(xiě)消息的互斥;和/或,第二互斥單元44,用于通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)消息發(fā)送核向該信箱模塊寫(xiě)消息與消息接收核從該信箱模塊讀消息的互斥。
[0047]圖5是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中總線接口單元32的優(yōu)選結(jié)構(gòu)框圖,如圖5所示,該總線接口單元32包括:觸發(fā)子單元52,該觸發(fā)子單元52,用于在消息發(fā)送核向信箱模塊寫(xiě)入了消息,或者,消息接收核從信箱模塊讀取了消息之后,觸發(fā)總線錯(cuò)誤反饋寄存器的狀態(tài)變化。
[0048]圖6是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12的優(yōu)選結(jié)構(gòu)框圖二,如圖6所示,該信箱模塊12包括:存儲(chǔ)單元62,該存儲(chǔ)單元62,用于根據(jù)消息訪問(wèn)地址對(duì)上述消息進(jìn)行存儲(chǔ)。
[0049]圖7是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊12的優(yōu)選結(jié)構(gòu)框圖三,如圖7所示,該信箱模塊12包括:通知單元72,用于通過(guò)中斷請(qǐng)求通知上述消息接收核接收消
肩、O[0050]在本實(shí)施例中還提供了一種核間通信方法,圖8是根據(jù)本發(fā)明實(shí)施例的核間通信方法的流程圖,如圖8所示,該流程包括如下步驟:
[0051]步驟S802,信箱模塊通過(guò)總線適配模塊接收來(lái)自消息發(fā)送核發(fā)送的消息;
[0052]步驟S804,該信箱模塊向消息接收核發(fā)送中斷請(qǐng)求,其中,該消息接收核根據(jù)上述中斷請(qǐng)求讀取上述消息。
[0053]通過(guò)上述步驟,通過(guò)信箱模塊以及總線適配模塊的組合實(shí)現(xiàn)核間通信,相對(duì)于相關(guān)技術(shù)中采用共享內(nèi)存的方式,或者,采用專(zhuān)用中斷配合共享內(nèi)存的方式由于需要眾多軟件交互,從而導(dǎo)致核間通信步驟復(fù)雜,效率低下以及靈活性不高的問(wèn)題,不僅流程簡(jiǎn)單,僅通過(guò)消息讀寫(xiě)訪問(wèn)本身即可實(shí)現(xiàn)核間通信,顯著減少了核間通信的復(fù)雜度,而且在一定程度上有效地提高了核間通信效率。
[0054]優(yōu)選地,在多個(gè)核同時(shí)向信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),可以按照預(yù)定的規(guī)則對(duì)該多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求進(jìn)行仲裁,將上述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求依次串行輸出。需要說(shuō)明的是,上述多個(gè)核可以是多個(gè)消息發(fā)送核,也可以是多個(gè)消息接收核,也可以為兩者的混合,在進(jìn)行讀寫(xiě)訪問(wèn)之前,對(duì)讀寫(xiě)訪問(wèn)請(qǐng)求先進(jìn)行仲裁處理,避免核間通信的混舌L另外,該仲裁模塊可以根據(jù)具體的進(jìn)行核間通信的多個(gè)核的數(shù)量不同而靈活選擇,例如,當(dāng)進(jìn)行通信的核的數(shù)量較少時(shí),可以不采用,而核的數(shù)量較多時(shí),則也可以選擇一個(gè)或多個(gè)仲裁模塊進(jìn)行處理。
[0055]在多個(gè)核同時(shí)向信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥。利用核間通信中已有的總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥,相對(duì)于現(xiàn)有技術(shù)中為了實(shí)現(xiàn)互斥功能需要增加另外的互斥裝置和另外的互斥操作步驟,不僅能夠減少了核間通信裝置與外部結(jié)構(gòu)的交互,并且在一定程度上有效地降低了資源的消耗。
[0056]需要指出的是,對(duì)于核間通信中較為容易出現(xiàn)的異常情況,復(fù)用總線錯(cuò)誤反饋寄存器可以較好地實(shí)現(xiàn)讀寫(xiě)消息的互斥,例如,通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)多個(gè)消息發(fā)送核向信箱模塊寫(xiě)消息的互斥;又例如,通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)消息發(fā)送核向信箱模塊寫(xiě)消息與消息接收核從信箱模塊讀消息的互斥。當(dāng)然,兩者可以結(jié)合使用。操作時(shí),在消息發(fā)送核向信箱模塊寫(xiě)入了消息,或者,消息接收核從信箱模塊讀取了消息之后,通過(guò)觸發(fā)總線錯(cuò)誤反饋寄存器狀態(tài)的變化來(lái)實(shí)現(xiàn)信箱模塊的讀寫(xiě)狀態(tài)的變化,避免消息的丟失,實(shí)現(xiàn)讀寫(xiě)的有序性,保證讀寫(xiě)消息的可靠性。
[0057]較優(yōu)地,在消息發(fā)送核向信箱模塊寫(xiě)入了消息之后,信箱模塊向消息發(fā)送核發(fā)送第一響應(yīng)消息,其中,該消息發(fā)送核根據(jù)上述第一響應(yīng)消息確定消息發(fā)送核向信箱模塊寫(xiě)入消息成功;和/或,在消息接收核從信箱模塊讀取了消息之后,信箱模塊向消息接收核發(fā)送第二響應(yīng)消息,其中,消息接收核根據(jù)該第二響應(yīng)消息確定消息接收核讀取消息成功。在確定消息接收核讀取了消息之后,信箱模塊將中斷請(qǐng)求自動(dòng)清除。便于后續(xù)寫(xiě)入新的消息時(shí),產(chǎn)生新的中斷請(qǐng)求,不僅保證讀寫(xiě)消息的對(duì)應(yīng)性,而且減少了接收核清除中斷請(qǐng)求的操作步驟。
[0058]在本實(shí)施例中還提供了一種核間通信裝置,該裝置用于實(shí)現(xiàn)上述實(shí)施例及優(yōu)選實(shí)施方式,已經(jīng)進(jìn)行過(guò)說(shuō)明的不再贅述。如以下所使用的,術(shù)語(yǔ)“模塊”可以實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件的組合。盡管以下實(shí)施例所描述的裝置較佳地以硬件來(lái)實(shí)現(xiàn),但是軟件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
[0059]圖9是根據(jù)本發(fā)明實(shí)施例的核間通信裝置的結(jié)構(gòu)框圖,如圖9所示,該裝置位于信箱模塊90中,接收單元92和發(fā)送單元94,下面對(duì)該裝置進(jìn)行說(shuō)明。
[0060]接收單元92,用于通過(guò)總線適配模塊接收來(lái)自消息發(fā)送核發(fā)送的消息;發(fā)送單元94,連接至上述接收單元92,用于向消息接收核發(fā)送中斷請(qǐng)求,其中,該消息接收核根據(jù)上述中斷請(qǐng)求讀取上述消息。
[0061]為解決相關(guān)技術(shù)中的核間通信裝置復(fù)雜度高,實(shí)時(shí)性差,以及在多核應(yīng)用時(shí)的可擴(kuò)展性差等問(wèn)題。在本實(shí)施例中提供了一種新型的核間通信裝置ICN (Inter-coreCommunication Network,簡(jiǎn)稱(chēng)為ICN)(在本部分為敘述方便,將核間通信裝置簡(jiǎn)寫(xiě)為ICN),該核間通信裝置ICN包括任意數(shù)量的以下3類(lèi)模塊:信箱模塊(Postbox)(同上述信箱模塊12),總線適配模塊(Bus Adapter,簡(jiǎn)稱(chēng)為BA)(同上述總線適配模塊14)、以及仲裁模塊(Arbiter)(同上述仲裁模塊22)。ICN可以應(yīng)用于采用層次結(jié)構(gòu)以滿(mǎn)足核數(shù)量顯著增多和核異構(gòu)的應(yīng)用場(chǎng)景,圖10是根據(jù)本發(fā)明實(shí)施例的多核芯片的核間通信裝置結(jié)構(gòu)框圖,如圖10所示,該結(jié)構(gòu)包括信箱模塊、總線適配模塊、仲裁模塊,下面對(duì)該裝置分別進(jìn)行說(shuō)明。
[0062](I)信箱模塊(Postbox)
[0063]消息需要暫存在某個(gè)地方供接收核讀取,并且要具有可靠的通知接收核消息到來(lái)的機(jī)制,在本實(shí)施例中提供的ICN中包括若干個(gè)Postbox模塊。用以達(dá)到上述要求,該信箱模塊提供以下功能:互斥的讀寫(xiě)消息、消息存儲(chǔ)、產(chǎn)生通知中斷請(qǐng)求。
[0064]為實(shí)現(xiàn)信箱模塊的上述功能,Postbox模塊通過(guò)以下各個(gè)單元來(lái)完成,即在該信箱模塊中包括若干總線接口單元(Bus Interface Unit,簡(jiǎn)稱(chēng)為BIU),若干消息存儲(chǔ)單元(RegFiles),以及若干中斷產(chǎn)生單元(IntGen)。下面分別對(duì)信箱模塊所包括的各個(gè)單元進(jìn)行說(shuō)明。
[0065]BIU單元:用于實(shí)現(xiàn)讀寫(xiě)消息的互斥訪問(wèn)功能。該BIU單元提供一個(gè)消息接收核的讀消息通道,和若干消息發(fā)送核的寫(xiě)消息通道。BIU單元復(fù)用總線錯(cuò)誤(Error)反饋寄存器實(shí)現(xiàn)了一個(gè)鎖完成對(duì)同一資源(即下文說(shuō)的RegFiles)的互斥訪問(wèn)功能。
[0066]RegFiles單元:用于提供若干單元消息存儲(chǔ)寄存器空間。對(duì)于每個(gè)Postbox來(lái)說(shuō),有幾個(gè)發(fā)送消息通道就有幾組消息存儲(chǔ)寄存器。同時(shí)根據(jù)應(yīng)用需求所決定的通信流量,也可以設(shè)置更多的消息寄存器,不同的消息寄存器之間通過(guò)地址進(jìn)行區(qū)分。
[0067]IntGen單元:用于當(dāng)有消息到來(lái)時(shí),負(fù)責(zé)產(chǎn)生中斷請(qǐng)求通知接收核。若檢測(cè)到接收核將消息讀走后,中斷請(qǐng)求自動(dòng)清除。可見(jiàn),其避免了傳統(tǒng)核間通信方式中讀取消息還需要額外的設(shè)置中斷清除寄存器的操作。其中,每根中斷線可以與一個(gè)或一組Regfiles單元捆綁在一起,從而接收核可以通過(guò)中斷請(qǐng)求編號(hào)進(jìn)入特定ISR(中斷服務(wù)程序),并讀取對(duì)應(yīng)RegFiles中的消息。
[0068]需要說(shuō)明的是,在本實(shí)施例的核間通信裝置中的Postbox具有相關(guān)技術(shù)中所不具備的互斥訪問(wèn)保護(hù)功能:
[0069]在傳統(tǒng)的多核通信方式中,多核占用同一個(gè)核間通信資源需要利用互斥鎖或自旋鎖進(jìn)行互斥操作。而Postbox復(fù)用總線Error反饋寄存器實(shí)現(xiàn)了一個(gè)鎖寄存器完成了互斥訪問(wèn)功能,該操作實(shí)現(xiàn)如下:
[0070]BIU復(fù)用Error信息反饋寄存器實(shí)現(xiàn)了一個(gè)鎖寄存器。當(dāng)鎖寄存器為0,代表鎖為釋放狀態(tài);當(dāng)鎖寄存器為1,代表鎖為占用狀態(tài)。在正常情況下,發(fā)送核寫(xiě)了 PostboxRegFiles后,鎖寄存器自動(dòng)變?yōu)镮。之后,Postbox產(chǎn)生中斷通知接收核,接收核進(jìn)行Postbox RegFiles讀操作,鎖寄存器自動(dòng)變?yōu)镺。
[0071]當(dāng)?shù)谝环N異常發(fā)生,即在接收核進(jìn)行Postbox RegFiles讀操作之前又有某個(gè)發(fā)送核想對(duì)一個(gè)Regfiles進(jìn)行寫(xiě)操作,如果此時(shí)Regfiles中的消息被修改,則會(huì)造成之前的消息丟失。但由于本實(shí)例中的Postbox中的鎖寄存器為1,表示鎖處于占用狀態(tài),故發(fā)送消息寫(xiě)操作未成功,即Postbox RegFiles信息未被修改;同時(shí),鎖寄存器信息I將作為Error響應(yīng)信息返回給發(fā)送核通知其進(jìn)行了異常操作。核進(jìn)入異常處理,即可以等待若干指令周期后繼續(xù)進(jìn)行訪問(wèn)。直到當(dāng)接收核進(jìn)行了正常的讀Postbox RegFiles操作之后,鎖寄存器變?yōu)?,即鎖被釋放,其他發(fā)送核可以進(jìn)行正常寫(xiě)操作。
[0072]當(dāng)?shù)诙N異常發(fā)生,即在接收核讀取消息的同時(shí),發(fā)生了某個(gè)核的寫(xiě)消息操作,則BIU強(qiáng)制以先讀后寫(xiě)的順序進(jìn)行,即先保證前一個(gè)消息被讀走,然后才能寫(xiě)入新的消息,這樣保證了核間通信的可靠性。
[0073](2)總線適配模塊(BA, Bus Adapter):
[0074]由于進(jìn)行通信的核之間總線協(xié)議可能不同,同時(shí)核需要訪問(wèn)的Postbox比較多,故本實(shí)施例中的ICN包括若干BA模塊,其包括I個(gè)核讀寫(xiě)接口和若干個(gè)Postbox讀寫(xiě)接口,該BA模塊完成以下2個(gè)功能:
[0075]A、完成不同核接口總線協(xié)議向ICN內(nèi)部數(shù)據(jù)讀寫(xiě)協(xié)議的適配;
[0076]B、根據(jù)總線訪問(wèn)的Postbox地址,進(jìn)行地址過(guò)濾,即僅使唯一目的Postbox的內(nèi)部接口上出現(xiàn)有效數(shù)據(jù)和有效控制信號(hào)。
[0077]可見(jiàn),通過(guò)BA模塊可以顯著隔離外部復(fù)雜的總線協(xié)議,內(nèi)部?jī)H采用簡(jiǎn)單快速的數(shù)據(jù)讀寫(xiě)協(xié)議,顯著減少了核間通信裝置的硬件延遲。
[0078](3)仲裁模塊(Arbiter):
[0079]當(dāng)一個(gè)Cluster內(nèi)部有多個(gè)核同時(shí)對(duì)一個(gè)Postbox發(fā)起消息讀寫(xiě)訪問(wèn)時(shí)將發(fā)生沖突。因而在本實(shí)施例中的ICN包括若干Arbiter模塊,其包括若干個(gè)消息輸入接口和I個(gè)消息輸出接口。用以提供如下功能:對(duì)若干數(shù)據(jù)通道的讀寫(xiě)訪問(wèn)請(qǐng)求按照特定原則進(jìn)行仲裁,即將同時(shí)到達(dá)的消息讀寫(xiě)訪問(wèn)請(qǐng)求串行化。
[0080]其中,Arbiter對(duì)同時(shí)到達(dá)仲裁模塊的消息讀寫(xiě)訪問(wèn)進(jìn)行輪詢(xún)仲裁,即使多個(gè)同時(shí)到達(dá)的消息讀寫(xiě)訪問(wèn)按照順序串行輸出;或者,對(duì)同時(shí)到達(dá)該仲裁模塊的消息讀寫(xiě)訪問(wèn)進(jìn)行優(yōu)先級(jí)仲裁,即使多個(gè)同時(shí)到達(dá)的消息讀寫(xiě)訪問(wèn)請(qǐng)求按照優(yōu)先級(jí)由高到低的順序串行輸出。
[0081]在本實(shí)施例中還提供了一種核間通信方法,圖11是根據(jù)本發(fā)明實(shí)施例的核間通信方法的流程圖,如圖11所示,該方法包括如下步驟:
[0082]步驟S1102,發(fā)消息核通過(guò)BA進(jìn)行寫(xiě)消息操作,并根據(jù)BA返回的信息確定消息是否發(fā)送成功。各個(gè)核的寫(xiě)消息操作是異步且獨(dú)立的,互不影響。如果BA返回的ErrorResponse信息為無(wú)效,則消息發(fā)送成功;反之,表示Postbox被占用,寫(xiě)消息未成功。此時(shí),發(fā)送核可以延遲若干周期后再進(jìn)行寫(xiě)消息操作,直到消息發(fā)送成功為止。
[0083]步驟S1104,發(fā)送核的發(fā)送消息經(jīng)過(guò)Arbiter或不經(jīng)過(guò)Arbiter發(fā)送至具有特定地址的Postbox中,Postbox產(chǎn)生中斷請(qǐng)求(int)給接收消息核。[0084]步驟S1106,接收核接收到中斷,并進(jìn)行消息讀取操作。
[0085]步驟S1108,接收核的消息讀操作請(qǐng)求信號(hào)進(jìn)入ICN直至發(fā)送到產(chǎn)生中斷請(qǐng)求的信箱模塊(Postbox)中,并讀取到發(fā)送給它的消息,且Postbox的中斷請(qǐng)求自動(dòng)拉低。
[0086]本發(fā)明所提供的實(shí)施例及優(yōu)選實(shí)施方式具有天生的互斥功能。即在進(jìn)行核間通信前,無(wú)需進(jìn)行額外的申請(qǐng)鎖和釋放鎖的操作,互斥完全通過(guò)對(duì)ICN本身的讀寫(xiě)訪問(wèn)和ERROR返回機(jī)制完成,顯著減少了核間通信的復(fù)雜性,減少了通信時(shí)延;另外,無(wú)需要任何初始化步驟,ICN上電復(fù)位后即可正常工作;當(dāng)消息讀寫(xiě)請(qǐng)求進(jìn)入ICN后,完全由ICN自行管理,不僅實(shí)現(xiàn)了自動(dòng)化管理,而且在一定程度上大大節(jié)省了資源。
[0087]采用分布式結(jié)構(gòu),可以使某些通信流量局限在特定區(qū)域的帶寬之內(nèi)而不對(duì)其他通信區(qū)域造成任何影響,并且顯著減少了單一仲裁模塊的仲裁開(kāi)銷(xiāo),從而顯著減少了多核整體的統(tǒng)計(jì)通信延遲。
[0088]當(dāng)核數(shù)量顯著增加時(shí),僅需增加相應(yīng)數(shù)量的3類(lèi)模塊和對(duì)應(yīng)的互聯(lián)線,同時(shí)互聯(lián)方式也可以根據(jù)應(yīng)用需求靈活連接,不影響ICN的現(xiàn)有結(jié)構(gòu)特征和軟件操作步驟,因此具有極好的可擴(kuò)展性和可裁減性。
[0089]下面結(jié)合附圖10對(duì)本發(fā)明實(shí)施例作進(jìn)一步的具體說(shuō)明。需要說(shuō)明的是,多核不限于實(shí)施例子中所舉的CPU (中央處理器)和DSP (數(shù)字信號(hào)處理器)。
[0090]整個(gè)ICN采用3級(jí)結(jié)構(gòu)以滿(mǎn)足多核(一共10個(gè)核)和核異構(gòu)(6DSP+4ARM)的應(yīng)用需求。整個(gè)ICN包含15個(gè)Postbox,10個(gè)BA以及4個(gè)Arbiter,其整體結(jié)構(gòu)如圖10所示。3個(gè)DSP構(gòu)成一個(gè)Cluster。2個(gè)CPU構(gòu)成I個(gè)Cluster,由于其數(shù)據(jù)流量比較小,數(shù)據(jù)通路未經(jīng)過(guò)仲裁器??梢?jiàn),ICN可以根據(jù)核的數(shù)量和通信流量選擇3類(lèi)組件的數(shù)量,以及互聯(lián)方式(如實(shí)施例子中不經(jīng)過(guò)仲裁器,直接連到Postbox上),不影響ICN的整個(gè)結(jié)構(gòu)特征和通信流程,可擴(kuò)展現(xiàn)性和可裁減性極好。
[0091]按照負(fù)責(zé)功能區(qū)域,Postbox分為L(zhǎng)ocal Postbox (本地信箱)和Cross Postbox(交叉信箱)。具體來(lái)說(shuō),在本實(shí)施例中存在以下幾個(gè):負(fù)責(zé)DSP cluster (簇)內(nèi)部和DSPcluster(族)內(nèi)部進(jìn)行核間通信的 10 個(gè) local Postbox,負(fù)責(zé) DSP cluster 與 CPU cluster之間的核間通信的I個(gè)local Postbox,負(fù)責(zé)DSP cluster之間進(jìn)行核間通信I個(gè)CrossPostbox以及或負(fù)責(zé)CPU cluster之間進(jìn)行核間通信I個(gè)Cross Postbox。可見(jiàn),這種分布式結(jié)構(gòu)可以使某些通信流量局限在特定區(qū)域的帶寬之內(nèi)而不對(duì)其他通信區(qū)域造成任何影響,并且顯著減少了單一仲裁模塊的仲裁開(kāi)銷(xiāo),顯著增大了多核整體帶寬效率,減少了多核整體的通信延遲。同時(shí),當(dāng)核數(shù)量顯著增加時(shí),可能導(dǎo)致一個(gè)核接收的核間通信中斷請(qǐng)求過(guò)多,此時(shí)可將多個(gè)Postbox的中斷請(qǐng)求通過(guò)或邏輯進(jìn)行合并從而減少到達(dá)核的核間中斷請(qǐng)求數(shù)量,從而大大增加了 ICN的可擴(kuò)展現(xiàn)性。
[0092]其中,ICN包括的3類(lèi)模塊的具體實(shí)施如下:
[0093]( I)信箱模塊(Postbox)
[0094]消息需要暫存在某個(gè)地方供接收核讀取,并且要具有可靠的通知接收核消息到來(lái)的機(jī)制,故本發(fā)明所述ICN包括若干Postbox模塊。其提供如下功能:
[0095]消息存儲(chǔ)
[0096]互斥的讀寫(xiě)消息
[0097]產(chǎn)生通知中斷請(qǐng)求[0098]圖12是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中信箱模塊的結(jié)構(gòu)框圖,如圖12所示,該信箱模塊(Postbox)包括若干BIU單元,若干RegFiles單元,和若干IntGen單元。其中,各功能單元如下:
[0099]BIU 單元:
[0100]實(shí)現(xiàn)讀寫(xiě)消息的互斥訪問(wèn)功能。其中BUSO為該P(yáng)ostbox所屬接收核的讀消息通道,BUSf η為發(fā)送核的寫(xiě)消息通道。BIU單元復(fù)用總線Error反饋寄存器實(shí)現(xiàn)了一個(gè)鎖完成對(duì)同一個(gè)RegFiles單元的互斥訪問(wèn)功能。
[0101]RegFiles 單兀:
[0102]提供若干單元消息存儲(chǔ)寄存器空間。對(duì)于每個(gè)Postbox來(lái)說(shuō),有幾個(gè)發(fā)送消息通道就有幾組消息存儲(chǔ)寄存器。同時(shí)根據(jù)應(yīng)用需求所決定的通信流量,也可以設(shè)置更多的消息寄存器,不同的消息寄存器之間通過(guò)地址進(jìn)行區(qū)分。
[0103]IntGen 單元:
[0104]當(dāng)有消息到來(lái)時(shí),負(fù)責(zé)產(chǎn)生中斷請(qǐng)求通知接收核。若檢測(cè)到接收核將消息讀走后,中斷請(qǐng)求自動(dòng)清除??梢?jiàn),其避免了傳統(tǒng)核間通信方式中讀取消息還需要額外的設(shè)置中斷清除寄存器的操作。其中每根中斷線可以與一個(gè)或一組Regfiles單元捆綁在一起,從而接收核可以通過(guò)中斷請(qǐng)求編號(hào)進(jìn)入特定ISR(中斷服務(wù)程序),并讀取對(duì)應(yīng)RegFiles中的消息。
[0105]其中,需要特別強(qiáng)調(diào)的,本核間通信裝置中的Postbox具有其他方案所不具備的互斥訪問(wèn)保護(hù)功能。
[0106]在傳統(tǒng)的多核通信方式中,多核占用同一個(gè)核間通信資源需要利用互斥鎖或自旋鎖進(jìn)行互斥操作。而Postbox復(fù)用總線Error反饋寄存器實(shí)現(xiàn)了一個(gè)鎖寄存器完成了互斥訪問(wèn)功能,其具體實(shí)現(xiàn)如下:
[0107]BIU復(fù)用Error信息反饋寄存器實(shí)現(xiàn)了一個(gè)鎖寄存器。當(dāng)鎖寄存器為0,代表鎖為釋放狀態(tài);當(dāng)鎖寄存器為1,代表鎖為占用狀態(tài)。在正常情況下,發(fā)送核寫(xiě)了 PostboxRegFiles后,鎖寄存器自動(dòng)變?yōu)镮。之后,Postbox產(chǎn)生中斷通知接收核,接收核進(jìn)行PostboxRegFiles讀操作,鎖寄存器自動(dòng)變?yōu)镺 ;
[0108]當(dāng)?shù)谝环N異常發(fā)生,即在接收核進(jìn)行Postbox RegFiles讀操作之前又有某個(gè)發(fā)送核想對(duì)一個(gè)Regfiles進(jìn)行寫(xiě)操作,如果此時(shí)Regfiles中的消息被修改,則會(huì)造成之前的消息丟失。但由于本實(shí)施例Postbox中的鎖寄存器為1,表示鎖處于占用狀態(tài),故發(fā)送消息寫(xiě)操作未成功,即Postbox RegFiles信息未被修改;同時(shí),鎖寄存器信息I將作為Error響應(yīng)信息返回給發(fā)送核通知其進(jìn)行了異常操作。核進(jìn)入異常處理,即等待若干指令周期后繼續(xù)進(jìn)行訪問(wèn)。直到當(dāng)接收核進(jìn)行了正常的讀Postbox RegFiles操作之后,鎖寄存器變?yōu)?,即鎖被釋放,其他發(fā)送核可以進(jìn)行正常寫(xiě)操作。
[0109]當(dāng)?shù)诙N異常發(fā)生,即在接收核讀取消息的同時(shí),發(fā)生了某個(gè)核的寫(xiě)消息操作,則BIU強(qiáng)制以先讀后寫(xiě)的順序進(jìn)行,即先保證前一個(gè)消息被讀走,然后才能寫(xiě)入新的消息,這樣保證了核間通信的可靠性。
[0110]在實(shí)現(xiàn)時(shí),鎖寄存器即從設(shè)備Error信息產(chǎn)生寄存器,即無(wú)需增加額外的如互斥鎖,信號(hào)量那樣的互斥功能單元;申請(qǐng)鎖操作成功即是消息發(fā)送操作成功,釋放鎖成功即是消息讀取成功,消息申請(qǐng)鎖失敗即是總線反饋Eiror響應(yīng),即互斥處理機(jī)制與總線通用的讀寫(xiě)機(jī)制一致,即無(wú)需增加額外的互斥操作周期,顯著減少了編程復(fù)雜性和通信延遲。因此,上述實(shí)施例及優(yōu)選實(shí)施方式所示的裝置和方法實(shí)現(xiàn)了對(duì)核間通信資源的互斥訪問(wèn)保護(hù)。
[0111](2)總線適配模塊(BA, Bus Adapter):
[0112]由于進(jìn)行通信的核之間總線協(xié)議可能不同,同時(shí)核需要訪問(wèn)的Postbox比較多,故本發(fā)明所述ICN包括若干BA模塊,其包括I個(gè)核讀寫(xiě)接口和若干個(gè)Postbox讀寫(xiě)接口,其完成2個(gè)功能:
[0113]A.完成不同核接口總線協(xié)議向ICN內(nèi)部數(shù)據(jù)讀寫(xiě)協(xié)議的適配;
[0114]B.根據(jù)總線訪問(wèn)的Postbox地址,進(jìn)行地址過(guò)濾,即僅使唯一目的Postbox的內(nèi)部接口上出現(xiàn)有效數(shù)據(jù)和有效控制信號(hào)。
[0115]可見(jiàn),通過(guò)BA模塊可以顯著隔離外部復(fù)雜的總線協(xié)議,內(nèi)部?jī)H采用簡(jiǎn)單快速的數(shù)據(jù)讀寫(xiě)協(xié)議,顯著減少了核間通信裝置的硬件延遲。
[0116]在本實(shí)施例子中,內(nèi)部外部均采用比較簡(jiǎn)單的增強(qiáng)外置總線(AdvancedPeripheral Bus,簡(jiǎn)稱(chēng)為APB)協(xié)議,圖13是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中總線適配模塊的結(jié)構(gòu)框圖,如圖13所示,BA根據(jù)APB的訪問(wèn)地址和Postbox的寄存器地址是否匹配來(lái)使能輸出不同的APB選擇信號(hào),從而選通不同的消息通路。該APB接口可讀可寫(xiě),核通過(guò)APB接口對(duì)Postbox進(jìn)行消息讀寫(xiě)操作。
[0117](3)仲裁模塊(Arbiter):
[0118]當(dāng)一個(gè)Cluster內(nèi)部有多個(gè)核同時(shí)對(duì)一個(gè)Postbox發(fā)起消息讀寫(xiě)訪問(wèn)時(shí)將發(fā)生沖突。故本發(fā)明所述ICN包括若干Arbiter模塊,圖14是根據(jù)本發(fā)明實(shí)施例的核間通信裝置中仲裁模塊的結(jié)構(gòu)框圖,如圖14所示,該仲裁模塊包括若干個(gè)消息輸入接口和I個(gè)消息輸出接口。其提供如下功能:對(duì)若干數(shù)據(jù)通道的讀寫(xiě)訪問(wèn)請(qǐng)求按照特定原則進(jìn)行仲裁,即將同時(shí)到達(dá)的消息讀寫(xiě)訪問(wèn)請(qǐng)求串行化。
[0119]其中,Arbiter對(duì)同時(shí)到達(dá)所述仲裁模塊的消息讀寫(xiě)訪問(wèn)進(jìn)行輪詢(xún)仲裁,即使多個(gè)同時(shí)到達(dá)的消息讀寫(xiě)訪問(wèn)按照順序串行輸出;即對(duì)存在消息讀寫(xiě)請(qǐng)求的不同數(shù)據(jù)通路之間進(jìn)行輪詢(xún),即每次只能選通一個(gè)存在請(qǐng)求的數(shù)據(jù)通路,讀寫(xiě)訪問(wèn)完成后,再選通下一個(gè)存在消息讀寫(xiě)請(qǐng)求的數(shù)據(jù)通路;依次類(lèi)推,直至處理完所有通路的消息讀寫(xiě)請(qǐng)求。
[0120]同時(shí),根據(jù)模塊設(shè)置的工作模式,可以對(duì)同時(shí)到達(dá)所述仲裁模塊的消息讀寫(xiě)訪問(wèn)進(jìn)行優(yōu)先級(jí)仲裁,即使多個(gè)同時(shí)到達(dá)的消息讀寫(xiě)訪問(wèn)請(qǐng)求按照優(yōu)先級(jí)由高到低的順序進(jìn)行。
[0121]應(yīng)用本核間通信裝置的核間通信方法步驟如下:
[0122]待發(fā)送消息核通過(guò)BA進(jìn)行寫(xiě)消息操作,并根據(jù)BA返回的信息確定消息是否發(fā)送成功。各個(gè)核的寫(xiě)消息操作是異步且獨(dú)立的,互不影響。如果BA返回的ErrorResponse通信息為無(wú)效,則消息發(fā)送成功;反之,表示Postbox被占用,寫(xiě)消息未成功。此時(shí),發(fā)送核可以延遲若干周期后再進(jìn)行寫(xiě)消息操作,直到消息發(fā)送成功為止。
[0123]若干發(fā)送核的發(fā)送消息經(jīng)過(guò)Arbiter或不經(jīng)過(guò)Arbiter發(fā)送至具有特定地址的Postbox中,Postbox產(chǎn)生中斷請(qǐng)求給接收消息核。當(dāng)互相通信的核數(shù)量較少時(shí),消息讀寫(xiě)可以不經(jīng)過(guò)Arbiter。
[0124]接收核接收到中斷,并進(jìn)行消息讀取操作。
[0125]接收核的消息讀操作請(qǐng)求信號(hào)進(jìn)入ICN直至發(fā)送到產(chǎn)生中斷請(qǐng)求的Postbox中,并讀取到發(fā)送給它的消息且Postbox的中斷請(qǐng)求自動(dòng)拉低(即將讀取完畢消息所對(duì)應(yīng)的中斷請(qǐng)求自動(dòng)清除)。
[0126]舉下面3個(gè)例子說(shuō)明本發(fā)明所述核間方法:
[0127]A: 一般應(yīng)用下CLUSTER內(nèi)部消息通信過(guò)程:
[0128]1.發(fā)消息核DSP2發(fā)送消息到屬于目的核DSPO的PostboxO ;
[0129]2.PostboxO產(chǎn)生中斷請(qǐng)求給DSPO ;
[0130]3.DSPO進(jìn)入ISR,讀取Postbox中的消息。
[0131]B.一般應(yīng)用下同時(shí)有跨CLUSTER的消息通信和CLUSTER內(nèi)部的消息通信過(guò)程:
[0132]1.DSP cluster。內(nèi)部發(fā)消息核DSP2發(fā)送消息到屬于目的核DSPO的PostboxO ;DSP clusterl的發(fā)消息核DSP3,4同時(shí)有消息需要發(fā)送給DSP clusterODSPO。故首先經(jīng)過(guò)了 DSP clusterl內(nèi)部的Arbiter2進(jìn)行了仲裁,假設(shè)發(fā)送核DSP3獲得了仲裁權(quán),先把消息寫(xiě)到了 DSP CLUSTER0的Postbox中,而后發(fā)送核DSP4獲得了仲裁權(quán),把消息寫(xiě)到了 DSPCLUSTER0 的 Postbox 中;
[0133]2.DSP CLUSTER0 內(nèi)部 PostboxO 和 DSP CLUSTER0 的 Postbox 同時(shí)有中斷請(qǐng)求產(chǎn)生;
[0134]3.DSPO核進(jìn)入ISR,根據(jù)軟件設(shè)定的優(yōu)先級(jí),假設(shè)先讀取了內(nèi)部PostboxO的消息,再讀取DSP CLUSTER0的Postbox中的消息。
[0135]C.互斥保護(hù)機(jī)制生效時(shí)的跨CLUSTER的核間通信過(guò)程:
[0136]1.CPU COREO 經(jīng)過(guò) BA6 發(fā)送了一條消息到 CPU&DSP cross Postbox ;
[0137]2.CPU&DSP cross Postbox產(chǎn)生中斷請(qǐng)求給DSP5,DSP5由于同時(shí)有優(yōu)先級(jí)更高的事務(wù)未來(lái)得及處理該中斷,即未進(jìn)行消息讀??;
[0138]3.CPU COREO 經(jīng)過(guò) BA6 又發(fā)送了 一條消息到 CPU&DSP cross Postbox,但返回ERROR信息,表示通信資源鎖未被釋放,該消息未發(fā)送成功;CPU C0RE0進(jìn)入等待周期后又再次進(jìn)行消息發(fā)送操作。
[0139]4.DSP5處理完高優(yōu)先級(jí)的事務(wù),成功讀取第I條消息。
[0140]5.CPU C0RE0成功發(fā)送第2條消息,即返回的ERROR信息為無(wú)效。然后CPU coreO成功讀取了第2條消息??梢?jiàn)在進(jìn)行核間通信的過(guò)程中無(wú)需額外的互斥保護(hù)機(jī)制,即實(shí)現(xiàn)了可靠的核間通信。
[0141]需要強(qiáng)調(diào)的是,在實(shí)際的核間通信過(guò)程中,以上3種情況或更復(fù)雜的通信場(chǎng)景都是可能存在的。
[0142]另外,本發(fā)明實(shí)施例的核間通信裝置所包括的上述3個(gè)模塊以及連接交互關(guān)系是解決相關(guān)技術(shù)所存在的技術(shù)問(wèn)題的關(guān)鍵;本發(fā)明實(shí)施例的核間通信方法也是區(qū)別與現(xiàn)有技術(shù)也是顯而易見(jiàn)的。上述實(shí)施例及優(yōu)選實(shí)施方式具有天生的互斥功能。即在進(jìn)行核間通信前,無(wú)需進(jìn)行額外的申請(qǐng)鎖和釋放鎖的操作,互斥完全通過(guò)對(duì)ICN本身的讀寫(xiě)訪問(wèn)和ERROR返回機(jī)制完成;另外,實(shí)施時(shí)無(wú)需要任何初始化步驟,ICN上電復(fù)位后即可正常工作;當(dāng)消息讀寫(xiě)請(qǐng)求進(jìn)入ICN后,完全由ICN自行管理,從而顯著減少了核間通信的復(fù)雜性,減少通信時(shí)延;該核間通信裝置采用分布式結(jié)構(gòu),可以使某些通信流量局限在特定區(qū)域的帶寬之內(nèi)而不對(duì)其他通信區(qū)域造成任何影響,并且顯著減少了單一仲裁模塊的仲裁開(kāi)銷(xiāo),從而顯著減少了多核整體的統(tǒng)計(jì)通信延遲;當(dāng)核數(shù)量顯著增加時(shí),通過(guò)上述實(shí)施例及優(yōu)選實(shí)施方式,僅需增加相應(yīng)數(shù)量的3類(lèi)模塊和對(duì)應(yīng)的互聯(lián)線,同時(shí)互聯(lián)方式也可以根據(jù)應(yīng)用需求靈活連接,不影響ICN的現(xiàn)有結(jié)構(gòu)特征和軟件操作步驟,因此具有極好的可擴(kuò)展性和可裁減性。
[0143]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0144]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種核間通信裝置,其特征在于,包括: 信箱模塊,用于存儲(chǔ)消息發(fā)送核發(fā)送給消息接收核的消息,并通知所述消息接收核讀取所述消息; 總線適配模塊,連接于所述信箱模塊與進(jìn)行通信的所述消息接收核和消息發(fā)送核之間,用于提供所述信箱模塊與所述消息接收核和所述消息發(fā)送核的讀寫(xiě)接口。
2.根據(jù)權(quán)利要求1 所述的裝置,其特征在于,還包括: 仲裁模塊:用于在多個(gè)核同時(shí)向所述信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),按照預(yù)定的規(guī)則對(duì)所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求進(jìn)行仲裁,將所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求依次串行輸出。
3.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述信箱模塊包括: 總線接口單元,用于通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥。
4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述總線接口單元包括: 第一互斥單元,用于通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)多個(gè)消息發(fā)送核向所述信箱模塊寫(xiě)消息的互斥;和/或, 第二互斥單元,用于通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)消息發(fā)送核向所述信箱模塊寫(xiě)消息與消息接收核從所述信箱模塊讀消息的互斥。
5.根據(jù)權(quán)利要求3或4所述的裝置,其特征在于,所述總線接口單元還包括: 觸發(fā)子單元,用于在所述消息發(fā)送核向所述信箱模塊寫(xiě)入了消息,或者,所述消息接收核從所述信箱模塊讀取了消息之后,觸發(fā)所述總線錯(cuò)誤反饋寄存器的狀態(tài)變化。
6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述信箱模塊包括: 存儲(chǔ)單元,用于根據(jù)消息訪問(wèn)地址對(duì)所述消息進(jìn)行存儲(chǔ)。
7.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述信箱模塊包括: 通知單元,用于通過(guò)中斷請(qǐng)求通知所述消息接收核接收消息。
8.一種核間通信方法,其特征在于,包括: 信箱模塊通過(guò)總線適配模塊接收來(lái)自消息發(fā)送核發(fā)送的消息; 所述信箱模塊向消息接收核發(fā)送中斷請(qǐng)求,其中,所述消息接收核根據(jù)所述中斷請(qǐng)求讀取所述消息。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括:在多個(gè)核同時(shí)向所述信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),按照預(yù)定的規(guī)則對(duì)所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求進(jìn)行仲裁,將所述多個(gè)讀寫(xiě)訪問(wèn)請(qǐng)求依次串行輸出。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,在多個(gè)核同時(shí)向所述信箱模塊發(fā)起用于請(qǐng)求讀寫(xiě)消息的讀寫(xiě)訪問(wèn)請(qǐng)求時(shí),通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,通過(guò)復(fù)用總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)讀寫(xiě)消息的互斥包括: 通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)多個(gè)消息發(fā)送核向所述信箱模塊寫(xiě)消息的互斥;和/或,通過(guò)復(fù)用所述總線錯(cuò)誤反饋寄存器實(shí)現(xiàn)互斥鎖的功能,實(shí)現(xiàn)消息發(fā)送核向所述信箱模塊寫(xiě)消息與消息接收核從所述信箱模塊讀消息的互斥。
12.根據(jù)權(quán)利要求10或11所述的方法,其特征在于,在所述消息發(fā)送核向所述信箱模塊寫(xiě)入了消息,或者,所述消息接收核從所述信箱模塊讀取了消息之后,觸發(fā)所述總線錯(cuò)誤反饋寄存器的狀態(tài)變化。
13.根據(jù)權(quán)利要求10或11所述的方法,其特征在于, 在所述消息發(fā)送核向所述信箱模塊寫(xiě)入了消息之后,所述信箱模塊向所述消息發(fā)送核發(fā)送第一響應(yīng)消息,其中,所述消息發(fā)送核根據(jù)所述第一響應(yīng)消息確定所述消息發(fā)送核向所述信箱模塊寫(xiě)入消息成功;和/或, 在所述消息接收核從所述信箱模塊讀取了消息之后,所述信箱模塊向所述消息接收核發(fā)送第二響應(yīng)消息,其中,所述消息接收核根據(jù)所述第二響應(yīng)消息確定所述消息接收核讀取消息成功。
14.根據(jù)權(quán)利要求8所述的方法,其特征在于,在所述消息接收核讀取了所述消息之后,還包括,所述信箱模塊將所述中斷請(qǐng)求清除。
15.一種核間通信裝置,其特征在于,包括: 接收單元,位于信箱模塊中,用于通過(guò)總線適配模塊接收來(lái)自消息發(fā)送核發(fā)送的消息; 發(fā)送單元,位于所述信箱模塊中,用于向消息接收核發(fā)送中斷請(qǐng)求,其中,所述消息接收核根據(jù)所述中斷請(qǐng)求讀取所述消息。
【文檔編號(hào)】G06F13/24GK103729329SQ201210389118
【公開(kāi)日】2014年4月16日 申請(qǐng)日期:2012年10月12日 優(yōu)先權(quán)日:2012年10月12日
【發(fā)明者】王鵬 申請(qǐng)人:深圳市中興微電子技術(shù)有限公司