《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于DMA的以太網(wǎng)接口性能提升
基于DMA的以太網(wǎng)接口性能提升
2014年微型機(jī)與應(yīng)用第20期
程 瑤
重慶理工大學(xué) 電子信息與自動(dòng)化學(xué)院,,重慶 400050
摘要: 以太網(wǎng)接口因其具有標(biāo)準(zhǔn)開(kāi)放,、易于擴(kuò)展、低成本等優(yōu)點(diǎn)而在工業(yè)中得到了廣泛應(yīng)用,。傳輸性能是以太網(wǎng)接口的一個(gè)關(guān)鍵參數(shù),,在一些時(shí)間敏感的領(lǐng)域設(shè)計(jì)中要予以考慮。通過(guò)使用DMA方式提升以太網(wǎng)接口的性能,,并用PING包試驗(yàn)的方式進(jìn)行了驗(yàn)證,。結(jié)果表明,通過(guò)使用DMA可以顯著地提升以太網(wǎng)接口的性能
關(guān)鍵詞: DMA Cache 以太網(wǎng) 性能
Abstract:
Key words :

  摘  要以太網(wǎng)接口因其具有標(biāo)準(zhǔn)開(kāi)放,、易于擴(kuò)展,、低成本等優(yōu)點(diǎn)而在工業(yè)中得到了廣泛應(yīng)用。傳輸性能是以太網(wǎng)接口的一個(gè)關(guān)鍵參數(shù),,在一些時(shí)間敏感的領(lǐng)域設(shè)計(jì)中要予以考慮,。通過(guò)使用DMA方式提升以太網(wǎng)接口的性能,,并用PING包試驗(yàn)的方式進(jìn)行了驗(yàn)證。結(jié)果表明,,通過(guò)使用DMA可以顯著地提升以太網(wǎng)接口的性能,。

  關(guān)鍵詞: DMA;Cache,;以太網(wǎng),;性能

0 引言

  以太網(wǎng)作為一種計(jì)算機(jī)局域網(wǎng)組網(wǎng)接口標(biāo)準(zhǔn),具有標(biāo)準(zhǔn)開(kāi)放,、高傳輸帶寬,、低成本、易于擴(kuò)展和維護(hù)等特點(diǎn),,是當(dāng)今應(yīng)用最為普遍的局域網(wǎng)技術(shù)[1-3],。伴隨著當(dāng)今社會(huì)信息化程度的提高,人們需要處理的數(shù)據(jù)量越來(lái)越大,,以太網(wǎng)接口的性能成為應(yīng)用中需要考慮的關(guān)鍵因素之一[4],。本文研究了DMA技術(shù)對(duì)于以太網(wǎng)接口性能提升的作用,試驗(yàn)平臺(tái)采用了S3C2410A處理器和AX88796以太網(wǎng)MAC芯片,。

1 系統(tǒng)組成

  試驗(yàn)系統(tǒng)采用了S3C2410A處理器和AX88796以太網(wǎng)MAC芯片,。

  S3C2410是Samsung公司生產(chǎn)的一款基于ARM公司ARM920T架構(gòu)的通用處理器,其具有低成本,、低功耗和高性能等優(yōu)點(diǎn),,適用于對(duì)成本和功耗比較敏感的領(lǐng)域,如手持設(shè)備,。該處理器片上集成了豐富的外設(shè)資源,,包括Timer、UART,、DMA、LCD控制器和NAND閃存控制器等,,最高可運(yùn)行主頻為203 MHz[5],。

  AX88796是一款基于IEEE802.3/IEEE802.3u局域網(wǎng)標(biāo)準(zhǔn)的NE2000兼容型快速以太網(wǎng)控制器芯片,內(nèi)部集成有10/100 Mb/s自適應(yīng)的物理層收發(fā)器和8 KB×16位的SRAM,,支持MCS-51系列,、80186系列以及MC68K系列等CPU。由于提供了與NE2000寄存器級(jí)兼容的接口,,其驅(qū)動(dòng)程序可以很方便地移植[6],。AX88796的功能框圖如圖1所示。

001.jpg

  基于S3C2410和AX88796的以太網(wǎng)接口設(shè)計(jì)如圖2所示,。

002.jpg

