專利名稱:用于電信網(wǎng)絡(luò)應(yīng)用的無鎖和零拷貝消息傳送方案的制作方法
用于電信網(wǎng)絡(luò)應(yīng)用的無鎖和零拷貝消息傳送方案
背景技術(shù):
本發(fā)明的示例性實(shí)施例涉及用于在使用多核心處理器的單個(gè)調(diào)制解調(diào)器板上的多小區(qū)支持的零拷貝、無鎖和非阻塞消息傳送方案。雖然本發(fā)明特別地針對(duì)無線電信領(lǐng)域,并且因此將參照無線電信領(lǐng)域的具體參考進(jìn)行介紹,但應(yīng)當(dāng)了解的是本發(fā)明可在其它領(lǐng)域和應(yīng)用中有所用處。根據(jù)背景技術(shù),LTE (長(zhǎng)期演進(jìn))為快速演進(jìn)的3GPP計(jì)劃,其旨在提升UMTS (通用移動(dòng)電信系統(tǒng))移動(dòng)電話標(biāo)準(zhǔn)以配合未來通信網(wǎng)絡(luò)的需要。LTE提升無線網(wǎng)絡(luò)的效率及帶寬,降低成本并且增強(qiáng)服務(wù)體驗(yàn)。具體地,LTE使用新頻譜機(jī)會(huì)并且提供與其他開放標(biāo)準(zhǔn)的更好的集成。LTE通常包括LTE RAN (無線電接入網(wǎng)絡(luò))(也被稱為E-UTRAN)連同EPS (演進(jìn)分組系統(tǒng),還被稱為演進(jìn)分組核心)。通信系統(tǒng)通常分成兩個(gè)主要功能:數(shù)據(jù)平面功能和控制平面功能。在先前的LTE產(chǎn)品中,在調(diào)制解調(diào)器板上使用至少二個(gè)處理器:一個(gè)處理器支持控制平面功能(非實(shí)時(shí),例如操作、監(jiān)管和管理(或0A&M),以及與呼叫處理管理相關(guān)的功能),以及另一處理器終止且支持?jǐn)?shù)據(jù)平面功能(實(shí)時(shí),例如LTE第2層的處理)??刂坪蛿?shù)據(jù)平面兩者均使用不同的操作系統(tǒng)(OS)實(shí)例,例如用于控制平面的Linux和用于數(shù)據(jù)平面核心的實(shí)時(shí)OS,例如vXWorks(由加州阿拉米達(dá)的風(fēng)河(Wind River)系統(tǒng)所制造和銷售的)。典型地,一個(gè)調(diào)制解調(diào)器板支持一個(gè)扇區(qū)或小區(qū)。所以,為了支持多小區(qū)(例如,3-小區(qū)或6-小區(qū))配置,將需要提供與小區(qū)數(shù)量相同多的調(diào)制解調(diào)器板??梢栽谡{(diào)制解調(diào)器板上的LTE無線基站中使用多核心處理器。諸如具PREEMPT_RT補(bǔ)丁的SMP Linux的操作系統(tǒng)可以在包含所有八個(gè)核心的一個(gè)SMP分區(qū)上運(yùn)行。在這種配置中,即使控制平面(非實(shí)時(shí)線程/過程)和數(shù)據(jù)平面(實(shí)時(shí)線程/過程)被限制為在不同核心上運(yùn)行,他們共用相同的操作系統(tǒng)實(shí)例。使用Linux協(xié)議棧向/從實(shí)時(shí)過程/線程發(fā)送/接收TCP/UDP分組,例如數(shù)據(jù)平面核心上運(yùn)行的LTE L2調(diào)度器,會(huì)導(dǎo)致可能破壞LTE L2調(diào)度器的處理的無限延遲尖峰。這是因?yàn)槲磳inux協(xié)議棧設(shè)計(jì)為無鎖的這一事實(shí),并且由于Linux協(xié)議棧還是由非實(shí)時(shí)過程/線程來使用的,所述非實(shí)時(shí)過程/線程例如是OAM和在控制平面核心上運(yùn)行的CALLP。在SMP環(huán)境中,由一個(gè)核心(例如,在控制平面上發(fā)現(xiàn)的)上非實(shí)時(shí)過程或線程所采取的鎖可能導(dǎo)致等待將在不同核心(例如,在數(shù)據(jù)平面上發(fā)現(xiàn)的)上釋放的鎖的實(shí)時(shí)線程或過程的延遲尖峰。因而,存在對(duì)無鎖、零拷貝、非阻塞消息傳送方案的需要,所述方案不使用數(shù)據(jù)平面核心上快速數(shù)據(jù)路徑的Linux協(xié)議棧,以滿足對(duì)使用一個(gè)分區(qū)的基于多核心處理器的調(diào)制解調(diào)器板的性能需求。在不使用這種方案的情況下,系統(tǒng)可能經(jīng)歷會(huì)破壞整個(gè)系統(tǒng)的無限延遲尖峰,特別是關(guān)于LTE L2調(diào)度器的處理。
發(fā)明內(nèi)容
在示例性實(shí)施例的一個(gè)方面中,提供一種計(jì)算機(jī)實(shí)現(xiàn)的用于多核心處理器中的無鎖、零數(shù)據(jù)拷貝消息傳送的方法。該方法包括,對(duì)于多個(gè)處理核心中的每一個(gè):獲得核心至用戶空間(K-U)映射緩沖器和相應(yīng)的緩沖器描述符;將數(shù)據(jù)分組插入該緩沖器;以及將該緩沖器描述符插入環(huán)形緩沖器。在另一方面中,提供一種用于提供對(duì)用戶空間過程和內(nèi)核空間過程之間的緩沖器進(jìn)行無鎖、零拷貝存取的裝置。該裝置包括:調(diào)制解調(diào)器板;以及多核心處理器,其具有連接到該調(diào)制解調(diào)器板的多個(gè)處理器核心。該調(diào)制解調(diào)器板包括:內(nèi)核空間,用戶空間以及用于每個(gè)處理器核心的環(huán)形緩沖器,其適于存儲(chǔ)內(nèi)核空間至用戶空間(K-U)映射的緩沖器描述符。在再一方面中,提供一種非暫態(tài)電腦可使用數(shù)據(jù)載體,其存儲(chǔ)指令,所述指令促使計(jì)算機(jī)為多個(gè)處理核心中的每一個(gè)獲得用于存儲(chǔ)緩沖器描述符的環(huán)形緩沖器。環(huán)形緩沖器中存儲(chǔ)的緩沖器描述符包含:與作為內(nèi)核空間至用戶空間(K-U)映射的緩沖器相關(guān)的信息。所述指令還促使計(jì)算機(jī)使用一個(gè)或多個(gè)硬件組件和一個(gè)或多個(gè)內(nèi)核空間線程來執(zhí)行以下內(nèi)容:在以太網(wǎng)絡(luò)接口處接收數(shù)據(jù)分組;獲得K-U映射緩沖器和相應(yīng)的指針;將接收的數(shù)據(jù)分組插入K-U映射緩沖器;使幀描述符在幀隊(duì)列中排隊(duì),所述幀描述符包括K-U映射緩沖器指針,其中所述K-U映射緩沖器指針包含數(shù)據(jù)分組;以及在數(shù)據(jù)分組到達(dá)幀隊(duì)列的前端之后,生成中斷信號(hào),其調(diào)用從幀描述符創(chuàng)建緩沖器描述符的過程。然后,根據(jù)相對(duì)于環(huán)形緩沖器映射的幀隊(duì)列,將與數(shù)據(jù)分組相關(guān)聯(lián)的緩沖器描述符插入到特定的環(huán)形緩沖器中。從以下提供的詳細(xì)說明,本示例性實(shí)施例的可應(yīng)用性的進(jìn)一步范圍將變得顯而易見。然而,應(yīng)理解的是,由于本發(fā)明的精神和范圍內(nèi)的各種改變和修改對(duì)于所屬領(lǐng)域技術(shù)人員來說將變得顯而易見,僅通過說明的方式來給出詳細(xì)的說明和具體的實(shí)例,且指示本發(fā)明的優(yōu)選實(shí)施例。
本發(fā)明存在于設(shè)備的各種構(gòu)件的結(jié)構(gòu)、配置和組合,以及方法的步驟中,因此,此后更為完整地闡述所實(shí)現(xiàn)的、在權(quán)利要求書中具體地指出、以及在附圖中示出所設(shè)想的目標(biāo),其中:圖1示出了根據(jù)本發(fā)明的方面的平臺(tái)架構(gòu)的一個(gè)實(shí)施例;圖2示出用于實(shí)施圖1中所示的核心抽象層的示例性架構(gòu);圖3示出用于提供數(shù)據(jù)分組的進(jìn)入數(shù)據(jù)流的示例性的基于BED DPAA的系統(tǒng);圖4代表相對(duì)于進(jìn)入的數(shù)據(jù)分組的過程流的高級(jí)說明;圖5示出了用于提供數(shù)據(jù)分組的外出數(shù)據(jù)流的示例性的基于BED DPAA的系統(tǒng);以及圖6代表相對(duì)于外出的數(shù)據(jù)分組的過程流的高級(jí)說明。
具體實(shí)施例方式現(xiàn)在參照附圖,其中圖示僅用于說明示例性實(shí)施例的目的,并且不用于限制所要求保護(hù)的主題的目的,圖1提供可將目前介紹的實(shí)施例并入其中的系統(tǒng)的視圖。現(xiàn)在參照?qǐng)D1,圖示了示例性平臺(tái)架構(gòu)100。所述架構(gòu)通常在調(diào)制解調(diào)器板上使用,但將理解的是,其可以在其他應(yīng)用中使用。在此實(shí)施例中,利用一個(gè)分區(qū)的所有八個(gè)核心對(duì)所述一個(gè)分區(qū)進(jìn)行定義。然而,將理解的是,多核心處理器100可具有任何數(shù)量的核心。通過本實(shí)施例,因而可以使用單個(gè)對(duì)稱多處理(SMP)操作系統(tǒng)(OS)實(shí)例102,其在所有核心(例如,八個(gè)核心)上運(yùn)行。由于控制和數(shù)據(jù)平面在一個(gè)OS實(shí)例下,通常需要關(guān)注以確保數(shù)據(jù)平面的問題不會(huì)也破壞控制平面。在本實(shí)例中,多核心處理器100為三個(gè)小區(qū)(圖中圖示為104、106、及108)提供服務(wù)。每個(gè)小區(qū)需要上行鏈路(UL)調(diào)度器(圖中圖示為110、112、及114),以及下行鏈路(DL)調(diào)度器(圖1中圖示為116、118、及120)。已知的是,無線電鏈路控制(RLC)層用于分害I]、連接及糾正通過LTE空中接口發(fā)送和接收的分組幀上的錯(cuò)誤。在GPRS (2.5G)無線棧中使用無線電鏈路控制和媒體訪問控制(RLC/MAC)軟件。其提供移動(dòng)站與基站控制器(BSC)之間確認(rèn)的和未確認(rèn)的數(shù)據(jù)傳遞。因此,還包括RLC/MAC塊122,其為在移動(dòng)和網(wǎng)絡(luò)之間使用的空中接口上的基本傳輸單元。使用RLC/MAC塊122來攜帶數(shù)據(jù)和RLC/MAC信令。多核心處理器100還提供操作、監(jiān)管和管理(0A&M) 124以及CALLLP模塊126,其提供非實(shí)時(shí)呼叫管理相關(guān)服務(wù)。此外,多核心處理器100包括核心抽象層(CAL) 128,其對(duì)第2層(L2)應(yīng)用軟件隱藏核心具體細(xì)節(jié)。第2層為計(jì)算機(jī)網(wǎng)絡(luò)連接的七層OSI模型的數(shù)據(jù)鏈路層。數(shù)據(jù)鏈路層為協(xié)議層,其在廣域網(wǎng)絡(luò)的相鄰網(wǎng)絡(luò)節(jié)點(diǎn)之間或相同局域網(wǎng)絡(luò)分段上的節(jié)點(diǎn)之間傳遞數(shù)據(jù)。數(shù)據(jù)鏈路層提供功能和過程部件以在網(wǎng)絡(luò)實(shí)體之間傳遞數(shù)據(jù),并且可提供部件以檢測(cè)和可能地糾正物理層中可能發(fā)生的錯(cuò)誤。數(shù)據(jù)鏈路協(xié)議的實(shí)例為局域網(wǎng)絡(luò)的以太網(wǎng)絡(luò)(多節(jié)點(diǎn))、點(diǎn)對(duì)點(diǎn)協(xié)議(PPP)、用于點(diǎn)對(duì)點(diǎn)(雙節(jié)點(diǎn))連接的HDLC和ADCCP。在這種情況下,L2通常指LTE空中接口所需要的L2調(diào)度器處理,其具有非常嚴(yán)格的實(shí)時(shí)要求。為滿足基站的實(shí)時(shí)性能需求,可以使用諸如具有PREEMPT_RT補(bǔ)丁的SMP Linux的OS,其中基站負(fù)責(zé)處理移動(dòng)通信裝置與網(wǎng)絡(luò)交換子系統(tǒng)之間的業(yè)務(wù)和信令。當(dāng)然,將理解的是,可以使用其他操作系統(tǒng)。由于vXWorks具有非常高的使用許可費(fèi)用,相比于諸如vXWorks的硬核心實(shí)時(shí)OS,選擇諸如具有Preempt_RT的SMP Linux的開源OS。為了在這種SMP配置中實(shí)現(xiàn)確定性的行為,優(yōu)選地按照使用核心保留及核心近似結(jié)構(gòu)的方式來實(shí)施系統(tǒng),以實(shí)現(xiàn)類似AMP的系統(tǒng)行為。這樣還希望獲得例如具有PREEMPT_RT OS的SMP Linux之外的最佳性能。無鎖零拷貝服務(wù)的使用,例如緩沖器管理,以及消息傳送服務(wù)還可以幫助處理通過使用具有PREEMPT_RT OS的SMP Linux可能產(chǎn)生的任何延遲問題。圖1中所示的核心抽象層(128)的主要功能中的一個(gè)是提供具有使用多核心平臺(tái)的全部能力的各種服務(wù)的高級(jí)應(yīng)用,例如L2處理。因此,設(shè)計(jì)核心抽象層以實(shí)現(xiàn)多個(gè)目標(biāo)。第一,其應(yīng)當(dāng)支持基于BED (背板以太網(wǎng)驅(qū)動(dòng)器)DPAA的接口,且對(duì)高級(jí)應(yīng)用軟件(即,L2軟件)隱藏DPAA和多核心專用實(shí)施方式。第二,其應(yīng)當(dāng)使用P4080的DPAA硬件組件來提供用戶平面數(shù)據(jù)在進(jìn)入和外出方向的加速數(shù)據(jù)路徑。第三,其應(yīng)當(dāng)提供盡可能大的靈活性,以容易地適應(yīng)配置改變(即,不需要代碼改變)。CAL配置的實(shí)例是緩沖器池、進(jìn)入幀隊(duì)列和外出幀隊(duì)列的DPAA資源配置。總結(jié)來說,本發(fā)明的實(shí)施方式使用一個(gè)分區(qū)中的所有處理器核心。這樣將需要僅使用一個(gè)OS實(shí)例,且不需使用管理程序。由于簡(jiǎn)單的Linux可能難以滿足所有的硬實(shí)時(shí)處理需求,諸如具有PREEMPT_RT補(bǔ)丁的SMP Linux的OS是優(yōu)先的。還可使用開源OS以降低成本。系統(tǒng)進(jìn)一步包含SMP Linux的核心近似和CPU保留能力,以定義SMP配置內(nèi)的類似AMP的系統(tǒng)行為,其允許6-小區(qū)或甚至是9-小區(qū)配置。因?yàn)樵诜菍?shí)時(shí)核心(例如,控制平面)和實(shí)時(shí)核心(例如,數(shù)據(jù)平面)之間共享OS實(shí)例,當(dāng)非實(shí)時(shí)線程/過程采用鎖時(shí),由于實(shí)時(shí)線程/過程必須等待數(shù)據(jù)平面核心的鎖的釋放,導(dǎo)致實(shí)時(shí)線程/過程的延遲,所以問題產(chǎn)生。由于標(biāo)準(zhǔn)Linux協(xié)議棧不保證無鎖的實(shí)施方式,本發(fā)明定義用于在數(shù)據(jù)平面核心上運(yùn)行的實(shí)時(shí)過程(LTE L2調(diào)度器)的無鎖消息傳送方案,以發(fā)送/接收TCP/UDP IP分組且避免使用協(xié)議棧。諸如在控制平面核心上運(yùn)行的OA&M的非實(shí)時(shí)過程會(huì)繼續(xù)將Linux協(xié)議棧用于其正常操作。由于Linux GPL問題,在用戶空間中操作我們專有的LTE L2調(diào)度器。所以,為了向/WLTE L2調(diào)度器發(fā)送和接收TCP/UDP IP數(shù)據(jù),數(shù)據(jù)必須穿越用戶內(nèi)核空間邊界,其典型地需要數(shù)據(jù)拷貝。因此,消耗處理器功率以將數(shù)據(jù)從一個(gè)存儲(chǔ)器位置拷貝至另一存儲(chǔ)器位置浪費(fèi)寶貴的資源。因此,希望提供一種方法和系統(tǒng),其允許用于數(shù)據(jù)平面核心上運(yùn)行的實(shí)時(shí)線程/過程的有效的無鎖、零拷貝及非阻塞消息傳送服務(wù),且允許控制平面按照其正常方式進(jìn)行操作(例如通過使用傳統(tǒng)的Linux協(xié)議棧)?,F(xiàn)在參照?qǐng)D2,圖示了實(shí)現(xiàn)這些和其它目標(biāo)的示例性架構(gòu)200。已知的是,傳統(tǒng)的計(jì)算機(jī)操作系統(tǒng)通常將虛擬內(nèi)存隔離為內(nèi)核空間和用戶空間。嚴(yán)格地保留內(nèi)核空間以用于運(yùn)行內(nèi)核、內(nèi)核擴(kuò)展以及大部分設(shè)備驅(qū)動(dòng)程序。相對(duì)的是,用戶空間是所有用戶模式應(yīng)用進(jìn)行工作的內(nèi)存區(qū)域,并且當(dāng)需要時(shí)可更換所述內(nèi)存。在這方面,核心抽象層(CAL) 201包括用戶空間中的各種模塊,包括但不限于:核心抽象層初始化(CALInit)模塊202,其將LTE網(wǎng)絡(luò)配置和任何靜態(tài)P⑶規(guī)則裝載至幀管理器(FMAN)230及232,并且基于配置文件集來建立CAL框架;核心抽象層緩沖器(CALBuf)模塊204 ;核心抽象層消息傳送(CALMsg)模塊206,其提供消息傳送服務(wù)至L2軟件以向或從另一個(gè)板(即,eCCM)發(fā)送和接收用戶平面數(shù)據(jù),而不使用Linux協(xié)議棧;核心抽象層解析、分類和分發(fā)(CALPcdFmc)模塊208,其提供由每個(gè)FMAN (230,232)所使用的解析、分類和分發(fā)(PDC)規(guī)則以及配置,以用于將進(jìn)入幀路由到適當(dāng)?shù)暮诵?;以及核心抽象層DPAA追蹤(CALDpaaTrace)模塊210,其提供用于啟用和禁用核心抽象層DPAA驅(qū)動(dòng)程序(CALDPAADriver)212中的追蹤的追蹤能力,CALDPAADriver212為內(nèi)核空間模塊。架構(gòu)200進(jìn)一步包括合適的操作系統(tǒng)214,諸如具有Preempt RT補(bǔ)丁的SMPLinux。操作系統(tǒng)214于是支持各種驅(qū)動(dòng)程序,例如上述CALDPAADriver212、至少一個(gè)幀管理器(FMAN)驅(qū)動(dòng)程序216、至少一個(gè)緩沖器管理器(BMAN)驅(qū)動(dòng)程序218以及至少一個(gè)隊(duì)列管理器(QMAN)驅(qū)動(dòng)程序220。如圖2中所示,架構(gòu)200可適當(dāng)?shù)匕≒4080CoreNet結(jié)構(gòu)222,其作為適于可擴(kuò)展的片上網(wǎng)絡(luò)的互連架構(gòu),以將多個(gè)功率架構(gòu)處理核心與高速緩沖存儲(chǔ)器、單獨(dú)的高速緩沖存儲(chǔ)器和內(nèi)存子系統(tǒng)進(jìn)行連接。P4080處理器包括新數(shù)據(jù)路徑加速架構(gòu)(DPAA)的實(shí)施。因此,架構(gòu)200可進(jìn)一步包括P4080DPAA224。DPAA224被設(shè)計(jì)為使多核心網(wǎng)絡(luò)處理最佳化,多核心網(wǎng)絡(luò)處理例如是負(fù)載擴(kuò)散和資源共享,其中DPAA224包括網(wǎng)絡(luò)接口和硬件加速器。如圖所示,DPAA224通常分別包括各種管理器,例如BMAN226、QMAN228、以及第一和第二 FMAN230及232。典型地,CALInit模塊202將LTE網(wǎng)絡(luò)配置和任何靜態(tài)P⑶規(guī)則裝載至幀管理器230和232,并且根據(jù)配置文件集來建立CAL框架。CALInit模塊202與FMC(FMan配置工具)(未圖示)或任意數(shù)量的FMan API (未圖示)對(duì)接,以配置FMan PCD和CALDPAADriver212,從而裝載且建立CAL配置(例如,用戶平面DPA資源)。CALPcdFmc模塊208提供由每個(gè)FMan (230,232)使用的解析、分類和分發(fā)(PDC)規(guī)則和配置,以將進(jìn)入幀路由到適當(dāng)?shù)暮诵摹ALInit模塊202負(fù)責(zé)提供各種功能性。對(duì)于啟動(dòng)處的主核心,CALInit模塊202建立CAL框架以支持“快速路徑”處理。這個(gè)步驟可包括對(duì)CALDPAADriver212進(jìn)行初始化,CALDPAADriver212于是將:(a)創(chuàng)建處理用戶平面數(shù)據(jù)(例如,緩沖器池、FQ (或幀隊(duì)列)所需要的各種DPAA資源,以及(b)創(chuàng)建經(jīng)由DPAA來支持緩沖器管理和消息傳送服務(wù)所需要的CAL基礎(chǔ)設(shè)施(例如,維持緩沖器池配置的內(nèi)部表、FQ、和進(jìn)入FQ與DL調(diào)度器IP地址之間的關(guān)聯(lián)等)。CALInit模塊202還裝載LTE FMC的(靜態(tài))P⑶規(guī)則和網(wǎng)絡(luò)配置。已知的是,在無線多接入通信系統(tǒng)中,發(fā)射機(jī)和接收機(jī)可使用多層通信棧來進(jìn)行通信。所述層可包括例如:物理層、媒體訪問控制(MAC)層、無線電鏈路控制(RLC)層、協(xié)議層(例如,分組數(shù)據(jù)收斂協(xié)議(PDCP)層)、應(yīng)用層等。RLC層從HXP層接收服務(wù)數(shù)據(jù)單元(SDU),并且鏈接或分割SDU為RLC協(xié)議數(shù)據(jù)單元(PDU),以用于傳輸至MAC層。因此,CALBuf模塊204促進(jìn)L2應(yīng)用的無鎖緩沖器管理服務(wù),以在RLC SDU處理中使用。如現(xiàn)有技術(shù)中已知的,非阻塞算法確保競(jìng)爭(zhēng)共享資源的線程不會(huì)由于相互排斥而不確定地推遲他們的執(zhí)行。如果存在保證的全系統(tǒng)進(jìn)展(guaranteed system-wideprogress),則非阻塞算法為無鎖(或無鎖定)的。CALBuf模塊204還支持查詢緩沖器池的統(tǒng)計(jì)數(shù)據(jù)(例如,池?fù)p耗狀態(tài)、損耗計(jì)數(shù)、池可用性狀態(tài)、池分配錯(cuò)誤計(jì)數(shù)等)。CALBuf模塊204與CALDPAADriver212對(duì)接以實(shí)施服務(wù)。CALBuf模塊204提供無鎖緩沖器管理方案,其對(duì)于多核心環(huán)境中的適當(dāng)系統(tǒng)操作是極為關(guān)鍵的,其中由非實(shí)時(shí)過程所采取的鎖可能導(dǎo)致等待所述鎖的釋放的實(shí)時(shí)過程的潛在問題。CALDPAADriver212是CAL201的內(nèi)核空間組件,并使用BMAN及QMAN API來幫助實(shí)施以及提供緩沖器管理服務(wù)和消息傳送服務(wù)。如本文中所使用的,術(shù)語API (或應(yīng)用編程接口)指由軟件程序?qū)嵤┑慕涌?,使其能夠與其他軟件交互。與用戶接口促進(jìn)用戶與計(jì)算機(jī)之間的交互相似的方式,API促進(jìn)不同軟間程序之間的交互。由應(yīng)用、庫和操作系統(tǒng)來實(shí)施API,以確定他們的詞匯和呼叫協(xié)定,并且使用API訪問他們的服務(wù)。其可以包括用于例程的規(guī)范、數(shù)據(jù)結(jié)構(gòu)、對(duì)象類以及用于API的客戶與實(shí)施者之間進(jìn)行通信的協(xié)議。CALDPAADriver212負(fù)責(zé)管理將用于用戶平面數(shù)據(jù)分發(fā)的DPAA資源(緩沖器池和幀隊(duì)列);經(jīng)由諸如用于初始化的打開、釋放、1-o-控制(ioctl)、緩沖器管理和消息傳送服務(wù)的各種文件操作,提供用戶空間接口給其它CAL模塊;執(zhí)行內(nèi)核至用戶空間(K-U)緩沖器映射;提供DPAA緩沖器池以及接收機(jī)和發(fā)射機(jī)統(tǒng)計(jì)數(shù)據(jù);以及實(shí)施用于管理環(huán)形緩沖器的服務(wù)。應(yīng)當(dāng)注意的是,環(huán)形緩沖器代表CAL的L2軟件隊(duì)列,并且它們通常用于存儲(chǔ)預(yù)定用于特定L2DLT的FD。CALMsg模塊206提供用于L2的API,以從環(huán)形緩沖器獲取緩沖器描述符。除了 CALDPAADriver212以外,以上介紹的所有CAL組件通常是平臺(tái)中間件(在用戶空間中運(yùn)行XCALDPAADriverfU是在內(nèi)核空間中運(yùn)行的定制驅(qū)動(dòng)程序,并且將其設(shè)計(jì)為實(shí)施且提供由CAL用戶空間中間件所需要的服務(wù),特別是依賴于P4080DPAA硬件組件的那些服務(wù)。CALBuf模塊204提供將專用于“快速路徑”數(shù)據(jù)處理的緩沖器管理服務(wù)。CALBuf模塊204提供用戶空間API給L2應(yīng)用。CALBuf模塊204與CALDpaaDriver212合作以提供用于緩沖器的由CALDPaaDriver212創(chuàng)建但由BMAN226管理的零拷貝和無鎖緩沖器管理服務(wù)。CALMsg模塊206提供服務(wù)以經(jīng)由DPAA接收(進(jìn)入)RLC SDU以及發(fā)送(外出)RLC SDU0 CALMsg模塊206還支持針對(duì)Tx/Rx以太網(wǎng)接口統(tǒng)計(jì)數(shù)據(jù)的查詢(例如,接收或傳送的FD的數(shù)量、丟失的FD的數(shù)量、各種類型的損壞的FD等)。CALMsg模塊206與CALDPAADriver212對(duì)接以實(shí)施服務(wù)。CALMsg模塊206提供零拷貝無鎖消息傳送服務(wù)給LTEL2應(yīng)用,以發(fā)送或接收TCP/UDP IP分組而不使用協(xié)議棧。這樣確保應(yīng)用軟件不會(huì)遭遇可能破壞LTE系統(tǒng)的正常系統(tǒng)行為的無限延遲尖峰,其中LTE系統(tǒng)的正常系統(tǒng)行為具有非常嚴(yán)格的實(shí)時(shí)處理要求。CALMsg模塊206提供消息傳送服務(wù)給L2軟件,以向或從另一個(gè)板(即,eCCM)發(fā)送和接收用戶平面數(shù)據(jù)。CALMsg模塊206通常與CALDPAADriver212對(duì)接,以經(jīng)由DPAA提供無鎖零拷貝消息傳送服務(wù)。這個(gè)特征允許L2應(yīng)用軟件發(fā)送和接收TCP/UDP IP分組,而不使用協(xié)議棧以避免無限的潛在延遲。CALMsg模塊206實(shí)施且提供API,其支持各種服務(wù),例如下列各段中介紹的服務(wù)。一種可能的服務(wù)為(L2)應(yīng)用實(shí)體到CALMsg服務(wù)的注冊(cè),由此實(shí)體可經(jīng)由“快速路徑”來接收進(jìn)入分組。在所述注冊(cè)過程期間,創(chuàng)建CAL的L2軟件隊(duì)列(即,緩沖器描述符的環(huán),或換言之,用于緩沖器描述符的環(huán)形緩沖器),以維持預(yù)定用于實(shí)體的所接收的緩沖器描述符。同樣在此注冊(cè)期間,CALMsg模塊206創(chuàng)建至IP地址的進(jìn)入FQ和用于其他處理(例如,當(dāng)幀到達(dá)FQ時(shí),確定哪個(gè)緩沖器描述符的環(huán)來推進(jìn)緩沖器描述符)中的稍后參考的緩沖器描述符ID的環(huán)之間的關(guān)聯(lián)。CALMsg模塊206還執(zhí)行相關(guān)的緩沖器描述符的環(huán)的內(nèi)核至用戶空間映射,并且(如果尚未經(jīng)由靜態(tài)規(guī)則來完成)配置用于應(yīng)用實(shí)體的PCD規(guī)則。此夕卜,在注冊(cè)過程開始時(shí),CAL201實(shí)施防御策略,以確保當(dāng)線程崩潰時(shí)正確地釋放由應(yīng)用所獲得的所有緩沖器。由CALMsg模塊206提供的第二服務(wù)是獲取預(yù)定用于應(yīng)用實(shí)體的幀。返回的緩沖器地址指向以以太網(wǎng)報(bào)頭作為開始的有效載荷的開始。由CALMsg模塊206提供的第三服務(wù)在經(jīng)由被配置用于處理用戶平面數(shù)據(jù)(例如,ethO)的以太網(wǎng)接口上的DPAA發(fā)送消息至外部實(shí)體。預(yù)期的是,L2填充所需的所有報(bào)頭(以太網(wǎng)、IP、UDP);并且正確地配置硬件以生成且填充IP校驗(yàn)和以及Μ)Ρ校驗(yàn)和。第四服務(wù)在查詢接收機(jī)和發(fā)射機(jī)的端口統(tǒng)計(jì)數(shù)據(jù)。第五服務(wù)在從CALMsg模塊206注銷應(yīng)用實(shí)體。一旦應(yīng)用實(shí)體被注銷,將不再能夠經(jīng)由“快速路徑”來接收分組。作為注銷過程的一部分,CAL將釋放由應(yīng)用軟件所獲得的所有緩沖器。對(duì)于CALMsg模塊206用于經(jīng)由快速路徑來接收幀的情況,還將移除相關(guān)的緩沖器描述符的環(huán)和PCD規(guī)則。參照?qǐng)D3,圖示了適于提供數(shù)據(jù)分組的進(jìn)入數(shù)據(jù)流的示例性的基于背板以太網(wǎng)驅(qū)動(dòng)程序(BED) DPA的系統(tǒng)300的高級(jí)概況。圖3的左側(cè)示出了預(yù)定前往使用傳統(tǒng)協(xié)議棧的控制平面核心X的分組所采用的路徑。圖的右手側(cè)示出了用于LTE L2調(diào)度器運(yùn)行所位于的數(shù)據(jù)平面核心Y的分組遍歷。為了說明的目的,LTE L2調(diào)度器包含二個(gè)實(shí)時(shí)線程。所述二個(gè)線程包括在圖3中示為DL調(diào)度器324的DL調(diào)度器,其針對(duì)進(jìn)入分組流進(jìn)行動(dòng)作,以及示為UL調(diào)度器的上行鏈路調(diào)度器,其針對(duì)外出分組流進(jìn)行動(dòng)作。從硬件的角度看,每個(gè)核心具有軟件入口 316。每個(gè)入口具有特定的信道號(hào)。每個(gè)信道具有八個(gè)基于優(yōu)先級(jí)的工作隊(duì)列(WQ),其包括多個(gè)幀隊(duì)列(FQ)。在高級(jí)(high level)處,當(dāng)FMAN302接收數(shù)據(jù)分組304時(shí),其從BMAN226獲得適當(dāng)尺寸的內(nèi)核-用戶空間映射緩沖器,并且將接收的分組拷貝至緩沖器,F(xiàn)MAN302(根據(jù)P⑶規(guī)則)確定哪個(gè)進(jìn)入FQ306對(duì)分組進(jìn)行排列,并使用QMAN API308將數(shù)據(jù)分組304排列于適當(dāng)?shù)腇Q306上。當(dāng)數(shù)據(jù)分組304直至硬件寄存器DQRR328時(shí),為特定核心(例如,核心Y312)生成入口中斷。換言之,QMAN針對(duì)各種信道來處理所有FQ。WQ實(shí)施服務(wù)質(zhì)量(QoS)。所以,一旦每個(gè)到達(dá)的分組被排列在FQ上,它們通過內(nèi)部硬件排列在QMAN內(nèi)。由QMAN將到達(dá)隊(duì)列前面且準(zhǔn)備處理的FQ放入DQRR寄存器。DQRR寄存器具有15個(gè)條目的深度。由于中斷服務(wù)例程(ISR)中的注冊(cè)回?fù)芄δ?30為每個(gè)條目(其是包含與FQ相關(guān)的信息的幀隊(duì)列描述符,例如至分組緩沖器的指針、相關(guān)聯(lián)的回?fù)芄δ艿?提供服務(wù),QMAN308自動(dòng)將下一 FQ描述符排列在DQRR上。作為FQ306的CAL DPA Driver314的一部分的注冊(cè)回?fù)芄δ堋癠planeDiSpatCher”330,于是在內(nèi)核空間中運(yùn)行并且執(zhí)行適當(dāng)?shù)姆纸M處理。DL調(diào)度器的每個(gè)實(shí)例的緩沖器描述符的環(huán)320具有環(huán)ID。緩沖器描述符的環(huán)320也是內(nèi)核至用戶空間(K-U)映射的,以允許用戶空間(例如,CALMSG326)和CAL128的內(nèi)核空間(例如,CAL DPADriver314)組件進(jìn)行訪問而無需任何尋址問題,以及對(duì)數(shù)據(jù)拷貝的需要。在小區(qū)初始化期間,CALMSG326提供服務(wù)給用戶應(yīng)用DL調(diào)度器324,以將其自身注冊(cè)到CALMSG326。此時(shí),還創(chuàng)建進(jìn)入FQ306和環(huán)ID320之間的映射關(guān)聯(lián)?;?fù)芄δ?30確定所述特定幀隊(duì)列描述符屬于哪個(gè)環(huán)ID320,并且通過拷貝內(nèi)核-用戶空間映射緩沖器指針(連同任意簿記信息)并且使緩沖器描述符排列于緩沖器描述符320的適當(dāng)內(nèi)核-用戶空間映射環(huán)上,以用于特定數(shù)據(jù)平面核心Y312上的由相關(guān)聯(lián)的用戶空間DL調(diào)度器線程324所進(jìn)行的稍后處理,來創(chuàng)建緩沖器描述符。DL調(diào)度器過程324在用戶空間中按無限“從運(yùn)行至完成”模式來運(yùn)行。每隔DeltaT時(shí)間,實(shí)時(shí)線程喚醒,并且調(diào)用CALMSG326API以詢問是否存在分組關(guān)于其在緩沖器描述符環(huán)320上的消耗進(jìn)行排列。如果存在,則DL調(diào)度器324處理(或消耗)環(huán)320上的分組。由于接收的分組未通過標(biāo)準(zhǔn)協(xié)議棧,其包含整個(gè)分組報(bào)頭(TCP/UDP/IP/以太網(wǎng))。DL調(diào)度器324忽略分組報(bào)頭,并且在分組有效載荷上進(jìn)行操作。當(dāng)完成時(shí),其使用CALBUF204API來釋放緩沖器。一旦不存在供DL調(diào)度器324處理的更多分組,DL調(diào)度器線程324返回休眠。由于針對(duì)每個(gè)緩沖器描述符環(huán)320僅存在一個(gè)生產(chǎn)者(CAL DPADriver314)和一個(gè)消費(fèi)者(特定的DL調(diào)度器線程324),可以利用不需要任何軟件鎖的原子操作來實(shí)施此方案。通過使用從內(nèi)核映射至用戶空間的緩沖器連同諸如緩沖器描述符環(huán)320的緩沖器描述符環(huán)來實(shí)現(xiàn)進(jìn)一步的優(yōu)點(diǎn)。內(nèi)核至用戶空間映射緩沖器的使用消除了對(duì)任何數(shù)據(jù)拷貝的需要,這是因?yàn)榉纸M將在用戶空間中從內(nèi)核-空間設(shè)備驅(qū)動(dòng)程序遍歷至其最終目的地。在示例性實(shí)施例中,控制平面業(yè)務(wù)和數(shù)據(jù)平面業(yè)務(wù)彼此隔離并被指向單獨(dú)的以太網(wǎng)接口。FMAN302可支持多個(gè)以太網(wǎng)接口。Linux協(xié)議棧被綁定至控制平面核心X332并且在控制平面核心X332上運(yùn)行。CAL P⑶模塊建立靜態(tài)P⑶規(guī)則,其允許FMAN302將到達(dá)控制平面以太網(wǎng)接口的所有分組304排列至幀隊(duì)列(FQ) 334,其中將由內(nèi)核空間中運(yùn)行的FSLDPA驅(qū)動(dòng)程序336來處理所述幀隊(duì)列(FQ) 334。所述驅(qū)動(dòng)程序336將分組移交至Linux協(xié)議棧338。因?yàn)榉纸M穿越內(nèi)核空間到達(dá)用戶空間邊界,所以還包括數(shù)據(jù)拷貝。這在圖3的左側(cè)進(jìn)行圖示。圖4中示出了關(guān)于數(shù)據(jù)平面核心的進(jìn)入數(shù)據(jù)分組的過程流的高級(jí)視圖??捎蓤D3中所示的設(shè)備來實(shí)施圖4的方法。在步驟410,DL調(diào)度器324將其自己注冊(cè)到CALMSG326。系統(tǒng)還創(chuàng)建緩沖器描述符環(huán)320,其是內(nèi)核至用戶空間(K-U)映射的,以允許內(nèi)核空間實(shí)體(例如,CALDPAADriver314)和用戶空間實(shí)體(例如,CALMSG326) 二者均存取該環(huán)??捎蒀ALMSG326結(jié)合CALDPAADriver模塊314對(duì)調(diào)制解調(diào)器板上的每個(gè)配置小區(qū)執(zhí)行上述步驟。因此,如果調(diào)制解調(diào)器板上支持三個(gè)小區(qū),那么存在三個(gè)單獨(dú)的緩沖器描述符環(huán)320(每個(gè)小區(qū)一個(gè)緩沖器描述符環(huán)320),并且CALDPAADriverf 14將具有進(jìn)入FQ306與特定緩沖器描述符環(huán)320之間的映射。在示例性實(shí)施例中,存在用于每個(gè)DL調(diào)度器實(shí)例324的一個(gè)緩沖器描述符環(huán)320。緩沖器描述符環(huán)具有讀取指針和寫入指針。由于僅存在一個(gè)生產(chǎn)者(例如,內(nèi)核空間中的CALDPAADriver314的uplaneDispatcher330)和一個(gè)消費(fèi)者(例如,用戶空間中的特定DL調(diào)度器324),使用原子操作,按照無鎖方式來實(shí)施緩沖器描述符環(huán)320。在步驟420,專用的數(shù)據(jù)平面以太網(wǎng)接口接收數(shù)據(jù)分組304。在步驟430,F(xiàn)MAN302從BMAN (圖2,226)獲得內(nèi)核至用戶空間映射緩沖器/令牌。在步驟440,F(xiàn)MAN302將接收的數(shù)據(jù)分組304插入到所獲得的緩沖器中。在步驟450,按照CAL模塊(CALMSG206)在小區(qū)初始化期間建立的動(dòng)態(tài)P⑶規(guī)則(提供IP地址和進(jìn)入FQ306之間的映射),F(xiàn)MAN302利用來自QMAN308的幫助,使分組排列于適當(dāng)?shù)腇Q306上。在步驟460,當(dāng)分組到達(dá)硬件DQRR寄存器328時(shí),系統(tǒng)經(jīng)由P4080多核心處理器為核心Y312 (數(shù)據(jù)平面核心)生成軟件入口 316的中斷。為特定FQ注冊(cè)的回?fù)芄δ?在這種情況中,為uplaneDispatcher330)將運(yùn)行為內(nèi)核空間中的ISR例程以處理分組。本質(zhì)上,回?fù)芄δ軓谋惶幚淼腄QRR條目的幀隊(duì)列描述符(FD)中所包含的信息創(chuàng)建緩沖器描述符。來自FD的緩沖器指針連同某些額外的簿記信息被拷貝到緩沖器描述符中。 在步驟470,CALDPAA驅(qū)動(dòng)程序314使來自步驟460的所生成的緩沖器描述符排列在與核心Y312相關(guān)聯(lián)的緩沖器描述符環(huán)320中。步驟410至470是由硬件(FMAN和QMAN)結(jié)合CALDPAADriver314的內(nèi)核線程(例如,uplaneDispatcher330)來執(zhí)行的。在示例性實(shí)施例中,步驟480至495是在與執(zhí)行步驟410至470的過程或線程無關(guān)的過程或線程中執(zhí)行的。按這種方式,步驟480-495是由數(shù)據(jù)平面核心Y312上諸如DL調(diào)度器324的用戶空間線程來執(zhí)行的。與步驟410至470同時(shí),DL調(diào)度器324按無限運(yùn)行至完成模式來運(yùn)行,并且以TTI(中斷時(shí)間(Time-To-1nterrupt))間隔來喚醒。在步驟480, —旦喚醒,DL調(diào)度器324調(diào)用CALMSG API326以查詢?cè)诰彌_器描述符環(huán)320上是否存在任何未經(jīng)處理的分組用于消耗。如果在緩沖器描述符環(huán)320上不存在未經(jīng)處理的數(shù)據(jù)分組,則DL調(diào)度器324將從CALMSG模塊326接收非阻塞響應(yīng),其指示沒有未經(jīng)處理的分組。DL調(diào)度器線程324于是休眠直至下一 TTI。
在步驟485,如果DL調(diào)度器324確定存在未經(jīng)處理的數(shù)據(jù)分組,那么方法行進(jìn)至步驟490,否則方法行進(jìn)至495。在步驟490,DL調(diào)度器324處理緩沖器描述符環(huán)320上的下一數(shù)據(jù)分組。由環(huán)的讀取指針指示所述下一分組。在數(shù)據(jù)分組被處理之后,DL調(diào)度器324使用CALBUF204API來釋放K-U映射緩沖器。在示例性實(shí)施例中,要被處理的數(shù)據(jù)分組包含一個(gè)或多個(gè)報(bào)頭及有效載荷。DL調(diào)度器324忽略報(bào)頭并且在有效載荷上進(jìn)行操作。報(bào)頭用于將分組路由到其目的地,這是在示例性實(shí)施例中實(shí)現(xiàn)的,且未使用協(xié)議棧。一旦DL調(diào)度器324處理所有分組,方法行進(jìn)至步驟495,其中DL調(diào)度器休眠。示例性實(shí)施例支持三個(gè)小區(qū)(可擴(kuò)展至六個(gè)小區(qū))。每個(gè)小區(qū)將具有其自己的DL調(diào)度器(DL調(diào)度器線程324),其被綁定至其自己的專用數(shù)據(jù)平面核心,并且在其自己的專用數(shù)據(jù)平面核心上運(yùn)行。因此,在示例性實(shí)施例中,存在在三個(gè)不同數(shù)據(jù)平面核心上運(yùn)行的最少三個(gè)DL調(diào)度器(圖1,116、118及120)線程。類似地,每個(gè)小區(qū)需要UL L2調(diào)度器(UL調(diào)度器)。因此,存在在三個(gè)不同數(shù)據(jù)平面核心上運(yùn)行的三個(gè)UL調(diào)度器線程(圖1,110、112及 114)。在小區(qū)建立期間,由CALMSG模塊326建立動(dòng)態(tài)PDC規(guī)則(B卩,IP地址到進(jìn)入FQ的映射)。CALMSG模塊326還可執(zhí)行簿記功能,例如將進(jìn)入FQ映射至緩沖器描述符環(huán)ID。P⑶規(guī)則使FMAN能夠檢查每個(gè)分組的IP地址,并確定在哪個(gè)FQ中對(duì)分組進(jìn)行排隊(duì)。額外的簿記信息(例如,進(jìn)入FQ306到緩沖器描述符環(huán)320的ID的映射)允許uplaneDispatcher內(nèi)核線程330決定其應(yīng)當(dāng)在哪個(gè)緩沖器描述符環(huán)320中放置與進(jìn)入的數(shù)據(jù)分組相關(guān)聯(lián)的指定緩沖器描述符。因此,實(shí)現(xiàn)無鎖和零拷貝消息傳送方案,其允許進(jìn)入分組到達(dá)在數(shù)據(jù)平面核心Y312上運(yùn)行的DL調(diào)度器線程324而不使用傳統(tǒng)的協(xié)議棧。參照?qǐng)D5,圖示了適于提供數(shù)據(jù)分組的外出數(shù)據(jù)流的示例性的基于背板以太網(wǎng)驅(qū)動(dòng)程序(BED) DPA的系統(tǒng)500的高級(jí)概況。示例性實(shí)施例500提供不使用Linux協(xié)議棧來傳送外出數(shù)據(jù)平面業(yè)務(wù)的技術(shù)方案。圖5的左側(cè)示出了使用傳統(tǒng)協(xié)議棧538從控制平面核心X532發(fā)送的分組所采用的路徑。諸如在控制平面核心X532上運(yùn)行的0AM&M124的非實(shí)時(shí)用戶空間應(yīng)用使用協(xié)議棧538來發(fā)送TCP/UDP IP分組。協(xié)議棧538將分組轉(zhuǎn)發(fā)至內(nèi)核空間中的FSL DPA驅(qū)動(dòng)程序536。從用戶空間中的核心X532將分組轉(zhuǎn)發(fā)內(nèi)核空間中的FSLDPA驅(qū)動(dòng)程序536的過程需要數(shù)據(jù)拷貝。FSL DPA驅(qū)動(dòng)程序536使分組在FQ534上排隊(duì),其最終由具有來自QMAN508的幫助的FMAN506提供服務(wù),并且在以太網(wǎng)接口上傳送分組。圖的右手側(cè)示出了在數(shù)據(jù)平面核心Y512處發(fā)起的分組的分組遍歷,其中在數(shù)據(jù)平面核心Y512中運(yùn)行LTE L2UL調(diào)度器502且不使用協(xié)議棧538。因此,外出數(shù)據(jù)流也使用不會(huì)導(dǎo)致無限延遲尖峰的無鎖零拷貝消息傳送方案。圖6中示出了關(guān)于外送數(shù)據(jù)分組的過程流(即,數(shù)據(jù)平面核心的外出數(shù)據(jù)流)的高級(jí)視圖。圖6的方法可由圖5中所示出的設(shè)備來實(shí)施。在步驟610,UL調(diào)度器502從CALBUF522獲得內(nèi)核至用戶空間映射緩沖器。在步驟620,當(dāng)UL調(diào)度器502準(zhǔn)備好傳送TCP/UDP IP分組時(shí),UL調(diào)度器502準(zhǔn)備整個(gè)分組(具有報(bào)頭和有效載荷),并且然后調(diào)用CALMSGAPI522。在步驟630,CALMSG522在來自CALDPAADriver524的幫助下,使所準(zhǔn)備的分組在與數(shù)據(jù)平面以太網(wǎng)接口相關(guān)聯(lián)的信道CHB的合適的外出FQ504上排隊(duì)。不使用協(xié)議棧,并且替代地依賴無鎖、零消息傳送方案執(zhí)行這種排隊(duì)以避免無限延遲尖峰。在可選步驟640,QMAN508確定排列操作是否成功的狀態(tài),并且如果希望接收所述狀態(tài),一直將所述響應(yīng)發(fā)送返回至用戶應(yīng)用UL調(diào)度器502。在步驟650,F(xiàn)MAN506利用來自QMAN508的幫助,處理來自各種FQ504的所有分組。盡管存在分組遍歷用戶空間至內(nèi)核空間邊界時(shí)所涉及的上下文切換,但是不涉及數(shù)據(jù)拷貝。因此,按硬件有效率的方式執(zhí)行FMAN506對(duì)分組的處理,使得每個(gè)單獨(dú)的核心具有可忽略的或無性能損失。每個(gè)UL調(diào)度器302在目標(biāo)信道(CH B526)上具有專用FQ504,以傳送分組至以太網(wǎng)接口。還存在一個(gè)生產(chǎn)者(用戶空間中的特定UL調(diào)度器線程502實(shí)例),和由硬件中的FMAN506所消耗的一個(gè)專用外出FQ504。在步驟660,一旦傳送了分組,F(xiàn)MAN506將緩沖器釋放回到BMAN (圖2,226)。所屬領(lǐng)域技術(shù)人員將容易地認(rèn)識(shí)到,可由編程的計(jì)算機(jī)來執(zhí)行各種上述方法的步驟。此處,一些實(shí)施例還希望覆蓋程序存儲(chǔ)設(shè)備,例如,數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)媒體,其是機(jī)器或計(jì)算機(jī)可讀和編碼機(jī)器可執(zhí)行或計(jì)算機(jī)可執(zhí)行的程序指令,其中所述指令執(zhí)行所述上述方法的一些或全部步驟。程序存儲(chǔ)設(shè)備可以是例如,數(shù)字存儲(chǔ)器,諸如磁盤或磁帶、硬盤驅(qū)動(dòng)器或典型地可讀數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)媒體的磁存儲(chǔ)媒體。所述實(shí)施例還希望覆蓋被編程以執(zhí)行上述方法的所述步驟的計(jì)算機(jī)。上述說明僅提供本發(fā)明的特定實(shí)施例的公開內(nèi)容,并且不希望限制所述實(shí)施例的目的。同樣地,本發(fā)明不只限于上述實(shí)施例。而是,所屬領(lǐng)域技術(shù)人員可以設(shè)想落入本發(fā)明范圍內(nèi)的可替換實(shí)施例。
權(quán)利要求
1.一種計(jì)算機(jī)實(shí)施的方法,包括: 對(duì)于多個(gè)處理核心中的每一個(gè): 獲得內(nèi)核至用戶空間(K-U)映射緩沖器以及相應(yīng)的緩沖器描述符; 將數(shù)據(jù)分組插入所述緩沖器;以及 將所述緩沖器描述符插入環(huán)形緩沖器。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 創(chuàng)建包含K-U映射緩沖器指針的幀描述符; 將所述幀描述符插入到將IP地址映射至幀隊(duì)列的動(dòng)態(tài)PCD規(guī)則所指定的幀隊(duì)列上;以及 從所述幀描述符創(chuàng)建緩沖器描述符。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)分組是TCP或UDP分組。
4.根據(jù)權(quán)利要求3所述的方法, 其中所述環(huán)形緩沖器是K-U映射緩沖器描述符環(huán),其允許在用戶空間中運(yùn)行的過程對(duì)由內(nèi)核中運(yùn)行的過程所創(chuàng)建或處理的緩沖器進(jìn)行無鎖、零拷貝存?。灰约? 其中所述環(huán)形緩沖器允許在用戶空間中運(yùn)行的過程在不使用協(xié)議棧的情況下處理所述數(shù)據(jù)分組。
5.根據(jù)權(quán)利要求1所述的方法,其中,由一個(gè)或多個(gè)內(nèi)核線程結(jié)合硬件組件來執(zhí)行:獲得K-U映射緩沖器、將所述數(shù)據(jù)分組插入所述緩沖器以及將所述緩沖器描述符插入所述環(huán)形緩沖器,并且進(jìn)一步包括: 運(yùn)行按照周期間隔喚醒的用戶空間線程; 其中,所述用戶空間線程在喚醒時(shí)查詢環(huán)形緩沖器以確定在所述環(huán)形緩沖器中是否存在任何未經(jīng)處理的緩沖器描述符;以及 在確定所述環(huán)形緩沖器中存在未經(jīng)處理的緩沖器描述符時(shí),使用相同或不同用戶空間線程來處理所述緩沖器內(nèi)的數(shù)據(jù)分組。
6.一種用于提供對(duì)用戶空間過程和內(nèi)核空間過程之間的緩沖器進(jìn)行無鎖、零拷貝存取的裝置,包括: 調(diào)制解調(diào)器板; 多核心處理器,包括連接到所述調(diào)制解調(diào)器板的多個(gè)處理器核心,其中所述調(diào)制解調(diào)器板包括內(nèi)核空間和用戶空間;以及 用于每個(gè)處理器核心的環(huán)形緩沖器,其適于存儲(chǔ)內(nèi)核空間至用戶空間(K-U)映射緩沖器描述符。
7.根據(jù)權(quán)利要求6所述的裝置, 其中保留所述內(nèi)核空間以用于運(yùn)行內(nèi)核、內(nèi)核擴(kuò)展和設(shè)備驅(qū)動(dòng)程序;以及 其中所述用戶空間是執(zhí)行用戶模式應(yīng)用所處的內(nèi)存區(qū)域。
8.根據(jù)權(quán)利要求6所述的裝置,進(jìn)一步包括: 用于接收數(shù)據(jù)分組的以太網(wǎng)接口; 用于獲得內(nèi)核空間至用戶空間(K-U)映射緩沖器和相應(yīng)的緩沖器描述符的緩沖器管理器;以及 幀管理器,其適于:將接收的數(shù)據(jù)分組插入到K-U映射緩沖器中,以及 將所述相應(yīng)的緩沖器描述符在所述環(huán)形緩沖器中進(jìn)行排隊(duì)。
9.根據(jù)權(quán)利要求8所述的裝置,其中所述數(shù)據(jù)分組為TCP或UDP分組。
10.根據(jù)權(quán)利要求8所述的裝置,進(jìn)一步包括: 適于以周期間隔喚醒的用戶空間線程; 其中,所述用戶空間線程在喚醒時(shí)適于: 查詢所述環(huán)形緩沖器以確定所述環(huán)形緩沖器中是否存在任何未經(jīng)處理的緩沖器描述符;以及 在確定所述環(huán)形緩沖器中存在未經(jīng)處理的緩沖器描述符時(shí),使用相同或不同用戶空間線程來處理所述緩沖器 內(nèi)的數(shù)據(jù)分組。
全文摘要
本發(fā)明公開了一種用于在電信網(wǎng)絡(luò)中的調(diào)制解調(diào)器上使用的多核心處理器中的無鎖、零數(shù)據(jù)拷貝消息傳送機(jī)制的計(jì)算機(jī)實(shí)施的系統(tǒng)和方法。所述方法包括對(duì)于多個(gè)處理核心中的每一個(gè),獲得內(nèi)核至用戶空間(K-U)映射緩沖器以及相應(yīng)的緩沖器描述符,將數(shù)據(jù)分組插入所述緩沖器;以及將所述緩沖器描述符插入環(huán)形緩沖器。所述方法進(jìn)一步包括創(chuàng)建包含K-U映射緩沖器指針的幀描述符,將所述幀描述符插入到將IP地址映射至幀隊(duì)列的動(dòng)態(tài)PCD規(guī)則所指定的幀隊(duì)列上,以及從所述幀描述符創(chuàng)建緩沖器描述符。
文檔編號(hào)H04L12/863GK103210619SQ201180054496
公開日2013年7月17日 申請(qǐng)日期2011年10月19日 優(yōu)先權(quán)日2010年11月12日
發(fā)明者M·R·加沃爾, L·索 申請(qǐng)人:阿爾卡特朗訊公司