APP下载

基于网络处理器外扩TCAM的研究与实现

2012-03-15李诗革李文耀

电视技术 2012年15期
关键词:表项流水线寄存器

李诗革,李文耀,王 欢

(武汉邮电科学研究院,湖北武汉430074)

随着网络的不断发展,传统的纯硬件专用交换芯片内缺乏拓展性,这使得它不具备各种数据业务表项的存储功能,跟不上现代网络发展的速度,基于网络处理器的TCAM扩展就是在这种背景下产生的。TCAM全称为三态内容寻址存储器,在网络高度发展的今天,它作为网络处理器查找ACL路由表项的关键技术在于TCAM芯片的灵活匹配性能和硬件可拓展性,灵活的匹配性能可以任意匹配320位宽的表项字段,硬件的拓展性在于它能够级联多片TCAM芯片,扩展其内存空间,总之研究和实现网络处理器外扩TCAM将会对各种表项的存储具有指导意义。

1 网络处理器基本概念

网络处理器是专门处理数据包业务而开发的网络产品,它灵活的可编程能力和强大的接口扩展能力,在各种系统平台设计当中都起了主导作用[1]。可编程能力方面体现在其流水线支持可编程的指令集,利用可编程的指令集可以编写微码实现各种业务的处理。而强大的接口扩展能力是实现表项外部存储的关键技术,同时支持PCIe接口,实现网络处理器与CPU的连接通信。网络处理器很好地体现了上述思想,在高性能、灵活性和低成本等几个目标之间进行了良好的折中。优异的性价比、高度的灵活性、软件升级能力和较短的上市时间是网络处理器在1P网络设备开发方面的主要优势。

2 TCAM的内存管理

外扩TCAM的内存分配由具体TCAM芯片的容量决定,对于不同型号的TCAM芯片,内存的分配采用的模式不一致[2]。TCAM芯片的内存分配由Super Bank号和Bank号共同作用,一个Super Bank号包含4个Bank号,它们将地址空间分成不同的片区,每个片区的内存空间都是一样的,对于20 Mbit的TCAM芯片,总共16个Super Bank号0~15,那么对应的Bank号就是0~63。不同的片区可以存放不同位宽的表项,将各种表的表项区分开来,有利于微引擎更好地对各种表项进行查找。网络处理器通过可编程流水线调用微音器查找TCAM表项时,通常会与SRAM表项配合使用。在下发表项的时候,表项的匹配字段存放在TCAM表中,而回应结果放在SRAM表当中。在TCAM表中,采用Lookup操作实现对表项索引号的获得,然后通过索引号到SRAM中去寻找相应的条目,并回送结果。

内存分配管理的关键在于网络处理器查找表项时的地址内存映射,在微引擎查找表项时,采用外扩TCAM的逻辑号对应于各种表的地址和位宽,然后到具体表中去匹配相关字段,获取索引号。TCAM逻辑号是通过低层驱动代码定义的,它分配了16个逻辑号,每个逻辑号查找的位宽都有规定,然后通过微码中定义的TCAM表的地址和索引号计算出SRAM中查找表项的绝对地址获得相应的查找结果。

3 网络处理器外扩TCAM的设计

网络处理器通过可编程流水线的微码控制实现对数据业务的处理,在数据业务中,从不同端口进入网络处理器的数据包,会解析数据包头部的相关字段,通过相关字段,在内部集成的TCAM和SRAM去匹配表项的字段,获得相应的数据结果,再利用回送的结果继续匹配其他表项。然而在这一过程中,一旦出现TCAM或SRAM的内存不够和表项位宽大于每个地址单元的位宽情况时,网络处理器可以通过外扩TCAM的方案解决上述问题。

如图1所示,在外扩TCAM的设计中,网络处理器模块包含两个组成部分,即微引擎单元和可编程流水线,微引擎单元对表项的各种操作抽象成一个集合,通过预编写指令系统下发指令控制各种表项操作。在可编程流水线处理各种数据包时,会利用各个微引擎访问点调用微引擎的相关操作进行对外扩TCAM表项的读写。可编程流水线通过请求通道和回应通道与微引擎单元进行通信,请求通道的位宽是160 bit,主要包含相应的请求字段;回应通道的位宽是128 bit,由TCAM的返回字段组成。微引擎单元经过复杂的数据处理通过TCAM PHY口将数据总线、地址总线、时钟总线连接到外部TCAM的芯片引脚上去[3]。