2 基于DMA的性能提升設(shè)計(jì)

  DMA(Direct Memory Access)是現(xiàn)代計(jì)算機(jī)的一種重要特性,,它可以不依賴(lài)CPU實(shí)現(xiàn)系統(tǒng)中不同硬件子系統(tǒng)之間的數(shù)據(jù)交換,。如果不使用DMA,中央處理器需要首先將數(shù)據(jù)從源地址拷貝到內(nèi)部暫存器,,然后再將其復(fù)制到目的地址,。這個(gè)過(guò)程會(huì)一直占用CPU資源,CPU無(wú)法處理其他工作,。而DMA方式直接在兩個(gè)子系統(tǒng)間交換數(shù)據(jù),,不需要CPU的介入,CPU只負(fù)責(zé)啟動(dòng)而不參與數(shù)據(jù)傳送過(guò)程,,整個(gè)數(shù)據(jù)傳輸過(guò)程完全由DMA控制器硬件實(shí)現(xiàn),。這時(shí),CPU可以同時(shí)做其他的工作而互不影響,,提高了系統(tǒng)的運(yùn)行效率,。不難看出,在同等程度的處理器負(fù)擔(dān)下,,DMA是一種快速的數(shù)據(jù)傳送方式,。在實(shí)現(xiàn)DMA傳輸時(shí),總線(xiàn)應(yīng)該由DMA控制器直接控制,,因此,,在使用DMA時(shí)存在總線(xiàn)控制權(quán)轉(zhuǎn)移問(wèn)題。在DMA開(kāi)始前,,CPU要把總線(xiàn)控制權(quán)交給DMA控制器,,在DMA數(shù)據(jù)傳輸結(jié)束后再把總線(xiàn)控制權(quán)交還給CPU。

  為了提升以太網(wǎng)接口的性能,,本設(shè)計(jì)引入了DMA數(shù)據(jù)傳輸方式,,并將使用DMA與不使用DMA的性能進(jìn)行了對(duì)比分析。本設(shè)計(jì)使用VxWorks嵌入式操作系統(tǒng),,軟件開(kāi)發(fā)環(huán)境為T(mén)ornado2.2,。DMA主要應(yīng)用于以太網(wǎng)驅(qū)動(dòng)程序的數(shù)據(jù)收發(fā)部分。為了對(duì)比性能,,分別對(duì)使用DMA與不使用DMA方式進(jìn)行了試驗(yàn),。不使用DMA的數(shù)據(jù)收發(fā)程序如下:

  for(Count=0;Count<(length>>1),;Count++)

  {

  *pData=*(pDrvCtrl->base+ENE_DATA),;

  pData+=2;

  }

  for(count=0,;count<(length>>1),;count++)

  {

  *(pDrvCtrl->base+ENE_DATA)=*pData;

  pData+=2;

  }

  使用PING包試驗(yàn)測(cè)試該驅(qū)動(dòng)程序的性能,,效果如圖3所示,。

003.jpg

  為了提升以太網(wǎng)接口的傳輸性能,在驅(qū)動(dòng)程序設(shè)計(jì)中使用了DMA方式,,這樣可以在不太耗費(fèi)CPU資源的情況下完成系統(tǒng)和以太網(wǎng)接口的數(shù)據(jù)交換,,從而顯著地提升系統(tǒng)的性能。S3C2410片上集成了四通道的DMA引擎,,可以完成系統(tǒng)總線(xiàn)和外設(shè)總線(xiàn)間的直接數(shù)據(jù)傳輸,。S3C2410的各個(gè)DMA引擎支持單字節(jié)和4字節(jié)兩種傳輸大小。為了效率最大化,,本設(shè)計(jì)中采用了4字節(jié)傳輸模式,,其傳輸時(shí)序如圖4所示。

