欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

嵌入式實時操作系統(tǒng)中多核處理器的核間通信方法及裝置的制作方法

文檔序號:6632769閱讀:380來源:國知局
專利名稱:嵌入式實時操作系統(tǒng)中多核處理器的核間通信方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及嵌入式實時操作系統(tǒng)和多核處理器,尤其涉及一種嵌入式實時操作系統(tǒng)中多核處理器的核間通信方法及裝置。
背景技術(shù)
隨著網(wǎng)絡(luò)和計算機技術(shù)的飛速發(fā)展,對CPU(Central Process Unit,中央處理器)的性能要求越來越高。CPU性能的提升以前主要是通過提高主頻來實現(xiàn)的,而主頻的提升要求大幅度增加晶體管的數(shù)量,隨之而來的散熱問題也日益凸顯。除了提高主頻以外,另一個提高CPU性能的方法就是多核處理器。
多核處理器是在一個處理器上集成兩個以上的計算單元,每個計算單元成為一個核,令一顆CPU提供接近多顆CPU的性能。多核處理器中的每個核上運行著各自的任務(wù),而多個核上的任務(wù)之間常常需要傳遞數(shù)據(jù)信息(通常稱之為傳遞消息),現(xiàn)有技術(shù)中,在多個核間通過數(shù)據(jù)管道來進行通信。
圖1所示為有兩個核,核M 110和核N 120的多核處理器的結(jié)構(gòu),核M 110和核N 120分別有各自的專用內(nèi)存區(qū)130和140,兩個核間具有共享存儲區(qū)170。每個核在共享內(nèi)存區(qū)170中分配有向其他核發(fā)送數(shù)據(jù)用的數(shù)據(jù)管道,由于數(shù)據(jù)管道是單向的,所以在共享內(nèi)存區(qū)170中有核M 110分配的核M至核N數(shù)據(jù)管道180和核N分配的核N至核M數(shù)據(jù)管道190。每個核在專用內(nèi)存區(qū)中存儲著一個靜態(tài)的路由表,指向至其他核的數(shù)據(jù)管道。核M 110和核N120分別有各自的虛中斷模塊150和160,任意一個核可以通過操作目的核的虛中斷模塊觸發(fā)該核的一次虛中斷,該中斷通知目的核在數(shù)據(jù)通道中有新的數(shù)據(jù)到來。
當核M 110上的一個源任務(wù)向核N 120上的一個目的任務(wù)發(fā)送消息時,核M 110查詢專用內(nèi)存區(qū)130中的路由表,找到核M至核N數(shù)據(jù)管道180,將要傳遞消息的數(shù)據(jù)信息從專用內(nèi)存區(qū)130拷貝到核M至核N數(shù)據(jù)管道180中;同時,核M 110通過核N 120的虛中斷模塊160使用內(nèi)部虛中斷與核N 120進行握手,傳遞目的任務(wù)標識和消息標識。核N 120響應(yīng)虛中斷,根據(jù)目的任務(wù)標識從核M至核N數(shù)據(jù)管道180中將該消息的數(shù)據(jù)信息拷貝到專用內(nèi)存區(qū)140中,打包為消息并傳遞給目的任務(wù)。
在現(xiàn)有技術(shù)中,多核處理器的核間通信存在以下幾個問題一次在核間傳遞的消息長度受到限制由于數(shù)據(jù)管道在共享內(nèi)存區(qū)中是固定分配的,始終占用著共享內(nèi)存區(qū),通常數(shù)據(jù)管道不可能分配很大的內(nèi)存;同時為了減小數(shù)據(jù)管道中讀寫發(fā)生沖突的可能性,需要將數(shù)據(jù)管道設(shè)計為具有一定深度,即可以容納多條消息,這樣每條消息的長度受到限制,一般核間通信只能傳遞小數(shù)據(jù)量的消息;核間通信效率低從上述消息發(fā)送過程可知,完成一次核間通信需要兩次拷貝該消息的所有數(shù)據(jù),這極大地降低了核間通信的效率;核內(nèi)任務(wù)通信和核間任務(wù)通信方式不同ERTOS(Embedded Real TimeOperating System,嵌入式實時操作系統(tǒng))為一個核內(nèi)的任務(wù)間通信提供了消息隊列機制;而核間通信采用的數(shù)據(jù)管道對ERTOS而言是虛擬的I/O(輸入輸出)設(shè)備,采用驅(qū)動提供的通信機制,這使得應(yīng)用程序的開發(fā)極為不便。

