專利名稱:多核處理器消息調(diào)度方法及調(diào)度器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)及通信技術(shù)領(lǐng)域,尤其涉及多核處理器調(diào)度方法及調(diào) 度器。
背景技術(shù):
多核處理器系統(tǒng)中,各內(nèi)核擁有共享的內(nèi)存空間。內(nèi)存緩沖區(qū)是任務(wù)之 間以及內(nèi)核之間傳遞消息的實(shí)體。為了保證先發(fā)送的消息先被接收,承載消 息的緩沖區(qū)通常被設(shè)計(jì)成前后連接的隊(duì)列結(jié)構(gòu)。這種緩沖區(qū)構(gòu)成的隊(duì)列稱為 消息隊(duì)列。
作為一種被頻繁使用的系統(tǒng)功能,消息傳遞的效率在很大程度上影響多 任務(wù)嵌入式系統(tǒng)的運(yùn)行效率,這種影響體現(xiàn)在消息調(diào)度過程存在時(shí)間和內(nèi)存 兩方面的開銷。時(shí)間開銷包括消息調(diào)度功能操作消息隊(duì)列的執(zhí)行時(shí)間,以及 因?yàn)橛米枞绞桨l(fā)送消息,任務(wù)進(jìn)入、退出阻塞狀態(tài)所引起的任務(wù)切換時(shí)間。 消息在發(fā)送之后和接收之前,相應(yīng)的數(shù)據(jù)暫時(shí)存放在消息隊(duì)列的緩沖區(qū)中, 內(nèi)存開銷就是指消息隊(duì)列占用的內(nèi)存空間。消息隊(duì)列的長度和隊(duì)列中各個(gè)緩 沖區(qū)的大小決定了消息調(diào)度功能的內(nèi)存開銷。
由此可見,消息隊(duì)列的管理方式在很大程度上影響消息傳遞的效率,是 消息調(diào)度技術(shù)所面臨的重要問題。
現(xiàn)有技術(shù)中,郵箱和消息池是實(shí)現(xiàn)消息調(diào)度的通用方法。郵箱方法用靜 態(tài)緩沖區(qū)組織消息隊(duì)列以實(shí)現(xiàn)消息調(diào)度;消息池方法則采用動(dòng)態(tài)緩沖區(qū)分配 機(jī)制以實(shí)現(xiàn)消息調(diào)度。
發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下不足
由于現(xiàn)有技術(shù)在實(shí)現(xiàn)消息調(diào)度時(shí),需要在消息收發(fā)過程進(jìn)行大量重復(fù)的數(shù)據(jù)拷貝操作,導(dǎo)致時(shí)間開銷大,并且也使消息廣播和消息轉(zhuǎn)發(fā)過程需要額 外內(nèi)存來存放新消息,導(dǎo)致內(nèi)存資源浪費(fèi),因而無法為多核處理器提供高效 的消息調(diào)度功能。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種多核處理器消息調(diào)度方法,用以提高消息傳遞的 效率,該方法包括
產(chǎn)生消息的消息控制塊,所述消息控制塊記錄所述消息的描述信息及調(diào)
度控制信息;
產(chǎn)生所述消息的消息映像,所述消息映像指向所述消息控制塊; 將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。
本發(fā)明實(shí)施例還提供一種多核處理器消息調(diào)度方法,用以提高消息傳遞 的效率,該方法包括
從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像;
根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反饋所述消息的描述信 息及調(diào)度控制信息。
本發(fā)明實(shí)施例還提供一種多核處理器消息調(diào)度器,用以提高消息傳遞的
效率,該多核處理器消息調(diào)度器包括
第一產(chǎn)生模塊,用于產(chǎn)生消息的消息控制塊,所述消息控制塊記錄所述
消息的描述信息及調(diào)度控制信息;
第二產(chǎn)生模塊,用于產(chǎn)生所述消息的消息映像,所述消息映像指向所述
消息控制塊;
添加模塊,用于將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。 本發(fā)明實(shí)施例還提供一種多核處理器消息調(diào)度器,用以提高消息傳遞的 效率,該多核處理器消息調(diào)度器包括摘取模塊,用于從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像; 反饋模塊,用于根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反饋所
述消息的描述信息及調(diào)度控制信息。
本發(fā)明實(shí)施例中,構(gòu)成消息隊(duì)列的消息映像和對消息進(jìn)行描述和控制的
消息控制塊分離,在發(fā)送消息時(shí),無需復(fù)制消息控制塊和數(shù)據(jù)緩沖區(qū),而僅
需產(chǎn)生消息映像、將消息映像添加到對應(yīng)宿任務(wù)的消息映像隊(duì)列;在接收消
息時(shí),僅需從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像,根據(jù)消息映像指
向的消息控制塊,向宿任務(wù)反饋消息的描述信息及調(diào)度控制信息;因而在消 息收發(fā)過程無需進(jìn)行重復(fù)的數(shù)據(jù)拷貝操作,即可實(shí)現(xiàn)消息的高速傳輸,且無 需使用額外內(nèi)存,大大節(jié)省了內(nèi)存開銷,提高了消息傳遞的效率。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí) 施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面 描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講, 在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在
附圖中
圖1、圖2為本發(fā)明實(shí)施例中多核處理器消息調(diào)度方法的處理流程圖3為本發(fā)明實(shí)施例中多核處理器消息調(diào)度方法的實(shí)施場景示意圖4為本發(fā)明實(shí)施例中動(dòng)態(tài)內(nèi)存管理實(shí)例示意圖5為本發(fā)明實(shí)施例中消息創(chuàng)建過程的詳細(xì)操作流程圖6為本發(fā)明實(shí)施例中消息發(fā)送過程中調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行
部分的詳細(xì)操作流程圖7為本發(fā)明實(shí)施例中消息發(fā)送程中調(diào)度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部
分的詳細(xì)操作流程8圖8為本發(fā)明實(shí)施例中同步消息發(fā)送過程中調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程圖;圖9為本發(fā)明實(shí)施例中同步消息發(fā)送過程中調(diào)度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程圖;圖10為本發(fā)明實(shí)施例中同步應(yīng)答消息發(fā)送過程中調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程圖;圖11為本發(fā)明實(shí)施例中同步應(yīng)答消息發(fā)送過程中調(diào)度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程圖;圖12為本發(fā)明實(shí)施例中消息接收過程的詳細(xì)操作流程圖; 圖13為本發(fā)明實(shí)施例中消息釋放過程的詳細(xì)操作流程圖; 圖14、圖15為本發(fā)明實(shí)施例中多核處理器消息調(diào)度器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附 圖對本發(fā)明實(shí)施例做進(jìn)一步詳細(xì)說朋。在此,本發(fā)明的示意性實(shí)施例及其說 明用于解釋本發(fā)明,但并不作為對本發(fā)明的限定。如圖1所示,本發(fā)明實(shí)施例中多核處理器消息調(diào)度方法的處理流程可以 包括步驟IOI、產(chǎn)生消息的消息控制塊,所述消息控制塊記錄所述消息的描述 信息及調(diào)度控制信息;步驟102、產(chǎn)生所述消息的消息映像,所述消息映像指向所述消息控制塊; 步驟103、將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。 圖1所示流程中,構(gòu)成消息隊(duì)列的消息映像和對消息進(jìn)行描述和控制的 消息控制塊分離,在發(fā)送消息時(shí),無需復(fù)制消息控制塊和數(shù)據(jù)緩沖區(qū),而僅 需產(chǎn)生消息映像、將消息映像添加到對應(yīng)宿任務(wù)的消息映像隊(duì)列,因而在消息發(fā)送過程無需進(jìn)行重復(fù)的數(shù)據(jù)拷貝操作,即可實(shí)現(xiàn)消息的高速發(fā)送,且無 需使用額外內(nèi)存,大大節(jié)省了內(nèi)存開銷,提高了消息發(fā)送的效率。如圖2所示,本發(fā)明實(shí)施例中多核處理器消息調(diào)度方法的處理流程可以包括步驟201、從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像;步驟202、根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反饋所述消息的描述信息及調(diào)度控制信息。圖2所示流程中,構(gòu)成消息隊(duì)列的消息映像和對消息進(jìn)行描述和控制的消息控制塊分離,在接收消息時(shí),無需復(fù)制消息控制塊和數(shù)據(jù)緩沖區(qū),而僅需從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像,根據(jù)消息映像指向的消息控制塊,向宿任務(wù)反饋消息的描述信息及調(diào)度控制信息,因而在消息接收過程無需進(jìn)行重復(fù)的數(shù)據(jù)拷貝操作,即可實(shí)現(xiàn)消息的高速接收,且無需使用額外內(nèi)存,大大節(jié)省了內(nèi)存開銷,提高了消息接收的效率。下面具體舉例說明本發(fā)明實(shí)施例的多核處理器消息調(diào)度方法的實(shí)施。圖3為多核處理器消息調(diào)度方法的實(shí)施場景示意圖,圖3中,多核處理器消息調(diào)度方法涉及的實(shí)施實(shí)體/模塊包括如下幾個(gè)部分消息調(diào)度接口、三級調(diào)度機(jī)構(gòu)、調(diào)度器。消息調(diào)度接口提供一系列功能原語,包括消息創(chuàng)建原語、消息發(fā)送原 語、消息接收原語、消息釋放原語、同步消息發(fā)送原語、同步應(yīng)答消息發(fā)送 原語。三級調(diào)度機(jī)構(gòu)是為了便于描述,將涉及用于調(diào)度器管理、調(diào)度消息的三 個(gè)部分,包括消息映像隊(duì)列簇、消息控制塊集合、數(shù)據(jù)緩沖區(qū)集合一起稱 之為"三級調(diào)度機(jī)構(gòu)"。其中,消息映像隊(duì)列簇分為兩類核內(nèi)消息映像隊(duì)列簇、核間消息映像 隊(duì)列簇。消息映像是任務(wù)與內(nèi)核的接收消息在相應(yīng)消息隊(duì)列中的映像,它指向接收消息的消息控制塊。每個(gè)內(nèi)核上的每一個(gè)任務(wù)都擁有一個(gè)消息映像隊(duì)列,它由這個(gè)任務(wù)接收的消息映像以鏈表形式組織起來。 一般情況下,所有消息映像以FIFO (Firs t In First Out,先進(jìn)先出)方式進(jìn)出這個(gè)隊(duì)列,即從隊(duì)尾添加,從隊(duì)首摘 取。 一個(gè)內(nèi)核所有任務(wù)的消息映像隊(duì)列組成這個(gè)內(nèi)核的核內(nèi)消息映像隊(duì)列簇。 除了核內(nèi)消息映像隊(duì)列簇以外,每個(gè)內(nèi)核還擁有一個(gè)核間消息映像隊(duì)列。 --個(gè)內(nèi)核所有任務(wù)從其它內(nèi)核上的任務(wù)接收到的消息映像首先排列在這個(gè)內(nèi) 核的核間消息映像隊(duì)列中,由調(diào)度器將它們逐個(gè)轉(zhuǎn)移到相應(yīng)接收任務(wù)的消息 映像隊(duì)列中去。核間消息映像隊(duì)列同樣是以鏈表形式存在,消息映像同樣以F 工FO方式進(jìn)出這個(gè)隊(duì)列。所有內(nèi)核的核間消息映像隊(duì)列組成多核處理器的核間 消息映像隊(duì)列簇。消息控制塊集合包含所有相同內(nèi)核任務(wù)間與不同內(nèi)核任務(wù)間傳遞的消息 的控制塊。 一個(gè)消息控制塊記錄一個(gè)消息的描述信息和調(diào)度控制信息。如果 消息攜帶的數(shù)據(jù)量較少,消息控制塊可以包含這個(gè)消息的全部信息;如果消 息需要攜帶較多數(shù)據(jù),這些數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)緩沖區(qū)里,由消息控制 塊中的緩沖區(qū)指針指向這一數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)緩沖區(qū)集合包含所有因?yàn)橄y帶較多數(shù)據(jù)而由消息控制塊指示的 數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)緩沖區(qū)的大小因相應(yīng)消息攜帶數(shù)據(jù)量的不同而不同。下面結(jié)合圖4所示的本發(fā)明實(shí)施例中動(dòng)態(tài)內(nèi)存管理實(shí)例說明消息分類, 并進(jìn)一步解釋圖3所示三級調(diào)度機(jī)構(gòu)中各組成部分的關(guān)系。根據(jù)是否使用數(shù)據(jù)緩沖區(qū),消息分為信號(hào)消息和緩沖區(qū)消息。圖4中, 消息B的控制塊不攜帶數(shù)據(jù)緩沖區(qū),是信號(hào)消息;消息A、 C、 D的控制塊分 別攜帶大小不同的數(shù)據(jù)緩沖區(qū),它們都是緩沖區(qū)消息。根據(jù)接收任務(wù)是否唯一,消息分為單播消息和廣播消息。接收任務(wù)又稱 為宿任務(wù),相應(yīng)的,發(fā)送任務(wù)又稱為源任務(wù)。 一個(gè)消息只有一個(gè)源任務(wù),記 錄在消息控制塊中;而宿任務(wù)可以有多個(gè),分別記錄在它的消息映像中。圖4中,消息A、 B、 C的控制塊被多個(gè)消息映像所指示,即它們都有多個(gè)宿任務(wù), 所以是廣播消息;消息D只被一個(gè)消息映像指示,是單播消息。根據(jù)源任務(wù)和宿任務(wù)是否屬于同一內(nèi)核,消息分為核內(nèi)消息與核間消息。 特別的,如果廣播消息的多個(gè)宿任務(wù)中,有些與它的源任務(wù)屬于同一內(nèi)核, 有些屬于不同內(nèi)核,那么它既是核內(nèi)消息,又是核間消息。對于核內(nèi)消息, 調(diào)度器直接把它的消息映像添加到宿任務(wù)的消息映像隊(duì)列中;對于核間消息, 調(diào)度器首先把它的消息映像添加到宿任務(wù)所屬內(nèi)核的核間消息映像隊(duì)列,然 后將其轉(zhuǎn)移到宿任務(wù)的消息映像隊(duì)列中。圖4中,消息C的兩個(gè)宿任務(wù)分別 屬于核1與核2,它是核間消息;消息A的兩個(gè)消息映像,其中之一位于核2 的核間消息映像隊(duì)列,它即將被轉(zhuǎn)移到核2某個(gè)任務(wù)的消息映像隊(duì)列中,因 此也是核間消息。根據(jù)發(fā)送過程是否伴隨著任務(wù)運(yùn)行狀態(tài)的改變,消息還分為普通消息、 同步消息和同步應(yīng)答消息。普通消息按照非阻塞方式發(fā)送,調(diào)度器不改變源 任務(wù)和宿任務(wù)的運(yùn)行狀態(tài)。同步消息按照阻塞方式發(fā)送,調(diào)度器在把它的消 息映像添加到宿任務(wù)消息映像隊(duì)列的同時(shí),將源任務(wù)置于阻塞狀態(tài)。相對的, 同步應(yīng)答消息發(fā)送時(shí),調(diào)度器解除宿任務(wù)的阻塞狀態(tài),使它得以繼續(xù)運(yùn)行。 不同于一般情況,同步應(yīng)答消息的消息映像并不是按FIFO方式添加到宿任務(wù) 的消息映像隊(duì)列,調(diào)度器將它插入隊(duì)首的位置,使宿任務(wù)繼續(xù)運(yùn)行后最先接 收到這個(gè)消息。三級消息調(diào)度機(jī)構(gòu),以及各種消息的創(chuàng)建、發(fā)送、接收、釋放過程都可 以受調(diào)度器的管理和調(diào)度。源任務(wù)創(chuàng)建消息時(shí),調(diào)度器產(chǎn)生消息控制塊,建 立消息控制塊與源任務(wù)輸入的數(shù)據(jù)緩沖區(qū)之間的聯(lián)系。源任務(wù)發(fā)送消息時(shí), 調(diào)度器產(chǎn)生消息映像,使它指向消息控制塊,對于核內(nèi)消息,直接把它添加 到宿任務(wù)消息映像隊(duì)列,對于核間消息,在此之前先經(jīng)過宿任務(wù)所屬內(nèi)核的 核間消息映像隊(duì)列的中轉(zhuǎn)。宿任務(wù)接收消息時(shí),調(diào)度器從當(dāng)前任務(wù)的消息映 像隊(duì)列摘取一個(gè)消息映像,根據(jù)它所指示的消息控制塊,向宿任務(wù)反饋消息消息的發(fā)送,調(diào)度器還需相應(yīng)改變 源任務(wù)和宿任務(wù)的運(yùn)行狀態(tài)。一個(gè)實(shí)施例中,圖3所示的消息調(diào)度接口的各種功能原語描述如下 消息創(chuàng)建原語接受源任務(wù)輸入的消息類型、消息名和消息體。對于信號(hào) 消息,消息體就是需要發(fā)送的消息數(shù)據(jù)本身;對于緩沖區(qū)消息,消息體包含 消息所攜帶數(shù)據(jù)緩沖區(qū)的指針、消息數(shù)據(jù)在緩沖區(qū)內(nèi)的位置、消息數(shù)據(jù)的長 度。消息創(chuàng)建原語觸發(fā)調(diào)度器的消息創(chuàng)建過程,執(zhí)行結(jié)束向源任務(wù)反饋消息 句柄。消息發(fā)送原語接受源任務(wù)輸入的宿消息標(biāo)識(shí)和待發(fā)送消息句柄,觸發(fā)調(diào) 度器的消息發(fā)送過程。消息接收原語觸發(fā)調(diào)度器的消息接收過程,執(zhí)行結(jié)束向宿任務(wù)反饋一個(gè) 接收消息的消息句柄,以及這個(gè)消息的消息類型、源任務(wù)標(biāo)識(shí)、消息名和消 息體。對于信號(hào)消息,消息體就是消息數(shù)據(jù)本身,對于緩沖區(qū)消息,消息體 包括數(shù)據(jù)緩沖區(qū)指針、消息數(shù)據(jù)在緩沖區(qū)內(nèi)的位置、消息數(shù)據(jù)的長度。消息釋放原語接受宿任務(wù)輸入的消息句柄,觸發(fā)調(diào)度器的消息釋放過程。同步消息發(fā)送原語和同步應(yīng)答消息發(fā)送原語接受與消息發(fā)送原語相同的 輸入,觸發(fā)調(diào)度器的同步消息發(fā)送過程和同步應(yīng)答消息發(fā)送過程。圖3、圖4所示三級調(diào)度機(jī)構(gòu)基于表一和表二顯示的消息控制塊數(shù)據(jù)結(jié)構(gòu) 和消息映像數(shù)據(jù)結(jié)構(gòu)構(gòu)成。表一 消息控制塊數(shù)據(jù)結(jié)構(gòu)消息控制塊成員功能說明消息類型區(qū)分兩種消息信號(hào)消息、緩沖區(qū)消息。號(hào)以及任務(wù)編號(hào)兩方面信息。消息名標(biāo)識(shí)消息的含義。消息體對于信號(hào)消息,消息體本身包含消息數(shù)據(jù); 對于緩沖區(qū)消息,消息體包含以下信息消息所攜帶數(shù) 據(jù)緩沖區(qū)的指針、消息數(shù)據(jù)在緩沖區(qū)內(nèi)的位置、消息數(shù) 據(jù)的長度。表二消息映像數(shù)據(jù)結(jié)構(gòu)消息映像成員功能說明消息控制塊指針指向消息控制塊。宿任務(wù)標(biāo)識(shí)包含接收任務(wù)所屬核編號(hào)以及任務(wù)編號(hào)兩方面信息。同步應(yīng)答標(biāo)志指示本條消息是否同步應(yīng)答消息,對于同步應(yīng)答消息, 調(diào)度器將解除其宿任務(wù)的阻塞狀態(tài)。鏈表指針用以組織消息映像隊(duì)列。具體實(shí)施時(shí),本發(fā)明實(shí)施例的多核處理器消息調(diào)度方法在發(fā)送消息時(shí),由下列調(diào)度過程組成消息創(chuàng)建過程、消息發(fā)送過程、同步消息發(fā)送過程、 同步應(yīng)答消息發(fā)送過程;在接收消息時(shí),由下列調(diào)度過程組成消息接收過 程、消息釋放過程。圖1中步驟101為消息創(chuàng)建過程,具體實(shí)施時(shí)可以包括在所述消息控 制塊填充消息類型、源任務(wù)標(biāo)識(shí)、消息名;若所述消息為不攜帶數(shù)據(jù)緩沖區(qū) 的信號(hào)消息,在所述消息控制塊的消息體中填充消息數(shù)據(jù);或者,若所述消 息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息,在所述消息控制塊的消息體中填充數(shù)據(jù) 緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度。如圖5所示, 一個(gè)實(shí)施例中,消息創(chuàng)建過程的詳細(xì)操作流程可以包括步驟501、從內(nèi)存池獲取消息控制塊;步驟502、在消息控制塊填充消息類型、源任務(wù)標(biāo)識(shí)、消息名;
步驟503、判斷消息類型,若是信號(hào)消息,則執(zhí)行步驟504,若是緩沖區(qū) 消息,則執(zhí)行步驟505;
步驟504、在消息控制塊直接填充消息數(shù)據(jù),執(zhí)行步驟506;
步驟505、在消息控制塊填入數(shù)據(jù)緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度, 執(zhí)行步驟506;
步驟506、反饋消息句柄,結(jié)束處理。
對于攜帶信息量較少的信號(hào)消息,將消息數(shù)據(jù)復(fù)制進(jìn)消息控制塊進(jìn)行傳 遞;對于攜帶信息量較多的緩沖區(qū)消息,通過消息控制塊直接傳遞數(shù)據(jù)緩沖 區(qū)的指針以及消息數(shù)據(jù)在緩沖區(qū)的位置和長度。因此,無論在同一內(nèi)核任務(wù) 間還是在不同內(nèi)核任務(wù)間,后續(xù)的消息發(fā)送和接收過程都不存在大量的數(shù)據(jù) 拷貝,可以實(shí)現(xiàn)高速傳遞。
圖1中步驟102、 103為消息發(fā)送過程,具體實(shí)施時(shí)步驟102可以包括 將所述消息映像的消息控制塊指針指向所述消息控制塊;在所述消息映像填 充宿任務(wù)標(biāo)識(shí)、同步應(yīng)答標(biāo)志、鏈表指針。步驟103可以包括所述消息為 核內(nèi)消息時(shí),直接將所述消息映像添加到宿任務(wù)消息映像隊(duì)列;或者,所述 消息為核間消息時(shí),將所述消息映像經(jīng)宿任務(wù)所屬內(nèi)核的核間消息映像隊(duì)列 中轉(zhuǎn)至宿任務(wù)消息映像隊(duì)列。
一個(gè)實(shí)施例中,消息發(fā)送過程分為調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分 和調(diào)度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部分。
如圖6所示為本例中調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分,其中,調(diào)度
器比較消息控制塊中記錄的源任務(wù)標(biāo)識(shí)和輸入的宿任務(wù)標(biāo)識(shí),判斷待發(fā)送消 息是核內(nèi)消息還是核間消息。對于核內(nèi)消息,把消息映像直接添加到宿任務(wù)
的消息映像隊(duì)列;對于核間消息,在把消息映像添加到宿任務(wù)所屬內(nèi)核的核 間消息映像隊(duì)列后,向宿任務(wù)所屬內(nèi)核觸發(fā)核間中斷。圖6的消息發(fā)送過程 中調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程可以包括步驟601、從內(nèi)存池獲取消息映像;
步驟602、在消息映像填充宿任務(wù)標(biāo)識(shí),并使它指向消息控制塊; 步驟603、判斷是核內(nèi)消息還是核間消息,若是核內(nèi)消息,則執(zhí)行步驟6 04,若是核間消息,則執(zhí)行步驟605;
步驟604、添加到宿任務(wù)的消息映像隊(duì)列,結(jié)束處理; 步驟605、添加到宿任務(wù)所屬內(nèi)核的核間消息映像隊(duì)列; 步驟606、觸發(fā)核間中斷,結(jié)束處理。
圖7所示為本例中調(diào)度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部分,其中,調(diào)度器 響應(yīng)宿任務(wù)所屬內(nèi)核的核間中斷,從本內(nèi)核的核間消息映像隊(duì)列逐一取出消 息映像,根據(jù)其中記錄的宿任務(wù)標(biāo)識(shí),將它們轉(zhuǎn)移到相應(yīng)宿任務(wù)的消息映像 隊(duì)列。圖7的消息發(fā)送程中調(diào)度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作
流程可以包括
步驟701、核間中斷產(chǎn)生;
步驟702、從本內(nèi)核的核間消息映像隊(duì)列中摘取一個(gè)消息映像;
步驟703、將這個(gè)消息映像轉(zhuǎn)移到宿任務(wù)的消息映像隊(duì)列;
步驟704、判斷核間消息映像隊(duì)列是否為空,若是,則結(jié)束處理,否則轉(zhuǎn) 入步驟702繼續(xù)執(zhí)行。
一個(gè)實(shí)施例中,若所述消息為同步消息,則在將所述消息映像添加到宿 任務(wù)消息映像隊(duì)列之后,還可以包括將源任務(wù)置于阻塞狀態(tài),待收到來自 宿任務(wù)的同步應(yīng)答消息后繼續(xù)運(yùn)行源任務(wù)。
同步消息發(fā)送過程也分為調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分和調(diào)度器 在宿任務(wù)所屬內(nèi)核的執(zhí)行部分。
如圖8所示, 一個(gè)實(shí)施例中,同步消息發(fā)送過程中調(diào)度器在源任務(wù)所屬 內(nèi)核的執(zhí)行部分的詳細(xì)操作流程可以包括
步驟801、從內(nèi)存池獲取消息映像;
步驟802、在消息映像填充宿任務(wù)標(biāo)識(shí),并使它指向消息控制塊;步驟803、判斷是核內(nèi)消息還是核間消息,若是核內(nèi)消息,則執(zhí)行步驟8 04,若是核間消息,則執(zhí)行步驟805;
步驟804、添加到宿任務(wù)的消息映像隊(duì)列,執(zhí)行步驟807; 步驟805、添加到宿任務(wù)所屬內(nèi)核的核間消息映像隊(duì)列; 步驟806、觸發(fā)核間中斷,執(zhí)行步驟807; 步驟807、將源任務(wù)置于阻塞狀態(tài),結(jié)束處理。
如圖9所示, 一個(gè)實(shí)施例中,同步消息發(fā)送過程中調(diào)度器在宿任務(wù)所屬 內(nèi)核的執(zhí)行部分的詳細(xì)操作流程可以包括 步驟901、核間中斷產(chǎn)生;
步驟902、從本內(nèi)核的核間消息映像隊(duì)列中摘取一個(gè)消息映像,-
步驟903、將這個(gè)消息映像轉(zhuǎn)移到宿任務(wù)的消息映像隊(duì)列;
步驟904、判斷核間消息映像隊(duì)列是否為空,若是,則結(jié)束處理,否則轉(zhuǎn)
入步驟902繼續(xù)執(zhí)行。
由圖8和圖9可以得知,同步消息發(fā)送過程與普通消息發(fā)送過程的不同
之處在于調(diào)度器不僅把同步消息的消息映像添加到宿任務(wù)的消息映像隊(duì)列,
還將源任務(wù)置于阻塞狀態(tài),使其在收到來自宿任務(wù)的同步應(yīng)答消息后才能夠
繼續(xù)運(yùn)行。
一個(gè)實(shí)施例中,若所述消息為同步應(yīng)答消息,則將所述消息 像添加到 宿任務(wù)消息映像隊(duì)列的隊(duì)首,并解除宿任務(wù)的阻塞狀態(tài)。
同步應(yīng)答消息發(fā)送過程也分為調(diào)度器在源任務(wù)所屬內(nèi)核的執(zhí)行部分和調(diào) 度器在宿任務(wù)所屬內(nèi)核的執(zhí)行部分。
如圖10所示, 一個(gè)實(shí)施例中,同步應(yīng)答消息發(fā)送過程中調(diào)度器在源任務(wù)
所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程可以包括 步驟IOOI、從內(nèi)存池獲取消息映像;
步驟1002、在消息映像填充宿任務(wù)標(biāo)識(shí),并使它指向消息控制塊; 步驟1003、設(shè)置同步應(yīng)答標(biāo)志;步驟1004、判斷是核內(nèi)消息還是核間消息,若是核內(nèi)消息,則執(zhí)行步驟
1005,若是核間消息,則執(zhí)行步驟1007;
步驟1005、插入宿任務(wù)消息映像隊(duì)列的隊(duì)首;
步驟1006、解除宿任務(wù)的阻塞狀態(tài),結(jié)束處理;
步驟1007、添加到宿任務(wù)所屬內(nèi)核的核間消息映像隊(duì)列;
步驟1008、觸發(fā)核間中斷,結(jié)束處理。
如圖11所示, 一個(gè)實(shí)施例中,同步應(yīng)答消息發(fā)送過程中調(diào)度器在宿任務(wù) 所屬內(nèi)核的執(zhí)行部分的詳細(xì)操作流程可以包括 步驟1101、核間中斷產(chǎn)生;
步驟1102、從本內(nèi)核的核間消息映像隊(duì)列中摘取一個(gè)消息映像; 步驟1103、將這個(gè)消息映像轉(zhuǎn)移到宿任務(wù)的消息映像隊(duì)列,從隊(duì)首位置 插入;
步驟1104、解除宿任務(wù)的阻塞狀態(tài);
步驟1105、判斷核間消息映像隊(duì)列是否為空,若是,則結(jié)束處理,否則 轉(zhuǎn)入步驟1102繼續(xù)執(zhí)行。
由圖10和圖11可以得知,同步應(yīng)答消息發(fā)送過程與普通消息發(fā)送過程 的不同之處在于在源任務(wù)所屬內(nèi)核的執(zhí)行部分,調(diào)度器在這個(gè)消息的消息
映像中設(shè)置同步應(yīng)答標(biāo)志,在判斷是核內(nèi)消息后,從隊(duì)首位置插入宿任務(wù)的
消息映像隊(duì)列,最后解除宿任務(wù)的阻塞狀態(tài);在宿任務(wù)所屬內(nèi)核的執(zhí)行部分, 調(diào)度器根據(jù)消息映像中的同步應(yīng)答標(biāo)志,把這個(gè)消息插入宿任務(wù)消息映像隊(duì) 列的隊(duì)首,同樣解除宿任務(wù)的阻塞狀態(tài)。
圖2中步驟201、 202為消息接收過程,具體實(shí)施時(shí)步驟202可以包括 反饋源任務(wù)標(biāo)識(shí)、消息類型、消息名;若所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信 號(hào)消息,反饋消息數(shù)據(jù);或者,若所述消息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息, 反饋數(shù)據(jù)緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度。 一個(gè)實(shí)施例中,在步驟202 之后,還可以包括釋放所述消息映像的內(nèi)存資源。如圖12所示, 一個(gè)實(shí)施例中,消息接收過程的詳細(xì)操作流程可以包括 步驟1201、從本任務(wù)的消息映像隊(duì)列中摘取一個(gè)消息映像; 步驟1202、得到消息控制塊;
步驟1203、反饋消息句柄、源任務(wù)標(biāo)識(shí)、消息類型、消息名; 步驟1204、判斷消息類型,若為信號(hào)消息,則執(zhí)行步驟1205,若為緩沖 區(qū)消息,則執(zhí)行步驟1206;
步驟1205、反饋消息數(shù)據(jù),執(zhí)行步驟1207;
步驟1206、反饋數(shù)據(jù)緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度,執(zhí)行步驟12
07;
步驟1207、釋放消息映像的內(nèi)存資源,結(jié)束處理。
一個(gè)實(shí)施例中,在上述消息接收過程之后,還可以包括消息釋放過程,
具體實(shí)施時(shí)可以包括若所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息,所述消 息沒有其他的宿任務(wù),則釋放所述消息控制塊的內(nèi)存資源;或者,若所述消 息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息,所述消息沒有其他的宿任務(wù),則釋放所 述消息控制塊及數(shù)據(jù)緩沖區(qū)的內(nèi)存資源。
如圖13所示, 一個(gè)實(shí)施例中,消息釋放過程的詳細(xì)操作流程可以包括-步驟1301、判斷消息是否還有其他的宿任務(wù),若是,則結(jié)束處理,否則 執(zhí)行步驟1302;
步驟1302、判斷消息類型,若為信號(hào)消息,則執(zhí)行步驟1303,若為緩沖 區(qū)消息,則執(zhí)行步驟1304;
步驟1303、釋放消息控制塊的內(nèi)存資源,結(jié)束處理;
步驟1304、釋放消息控制塊的內(nèi)存資源以及消息所攜帶數(shù)據(jù)緩沖區(qū)的內(nèi) 存資源,結(jié)束處理。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟 是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可 讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可以包括上述實(shí)施例方法中的全部或部分步驟,所述的存儲(chǔ)介質(zhì)可以包括R0M、 RAM、磁盤、光盤等。
本發(fā)明實(shí)施例中還提供了一種多核處理器消息調(diào)度器,如下面的實(shí)施例
所述。由于多核處理器消息調(diào)度器解決問題的原理與多核處理器消息調(diào)度方
法相似,因此多核處理器消息調(diào)度器的實(shí)施可以參見多核處理器消息調(diào)度方
法的實(shí)施,重復(fù)之處不再贅述。
如圖14所示,本發(fā)明實(shí)施例中多核處理器消息調(diào)度器可以包括 第一產(chǎn)生模塊1401,用于產(chǎn)生消息的消息控制塊,所述消息控制塊記錄
所述消息的描述信息及調(diào)度控制信息;
第二產(chǎn)生模塊1402,用于產(chǎn)生所述消息的消息映像,所述消息映像指向 所述消息控制塊;
添加模塊1403,用于將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。
一個(gè)實(shí)施例中,第一產(chǎn)生模塊1401可以包括-
第一填充單元,用于在所述消息控制塊填充消息類型、源任務(wù)標(biāo)識(shí)、消 息名;
第二填充單元,用于在所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息時(shí),在 所述消息控制塊的消息體中填充消息數(shù)據(jù);或者,在所述消息為攜帶數(shù)據(jù)緩 沖區(qū)的緩沖區(qū)消息時(shí),在所述消息控制塊的消息體中填充數(shù)據(jù)緩沖區(qū)指針、 消息數(shù)據(jù)的位置和長度。
一個(gè)實(shí)施例中,第二產(chǎn)生模塊1402可以包括
第三填充單元,用于將所述消息映像的消息控制塊指針指向所述消息控 制塊;
第四填充單元,用于在所述消息映像填充宿任務(wù)標(biāo)識(shí)、同步應(yīng)答標(biāo)志、 鏈表指針。
一個(gè)實(shí)施例中,添加模塊1403還可以用于
在所述消息為核內(nèi)消息時(shí),直接將所述消息映像添加到宿任務(wù)消息映像 隊(duì)列;或者在所述消息為核間消息時(shí),將所述消息映像經(jīng)宿任務(wù)所屬內(nèi)核的核間消 息映像隊(duì)列中轉(zhuǎn)至宿任務(wù)消息映像隊(duì)列。
一個(gè)實(shí)施例中,若所述消息為同步消息,則圖14所示的多核處理器消息 調(diào)度器還可以包括
阻塞模塊,用于在所述添加模塊將所述消息映像添加到宿任務(wù)消息映像 隊(duì)列之后,將源任務(wù)置于阻塞狀態(tài),待收到來自宿任務(wù)的同步應(yīng)答消息后繼 續(xù)運(yùn)行源任務(wù);或者,
若所述消息為同步應(yīng)答消息,則所述添加模塊1403還可以用于將所述消 息映像添加到宿任務(wù)消息映像隊(duì)列的隊(duì)首;所述多核處理器消息調(diào)度器還可 以包括
阻塞解除模塊,用于在所述添加模塊將所述消息映像添加到宿任務(wù)消息
映像隊(duì)列的隊(duì)首之后,解除宿任務(wù)的阻塞狀態(tài)。
如圖15所示,本發(fā)明實(shí)施例中多核處理器消息調(diào)度器可以包括 摘取模塊1501,用于從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像; 反饋模塊1502,用于根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反
饋所述消息的描述信息及調(diào)度控制信息。
一個(gè)實(shí)施例中,反饋模塊1502可以包括
第一反饋單元,用于反饋源任務(wù)標(biāo)識(shí)、消息類型、消息名;
第二反饋單元,用于在所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息時(shí),反
饋消息數(shù)據(jù);或者,在所述消息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息時(shí),反饋數(shù) 據(jù)緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度。
一個(gè)實(shí)施例中,圖15所示的多核處理器消息調(diào)度器還可以包括
第一釋放模塊,用于釋放所述消息映像的內(nèi)存資源;
第二釋放模塊,用于在所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息且沒有 其他的宿任務(wù)時(shí),釋放所述消息控制塊的內(nèi)存資源;或者,在所述消息為攜 帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息且沒有其他的宿任務(wù)時(shí),釋放所述消息控制塊及
21數(shù)據(jù)緩沖區(qū)的內(nèi)存資源。
本發(fā)明實(shí)施例中,構(gòu)成消息隊(duì)列的消息映像和對消息進(jìn)行描述和控制的 消息控制塊分離,在發(fā)送消息時(shí),無需復(fù)制消息控制塊和數(shù)據(jù)緩沖區(qū),而僅 需產(chǎn)生消息映像、將消息映像添加到對應(yīng)宿任務(wù)的消息映像隊(duì)列;在接收消 息時(shí),僅需從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像,根據(jù)消息映像指 向的消息控制塊,向宿任務(wù)反饋消息的描述信息及調(diào)度控制信息;因而在消
息收發(fā)過程無需進(jìn)行重復(fù)的數(shù)據(jù)拷貝操作,即可實(shí)現(xiàn)消息的高速傳輸,且無 需使用額外內(nèi)存,大大節(jié)省了內(nèi)存開銷,提高了消息傳遞的效率。
本發(fā)明實(shí)施例的多核處理器消息調(diào)度方法、調(diào)度器可實(shí)現(xiàn)各種場景下的 高速消息傳遞,大大降低消息調(diào)度功能的時(shí)間開銷。
一、 對于攜帶信息量較少的信號(hào)消息,將消息數(shù)據(jù)復(fù)制進(jìn)消息控制塊進(jìn)
行傳遞;對于攜帶信息量較多的緩沖區(qū)消息,通過消息控制塊直接傳遞數(shù)據(jù) 緩沖區(qū)的指針以及消息數(shù)據(jù)在緩沖區(qū)的位置和長度。因此,無論在同一內(nèi)核 任務(wù)間還是在不同內(nèi)核任務(wù)間,消息發(fā)送和接收過程都不存在大量的數(shù)據(jù)拷 貝,實(shí)現(xiàn)高速傳遞。
二、 構(gòu)成消息隊(duì)列的消息映像和對消息進(jìn)行描述和控制的消息控制塊分 離,在消息廣播的情況下,僅把多個(gè)消息映像分別添加到對應(yīng)宿任務(wù)的消息 映像隊(duì)列,而無需復(fù)制消息控制塊和數(shù)據(jù)緩沖區(qū),從而實(shí)現(xiàn)高速消息廣播。
三、 在消息轉(zhuǎn)發(fā)的情況下,只需重新產(chǎn)生接收消息的消息映像,也無需 復(fù)制消息控制塊和數(shù)據(jù)緩沖區(qū),從而時(shí)間高速消息轉(zhuǎn)發(fā)。
本發(fā)明實(shí)施例的多核處理器消息調(diào)度方法、調(diào)度器在上述各種場景下, 對于信息量較多的情況直接傳遞承載消息數(shù)據(jù)的緩沖區(qū),對于信息量較少的 情況用消息控制塊傳遞消息數(shù)據(jù),都不使用額外內(nèi)存。因此也大大降低了消 息調(diào)度功能的內(nèi)存開銷。
本發(fā)明實(shí)施例的多核處理器消息調(diào)度方法、調(diào)度器無需設(shè)置消息攜帶的 最大數(shù)據(jù)量以及消息隊(duì)列的長度限制,支持變長消息和變長消息隊(duì)列。本發(fā)明實(shí)施例尤其適用于片內(nèi)內(nèi)存容量有限且對實(shí)時(shí)性有極高要求的多 核DSP軟件。
以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了 進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已, 并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任 何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種多核處理器消息調(diào)度方法,其特征在于,該方法包括產(chǎn)生消息的消息控制塊,所述消息控制塊記錄所述消息的描述信息及調(diào)度控制信息;產(chǎn)生所述消息的消息映像,所述消息映像指向所述消息控制塊;將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。
2、 如權(quán)利要求l所述的方法,其特征在于,產(chǎn)生消息的消息控制塊,所 述消息控制塊記錄所述消息的描述信息及調(diào)度控制信息,包括在所述消息控制塊填充消息類型、源任務(wù)標(biāo)識(shí)、消息名; 若所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息,在所述消息控制塊的消息體中填充消息數(shù)據(jù);或者若所述消息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息,在所述消息控制塊的消息體中填充數(shù)據(jù)緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度。
3、 如權(quán)利要求l所述的方法,其特征在于,產(chǎn)生所述消息的消息映像, 所述消息映像指向所述消息控制塊,包括將所述消息映像的消息控制塊指針指向所述消息控制塊; 在所述消息映像填充宿任務(wù)標(biāo)識(shí)、同步應(yīng)答標(biāo)志、鏈表指針。
4、 如權(quán)利要求l所述的方法,其特征在于,將所述消息映像添加到宿任 務(wù)消息映像隊(duì)列,包括所述消息為核內(nèi)消息時(shí),直接將所述消息映像添加到宿任務(wù)消息映像隊(duì) 列;或者所述消息為核間消息時(shí),將所述消息映像經(jīng)宿任務(wù)所屬內(nèi)核的核間消息 映像隊(duì)列中轉(zhuǎn)至宿任務(wù)消息映像隊(duì)列。
5、 如權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,若所述消息為同 步消息,則在將所述消息映像添加到宿任務(wù)消息映像隊(duì)列之后,還包括將源任務(wù)置于阻塞狀態(tài),待收到來自宿任務(wù)的同步應(yīng)答消息后繼續(xù)運(yùn)行源任務(wù);或者若所述消息為同步應(yīng)答消息,則將所述消息映像添加到宿任務(wù)消息映像 隊(duì)列的隊(duì)首,并解除宿任務(wù)的阻塞狀態(tài)。
6、 一種多核處理器消息調(diào)度方法,其特征在于,該方法包括 從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像;根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反饋所述消息的描述信 息及調(diào)度控制信息。
7、 如權(quán)利要求6所述的方法,其特征在于,根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反饋所述消息的描述信息及調(diào)度控制信息,包括 反饋源任務(wù)標(biāo)識(shí)、消息類型、消息名;若所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息,反饋消息數(shù)據(jù);或者 若所述消息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息,反饋數(shù)據(jù)緩沖區(qū)指針、消 息數(shù)據(jù)的位置和長度。
8、 如權(quán)利要求6所述的方法,其特征在于,還包括 釋放所述消息映像的內(nèi)存資源;若所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息,所述消息沒有其他的宿任 務(wù),則釋放所述消息控制塊的內(nèi)存資源;或者若所述消息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息,所述消息沒有其他的宿任 務(wù),則釋放所述消息控制塊及數(shù)據(jù)緩沖區(qū)的內(nèi)存資源。
9、 一種多核處理器消息調(diào)度器,其特征在于,包括 第一產(chǎn)生模塊,用于產(chǎn)生消息的消息控制塊,所述消息控制塊記錄所述消息的描述信息及調(diào)度控制信息;第二產(chǎn)生模塊,用于產(chǎn)生所述消息的消息映像,所述消息映像指向所述 消息控制塊;添加模塊,用于將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。
10、 如權(quán)利要求9所述的多核處理器消息調(diào)度器,其特征在于,所述第一產(chǎn)生模塊包括第一填充單元,用于在所述消息控制塊填充消息類型、源任務(wù)標(biāo)識(shí)、消 息名;第二填充單元,用于在所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息時(shí),在 所述消息控制塊的消息體中填充消息數(shù)據(jù);或者,在所述消息為攜帶數(shù)據(jù)緩 沖區(qū)的緩沖區(qū)消息時(shí),在所述消息控制塊的消息體中填充數(shù)據(jù)緩沖區(qū)指針、 消息數(shù)據(jù)的位置和長度。
11、 如權(quán)利要求9所述的多核處理器消息調(diào)度器,其特征在于,所述第二產(chǎn)生模塊包括第三填充單元,用于將所述消息映像的消息控制塊指針指向所述消息控制塊;第四填充單元,用于在所述消息映像填充宿任務(wù)標(biāo)識(shí)、同步應(yīng)答標(biāo)志、 鏈表指針。
12、 如權(quán)利要求9所述的多核處理器消息調(diào)度器,其特征在于,所述添加模塊進(jìn)一步用于在所述消息為核內(nèi)消息時(shí),直接將所述消息映像添加到宿任務(wù)消息映像 隊(duì)列;或者在所述消息為核間消息時(shí),將所述消息映像經(jīng)宿任務(wù)所屬內(nèi)核的核間消 息映像隊(duì)列中轉(zhuǎn)至宿任務(wù)消息映像隊(duì)列。
13、 如權(quán)利要求9至12任一項(xiàng)所述的多核處理器消息調(diào)度器,其特征在于,若所述消息為同步消息,則所述多核處理器消息調(diào)度器還包括阻塞模塊,用于在所述添加模塊將所述消息映像添加到宿任務(wù)消息映像隊(duì)列之后,將源任務(wù)置于阻塞狀態(tài),待收到來自宿任務(wù)的同步應(yīng)答消息后繼續(xù)運(yùn)行源任務(wù);或者,若所述消息為同步應(yīng)答消息,則所述添加模塊進(jìn)一步用于將所述消息映像添加到宿任務(wù)消息映像隊(duì)列的隊(duì)首;所述多核處理器消息調(diào)度器還包括阻塞解除模塊,用于在所述添加模塊將所述消息映像添加到宿任務(wù)消息 映像隊(duì)列的隊(duì)首之后,解除宿任務(wù)的阻塞狀態(tài)。
14、 一種多核處理器消息調(diào)度器,其特征在于,包括 摘取模塊,用于從宿任務(wù)消息映像隊(duì)列中摘取消息的消息映像; 反饋模塊,用于根據(jù)所述消息映像指向的消息控制塊,向宿任務(wù)反饋所述消息的描述信息及調(diào)度控制信息。
15、 如權(quán)利要求14所述的多核處理器消息調(diào)度器,其特征在于,所述反饋模塊包括第一反饋單元,用于反饋源任務(wù)標(biāo)識(shí)、消息類型、消息名; 第二反饋單元,用于在所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息時(shí),反饋消息數(shù)據(jù);或者,在所述消息為攜帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息時(shí),反饋數(shù)據(jù)緩沖區(qū)指針、消息數(shù)據(jù)的位置和長度。
16、 如權(quán)利要求14所述的多核處理器消息調(diào)度器,其特征在于,還包括 第一釋放模塊,用于釋放所述消息映像的內(nèi)存資源;第二釋放模塊,用于在所述消息為不攜帶數(shù)據(jù)緩沖區(qū)的信號(hào)消息且沒有 其他的宿任務(wù)時(shí),釋放所述消息控制塊的內(nèi)存資源;或者,在所述消息為攜 帶數(shù)據(jù)緩沖區(qū)的緩沖區(qū)消息且沒有其他的宿任務(wù)時(shí),釋放所述消息控制塊及 數(shù)據(jù)緩沖區(qū)的內(nèi)存資源。
全文摘要
本發(fā)明公開了一種多核處理器消息調(diào)度方法,該方法包括產(chǎn)生消息的消息控制塊,所述消息控制塊記錄所述消息的描述信息及調(diào)度控制信息;產(chǎn)生所述消息的消息映像,所述消息映像指向所述消息控制塊;將所述消息映像添加到宿任務(wù)消息映像隊(duì)列。本發(fā)明同時(shí)公開一種多核處理器消息調(diào)度器。采用本發(fā)明可以實(shí)現(xiàn)消息的高速傳輸,且無需使用額外內(nèi)存,大大節(jié)省內(nèi)存開銷,提高消息傳遞的效率。
文檔編號(hào)G06F9/54GK101634956SQ20091017123
公開日2010年1月27日 申請日期2009年8月25日 優(yōu)先權(quán)日2009年8月25日
發(fā)明者煉 楊 申請人:華為技術(shù)有限公司