国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

高速網(wǎng)卡與主機(jī)通信技術(shù)研究

2015-05-30 07:39:52呂民強(qiáng)等
中國市場 2015年19期
關(guān)鍵詞:描述符中斷

呂民強(qiáng)等

[摘 要]本文分析了高速網(wǎng)卡與主機(jī)的通信方式——基于描述符的DMA通信機(jī)制,研究了提高網(wǎng)卡與主機(jī)通信性能的技術(shù)——提高總線帶寬和減少中斷開銷。

[關(guān)鍵詞]中斷;描述符;DMA

[DOI]10.13939/j.cnki.zgsc.2015.20.059

隨著網(wǎng)絡(luò)技術(shù),尤其是光纖技術(shù)的快速發(fā)展,互聯(lián)網(wǎng)通信帶寬不斷提升。網(wǎng)絡(luò)應(yīng)用的性能需求表現(xiàn)為高吞吐率、低延遲、低主機(jī)開銷和低存儲(chǔ)開銷等特點(diǎn)[1]。這些特點(diǎn)對(duì)網(wǎng)絡(luò)接口卡與主機(jī)的通信性能提出了更高的要求。

1 高速網(wǎng)卡整體結(jié)構(gòu)

高速網(wǎng)卡的硬件結(jié)構(gòu)如圖1所示,包括:IO接口部分、DMA引擎部分、接收和發(fā)送FIFO、以太網(wǎng)MAC協(xié)議處理部分和物理層(PHY)模擬信號(hào)處理部分,此外,還有一些輔助模塊,如EEPROM接口模塊,擴(kuò)展BootROM接口模塊,LED控制和整個(gè)芯片的命令狀態(tài)寄存器(CSR)部分。IO接口主要負(fù)責(zé)和主機(jī)進(jìn)行通信;DMA引擎模塊主要負(fù)責(zé)數(shù)據(jù)包的具體控制,包括配合IO接口的控制動(dòng)作、DMA訪問起始地址的控制;MAC模塊則負(fù)責(zé)處理以太網(wǎng)CSMA/CD(Carrier Sense Multiple Access with Collision Detection)協(xié)議;物理層(PHY)負(fù)責(zé)處理網(wǎng)卡與網(wǎng)卡之間的信號(hào)連接以及對(duì)信號(hào)進(jìn)行恢復(fù),配置寄存器CSR負(fù)責(zé)對(duì)網(wǎng)卡的特性進(jìn)行設(shè)置。

高速網(wǎng)卡硬件結(jié)構(gòu)

網(wǎng)卡有兩路數(shù)據(jù)通道:一是數(shù)據(jù)發(fā)送過程:從主機(jī)網(wǎng)絡(luò)協(xié)議棧傳來的數(shù)據(jù)包,通過IO接口,由TxDMA控制到達(dá)TxFIFO先暫存起來,當(dāng)TxFIFO暫存的數(shù)據(jù)包到達(dá)一定閾值時(shí),TxMAC將TxFIFO中的數(shù)據(jù)包按CSMA/CD協(xié)議發(fā)送到具有自適應(yīng)選擇功能的PHY層,再由雙絞線或者光纖發(fā)送到外部網(wǎng)絡(luò)上。一是數(shù)據(jù)接收過程:網(wǎng)絡(luò)上的數(shù)據(jù)信號(hào)被物理層捕獲,轉(zhuǎn)換為并行數(shù)據(jù)后傳送到接收MAC,接收MAC判斷數(shù)據(jù)包是否接被接收,將接收的數(shù)據(jù)包送進(jìn)接收FIFO先暫存起來,當(dāng)接收FIFO數(shù)據(jù)達(dá)到一定閾值后,RxDMA會(huì)通過IO模塊,將數(shù)據(jù)傳送到主機(jī)內(nèi)存,完成數(shù)據(jù)包的接收[2,3]。

2 網(wǎng)卡與主機(jī)通信方式

傳統(tǒng)網(wǎng)卡與主機(jī)交換數(shù)據(jù)的方式有中斷方式和DMA方式[4]。

