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