基于軟件的并行處理中的包有序調(diào)度的方法
【專利說明】基于軟件的并行處理中的包有序調(diào)度的方法
[0001]相關(guān)申請案交叉申請
[0002]本申請要求于2012年12月28日遞交的發(fā)明名稱為“基于軟件的并行處理中的包有序調(diào)度的方法(Methods for Packet Scheduling with Order in Software-BasedParallel Processing) ”的第13/730,319號(hào)美國專利在先申請優(yōu)先權(quán),該在先申請的內(nèi)容以引入的方式并入本文。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及通信網(wǎng)絡(luò),以及在特定實(shí)施例中,涉及基于軟件的并行處理中的包有序調(diào)度的方法。
【背景技術(shù)】
[0004]多核處理器是集成了兩個(gè)或多個(gè)獨(dú)立運(yùn)行的處理單元或“內(nèi)核”的單個(gè)計(jì)算部件(例如,中央處理單元(CPU))。內(nèi)核是用于讀取和執(zhí)行軟件指令的部件,例如,添加或移動(dòng)數(shù)據(jù)的指令。多核處理器可同時(shí)運(yùn)行或執(zhí)行多個(gè)指令(即,并行處理),因此提高了在計(jì)算機(jī)中執(zhí)行應(yīng)用的整體速度。通常,多核被集成到單個(gè)集成電路中。多核處理器早已普遍運(yùn)用于服務(wù)器、臺(tái)式計(jì)算機(jī)和筆記本電腦中,但最近才應(yīng)用于路由器、交換機(jī)和負(fù)責(zé)在互聯(lián)網(wǎng)上傳輸數(shù)據(jù)包的其它網(wǎng)絡(luò)節(jié)點(diǎn)中。然而,路由器和類似設(shè)備的要求和目的與服務(wù)器等的要求和目的不同,這對并行處理提出了額外的挑戰(zhàn)。
【發(fā)明內(nèi)容】
[0005]在一個(gè)實(shí)施例中,本發(fā)明包括一種在網(wǎng)絡(luò)單元中由第一內(nèi)核實(shí)現(xiàn)并行處理的方法,包括:若入口隊(duì)列未被其它內(nèi)核鎖定,鎖定所述入口隊(duì)列;當(dāng)所述入口隊(duì)列被其它內(nèi)核鎖定時(shí),從多個(gè)任務(wù)隊(duì)列的第一子集中搜索未鎖定的任務(wù)隊(duì)列,其中,所述第一子集與所述多個(gè)任務(wù)隊(duì)列的第二子集不同,且第二內(nèi)核從所述第二子集開始搜索未鎖定的任務(wù)隊(duì)列;當(dāng)任務(wù)隊(duì)列的第一默認(rèn)子集中的所有任務(wù)隊(duì)列均被鎖定,且所述入口隊(duì)列也被鎖定時(shí),從所述多個(gè)任務(wù)隊(duì)列的剩余隊(duì)列中搜索未鎖定的任務(wù)隊(duì)列。
[0006]在另一個(gè)實(shí)施例中,本發(fā)明包括一種并行處理的網(wǎng)絡(luò)單元,包括:多個(gè)內(nèi)核和與所述多個(gè)內(nèi)核耦合的存儲(chǔ)器,其中,所述存儲(chǔ)器包括多個(gè)入口隊(duì)列、多個(gè)任務(wù)隊(duì)列,以及順序隊(duì)列,其中:所有內(nèi)核均可訪問任意入口隊(duì)列、任務(wù)隊(duì)列以及順序隊(duì)列;通過配置內(nèi)核使得:當(dāng)一個(gè)內(nèi)核或內(nèi)核子集鎖定所述入口隊(duì)列時(shí),其它內(nèi)核搜索未鎖定的任務(wù)隊(duì)列,其中,每個(gè)內(nèi)核與任務(wù)隊(duì)列的子集關(guān)聯(lián),并從所述子集開始搜索未鎖定的任務(wù)隊(duì)列,而且針對至少兩個(gè)內(nèi)核的子集是不同的。
[0007]在另一個(gè)實(shí)施例中,本發(fā)明包括一種網(wǎng)絡(luò)單元中的可由多核內(nèi)核執(zhí)行的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在非瞬時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令由所述內(nèi)核執(zhí)行時(shí),使得所述網(wǎng)絡(luò)單元進(jìn)行如下操作:若入口隊(duì)列未被其它內(nèi)核鎖定,第一內(nèi)核鎖定所述入口隊(duì)列;當(dāng)所述入口隊(duì)列被其它內(nèi)核鎖定時(shí),其它可用的第一內(nèi)核從多個(gè)任務(wù)隊(duì)列的第一默認(rèn)子集中搜索未鎖定的任務(wù)隊(duì)列,其中,所述第一子集與所述多個(gè)任務(wù)隊(duì)列的第二默認(rèn)子集不同,且第二內(nèi)核從所述第二默認(rèn)子集開始搜索未鎖定的任務(wù)隊(duì)列;當(dāng)任務(wù)隊(duì)列的第一默認(rèn)子集中的所有任務(wù)隊(duì)列均被鎖定,且所述入口隊(duì)列也被鎖定時(shí),所述第一內(nèi)核從所述多個(gè)任務(wù)隊(duì)列的剩余隊(duì)列中搜索未鎖定的任務(wù)隊(duì)列。
[0008]以下結(jié)合附圖和權(quán)利要求對以上以及其他特征做更清晰明了的詳細(xì)描述。
【附圖說明】
[0009]為了更透徹地理解本發(fā)明,現(xiàn)參閱結(jié)合附圖和【具體實(shí)施方式】而描述的以下簡要說明,其中的相同參考標(biāo)號(hào)表不相同部分。
[0010]圖1為網(wǎng)絡(luò)單元的公開的實(shí)施例示意圖,所述網(wǎng)絡(luò)單元可以是通過網(wǎng)絡(luò)傳送和處理數(shù)據(jù)的任何設(shè)備;
[0011]圖2為公開的實(shí)施例提供的在多核處理器中進(jìn)行并行處理的系統(tǒng)示意圖;
[0012]圖3A和3B示出了公開的實(shí)施例提供的在多核處理器中進(jìn)行并行處理的方法流程圖;
[0013]圖4示出了適合實(shí)現(xiàn)此處公開的部件的一個(gè)或多個(gè)實(shí)施例的典型和通用的網(wǎng)絡(luò)部件。
【具體實(shí)施方式】
[0014]首先應(yīng)理解,盡管下文提供一項(xiàng)或多項(xiàng)實(shí)施例的說明性實(shí)施方案,但所公開的系統(tǒng)和/或方法可使用任何數(shù)目的技術(shù)來實(shí)施,無論該技術(shù)是當(dāng)前已知還是存在的。本發(fā)明決不應(yīng)限于下文所說明的說明性實(shí)施方案、附圖和技術(shù),包括本文所說明并描述的示例性設(shè)計(jì)和實(shí)施方案,而是可在所附權(quán)利要求書的范圍以及其等效物的完整范圍內(nèi)修改。
[0015]對于現(xiàn)在的CPU,一個(gè)CPU中可有2至32個(gè)內(nèi)核。然而,產(chǎn)業(yè)繼續(xù)推進(jìn)實(shí)現(xiàn)在一個(gè)CPU上配有更多內(nèi)核。隨著多核中央處理單元(CPUs)在產(chǎn)業(yè)中的應(yīng)用,并行處理普遍存在于服務(wù)器/計(jì)算市場中,且在實(shí)現(xiàn)包調(diào)度和處理的路由器/交換機(jī)中也越來越普遍。然而,由于可能存在大量的內(nèi)存共享和緩存線問題,現(xiàn)有的包調(diào)度器要么使用為少量內(nèi)核(其性能有限)設(shè)計(jì)的集中式模型,要么依賴硬件。很多現(xiàn)有的并行處理方法關(guān)注集中式模型或分布式模型。通常,分布式模型可隨處理單元(例如,CPU/內(nèi)核)的數(shù)量伸縮。然而,需為包和事務(wù)處理等任務(wù)保持順序。根據(jù)阿姆達(dá)爾定律,在并行處理中實(shí)施任務(wù)執(zhí)行的順序可能具有很大的挑戰(zhàn)性,尤其是在分布式模型中。大多數(shù)(若非所有)已有的方案會(huì)導(dǎo)致序列化執(zhí)行,且可能導(dǎo)致性能差。
[0016]公開的方法、裝置和系統(tǒng)是當(dāng)保持任務(wù)順序和提供較佳的性能(例如,15兆包/秒(Mpps))時(shí),將任務(wù)基本上均等地分配給處理單元。為了避免內(nèi)核之間對資源的競爭,并在實(shí)質(zhì)上最大化數(shù)據(jù)處理系統(tǒng)中所有內(nèi)核的利用率,公開的系統(tǒng)提供了指示處理器如何選擇待執(zhí)行的功能的規(guī)則。所有內(nèi)核都可以鎖定并輪詢來自入口隊(duì)列的任務(wù),但在給定的時(shí)間點(diǎn)只有一個(gè)內(nèi)核可鎖定入口隊(duì)列。當(dāng)入口隊(duì)列被一個(gè)內(nèi)核鎖定時(shí),其它內(nèi)核可轉(zhuǎn)向?qū)Χ鄠€(gè)任務(wù)隊(duì)列中的一個(gè)任務(wù)隊(duì)列進(jìn)行鎖定和輪詢。任意內(nèi)核可鎖定和輪詢?nèi)我馊蝿?wù)隊(duì)列。然而,可為每個(gè)內(nèi)核分配任務(wù)隊(duì)列的一個(gè)不同子集,以開始搜索未鎖定的任務(wù)隊(duì)列。這可能會(huì)減少內(nèi)核之間的競爭。盡管可能仍會(huì)發(fā)生競爭,但與其它方法相比,內(nèi)核之間的競爭率會(huì)低得多且是可控制的。如果內(nèi)核的指定任務(wù)隊(duì)列子集中的所有任務(wù)隊(duì)列被其它內(nèi)核鎖定,則內(nèi)核可試圖從剩下的任務(wù)隊(duì)列尋找到未鎖定的任務(wù)隊(duì)列,因此保證了內(nèi)核不會(huì)空閑,且本質(zhì)上對處理資源進(jìn)行了最優(yōu)化。如果所有的任務(wù)隊(duì)列均被鎖定(即使有可能,這也很少發(fā)生),內(nèi)核可再次重復(fù)檢查相同的入口隊(duì)列/任務(wù)隊(duì)列。
[0017]圖1為網(wǎng)絡(luò)單元100的實(shí)施例示意圖,所述網(wǎng)絡(luò)單元100可以是通過網(wǎng)絡(luò)傳送和處理數(shù)據(jù)的任何設(shè)備。所述網(wǎng)絡(luò)單元100可包括與接收器(Rx) 112耦合的一個(gè)或多個(gè)入端口或單元110,其中,所述接收器112用于從其它網(wǎng)絡(luò)部件接收信號(hào)和幀/數(shù)據(jù)。所述網(wǎng)絡(luò)單元100可包括邏輯單元120,用于確定向哪些網(wǎng)絡(luò)部件發(fā)送數(shù)據(jù)??梢允褂糜布④浖蚨呓Y(jié)合實(shí)現(xiàn)所述邏輯單元120。所述邏輯單元120可包括多個(gè)中央處理單元(CPUs)或內(nèi)核122 (此處也可稱為“處理器”)。所述多個(gè)內(nèi)核122可包括多個(gè)單獨(dú)的芯片,或者可包括配有多個(gè)內(nèi)核的單個(gè)芯片。所述邏輯單元120還可包括包調(diào)度器124、入口隊(duì)列126、任務(wù)隊(duì)列127和順序隊(duì)列128。可以使用硬件、軟件或二者結(jié)合實(shí)現(xiàn)所述包調(diào)度器124。為了減少所述內(nèi)核122之間的競爭,可動(dòng)態(tài)改變所述包調(diào)度器124,以改變所述內(nèi)核122訪問所述入口隊(duì)列126、所述任務(wù)隊(duì)列127和所述順序隊(duì)列128的方式。當(dāng)兩個(gè)或多個(gè)內(nèi)核124試圖鎖定/更新同一個(gè)數(shù)據(jù)結(jié)構(gòu)時(shí),內(nèi)核122之間會(huì)出現(xiàn)競爭。內(nèi)核122之間的競爭可能大幅降低所述網(wǎng)絡(luò)單元100的性能。所述入口隊(duì)列126可包括多個(gè)入口包。所述任務(wù)隊(duì)列127可包括多個(gè)任務(wù)隊(duì)列,其中,每個(gè)任務(wù)隊(duì)列與O到多個(gè)不同任務(wù)對應(yīng)。所述順序隊(duì)列128可包括任務(wù),其中所述任務(wù)可按照其在所述順序隊(duì)列128中的出現(xiàn)順序進(jìn)行處理。在存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器中,每個(gè)所述入口隊(duì)列126、每個(gè)所述任務(wù)隊(duì)列127以及順序隊(duì)列128可包括先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。所述網(wǎng)絡(luò)單元100還可包括與發(fā)射器(Tx) 132耦合的一個(gè)或多個(gè)出端口或單元130,其中,所述發(fā)射器132用于向其它網(wǎng)絡(luò)部件傳輸信號(hào)、數(shù)據(jù)包以及幀/數(shù)據(jù)。所述網(wǎng)絡(luò)單元100的部件可按照圖1所示進(jìn)行部署,或者可根據(jù)其它實(shí)施例進(jìn)行配置。
[0018