專利名稱:數(shù)據(jù)分組的預(yù)提取的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)的實(shí)施方式總體上涉及數(shù)據(jù)的處理,并且更具體地涉及數(shù)據(jù)和/或數(shù)據(jù)分組的預(yù)提取。
背景技術(shù):
除非在此指出,本部分中描述的方法不是本公開(kāi)中權(quán)利要求的現(xiàn)有技術(shù),并且也不因?yàn)榘ㄔ诒静糠种卸姓J(rèn)其是現(xiàn)有技術(shù)。在處理數(shù)據(jù)的系統(tǒng)中,例如在用于處理在網(wǎng)絡(luò)上傳輸?shù)姆纸M的分組處理系統(tǒng)中, 處理的某些部分(例如橋接判決(例如,層2))適于由管道處理器執(zhí)行。其他類型的處理 (例如,路由(例如,層幻、標(biāo)識(shí)通過(guò)網(wǎng)絡(luò)交換機(jī)的之前未知的分組流、以及檢查選擇的分組不包含在惡意內(nèi)容)由中央處理單元(CPU)執(zhí)行。為了最小化使用CPU執(zhí)行操作時(shí)的延遲, 將CPU處理所需的數(shù)據(jù)從外部存儲(chǔ)器加載到高速緩存存儲(chǔ)器中。
發(fā)明內(nèi)容
在各種實(shí)施方式中,本公開(kāi)提供了一種方法,其包括接收數(shù)據(jù)分組,并且將已接收的數(shù)據(jù)分組存儲(chǔ)在存儲(chǔ)器中;生成數(shù)據(jù)分組的描述符,該描述符包括用于從存儲(chǔ)器提取數(shù)據(jù)分組的至少一部分的信息;以及在處理核請(qǐng)求數(shù)據(jù)分組的至少一部分來(lái)執(zhí)行對(duì)數(shù)據(jù)分組的至少一部分的處理操作之前,至少部分地基于描述符中的信息以將數(shù)據(jù)分組的至少一部分提取到高速緩存。還提供一種片上系統(tǒng)(SOC),其包括處理核;高速緩存;分組處理模塊,被配置用于生成數(shù)據(jù)分組的描述符,該描述符包括用于從存儲(chǔ)器提取數(shù)據(jù)分組的段的信息;以及基于分組描述符的預(yù)提取模塊,被配置用于提取并處理數(shù)據(jù)分組的描述符,以及至少部分地基于處理數(shù)據(jù)分組的描述符,來(lái)將數(shù)據(jù)分組的段提取到高速緩存。還提供一種方法,其包括接收數(shù)據(jù)分組;解析并且分類數(shù)據(jù)分組以生成數(shù)據(jù)分組的分類信息;至少部分地基于分類信息生成數(shù)據(jù)分組的描述符,該描述符包括將被預(yù)提取的數(shù)據(jù)分組的段的指示;在描述符隊(duì)列中對(duì)描述符排隊(duì)。
在以下的詳細(xì)描述中,參考形成該描述一部分的附圖,其中在所有圖中相同的標(biāo)號(hào)指示相同的部分,并且其通過(guò)實(shí)施方式的方式示出了本公開(kāi)的原理。應(yīng)該指出,可以利用其他實(shí)施方式,并且可以在不脫離本公開(kāi)的范圍的情況下做出結(jié)構(gòu)性或邏輯性改變。因此, 以下的詳細(xì)描述不是限制意義的,并且根據(jù)本公開(kāi)的實(shí)施方式的范圍由所附權(quán)利要求書(shū)和其等同物限定。圖1示意性地示出了根據(jù)本公開(kāi)實(shí)施方式的、包括片上系統(tǒng)(SOC)的分組通信系統(tǒng),該片上系統(tǒng)包括預(yù)提取模塊。圖2示出了根據(jù)本公開(kāi)實(shí)施方式的、用于操作圖1的分組通信系統(tǒng)的示例方法。圖3示意性地示出了根據(jù)本公開(kāi)實(shí)施方式的、數(shù)據(jù)分組的描述符的示例結(jié)構(gòu)。圖4更詳細(xì)地示意性地示出了根據(jù)本公開(kāi)實(shí)施方式的、包括圖1的預(yù)提取模塊的處理核復(fù)合體。圖5示出了根據(jù)本公開(kāi)實(shí)施方式的、用于操作圖1的系統(tǒng)的另一示例方法。
具體實(shí)施例方式通過(guò)網(wǎng)絡(luò)傳送的數(shù)據(jù)分組一般包括在數(shù)據(jù)分組的凈荷段之前的報(bào)頭段。報(bào)頭段例如包括與數(shù)據(jù)分組的發(fā)起地址、目的地地址、優(yōu)先級(jí)、隊(duì)列、業(yè)務(wù)流、應(yīng)用區(qū)域、關(guān)聯(lián)的協(xié)議等(例如,任何其他配置信息)相關(guān)聯(lián)的信息。凈荷段例如包括與數(shù)據(jù)分組相關(guān)聯(lián)的用戶數(shù)據(jù)、旨在通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),例如互聯(lián)網(wǎng)數(shù)據(jù)、流媒體等。圖1示意性地示出了根據(jù)本公開(kāi)實(shí)施方式的、包括片上系統(tǒng)(SOC)IOO的分組通信系統(tǒng)10 (這里也稱作系統(tǒng)10),該片上系統(tǒng)(SOC) 100包括基于分組描述符的預(yù)提取模塊 24。SOC 100包括處理核復(fù)合體20,其包括處理核20a和20b,基于分組描述符的預(yù)提取模塊M和高速緩存28。在一個(gè)實(shí)施方式中,高速緩存28例如是由核20a和20b共享的2級(jí) (L2)高速緩存。在一個(gè)實(shí)施方式中,盡管示出了兩個(gè)處理核被包括在處理核復(fù)合體20中, 但是在處理核復(fù)合體20中可以包括任何其他合適數(shù)量的處理核(例如,一個(gè)、三個(gè)、四個(gè)等)。盡管在圖1中未示出,但是處理核20a和20b中的一個(gè)或兩個(gè)包括1級(jí)(Li)高速緩存。SOC 100還包括通過(guò)存儲(chǔ)器控制器44操作地耦合至存儲(chǔ)器50的存儲(chǔ)器總線36。 存儲(chǔ)器控制器44操作地耦合至存儲(chǔ)器50并且被配置用于控制存儲(chǔ)器50。在一個(gè)實(shí)施方式中,存儲(chǔ)器控制器44被配置用于經(jīng)由存儲(chǔ)器總線36從一個(gè)或多個(gè)組件(例如,從網(wǎng)絡(luò)控制器12a,將在后面對(duì)其進(jìn)行更詳細(xì)的討論)接收用于存儲(chǔ)器50的讀取指令和/或?qū)懭胫噶?,并且將接收的指令轉(zhuǎn)譯為與存儲(chǔ)器50兼容的格式。即,存儲(chǔ)器控制器44充當(dāng)存儲(chǔ)器50 和系統(tǒng)100的各種其他組件之間的接口(例如,通過(guò)存儲(chǔ)器總線36)。如圖1所示,在一個(gè)實(shí)施方式中,存儲(chǔ)器50處于SOC 100外部,但是在其他實(shí)施方式中,存儲(chǔ)器50處于SOC 100 的內(nèi)部。在一個(gè)實(shí)施方式中,存儲(chǔ)器50是動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM)(例如,雙數(shù)據(jù)速率三(DDR3)同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SDRAM))。在一個(gè)實(shí)施方式中,存儲(chǔ)器50包括多個(gè)緩存位置,例如,緩存位置50_a、50_
b.....50_R,其中R是合適的正整數(shù)。緩存位置50_a、50_b.....50_R中的每個(gè)被配置用于
緩存數(shù)據(jù)的一個(gè)或多個(gè)字節(jié)。例如,緩存位置中的每個(gè)被配置用于存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)分組(或數(shù)據(jù)分組的一部分)。在一個(gè)實(shí)施方式中,示出的緩存位置的一個(gè)或多個(gè)是在存儲(chǔ)器 50中連續(xù)的緩存位置。
處理核復(fù)合體20的一個(gè)或多個(gè)組件(例如,處理核20a和20b、基于分組描述符的預(yù)提取模塊M和/或高速緩存28)通過(guò)處理復(fù)合體輸入/輸出(I/O)橋48操作地耦合至存儲(chǔ)器總線36。在一個(gè)實(shí)施方式中,處理核復(fù)合體20的一個(gè)或多個(gè)組件通過(guò)處理復(fù)合體 I/O橋48、存儲(chǔ)器總線36以及存儲(chǔ)器控制器44從存儲(chǔ)器50讀取和/或向存儲(chǔ)器50寫(xiě)入。 在一個(gè)實(shí)施方式中,高速緩存被配置用于通過(guò)存儲(chǔ)器控制器44來(lái)訪問(wèn)存儲(chǔ)器50,從而旁路處理復(fù)合體I/O橋48。SOC 100還包括N個(gè)網(wǎng)絡(luò)控制器12a、12b.....12N,其中N是合適的整數(shù)。在一個(gè)
實(shí)施方式中,盡管網(wǎng)絡(luò)控制器1 .....12N在圖1中示出為處于SOC 100的內(nèi)部,但是網(wǎng)
絡(luò)控制器12a.....12N的一個(gè)或多個(gè)可以在SOC 100的外部。在一個(gè)實(shí)施方式中,網(wǎng)絡(luò)控
制器lh、12b.....12N中的一個(gè)或多個(gè)控制系統(tǒng)10中的數(shù)據(jù)分組流。例如,網(wǎng)絡(luò)控制器
12a.....12N中的一個(gè)或多個(gè)向多個(gè)設(shè)備傳輸和/或從多個(gè)設(shè)備接收(例如傳輸和/或接
收)數(shù)據(jù)分組。例如,網(wǎng)絡(luò)控制12a向設(shè)備13a和/或1 傳輸數(shù)據(jù)分組和/或從設(shè)備13a 和/或1 接收數(shù)據(jù)分組,網(wǎng)絡(luò)控制12b向設(shè)備13c和/或13d傳輸數(shù)據(jù)分組和/或從設(shè)備13c和/或13d接收數(shù)據(jù)分組、以及網(wǎng)絡(luò)控制12c向設(shè)備1 和/或13f傳輸數(shù)據(jù)分組和
/或從設(shè)備13e和/或13f接收數(shù)據(jù)分組。網(wǎng)絡(luò)控制器1 .....12N從其傳輸-接收數(shù)據(jù)
分組的設(shè)備(例如,設(shè)備13a.....13f)例如是網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)端口、以太網(wǎng)端口(例如,
千兆字節(jié)以太網(wǎng)端口)、具有網(wǎng)絡(luò)連接性的任何其他合適的設(shè)備等。在一個(gè)實(shí)施方式中,設(shè)
備13a.....13f中的一個(gè)或多個(gè)是用于在系統(tǒng)100中交換數(shù)據(jù)分組的網(wǎng)絡(luò)交換機(jī)。在一個(gè)
實(shí)施方式中,設(shè)備13a、. . .、13f中的一個(gè)或多個(gè)包括在SOC 100中,而設(shè)備13a、. . .、13f中另外的一個(gè)或多個(gè)在SOC 100的外部。例如,如圖1所示,設(shè)備1 和13c在SOC 100的外部,而設(shè)備13a、13d、13e和13f包括在SOC 100中。SOC 100還包括分組處理模塊14,其包括解析和分類引擎(PNC)60以及描述符生成器模塊62。PNC 60從系統(tǒng)100的一個(gè)或多個(gè)組件接收一個(gè)或多個(gè)數(shù)據(jù)分組(或數(shù)據(jù)分組的至少一段)(例如,從一個(gè)或多個(gè)組件接收數(shù)據(jù)分組流)。例如,PNC 60從處于SOC 100 的內(nèi)部和/或其外部的組件接收數(shù)據(jù)分組。在一個(gè)實(shí)施方式中,PNC60接收通過(guò)網(wǎng)絡(luò)傳送的數(shù)據(jù)分組的一部分。PNC 60解析并分類數(shù)據(jù)分組以生成數(shù)據(jù)分組的分類信息。例如, PNC 60根據(jù)預(yù)定義的網(wǎng)絡(luò)協(xié)議和規(guī)則的集合來(lái)解析數(shù)據(jù)分組,該預(yù)定義的網(wǎng)絡(luò)協(xié)議和規(guī)則的集合共同定義了數(shù)據(jù)分組的封裝結(jié)構(gòu)。在示例中,數(shù)據(jù)分組的分類信息包括與數(shù)據(jù)分組的類型、優(yōu)先級(jí)、目的地地址、隊(duì)列地址等相關(guān)聯(lián)的信息。在共同未決申請(qǐng)(MP3444)美國(guó) 12/947,678(名稱為“Iterative Parsing and Classification,,)中描述了根據(jù)一個(gè)實(shí)施方式的PNC 60,將其說(shuō)明書(shū)通過(guò)引用全文合并于此,除了與本說(shuō)明書(shū)不一致的部分(如果有的話)。在另一實(shí)施方式中,任何其他合適的硬件和/或軟件組件可以代替PNC 60用于解析并分類數(shù)據(jù)分組。在一個(gè)實(shí)施方式中,描述符生成器模塊62從PNC 60接收數(shù)據(jù)分組的分類信息,并且至少部分地基于該分類信息生成數(shù)據(jù)分組的描述符,這將在下面更詳細(xì)地描述。在一個(gè)實(shí)施方式中,盡管在圖1中未示出,PNC 60生成各種數(shù)據(jù)分組的描述符,即描述符生成器模塊是PNC 60的一部分。在一個(gè)實(shí)施方式中,SOC 100還包括用于向系統(tǒng)100的一個(gè)或多個(gè)組件分配緩存位置的緩存管理單元(BMU) 40,但是在另一實(shí)施方式中,例如由處理核20a和/或20b、或由任何合適的軟件執(zhí)行緩存分配(在另一實(shí)施方式中,SOC 100中可以不存在BMU 40)。盡管 SOC 100包括若干其他組件(例如,通信總線、一個(gè)或多個(gè)外圍設(shè)備、接口等),但是為了說(shuō)明的清楚起見(jiàn),在圖1中未示出這些組件。在一個(gè)實(shí)施方式中以及如下面更詳細(xì)地討論的那樣,基于分組描述符的預(yù)提取模塊M執(zhí)行如下過(guò)程,該過(guò)程使用針對(duì)數(shù)據(jù)分組生成的描述符(例如,由描述符生成器模塊 62生成),而該數(shù)據(jù)分組被緩存在存儲(chǔ)器50中的存儲(chǔ)器位置之一。在一個(gè)實(shí)施方式中,描述符包括將被預(yù)提取并被存儲(chǔ)在高速緩存觀中的數(shù)據(jù)分組的相關(guān)段的指示,該相關(guān)段例如是分組報(bào)頭的相關(guān)部分(然而,也可以指示分組的其他部分,例如為防止惡意入侵進(jìn)行深度分組檢驗(yàn)所需的凈荷部分)?;诜纸M描述符的預(yù)提取模塊M至少部分地基于對(duì)數(shù)據(jù)分組描述符的處理,而將數(shù)據(jù)分組的段預(yù)提取到高速緩存觀。處理核20a和20b中之一繼而訪問(wèn)并處理來(lái)自于高速緩存觀的數(shù)據(jù)分組的預(yù)提取并存儲(chǔ)的段。圖2示出了根據(jù)本公開(kāi)實(shí)施方式的、用于操作圖1的系統(tǒng)10的示例方法200。而且,圖3示意性地示出了根據(jù)本公開(kāi)實(shí)施方式的、在方法200的操作期間生成的數(shù)據(jù)分組 DPl的描述符300的示例結(jié)構(gòu)。參考圖2,在一個(gè)實(shí)施方式中,BMU 40向網(wǎng)絡(luò)控制器1 .....12N中的一個(gè)或多
個(gè)和/或處理核20a、20b提供服務(wù),并且因而,這些組件(即,網(wǎng)絡(luò)控制器1 .....12N中
的一個(gè)或多個(gè)和/或處理核20a、20b)在此稱作BMU 40的客戶端組件。再次參考圖1和圖 2,在方法200的204處,客戶端組件接收數(shù)據(jù)分組DPI。例如,作為示例客戶端組件的網(wǎng)絡(luò)控制器1 從設(shè)備13a或1 接收數(shù)據(jù)分組DPI。響應(yīng)于接收數(shù)據(jù)分組DPI,客戶端組件向 BMU 40傳輸緩存分配請(qǐng)求。在另一實(shí)施方式中,代替用于接收和/或處理緩存分配請(qǐng)求的 BMU 40,軟件(例如與處理核20a和/或20b相關(guān)聯(lián)的)接收和/或處理緩存分配請(qǐng)求。
在共同未決申請(qǐng)(MP3598)美國(guó)_(其基于于2010年3月18日提交的美國(guó)臨時(shí)申請(qǐng)
61/615,327和于2010年5月25日提交美國(guó)臨時(shí)申請(qǐng)61/347,947)中描述了根據(jù)一個(gè)實(shí)施方式的BMU 40,將其說(shuō)明書(shū)通過(guò)引用全文合并于此,除了與本說(shuō)明書(shū)不一致的部分(如果有的話)。在一個(gè)實(shí)施方式中,PNC 60從客戶端組件接收數(shù)據(jù)分組DPl (或數(shù)據(jù)分組DPl 的至少一段,例如數(shù)據(jù)分組DPl的報(bào)頭段)(盡管為了說(shuō)明的清楚起見(jiàn),圖1沒(méi)有示出從客戶端組件到PNC 60的數(shù)據(jù)分組DPl流)。在方法200的206處,PNC 60解析并分類數(shù)據(jù)分組DPl以生產(chǎn)數(shù)據(jù)分組DPl的分類信息。在方法的208處,響應(yīng)于BMU 40從客戶端組件接收緩存分配請(qǐng)求,BMU 40向客戶端組件分配緩存位置以緩存(例如,存儲(chǔ))數(shù)據(jù)分組DPI。例如,響應(yīng)于第一客戶端組件 (例如,網(wǎng)絡(luò)控制器12a)接收第一數(shù)據(jù)分組,BMU 40向第一客戶端組件分配緩存位置50_a 以緩存第一數(shù)據(jù)分組。在另一示例中,響應(yīng)于第二客戶端組件(例如,處理核20a)接收第二數(shù)據(jù)分組,BMU 40向第二客戶端組件分配緩存位置50_b以緩存第二數(shù)據(jù)分組。在各種其他實(shí)施方式中,合適的軟件(例如,代替BMU 40)例如通過(guò)向數(shù)據(jù)分組的描述符添加所分配緩存的物理地址,來(lái)向客戶端組件分配緩存位置以緩存數(shù)據(jù)分組DPI。在方法200的212處,描述符生成器模塊62從PNC 60接收數(shù)據(jù)分組DPl的分類信息,并且至少部分地基于該分類信息生成數(shù)據(jù)分組DPl的描述符(例如,將參考圖3在下面更詳細(xì)地描述的描述符300)。在一個(gè)實(shí)施方式中,212處的操作可以與208處的操作同時(shí)或在其之前執(zhí)行(即,描述符300可以與對(duì)客戶端組件的緩存位置的分配一起生成或在其之前生成)。在另一實(shí)施方式中,并且盡管在圖1中未示出,描述符生成器模塊62可以集成在PNC 60中,使得PNC 60生成描述符。在又一實(shí)施方式中,并且盡管在圖1中未示出, PNC 60向客戶端設(shè)備提供分類信息,該客戶端設(shè)備生成描述符(即,客戶端組件充當(dāng)描述符生成器,并且在SOC 100中未出現(xiàn)獨(dú)立的描述符生成器)。再次參考圖3,至少部分地基于由PNC 60針對(duì)數(shù)據(jù)分組DPl生成的分類信息,在方法200的212處生成描述符300。在一個(gè)實(shí)施方式中,描述符300例如是32字節(jié)長(zhǎng)并且包括多個(gè)字段,包括緩存物理指針308、緩存虛擬指針312、解析和分類(PNC)結(jié)果316、預(yù)提取命令部分318和/或一個(gè)或多個(gè)其他字段(通常示出為其他信息304)。盡管在圖3中以特定的順序示出了描述符300的各種字段(例如,緩存物理指針308位于緩存虛擬指針 312之后等),但是此類順序僅是示例而不是對(duì)本公開(kāi)教導(dǎo)的限制。緩存物理指針308和緩存虛擬指針312分別是已經(jīng)分配用于緩存數(shù)據(jù)分組DP 1 的存儲(chǔ)器50中的緩存位置(例如,緩存位置50_a)的物理地址指針和虛擬地址指針。PNC結(jié)果316包括由PNC 60至少部分地基于解析和/或分類數(shù)據(jù)分組DPl生成的解析和/或分類信息。在一個(gè)實(shí)施方式中,預(yù)提取命令318還包括各種字段,例如,number_0f_cache_line_ A(高速緩存線的數(shù)量A) 320、address_offset (地址偏移)3 以及number_of_cache_ 1 ine_B (高速緩存線的數(shù)量B) 328,這將在下面更詳細(xì)地討論。再次參考圖2,在一個(gè)實(shí)施方式中,在方法200的216處,一旦將緩存位置分配給客戶端組件,客戶端組件就將數(shù)據(jù)分組DPl寫(xiě)入(例如,通過(guò)存儲(chǔ)器總線36和存儲(chǔ)器控制器 44寫(xiě)入)分配的緩存位置。另外,在216處,向描述符隊(duì)列寫(xiě)入(例如,由描述符生成器模塊6 數(shù)據(jù)分組的描述符300。在一個(gè)實(shí)施方式中,描述符隊(duì)列由描述符生成器模塊62維護(hù),并且基于分組描述符的預(yù)提取模塊M從描述符生成器模塊62接收描述符。在各種其他實(shí)施方式中(在圖1中未示出),描述符隊(duì)列存儲(chǔ)在任何合適的存儲(chǔ)位置,例如,存儲(chǔ)器 50、高速緩存觀、包括在BMU 40中的內(nèi)部存儲(chǔ)器(在圖1中未示出)和/或其他合適的位置,基于分組描述符的預(yù)提取模塊M從該位置接收描述符。在方法200的220處,基于分組描述符的預(yù)提取模塊M從描述符隊(duì)列預(yù)提取數(shù)據(jù)分組DP 1的描述符300。在處理核之一(例如,處理核20a)正在處理另一數(shù)據(jù)分組時(shí),基于分組描述符的預(yù)提取模塊M預(yù)提取數(shù)據(jù)分組DPl的描述符300。在示例中,數(shù)據(jù)分組DPl 是第二數(shù)據(jù)分組DPl,其中第一數(shù)據(jù)分組DPO和第二數(shù)據(jù)分組DPl與由處理核20a處理的第一業(yè)務(wù)流相關(guān)聯(lián)。在一個(gè)實(shí)施方式中,在處理核20a處理第一數(shù)據(jù)分組DPO時(shí),基于分組描述符的預(yù)提取模塊M預(yù)提取第二數(shù)據(jù)分組DPl的描述符300。對(duì)第二數(shù)據(jù)分組DPl的描述符300的此類預(yù)提取通過(guò)以下內(nèi)容執(zhí)行,在完成對(duì)第一數(shù)據(jù)分組DPO的處理之后,預(yù)期處理核20a將有可能最希望處理第二數(shù)據(jù)分組DPI。在另一實(shí)施方式中,220處的預(yù)提取操作可以基于任何其他合適的標(biāo)準(zhǔn)。在一個(gè)實(shí)施方式中,基于分組描述符的預(yù)提取模塊M預(yù)提取描述符300,并且將預(yù)提取的描述符300存儲(chǔ)在高速緩存觀中,盡管在另一實(shí)施方式中,基于分組描述符的預(yù)提取模塊M不存儲(chǔ)預(yù)提取的描述符300 (例如,直接處理描述符300而不存儲(chǔ)描述符300)。在方法200的220處,基于分組描述符的預(yù)提取模塊M還處理預(yù)提取的描述符 300。例如,基于分組描述符的預(yù)提取模塊M從描述符300中在其他字段上讀取緩存物理指針308和預(yù)提取命令318。
在方法200的2M處,基于分組描述符的預(yù)提取模塊M至少部分地基于處理描述符300,將數(shù)據(jù)分組DP 1的相關(guān)段(例如,在處理核處理數(shù)據(jù)分組時(shí)相關(guān)的數(shù)據(jù)分組的段) 從存儲(chǔ)器50預(yù)提取到高速緩存觀。例如,描述符300的緩存物理指針308是為緩存數(shù)據(jù)分組DPl分配的(例如,在方法200的208處分配的)、存儲(chǔ)器50中的緩存位置(例如,緩存位置50_a)的物理地址指針。在一個(gè)實(shí)施方式中,描述符300的預(yù)提取命令318包括數(shù)據(jù)分組DPl的相關(guān)段的指示(例如,代替整個(gè)數(shù)據(jù)分組DPI),該相關(guān)段將由基于分組描述符的預(yù)提取模塊M預(yù)提取(例如,2M處的預(yù)提取)到高速緩存。在220處處理描述符300時(shí), 基于分組描述符的預(yù)提取模塊M從描述符300讀取緩存物理指針308和預(yù)提取命令318。 隨后,在2M處,基于緩存物理指針308和預(yù)提取命令318執(zhí)行對(duì)數(shù)據(jù)分組DPl的相關(guān)的預(yù)提取操作。例如,處理核20a僅處理與網(wǎng)絡(luò)路由應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)分組的報(bào)頭段(并且隨后, 如果需要?jiǎng)t基于處理報(bào)頭段來(lái)處理整個(gè)數(shù)據(jù)分組)。另一方面,處理核20a處理與安全相關(guān)應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)分組的報(bào)頭段和凈荷段兩者。在一個(gè)實(shí)施方式中,在對(duì)數(shù)據(jù)分組DPl分類時(shí),PNC 60知曉與數(shù)據(jù)分組DPl相關(guān)聯(lián)的應(yīng)用類型(例如,網(wǎng)絡(luò)路由應(yīng)用、安全相關(guān)應(yīng)用等)。因而,描述符300(例如,預(yù)提取命令318)指示將在方法200的2M處由基于分組描述符的預(yù)提取模塊M預(yù)提取的數(shù)據(jù)分組DPl的相關(guān)段。例如,如果數(shù)據(jù)分組DPl與網(wǎng)絡(luò)路由應(yīng)用相關(guān)聯(lián),則配置描述符300 (例如,描述符300的預(yù)提取命令318)使得基于分組描述符的預(yù)提取模塊M僅預(yù)提取數(shù)據(jù)分組的報(bào)頭段(而不是凈荷段)。另一方面,如果數(shù)據(jù)分組DPl與安全相關(guān)應(yīng)用相關(guān)聯(lián),則配置描述符300(例如,描述符300的預(yù)提取命令318)使得基于分組描述符的預(yù)提取模塊M預(yù)提取數(shù)據(jù)分組DPl的報(bào)頭段和凈荷段兩者。在另一實(shí)施方式中,在2M處預(yù)提取的數(shù)據(jù)分組DPl的段是至少部分地基于與數(shù)據(jù)分組DPl相關(guān)聯(lián)的優(yōu)先級(jí)。例如,處理核20a僅處理與相對(duì)低優(yōu)先級(jí)應(yīng)用相關(guān)聯(lián)的數(shù)據(jù)分組的報(bào)頭段(而隨后,如果需要?jiǎng)t基于處理報(bào)頭段來(lái)處理整個(gè)數(shù)據(jù)分組)。另一方面,處理核20a處理與相對(duì)高優(yōu)先級(jí)(例如,時(shí)間敏感應(yīng)用,例如與因特網(wǎng)協(xié)議語(yǔ)音(VOIP)應(yīng)用相關(guān)聯(lián)的分組)相關(guān)聯(lián)的數(shù)據(jù)分組的報(bào)頭段和凈荷段兩者。因而對(duì)于相對(duì)低優(yōu)先級(jí)的數(shù)據(jù)分組而言,配置數(shù)據(jù)分組DPl的描述符300使得在2M處僅預(yù)提取報(bào)頭段。另一方面,如果數(shù)據(jù)分組DPl與相對(duì)高優(yōu)先級(jí)的應(yīng)用相關(guān)聯(lián),則配置描述符300(例如,描述符300的預(yù)提取命令318)使得在2M處預(yù)提取報(bào)頭段和凈荷段兩者。在又一其他示例中,基于分組描述符的預(yù)提取模塊M至少部分地基于任何其他合適的標(biāo)準(zhǔn)(例如,PNC 60輸出的任何其他配置信息),來(lái)預(yù)提取數(shù)據(jù)分組300的相關(guān)段。再次參考圖3,在一個(gè)實(shí)施方式中,描述符300的緩存物理指針308是為緩存數(shù)據(jù)分組DPl而分配的緩存位置的開(kāi)始地址(在此稱作緩存地址BPP)。在一個(gè)實(shí)施方式中,包括在預(yù)提取命令318中的number_0f_cache_line_A 320指示將從緩存位置預(yù)提取的(例如,在方法200的2M處預(yù)提取的)連續(xù)高速緩存線的數(shù)量(在此稱作CL_A),該緩存器位置從緩存物理指針308中指示的開(kāi)始地址開(kāi)始。address_offset 3 指示緩存位置中的偏移(在此稱作ADDR_0FF),在預(yù)提取數(shù)據(jù)分組DPl的段時(shí)將跳過(guò)該偏移。number_of_cache_ line_B 3 指示將從緩存地址預(yù)提取的(例如,在方法200的2M處預(yù)提取的)的連續(xù)高速緩存線的數(shù)量(在此稱作CL_B),該緩存地址開(kāi)始于緩存地址BPP+ADDR_0FF。在2 處預(yù)提取的數(shù)據(jù)分組DPl的高速緩存線的總數(shù)量(CL_A+CL_B),其中從開(kāi)始于BPP的緩存地址提取CL_A個(gè)線,并且其中從開(kāi)始于(BPP+ADDR_0FF)的緩存地址提取CL_B個(gè)線。在簡(jiǎn)單示例中,如果描述符300的緩存物理指針308是120( S卩,BPP = 120),則 number_of_cache_line_A 320 是 2(艮口, CL_A = 2), address_offset 324 是 8(艮口,ADDR_ OFF = 8),并且 number_of_cache_l ine_B 328 是 3 (即,CL_B = 3),那么在方法 200 的 224 處,基于分組描述符的預(yù)提取模塊M將第120、121、1觀、1四和130高速緩存線從存儲(chǔ)器 50預(yù)提取到高速緩存28。在另一示例中,描述符300包括不止一個(gè)address_0ffset (例如,address_offset_l、address_offset_2,以此類推),具有相應(yīng)的不止一個(gè) number_of_ cache_line (例如,number_of_cache_line_l、number_of_cache_l ine_2,以此類推)。再次參考圖2,在方法200的2 處,處理核(處理核20a)訪問(wèn)來(lái)自于高速緩存 28的數(shù)據(jù)分組DPl的經(jīng)預(yù)提取的段,并且處理數(shù)據(jù)分組DPl的經(jīng)預(yù)提取的該段。圖4更詳細(xì)地示意性示出了根據(jù)本公開(kāi)實(shí)施方式的、包括圖1的基于分組描述符的預(yù)提取模塊M的處理核復(fù)合體20?;诜纸M描述符的預(yù)提取模塊M包括可操作地耦合至處理核20a和/或20b的注冊(cè)文件Ma。在一個(gè)實(shí)施方式中,注冊(cè)文件2 從處理核接收關(guān)于該處理核當(dāng)前正在處理的數(shù)據(jù)分組的信息。基于該信息,基于分組描述符的預(yù)提取模塊M預(yù)提取一個(gè)或多個(gè)數(shù)據(jù)分組的描述符和/或一個(gè)或多個(gè)數(shù)據(jù)分組的段。在圖4中所示的實(shí)施方式中,基于分組描述符的預(yù)提取模塊M包括四個(gè)通道通道0、通道1、通道2以及通道3,但是在另一實(shí)施方式中,基于分組描述符的預(yù)提取模塊M 可以包括任何其他合適數(shù)量的通道。在一個(gè)實(shí)施方式中,通道例如與相應(yīng)業(yè)務(wù)流、相應(yīng)業(yè)務(wù)隊(duì)列、相應(yīng)處理核等相關(guān)聯(lián)。在各種其他實(shí)施方式中,可以將任何其他合適的標(biāo)準(zhǔn)用于分配預(yù)提取引擎M的通道。在示例中,處理核20a被配置用于處理與第一業(yè)務(wù)流和第二業(yè)務(wù)流相關(guān)聯(lián)的數(shù)據(jù)分組,并且處理核20b被配置用于處理與第三業(yè)務(wù)流和第四業(yè)務(wù)流相關(guān)聯(lián)的數(shù)據(jù)分組。在一個(gè)實(shí)施方式中,第一業(yè)務(wù)流例如被配置用于處理從網(wǎng)絡(luò)控制器12b接收的、網(wǎng)絡(luò)路由相關(guān)的數(shù)據(jù)分組。預(yù)提取引擎M的通道0被配置用于例如處理與處理核20a的第一業(yè)務(wù)流相關(guān)聯(lián)的數(shù)據(jù)分組。類似地,預(yù)提取引擎M的通道1可以被配置用于例如處理與處理核20a 的第二業(yè)務(wù)流相關(guān)聯(lián)的數(shù)據(jù)分組,以此類推。在各種其他實(shí)施方式中,例如,通道(例如,通道0)處理不止一個(gè)業(yè)務(wù)流(例如,處理第一業(yè)務(wù)流和第二業(yè)務(wù)流兩者)。在一個(gè)實(shí)施方式中,在第一描述符隊(duì)列中對(duì)與第一業(yè)務(wù)流的數(shù)據(jù)分組相關(guān)聯(lián)的描述符進(jìn)行連續(xù)排隊(duì)(例如,基于先入先出基礎(chǔ))。預(yù)提取引擎M的通道0從第一描述符隊(duì)列中連續(xù)地預(yù)提取描述符,并且基于預(yù)提取相應(yīng)描述符來(lái)預(yù)提取相關(guān)聯(lián)的數(shù)據(jù)分組(例如,數(shù)據(jù)分組的段)。類似地,通道1從第二描述符隊(duì)列預(yù)提取數(shù)據(jù)分組的描述符,其中第二描述符隊(duì)列與第二業(yè)務(wù)流的數(shù)據(jù)分組相關(guān)聯(lián)。在一個(gè)實(shí)施方式中,基于分組描述符的預(yù)提取模塊M的各種通道并行地操作,即同時(shí)地操作。例如,雖然通道0預(yù)提取與第一業(yè)務(wù)流相關(guān)聯(lián)的數(shù)據(jù)分組的描述符和/或段, 但是通道1預(yù)提取與第二業(yè)務(wù)流相關(guān)聯(lián)的數(shù)據(jù)分組的描述符和/或段。盡管圖1示出了 PNC 60,但是在一個(gè)實(shí)施方式中,PNC 60不包括在SOC 100中。在此類備選實(shí)施方式中,由相關(guān)聯(lián)的客戶端組件(例如,從其接收數(shù)據(jù)分組的客戶端組件)和 /或由處理核20a和20b之一生成描述符。例如,在缺少PNC 60時(shí),處理核20a解析并分類數(shù)據(jù)分組、生成相關(guān)聯(lián)的描述符并將描述符存儲(chǔ)在描述符隊(duì)列中。根據(jù)基于分組描述符的預(yù)提取模塊M預(yù)提取數(shù)據(jù)分組的段或整個(gè)數(shù)據(jù)分組,基于分組描述符的預(yù)提取模塊M預(yù)提取并處理生成的描述符。在數(shù)據(jù)分組的描述符中包括預(yù)提取命令并且在高速緩存觀中預(yù)提取數(shù)據(jù)分組的段(例如,代替預(yù)提取整個(gè)數(shù)據(jù)分組)具有若干優(yōu)勢(shì)。例如,在高速緩存觀中預(yù)提取在處理核(例如,處理核20a和/或20b)處理數(shù)據(jù)分組時(shí)訪問(wèn)的數(shù)據(jù)分組的段。因此,該數(shù)據(jù)分組的段可容易地可用于高速緩存觀中的處理核,而不論處理核何時(shí)希望訪問(wèn)和/或處理該數(shù)據(jù)分組的段,從而降低了與讀取數(shù)據(jù)分組相關(guān)聯(lián)的延遲。而且,由于僅有數(shù)據(jù)分組的段 (例如,代替整個(gè)數(shù)據(jù)分組)存儲(chǔ)在高速緩存觀中,所以高速緩存觀對(duì)于數(shù)據(jù)而言不會(huì)過(guò)載(例如,無(wú)需頻繁覆寫(xiě)高速緩存觀)。這還導(dǎo)致大小較小的高速緩存,和/或減少了在高速緩存觀中寫(xiě)入數(shù)據(jù)分組時(shí)丟失數(shù)據(jù)分組的機(jī)會(huì)。此外,預(yù)提取數(shù)據(jù)的定時(shí)由處理核復(fù)合體20觸發(fā)(指示預(yù)提取通道來(lái)預(yù)提取接著的幾個(gè)描述符),因此對(duì)數(shù)據(jù)的預(yù)提取相鄰于處理核復(fù)合體20處理數(shù)據(jù)的定時(shí)。此外,在描述的實(shí)施方式中,對(duì)描述符的生成和預(yù)提取以及對(duì)相關(guān)聯(lián)數(shù)據(jù)分組 (或數(shù)據(jù)分組的部分)的預(yù)提取需要對(duì)處理核的最小涉及。由此,在一個(gè)實(shí)施方式中,基于分組描述符的預(yù)提取模塊M緩解了處理核生成用于提取(或預(yù)提取)數(shù)據(jù)分組的指令,從而節(jié)省了處理核的處理功率。圖5示出了根據(jù)本公開(kāi)實(shí)施方式的、用于操作圖1的系統(tǒng)10的示例方法500。在方法500的504處,客戶端組件接收數(shù)據(jù)分組并且將該數(shù)據(jù)分組存儲(chǔ)在存儲(chǔ)器(例如,存儲(chǔ)器50)中。如上所述,PNC60還接收例如數(shù)據(jù)分組的段。在506處,PNC 60生成數(shù)據(jù)分組的描述符,該描述符包括用于從存儲(chǔ)器提取數(shù)據(jù)分組的至少一部分的信息。在508處,在處理核(例如,處理核20a)請(qǐng)求數(shù)據(jù)分組的至少一部分來(lái)對(duì)數(shù)據(jù)分組的至少一部分執(zhí)行處理操作之前,基于分組描述符的預(yù)提取模塊M至少部分地基于描述符中的信息,而將數(shù)據(jù)分組的至少一部分提取到高速緩存(例如,高速緩存28)。盡管在此已經(jīng)示出了并描述了具體實(shí)施方式
,但是應(yīng)該注意,在不脫離本公開(kāi)的范圍的情況下,各種備選和/或等同實(shí)現(xiàn)可以替代示出和描述的具體實(shí)施方式
。本公開(kāi)涵蓋完全落入明示或暗示的所附權(quán)利要求書(shū)范圍內(nèi)的所有方法、裝置和制品。本申請(qǐng)旨在涵蓋此處所公開(kāi)實(shí)施方式的任何修改或變形。因此,其表明并且目的在于本公開(kāi)僅受到權(quán)利要求書(shū)和其等同物的限制。
權(quán)利要求
1.一種方法,包括接收數(shù)據(jù)分組,并且將已接收的數(shù)據(jù)分組存儲(chǔ)在存儲(chǔ)器中;生成所述數(shù)據(jù)分組的描述符,所述描述符包括用于從所述存儲(chǔ)器提取所述數(shù)據(jù)分組的至少一部分的信息;以及在處理核請(qǐng)求所述數(shù)據(jù)分組的所述至少一部分來(lái)對(duì)所述數(shù)據(jù)分組的所述至少一部分執(zhí)行處理操作之前,至少部分地基于所述描述符中的信息以將所述數(shù)據(jù)分組的所述至少一部分提取到高速緩存。
2.根據(jù)權(quán)利要求1所述的方法,其中生成所述描述符在與所述處理核分離的分組處理模塊中執(zhí)行。
3.根據(jù)權(quán)利要求1所述的方法,還包括處理所述數(shù)據(jù)分組的所述描述符以確定將被提取的所述數(shù)據(jù)分組的所述至少一部分。
4.根據(jù)權(quán)利要求1所述的方法,還包括處理所述數(shù)據(jù)分組的所述描述符以確定將從中提取所述數(shù)據(jù)分組的所述至少一部分的存儲(chǔ)器位置。
5.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)分組是第一數(shù)據(jù)分組,其中所述第一數(shù)據(jù)分組與第一業(yè)務(wù)流相關(guān)聯(lián),并且其中所述提取所述第一數(shù)據(jù)分組的段還包括在處理與所述第一業(yè)務(wù)流相關(guān)聯(lián)的第二數(shù)據(jù)分組時(shí),至少部分地基于與相同業(yè)務(wù)流相關(guān)聯(lián)的所述第一數(shù)據(jù)分組和所述第二數(shù)據(jù)分組,來(lái)將所述第一數(shù)據(jù)分組的至少一部分從所述存儲(chǔ)器預(yù)提取到所述高速緩存。
6.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)分組的所述至少一部分包括所述數(shù)據(jù)分組的第一段,其中所述數(shù)據(jù)分組包括所述第一段和第二段,并且其中所述方法還包括至少部分地基于所述描述符中的信息,在提取所述數(shù)據(jù)分組的所述第一段時(shí)制止將所述數(shù)據(jù)分組的所述第二段提取到所述高速緩存。
7.根據(jù)權(quán)利要求1所述的方法,其中生成所述描述符還包括確定所述數(shù)據(jù)分組與路由應(yīng)用相關(guān)聯(lián);以及基于確定所述數(shù)據(jù)分組與所述路由應(yīng)用相關(guān)聯(lián),生成所述描述符,使得所述描述符包括用于提取所述數(shù)據(jù)分組的報(bào)頭段的信息;其中所述提取所述數(shù)據(jù)分組的所述至少一部分還包括,基于所述描述符提取所述數(shù)據(jù)分組的所述報(bào)頭段。
8.根據(jù)權(quán)利要求1所述的方法,其中生成所述描述符還包括確定所述數(shù)據(jù)分組與安全應(yīng)用相關(guān)聯(lián);以及基于確定所述數(shù)據(jù)分組與所述安全應(yīng)用相關(guān)聯(lián),生成所述描述符,使得所述描述符包括用于提取所述數(shù)據(jù)分組的報(bào)頭段和凈荷段的信息;其中所述提取所述數(shù)據(jù)分組的所述至少一部分還包括,基于所述描述符提取所述數(shù)據(jù)分組的所述報(bào)頭段和所述凈荷段。
9.根據(jù)權(quán)利要求1所述的方法,其中所述描述符是第一描述符,所述數(shù)據(jù)分組是第一數(shù)據(jù)分組,并且其中所述提取第一數(shù)據(jù)分組的至少一部分還包括生成第二數(shù)據(jù)分組的第二描述符,所述第二數(shù)據(jù)分組被接收并且被存儲(chǔ)在所述存儲(chǔ)器中;以及至少部分地基于作為描述符隊(duì)列中兩個(gè)連續(xù)描述符的所述第二描述符和所述第一描述符,在提取所述第二數(shù)據(jù)分組的至少一部分之后提取所述第一數(shù)據(jù)分組的所述至少一部分。
10.根據(jù)權(quán)利要求1所述的方法,還包括由所述處理核訪問(wèn)來(lái)自于所述高速緩存的所述數(shù)據(jù)分組的所述至少一部分;以及由所述處理核處理已訪問(wèn)的所述數(shù)據(jù)分組的至少一部分。
11.一種片上系統(tǒng)(SOC),包括 處理核;高速緩存;分組處理模塊,被配置用于生成數(shù)據(jù)分組的描述符,所述描述符包括用于從存儲(chǔ)器提取所述數(shù)據(jù)分組的段的信息;以及基于分組描述符的預(yù)提取模塊,被配置用于 提取并處理所述數(shù)據(jù)分組的所述描述符,以及至少部分地基于處理所述數(shù)據(jù)分組的所述描述符來(lái)將所述數(shù)據(jù)分組的所述段提取到所述高速緩存。
12.根據(jù)權(quán)利要求11所述的S0C,其中所述處理核被配置用于 從所述高速緩存訪問(wèn)所述數(shù)據(jù)分組的已獲取的段,以及處理所述數(shù)據(jù)分組的已訪問(wèn)的段。
13.根據(jù)權(quán)利要求11所述的S0C,其中所述基于分組描述符的預(yù)提取模塊還被配置用于,從所述SOC外部的存儲(chǔ)器提取所述數(shù)據(jù)分組的所述段。
14.根據(jù)權(quán)利要求11所述的S0C,其中所述描述符包括將從中提取所述數(shù)據(jù)分組的存儲(chǔ)器位置的指示,并且還包括將被提取的所述數(shù)據(jù)分組的所述段的指示。
15.根據(jù)權(quán)利要求11所述的S0C,其中 所述數(shù)據(jù)分組是第一數(shù)據(jù)分組;所述第一數(shù)據(jù)分組與第一業(yè)務(wù)流相關(guān)聯(lián);以及所述基于分組描述符的預(yù)提取模塊還被配置用于,在處理與所述第一業(yè)務(wù)流相關(guān)聯(lián)的第二數(shù)據(jù)分組時(shí),至少部分地基于與相同業(yè)務(wù)流相關(guān)聯(lián)的所述第一數(shù)據(jù)分組和所述第二數(shù)據(jù)分組,來(lái)將所述第一數(shù)據(jù)分組的所述段從存儲(chǔ)器預(yù)提取到所述高速緩存。
16.根據(jù)權(quán)利要求11所述的S0C,其中所述分組處理模塊還包括解析和分類引擎,用于接收所述數(shù)據(jù)分組并且生成所述數(shù)據(jù)分組的分類信息;以及描述符生成器模塊,被配置用于至少部分地基于所述分類信息來(lái)生成所述描述符。
17.根據(jù)權(quán)利要求11所述的S0C,其中所述分組處理模塊被配置用于,至少部分地基于應(yīng)用的類型或與所述數(shù)據(jù)分組相關(guān)聯(lián)優(yōu)先級(jí)水平來(lái)生成所述描述符。
18.一種方法,包括 接收數(shù)據(jù)分組;解析并且分類所述數(shù)據(jù)分組以生成所述數(shù)據(jù)分組的分類信息; 至少部分地基于所述分類信息生成所述數(shù)據(jù)分組的描述符,所述描述符包括將被預(yù)提取的所述數(shù)據(jù)分組的段的指示;以及在描述符隊(duì)列中對(duì)所述描述符排隊(duì)。
19.根據(jù)權(quán)利要求18所述的方法,還包括 預(yù)提取并且處理所述描述符;以及至少部分地基于對(duì)所述描述符的所述處理來(lái)預(yù)提取所述數(shù)據(jù)分組的所述段。
20.根據(jù)權(quán)利要求18所述的方法,其中所述生成所述描述符還包括生成所述描述符使得所述描述符包括存儲(chǔ)所述數(shù)據(jù)分組的存儲(chǔ)器位置的地址。
全文摘要
本發(fā)明涉及數(shù)據(jù)分組的預(yù)提取。本發(fā)明的某些實(shí)施方式提供了一種方法,該方法包括接收數(shù)據(jù)分組,并且將已接收的數(shù)據(jù)分組存儲(chǔ)在存儲(chǔ)器中;生成數(shù)據(jù)分組的描述符,該描述符包括用于從存儲(chǔ)器提取分組的至少一部分的信息;以及在處理核請(qǐng)求數(shù)據(jù)分組的至少一部分來(lái)對(duì)數(shù)據(jù)分組的至少一部分執(zhí)行處理操作之前,至少部分地基于描述符中的信息以將數(shù)據(jù)分組的至少一部分提取到高速緩存。還描述并要求保護(hù)其他實(shí)施方式。
文檔編號(hào)H04L12/56GK102195874SQ20111005182
公開(kāi)日2011年9月21日 申請(qǐng)日期2011年3月2日 優(yōu)先權(quán)日2010年3月2日
發(fā)明者A·哈布沙, A·派斯, R·克霍里 申請(qǐng)人:馬維爾以色列(M.I.S.L.)有限公司