一种高带宽网络处理器数据总线接口模块的设计方案的制作方法

文档序号:7663580阅读:209来源:国知局
专利名称:一种高带宽网络处理器数据总线接口模块的设计方案的制作方法
一种高带宽网络处理器数据总线接口模块的设计方案所属领域本发明属于电子信息和通信技术领域,特别是关于Internet网络处理和数据传输领域。
背景技术
Internet是面向信息传输、交换、存储、访问的网络,它以“更大、更快、更安全、更及时、更方便”的趋势发展。近十年来,通信技术和计算机技术的快速发展,推动了网络技术的更新。Internet是由许多网络相互连接而成的,而路由器就是网间连接设备,或称互联网设备。Internet是由大量的路由器、交换机等设备构成的网络,路由技术则是Internet网络运行和发展的关键技术之一。性能与功能是路由器技术追求的两大目标,网络速度、传输带宽和网络规模的快速增长迫使路由器交换和转发能力不断提升,路由器提供的服务能力更强大。
新型路由器必须具备高速网络协议处理、端口线速转发和业务可灵活配置的特点。在这种要求下,网络处理器(Network Processor)应运而生,为下一代网络边缘产品的设计提供了灵活和高性能的解决方案。网络处理器是一种专用于网络系统的微处理器,是一种基于可编程ASIC结构的新一代SoC芯片,结合了 ASIC速度快和软件灵活性高的优点[4]。通过灵活的软件体系提供硬件级的处理性能是网络处理器的关键特性。网络处理器的出现为网络系统构建了一个硬件平台,能够通过软件的升级以适合不断增长的功能需求,因而具有十分重要的意义。网络处理器的出现,标志着设备对数据分组的处理能力从低层粗放式处理过渡到高层细化处理。随着网络与通信技术的不断发展,以路由技术为基础的Internet网络的传输速率与结构复杂度呈现大幅度提高。近年来,路由结构的核心技术之一已经转移到网络处理器领域,而总线接口作为网络处理器与外部进行数据交换的关键模块,其性能成为决定网络处理器能否以线速高效转发网络数据的重要因素。本发明以网络处理器相关研究为背景,给出了一种数据总线接口模块的设计方案。数据总线接口采用状态机的方法实现数据的接收和发送,提供两个独立的FIFO存储器作为数据的缓冲存储,并由仲裁模块分配总线控制权。在功能上保证数据处理单元只需向接口单元发出数据接收或发送的请求,总线接口就可以自动的完成数据的接收、发送及缓存,可高效完成接口数据交换。本发明完成了总线接口系统结构的设计和各模块的硬件语言描述,并完成了模块级和系统级的功能仿真。所设计的总线接口的数据位宽为64位,在104MHz的频率下可以达到6. 6Gbps的带宽,并支持多种工作模式和多网络处理器互连,具有很好的灵活性。

