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

多队列FIFO——支持网络QoS的重要芯片,第1张

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

支持IP网络中的QoS(服务质量),除了对相关网络协议开发和完善外,也需要路由器内部能够对不同类型分组或数据流提供有区分的服务。多队列FIFO是IDT公司于2002年率先推出的业界新型存储器件,能够有效地支持QoS的高速实现。该芯片是为改善网络服务质量和其它需要对队列数据重新排序的应用而设计的,它既支持灵活的数据区分应用,又避免了复杂的片外控制逻辑。本文介绍该器件的基本特性和FPGA控制方法,并给出该存储器在路由器中支持QoS调度的应用。
多队列FIFO——支持网络QoS的重要芯片,第2张
1 多队列FIFO介绍

该器件配备有嵌入式FIFO存储器核心和高速队列逻辑,具有很高的数据传输带宽和灵活的可配置性。该器件单芯片最高支持7.2Gbps持续传输速率和最多支持32个子队列,器件级联最多支持256个子队列。只需一个FIFO即可缓存多种数据流,有助于用户选择不同的队列执行独立的读写功能。

多队列FIFO不仅提供诸如数据缓存、队列满空状态指示、写/读时钟独立和写/读总线匹配等传统的FIFO功能,而且支持整包 *** 作模式(Packet Mode)和数据区分排队,从而消除了以前用昂贵复杂的 *** 作逻辑来实现类似功能。多队列FIFO的示意图如图1所示。

由图能直观地看出,多队列FIFO是在一个物理器件内提供可区分的多个逻辑子队列的存储器。可区分是指各子队列可以独立写/读,且各子队列有独立的状态指示。
多队列FIFO——支持网络QoS的重要芯片,第3张
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——支持网络QoS的重要芯片,第4张

串行配置是指配置多队列FIFO的数据是逐比特串行送入器件的。在多队列FIFO器件内部有存放配置数据的寄存器,这些寄存器以18位为一基本单位。设Q为器件配置的子队列数,Qmax为该器件所支持的最大子队列数,则器件内有(Qmax×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有效时,新的数据无法写入该队列,会发生数据丢失。一般为了避免这种情况,都要配置好PAF偏移值,在看到PAFn~拉低有效后,停止写入 *** 作。图5给出不间断写 *** 作时序图。

图5

    2.3 读 *** 作

与写 *** 作类似的读 *** 作也存在相对读队列地址的延后效应,即在新队列地址锁定后的第三个读时钟周期,读总线上呈现的数据转变为新子队列内的数据。所以若能够提前三个周期锁定新队列,则可以做到100%读总线利用率。

当选定队列状态为空时,读端口上呈现全高电平。配置好PAE偏移值后,通过查看PAEn~便可以得知队列的空或非空状态,并提前做好读或切换新队列的动作。图6给出不间断读 *** 作时序图。

图6

3 多队列FIFO的应用

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

划分服务等级通常依据分组的类型,对延迟敏感型分组给予高优先级。区别于传统的先到先服务(FCFS),有区分的服务可以提供一定的网络服务质量,图8是一个具体的例子。如果不应用多队列FIFO,势必要使用SRAM模拟多队列,不得不增加许多复杂的控制逻辑,消耗处理器的资源;或者是采用多个独立的存储器件对不同类型分组进行排队,既增加了实际制板(PCB)的难度,而且可扩展性差。
多队列FIFO——支持网络QoS的重要芯片,第5张
    另外,在不断电连续运行的情况下,FPGA可控制在不同时段改变多队列FIFO配置,以适应不同的应用需要。比如,要适配不同类型数据,暂存时可将其串行配置成相应多个子队列;而只做同一类型数据缓有时可以将其配置成单队列使用。故多队列FIFO应用灵活性高,前景好。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2424049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-02
下一篇 2022-08-02

发表评论

登录后才能评论

评论列表(0条)

保存