《電子技術應用》
您所在的位置:首頁 > 通信與網(wǎng)絡 > 設計應用 > 一種改進的高性能處理器網(wǎng)絡子系統(tǒng)架構設計
一種改進的高性能處理器網(wǎng)絡子系統(tǒng)架構設計
2017年電子技術應用第1期
李龍飛,史陽春,王劍峰,賀占莊
西安微電子技術研究所,陜西 西安710065
摘要: 針對傳統(tǒng)處理器網(wǎng)絡子系統(tǒng)在高速網(wǎng)絡環(huán)境下的性能瓶頸,特別是BD管理效率低、數(shù)據(jù)傳輸延遲大等問題,提出一種改進的網(wǎng)絡子系統(tǒng)架構。該架構將BD管理功能從NIC上移至處理器,并擴展了BD信息,同時增加了cache的查找和讀后無效操作。通過Simics模擬器對系統(tǒng)架構進行了仿真及評估。實驗結果表明,較傳統(tǒng)的架構和采用DCA技術的架構相比,改進后架構在取得了更高帶寬利用率的同時,降低了CPU利用率,更好地保持了性能和資源的平衡。
中圖分類號: TN402
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.01.012
中文引用格式: 李龍飛,史陽春,王劍峰,等. 一種改進的高性能處理器網(wǎng)絡子系統(tǒng)架構設計[J].電子技術應用,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.
An improved high performance architecture of processor network subsystem
Li Longfei,Shi Yangchun,Wang Jianfeng,He Zhanzhuang
Department of Integrated Circuit Design,Xi′an Microelectronics Technology Institute,Xi′an 710065,China
Abstract: Traditional architectural designs are normally focused on CPU and network subsystem have been a performance bottleneck for high speed network processing. Aiming at solving long transmitting latency and promoting I/O performance, an improved network subsystem architecture was proposed. This architecture, by shifting BD management from NICs to an on-chip BD engine in CPU, allowed BD management to have very fast access to descriptors and keeps packets in CPU cache instead of NIC buffers, significantly simplifying NICs. Simulation platforms were set up based on Simics. Experimental results show that the architecture we put forward not only improves the network processing efficiency, but also eliminates CPU workload, keeps good balance between performance and resource compared with traditional network subsystem architecture.
Key words : NIC;network subsystem;BD management;BD Engine

0 引言

    高速增長的網(wǎng)絡帶寬需要處理器具有足夠的運算能力,同時也要求NIC(Network Interface Card)有高效的數(shù)據(jù)傳輸能力,這給處理器網(wǎng)絡子系統(tǒng)設計帶來了很多新的困難和挑戰(zhàn)。實驗數(shù)據(jù)表明,在萬兆以太網(wǎng)(10GbE)環(huán)境下,網(wǎng)絡數(shù)據(jù)的接收可以耗盡Intel至強四核處理器中2個核的處理能力[1]。這種網(wǎng)絡速率與處理速率不平衡的情況影響了系統(tǒng)正常工作的性能,同時也直接增大了NIC的設計復雜度。

    為了解決上述問題,國內(nèi)外研究學者近年來已從體系結構、協(xié)議棧、系統(tǒng)軟件等方面進行了諸多研究。文獻[2-4]提出了TCP/IP Offload(TCP/IP卸載)技術;文獻[5]提出遠程直接數(shù)據(jù)存?。≧emote Direct Memory Access,RMDA)技術;文獻[6]從減小處理器與NIC交互次數(shù)切入,提出中斷聚合、幀聚合以及大段數(shù)據(jù)分割技術。但這些方案無一例外都只關注于網(wǎng)絡處理中的局部過程,并不能給系統(tǒng)處理效率帶來顯著的提升,且不具有通用性。

    本文在分析了傳統(tǒng)處理器網(wǎng)絡子系統(tǒng)架構、工作原理和缺陷后,提出一種基于體系結構改進的網(wǎng)絡子系統(tǒng)設計方案。該方案通過將數(shù)據(jù)幀管理單元從NIC上移到處理器中,解決了傳統(tǒng)架構中NIC需要先獲取幀描述信息才能傳輸數(shù)據(jù)的問題,從而減小了處理器與NIC的交互壓力,提高了系統(tǒng)網(wǎng)絡處理效率和吞吐率。

1 傳統(tǒng)網(wǎng)絡子系統(tǒng)架構