004.jpg

  S3C2410的DMA引擎既可以通過(guò)軟件方式啟動(dòng),,也可以通過(guò)外部DMA請(qǐng)求引腳啟動(dòng),。本設(shè)計(jì)中采用軟件方式啟動(dòng)。要實(shí)現(xiàn)DMA傳輸,,需要進(jìn)行如下的一系列操作:

 ?。?)配置DMA引擎的數(shù)據(jù)源初始地址,,將數(shù)據(jù)源初始地址寫(xiě)入寄存器DISRC,。對(duì)于以太網(wǎng)數(shù)據(jù)接收,,數(shù)據(jù)源初始地址就是AX88796的數(shù)據(jù)寄存器地址,;而對(duì)于數(shù)據(jù)發(fā)送,數(shù)據(jù)源初始地址就是包含待發(fā)送數(shù)據(jù)的內(nèi)存地址,。

 ?。?)配置DMA引擎的數(shù)據(jù)源控制寄存器,,包括數(shù)據(jù)源設(shè)備所在的總線(xiàn)(系統(tǒng)總線(xiàn)或者外設(shè)總線(xiàn))以及地址增長(zhǎng)方式,。在本設(shè)計(jì)中,,發(fā)送和接收的源設(shè)備都在系統(tǒng)總線(xiàn)上。而對(duì)于地址增長(zhǎng)方式,,在接收時(shí),,源地址為AX88796的數(shù)據(jù)寄存器地址,是固定不變的,,所以要配置成不變的,;在發(fā)送時(shí),源地址在內(nèi)存中,,其地址是遞增的,所以要配置成遞增式,。

 ?。?)配置DMA引擎的初始目的地址,將初始目的地址寫(xiě)入寄存器DIDST。對(duì)于數(shù)據(jù)接收,,初始目的地址就是內(nèi)存中用于存儲(chǔ)接收數(shù)據(jù)的地址,;而對(duì)于數(shù)據(jù)發(fā)送,初始目的地址就是AX88796的數(shù)據(jù)寄存器地址,。

 ?。?)配置DMA引擎的目的地址控制寄存器,包括目的地址所在的總線(xiàn)(系統(tǒng)總線(xiàn)或者外設(shè)總線(xiàn))以及地址增長(zhǎng)方式,。這里的配置可以參考數(shù)據(jù)源控制寄存器的配置,。

  (5)配置DMA引擎控制寄存器,,配置包括傳輸單元大?。? bit或者4 bit,本設(shè)計(jì)中使用4 bit),、觸發(fā)方式(軟件方式或者外部硬件引腳觸發(fā),,本設(shè)計(jì)中使用的軟件觸發(fā)方式)以及傳輸次數(shù)。

 ?。?)配置DMA引擎的觸發(fā)寄存器以啟動(dòng)數(shù)據(jù)傳輸,。

  具體的驅(qū)動(dòng)代碼如下:

  【數(shù)據(jù)接收】

  DMA_DISRC=(pDrvCtrl->base+ENE_DATA);

  DMA_DISRCC=1,;

  DMA_DIDST=pData,;

  DMA_DIDSTC=0;

  DMA_DCON=(0x48500000|dataShortCount),;

  DMA_DMASKTRI=0x3,;

  【數(shù)據(jù)發(fā)送】

  DMA_DISRC=pData;

  DMA_DISRCC=0,;

  DMA_DIDST=(pDrvCtrl->base+ENE_DATA),;

  DMA_DIDSTC=1;

  DMA_DCON=(0x48500000|dataShortCount),;

  DMA_DMASKTRI=0x3,;

  為了檢驗(yàn)DMA傳輸方式的性能,這里同樣采用了PING包試驗(yàn)的方式,,具體PING包結(jié)果如圖5所示,。

由圖可見(jiàn),采用DMA傳輸方式后,,以太網(wǎng)接口的性能得到了顯著的提升,。

005.jpg

3 結(jié)論

  傳輸性能是以太網(wǎng)接口的一個(gè)關(guān)鍵參數(shù),在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)需要予以考慮,。本設(shè)計(jì)中引入了DMA方式以提升以太網(wǎng)接口的性能,,通過(guò)PING包試驗(yàn)證明了DMA可以顯著地提升以太網(wǎng)接口的性能。

參考文獻(xiàn)

  [1] IEEE Computer Society. IEEE Standard 802.3[S].2002.

  [2] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2013.

  [3] 嚴(yán)偉,,潘愛(ài)民.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,,2012.

  [4] 楊宏.基于END驅(qū)動(dòng)IP層轉(zhuǎn)發(fā)能力的提升方法[J].信息安全與通信保密,2007(1):156-160.

  [5] SAMSUNG Electronics. S3C2410A user′s manual[Z]. 2004.

  [6] ASIX Electronics Corporation. AX88796L user′s manual[Z].2002.


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