发明内容
网络处理器的数据流和控制流中网络上的信息可分为数据流和控制流,它们的传递也被抽象成数据平面和控制平面[18]。数据平面一般是做快速转发的,而控制平面为快速转发准备必要的信息。控制平面一般包括路由协议、设备管理等;而数据平面一般就是转发包。划分的目的是把系统的主要工作和次要工作分开,避免不同类型的处理相互干扰。在网络设备里面,数据转发是最主要的工作,它具有最高的优先级。数据平面可以借助ASIC或者NP等优化,达到很高的速度,而控制平面则可以借助于通用的库或者系统,以达到更好的保护。网络处理器从逻辑上也可以分成这两个层面。数据平面由片内处理器高速转发引擎构成,可以实现路由器端口数据的线速转发;控制平面由协议处理模块即协处理器组成,完成复杂的网络协议处理。在网络处理器中,数据平面和控制平面被分开处理,被为网络处理器的数据处理单元和数据控制单元。网络处理器的数据处理单元主要完成以下基本功能IP数据包合法性检查、目的地址解析、路由表查询、校验和计算等。数据处理单元的设计必须满足线速处理数据包的性能要求,绝大部分的IP数据包都是通过数据平面处理和转发的。数据控制单元通常运行运算密集型的处理程序,主要包括控制协议的处理、路由协议的处理、网络管理协议的处理,路由器配置协议的处理等等。数据控制单元在接收到来自网络接口的控制协议数据包之后,把该数据包交给特定的网络协议实体进行处理[4]。论文主要分析网络上的的数据流,研究网络处理器数据平面总线接口的数据传输。
网络处理器针对路由应用的特点网络处理器是一种新型的CPU类型,是专门用于满足网络路由和交换设备的需求而设计的。网络处理器的基本功能是以线速分类及转发数据分组。传统的CPU为数据处理而设计,适合于进行数学计算,并针对数据处理中访问存储器的局部性进行优化。在传统的CPU中,Cache被用来提高数据的访问速度。但是,网络中处理的数据只流过处理器一次,不存在数据访问的局部性规律。所以,传统的处理器不适合网络处理的环境。网络处理器实际上是一个单片多处理器系统。在这种结构中,从网络中收集的数据直接放入存储器中进行排队。高速转发引擎对分组头进行扫描,并进行即时的决策,决定数据的转发方式。多个高速转发引擎使得网络处理器能够高速处理网络中同时到达的多个数据流。网络处理器是可编程的,其中的高速引擎根据指令对数据进行扫描并管理数据流,使得程序员能够具有完全的灵活性。这种可编程性意味着基于网络处理器的设计可以缩短开发周期以便快速进入市场,可以更新软件以延长使用寿命。使用网络处理器还意味着可以构建一个统一的、开放的通用网络系统硬件平台,允许第三方软件厂商开发更好的路由器软件,为路由器软件的开发和推广创造条件。网络处理器中的核心处理器可以处理一些对时间要求较低的复杂的任务,如确定路由、多条线路之间的负载平衡,以及解决冲突问题。核心处理器的软件可以比较复杂,可以包含操作系统和各种协议软件。为了便于核心处理器软件的开发和应用,核心处理器通常采用市场上常见的通用CPU。在路由器中,网络处理器具有下列数据通信功能。首先,为用户提供可编程缓冲器管理,可以根据缓冲器管理算法做出转发及丢弃决定。其次,提供业务量整形功能,可以根据调度算法调度数据分组的传输。第三,能实现数据流修正。数据流修正包括数据流内的数据处理、报头与报尾的增加或删除,根据相关协议对数据进行封装、分段。所有数据流修正单元应该都是可以由用户编程的。当前的网络环境变化有两个趋势一方面,不断变化和增加的网络协议标准。这些协议包括一些新的服务、安全措施,以及一些新加的网络管理功能。网络设备商需要在产品中加入一些与众不同的功能来提高市场竞争力。这就要求网络设备具有可编程性和灵活性,来迅速满足市场要求。尽管由于网络技术的发展,网络带宽以及网络速度都得到了极大的提高,但需要通过网络传输的数据却也几乎以与网络发展速度相同的速度增加,甚至超过网络发展的速度,这使得网络带宽与网络速度依然是一个瓶颈问题。带宽是一个很重要的数字通信概念,特别是在分组交换网内,它量化了链路或网络路径上单位时间内的数据传输量,以比特每秒(bit per second, bit/s或bps)为单位度量。总线上最大的数据传送率即带宽可表示如下通信信道的最大理论容量和实际能实现的数据传输速率间是有差别的,这个实际的速率称为吞吐率,表示在给定的时期内两个节点之际所传输数据总量。吞吐量取决于软硬件的速度、处理单元的能力等等。总的来说,带宽是信道的理论容量的量度,描述了信道能够支持的数据总量;吞吐率告诉我们信道实际能达到的容量。 数据总线接口的设计目标是作为网络处理器与外部设备进行数据交换的媒介,数据总线接口的性能对于网络处理器能否以线速转发网络数据具有重要的影响。目前互联网的发展要求数据总线接口既要有足够高的带宽以满足数据传输要求,又要拥有多功能性和可扩展性,以适应多种外接设备和提供多种网络服务。按照“网络处理器相关IC设计研究”项目的要求,给出了数据总线接口模块的设计目标,包括接口模块的主要功能指标和基本的数据传输方式,作为其详细设计的基础和参考。针对网络处理器与外部设备进行数据传输的要求和网络处理器的核心一数据处理单元对总线接口单元的功能要求,本文所设计的总线接口需要满足以下功能指标接口数据的传输方式是网络处理器总线接口的数据以固定比特位的微包(mPacket)为单位进行处理,大于微包的以太网数据帧被分成若干个微包在总线上传输,这样可以使得总线接口比较简单。第一个微包是数据帧中的第一个数据块,接收到这个微包时接口设置SOP (Start of Packet)标记,在接收到数据帧中的最后一个微包时,接口设置EOP(End of Packet)标记。如果外部的数据帧小于微包的最小长度,则将其填充并将其表示成一个微包,这时接口既设置SOP标记,又设置EOP标记。数据微包mPacket可在SOP和EOP标识下进行重组,网络数据处理单元会分配一个新的缓存buffer给标记有SOP的数据微包,SOP数据会放置在缓存的起始位置。对于没有标志SOP的数据包会被直接置于上一个mPacket之后,只有在完整的数据包接收后,才能知道它的长度。在本文所设计的网络处理器数据总线接口单元中,数据是以64bit或32bit微包形式进行传输的。主要根据网络处理器及路由结构的现状,提出一种用于互联网络层和网络接口层数据收发的总线接口结构,同时根据网络处理器数据传输的要求,提出了接口的功能设计指标。这种总线接口可以提供高带宽的数据传输通路,同时又支持多种工作模式和多个处理器共享总线,具有高度的灵活性。网络处理器数据总线接口的实现根据网络处理器数据总线接口的功能指标,进行了系统结构的规划、模块的划分及各子模块的详细设计。为满足功能需求,将数据总线接口划分为接收/发送模块、总线仲裁模块、控制与状态寄存器、数据缓冲存储模块和端口控制模块等六个子模块。用框图的方式说明了所设计的总线接口的系统结构和各子模块之间的连接关系,对各个子模块的功能特点进行了详细的描述,其中接收、发送和仲裁模块是本章设计的重点。通过对系统架构和功能模块的设计,实现网络处理器与网络接口层MAC设备的数据交换。根据网络处理器的路由特性和网络数据总线接口的设计目标,总线接口的模块大致划分如图2所示,如图为总线接口的主要功能模块结构框图,主要包括6部分两个FIFO作为数据缓冲存储模块用来缓存接收和发送的数据,控制与状态寄存器主要用于在总线接口模块和网络处理器数据处理单元之间传递控制信息,包括请求的发出、任务处理情况的反馈等,另外还可以配置总线接口的工作模式。接收与发送模块控制将发送FIFO的数据发送到数据总线以及将MAC设备的数据存入接收FIFO。总线仲裁模块负责在接收模块、发送模块和其它网络处理器之间分配总线的控制权。一.本发明的数据缓冲存储模块设计缓冲FIFO存储格式
由于网络处理器内数据处理单元与外部数据接口的时钟频率不同,而大量的并行数据要在不同时钟域之间相互传递,所以采用了异步FIFO来缓存这些数据。共有两个FIFO分别用来缓冲接收和发送数据。这两个数据缓冲单元为FIFO结构,即First In First Out,由十六个单元组成,每单元十个四字,共八十个字节。FIFO的存储核心采用了 SRAM存储阵列,由于FIFO的数据宽度是64位,所以读和写都需要八位的地址。FIFO内每个单元除了有八个64位的数据字段外,还有两个扩展字段,对于发送缓冲TFIFO来说,这两个是控制字段和预先挂起字段;对于接收缓冲RFIFO来说,这两个是状态字段和扩展数据字段。详细的FIFO格式和各字段的地址见。从发送状态机的角度来看,TFIFO是一个十六单元的循环缓存,扩展字段放置控制字段和预先挂起字段,另外八个四字放置数据信息。传输数据字段是64字节的FIF0,存放要发送的数据;预先挂起字段为8字节,存放根据实际需求放置的、在发送数据字段之前发送的数据;控制字段为8字节,存放本单元的数据发送控制信息,用来指示发送状态机如何发送数据。从接收状态机的角度看,RFIFO也是由一个十六单元的循环缓存,扩展字段放置状态字段和扩展数据字段,另外八个四字放置数据信息。传输数据字段是64字节的FIF0,存放要接收的数据;状态字段存储状态模式下EOP之后接收到的状态信息。在半双工模式下,接收状态机通常读取四字的状态信息并将其放置到RFIFO的状态字段;在全双工模式下,四字的状态信息需要接收状态机两次读取总线。扩展数据模式用于Fetch9模式。这种模式下接收数据可达到9个四字,第9个四字存放在RFIFO的扩展数据字段。由于FIFO是以四字为单位读取和写入的,而网络处理器数据处理单元的数据位宽是32位,所以在以全双工方式工作时,TFIFO的写入端和RFIFO的读出端有额外的32/64位转换电路,RFIFO的写入端和TFIFO的读出端也需要有额外的32/64位转换电路。
数据微包中的数据部分一般不需要处理,可以直接放入存储单元,所以在设计缓冲FIFO时增加了 FIFO与数据处理单元的自动存取通道,数据可以不经数据处理单元直接移入存储单元。数据处理单元对接收和发送模块的访问方式是不同的。对于TFIF0,数据处理单元会将已处理好的数据以32位的数据位宽写入TFIF0。每个单元的数据写入FIFO后,控制字段中将写入如何发送该单元的控制信息,并通过指令置位这个单元的有效标志。发送状态机对TFIFO的读取是以单元为单位的,执行一次发送请求是对整个单元内十个四字数据的处理,且因为TX_PTR只能加一而不能被写入特定值,发送状态机只能连续的为TFIFO单元服务。而对于RFIF0,由于接收状态机不必像发送状态机那样只能逐一增加单元地址,而是按照接收请求的指示一次性将数据写入RFIFO单元,所以数据处理单元读取RFIFO的信息时会根据接收状态寄存器的信息,以长字为单位来读取。二 本发明的接收模块设计
接收模块从RCV_REQ寄存器获得接收请求,由总线仲裁器使能,控制RFIFO将MAC数据存入,并将接收信息写入RCV_CNTL寄存器用以告知数据处理单元数据接收的情况。数据处理单元将接收控制信息写入RCV_REQ寄存器,当请求到达RCV_REQ的FIFO顶端时由接收状态机获得,接收状态机向总线仲裁器发出信号来申请获取总线控制权。在获得总线后,接收状态机根据控制寄存器的信息开始产生RFIFO写地址。地址产生的过程就是数据接收的过程。此时接收状态机会使RFIFO的写使能有效,同时通过MAC_SEL和P0RT_SEL选通指定的设备及端口,并按照图3. 5中的RFIFO单元格式,根据接收请求的不同内容依次产生8个、9个或16个RFIFO单元的写地址。若在写数据期间出现EOP信号或RXFAIL信号,则终止写入数据。在数据接收完成时接收状态机会向总线仲裁器发出完成信号,示意总线仲裁器收回总线控制权。接受部分端口说明SOP端口 数据包起始信号,MAC提供;EOP端口 数据包结束信号,MAC提供;RXFAIL端口 接收错误,MAC提供;FBE[7:0]端口 有效字节,即EOP出现导致接收提前结束情况时,最后一次接收的四字中的有效字节,MAC提供;FAST_RX端口 快速端口就绪标志,处于快速端口模式时向接收状态机提供两个快速端口是否存在有效数据,MAC提供。三 本发明的发送模块设计与接收模块的工作方式不同,发送控制信息不是通过控制与状态寄存器发出,而是储存在TFIFO单元的控制字段中。TFIFO单元地址由只能连续递加的指针TX_PTR提供。另有一组寄存器TX_RDY_CTL标记TFIFO单元是否有效。只有在TX_PTR指针指向TFIFO有效单元且发送状态机被使能时才能执行数据发送。TFIFO控制字段格式每个TFIFO单元均有一个四字长度的控制字段,用来存放控制发送本单元数据的信息,这些信息指导发送状态机正确工作。控制字段的格式如下TXERR/TXASIS :决定发送状态端口的输出;
PREPEND:发送挂起标志。若置位,挂起字段的数据在数据字段之前发送;VLD QffORDS :有效四字。指定TFIFO单元中的有效四字个数;FBE =TFIFO单元中最后一个有效四字的有效字节数;EOP :包结束。EOP端口在最后一个数据周期置位;S0P:包起始。SOP在第一个数据周期置位;ERR :错误置位。若置位则发送状态机不发送该单元而跳到下一个单元;MAC MAC 设备号;PORT:端口号。
部分端口说明 TX_PTR =TFIFO单元指针。提供TFIFO的单元地址;PTR_INCR :指针增加信号。发送状态机完成此单元的发送任务时,由此端口指示TX_PTR加一从而指向下一个单元;T_VALID :将TX_RDY_CTL寄存器中发送单元的有效标志位信息提供给发送状态机;T_VALID_CLR :发送状态机完成一个FIFO单元的发送后向TX_RDY_CTL寄存器发出信号指示其可以将当前单元的有效标志清除;CTL :传递TFIFO当前单元控制字段的信息给发送状态机;Rd_addr :提供TFIFO的八位读地址;TXASIS_ERR :发送状态端口。四 本发明的端口控制模块设计图5画出了总线接口的主要模块,如发送/接收模块和总线仲裁模块等,每个模块都有内部的输入输出端口。在接入总线时,需要一个模块将总线接口各个模块端口统一,实现这些多功能端口的功能转换。 在全双工模式下,数据接收和发送同时进行,需要两组MAC和PORT选择端口。网络处理器提供一个四位的端口 MAC_SEL[3:0]用来发出设备选择信号。在全双工模式下,该端口的高两位用于选择发送设备,低两位用来选择接收设备。网络处理器的端口选择信号P0RT_SEL[2:0]在全双工时只用于接收设备的选择,而发送设备的选择会征用网络处理器的通用端口 GPI0[2:0]来发出发送端口选择信号。在全双工模式下,网络处理器的SOP和EOP端口将只用于数据的接收,数据发送的SOP和EOP将会征用令牌请求端口 TK_REQ_IN和TK_REQ_0UT。在半双工模式下,无需征用其他多功能端口。若选择1-2 MAC模式,MAC_SEL[3:0]仍旧是高2位用于选择发送设备,低2位用于选择接收设备。若选择3-4/3-7 MAC模式,MAC_SEL[3:0]将不再分为发送和接收选择,而是四位全部用来选择设备。端口控制模块将外部端口和各个功能子模块连接起来,并实现在不同工作模式下对多功能端口的的控制。


