《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > 多队列FIFO——支持网络QoS的重要芯片

多队列FIFO——支持网络QoS的重要芯片

2008-08-18
作者:肖 宇 罗敏轩 兰巨龙 汪

    摘 要: 在IP网络中支持QoS是近年来研究的热点,而IDT公司推出的新型存储器件——多队列FIFO能够支持QoS的应用。因其具有单器件下支持可配置的多" title="的多">的多个队列,并具有可级联" title="级联">级联使用的高度灵活性,该器件在支持数据区分缓存和处理中有着良好的应用前景。介绍了多队列FIFO的主要特点,给出了FPGA控制方法及其在路由器中支持QoS调度的应用。
    关键词: 多队列FIFO  子队列  FPGA  数据区分  QoS

 

    支持IP网络中的QoS(服务质量" title="服务质量">服务质量),除了对相关网络协议开发和完善外,也需要路由器内部能够对不同类型分组或数据流提供有区分的服务。多队列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有相对复杂的可配置性,除写/读端口总线宽度可由芯片管脚直接设定外,还有相应的两种配置方式:默认配置和串行配置,其中串行配置又称用户自定义配置,是一种新的器件特性。
    多队列FIFO的可配置项有:(a)器件内逻辑子队列数量;(b)各子队列的存储深度;(c)各子队列的PAF(几乎满)偏移值;(d)各子队列的PAE(几乎空)偏移值(普通模式下有效,整包模式下转变为整包指示PR)。
   默认配置与串行配置的区别如表1所示。

 


    用户对多队列FIFO的配置有很大的灵活性。举例来说,IDT72V51336~IDT72V51356可以配置成1~8个队列,每个队列的深度设定都是相互独立的。标志位是用户可编程的,且各子队列独立。配置可通过专门的串行编程口进行,如果不需要对器件编程也可以用默认模式。
    串行配置是指配置多队列FIFO的数据是逐比特串行送入器件的。在多队列FIFO器件内部有存放配置数据的寄存器,这些寄存器以18位为一基本单位。设Q为器件配置的子队列数,Qmax为该器件所支持的最大子队列数,则器件内有(Qmax×4+1)个寄存器。单器件配置所需的比特数据量Sum为:18+Q×72+1。最后一比特为配置结束指示,假如设计中Q=8,则Sum=19+8×72=595比特。配置数据具体设置依据可参见IDT文档AN-303(DSC-5997/2,2003年7月版本)。
    与串行配置相关的信号如表2所示。

 


    串行配置信号时序(单器件)如图3所示。

 


    如果是多器件级联使用,则器件i的SO和SENO~应分别与器件i+1的SI和SENI~相连,并检测级联尾器件的SENO~以判断整个配置是否结束。当用硬件描述语言编写串行配置的程序时,应当参考如图4所示的串行配置流程状态图。

 


    图中的“配置数据”既可以存放在FPGA的片内RAM中,也可以存放在片外存储器中。由于配置数据量较小,推荐选择存储在片内RAM中,因为这样能够省掉与片外存储器的互连。
2.2 写操作
    多队列FIFO使用子队列地址Wradd/Rdadd区分各个写/读子队列,用锁定有效信号Waden/Raden的高电平" title="高电平">高电平指定新的写/读子队列,写/读使能是Wen/Ren。
    多队列FIFO写操作相比写队列地址的切换存在延后效应,即写总线上的数据送入新的子队列是发生在锁定新子队列地址后的第二个写时钟周期。如果能够利用此时序特征,提前两个周期锁定新的子队列地址,则可以做到100%使用写总线周期。
    当子队列满指示FF有效时,新的数据无法写入该队列,会发生数据丢失。一般为了避免这种情况,都要配置好PAF偏移值,在看到PAFn~拉低有效后,停止写入操作。图5给出不间断写操作时序图。

 


2.3 读操作
    与写操作类似的读操作也存在相对读队列地址的延后效应,即在新队列地址锁定后的第三个读时钟周期,读总线上呈现的数据转变为新子队列内的数据。所以若能够提前三个周期锁定新队列,则可以做到100%读总线利用率。
    当选定队列状态为空时,读端口上呈现全高电平。配置好PAE偏移值后,通过查看PAEn~便可以得知队列的空或非空状态,并提前做好读或切换新队列的动作。图6给出不间断读操作时序图。

 


3 多队列FIFO的应用
    多队列FIFO可满足设备实现服务质量、信息包" title="信息包">信息包优先级和多数据流汇集/分开的要求。例如,根据信息包客户定制优先次序,进入系统的数据可被分配到多个队列之一,每个队列都代表不同的服务等级。处理器根据一定的运算法则首先处理优先级高的信息包,以确保整个网络的服务水平。笔者就使用了多队列FIFO在骨干路由器交换网络中实现了多优先级调度,具体例子如图7所示。

 


    划分服务等级通常依据分组的类型,对延迟敏感型分组给予高优先级。区别于传统的先到先服务(FCFS),有区分的服务可以提供一定的网络服务质量,图8是一个具体的例子。如果不应用多队列FIFO,势必要使用SRAM模拟多队列,不得不增加许多复杂的控制逻辑,消耗处理器的资源;或者是采用多个独立的存储器件对不同类型分组进行排队,既增加了实际制板(PCB)的难度,而且可扩展性差。

 


    另外,在不断电连续运行的情况下,FPGA可控制在不同时段改变多队列FIFO配置,以适应不同的应用需要。比如,要适配不同类型数据,暂存时可将其串行配置成相应多个子队列;而只做同一类型数据缓存时可以将其配置成单队列使用。故多队列FIFO应用灵活性高,前景好。
参考文献
1 IDT APPLICATION NOTE:AN-303,AN-349,AN-338. IDT, 2003-07
2 Grenville Armitage. Quality of Service in IP Networks. Foundations for a Multi_Service Internet Copyright 2000 by Luncent Technologies
3 潘 松,黄继业.EDA技术实用教程.北京:科学出版社, 2002
4 侯伯亨,顾 新.VHDL硬件描述语言与数字逻辑电路设计.西安:西安电子科技大学出版社,1999

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。