- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
FPGA研究设计平台为网络发展加速
例如,对外部存储器存取来说,网络监控器会采用一个大型的基于流量的统计表,而且多数情况下可能还需要一个流量分类查找表。对两者的存取都会带来较短的时延,因为流量分类需要对内部依赖性进行多次查找,而流量统计表的更新则一般会覆盖整个读取—修改—写入周期。因此,SRAM是合适的器件选择。不过流量管理器主要需要大量存储空间用于包缓存,通常出于密度要求,还会采用DRAM组件。对外部存储器而言,最后可以考虑使用需要路由表查找和包缓存的IPv4路由器。
总结各种应用的要求,我们认识到某些功能会占用外部存储器带宽,不管是SRAM还是DRAM。包缓存(要求大量存储空间)适合采用DRAM,SRAM则更适用于流量分类搜索存取、路由表查询、基于流量的数据统计表或基于规则的防火墙、用于包缓冲区实现的存储器管理表以及报头队列等。
所有这些功能都需要逐包执行。因此,假定在最恶劣的情况下最小尺寸的包是带20字节开销的64字节,系统需要处理的包率就是大约每秒6000万个包。其次,我们需要将存取做进一步的区分。首先,许多存储器组件,比如QDR SRAM和RLDRAM SIO器件有独立的读/写数据总线。由于存取模式不能假定为系统分布,我们就无法汇聚总的存取带宽,不得不对单独考虑每项业务。
另外,还存在第三类存取,就是"搜索"。搜索可以通过基于TCAM的器件很好地完成,搜索时延固定,且确保能获得搜索结果。不过,出于价格和功耗方面的考虑,以及TCAM会进一步限制I/O使用,我们不准备在我们的开发板上使用TCAM器件。搜索还可以通过诸如决策树、哈希算法和分解法等其他方式来完成,可采用高速缓存也可不用,仅以这些为例。为了便于探讨,我们假定完成一次搜索平均需要近两次读取。鉴于此,以及对数据宽度进行了一些惯常的假设后,我们将要求精简为表1所示。
表1:SRAM带宽需求。
假定接口上的时钟速度为300MHz,那么QDRII接口可以实现每秒2X300=6亿次读/写存取操作。因此,三个QDRII x36位的接口就可以满足我们的所有要求。
对于DRAM存取,我们主要考虑的是包存储的方便程度,仅从存储器中对包进行一次读/写。把包开销从原本进入的2x40Gbps中扣除后,这相对于约62Gbps的存取带宽。用物理资源来衡量,RLDRAMII存取可以实现约97%的效率,而DDR2或DDR3存储设备则可能在40%左右,因此会要求多得多的I/O。因此我们选择了RLDRAMII CIO组件。两个运行在300MHz的64位RLDRAMII接口提供的总带宽可以大致满足这个要求。
网络接口
NetFPGA-10G的网络接口由4个能够以10Gbps或1Gbps以太网链路方式运行的子系统构成。为了最大化平台的利用率和最小化功耗,我们使用了4个增强型小型封装可热插拔(SFP+)模块(cage)作为物理接口。与XENPAK和XFP等其他10G收发器标准相比,SFP+在功耗和尺寸方面有着明显的优势。使用SFP+模块,可以支持一系列接口标准,包括10GBase-LR、10GBase-SR、10GBase-LRM和低成本直联SFP+铜缆(双同轴)。此外,还可以利用针对1Gpbs运行的SFP模块,从而支持1000Base-T或1000Base-X物理标准。
4个SFP+模块每个都通过SFI接口连接到一个NetLogic AEL2005器件。AEL2005是一个带有符合IEEE 802.3aq规范的嵌入式电分散补偿引擎的10Gb以太网物理层收发器。除了常规的10G模式,该物理层器件还能够支持千兆位以太网(1G)模式。在系统侧,这些物理层器件通过一个10Gb连接单元接口(XAUI)连接到FPGA。在1G模式下工作时,其中一个XAUI信道用作串行千兆位介质无关接口(SGMII)。
Virtex-5 FPGA内部提供适当的IP核。对于10Gbps的业务,赛灵思推出了XAUI LogiCORE IP核和10Gb以太网媒体访问控制器(10GEMAC)LogiCORE IP核。对于1G的业务,接口可以直接连接至赛灵思嵌入式三态以太网MAC内核。
PCIe子系统
NetFPGA-10G平台使用开放式组件可移植性基础架构(OpenCPI)作为开发板和计算机主机通过PCIe互联的主要互联实现方式[7]。我们目前支持x8的第一代,将来可能会升级到支持第二代。OpenCPI是一种通用开源框架,用于连接使用不同类型的通信接口、且带宽和时延要求不同的IP模块(串流、字节可寻址等)。就其本质来说,OpenCPI是一种高度可配置的框架,能够为用于快速实现新设计的IP核提供关键性的通信"桥梁"。
OpenCPI为NetFPGA-10G平台带来了一些关键特性。在软件侧,我们能够提供无干扰(clean)DMA接口,用于传输数据(主要是数据包,虽然也有其他类型的信息)以及通过编程的输入/输出控制器件。对于网络应用,我们提供Linux网络驱动程序,将网络接口导出到NetFPGA器件上的每个物理以太网端口上。这样可以让用户空间软件把网络数据包传输到器件上,并且读取设计中任何主机可视寄存器。
在硬件侧,OpenCPI为我们提供了无干扰、甚至多种数据流接口,而且每个接口都可以通过OpenCPI框架进行配置。此外,OpenCPI能够处理主机侧和硬件侧所有的缓存和PCIe事务处理,这样用户就能够集中精力进行特定应用开发,而不必处理器件通信的细节。
扩展接口与配置子系统
扩展接口子系统的目的是让用户通过连接第二块NetFPGA-10G板卡来增加端口密度,比如通过光学子卡来丰富网络接口特性,或者通过高速串行接口连接更多搜索组件,比如基于知识的处理器等。我们将FPGA上的20个GTX收发器取出,然后通过AC耦合传输线连接到两个高速接插件上。这些接插件是为诸如XAUI、PCIe、SATA和Infiniband这样的传输接口设计的,既可以通过匹配接插件直接连接到另一块板卡上,也可以通过电缆组件连接到另一块板卡上。每条传输线经测试双向传输速率均可达到6.5Gbps,从而为进出FPGA提供了一条额外的130Gbps数据路径。