多队列FIFO——支持网络QoS的重要芯片
摘要:在IP网络中支持QoS是近年来研究的热点,而IDT公司推出的新型存储器件——多队列FIFO能够支持QoS的应用。因其具有单器件下支持可配置的多个队列,并具有可级联使用的高度灵活性,该器件在支持数据区分缓存和处理中有着良好的应用前景。介绍了多队列团FIFO的主要特点,给出了FPGA控制方法及其在路由器中支持QoS调度的应用。
支持IP网络中的QoS(服务质量),除了对相关网络协议开发和完善外,也需要路由器内部能够对不同类型分组或数据流提供有区分的服务。多队列FIFO是IDT公司于2002年率先推出的业界新型存储器件,能够有效地支持QoS的高速实现。该芯片是为改善网络服务质量和其它需要对队列数据重新排序的应用而设计的,它既支持灵活的数据区分应用,又避免了复杂的片外控制逻辑。本文介绍该器件的基本特性和FPGA控制方法,并给出该存储器在路由器中支持QoS调度的应用。
1 多队列FIFO介绍
该器件配备有嵌入式FIFO存储器核心和高速队列逻辑,具有很高的数据传输带宽和灵活的可配置性。该器件单芯片最高支持7.2Gbps持续传输速率和最多支持32个子队列,器件级联最多支持256个子队列。只需一个FIFO即可缓存多种数据流,有助于用户选择不同的队列执行独立的读写功能。
多队列FIFO不仅提供诸如数据缓存、队列满空状态指示、写/读时钟独立和写/读总线匹配等传统的FIFO功能,而且支持整包操作模式(Packet Mode)和数据区分排队,从而消除了以前用昂贵复杂的操作逻辑来实现类似功能。多队列FIFO的示意图如图1所示。
由图能直观地看出,多队列FIFO是在一个物理器件内提供可区分的多个逻辑子队列的存储器。可区分是指各子队列可以独立写/读,且各子队列有独立的状态指示。
2 多队列FIFO的FPGA控制
FPGA对多队列FIFO的控制体现在三个方面:配置、写操作和读操作,如图2所示。
2.1 多队列FIFO的配置
新款IDT多队列流量控制器件向系统设计人员提供了最新的解决方案,使得仅用一个高度集成器件就能够进行可选择的多个可区分的顺序数据存取操作。这一灵活的功能可由一系列器件设置选项来实现。与以前的单队列FIFO器件(如IDT 3690)不同的是,多队列FIFO有相对复杂的可配置性,除写/读端口总线宽度可由芯片管脚直接设定外,还有相应的两种配置方式:默认配置和串行配置,其中串行配置又称用户自定义配置,是一种新的器件特性。
图3
多队列FIFO的可配置项有:(a)器件内逻辑子队列数量;(b)各子队列的存储深度;(c)各子队列的PAF(几乎满)偏移值;(d)各子队列的PAE(几乎空)偏移值(普通模式下有效,整包模式下转变为整包指示PR)。
用户对多队列FIFO的配置有很大的灵活性。举例来说,IDT72V51336~IDT72V51356可以配置成1~8个队列,每个队列的深度设定都是相互独立的。标志位是用户可编程的,且各子队列独立。配置可通过专门的串行编程口进行,如果不需要对器件编程也可以用默认模式。
串行配置是指配置多队列FIFO的数据是逐比特串行送入器件的。在多队列FIFO器件内部有存放配置数据的寄存器,这些寄存器以18位为一基本单位。设Q为器件配置的子队列数,Qmax为该器件所支持的最大子队列数,则器件内有(Qmax&TImes;4+1)个寄存器。单器件配置所需的比特数据量Sum为:18+Qx72+1。最后一比特为配置结束指示,假如设计中Q=8,则Sum=19+8x72=595比特。配置数据具体设置依据可参见IDT文档AN-303(DSC-5997/2,2003年7月版本)。
串行配置信号时序(单器件)如图3所示。
如果是多器件级联使用,则器件i的SO和SENO~应分别与器件i+l的SI和SENI~相连,并检测级联尾器件的SENO~以判断整个配置是否结束。当用硬件描述语言编写串行配置的程序时,应当参考如图4所示的串行配置流程状态图。
图中的"配置数据"既可以存放在FPGA的片内RAM中,也可以存放在片外存储器中。由于配置数据量较小,推荐选择存储在片内RAM中,因为这样能够省掉与片外存储器的互连。
2.2 写操作
多队列FIFO使用于队列地址Wradd/Rdadd区分各个写/读子队列,用锁定有效信号Waden/Raden的高电平指定新的写/读子队列,写/读使能是Wen/Ren。
多队列FIFO写操作相比写队列地址的切换存在延后效应,即写总线上的数据送入新的子队列是发生在锁定新子队列地址后的第二个写时钟周期。如果能够利用此时序特征,提前两个周期锁定新的子队列地址,则可以做到100%使用写总线周期。
当子队列满指示FF有效时,新的数据无法写入该队列,会发生数据丢失。一般为
- 用FPGA芯片实现高速异步FIFO的一种方法(04-28)
- FIFO芯片和单片机实现的图像采集系统(04-10)
- 基于FPGA软硬件设计大容量数据采集系统(02-07)
- 高密度可编程FIFO存储器在视频图像中的应用(07-08)
- FPGA可测性设计的“大数据”原理(06-28)
- FIFO 同步、异步以及Verilog代码实现(02-11)