图I路由器的基本组成图2总线接口结构框图
图3网络处理器的工作方式图4接口模块设计图5接收模块系统结构图6发送模块系统结构
具体实施例方式分析总结新一代路由结构的核心一网络处理器的功能特点,由于网络处理器具有快速处理数据的能力,同时又具有可编程的能力,现已成为网络路由设备的关键部件。通过对网络数据传输的分析,指出网络处理器与外部设备进行数据交换的总线接口的性能已成为影响着网络处理器能否以线速高速有效的转发网络数据的重要因素。基于网络处理器及其数总线接口的重要性,结合所在项目“网络处理器相关IC设计研究”的要求,给出了一种高带宽的数据总线接口模块。该总线接口执行网络处理器与网络接口层MAC设备的数 据交换,要求具有64位的数据位宽,同时支持包括全双工、半双工在内的多种工作模式,在104MHz的频率下可以达到6. 6Gbps的极限带宽以满足网络处理器以线速转发数据和支持多种设备模式的要求。根据实现要求,按照网络处理器数据传输的功能指标,对数据接口模块进行了系统结构的规划和各功能子模块的详细设计。为达到所需求的功能,设计了六个独立的功能模块接收、发送模块实现多组数据的自动收发;总线仲裁模块负责在接收、发送模块和其他网络处理器之间分配总线控制权,从而实现了多个网络处理器共享总线的功能;控制与状态寄存器完成数据传输请求的传达、数据传输信息的反馈及工作模式配置,有效地在网络处理器的数据处理单元和数据总线接口模块之间传递控制信息;两个数据缓冲单元分别用来缓存接收和发送的数据;最后,用一个端口控制模块来管理多功能端口,使得用尽量少的端口实现多种工作模式下的不同的功能。通过对接口模块的设计得到了系统的Verilog代码描述以及模块和系统详细的功能特性。通过编写测试程序和引入辅助文件,搭建了仿真平台,用于对所设计的总线接口的代码进行功能仿真。模块级仿真的主要目标是要求的功能可以正确实现,系统级仿真的目标是在各种工作模式下系统都可以正常运行。仿真结果表明,所设计的系统和子模块均可以正确有效的完成所要求的功能。设计用于网络处理器与MAC设备进行数据交换的数据总线接口模块,完成了系统结构设计、功能模块的硬件语言描述和功能仿真。仿真结果证明了所设计的总线接口模块实现了以下功能高效的执行数据处理单元的任务请求,自动完成数据微包的接收、发送和缓存,并及时向数据处理单元反馈控制信息;具有最高64位的数据位宽,在项目规划的频率下总线接口的数据吞吐能力满足数据处理单元的数据处理能力;支持多种工作模式,包括全双工、半双工、快速端口(千兆MAC设备)、慢速端口(10/100M MAC设备)等,使网络处理器在设备支持上具有较高的灵活性;可以挂接最多7个MAC设备多达56个端口,同时支持多个网络处理器并行工作共享数据总线,为网络处理器构成中高端路由器提供了良好的可扩展性。
权利要求
1.一种网络处理器高带宽数据总线接口模块的设计方案,其特征在于,划分六个独立的功能模块接收、发送模块,总线仲裁模块,控制与状态寄存器模块,两个数据缓冲模块,一个端口控制模块。
2.根据权利要求I所述的一种网络处理器高带宽数据总线接口模块的设计方案,其特征在于,接收、发送模块实现多组数据的自动收发。
3.根据权利要求I所述的一种网络处理器高带宽数据总线接口模块的设计方案,其特征在于,总线仲裁模块负责在接收、发送模块和其他网络处理器之间分配总线控制权,从而实现了多个网络处理器共享总线的功能。
4.根据权利要求I所述的一种网络处理器高带宽数据总线接口模块的设计方案,其特征在于,控制与状态寄存器完成数据传输请求的传达、数据传输信息的反馈及工作模式配置,有效地在网络处理器的数据处理单元和数据总线接口模块之间传递控制信息。
5.根据权利要求I所述的一种网络处理器高带宽数据总线接口模块的设计方案,其特征在于,两个数据缓冲单元分别用来缓存接收和发送的数据。
6.根据权利要求I所述的一种网络处理器高带宽数据总线接口模块的设计方案,其特征在于,一个端口控制模块来管理多功能端口,使得用尽量少的端口实现多种工作模式下的不同的功能。
全文摘要
本发明是一种网络处理器高带宽数据总线接口模块的设计方案,按照网络处理器数据传输的功能指标,对数据接口模块进行系统结构的规划和各功能子模块的详细设计。本发明设计了六个独立的功能模块接收、发送模块实现多组数据的自动收发;总线仲裁模块负责在接收、发送模块和其他网络处理器之间分配总线控制权,从而实现多个网络处理器共享总线的功能;控制与状态寄存器完成数据传输请求的传达、数据传输信息的反馈及工作模式配置,有效地在网络处理器的数据处理单元和数据总线接口模块之间传递控制信息;两个数据缓冲单元分别用来缓存接收和发送的数据;最后用一个端口控制模块来管理多功能端口,用尽量少的端口实现多种工作模式下的不同的功能。
文档编号H04L29/10GK102780789SQ20111012071
公开日2012年11月14日 申请日期2011年5月11日 优先权日2011年5月11日
发明者孙然 申请人:孙然
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1