發(fā)明內(nèi)容
本發(fā)明要解決的是現(xiàn)有的多核處理器的核間通信效率低、一次通信傳遞的消息長度受到限制和核內(nèi)通信和核間通信不統(tǒng)一的問題。
本發(fā)明所述嵌入式實時操作系統(tǒng)中多核處理器的核間通信方法包括以下步驟
a)在共享內(nèi)存區(qū)中分配內(nèi)存作為多核共享消息池;b)源核將要發(fā)送的消息寫入多核共享消息池;c)源核將所述消息在多核共享消息池中的地址、目的任務(wù)標識通過數(shù)據(jù)管道發(fā)送給目的核;d)目的核將多核共享消息池中所述地址存放的所述消息傳送給目的任務(wù)。
優(yōu)選地,所述步驟a)與步驟b)之間包括ab)源核在多核共享消息池中分配多核消息內(nèi)存塊,用來寫入所述消息。
優(yōu)選地,所述多核消息內(nèi)存塊包括頭部信息區(qū)域和數(shù)據(jù)區(qū)域,其中所述頭部信息包括所述多核消息內(nèi)存塊的大小、所屬任務(wù)標識,所述數(shù)據(jù)區(qū)域用來存放所述消息的數(shù)據(jù);所述嵌入式實時操作系統(tǒng)的單核消息池的消息內(nèi)存塊與所述多核消息內(nèi)存塊的頭部信息具有相同的格式。
優(yōu)選地,步驟d)具體為目的核將所述消息在多核共享消息池中的地址放入目的任務(wù)的消息隊列。
優(yōu)選地,所述步驟a)與步驟ab)之間包括源核在發(fā)送消息時指明所述消息的目的核標識和目的任務(wù)標識;判斷所述目的核標識與源核標識是否相同,如果相同,則通過所述嵌入式實時操作系統(tǒng)提供的單核內(nèi)消息發(fā)送函數(shù)將消息發(fā)送給目的任務(wù);如果不同,執(zhí)行下一步。
優(yōu)選地,所述步驟a)之前包括對多核處理器上運行的所有任務(wù)進行統(tǒng)一的編號并記錄運行該任務(wù)的核的標識;所述步驟a)與步驟ab)之間包括
源核在發(fā)送消息時指明所述消息的目的任務(wù)編號;判斷所述目的任務(wù)是否在源核上運行,如果相同,則通過所述嵌入式實時操作系統(tǒng)提供的單核內(nèi)消息發(fā)送函數(shù)將消息發(fā)送給目的任務(wù);如果不同,執(zhí)行下一步。
優(yōu)選地,當所述消息的源核與目的核不同時,所述步驟ab)之前包括源核鎖定多核共享消息池的自旋鎖;所述步驟ab)與步驟b)之間包括源核解除多核共享消息池的自旋鎖。
優(yōu)選地,當所述消息的源核與目的核不同時,所述步驟d)之后包括目的核鎖定多核共享消息池的自旋鎖;目的核釋放所述多核消息內(nèi)存塊;目的核解除多核共享消息池的自旋鎖。
優(yōu)選地,當所述消息的源核與目的核不同時,所述步驟a)之前包括在共享內(nèi)存區(qū)建立源核至目的核的數(shù)據(jù)管道;所述步驟c)具體為源核將所述消息在多核共享消息池中的地址和目的任務(wù)標識拷貝至所述數(shù)據(jù)管道;源核觸發(fā)目的核的虛中斷;目的核響應(yīng)虛中斷,從所述數(shù)據(jù)管道中拷貝出所述消息在多核共享消息池中的地址和目的任務(wù)標識。
本發(fā)明還提供了一種嵌入式實時操作系統(tǒng)中多核處理器的核間通信裝置,包括核、核間通信控制模塊、虛中斷模塊、核間消息模塊和包括數(shù)據(jù)通道和多核共享消息池的共享內(nèi)存區(qū),其中所述核間消息模塊根據(jù)所述核的發(fā)送指令將要發(fā)送的消息寫入多核共享消息池,向所述核返回發(fā)送消息在多核共享消息池中的地址;并且根據(jù)所述核傳遞的要接收的消息在多核共享消息池中的地址,讀取接收消息傳遞給所述核;所述多核共享消息池用來存儲核間通信的消息;所述核間通信控制模塊用來根據(jù)所述核的發(fā)送指令將要發(fā)送的消息在多核共享消息池中的地址和目的任務(wù)標識拷貝到數(shù)據(jù)通道中,并將其他核發(fā)往所述核的消息在多核共享消息池中的地址和目的任務(wù)標識從數(shù)據(jù)通道中拷貝給所述核;所述數(shù)據(jù)通道用來在核間傳遞消息在多核共享消息池中的地址和目的任務(wù)標識;所述虛中斷模塊根據(jù)所述核的發(fā)送指令觸發(fā)其他核的虛中斷,并接受其他核的觸發(fā)產(chǎn)生虛中斷通知所述核接收其他核發(fā)送的消息。
優(yōu)選地,所述核間消息模塊包括消息內(nèi)存模塊和自旋鎖模塊,其中所述消息內(nèi)存模塊根據(jù)所述核的發(fā)送指令為要發(fā)送的消息在多核共享消息池中分配多核消息內(nèi)存塊,在分配的多核消息內(nèi)存塊中寫入發(fā)送消息,向所述核返回發(fā)送消息在多核共享消息池中的地址;或者根據(jù)所述核傳遞的要接收的消息在多核共享消息池中的地址,讀取接收消息傳遞給所述核,并釋放接收消息的消息內(nèi)存塊;所述自旋鎖模塊在所述消息內(nèi)存模塊分配和釋放多核消息內(nèi)存塊前鎖定所述多核共享消息池的自旋鎖,并在分配和釋放多核消息內(nèi)存塊后解除所述自旋鎖。
優(yōu)選地,所述裝置還包括識別模塊、核內(nèi)通信模塊和單核消息池,其中所述識別模塊用來識別消息的目的核為所述核本身的發(fā)送指令,并將目的核為所述核本身的發(fā)送指令傳遞給所述核內(nèi)通信模塊;
所述核內(nèi)通信模塊根據(jù)所述核的發(fā)送指令在所述單核消息池中分配和釋放消息內(nèi)存塊,通過消息內(nèi)存塊進行核內(nèi)任務(wù)間的通信;所述單核消息池以消息內(nèi)存塊來存儲核內(nèi)任務(wù)間通信的消息。
優(yōu)選地,所述多核消息內(nèi)存塊和消息內(nèi)存塊都包括頭部信息區(qū)域和數(shù)據(jù)區(qū)域,其中所述頭部信息包括所述多核消息內(nèi)存塊或所述消息內(nèi)存塊的大小、所屬任務(wù)標識,所述數(shù)據(jù)區(qū)域用來存放所述消息的數(shù)據(jù);所述多核消息內(nèi)存塊與所述消息內(nèi)存塊具有相同的頭部信息格式。
本發(fā)明通過在共享內(nèi)存區(qū)中建立多核共享消息池存儲在核間傳輸?shù)南?,以?shù)據(jù)管道傳輸消息在多核通向消息池中的地址,實現(xiàn)了核間的消息隊列通信機制,從而避免了兩次消息數(shù)據(jù)的拷貝過程,提高了核間通信的效率,每次傳輸消息的長度也不再受到數(shù)據(jù)管道容量的限制;進而,由于本發(fā)明中單核任務(wù)通信和核間任務(wù)通信都采用消息隊列機制,并且為核提供了單一的消息發(fā)送和接收接口,實現(xiàn)了核內(nèi)通信和核間通信的統(tǒng)一,為應(yīng)用程序的開發(fā)提供了方便。