1.1 網(wǎng)絡處理流程

    網(wǎng)絡數(shù)據(jù)處理是一種I/O敏感的過程,而且還涉及到諸多硬件(例如NIC,PCI-E等)和軟件(例如TCP/IP協(xié)議,驅動程序)。一個數(shù)據(jù)幀的接收,開始于NIC和驅動程序的交互。緩存描述符(Buffer Descriptor,BD)作為NIC和驅動程序之間溝通的橋梁,其包含的信息會指明NIC中接收到的數(shù)據(jù)幀在內(nèi)存中的存儲地址,即BD中包含了一個有效的套接字緩沖區(qū)(Linux中稱為SKB Buffer)。根據(jù)以太網(wǎng)幀的最大傳輸單元,SKB Buffer的大小為1 518 B。BD在主機的內(nèi)核空間中形成一個BD環(huán),配合產(chǎn)生指針和消耗指針動態(tài)地維護著BD與SKB Buffer之間的更新與同步。

    典型的網(wǎng)絡處理接收流程如圖1所示。在接收數(shù)據(jù)之前,NIC首先需要通過PCI-E總線獲取BD,并保存在NIC本地(步驟1)。當從網(wǎng)絡中接收到數(shù)據(jù)幀后(步驟2),NIC通過PCI-E中的DMA將數(shù)據(jù)幀傳輸?shù)紹D指定的SKB Buffer中(步驟3)。一旦數(shù)據(jù)幀放入緩存,NIC會更新該BD信息,增加例如幀長、VLAN等信息,并將更新后的BD傳輸?shù)椒祷谺D環(huán)中(步驟4)。接著,NIC會通過PCI-E向CPU產(chǎn)生MSI中斷(步驟5)。CPU收到中斷請求后會去返回BD環(huán)中讀取BD,從而獲取到數(shù)據(jù)幀的地址和長度,并將數(shù)據(jù)幀映射到SKB數(shù)據(jù)結構中(步驟6)。當驅動程序將SKB Buffer傳遞到協(xié)議棧后,驅動程序會初始化BD信息并將釋放SKB Buffer,以便后續(xù)收到的數(shù)據(jù)幀使用(步驟7)。協(xié)議棧處理完成后,數(shù)據(jù)幀會被傳輸?shù)阶罱K的應用程序,即到達用戶空間。至此,一次數(shù)據(jù)幀的接收過程結束。

wdz9-t1.gif

1.2 處理開銷分析

    在高速網(wǎng)絡環(huán)境下,NIC面臨諸多挑戰(zhàn)。首先,在有效的數(shù)據(jù)傳輸之前,NIC需要通過PCI-E訪問內(nèi)核空間來獲取BD,從本質(zhì)上講其不屬于網(wǎng)絡數(shù)據(jù)傳輸,顯然會增加不必要的開銷。研究表明,一次PCI-E的往返傳輸大約需要2 200 ns,這主要是由于復雜的PCI-E傳輸協(xié)議以及DMA請求競爭造成的[7]。

    除此之外,在典型的網(wǎng)絡處理流程中,數(shù)據(jù)復制以及SKB Buffer釋放也是目前主要的網(wǎng)絡處理開銷。數(shù)據(jù)復制主要是指網(wǎng)絡數(shù)據(jù)在傳輸過程中的三次復制,分別為從網(wǎng)絡中復制到NIC緩存,從NIC緩存復制到系統(tǒng)內(nèi)核空間,從系統(tǒng)內(nèi)核空間復制到用戶空間。這種頻繁的復制會給CPU造成額外的負擔,從而影響了其工作效率,增加了應用計算的平均等待時間。當數(shù)據(jù)被復制到應用程序緩沖區(qū)后,SKB Buffer需要進行釋放,而cache未命中是造成Buffer釋放開銷大的首要原因。雖然增大cache可以減小cache未命中情況的發(fā)生,但卻不能解決NIC與驅動交互以及數(shù)據(jù)復制等問題,因此在實際應用中意義不大。

2 網(wǎng)絡子系統(tǒng)設計

2.1 總體架構

    本質(zhì)上講,本文所提出的網(wǎng)絡子系統(tǒng)架構是將傳統(tǒng)方案中的整套BD管理單元從NIC上移到處理器中,也就是說,在處理器端口與cache之間集成一個具有BD管理功能的單元,稱之為BD引擎(BD Engine,BDE),如圖2所示。將BDE集成于處理器內(nèi)部使其具有更強的靈活性,同時也可以擴展BD中對數(shù)據(jù)幀的描述信息。除此之外,由于BDE可以直接訪問cache,因此不僅可以更快地讀寫B(tài)D以及數(shù)據(jù),而且進一步減小了訪問開銷,減輕了PCI-E壓力。與存儲控制器類似,BDE采用I/O Hub來實現(xiàn)PCI-E與處理器的連接。

