《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 一種改進(jìn)的高性能處理器網(wǎng)絡(luò)子系統(tǒng)架構(gòu)設(shè)計(jì)
一種改進(jìn)的高性能處理器網(wǎng)絡(luò)子系統(tǒng)架構(gòu)設(shè)計(jì)
2017年電子技術(shù)應(yīng)用第1期
李龍飛,史陽春,王劍峰,賀占莊
西安微電子技術(shù)研究所,陜西 西安710065
摘要: 針對(duì)傳統(tǒng)處理器網(wǎng)絡(luò)子系統(tǒng)在高速網(wǎng)絡(luò)環(huán)境下的性能瓶頸,特別是BD管理效率低、數(shù)據(jù)傳輸延遲大等問題,提出一種改進(jìn)的網(wǎng)絡(luò)子系統(tǒng)架構(gòu)。該架構(gòu)將BD管理功能從NIC上移至處理器,并擴(kuò)展了BD信息,同時(shí)增加了cache的查找和讀后無效操作。通過Simics模擬器對(duì)系統(tǒng)架構(gòu)進(jìn)行了仿真及評(píng)估。實(shí)驗(yàn)結(jié)果表明,較傳統(tǒng)的架構(gòu)和采用DCA技術(shù)的架構(gòu)相比,改進(jìn)后架構(gòu)在取得了更高帶寬利用率的同時(shí),降低了CPU利用率,更好地保持了性能和資源的平衡。
中圖分類號(hào): TN402
文獻(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.
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 引言

    高速增長(zhǎng)的網(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ù)雜度。

    為了解決上述問題,國(guó)內(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ù)存?。≧emote 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信息,增加例如幀長(zhǎng)、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ù)幀的地址和長(zhǎng)度,并將數(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é)束。

wdz9-t1.gif

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)爭(zhē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與處理器的連接。

wdz9-t2.gif

    當(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ǔ)的地址、長(zhǎng)度、VLAN等信息。本文在此基礎(chǔ)上增加了4字節(jié)的SKB地址和4字節(jié)的頁地址,同時(shí)根據(jù)緩存行(cache line)的數(shù)目,在BDE中采用兩個(gè)專用寄存器來存儲(chǔ)SKB和頁長(zhǎng)度。在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)行更新。

wdz9-t3.gif

    因?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ì)通過源地址、目的地址和長(zhǎng)度三個(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)行了模擬。

wdz9-b1.gif

    實(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)。

wdz9-t4.gif

    圖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利用率上取得了更好的平衡性。

wdz9-t5.gif

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)

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