中斷方式又稱可編程I/O(Programmed I/O),是指當(dāng)網(wǎng)卡硬件的報(bào)文緩沖區(qū)準(zhǔn)備好數(shù)據(jù)時(shí),便向主機(jī)CPU發(fā)送中斷,CPU響應(yīng)中斷,在中斷處理程序中先將數(shù)據(jù)從網(wǎng)卡的報(bào)文緩沖區(qū)讀到CPU的寄存器,然后由寄存器再寫到主存。在低速網(wǎng)絡(luò)條件下,可編程I/O方式對(duì)主機(jī)系統(tǒng)性能影響不大。但是,在高速網(wǎng)絡(luò)條件下,可編程I/O機(jī)制由于傳輸數(shù)據(jù)需要CPU的參與而大大增加CPU的工作負(fù)載,影響主機(jī)系統(tǒng)性能[5]。

DMA(Direct Memory Access)方式又稱直接內(nèi)存訪問方式,DMA技術(shù)是一種代替微處理器完成存儲(chǔ)器與外部設(shè)備或存儲(chǔ)器之間大量數(shù)據(jù)傳送的方法。利用DMA技術(shù)可不用CPU介入就能實(shí)現(xiàn)網(wǎng)卡與內(nèi)存之間數(shù)據(jù)的直接傳送,大大降低主機(jī)CPU的工作負(fù)載。運(yùn)行在高速網(wǎng)絡(luò)上的服務(wù)器要求其CPU資源更多用于應(yīng)用程序的運(yùn)行,所以,現(xiàn)在幾乎所有的高速網(wǎng)卡設(shè)計(jì)都采用DMA方式作為與主機(jī)交換數(shù)據(jù)的主要手段[5]。

3 基于描述符的DMA通信技術(shù)

高速網(wǎng)卡采用基于描述符的DMA方式與主機(jī)進(jìn)行通信。高速網(wǎng)絡(luò)接口卡通過DMA引擎進(jìn)行基本的數(shù)據(jù)傳輸。DMA引擎是實(shí)現(xiàn)DMA機(jī)制的主要部件,其主要工作是描述符的管理、接收和發(fā)送數(shù)據(jù)的傳輸以及中斷的產(chǎn)生。

描述符機(jī)制和中斷機(jī)制是DMA引擎的核心機(jī)制。描述符機(jī)制主要用于接收和發(fā)送描述符的組織和管理,而中斷機(jī)制主要涉及接收中斷和發(fā)送中斷的產(chǎn)生。

3.1 描述符機(jī)制

在DMA機(jī)制中,網(wǎng)絡(luò)接口卡在進(jìn)行數(shù)據(jù)報(bào)文的讀寫前必須知道其讀寫的主機(jī)內(nèi)存目的地址。DMA引擎中接收和發(fā)送描述符的主要任務(wù)之一是為網(wǎng)絡(luò)接口卡提供主機(jī)內(nèi)存的地址信息。接收和發(fā)送描述符的數(shù)據(jù)結(jié)構(gòu)中包含讀寫的主機(jī)內(nèi)存地址以及讀寫數(shù)據(jù)的長度。DMA引擎采用了環(huán)形的發(fā)送和接收描述符隊(duì)列,發(fā)送和接收描述符指向的緩沖區(qū)大小通常是固定的。

DMA引擎包含兩個(gè)描述符隊(duì)列即接收描述符隊(duì)列和發(fā)送描述符隊(duì)列。網(wǎng)絡(luò)接口卡和驅(qū)動(dòng)程序進(jìn)行正確數(shù)據(jù)傳送的基本必要條件是接收和發(fā)送描述符的正確傳送。

可用接收描述符到達(dá)DMA引擎可通過兩種方法。一種方法是基于驅(qū)動(dòng)程序的,由驅(qū)動(dòng)程序告知DMA引擎此次可用接收描述符個(gè)數(shù),然后DMA引擎通過DMA機(jī)制獲得新的可用接收描述符;另一種是基于DMA引擎的,由DMA引擎主動(dòng)請求接收描述符。

3.2 中斷機(jī)制

