[doc] GMAC千兆以太网卡驱动
GMAC千兆以太网卡驱动设计
CN43—1258/TP
ISSN1007—130X
计算机工程与科学
COMPUTERENGINEERING&SCIENCE
2009年第31卷第A1期
V01.31,No.A1,2009
文章编号:1007—13OX(20O9)A1—0340—02
GMAC千兆以太网卡驱动设计
TheDesignofGMACGigabitEthernetDriver
鲍天明.周龙,殷红武
BAOTian-ming,ZHOULong,YINHong-wu
(江南计算技术研究所,江苏无锡214083)
(JiangnanInstituteofComputingTechnology.Wuxi214083,China)
摘要:本文主要研究了GMAC千兆以太网卡驱动的基本特点,性能优
点,基本原理和设计
,分析和实现了软硬
件描述符机制以及软件设计的各个流程.千兆以太网在服务器以及
高性能计算机领域有着广泛的应用前景和市场.
Abstract:ThispaperstudiedtheGigabitEthernetcarddriverGMAC’sbasicc
haracteristics,performanceadvantages,
thebasicprinciplesanddesignmethods,analysisoftherealizationofthehard
wareandsoftwaremechanisms,aswellasde—
scriptorsofthevarioussoftwaredesignprocess.GigabitEthernethaveawider
angeofmarketsandagoodprospectsinthe
fieldofhigh-performancecomputerservers.
关键词:千兆以太网;千兆以太网卡;驱动;描述符
Keywords:gigabitethernet;gigabitethernetcard;driver;descriptor
doi:10.3969/j.issr~1007—130)(.2009.A1.095
中图分类号:TP316文献标识码:A
1引言
我们日常使用的网卡都是以太网网卡.目前网卡按其
传输速度来分可分为10M网卡,10/100M自适应网卡以及
千兆(1000M)网卡.如果只是作为一般用途,如日常办公
等,比较适合使用IOM网卡和10/100M自适应网卡两种.
如果应用于服务器等产品领域,就要选择千兆级的网卡.
千兆位以太网}】](OigabitEthernet,简称GbE)采用了与
10M以太网相似的帧格式,帧结构,网络
,全/半双工
工作方式,流控模式以及布线系统.
在服务器领域,老式的以太网速度慢,需要PC1支持,
数据吞吐率小,远远满足不了用户的需求,所以产生了千兆
以太网,以及在此基础上开发了各式各样的千兆以太网卡.
本文研究实现了一种商业性网卡的驱动设计,主要用于服
务器领域.
2GMAC千兆以太网卡特点
2.1千兆以太网
千兆以太网技术有两个标准:IEEES02.
IEEE802.3ab.IEEE802.3z制定了光纤和短程铜线连接
的标准.IEEE802.3ab制定了五类双绞线上较长距离
连接方案的标准.IEEE802.3z工作组负责制定光纤(单模
或多模)和同轴电缆的全双工链路标准.IEEE802.3z定义
了基于光纤和短距离铜缆的1000Base-X,采用8B/10B编
码技术,信道传输速度为1.25Gbit/s,去耦后实现
1000Mbit/s/~~输速度.
2.2硬件结构
本网卡使用的主要硬件系统在使用中通常被称为
GMAC子系统.其硬件结构主要分为三层:核心层,MTL
层,DMA层.核心层即II)核是GMAC-CORE,提供了硬
件的接口以及网卡内部的一些基本功能,比如说设置时钟,
网卡的重设重启,千兆的数据发送接收模块等.MTL层或
者说GMAC-MTL层主要负责数据与DMA以及FIFO缓
存之间的交互.GMAC-DMA层主要是DMA的控制及其
与系统内存的交互,与CPU的交互等等.
2.3硬件特点
(1)与CPU核心集成在同一芯片内部采用简单的内部
总线互连,降低了软件的复杂度;
3z和(2)支持64b地址访问;
收稿日期:2009—07—13;修订日期:2009—09—10
作者简介:鲍天明(1977一),男,安徽定远人,硕士生,研究方向为并行操作系统;周龙,硕士,研究方向为并行操作系统
通讯地址:214083江苏省无锡市江南计算技术研究所;E-mail:panzerbao@torn.com
Address:JiangnanInstituteofComputingTechnology,Wu,Jiangsu214083,t
LChina
340
(3)支持设备的功耗管理,具有睡眠唤醒功能;
(4)TCP/IP校验,魔包等都是由硬件完成,降低了软
件复杂性和开销,提高了数据包的吞吐率,且维护可控.
3软件驱动实现机制
3.1描述符结构
此网卡在硬件设计中就有固定的描述符结构设计用以
方便软件控制.
接收描述符结构如图1所示,发送描述符的结构与之
类似.描述符结构中通过Own位来表示该描述符是否由
硬件所使用,31位的Status域中填充了与接收相关的各种
状态信息.在描述符中使用了两个缓冲区地址及各自的长
度,当使用单向链表的结构组织描述符时,第二个缓冲区
地址记录了下一个描述符的物理地址.在本驱动实现中,
我们使用了连续的物理空间存放描述符以构成描述符环的
结构,描述符中的第二个缓冲区地址总为空.
3l0
ROSE
R0SE
ROSE
ROSE
图1接收描述符结构
3.2驱动的初始化流程
在初始化函数子流程中,完成了对Tx,Rx描述符的建
立与初始化,分配内存,启动等动作.整个初始化的流程如
图2所示.
l初始化开始l
初始化设备控制寄存器
臻霸蠢往譬冲
‘
l初始化DMA控制寄存器
?
彗鼹蕹并初始化
清除所有中断并设置
中断屏蔽寄存器
启动发送/接收过程
I初始化结束l
图2驱动的初始化流程
3.3发送与接收流程
当中断服务程序明确物理网络设备有数据包收到时,
将调用数据接收子程序来完成实际的依赖于硬件的数据接
收工作,并在接收完成后将收到的数据包往上层传.网卡
驱动的接收流程如图3所示.数据接收子程序的内容可以
由以下四点来概括:
(1)申请SKB缓冲区给新的数据包存储;
(2)从硬件中读取新到达的数据;
(3)将新的数据包往网络协议的上一层传送;
(4)修改接口的统计数据.
由于网络分层的原因,当用户要传输数据时,数据包是
沿着网络协议由上往下逐层下传的.最后,数据包将传送
图3接收流程
给网络接口.网络接口的任务就是将数据包传送给网卡,
让物理网卡完成最终的物理传输.在驱动的发送过程比较
简单,只需向当前发送描述符填充待发送的SKB,然后启
动发送过程即可.
4结束语
目前该以太网接口的硬件设计已在FPGA上实现,本
文所述驱动程序也顺利通过调试.
本文就GMAC千兆以太网卡的软硬件设计作了介绍,
主要介绍了软件驱动部分.今后需要完善的方向是集成更
多的功能,同时提高算法的效率;更长远一些就是将驱动程
序中的大部分功能集成到硬件设计的算法中去,进一步减
少软件控制的复杂度,提高性能和效率.随着以太网技术
的发展,在高性能计算领域已经开始研究万兆以太网?2],以
期达到更高的速率和使用效能,缩短数据传送延迟影响整
体性能的提升.对千兆甚至万兆以太网卡而言,以后将会
有更多的由软件实现的功能和算法转由硬件直接完成,软
件只起控制和引导的作用,提高网卡的使用功效和性能.
参考文献:
[1]RichSeifert(美).千兆以太网技术与应用[M].郎波,等译.
北京:机械工业出版社,2000.
[2]曹政,李磊,陈明宇.万兆以太网媒体访问控制层研究[J].计
算机工程,2007,33(17):31—33.
341