使用FPGA和IP Core实现定制缓冲管理
发布时间:2008/5/27 0:00:00 访问次数:609
    
    
    来源:今日电子 作者:altera公司 mark wang
    
    在通信网络系统中,流量管理的核心是缓存管理、队列管理和调度程序。本文结合使用fpga及ip core阐述缓存管理的结构、工作原理及设计方法。
    
    目前硬件高速转发技术的趋势是将整个转发分成两个部分:pe(protocol engine,协议引擎)和tm(traffic management,流量管理)。其中pe完成协议处理,tm负责完成队列调度、缓存管理、流量整形、qos等功能,tm与转发协议无关。
    
    随着通信协议的发展及多样化,协议处理部分pe在硬件转发实现方面,普遍采用现有的商用芯片np(network processor,网络处理器)来完成,流量管理部分需要根据系统的需要进行定制或采用商用芯片来完成。在很多情况下np芯片、tm芯片、交换网芯片无法选用同一家厂商的芯片,这时定制tm成为了成本最低、系统最优化的方案,一般采用fpga来实现,tm的常规结构如图1所示。
    
    
    
    图1 tm的常规结构图
    
    目前主流的tm接口均为spi4-p2接口形式,spi4-p2接口信号速率高,tccs(channel-to-channel skew,数据通道的抖动,包含时钟的抖动)难以控制,在常规情况下很难做到很高的速率。spi4-p2接口为达到高速率同时避免tccs问题在很多情况下都对接收端提出了dpa(动态相位调整)的要求。对于spi4-p2接口形式可直接采用altera公司的ip core实现。altera的主流fpga均实现了硬件dpa功能,以stratix ii器件为例,在使能dpa的情况下使用spi4-p2 ip core可实现16gb/s的接口数据速率。
    
    seg模块为数据切分块,根据交换网的数据结构要求,在上交换网的方向上负责把ip包或数据包切分为固定大小的数据块,方便后期的存储调度以及交换网的操作处理,seg模块可配合使用spi4-p2 ip core来实现。与seg模块对应的是rsm模块,rsm模块将从交换网下来的数据块重新组合成完整的ip包或数据包。
    
    bm(buffer management)模块为缓冲管理模块,管理tm的缓冲单元,完成dram的存取操作。外部dram的控制部分可使用使用ddr sdram ip core实现。
    
    qm模块为队列管理模块,负责完成端口的数据队列管理功能,接收bm模块读写dram时的数据入队、出队请求,tm所能支持的数据流的数目、业务类型数目、端口的数目等性能指标在qm模块处体现出来。
    
    scheduler模块为调度模块,根据数据包类型及优先级和端口分配的带宽进行调度,tm流量整形、qos等功能通过调度模块实现。
    
    cell_edit模块完成输出数据的封装,把由dram中读出的数据封装后发送出去。
    
    在tm中需要基于数据服务策略对于不同服务等级的数据包进行不同的管理策略,同时要保证流媒体的数据包不能乱序,数据包有大有小,经过seg模块所分割成的数据块的数目也有多有少,这样就必须有一套行之有效的数据结构基于链表的方法管理这些数据。qm模块基于业务、数据流的方式管理队列,包的管理便由bm模块完成。
    
    bm模块中基于包的数据结构方面由两部分构成:bram和pram。bram为数据缓冲区,对应片外的dram。bram负责存储数据单元,相对于seg模块切分的数据单元,bram内有相应大小的存储单元bcell与之对应,bcell在bram内以地址空间划分,每个bcell相同大小,bcell为bram的最小存取单元。在实际系统中基于seg模块切分的数据单元大小,bcell一般为64~512b。
    
    pram为指针缓冲区,pram对应片外的ssram。pram内部同样以地址空间分为pcell,pcell与bcell一一对应,每一个pcell对应于一个bcell,对应的pcell与bcell地址相同。
    
    pcell的地址对应的代表相应单元的bcell的地址,pcell中的基本信息是下一跳指针。pram与bram关系如图2所示。
    
    
    
 
    
    
    来源:今日电子 作者:altera公司 mark wang
    
    在通信网络系统中,流量管理的核心是缓存管理、队列管理和调度程序。本文结合使用fpga及ip core阐述缓存管理的结构、工作原理及设计方法。
    
    目前硬件高速转发技术的趋势是将整个转发分成两个部分:pe(protocol engine,协议引擎)和tm(traffic management,流量管理)。其中pe完成协议处理,tm负责完成队列调度、缓存管理、流量整形、qos等功能,tm与转发协议无关。
    
    随着通信协议的发展及多样化,协议处理部分pe在硬件转发实现方面,普遍采用现有的商用芯片np(network processor,网络处理器)来完成,流量管理部分需要根据系统的需要进行定制或采用商用芯片来完成。在很多情况下np芯片、tm芯片、交换网芯片无法选用同一家厂商的芯片,这时定制tm成为了成本最低、系统最优化的方案,一般采用fpga来实现,tm的常规结构如图1所示。
    
    
    
    图1 tm的常规结构图
    
    目前主流的tm接口均为spi4-p2接口形式,spi4-p2接口信号速率高,tccs(channel-to-channel skew,数据通道的抖动,包含时钟的抖动)难以控制,在常规情况下很难做到很高的速率。spi4-p2接口为达到高速率同时避免tccs问题在很多情况下都对接收端提出了dpa(动态相位调整)的要求。对于spi4-p2接口形式可直接采用altera公司的ip core实现。altera的主流fpga均实现了硬件dpa功能,以stratix ii器件为例,在使能dpa的情况下使用spi4-p2 ip core可实现16gb/s的接口数据速率。
    
    seg模块为数据切分块,根据交换网的数据结构要求,在上交换网的方向上负责把ip包或数据包切分为固定大小的数据块,方便后期的存储调度以及交换网的操作处理,seg模块可配合使用spi4-p2 ip core来实现。与seg模块对应的是rsm模块,rsm模块将从交换网下来的数据块重新组合成完整的ip包或数据包。
    
    bm(buffer management)模块为缓冲管理模块,管理tm的缓冲单元,完成dram的存取操作。外部dram的控制部分可使用使用ddr sdram ip core实现。
    
    qm模块为队列管理模块,负责完成端口的数据队列管理功能,接收bm模块读写dram时的数据入队、出队请求,tm所能支持的数据流的数目、业务类型数目、端口的数目等性能指标在qm模块处体现出来。
    
    scheduler模块为调度模块,根据数据包类型及优先级和端口分配的带宽进行调度,tm流量整形、qos等功能通过调度模块实现。
    
    cell_edit模块完成输出数据的封装,把由dram中读出的数据封装后发送出去。
    
    在tm中需要基于数据服务策略对于不同服务等级的数据包进行不同的管理策略,同时要保证流媒体的数据包不能乱序,数据包有大有小,经过seg模块所分割成的数据块的数目也有多有少,这样就必须有一套行之有效的数据结构基于链表的方法管理这些数据。qm模块基于业务、数据流的方式管理队列,包的管理便由bm模块完成。
    
    bm模块中基于包的数据结构方面由两部分构成:bram和pram。bram为数据缓冲区,对应片外的dram。bram负责存储数据单元,相对于seg模块切分的数据单元,bram内有相应大小的存储单元bcell与之对应,bcell在bram内以地址空间划分,每个bcell相同大小,bcell为bram的最小存取单元。在实际系统中基于seg模块切分的数据单元大小,bcell一般为64~512b。
    
    pram为指针缓冲区,pram对应片外的ssram。pram内部同样以地址空间分为pcell,pcell与bcell一一对应,每一个pcell对应于一个bcell,对应的pcell与bcell地址相同。
    
    pcell的地址对应的代表相应单元的bcell的地址,pcell中的基本信息是下一跳指针。pram与bram关系如图2所示。
    
    
    
 
上一篇:基于FPGA的图像预处理系统