|
Abstract:Over Gigabit Ethernet,the terminal cpu that executes the TCP/IP stack software has become the bottleneck. In order that the end-user can take advantage of the vast band resource, this paper presents a design based on hardware to offload the total tasks involved in IP layer which were traditionally processed in software and it can directly read and write main memory through DMA(direct memory access) interface, so that the burden of CPU will be reduced. The feasibility of the design has been proved by functional simulation, post-synthesis simulation and post-place&&route simulation. This processor is a highly efficient solution with flexible circuit interfaces , less logic resources , less base pins, easy access to be integrated at low cost. Key words:Gigabit Ethernet,direct memory access,protocol processor 摘要:吉比特网络下,网络终端CPU处理TCP/IP协议的能力已经成为网络应用的瓶颈。为了使终端用户能充分利用广阔的带宽资源,该文提出了一种硬件实现方法,将原来由软件完成的IP层协议功能完全卸载出来,并通过DMA(直接存储器访问)接口直接进行主存读写,从而减少了CPU的负荷。并且基于FPGA设计流程,通过功能仿真、综合后仿真、布局布线后仿真验证了协议处理器的可行性。该处理器具有灵活的电路接口,所用逻辑资源少,管脚数量少,成本低易于集成,是一种高效的解决方案。 关键词:TCP/IP;直接存储器访问;协议处理器 1 前言 TCP/IP协议历来是处理网络上数据传输的通用语言,传统的TCP/IP技术在处理数据传输的过程中采用软件实现,需要占用大量的处理器资源。随着网络技术的发展,网络带宽平均每12个月就增长3倍,美国西蒙公司已经第一个推出了支持10G到桌面的布线系统。而且,10G BaseT IEEE标准的草案已经于2004年6月出台,最终发布时间预计为2006年6月。同期CPU的处理速度则遵循了摩尔定律即每18个月增长2倍。而基本上1Hz的处理器最多可以处理每秒1bit数据传送所产生的负载。实验表明,在800Mbit/s的线速度下,1GHz的Pentium3处理器资源占用率为100%,2.4GHz的Pentium4处理器资源占用率为30%[3]。很明显CPU的性能已经日益跟不上网络技术的进步。今后网络运用的瓶颈不再是带宽资源,而是主机CPU处理TCP/IP协议栈的能力。 IP协议是TCP/IP协议族中最核心的协议,所有的TCP、UDP、ICMP以及IGMP数据都以IP数据报格式传输,处理IP协议要耗费大量的CPU资源。为实现减轻处理器负荷、提高网络利用率的目的,可通过硬件卸载IP协议的部分任务。 本文提出了一种硬件卸载IP层协议的电路结构即IP层协议处理器,该处理器电路接口符合PCI2.2规范,通过DMA(Direct Memory Access)方式与主存直接交换数据,协议处理过程中不需要CPU的干预,能以1Gbit/s线速度进行I/O操作和协议处理,使系统性能大大提高,CPU占用率过高的问题得到有效缓解。相对当前采用嵌入式CPU的协议处理器,整个电路占用逻辑资源以及引脚数量大为减少,制成ASIC芯片后占用面积小、成本低,易于集成在网卡上,是一种廉价、优质的吉比特网络硬件支持方案。 2 协议处理器的结构和原理 根据IP协议在TCP/IP协议栈分层中所处的位置,IP层协议处理器应包含3个模块:发送端模块、接收端模块和DMA接口电路,如图1所示。当主机发送数据报时,数据经DMA接口到发送端模块进行IP层协议处理再到网卡进行链路层协议处理,最后组装为数据帧发送到网络中。当主机接收到数据报时,数据依次经网卡、接收端模块、DMA接口,最终存入主存储器中。下面详细说明各组成部分的工作原理。 DMA方式,是一种由DMA控制器完成存储器与外部设备或外部存储器之间大量数据传输的方式。由于主存和DMA之间有一条数据通路,因此主存和设备交换信息时,不通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场。这一特点特别适合于高速I/O或辅存与主存之间的信息交换。PCI总线是32位并可升级到64位的独立于CPU的处理总线,总线速度可达33/66MHz。本文通过将DMA逻辑和PCI接口规范紧密结合起来,构成了一个灵活的基于PCI2.2规范的DMA接口电路,通过此接口电路,协议处理器可通过PCI总线与计算机内存直接交换数据。接口电路结构如图2所示,图中#号表示低电平有效。其工作流程分为读、写两部分。图3是读操作的流程图,写操作流程图与之类似。

 当进行读操作时(即主机发送数据报)依次进行以下操作,(1)CPU通过PCI总线向DMA写入控制字,此时DMA为从设备状态,DMA接受到FRAME#信号后将输入设备地址和控制字锁存。(2)判断PCI总线所传设备地址是否为协议处理器地址,若是,则进入数据传输状态,将TRDY、DEVSEL信号置低电平,CPU所传的控制信息(包括内存起始地址、字节数、上层协议号、目的地址等)被写入DMA配置寄存器中。若不是协议处理器地址,则不对其响应,返回初试状态。(3)控制字传输完后,DMA接口将REQ置低电平向总线请求控制权,此时DMA控制器为主设备状态。(4)当总线上GNT为低电平时表明DMA接口获得总线控制权,DMA将FRAME置低电平,并发送内存的设备地址和读操作命令。(5)内存准备好发送数据后,总线发出TRDY#信号,DMA将数据读入缓存,此过程中若内存未准备好,TRDY为高电平,DMA控制器继续等待。(6)当DMA完成读操作的前一个周期将FRAME置高电平,随后一个周期后IRDY#也跳变为高电平,数据传输结束。(7)DMA接口发出DREQ#信号询问发送端模块是否空闲,若发送端模块空闲,则将缓存中的数据以及字节数、上层协议号,目的地址输出给发送端模块。(8)缓存数据空后,向CPU发送中断信号并返回空闲状态。以上与总线进行数据交换的过程中,一旦出现奇偶校验错误,则将PERR置低电平,并返回初始状态,下同。 当进行写操作时(即向主机发送数据报)依次进行以下操作,(1)接收端模块向DMA接口发请求。(2)若DMA控制器处于空闲状态,DMA接口将REQ置低电平向总线请求控制权。(3)GNT为低电平表明DMA控制器获得总线控制权,DMA将FRAME置低电平,并发送内存设备地址和写操作命令。(4)内存准备好接受数据后,TRDY变为低电平,DMA将数据写入主存中。此过程中若内存未准备好,TRDY为高电平,DMA控制器进入等待状态。(5)当DMA完成写操作的前一个周期将FRAME置高电平,随后一个周期后IRDY也变为高电平,数据传输结束。(6)向CPU发送中断信号并返回空闲状态。 以上两个过程的最后,DMA都向CPU发出中断请求,CPU接到中断请求后,将进行一些后处理,包括:校验送入主存的数据是否正确;决定是否继续用DMA方式传送其他数据块,若继续传送,则又要对DMA接口些入信息字,若不需要传送,则停止外设;测试在传送过程中是否发生错误,若出错,则转错误诊断及处理错误程序。
 发送端模块的电路结构如图4所示,其功能为:从传输层接受数据,根据目的IP地址选定路由,再由以太网最大传输单元MTU值对数据报作分片处理,并给每个数据报分片加上报头,最终将数据传送给链路层做进一步处理。其工作流程如下:(1)当DMA接口发送的询问信号DREQ为低平时,若此时发送端缓存已空,则将Busy置高电平,表明设备空闲可接收数据。(2)将DMA接口输入的数据(包括目的IP地址和上层协议号)存入缓存中。(3)根据目的IP地址在路由选择模块中选定下一跳IP地址,并输出给链路层。(4)在输出控制模块中,根据本地MTU(最大传输单元)值以及数据报总长度判断是否分片。(5)在报头制作模块中制作报头,并将sentrq置低电平请求向链路层输出数据报。(6)链路层将linkok置低电平表明可发送数据。若缓存中数据长度大于本地MTU值则输出MTU个字节数据然后返回(4)继续执行。否则输出全部数据。 接收端的电路结构如图5所示。接收端模块的功能为:从链路层接受IP数据报,校验IP数据报报头、调整并重组可能失序的数据报分片、删除填充位,最终向输出层输出重组后的完整数据报。其工作流程如下:(1)链路层输出Linkrq为低电平,请求接收端接收链路层数据。若接收端处于空闲状态,则将receive置低电平,表明设备空闲可接收数据。(2)在输入状态机中将链路层发送的数据报分离为数据部分和报头部分,数据部分输入缓存中。同时启动记时器,如果超过一定时间(linux系统是30秒,可以自己设定)分片还没全部到达,则输出复位信号系统返回初始状态。(3)检验模块检查IP报头的IP号、ID号、校验和等。(4)若报头检验正确,则根据报头信息中的位移字段和数据报长度字段将数据部分存入重组存储器的相应位置。(5)在重组模块中判断是否已重组完毕,若重组完毕则将ready置低电平,要求向DMA输入数据。若未重组完毕,则进入等待状态,等待所有分片全部到达。(6)DMA收到请求信号后,若空闲则将DACK置低电平,则接收端向DMA控制器输出重组后的完整数据报。 3 设计方法与关键问题 1.采用PCI接口的器件一般具有单独的PCI接口电路,一般采用专用的接口芯片,本文中将PCI接口与DMA接口合并设计,减少了电路的逻辑层次,缩小了芯片面积、功耗,提高时序性能,且在价格上也较专用芯片经济。 2.奇偶校验总是在一个周期后对数据总线AD[31:0]和字节使能信号C/BE[3:0]进行校验。33MHz主频下,校验位必须在30ns内产生。而Xilinx Sparten Ⅱ芯片每个可配置逻辑模块(CLB)仅有4个输入端,要实现36位校验,需要5级逻辑,形成了关键路径。因此设计中对校验模块采用4级流水线结构,以满足时序要求。 3.系统采用全局同步时钟,针对总线时钟频率与网卡时钟频率的差异,接受端模块缓存设计为FIFO(先入先出存储器)。 4.部分软件不包含Xilinx公司FPGA芯片的单元库(Logic Cell Library),如Modlesim Se,仿真时常报库单元不存在。设计中选用Modelsim Xe,其中已经预先编译好仿真用的Xilinx单元库。这样就很好的完成了逻辑门级和时序级(布局布线后)仿真。 4 协议处理器的仿真及实现 本设计采用的硬件描述语言是Verilog,在modelsimXE5.7下进行编译仿真,综合工具是synplicity公司专用于FPGA/CPLD的逻辑综合工具synplify pro7.1。设计采用的器件是Xilinx公司的SpartanE系列,型号XC2S300E,综合后显示共使用了5429个逻辑单元占全部逻辑资源的78%, 119个I/O引脚占全部引脚数的36%。功能仿真和综合后仿真通过后,使用Xilinx公司的布局布线工具ISE5.2对协议处理器进行布局布线。过程中采用的约束频率为33MHz(该芯片电压1.8V,对应33MHz总线频率)。由静态时序分析报告可知,所有路径都满足33MHz的约束。 时序仿真通过后,将配置文件下载到芯片中去,最后,使用ChipScope pro5.2对芯片进行在线逻辑分析。通过施加各种情况的激励仿真可知,协议处理器完全符合设计要求。 5 结论 本文作者创新点:研究了一种通过硬件实现网络协议处理的方法以减轻高速网络中CPU的沉重负荷,提高网络利用效率,并通FPGA对协议处理器进行了仿真验证,其时钟频率为33MHz,应用于32位计算机时其线速度为1GBit/s。与传统采用嵌入式CPU的协议处理器相比,该处理器是真正的完全用硬件方式进行IP协议处理,速度更快,且占用资源少成本低,管脚数量少面积小易于集成,可为吉比特网络提供高效廉价的解决方案。 参考文献: [1]朱海君,敬岚,陆军.基于MSC1210单片机的串口通讯设计[J].微机算计信息,2004,4:48 [2]David V.Schuehler,James Moscola John W.Lockwood. Architecture for a hardware-based, TCP/IP content-processing system .IEEE Computer Society,2004,4:62-69. [3]Neal Bierbaum. MPI and embedded TCP/IP Gigabit Ethernet cluster computing.Proceeding of the 27th Annual IEEE conference on local computer networks. [4]Hrvoje Bilic,Yitzhak Birk, Igor Chirashnya and ZorikMachulsky. Deferred segmentation for wire-speed transmission of large TCP frames over standard GbE networks. IEEE Hot Interconnects,2001,9:81-85. [5]罗晓富,李永才,李欧等.基于PCI9656控制芯片的高速网卡DMA设计.微计算机信息,2005(21):54-56. 作者简介:颜永红,男,1956年出生,博士学位,湖南大学应用物理系教授.主要从事集成电路设计的教学和研究工作;张帆,男,1981年出生,湖南大学应用物理系,硕士研究生,课题方向为,数字集成电路设计,E-mail:zhangfanboy@sohu.com。 通讯地址:410082 湖南长沙 湖南大学物理系 |