文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.01.012
中文引用格式: 李龍飛,史陽春,,王劍峰,,等. 一種改進(jìn)的高性能處理器網(wǎng)絡(luò)子系統(tǒng)架構(gòu)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,,43(1):46-49.
英文引用格式: Li Longfei,,Shi Yangchun,Wang Jianfeng,et al. An improved high performance architecture of processor network subsystem[J].Application of Electronic Technique,,2017,,43(1):46-49.
0 引言
高速增長的網(wǎng)絡(luò)帶寬需要處理器具有足夠的運(yùn)算能力,,同時(shí)也要求NIC(Network Interface Card)有高效的數(shù)據(jù)傳輸能力,這給處理器網(wǎng)絡(luò)子系統(tǒng)設(shè)計(jì)帶來了很多新的困難和挑戰(zhàn),。實(shí)驗(yàn)數(shù)據(jù)表明,,在萬兆以太網(wǎng)(10GbE)環(huán)境下,網(wǎng)絡(luò)數(shù)據(jù)的接收可以耗盡Intel至強(qiáng)四核處理器中2個(gè)核的處理能力[1],。這種網(wǎng)絡(luò)速率與處理速率不平衡的情況影響了系統(tǒng)正常工作的性能,,同時(shí)也直接增大了NIC的設(shè)計(jì)復(fù)雜度。
為了解決上述問題,,國內(nèi)外研究學(xué)者近年來已從體系結(jié)構(gòu),、協(xié)議棧、系統(tǒng)軟件等方面進(jìn)行了諸多研究,。文獻(xiàn)[2-4]提出了TCP/IP Offload(TCP/IP卸載)技術(shù),;文獻(xiàn)[5]提出遠(yuǎn)程直接數(shù)據(jù)存取(Remote Direct Memory Access,,RMDA)技術(shù),;文獻(xiàn)[6]從減小處理器與NIC交互次數(shù)切入,提出中斷聚合、幀聚合以及大段數(shù)據(jù)分割技術(shù),。但這些方案無一例外都只關(guān)注于網(wǎng)絡(luò)處理中的局部過程,,并不能給系統(tǒng)處理效率帶來顯著的提升,且不具有通用性,。
本文在分析了傳統(tǒng)處理器網(wǎng)絡(luò)子系統(tǒng)架構(gòu),、工作原理和缺陷后,提出一種基于體系結(jié)構(gòu)改進(jìn)的網(wǎng)絡(luò)子系統(tǒng)設(shè)計(jì)方案,。該方案通過將數(shù)據(jù)幀管理單元從NIC上移到處理器中,,解決了傳統(tǒng)架構(gòu)中NIC需要先獲取幀描述信息才能傳輸數(shù)據(jù)的問題,從而減小了處理器與NIC的交互壓力,,提高了系統(tǒng)網(wǎng)絡(luò)處理效率和吞吐率,。
1 傳統(tǒng)網(wǎng)絡(luò)子系統(tǒng)架構(gòu)
1.1 網(wǎng)絡(luò)處理流程
網(wǎng)絡(luò)數(shù)據(jù)處理是一種I/O敏感的過程,而且還涉及到諸多硬件(例如NIC,,PCI-E等)和軟件(例如TCP/IP協(xié)議,,驅(qū)動(dòng)程序)。一個(gè)數(shù)據(jù)幀的接收,,開始于NIC和驅(qū)動(dòng)程序的交互,。緩存描述符(Buffer Descriptor,BD)作為NIC和驅(qū)動(dòng)程序之間溝通的橋梁,,其包含的信息會(huì)指明NIC中接收到的數(shù)據(jù)幀在內(nèi)存中的存儲(chǔ)地址,,即BD中包含了一個(gè)有效的套接字緩沖區(qū)(Linux中稱為SKB Buffer)。根據(jù)以太網(wǎng)幀的最大傳輸單元,,SKB Buffer的大小為1 518 B,。BD在主機(jī)的內(nèi)核空間中形成一個(gè)BD環(huán),配合產(chǎn)生指針和消耗指針動(dòng)態(tài)地維護(hù)著BD與SKB Buffer之間的更新與同步,。
典型的網(wǎng)絡(luò)處理接收流程如圖1所示,。在接收數(shù)據(jù)之前,NIC首先需要通過PCI-E總線獲取BD,,并保存在NIC本地(步驟1),。當(dāng)從網(wǎng)絡(luò)中接收到數(shù)據(jù)幀后(步驟2),NIC通過PCI-E中的DMA將數(shù)據(jù)幀傳輸?shù)紹D指定的SKB Buffer中(步驟3),。一旦數(shù)據(jù)幀放入緩存,NIC會(huì)更新該BD信息,,增加例如幀長,、VLAN等信息,并將更新后的BD傳輸?shù)椒祷谺D環(huán)中(步驟4),。接著,,NIC會(huì)通過PCI-E向CPU產(chǎn)生MSI中斷(步驟5)。CPU收到中斷請(qǐng)求后會(huì)去返回BD環(huán)中讀取BD,從而獲取到數(shù)據(jù)幀的地址和長度,,并將數(shù)據(jù)幀映射到SKB數(shù)據(jù)結(jié)構(gòu)中(步驟6),。當(dāng)驅(qū)動(dòng)程序?qū)KB Buffer傳遞到協(xié)議棧后,驅(qū)動(dòng)程序會(huì)初始化BD信息并將釋放SKB Buffer,,以便后續(xù)收到的數(shù)據(jù)幀使用(步驟7),。協(xié)議棧處理完成后,數(shù)據(jù)幀會(huì)被傳輸?shù)阶罱K的應(yīng)用程序,,即到達(dá)用戶空間,。至此,一次數(shù)據(jù)幀的接收過程結(jié)束,。
1.2 處理開銷分析
在高速網(wǎng)絡(luò)環(huán)境下,,NIC面臨諸多挑戰(zhàn)。首先,,在有效的數(shù)據(jù)傳輸之前,,NIC需要通過PCI-E訪問內(nèi)核空間來獲取BD,從本質(zhì)上講其不屬于網(wǎng)絡(luò)數(shù)據(jù)傳輸,,顯然會(huì)增加不必要的開銷,。研究表明,一次PCI-E的往返傳輸大約需要2 200 ns,,這主要是由于復(fù)雜的PCI-E傳輸協(xié)議以及DMA請(qǐng)求競(jìng)爭造成的[7],。
除此之外,在典型的網(wǎng)絡(luò)處理流程中,,數(shù)據(jù)復(fù)制以及SKB Buffer釋放也是目前主要的網(wǎng)絡(luò)處理開銷,。數(shù)據(jù)復(fù)制主要是指網(wǎng)絡(luò)數(shù)據(jù)在傳輸過程中的三次復(fù)制,分別為從網(wǎng)絡(luò)中復(fù)制到NIC緩存,,從NIC緩存復(fù)制到系統(tǒng)內(nèi)核空間,,從系統(tǒng)內(nèi)核空間復(fù)制到用戶空間。這種頻繁的復(fù)制會(huì)給CPU造成額外的負(fù)擔(dān),,從而影響了其工作效率,,增加了應(yīng)用計(jì)算的平均等待時(shí)間。當(dāng)數(shù)據(jù)被復(fù)制到應(yīng)用程序緩沖區(qū)后,,SKB Buffer需要進(jìn)行釋放,,而cache未命中是造成Buffer釋放開銷大的首要原因。雖然增大cache可以減小cache未命中情況的發(fā)生,,但卻不能解決NIC與驅(qū)動(dòng)交互以及數(shù)據(jù)復(fù)制等問題,,因此在實(shí)際應(yīng)用中意義不大。
2 網(wǎng)絡(luò)子系統(tǒng)設(shè)計(jì)
2.1 總體架構(gòu)
本質(zhì)上講,,本文所提出的網(wǎng)絡(luò)子系統(tǒng)架構(gòu)是將傳統(tǒng)方案中的整套BD管理單元從NIC上移到處理器中,,也就是說,,在處理器端口與cache之間集成一個(gè)具有BD管理功能的單元,稱之為BD引擎(BD Engine,,BDE),,如圖2所示。將BDE集成于處理器內(nèi)部使其具有更強(qiáng)的靈活性,,同時(shí)也可以擴(kuò)展BD中對(duì)數(shù)據(jù)幀的描述信息,。除此之外,由于BDE可以直接訪問cache,,因此不僅可以更快地讀寫B(tài)D以及數(shù)據(jù),,而且進(jìn)一步減小了訪問開銷,減輕了PCI-E壓力,。與存儲(chǔ)控制器類似,,BDE采用I/O Hub來實(shí)現(xiàn)PCI-E與處理器的連接。
當(dāng)BDE接收到一個(gè)數(shù)據(jù)幀時(shí),,其從cache中讀取BD,,接著將數(shù)據(jù)移動(dòng)到對(duì)應(yīng)的cache地址中,并且預(yù)加載可能引起存儲(chǔ)器停頓的數(shù)據(jù),。本文提出的網(wǎng)絡(luò)子系統(tǒng)架構(gòu)采用cache來緩存數(shù)據(jù),,而不再使用NIC中的發(fā)送接收隊(duì)列。當(dāng)前高速NIC廣泛采用接收端調(diào)控(Receive Side Scaling,,RSS)技術(shù)來平衡多核處理器的網(wǎng)絡(luò)負(fù)載,,因此CPU中的每個(gè)核都會(huì)分配指定的一對(duì)接收和發(fā)送隊(duì)列。然而這樣的架構(gòu)會(huì)增加NIC的開銷,,同時(shí)也影響了可測(cè)量性,。改進(jìn)的架構(gòu)保持了對(duì)RSS技術(shù)的兼容性,BDE同時(shí)還實(shí)現(xiàn)了cache內(nèi)的有效負(fù)載移動(dòng),,并且提前清理cache中已經(jīng)被復(fù)制的數(shù)據(jù),。
2.2 BDE設(shè)計(jì)
在傳統(tǒng)的架構(gòu)中,在發(fā)送和接收數(shù)據(jù)之前,,NIC都需要通過PCI-E總線讀寫B(tài)D,,這會(huì)產(chǎn)生很多的延遲,同時(shí)也會(huì)增大DMA壓力,。相對(duì)來講,,由于BDE可以直接訪問cache,交互速度較快,,因此有效解決了上述問題,。更重要的是,這使得BDE可以擴(kuò)展BD信息,。本文對(duì)接收BD信息進(jìn)行擴(kuò)展,,增加了導(dǎo)致存儲(chǔ)器停頓數(shù)據(jù)的信息,即SKB和頁數(shù)據(jù)地址,。在傳統(tǒng)的架構(gòu)中,,BD信息一般為16字節(jié),包括數(shù)據(jù)幀存儲(chǔ)的地址,、長度,、VLAN等信息。本文在此基礎(chǔ)上增加了4字節(jié)的SKB地址和4字節(jié)的頁地址,,同時(shí)根據(jù)緩存行(cache line)的數(shù)目,,在BDE中采用兩個(gè)專用寄存器來存儲(chǔ)SKB和頁長度。在GbE環(huán)境下,,接收環(huán)中通常保存1 024個(gè)BD,,因此在增加了BD信息后,新架構(gòu)下的接收環(huán)只增加了8 KB,。
為了與傳統(tǒng)架構(gòu)對(duì)比,,下面以數(shù)據(jù)接收過程為例對(duì)BDE各功能模塊進(jìn)行介紹,其結(jié)構(gòu)如圖3所示,。當(dāng)NIC收到數(shù)據(jù)幀后,,其不需要獲取BD,而是直接將數(shù)據(jù)幀及相關(guān)信息送入BDE中的接收緩存,。與NIC一樣,,BDE也采用專用的寄存器來存儲(chǔ)BD環(huán)的基地址和環(huán)指針信息。BD獲取單元根據(jù)寄存器中的環(huán)基地址,、指針地址,,鎖定對(duì)應(yīng)的BD地址,然后發(fā)起讀cache請(qǐng)求獲取BD,。在得到了數(shù)據(jù)的存儲(chǔ)地址后,,數(shù)據(jù)寫入單元將會(huì)把數(shù)據(jù)寫入cache中對(duì)應(yīng)的地址。為了加速數(shù)據(jù)寫入操作,,查找加載單元會(huì)對(duì)數(shù)據(jù)幀進(jìn)行查找和預(yù)加載,。通過查找操作可以返回?cái)?shù)據(jù)是否在cache中,當(dāng)查找的數(shù)據(jù)不在cache中時(shí),,查找加載單元會(huì)給硬件邏輯發(fā)起預(yù)獲取指令,。當(dāng)數(shù)據(jù)幀放入cache后,BDE中的BD更新模塊和指針更新模塊會(huì)對(duì)BD狀態(tài)和指針信息進(jìn)行更新,。
因?yàn)閏ache中的數(shù)據(jù)幀在被應(yīng)用程序復(fù)制后實(shí)質(zhì)就無效了,,因此為了更有效地實(shí)現(xiàn)數(shù)據(jù)幀在cache中的移動(dòng),本文擴(kuò)展了cache架構(gòu),,提出了新的cache操作:讀后無效,。在BDE中,,數(shù)據(jù)移動(dòng)模塊會(huì)在原數(shù)據(jù)復(fù)制后使cache行無效來清除數(shù)據(jù)。在數(shù)據(jù)的復(fù)制過程中,,TCP/IP協(xié)議會(huì)通過源地址,、目的地址和長度三個(gè)寄存器對(duì)BDE進(jìn)行控制。在這種情況下,,BDE將連續(xù)的物理地址以cache行間隔分割為一系列塊,。當(dāng)執(zhí)行讀后無效操作時(shí),讀源cache行數(shù)據(jù),,將讀到的數(shù)據(jù)寫入目的cache行,,并使源cache行無效。該操作不僅避免了不必要的臟數(shù)據(jù)寫回,,而且不需要虛擬地址到物理地址的轉(zhuǎn)換,。
改進(jìn)后的架構(gòu)使NIC的設(shè)計(jì)復(fù)雜度顯著降低,NIC不再需要對(duì)BD進(jìn)行管理和更新,,可以直接將MAC接收到的數(shù)據(jù)幀通過PCI-E傳輸至上層,,因此也不必再使用隊(duì)列對(duì)數(shù)據(jù)幀進(jìn)行緩存。這不僅減小了硬件邏輯復(fù)雜度,,也降低了存儲(chǔ)開銷,。
3 實(shí)驗(yàn)評(píng)估
采用全系統(tǒng)模擬器Simics對(duì)本文提出的網(wǎng)絡(luò)子系統(tǒng)架構(gòu)進(jìn)行模擬仿真。Simics是一款高性能的系統(tǒng)模擬器,,它提供了一個(gè)受控制的,、確定性的完全虛擬環(huán)境模擬平臺(tái),可模擬多種CPU,、硬盤,、網(wǎng)卡等[8]。使用器件建模語言對(duì)本文提出的網(wǎng)絡(luò)子系統(tǒng)進(jìn)行描述,,設(shè)計(jì)了一個(gè)帶有中斷聚合功能的萬兆以太網(wǎng)NIC和一個(gè)集成了BDE的處理器,,其具體配置參數(shù)如表1所示。為了進(jìn)行橫向?qū)Ρ?,分別對(duì)傳統(tǒng)網(wǎng)絡(luò)子系統(tǒng)架構(gòu)以及DCA(Direct Cache Access)架構(gòu)進(jìn)行了模擬,。
實(shí)驗(yàn)中三種架構(gòu)均連接一個(gè)帶寬、雙工模式可配置的以太網(wǎng)鏈路,,且指定鏈路中傳輸延時(shí)為1 μs,。采用Iperf作為測(cè)試向量[9],分別在10 M,、100 M,、1 G以及10 G帶寬下對(duì)三種架構(gòu)進(jìn)行實(shí)驗(yàn),重點(diǎn)關(guān)注三種架構(gòu)所能達(dá)到的實(shí)際帶寬和對(duì)應(yīng)的處理器利用率,。規(guī)定實(shí)際帶寬與理論帶寬的比值為帶寬利用率,,其值越接近1則表明實(shí)際網(wǎng)絡(luò)吞吐率越大,。實(shí)驗(yàn)得到的帶寬利用率對(duì)比圖如圖4所示。從圖中可以看出,,在10 M和100 M網(wǎng)絡(luò)環(huán)境下,,三種架構(gòu)均達(dá)到了理論最大帶寬。然而當(dāng)帶寬擴(kuò)大到1 G和10 G后,,傳統(tǒng)架構(gòu)下的實(shí)際網(wǎng)絡(luò)帶寬明顯低于了理論值,帶寬利用率分別為91.3%和80.5%,。對(duì)于DCA架構(gòu)和改進(jìn)后的架構(gòu),,在1G網(wǎng)絡(luò)環(huán)境下兩者基本都達(dá)到理論帶寬值,而在10 G網(wǎng)絡(luò)環(huán)境下,,DCA架構(gòu)的帶寬利用率略高于改進(jìn)后架構(gòu),。
圖5示出了不同網(wǎng)絡(luò)環(huán)境下三種架構(gòu)的處理器利用率。在1 G和10 G帶寬下,,傳統(tǒng)架構(gòu)的CPU利用率大幅度上升,,分別達(dá)到了45.2%和54.1%。對(duì)比圖4和圖5,,對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行發(fā)掘,,可以得到盡管在1 G帶寬下DCA架構(gòu)與改進(jìn)架構(gòu)的帶寬利用率基本相同,但其CPU利用率卻明顯高于改進(jìn)架構(gòu),;在10 G帶寬下,,DCA架構(gòu)的帶寬利用率和CPU利用率較改進(jìn)架構(gòu)均有略微的提高。綜上,,較傳統(tǒng)架構(gòu)和DCA架構(gòu),,改進(jìn)的架構(gòu)在帶寬利用率和CPU利用率上取得了更好的平衡性。
4 結(jié)論
本文立足于高速網(wǎng)絡(luò)環(huán)境下的處理器網(wǎng)絡(luò)子系統(tǒng)架構(gòu)優(yōu)化,,通過分析傳統(tǒng)網(wǎng)絡(luò)子系統(tǒng)架構(gòu)以及網(wǎng)絡(luò)處理流程,,提出一種改進(jìn)的高性能處理器子系統(tǒng)架構(gòu)。該架構(gòu)通過將BD管理單元從NIC上移至處理器,,解決了傳統(tǒng)架構(gòu)中繁瑣的BD管理與更新問題,,減小了處理器與NIC的交互壓力,提高了系統(tǒng)網(wǎng)絡(luò)處理效率和吞吐率,。未來的研究工作可以從以下幾方面展開:結(jié)合具體處理器架構(gòu)對(duì)改進(jìn)的網(wǎng)絡(luò)子系統(tǒng)架構(gòu)進(jìn)行實(shí)現(xiàn),,并開發(fā)配套驅(qū)動(dòng)程序以便在真實(shí)的網(wǎng)絡(luò)環(huán)境中對(duì)該架構(gòu)進(jìn)行驗(yàn)證和性能評(píng)估。
參考文獻(xiàn)
[1] KUMAR A,,HUGGAHALLI R,,MAKINENI S.Characterization of direct cache access on multi-core systems and 10gbe[C]//2009 IEEE 15th International Symposium on High Performance Computer Architecture.IEEE,2009:341-352.
[2] UCHIDA T.Hardware-based TCP processor for gigabit ethernet[J].IEEE Transactions on Nuclear Science,,2008,,55(3):1631-1637.
[3] WU Z Z,,CHEN H C.Design and implementation of TCP/IP offload engine system over gigabit Ethernet[C]//Proceedings of 15th International Conference on Computer Communications and Networks.IEEE,2006:245-250.
[4] 趙喜全,,劉興奎,,邵宗有,等.基于FPGA的TOE網(wǎng)卡設(shè)計(jì)與實(shí)現(xiàn)[J].Computer Engineering,,2011,,37(3).
[5] 王紹剛,徐煒遐,,吳丹,,等.一種面向不可靠網(wǎng)絡(luò)的快速RDMA通信方法[J].湖南大學(xué)學(xué)報(bào):自然科學(xué)版,2015,,42(8):100-107.
[6] HUGGAHALLI R,,IYER R,TETRICK S.Direct cache access for high bandwidth network I/O[C]//ACM SIGARCH Computer Architecture News.IEEE Computer Society,,2005,,33(2):50-59.
[7] MILLER D J,WATTS P M,,MOORE A W.Motivating future interconnects:a differential measurement analysis of pci latency[C]//Proceedings of the 5th ACM/IEEE Symposium on Architectures for Networking and Communications Systems.ACM,,2009:94-103.
[8] MAGNUSSON P S,CHRISTENSSON M,,ESKILSON J,,et al.Simics:A full system simulation platform[J].Computer,2002,,35(2):50-58.
[9] TIRUMALA A,,QIN F,DUGAN J,,et al.Iperf:The TCP/UDP bandwidth measurement tool[J].http://dast.nlanr.net/Projects,,2005.
作者信息:
李龍飛,史陽春,,王劍峰,,賀占莊
(西安微電子技術(shù)研究所,陜西 西安710065)