專利名稱:多核處理器的流分發(fā)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及通信技術(shù)領(lǐng)域,尤其涉及一種多核處理器的流分發(fā)方法及裝置。
背景技術(shù):
在多核處理器的運(yùn)行環(huán)境中,網(wǎng)絡(luò)業(yè)務(wù)流量往往由多核處理器的多個(gè)處理單元并行處理。報(bào)文在進(jìn)入處理單元之前,通常由多核處理器的分發(fā)模塊(Dispatch)統(tǒng)一對(duì)報(bào)文進(jìn)行識(shí)別、分類,然后根據(jù)分類結(jié)果分發(fā)至各個(gè)處理單元。分發(fā)模塊對(duì)于流業(yè)務(wù)的處理通常為逐流分發(fā),也就是說不同的流一般情況下是會(huì)被送到不同的處理單元中,同一條流的報(bào)文只會(huì)進(jìn)同一個(gè)處理單元。不同的處理單元收到分發(fā)模塊分發(fā)的不同的流,各處理單元維護(hù)各自的流表空間,從而避免流表操作互斥,同時(shí)確保基于流的報(bào)文保序。在實(shí)現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題多核處理器的各個(gè)處理單元的處理能力是等同的,為了高效利用多核處理器的資源,分發(fā)模塊會(huì)盡量將流量均分給各個(gè)處理單元。如果流數(shù)目比較少,同時(shí)流量在各流之間分布不均時(shí),可能會(huì)出現(xiàn)有些處理單元過載而有些處理單元空閑的狀態(tài),造成多核處理器資源的浪費(fèi)。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種多核處理器的流分發(fā)方法及裝置,用以解決現(xiàn)有技術(shù)中可能存在的多核處理器資源利用不均衡的問題。本發(fā)明實(shí)施例提供一種多核處理器的流分發(fā)方法,包括多核處理器的流分發(fā)裝置接收當(dāng)前時(shí)刻待分發(fā)的流;根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將所述當(dāng)前時(shí)刻待分發(fā)的流逐流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目,所述權(quán)重用于標(biāo)識(shí)所述各處理單元可處理的流量;獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重。本發(fā)明實(shí)施例還提供了一種多核處理器的流分發(fā)裝置,包括接收器,用于接收當(dāng)前時(shí)刻待分發(fā)的流;分發(fā)器,用于根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將所述當(dāng)前時(shí)刻待分發(fā)的流逐流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目,所述權(quán)重用于標(biāo)識(shí)所述各處理單元可處理的流量;獲得器,用于獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重。本發(fā)明實(shí)施例的多核處理器的流分發(fā)方法及裝置,通過根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將當(dāng)前時(shí)刻待分發(fā)的流逐流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目,并獲得各處理單元在接收到上述流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重,實(shí)現(xiàn)了更加合理的流量分發(fā),更高效地利用了多核處理器的資源。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明一個(gè)實(shí)施例提供的多核處理器的流分發(fā)方法的流程圖;圖2為本發(fā)明又一個(gè)實(shí)施例提供的多核處理器的流分發(fā)方法的流程圖;圖3為本發(fā)明一個(gè)實(shí)施例提供的多核處理器的流分發(fā)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明一個(gè)實(shí)施例提供的多核處理器的流分發(fā)方法的流程圖,如圖1所示, 該方法包括步驟101 多核處理器的流分發(fā)裝置接收當(dāng)前時(shí)刻待分發(fā)的流;其中,流分發(fā)裝置可以為多核處理器中的分發(fā)模塊,分發(fā)模塊可以由軟件實(shí)現(xiàn),也可以由硬件可編程邏輯電路實(shí)現(xiàn)。待分發(fā)的流可以是網(wǎng)絡(luò)中的業(yè)務(wù)流,每條業(yè)務(wù)流都可以由人為定義的一組規(guī)則來標(biāo)識(shí),例如可以通過五元組來標(biāo)識(shí)一條流。當(dāng)前時(shí)刻待分發(fā)的流可以是一條也可以是多條。步驟102 多核處理器的流分發(fā)裝置根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將當(dāng)前時(shí)刻待分發(fā)的流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目;其中,權(quán)重用于標(biāo)識(shí)各處理單元在某一特定時(shí)刻可處理的流量。多核處理器各處理單元的權(quán)重可以通過如下方式獲得各處理單元實(shí)時(shí)獲得自身的負(fù)載占用率,或者通過流量統(tǒng)計(jì)裝置實(shí)時(shí)獲取當(dāng)前時(shí)刻經(jīng)過本處理單元的流量速率。需要說明的是,由于處理單元實(shí)際上處理的是二進(jìn)制指令,那么處理單元的負(fù)載占用率可以理解為處理單元在當(dāng)前時(shí)刻正在執(zhí)行的二進(jìn)制指令數(shù)相對(duì)于能夠執(zhí)行的二進(jìn)制指令數(shù)的比率。負(fù)載占用率可以用于描述處理單元的工作狀態(tài),換句話講,負(fù)載占用率越高,說明處理單元的工作狀態(tài)越忙碌, 則處理單元可處理的流量,即權(quán)重,就越低。當(dāng)負(fù)載占用率超過一個(gè)預(yù)設(shè)門限(如80%) 時(shí),說明該處理單元非常忙碌,不宜再處理更多的流。這時(shí)該處理單元可以將自身的狀態(tài)值設(shè)置為1,即表明該處理單元的負(fù)載占用率已超過預(yù)設(shè)門限,多核處理器的流分發(fā)裝置需降低該處理單元的權(quán)重。如果該處理單元在一段時(shí)間內(nèi)負(fù)載占用率持續(xù)超過預(yù)設(shè)門限,則說明該處理單元嚴(yán)重過載,多核處理器的流分發(fā)裝置可以將該處理單元的權(quán)重降為0,即不分發(fā)流給該處理單元。如果該處理單元的負(fù)載占用率未超過預(yù)設(shè)門限,則可以將自身的狀態(tài)值設(shè)置為0,即表明該處理單元尚有處理更多流的能力,多核處理器的流分發(fā)裝置可以提高該處理單元的權(quán)重。流量統(tǒng)計(jì)裝置可以通過專門的一種軟件或者硬件實(shí)現(xiàn),單位時(shí)間內(nèi)經(jīng)過處理單元的流量速率即可以理解為流量,而處理單元能夠處理的流量是一定的,因此當(dāng)前時(shí)刻正在處理的流量相對(duì)于能夠處理的流量的比率,仍然能夠反映處理單元的工作狀態(tài)。即單位時(shí)間內(nèi)經(jīng)過處理單元的流量速率越大,該處理單元的工作狀態(tài)越忙碌,則處理單元可處理的流量,即權(quán)重,就越低。因此,如果待分發(fā)的流為多條,則分發(fā)給權(quán)重高的處理單元的流數(shù)目就越大,分發(fā)給權(quán)重低的處理單元的流數(shù)目就越小。一般情況下,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目。如果待分發(fā)的流為一條,則分發(fā)給權(quán)重最高的處理單元。如果某一個(gè)處理單元在上一個(gè)時(shí)刻的權(quán)重低于某一個(gè)預(yù)設(shè)的值(如 0. 2),甚至達(dá)到了 0,則表明此處理單元在上一時(shí)刻的某些流的流量持續(xù)過大,則不分發(fā)流給此處理單元。步驟103 多核處理器的流分發(fā)裝置獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重。其中,由于各處理單元接收到的待分發(fā)的流的數(shù)目不同,且每條待分發(fā)的流的流量也不盡相同,這就導(dǎo)致了各處理單元在接收到當(dāng)前時(shí)刻的待分發(fā)的流后,其權(quán)重也可能會(huì)發(fā)生改變,則各處理單元更新其自身的權(quán)重,多核處理器的流分發(fā)裝置獲得各處理單元更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重,并作為下一時(shí)刻流分發(fā)的權(quán)重參考值。其中,可以通過如下方式獲得各處理單元更新的權(quán)重第一種,讀取多核處理器共享內(nèi)存中保存的各處理單元更新的負(fù)載占用率、或者流量速率、或者狀態(tài)值,第二種,接收各處理單元發(fā)送的負(fù)載占用率、或者流量速率、或者狀態(tài)值。進(jìn)一步的,作為對(duì)步驟102的一種補(bǔ)充情況,該方法還可以包括如果上一時(shí)刻多核處理器各處理單元的權(quán)重均小于等于預(yù)設(shè)門限時(shí),將當(dāng)前時(shí)刻待分發(fā)的流逐包分發(fā)給各處理單元,直至接收到的當(dāng)前時(shí)刻更新的權(quán)重中至少一個(gè)處理單元的權(quán)重大于預(yù)設(shè)門限后改為逐流分發(fā)。圖2為本發(fā)明又一個(gè)實(shí)施例提供的多核處理器的流分發(fā)方法的流程圖,圖2所示的流程圖為圖1所示方法的一種具體實(shí)現(xiàn)形式,并不用以限制本發(fā)明的保護(hù)范圍,如圖2所示,該方法包括步驟201 多核處理器的各處理單元定期獲取各自的工作情況,并寫入多核處理器的共享內(nèi)存;其中,處理單元的工作情況可以為負(fù)載占用率、任意單位時(shí)間內(nèi)經(jīng)過本處理單元的流量速率、狀態(tài)值等。其中,寫入共享內(nèi)存的各處理單元的工作情況可以但不限于如表1所示表 權(quán)利要求
1.一種多核處理器的流分發(fā)方法,其特征在于,包括多核處理器的流分發(fā)裝置接收當(dāng)前時(shí)刻待分發(fā)的流;根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將所述當(dāng)前時(shí)刻待分發(fā)的流逐流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目,所述權(quán)重用于標(biāo)識(shí)所述各處理單元可處理的流量;獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述上一時(shí)刻多核處理器各處理單元的權(quán)重均小于等于預(yù)設(shè)門限時(shí),所述方法還包括將所述當(dāng)前時(shí)刻待分發(fā)的流逐包分發(fā)給各處理單元,直至接收到的當(dāng)前時(shí)刻更新的權(quán)重中至少一個(gè)大于預(yù)設(shè)門限后改為逐流分發(fā)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,包括讀取共享內(nèi)存中保存的由所述各處理單元更新的負(fù)載占用率或單位時(shí)間內(nèi)經(jīng)過各處理單元的流量速率或狀態(tài)值;或者,接收所述各處理單元發(fā)送的負(fù)載占用率或單位時(shí)間內(nèi)經(jīng)過各處理單元的流量速率或狀態(tài)值。
4.一種多核處理器的流分發(fā)裝置,其特征在于,包括接收器,用于接收當(dāng)前時(shí)刻待分發(fā)的流;分發(fā)器,用于根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將所述當(dāng)前時(shí)刻待分發(fā)的流逐流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目,所述權(quán)重用于標(biāo)識(shí)所述各處理單元可處理的流量;獲得器,用于獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重。
5.根據(jù)權(quán)利要求4所述的流分發(fā)裝置,其特征在于,所述分發(fā)器還用于當(dāng)所述上一時(shí)刻多核處理器各處理單元的權(quán)重均小于等于預(yù)設(shè)門限時(shí),將所述當(dāng)前時(shí)刻待分發(fā)的流逐包分發(fā)給各處理單元,直至接收到的當(dāng)前時(shí)刻更新的權(quán)重中至少一個(gè)大于預(yù)設(shè)門限后改為逐流分發(fā)。
6.根據(jù)權(quán)利要求5所述的流分發(fā)裝置,其特征在于,所述獲得器包括第一子單元,用于讀取共享內(nèi)存中保存的由所述各處理單元更新的負(fù)載占用率或單位時(shí)間內(nèi)經(jīng)過各處理單元的流量速率或狀態(tài)值;或者,第二子單元,用于接收所述各處理單元發(fā)送的負(fù)載占用率或單位時(shí)間內(nèi)經(jīng)過各處理單元的流量速率或狀態(tài)值。
7.根據(jù)權(quán)利要求4至6中任一項(xiàng)所述的流分發(fā)裝置,其特征在于,所述流分發(fā)裝置為多核處理器的分發(fā)模塊。
全文摘要
本發(fā)明提供一種多核處理器的流分發(fā)方法及裝置。方法接收當(dāng)前時(shí)刻待分發(fā)的流;根據(jù)上一時(shí)刻多核處理器各處理單元的權(quán)重,通過輪詢的方式將當(dāng)前時(shí)刻待分發(fā)的流逐流分發(fā)給各處理單元,分發(fā)給權(quán)重高的處理單元的流數(shù)目大于分發(fā)給權(quán)重低的處理單元的流數(shù)目,權(quán)重用于標(biāo)識(shí)各處理單元可處理的流量;獲得各處理單元在接收到當(dāng)前時(shí)刻待分發(fā)的流之后更新的權(quán)重,作為當(dāng)前時(shí)刻多核處理器各處理單元的權(quán)重。裝置接收器、分發(fā)器和獲得器。
文檔編號(hào)H04L12/56GK102301664SQ201180001208
公開日2011年12月28日 申請(qǐng)日期2011年7月20日 優(yōu)先權(quán)日2011年7月20日
發(fā)明者武旭 申請(qǐng)人:華為技術(shù)有限公司