本發(fā)明專利技術(shù)的名稱為“網(wǎng)絡(luò)分組的SIMD處理”。執(zhí)行程序的單指令/多數(shù)據(jù)(SIMD)指令以處理數(shù)據(jù)向量,其中分組向量的每個元素對應(yīng)于不同的已接收分組。
【技術(shù)實現(xiàn)步驟摘要】
網(wǎng)絡(luò)分組的SIMD處理
技術(shù)介紹
網(wǎng)絡(luò)使得計算機和其他設(shè)備能夠通信。例如,網(wǎng)絡(luò)可承載代表視頻、音頻、電子郵件等的數(shù)據(jù)。典型地,跨網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)被劃分為較小的被稱為分組的消息。打個比方,分組非常像你丟在信箱中的信封。分組典型地包括“有效載荷”和“報頭”。分組的“有效載荷”類似于信封中的信件。分組的“報頭”非常像寫在信封本身上的信息。報頭可包括幫助網(wǎng)絡(luò)設(shè)備適當?shù)靥幚碓摲纸M的信息。例如,該報頭可包括識別該分組的目的地的地址。在到達其目的地之前,給定的分組可以“跳”過很多不同的中間網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備(例如“路由器”、“網(wǎng)橋”和/或“交換機”)。這些中間設(shè)備通常執(zhí)行各種分組處理操作。例如,中間設(shè)備通常執(zhí)行分組分類,以確定如何向其目的地進一步地轉(zhuǎn)發(fā)分組或確定要提供的服務(wù)的質(zhì)量。處理分組生成了各種計算負擔。例如,在中間節(jié)點上,需要為每個分組制定轉(zhuǎn)發(fā)或過濾決策。大量的網(wǎng)絡(luò)業(yè)務(wù)使得對于分組的快速處理極其重要。同樣地,分組處理在分組的目的地處消耗處理資源,其中分組的有效載荷被“卸載”并被重新組裝成用于應(yīng)用的數(shù)據(jù)流。隨著速度增加,處理網(wǎng)絡(luò)業(yè)務(wù)的負擔可搶奪處理器資源的應(yīng)用。附圖說明圖1是示出了使用SIMD(單指令/多數(shù)據(jù))指令處理分組的圖示。圖2是示出了一組分組向量的圖示。圖3是示出了由變換后的分組數(shù)據(jù)形成的向量的圖示。圖4是示出了使用SIMD指令的傳輸操作的圖示。具體實施方式很多處理器提供單指令/多數(shù)據(jù)(SIMD)指令。例如,英特爾的IA(英特爾架構(gòu))處理器提供了被稱為“單指令多數(shù)據(jù)流擴展”(SSE)的指令集。SIMD指令在元素向量中的每個元素上同時執(zhí)行相同操作。例如,單個SIMDADD指令可對向量中的一組不同數(shù)字的每一個加上某個數(shù)字。SIMD指令典型地包括基本布爾、算術(shù)和比較操作。由于絕大多數(shù)分組經(jīng)歷相同的操作,SIMD指令可被用于加速網(wǎng)絡(luò)分組的處理。例如,在終端節(jié)點處,每個封裝著傳輸控制協(xié)議(TCP)片段的網(wǎng)際協(xié)議(IP)數(shù)據(jù)報都經(jīng)歷驗證(例如,校驗和的驗證)和重新組裝以將有效載荷重新排序為原始傳輸?shù)臄?shù)據(jù)流。類似地,在跨越網(wǎng)絡(luò)的途中,查找過程可為每個接收到的以太網(wǎng)幀或IP數(shù)據(jù)報確定轉(zhuǎn)發(fā)信息。圖1描述了樣本系統(tǒng),其使用SIMD指令處理多個網(wǎng)絡(luò)分組的向量。通過并行地在每個網(wǎng)絡(luò)分組上操作,當與依次對每個分組進行串行處理相比時,該SIMD指令可提供吞吐量的可觀增加。更詳細地,圖1描繪了一種系統(tǒng),其包括網(wǎng)絡(luò)接口控制器100(NIC),所述網(wǎng)絡(luò)接口控制器100代表主機平臺102接收分組。典型地,NIC100包括接口(例如,xMII[媒體獨立接口或XAUI[附件單元接口]),其連接PHY(例如,無線,光學或有線物理層設(shè)備)至介質(zhì)訪問控制器(MAC)。NIC典型地包括DMA(直接存儲器訪問)引擎以將數(shù)據(jù)傳輸至主機平臺102存儲器/從主機平臺102存儲器傳輸數(shù)據(jù)。NIC可為分立部件,集成在主板上,和/或在也集成了處理器或處理器核的管芯上。此外,某個NIC的功能可被實施為由處理器核執(zhí)行的程序指令。NIC架構(gòu)變化很大,例如,一些特征卸載引擎,可編程處理器,和/或分組處理硬件輔助電路。主機平臺102可包括典型的部件,例如存儲器,芯片組等,不過計算架構(gòu)變化很大。如圖所示,該主機平臺包括邏輯106,以執(zhí)行SIMD處理。例如,該邏輯106可為已編程的CPU(中央處理單元)或核。例如,該SIMD106邏輯可為協(xié)議棧、操作系統(tǒng)或設(shè)備驅(qū)動器的程序指令。在SIMD106處理后,分組數(shù)據(jù)可被應(yīng)用例如通過套接字使用。在示出的例子中,NIC100將接收到的分組布置為向量104a-104d用于SIMD106處理。例如,如圖所示,分組“a”“b”和“c”被插入向量104d中。在一些實施方式中,NIC100可連續(xù)地將分組加入向量,直到該向量滿為止。然而,NIC100還可具有用以選擇性地將分組分配給向量104的邏輯。例如,NIC100可具有用于數(shù)據(jù)路徑和連接管理分組的不同向量,因為此類分組典型地經(jīng)歷不同的操作。同樣地,NIC100可執(zhí)行分類以確保來自于同一流的分組不被放在相同的向量104中。例如,NIC100可確定分組TCP/IP元組(例如,IP源和目的地地址和TCP源和目的地端口)以防止來自于相同連接的TCP/IP分組被分配至相同的向量。這可減少來自于多個對相同流狀態(tài)數(shù)據(jù)(例如,TCP控制塊[TCB])的嘗試更新的競爭問題。在其他環(huán)境下,NIC100可填充向量,其中該向量中的每個分組都來自于相同的流。這種操作通過將流狀態(tài)信息保持在本地存儲器中,可提升一些操作的速度。如圖所示,NIC100將分組向量(例如向量104a)傳輸至主機平臺102用于處理。各種機制可控制該傳輸?shù)拈_始。例如,一旦位于向量隊列頭部的向量已滿,一旦計時器已期滿或通過其他中斷放緩(interruptmoderation)技術(shù),傳輸可發(fā)生。NIC100可通過DMA(直接存儲器尋址)執(zhí)行該傳輸至主機平臺102可訪問存儲器中和/或通過DCA(直接緩存訪問)推送執(zhí)行該傳輸至主機平臺102處理器的緩存中。NIC100然后可產(chǎn)生中斷,該中斷觸發(fā)主機平臺102處理分組。雖然圖1描繪了在NIC100中組裝的向量104a-104d,但是該NIC100可改為通過使用DMA將分組數(shù)據(jù)重新布置在主機平臺102中的鄰接的向量存儲器位置中而初始組裝104a中的向量。SIMD106邏輯可實施多種分組處理操作。例如,這些操作的非完全列舉包括:檢驗IP協(xié)議版本(例如IPv4或IPv6)以選擇要使用的分組處理實施方式;檢驗IP報頭長度以確定被分段的數(shù)據(jù)報的下一報頭的偏移;檢驗服務(wù)的IP類型是否需要特殊處理;檢驗數(shù)據(jù)報的長度是否有效;檢驗分組是否被分段;檢驗已分段的分組的偏移以實現(xiàn)正確組裝;檢驗是否已過存活時間;檢驗校驗和是否有效;檢驗源和目的地地址是否有效;檢驗下一級協(xié)議(例如TCP或UDP);例如使用哈希函數(shù)計算表查找以識別分組目的地從而檢驗該分組是否應(yīng)被本地遞送、被轉(zhuǎn)發(fā)或被丟棄;識別核心或特定處理元素,在其上要遞送用于接收分組的目的地應(yīng)用(例如,接收側(cè)縮放[RSS]);識別外出I/O接口(例如特定NIC),在其上發(fā)送傳輸數(shù)據(jù)緩沖;計算和記錄用于傳輸?shù)男r灪停环峙溆糜谕獬龇纸M的字段,協(xié)議版本,服務(wù)類型,長度,分段,存活時間,協(xié)議,當前時間戳,地址,端口號,以及序列號;檢驗源和目的地端口是否對應(yīng)于開放連接;檢驗序列號是否正確并對應(yīng)于按序數(shù)據(jù),無序數(shù)據(jù)或重復(fù)數(shù)據(jù);更新?lián)砣翱诘拈_始,結(jié)束和大小;基于分組的時間戳更新往返行程時間;確定在其上放置分組數(shù)據(jù)緩沖的傳輸或接收隊列;和/或?qū)⒎纸M數(shù)據(jù)緩沖插入傳輸或接收隊列。雖然上述許多示例與TCP/IP相關(guān),但位于協(xié)議棧較高或較低的不同層的其他協(xié)議可類似地被實施以使用SIMD106邏輯處理分組向量。例如,異步傳輸模式(ATM)單元,以太網(wǎng)幀,ARP(地址解析協(xié)議)消息,和/或用戶數(shù)據(jù)報協(xié)議(UDP)數(shù)據(jù)報(僅提到了幾個例子)可經(jīng)歷SIMD操作。使用不同協(xié)議的分組可被導(dǎo)向至不同向量組(例如,TCP/IP分組分配給一組向量,ATM分配給另一組,以此類推)并可穿過不同代碼路徑。基于分組速率或流數(shù)量,NIC100或主機平臺102軟件可動態(tài)地改變使用的分組和元數(shù)據(jù)向量的大小并可選擇在特定向量大小上操作的SI本文檔來自技高網(wǎng)...

