DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 52|回复: 0
打印 上一主题 下一主题

[待整理] 多队列FIFO——支持网络QoS的重要芯片

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 07:44:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
多队列FIFO——支持网络QoS的重要芯片


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

    另外,在不断电连续运行的情况下,FPGA可控制在不同时段改变多队列FIFO配置,以适应不同的应用需要。比如,要适配不同类型数据,暂存时可将其串行配置成相应多个子队列;而只做同一类型数据缓有时可以将其配置成单队列使用。故多队列FIFO应用灵活性高,前景好。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 19:00 , 耗时 0.091555 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表