圖1所示為具有兩個核的多核處理器的結(jié)構(gòu)示意圖;圖2所示為本發(fā)明所述核間通信方法的流程圖;圖3所示為本發(fā)明所述核間通信裝置的結(jié)構(gòu)圖。
具體實施例方式
ERTOS為單核的核內(nèi)任務(wù)通信提供了消息隊列機制。ERTOS在核的專用內(nèi)存區(qū)中控制著一塊內(nèi)存,專用于核內(nèi)通信的消息數(shù)據(jù)存儲,這塊內(nèi)存稱為單核消息池。任務(wù)在發(fā)送消息前,通過ERTOS從單核消息池中分配指定大小的消息內(nèi)存塊。一個消息內(nèi)存塊分為頭部信息區(qū)域和數(shù)據(jù)區(qū)域,頭部信息區(qū)域中記錄了該消息內(nèi)存塊的相關(guān)信息,如大小、所屬任務(wù)的ID(標識)等等,任務(wù)在數(shù)據(jù)區(qū)域中存放消息數(shù)據(jù)。
消息隊列由運行在核上的任務(wù)創(chuàng)建,消息隊列實質(zhì)上是一個鏈表,鏈表中每一項代表一個消息,其實際內(nèi)容因ERTOS的不同而有所區(qū)別,必備的內(nèi)容是指向所代表的消息的鏈接指針,或者說是該消息在單核消息池中的地址。
任務(wù)發(fā)送消息時,將消息數(shù)據(jù)寫入到所分配消息內(nèi)存塊的數(shù)據(jù)區(qū)域中。之后,調(diào)用ERTOS提供的消息發(fā)送函數(shù)將消息發(fā)送到目的任務(wù)綁定的消息隊列中。這一過程的具體實現(xiàn)如下ERTOS修改目的任務(wù)消息隊列的鏈接指針,使其指向該消息內(nèi)存塊;修改消息內(nèi)存塊頭部信息中記錄的鏈接信息將消息內(nèi)存塊插入到目的任務(wù)的消息隊列鏈表中。
可見,在這一過程中并沒有數(shù)據(jù)拷貝發(fā)生。需要特別指出的是,ERTOS消息隊列的實現(xiàn)機制必須與消息池的實現(xiàn)機制相一致,因為兩者對于消息內(nèi)存塊的頭部信息格式需要有統(tǒng)一的認識。
ERTOS的單核消息池是一種單核獨占的消息池,只為一個核提供消息內(nèi)存塊的分配和回收功能。對于單核消息池的互斥訪問只需要在一個核上的多個任務(wù)間進行,由ERTOS提供的信號量、互斥鎖等機制實現(xiàn)。單核消息池不能服務(wù)于多核間的消息通信。
本發(fā)明的思路是實現(xiàn)多核共享的消息池,結(jié)合核內(nèi)任務(wù)的消息隊列實現(xiàn)核間消息通信。本發(fā)明中核間通信方法的流程如圖2所示,其中,發(fā)送消息的任務(wù)運行的核為源核,接收消息的目的任務(wù)運行的核為目的核。
在步驟S010,在共享內(nèi)存區(qū)中分配內(nèi)存作為多核共享消息池。多核共享消息池用來存放核間通信的消息數(shù)據(jù)和頭部信息,可以在系統(tǒng)初始化過程中創(chuàng)建,也可以在源核發(fā)送消息前創(chuàng)建。
在步驟S020,在共享內(nèi)存區(qū)建立源核至目的核的數(shù)據(jù)管道。建立數(shù)據(jù)管道的方法與現(xiàn)有技術(shù)中相同,不再贅述。
在本發(fā)明中,源核仍需要通過數(shù)據(jù)管道向目的核傳遞消息在多核共享消息池中的地址和目的任務(wù)ID,也就是說,地址和目的任務(wù)ID仍需要經(jīng)過兩次拷貝。但由于這些內(nèi)容僅僅只有幾個字節(jié)的數(shù)據(jù),因而幾乎不會對核間通信效率造成影響。
在步驟S030,判斷源核是否進行核間通信,如果是,執(zhí)行步驟S050;如果否,執(zhí)行步驟S040,通過ERTOS提供的單核內(nèi)消息發(fā)送函數(shù)發(fā)送消息,進行核內(nèi)任務(wù)間的通信。
由于本發(fā)明的核間通信可以采用消息隊列的方式實現(xiàn),這樣就具備統(tǒng)一核內(nèi)通信和核間通信接口的條件。也就是說,在發(fā)送消息時不必區(qū)分核內(nèi)通信和核間通信都使用相同的參數(shù),根據(jù)這些參數(shù)判決是核內(nèi)通信還是核間通信。
本步驟有多種實現(xiàn)手段,以下為兩個可選的方式源核在發(fā)送消息時,不論核內(nèi)通信還是核間通信,在參數(shù)中都包括該消息的目的核ID和目的任務(wù)ID;這樣,只要判斷目的核ID與源核ID是否相同,即可得知是核內(nèi)通信還是核間通信;對多核處理器上運行的所有任務(wù)進行統(tǒng)一的編號,同時記錄運行該任務(wù)的核的ID;源核在發(fā)送消息時,在參數(shù)中都包括該消息的目的任務(wù)編號;查找出運行目的任務(wù)的核ID,看其與源核ID是否相同即可得知是核內(nèi)通信還是核間通信。
在步驟S050,源核鎖定多核共享消息池的自旋鎖。
在具有共享內(nèi)存區(qū)的多核系統(tǒng)中,由于每個核都可以在任一時間請求使用共享內(nèi)存區(qū)中的臨界資源,即可供多核共享的內(nèi)存塊,因此共享內(nèi)存區(qū)應(yīng)當提供一種互斥機制,以避免資源使用陷入混亂狀態(tài)。共享內(nèi)存區(qū)以如下方式實現(xiàn)互斥訪問每個核在使用共享內(nèi)存區(qū)中的某個臨界資源前,需要申請在該臨界資源內(nèi)分配內(nèi)存空間,申請成功后該核得到所申請的內(nèi)存空間的地址。核只能通過這個地址來訪問這一段內(nèi)存空間,其他核要想對該段內(nèi)存空間進行操作,必須先得到這個地址,因而提出申請的核可以獨自使用該段內(nèi)存空間,也可以將該段內(nèi)存空間的控制權(quán)交給別的核。
共享內(nèi)存區(qū)為每個臨界資源提供了自旋鎖以控制對該臨界資源的分配和釋放過程。任何一個核都可以試圖去鎖定一個自旋鎖,如果該自旋鎖已經(jīng)被別的核鎖定并且還沒有解鎖,則這種申請鎖定的操作會使執(zhí)行這一操作的核陷入忙等狀態(tài),直到占用該自旋鎖的核對其執(zhí)行解鎖操作。某個核對臨界資源提出內(nèi)存空間分配申請,鎖定自旋鎖以確保同一時間不會有其他的對臨界資源內(nèi)存空間的操作存在,來保證對所分配到的內(nèi)存空間具有獨占的使用權(quán)。
本發(fā)明中也采用自旋鎖實現(xiàn)核間對多核共享消息池的互斥訪問。
在步驟S060,源核在多核共享消息池中分配多核消息內(nèi)存塊,用來寫入所述消息。本發(fā)明中多核消息內(nèi)存塊也包括包括頭部信息區(qū)域和數(shù)據(jù)區(qū)域,其中頭部信息也包括多核消息內(nèi)存塊的大小、所屬任務(wù)ID等信息,數(shù)據(jù)區(qū)域用來存放傳輸消息的數(shù)據(jù)。
為了實現(xiàn)核內(nèi)通信和核間通信的統(tǒng)一,多核消息內(nèi)存塊應(yīng)該與單核消息池中的消息內(nèi)存塊具有相同的結(jié)構(gòu),尤其是相同頭部信息的格式。
在步驟S070,源核解除多核共享消息池的自旋鎖。
在步驟S080,源核將要發(fā)送的消息寫入多核共享消息池,即寫入在多核共享消息池中分配到的多核消息內(nèi)存塊。
在步驟S090,源核將該消息在多核共享消息池中的地址、目的任務(wù)ID通過數(shù)據(jù)管道發(fā)送給目的核。
本步驟中通過數(shù)據(jù)管道發(fā)送數(shù)據(jù)的方法與現(xiàn)有技術(shù)中相同,具體為源核將該消息在多核共享消息池中的地址和目的任務(wù)標識拷貝至源核至目的核的數(shù)據(jù)管道;
源核觸發(fā)目的核的虛中斷;目的核響應(yīng)虛中斷,從源核至目的核的數(shù)據(jù)管道中拷貝出該消息在多核共享消息池中的地址和目的任務(wù)標識。
在步驟S100,目的核將多核共享消息池中該地址存放的消息傳送給目的任務(wù)。
當多核消息內(nèi)存塊與單核的消息內(nèi)存塊具有相同的結(jié)構(gòu)時,目的任務(wù)可以采用與核內(nèi)通信同樣的方法來接收消息。在這種情況下,目的核將該消息包括在多核共享消息池中的地址的鏈接信息寫入目的任務(wù)的消息隊列中,目的任務(wù)即可接收到源核發(fā)送的消息。
在步驟S110,目的核鎖定多核共享消息池的自旋鎖。
在步驟S120,目的核釋放所述多核消息內(nèi)存塊。
在步驟S130,目的核解除多核共享消息池的自旋鎖。
在目的任務(wù)接收消息后,執(zhí)行步驟S110至S130釋放通信的消息占用的多核消息內(nèi)存塊。
本發(fā)明還提供了一種ERTOS中實現(xiàn)核間通信的裝置,其結(jié)構(gòu)如圖3所示。需要說明的是,共享內(nèi)存區(qū)350、在共享內(nèi)存區(qū)350中的數(shù)據(jù)通道351和多核共享消息池352是多核處理器中所有核共用的,而圖中的其他模塊則只由一個核使用。數(shù)據(jù)通道351用來在核間傳遞消息在多核共享消息池中的地址和目的任務(wù)標識,多核共享消息池352用來存儲核間通信的消息。
在核310向另一個核發(fā)送消息時,向輸出發(fā)送指令。核間消息模塊340中的消息內(nèi)存模塊341根據(jù)發(fā)送指令為要發(fā)送的消息在多核共享消息池352中分配多核消息內(nèi)存塊,在其中寫入發(fā)送消息,并將發(fā)送消息在多核共享消息池352中的地址返回給核310;核310向核間通信控制模塊320輸出發(fā)送指令,并將要發(fā)送的消息在多核共享消息池352中的地址和目的任務(wù)標識同時通知核間通信控制模塊320。核間通信控制模塊320將該地址和目的任務(wù)標識拷貝到數(shù)據(jù)通道351中;核310向虛中斷模塊330輸出發(fā)送指令,虛中斷模塊330觸發(fā)目的核的虛中斷;至此,消息發(fā)送完成。
當有另一個核向核310發(fā)送消息時,虛中斷模塊330接受源核的觸發(fā)產(chǎn)生虛中斷,通知核310有其他核發(fā)送的消息到達;核310通知核間通信控制模塊320接收數(shù)據(jù),核間通信控制模塊320將源核發(fā)往核310的消息在多核共享消息池352中的地址和目的任務(wù)標識拷貝給核310;核310指令核間消息模塊340讀取數(shù)據(jù),同時將要接收的消息在多核共享消息池352中的地址通知核間消息模塊340,核間消息模塊340中的消息內(nèi)存模塊341從多核共享消息池352的指定地址讀取接收消息傳遞給核310,并在消息使用完畢后釋放接收消息的多核消息內(nèi)存塊;至此,消息接收完成。
核間消息模塊340中的自旋鎖模塊342用來控制對多核共享消息池352中臨界資源的互斥訪問,在消息內(nèi)存模塊341分配和釋放多核消息內(nèi)存塊前鎖定多核共享消息池352的自旋鎖,并在分配和釋放多核消息內(nèi)存塊后解除自旋鎖。
為了使核間通信和核內(nèi)通信對核310具有統(tǒng)一的接口,可以在核310和與其連接的核間消息模塊340、核間通信控制模塊320和虛中斷模塊330之間增加識別模塊360。
由于核310在接收來自核間通信的消息時是由虛中斷模塊320觸發(fā)的,因此可以識別模塊360只在核310發(fā)送數(shù)據(jù)時對消息的目的核為核310本身的發(fā)送指令進行識別,并將目的核為核310本身的發(fā)送指令傳遞給核內(nèi)通信模塊370。
核內(nèi)通信模塊370根據(jù)發(fā)送指令在單核消息池380中分配和釋放消息內(nèi)存塊,通過消息內(nèi)存塊進行核內(nèi)任務(wù)間的通信。單核消息池380以消息內(nèi)存塊來存儲核內(nèi)任務(wù)間通信的消息。
當多核共享消息池352與單核消息池380對各自的多核消息內(nèi)存塊和消息內(nèi)存塊的實現(xiàn)機制相同時,核310即可采用同一消息隊列來接收核間通信和核內(nèi)通信的消息。這需要多核消息內(nèi)存塊與消息內(nèi)存塊一樣,包括頭部信息區(qū)域和數(shù)據(jù)區(qū)域,其中頭部信息包括內(nèi)存塊的大小、所屬任務(wù)標識,而數(shù)據(jù)區(qū)域用來存放消息的數(shù)據(jù);同時,多核消息內(nèi)存塊還要與消息內(nèi)存塊具有相同的頭部信息格式。
可見,本發(fā)明中核間通信只要拷貝幾個字節(jié)的數(shù)據(jù),而不需要對消息的數(shù)據(jù)進行二次拷貝,這樣的通信機制提高了核間通信的效率,能夠滿足更多應(yīng)用的需要;本發(fā)明還將核間消息隊列通信的接口與單核內(nèi)多任務(wù)通信的接口進行統(tǒng)一,方便了用戶的使用。而本發(fā)明提供的多核共享消息池的功能,能更多地滿足用戶的需求。
通過數(shù)據(jù)通道在核間傳送數(shù)據(jù)的過程在具體實現(xiàn)中與ERTOS所使用的主板硬件相關(guān)。為了使ERTOS能夠不經(jīng)修改運行在多種主板上,現(xiàn)有技術(shù)中的方案是在主板硬件和ERTOS中增加一層BSP(Board Support Package,板級支持包),為ERTOS提供正確的接口,屏蔽底層硬件的不同。具體到核間數(shù)據(jù)通道的實現(xiàn),與BSP有兩個接口,一個是由BSP提供給數(shù)據(jù)發(fā)送方的接口,另一個數(shù)據(jù)接收方向BSP提供的接口。
本發(fā)明建議對上述兩個接口進行標準化的定義,這樣,當硬件環(huán)境發(fā)生變化、或是BSP實現(xiàn)核間固定長度數(shù)據(jù)通信的內(nèi)部機制發(fā)生改變、或是由其它模塊來實現(xiàn)核間固定長度數(shù)據(jù)通信的功能時,只要遵從了這兩個接口的標準化定義,本發(fā)明所述方法或裝置不經(jīng)改動仍然能夠正確的工作。這能在最大程度上提高可移植性。
本發(fā)明在實現(xiàn)核間通信時只需要知道目的核及目的任務(wù)ID,因而不僅適用于靜態(tài)任務(wù)的ERTOS,也適用于具有動態(tài)創(chuàng)建任務(wù)功能的ERTOS。
以上所述本發(fā)明的實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護范圍之內(nèi)。
權(quán)利要求
1.一種嵌入式實時操作系統(tǒng)中多核處理器的核間通信方法,其特征在于,包括以下步驟a)在共享內(nèi)存區(qū)中分配內(nèi)存作為多核共享消息池;b)源核將要發(fā)送的消息寫入多核共享消息池;c)源核將所述消息在多核共享消息池中的地址、目的任務(wù)標識通過數(shù)據(jù)管道發(fā)送給目的核;d)目的核將多核共享消息池中所述地址存放的所述消息傳送給目的任務(wù)。
2.按照權(quán)利要求1所述的核間通信方法,其特征在于,所述步驟a)與步驟b)之間包括ab)源核在多核共享消息池中分配多核消息內(nèi)存塊,用來寫入所述消息。
3.按照權(quán)利要求2所述的核間通信方法,其特征在于所述多核消息內(nèi)存塊包括頭部信息區(qū)域和數(shù)據(jù)區(qū)域,其中所述頭部信息包括所述多核消息內(nèi)存塊的大小、所屬任務(wù)標識,所述數(shù)據(jù)區(qū)域用來存放所述消息的數(shù)據(jù);所述嵌入式實時操作系統(tǒng)的單核消息池的消息內(nèi)存塊與所述多核消息內(nèi)存塊的頭部信息具有相同的格式。
4.按照權(quán)利要求3所述的核間通信方法,其特征在于,步驟d)具體為目的核將所述消息在多核共享消息池中的地址放入目的任務(wù)的消息隊列。
5.按照權(quán)利要求4所述的核間通信方法,其特征在于,所述步驟a)與步驟ab)之間包括源核在發(fā)送消息時指明所述消息的目的核標識和目的任務(wù)標識;判斷所述目的核標識與源核標識是否相同,如果相同,則通過所述嵌入式實時操作系統(tǒng)提供的單核內(nèi)消息發(fā)送函數(shù)將消息發(fā)送給目的任務(wù);如果不同,執(zhí)行下一步。
6.按照權(quán)利要求4所述的核間通信方法,其特征在于,所述步驟a)之前包括對多核處理器上運行的所有任務(wù)進行統(tǒng)一的編號并記錄運行該任務(wù)的核的標識;所述步驟a)與步驟ab)之間包括源核在發(fā)送消息時指明所述消息的目的任務(wù)編號;判斷所述目的任務(wù)是否在源核上運行,如果相同,則通過所述嵌入式實時操作系統(tǒng)提供的單核內(nèi)消息發(fā)送函數(shù)將消息發(fā)送給目的任務(wù);如果不同,執(zhí)行下一步。
7.按照權(quán)利要求3至6任意一項所述的核間通信方法,其特征在于當所述消息的源核與目的核不同時,所述步驟ab)之前包括源核鎖定多核共享消息池的自旋鎖;所述步驟ab)與步驟b)之間包括源核解除多核共享消息池的自旋鎖。
8.按照權(quán)利要求7所述的核間通信方法,其特征在于,當所述消息的源核與目的核不同時,所述步驟d)之后包括目的核鎖定多核共享消息池的自旋鎖;目的核釋放所述多核消息內(nèi)存塊;目的核解除多核共享消息池的自旋鎖。
9.按照權(quán)利要求8所述的核間通信方法,其特征在于,當所述消息的源核與目的核不同時,所述步驟a)之前包括在共享內(nèi)存區(qū)建立源核至目的核的數(shù)據(jù)管道;所述步驟c)具體為源核將所述消息在多核共享消息池中的地址和目的任務(wù)標識拷貝至所述數(shù)據(jù)管道;源核觸發(fā)目的核的虛中斷;目的核響應(yīng)虛中斷,從所述數(shù)據(jù)管道中拷貝出所述消息在多核共享消息池中的地址和目的任務(wù)標識。
10.一種嵌入式實時操作系統(tǒng)中多核處理器的核間通信裝置,其特征在于,包括核、核間通信控制模塊、虛中斷模塊、核間消息模塊和包括數(shù)據(jù)通道和多核共享消息池的共享內(nèi)存區(qū),其中所述核間消息模塊根據(jù)所述核的發(fā)送指令將要發(fā)送的消息寫入多核共享消息池,向所述核返回發(fā)送消息在多核共享消息池中的地址;并且根據(jù)所述核傳遞的要接收的消息在多核共享消息池中的地址,讀取接收消息傳遞給所述核;所述多核共享消息池用來存儲核間通信的消息;所述核間通信控制模塊用來根據(jù)所述核的發(fā)送指令將要發(fā)送的消息在多核共享消息池中的地址和目的任務(wù)標識拷貝到數(shù)據(jù)通道中,并將其他核發(fā)往所述核的消息在多核共享消息池中的地址和目的任務(wù)標識從數(shù)據(jù)通道中拷貝給所述核;所述數(shù)據(jù)通道用來在核間傳遞消息在多核共享消息池中的地址和目的任務(wù)標識;所述虛中斷模塊根據(jù)所述核的發(fā)送指令觸發(fā)其他核的虛中斷,并接受其他核的觸發(fā)產(chǎn)生虛中斷通知所述核接收其他核發(fā)送的消息。
11.按照權(quán)利要求10述的核間通信裝置,其特征在于,所述核間消息模塊包括消息內(nèi)存模塊和自旋鎖模塊,其中所述消息內(nèi)存模塊根據(jù)所述核的發(fā)送指令為要發(fā)送的消息在多核共享消息池中分配多核消息內(nèi)存塊,在分配的多核消息內(nèi)存塊中寫入發(fā)送消息,向所述核返回發(fā)送消息在多核共享消息池中的地址;或者根據(jù)所述核傳遞的要接收的消息在多核共享消息池中的地址,讀取接收消息傳遞給所述核,并釋放接收消息的消息內(nèi)存塊;所述自旋鎖模塊在所述消息內(nèi)存模塊分配和釋放多核消息內(nèi)存塊前鎖定所述多核共享消息池的自旋鎖,并在分配和釋放多核消息內(nèi)存塊后解除所述自旋鎖。
12.按照權(quán)利要求11的核間通信裝置,其特征在于,所述裝置還包括識別模塊、核內(nèi)通信模塊和單核消息池,其中所述識別模塊用來識別消息的目的核為所述核本身的發(fā)送指令,并將目的核為所述核本身的發(fā)送指令傳遞給所述核內(nèi)通信模塊;所述核內(nèi)通信模塊根據(jù)所述核的發(fā)送指令在所述單核消息池中分配和釋放消息內(nèi)存塊,通過消息內(nèi)存塊進行核內(nèi)任務(wù)間的通信;所述單核消息池以消息內(nèi)存塊來存儲核內(nèi)任務(wù)間通信的消息。
13.按照權(quán)利要求12所述的核間通信裝置,其特征在于,所述多核消息內(nèi)存塊和消息內(nèi)存塊都包括頭部信息區(qū)域和數(shù)據(jù)區(qū)域,其中所述頭部信息包括所述多核消息內(nèi)存塊或所述消息內(nèi)存塊的大小、所屬任務(wù)標識,所述數(shù)據(jù)區(qū)域用來存放所述消息的數(shù)據(jù);所述多核消息內(nèi)存塊與所述消息內(nèi)存塊具有相同的頭部信息格式。
全文摘要
本發(fā)明公開了一種嵌入式實時操作系統(tǒng)中多核處理器的核間通信方法,包括在共享內(nèi)存區(qū)中分配內(nèi)存作為多核共享消息池;源核將要發(fā)送的消息寫入多核共享消息池;源核將所述消息在多核共享消息池中的地址、目的任務(wù)標識通過數(shù)據(jù)管道發(fā)送給目的核;目的核將多核共享消息池中所述地址存放的所述消息傳送給目的任務(wù)。本發(fā)明還公開了一種核間通信裝置。本發(fā)明實現(xiàn)了核間的消息隊列通信機制,提高了核間通信的效率,使每次傳輸消息的長度不再受到限制;本發(fā)明還實現(xiàn)了核內(nèi)通信和核間通信的統(tǒng)一,為應(yīng)用程序的開發(fā)提供了方便。
文檔編號G06F15/163GK1904873SQ20051008732
公開日2007年1月31日 申請日期2005年7月28日 優(yōu)先權(quán)日2005年7月28日
發(fā)明者蔣石竹, 郭長旺, 張 浩 申請人:大唐移動通信設(shè)備有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
五台县| 南投市| 萝北县| 麻栗坡县| 大埔县| 庆安县| 上犹县| 广元市| 恩施市| 确山县| 文登市| 商河县| 大理市| 巴东县| 余姚市| 大厂| 永顺县| 东阿县| 双鸭山市| 蒙山县| 牟定县| 江都市| 民县| 金华市| 仁寿县| 扎囊县| 宕昌县| 鲜城| 浦东新区| 凤凰县| 周至县| 高密市| 玉田县| 饶平县| 响水县| 孟津县| 锡林浩特市| 水城县| 鹤岗市| 年辖:市辖区| 阜宁县|