基于DMA的以太网接口性能提升*

2014-07-25 09:00程瑶
网络安全与数据管理 2014年20期
关键词:数据源寄存器以太网

程瑶

(重庆理工大学 电子信息与自动化学院,重庆 400050)

0 引言

以太网作为一种计算机局域网组网接口标准,具有标准开放、高传输带宽、低成本、易于扩展和维护等特点,是当今应用最为普遍的局域网技术[1-3]。伴随着当今社会信息化程度的提高,人们需要处理的数据量越来越大,以太网接口的性能成为应用中需要考虑的关键因素之一[4]。本文研究了DMA技术对于以太网接口性能提升的作用,试验平台采用了S3C2410A处理器和AX88796以太网MAC芯片。

1 系统组成

试验系统采用了S3C2410A处理器和AX88796以太网MAC芯片。

S3C2410是Samsung公司生产的一款基于ARM公司ARM920T架构的通用处理器,其具有低成本、低功耗和高性能等优点,适用于对成本和功耗比较敏感的领域,如手持设备。该处理器片上集成了丰富的外设资源,包括Timer、UART、DMA、LCD控制器和NAND闪存控制器等,最高可运行主频为203 MHz[5]。

AX88796是一款基于IEEE802.3/IEEE802.3u局域网标准的NE2000兼容型快速以太网控制器芯片,内部集成有10/100 Mb/s自适应的物理层收发器和8 KB×16位的SRAM,支持MCS-51系列、80186系列以及MC68K系列等CPU。由于提供了与NE2000寄存器级兼容的接口,其驱动程序可以很方便地移植[6]。AX88796的功能框图如图1所示。

图1 AX88796功能框图

基于S3C2410和AX88796的以太网接口设计如图2所示。

图2 以太网接口功能框图

2 基于DMA的性能提升设计

DMA(Direct Memory Access)是现代计算机的一种重要特性,它可以不依赖CPU实现系统中不同硬件子系统之间的数据交换。如果不使用DMA,中央处理器需要首先将数据从源地址拷贝到内部暂存器,然后再将其复制到目的地址。这个过程会一直占用CPU资源,CPU无法处理其他工作。而DMA方式直接在两个子系统间交换数据,不需要CPU的介入,CPU只负责启动而不参与数据传送过程,整个数据传输过程完全由DMA控制器硬件实现。这时,CPU可以同时做其他的工作而互不影响,提高了系统的运行效率。不难看出,在同等程度的处理器负担下,DMA是一种快速的数据传送方式。在实现DMA传输时,总线应该由DMA控制器直接控制,因此,在使用DMA时存在总线控制权转移问题。在DMA开始前,CPU要把总线控制权交给DMA控制器,在DMA数据传输结束后再把总线控制权交还给CPU。

为了提升以太网接口的性能,本设计引入了DMA数据传输方式,并将使用DMA与不使用DMA的性能进行了对比分析。本设计使用VxWorks嵌入式操作系统,软件开发环境为Tornado2.2。DMA主要应用于以太网驱动程序的数据收发部分。为了对比性能,分别对使用DMA与不使用DMA方式进行了试验。不使用DMA的数据收发程序如下:

使用PING包试验测试该驱动程序的性能,效果如图3所示。

图3 未使用DMA时的PING包试验结果

为了提升以太网接口的传输性能,在驱动程序设计中使用了DMA方式,这样可以在不太耗费CPU资源的情况下完成系统和以太网接口的数据交换,从而显著地提升系统的性能。S3C2410片上集成了四通道的DMA引擎,可以完成系统总线和外设总线间的直接数据传输。S3C2410的各个DMA引擎支持单字节和4字节两种传输大小。为了效率最大化,本设计中采用了4字节传输模式,其传输时序如图4所示。

图4 DMA传输时序图

S3C2410的DMA引擎既可以通过软件方式启动,也可以通过外部DMA请求引脚启动。本设计中采用软件方式启动。要实现DMA传输,需要进行如下的一系列操作:

(1)配置DMA引擎的数据源初始地址,将数据源初始地址写入寄存器DISRC。对于以太网数据接收,数据源初始地址就是AX88796的数据寄存器地址;而对于数据发送,数据源初始地址就是包含待发送数据的内存地址。

(2)配置DMA引擎的数据源控制寄存器,包括数据源设备所在的总线(系统总线或者外设总线)以及地址增长方式。在本设计中,发送和接收的源设备都在系统总线上。而对于地址增长方式,在接收时,源地址为AX88796的数据寄存器地址,是固定不变的,所以要配置成不变的;在发送时,源地址在内存中,其地址是递增的,所以要配置成递增式。

(3)配置DMA引擎的初始目的地址,将初始目的地址写入寄存器DIDST。对于数据接收,初始目的地址就是内存中用于存储接收数据的地址;而对于数据发送,初始目的地址就是AX88796的数据寄存器地址。

(4)配置DMA引擎的目的地址控制寄存器,包括目的地址所在的总线(系统总线或者外设总线)以及地址增长方式。这里的配置可以参考数据源控制寄存器的配置。

(5)配置DMA引擎控制寄存器,配置包括传输单元大小(1 bit或者4 bit,本设计中使用4 bit)、触发方式(软件方式或者外部硬件引脚触发,本设计中使用的软件触发方式)以及传输次数。

(6)配置DMA引擎的触发寄存器以启动数据传输。

具体的驱动代码如下:

为了检验DMA传输方式的性能,这里同样采用了PING包试验的方式,具体PING包结果如图5所示。由图可见,采用DMA传输方式后,以太网接口的性能得到了显著的提升。

图5 使用DMA后的PING包试验结果

3 结论

传输性能是以太网接口的一个关键参数,在进行系统设计时需要予以考虑。本设计中引入了DMA方式以提升以太网接口的性能,通过PING包试验证明了DMA可以显著地提升以太网接口的性能。

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

[2]谢希仁.计算机网络[M].北京:电子工业出版社,2013.

[3]严伟,潘爱民.计算机网络[M].北京:清华大学出版社,2012.

[4]杨宏.基于END驱动IP层转发能力的提升方法[J].信息安全与通信保密,2007(1):156-160.

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

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

猜你喜欢
数据源寄存器以太网
STM32和51单片机寄存器映射原理异同分析
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
Lite寄存器模型的设计与实现
Web 大数据系统数据源选择*
基于不同网络数据源的期刊评价研究
谈实时以太网EtherCAT技术在变电站自动化中的应用
浅谈EPON与工业以太网在贵遵高速公路中的应用
基于真值发现的冲突数据源质量评价算法
万兆以太网在连徐高速公路通信系统改造中的应用
分布式异构数据源标准化查询设计与实现