在高速網(wǎng)絡(luò)條件下,網(wǎng)絡(luò)處理開銷大小直接影響系統(tǒng)性能。網(wǎng)絡(luò)處理開銷大小取決于網(wǎng)絡(luò)中斷次數(shù)、網(wǎng)絡(luò)數(shù)據(jù)傳輸方式以及用戶層和操作系統(tǒng)內(nèi)核間的數(shù)據(jù)拷貝方式。DMA引擎中斷機(jī)制決定網(wǎng)絡(luò)中斷次數(shù)。為減少報(bào)文接收(發(fā)送)中斷的次數(shù),DMA引擎接收(發(fā)送)了一定數(shù)量的報(bào)文后才置接收(發(fā)送)中斷。這個(gè)固定的報(bào)文數(shù)量被稱為接收(發(fā)送)中斷閾值。

為避免因網(wǎng)絡(luò)流量過低導(dǎo)致較長的網(wǎng)絡(luò)延遲,DMA引擎還提供超時(shí)機(jī)制,當(dāng)定時(shí)器超時(shí),DMA引擎立即產(chǎn)生中斷。中斷閾值與超時(shí)相結(jié)合的中斷機(jī)制能夠極大地減少網(wǎng)絡(luò)接口卡產(chǎn)生的中斷次數(shù),同時(shí)將報(bào)文延時(shí)控制在較小的范圍內(nèi)。

3.3 數(shù)據(jù)收發(fā)過程

基于DMA機(jī)制的網(wǎng)絡(luò)接口卡的數(shù)據(jù)接收和發(fā)送過程并不是對(duì)稱的,因此我們將數(shù)據(jù)的發(fā)送和接收過程分開介紹并討論。數(shù)據(jù)報(bào)文的接收過程是一個(gè)軟硬件交互過程,具體過程如下:

(1)驅(qū)動(dòng)程序初始化所有可用的接收描述符。然后,驅(qū)動(dòng)程序通告網(wǎng)絡(luò)接口卡接收描述符在內(nèi)存的起始地址以及可用接收描述符的個(gè)數(shù);

(2)DMA引擎根據(jù)接收描述符的起始地址信息和其他相關(guān)信息通過DMA方式將所有可用的接收描述符下載到DMA引擎;

(3)當(dāng)有數(shù)據(jù)報(bào)文到達(dá)網(wǎng)絡(luò)接口卡時(shí),DMA引擎就根據(jù)接收描述符指示的地址發(fā)動(dòng)一次DMA操作,將到達(dá)的數(shù)據(jù)報(bào)文寫入主機(jī)內(nèi)存;

(4)DMA操作完成后,DMA引擎立即發(fā)動(dòng)另一次DMA操作,回寫剛才已使用的接收描述符的若干域(報(bào)文長度域,回寫標(biāo)志域);

(5)當(dāng)接收報(bào)文的數(shù)量達(dá)到接收中斷閾值時(shí),DMA引擎通告主機(jī)接收中斷,主機(jī)處理接收數(shù)據(jù)并進(jìn)行接收描述符的回收;

(6)主機(jī)在完成接收描述符的回收后,將此次回收接收描述符的個(gè)數(shù)通告給DMA引擎,DMA引擎根據(jù)相關(guān)信息讀取可用接收描述符。

數(shù)據(jù)報(bào)文的發(fā)送過程也是一個(gè)軟硬件交互過程,具體過程如下:

(1)驅(qū)動(dòng)程序初始化所有可用的發(fā)送描述符,同時(shí)通告網(wǎng)絡(luò)接口卡發(fā)送描述符的在內(nèi)存中的起始地址;

(2)當(dāng)有數(shù)據(jù)報(bào)文需要發(fā)送時(shí),驅(qū)動(dòng)程序?qū)?shù)據(jù)報(bào)文在內(nèi)存中的起始地址和報(bào)文長度填寫到發(fā)送描述符的相應(yīng)域中;

(3)發(fā)送描述符填寫完成后,網(wǎng)絡(luò)接口卡驅(qū)動(dòng)程序就通告網(wǎng)絡(luò)接口卡此次需要處理的發(fā)送描述符個(gè)數(shù);

(4)DMA引擎發(fā)動(dòng)一次DMA操作將需要處理的發(fā)送描述符下載到網(wǎng)絡(luò)接口卡上;