wdz9-t2.gif

    當BDE接收到一個數(shù)據(jù)幀時,其從cache中讀取BD,接著將數(shù)據(jù)移動到對應的cache地址中,并且預加載可能引起存儲器停頓的數(shù)據(jù)。本文提出的網(wǎng)絡子系統(tǒng)架構采用cache來緩存數(shù)據(jù),而不再使用NIC中的發(fā)送接收隊列。當前高速NIC廣泛采用接收端調(diào)控(Receive Side Scaling,RSS)技術來平衡多核處理器的網(wǎng)絡負載,因此CPU中的每個核都會分配指定的一對接收和發(fā)送隊列。然而這樣的架構會增加NIC的開銷,同時也影響了可測量性。改進的架構保持了對RSS技術的兼容性,BDE同時還實現(xiàn)了cache內(nèi)的有效負載移動,并且提前清理cache中已經(jīng)被復制的數(shù)據(jù)。

2.2 BDE設計

    在傳統(tǒng)的架構中,在發(fā)送和接收數(shù)據(jù)之前,NIC都需要通過PCI-E總線讀寫B(tài)D,這會產(chǎn)生很多的延遲,同時也會增大DMA壓力。相對來講,由于BDE可以直接訪問cache,交互速度較快,因此有效解決了上述問題。更重要的是,這使得BDE可以擴展BD信息。本文對接收BD信息進行擴展,增加了導致存儲器停頓數(shù)據(jù)的信息,即SKB和頁數(shù)據(jù)地址。在傳統(tǒng)的架構中,BD信息一般為16字節(jié),包括數(shù)據(jù)幀存儲的地址、長度、VLAN等信息。本文在此基礎上增加了4字節(jié)的SKB地址和4字節(jié)的頁地址,同時根據(jù)緩存行(cache line)的數(shù)目,在BDE中采用兩個專用寄存器來存儲SKB和頁長度。在GbE環(huán)境下,接收環(huán)中通常保存1 024個BD,因此在增加了BD信息后,新架構下的接收環(huán)只增加了8 KB。

    為了與傳統(tǒng)架構對比,下面以數(shù)據(jù)接收過程為例對BDE各功能模塊進行介紹,其結構如圖3所示。當NIC收到數(shù)據(jù)幀后,其不需要獲取BD,而是直接將數(shù)據(jù)幀及相關信息送入BDE中的接收緩存。與NIC一樣,BDE也采用專用的寄存器來存儲BD環(huán)的基地址和環(huán)指針信息。BD獲取單元根據(jù)寄存器中的環(huán)基地址、指針地址,鎖定對應的BD地址,然后發(fā)起讀cache請求獲取BD。在得到了數(shù)據(jù)的存儲地址后,數(shù)據(jù)寫入單元將會把數(shù)據(jù)寫入cache中對應的地址。為了加速數(shù)據(jù)寫入操作,查找加載單元會對數(shù)據(jù)幀進行查找和預加載。通過查找操作可以返回數(shù)據(jù)是否在cache中,當查找的數(shù)據(jù)不在cache中時,查找加載單元會給硬件邏輯發(fā)起預獲取指令。當數(shù)據(jù)幀放入cache后,BDE中的BD更新模塊和指針更新模塊會對BD狀態(tài)和指針信息進行更新。

wdz9-t3.gif

    因為cache中的數(shù)據(jù)幀在被應用程序復制后實質(zhì)就無效了,因此為了更有效地實現(xiàn)數(shù)據(jù)幀在cache中的移動,本文擴展了cache架構,提出了新的cache操作:讀后無效。在BDE中,數(shù)據(jù)移動模塊會在原數(shù)據(jù)復制后使cache行無效來清除數(shù)據(jù)。在數(shù)據(jù)的復制過程中,TCP/IP協(xié)議會通過源地址、目的地址和長度三個寄存器對BDE進行控制。在這種情況下,BDE將連續(xù)的物理地址以cache行間隔分割為一系列塊。當執(zhí)行讀后無效操作時,讀源cache行數(shù)據(jù),將讀到的數(shù)據(jù)寫入目的cache行,并使源cache行無效。該操作不僅避免了不必要的臟數(shù)據(jù)寫回,而且不需要虛擬地址到物理地址的轉換。

    改進后的架構使NIC的設計復雜度顯著降低,NIC不再需要對BD進行管理和更新,可以直接將MAC接收到的數(shù)據(jù)幀通過PCI-E傳輸至上層,因此也不必再使用隊列對數(shù)據(jù)幀進行緩存。這不僅減小了硬件邏輯復雜度,也降低了存儲開銷。