图1 网络处理器外扩SDRAM设计

由于各PHY对于工作时序有着严格的要求,所以单在初始化时对几个DLL模块进行简单的默认值配置是无法满足具体使用需求的。所以应该在其初始化以后,开始使用微码引擎以前,执行PHY的读写校准流程。

4 外扩TCAM的具体实现

外扩TCAM的具体实现体现在硬件初始化方面和软件表项的存储和查找,硬件初始化主要是通过驱动代码实现,集成于控制平面代码当中。而软件表项的存储和查找实现对外扩TCAM的访问代码,集成于流水线处理业务的微码当中。微码负责调用微引擎,微引擎负责执行查表操作[4]。

硬件初始化是针对TCAM芯片设备的就绪问题,在这一过程中TCAM芯片要经历以下4步:

1)根据实际PCB的布局走线,获取实际初始化参数。

2)获得了初始化参数后,进行基本的初始化设置,配置相关寄存器状态。

3)配置好寄存器的初始化状态后,进行读写校验。

4)读写校验完毕后,最后进行TCAM芯片自检。

这4个步骤缺一不可,而且相互联系,在进行初始化过程中,如果某一个步骤不合格,将会造成初始化不成功,因此在调试时要对每个步骤进行定位,查找打印相关参数信息。

在软件表项的存储和查找的实现当中,主要是对外扩TCAM的访问,具体要针对不同的数据业务使用外扩TCAM实现对表项查找,这里不作过多阐述。具体的外扩TCAM硬件初始化的第2个步骤的实现如图2所示[5]。

图2 硬件初始化寄存器设置

图2中,DLL是针对PHY中所提到的数据锁,主要是配置相位,它分为主数据锁和从数据锁,这个是根据具体走线、线宽来计算出主数据锁的相位和从数据锁,在配置主从数据锁时,先将主从数据锁寄存器设置为0,然后将实际数据写入寄存器。配置时钟和请求控制寄存器时,同样是调节相位,调节它与地址总线、时钟总线的相位关系。配置I/O控制寄存器是对时钟、地址、数据的同步关系的确定[6]。

5 小结

外扩TCAM是实现内存容量提升的新兴技术,也是为解决内存瓶颈而提供更多高位宽表项的策略[7]。通过在网络处理器的可编程流水线上调用微引擎实现与外扩TCAM的通信,能够灵活地处理各种表项查找[8]。随着网络数据业务的迅速发展,基于网络处理器外扩TCAM的研究与实现提供了一个良好的研究平台,具有很高的使用价值和市场价值。

[1]王峻鹏,周华东,王卫城,等.全分布式存储非编网络的设计与实现[J].电视技术,2007,31(8):82-83.

[2]彭来献,田畅,郑少仁.网络处理器设计分析及其应用前景[J].电信科学,2001(1):63-66.

[3]Intel.IXP2400 hardware reference manual[M].[S.l.]:Intel Press,2003.

[4]李诚,李华伟.网络处理单元的设计与实现[J].计算机工程,2007,33(2):253-254.

[5]科默.网络处理器与网络系统设计[M].北京:机械工业出版社,2004.

[6]范荣真,沈凤池,杨东勇,等.网络处理器下一代网络发展的核心技术[J].中国有线电视,2003(16):16-18.

[7]蔡一兵.下一代网络设备核心单元——网络处理器应用研究[J].电子技术应用,2004(1):1-4.

[8]周文举.PC串口与多个单片机红外无线通信的实现[J].工业控制计算机,2004,17(7):29-31.

猜你喜欢

表项流水线寄存器
Gen Z Migrant Workers Are Leaving the Assembly Line
一种改进的TCAM路由表项管理算法及实现
Lite寄存器模型的设计与实现
基于ARMA模型预测的交换机流表更新算法
流水线
SDN数据中心网络基于流表项转换的流表调度优化
分簇结构向量寄存器分配策略研究*
报废汽车拆解半自动流水线研究
SIMATIC IPC3000 SMART在汽车流水线领域的应用
高速数模转换器AD9779/AD9788的应用