【技術(shù)保護點】
一種處理網(wǎng)絡(luò)分組的系統(tǒng),包括:訪問網(wǎng)絡(luò)分組數(shù)據(jù)的陣列的裝置,單獨的陣列元素包括網(wǎng)絡(luò)分組報頭的字段的嚴格子集,相應(yīng)的陣列元素對應(yīng)于不同的相應(yīng)的網(wǎng)絡(luò)分組;以及導(dǎo)致與所述不同的相應(yīng)的網(wǎng)絡(luò)分組對應(yīng)的所述相應(yīng)的陣列元素的單指令、并行處理的裝置。
【技術(shù)特征摘要】
2008.12.30 US 12/3178441.一種處理網(wǎng)絡(luò)分組的系統(tǒng),包括:訪問網(wǎng)絡(luò)分組數(shù)據(jù)的陣列的裝置,單獨的陣列元素包括網(wǎng)絡(luò)分組報頭的字段的嚴格子集,相應(yīng)的陣列元素對應(yīng)于不同的相應(yīng)的網(wǎng)絡(luò)分組;以及導(dǎo)致與所述不同的相應(yīng)的網(wǎng)絡(luò)分組對應(yīng)的所述相應(yīng)的陣列元素的單指令、并行處理的裝置。2.如權(quán)利要求1所述的系統(tǒng),其中所述相應(yīng)的陣列元素的所述單指令、并行處理包括向前查找。3.如權(quán)利要求1所述的系統(tǒng),其中所述相應(yīng)的陣列元素的所述單指令、并行處理包括基于包括在所述相應(yīng)的網(wǎng)絡(luò)分組報頭的字段的嚴格子集中的數(shù)據(jù)的哈希。4.如權(quán)利要求1所述的系統(tǒng),其中所述網(wǎng)絡(luò)分組報頭包括傳輸控制協(xié)議(TCP)片段報頭。5.如權(quán)利要求1所述的系統(tǒng),其中所述網(wǎng)絡(luò)分組報頭包括網(wǎng)際協(xié)議(IP)數(shù)據(jù)報報頭。6.如權(quán)利要求1所述的系統(tǒng),其中字段的嚴格子集包括來自傳輸控制協(xié)議(TCP)片段報頭的至少一個字段和來自網(wǎng)際協(xié)議(IP)數(shù)據(jù)報報頭的至少一個字段。7.如權(quán)利要求1所述的系統(tǒng),其中網(wǎng)絡(luò)分組數(shù)據(jù)的陣列包括通過網(wǎng)絡(luò)接口控制器的電路布置的數(shù)據(jù),所述網(wǎng)絡(luò)接口控制器至少包括到PHY的接口。8.如權(quán)利要求...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:BE維爾,TT施呂斯勒,
申請(專利權(quán))人:英特爾公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。