(5)發(fā)送描述符的下載完成后,DMA引擎就根據(jù)發(fā)送描述符的內(nèi)容發(fā)動(dòng)DMA操作,將發(fā)送描述符指向的數(shù)據(jù)報(bào)文發(fā)送到網(wǎng)絡(luò)上;

(6)當(dāng)發(fā)送報(bào)文的數(shù)量達(dá)到發(fā)送中斷閾值時(shí),DMA引擎通告主機(jī)發(fā)送中斷,驅(qū)動(dòng)程序開始進(jìn)行發(fā)送中斷的處理,并進(jìn)行發(fā)送描述符的回收。

4 提高網(wǎng)卡與主機(jī)通信性能的技術(shù)

4.1 提高總線的帶寬

網(wǎng)卡通過系統(tǒng)總線和主機(jī)系統(tǒng)相連,因此總線帶寬的大小直接影響網(wǎng)卡和主機(jī)數(shù)據(jù)交換的性能。目前總線技術(shù)已發(fā)展到第三代:第一代ISA總線,第二代PCI總線和第三代PCIE總線,隨之,也出現(xiàn)了三種不同類型的網(wǎng)卡:ISA網(wǎng)卡、PCI網(wǎng)卡和PCIE網(wǎng)卡。隨著總線技術(shù)的發(fā)展,總線的帶寬得到極大的提高,網(wǎng)卡與主機(jī)的通信性能也隨之提升。

4.2 減少中斷開銷

為減少網(wǎng)卡硬件的中斷頻率,在網(wǎng)卡驅(qū)動(dòng)中采取關(guān)中斷技術(shù)和中斷聯(lián)合技術(shù)[6]。所謂關(guān)中斷技術(shù)就是當(dāng)CPU接收到網(wǎng)卡的第一個(gè)中斷,執(zhí)行中斷處理時(shí),在中斷處理程序中將網(wǎng)卡的中斷關(guān)閉,當(dāng)處理完所有到達(dá)的數(shù)據(jù)包后,再將網(wǎng)卡的中斷打開。所謂“中斷合并”就是網(wǎng)絡(luò)設(shè)備DMA完數(shù)據(jù)后并不立即向系統(tǒng)發(fā)中斷,而是當(dāng)設(shè)備接收(或者發(fā)送)的數(shù)據(jù)到達(dá)一定的閾值后才向系統(tǒng)發(fā)中斷。

參考文獻(xiàn):

[1]吳建軍.一種基于PCI總線的10/100Mbps以太網(wǎng)卡接口芯片的設(shè)計(jì)[D].武漢:華中科技大學(xué),2003.

[2]孫德文.微型計(jì)算機(jī)技術(shù)[M].北京:高等教育出版社,1999.

猜你喜歡
描述符中斷
基于結(jié)構(gòu)信息的異源遙感圖像局部特征描述符研究
基于AKAZE的BOLD掩碼描述符的匹配算法的研究
基于FPGA的中斷控制器設(shè)計(jì)*
Linux單線程并發(fā)服務(wù)器探索
跟蹤導(dǎo)練(二)(5)
千里移防,衛(wèi)勤保障不中斷
解放軍健康(2017年5期)2017-08-01 06:27:44
利用CNN的無人機(jī)遙感影像特征描述符學(xué)習(xí)
特征聯(lián)合和旋轉(zhuǎn)不變空間分割聯(lián)合的局部圖像描述符
AT89C51與中斷有關(guān)的寄存器功能表解
FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
芒康县| 新源县| 崇信县| 儋州市| 九台市| 加查县| 五原县| 石棉县| 酉阳| 德惠市| 怀柔区| 玛多县| 盈江县| 澄迈县| 大埔县| 新密市| 嘉兴市| 南平市| 宁城县| 靖州| 富民县| 凤台县| 民丰县| 锡林郭勒盟| 遂昌县| 巴彦县| 淮北市| 开阳县| 右玉县| 监利县| 陇西县| 汪清县| 平南县| 大方县| 两当县| 察哈| 锡林郭勒盟| 汕尾市| 新兴县| 福鼎市| 博湖县|