3 實驗評估

    采用全系統(tǒng)模擬器Simics對本文提出的網(wǎng)絡子系統(tǒng)架構進行模擬仿真。Simics是一款高性能的系統(tǒng)模擬器,它提供了一個受控制的、確定性的完全虛擬環(huán)境模擬平臺,可模擬多種CPU、硬盤、網(wǎng)卡等[8]。使用器件建模語言對本文提出的網(wǎng)絡子系統(tǒng)進行描述,設計了一個帶有中斷聚合功能的萬兆以太網(wǎng)NIC和一個集成了BDE的處理器,其具體配置參數(shù)如表1所示。為了進行橫向對比,分別對傳統(tǒng)網(wǎng)絡子系統(tǒng)架構以及DCA(Direct Cache Access)架構進行了模擬。

wdz9-b1.gif

    實驗中三種架構均連接一個帶寬、雙工模式可配置的以太網(wǎng)鏈路,且指定鏈路中傳輸延時為1 μs。采用Iperf作為測試向量[9],分別在10 M、100 M、1 G以及10 G帶寬下對三種架構進行實驗,重點關注三種架構所能達到的實際帶寬和對應的處理器利用率。規(guī)定實際帶寬與理論帶寬的比值為帶寬利用率,其值越接近1則表明實際網(wǎng)絡吞吐率越大。實驗得到的帶寬利用率對比圖如圖4所示。從圖中可以看出,在10 M和100 M網(wǎng)絡環(huán)境下,三種架構均達到了理論最大帶寬。然而當帶寬擴大到1 G和10 G后,傳統(tǒng)架構下的實際網(wǎng)絡帶寬明顯低于了理論值,帶寬利用率分別為91.3%和80.5%。對于DCA架構和改進后的架構,在1G網(wǎng)絡環(huán)境下兩者基本都達到理論帶寬值,而在10 G網(wǎng)絡環(huán)境下,DCA架構的帶寬利用率略高于改進后架構。

wdz9-t4.gif

    圖5示出了不同網(wǎng)絡環(huán)境下三種架構的處理器利用率。在1 G和10 G帶寬下,傳統(tǒng)架構的CPU利用率大幅度上升,分別達到了45.2%和54.1%。對比圖4和圖5,對實驗數(shù)據(jù)進行發(fā)掘,可以得到盡管在1 G帶寬下DCA架構與改進架構的帶寬利用率基本相同,但其CPU利用率卻明顯高于改進架構;在10 G帶寬下,DCA架構的帶寬利用率和CPU利用率較改進架構均有略微的提高。綜上,較傳統(tǒng)架構和DCA架構,改進的架構在帶寬利用率和CPU利用率上取得了更好的平衡性。

wdz9-t5.gif

4 結論

    本文立足于高速網(wǎng)絡環(huán)境下的處理器網(wǎng)絡子系統(tǒng)架構優(yōu)化,通過分析傳統(tǒng)網(wǎng)絡子系統(tǒng)架構以及網(wǎng)絡處理流程,提出一種改進的高性能處理器子系統(tǒng)架構。該架構通過將BD管理單元從NIC上移至處理器,解決了傳統(tǒng)架構中繁瑣的BD管理與更新問題,減小了處理器與NIC的交互壓力,提高了系統(tǒng)網(wǎng)絡處理效率和吞吐率。未來的研究工作可以從以下幾方面展開:結合具體處理器架構對改進的網(wǎng)絡子系統(tǒng)架構進行實現(xiàn),并開發(fā)配套驅動程序以便在真實的網(wǎng)絡環(huá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)卡設計與實現(xiàn)[J].Computer Engineering,2011,37(3).

[5] 王紹剛,徐煒遐,吳丹,等.一種面向不可靠網(wǎng)絡的快速RDMA通信方法[J].湖南大學學報:自然科學版,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.



作者信息:

李龍飛,史陽春,王劍峰,賀占莊

(西安微電子技術研究所,陜西 西安710065)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。