微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 高端路由器设计需要考虑的数据缓冲器问题

高端路由器设计需要考虑的数据缓冲器问题

时间:09-15 来源:互联网 点击:
迅速增加的数据、语音和视频流量进入城域网(MAN)后,服务于这些应用的路由器必须能将多路的1 Gbps数据流汇聚成高达40 Gbps带宽的数据流.为了保持线速性能,系统必须在出口端提供等于或高于进入传输速率的信息包处理能力,或者对信息包进行备份,这时缓冲就变得至关重要。

这些数据缓存的性能和效率对路由器和网络的性能至关重要。网络性能的主要威胁来自数据的重发。因此,城域边缘的路由器必须能够汇聚多个较低速率的接入线路,并将其转发至高速核心连接而不致欠载。路由器也必须保证从更高速的核心网到边缘网的数据分发操作不会超时。在任何情况下超过了数据缓存的最大能力,发送到 MAN 的任何额外数据都必须重传。

因此,最大限度地降低系统延迟和确保系统最大吞吐量的关键是为具体应用选择合适的数据缓存。如果缓存过大,就会大幅度增加系统成本。如果过小,网络就会溢出缓存并重发数据,导致性能下降。

这种考虑涉及三个主要因素:输入数据的速率(入口线路)、输出数据的速率(出口线路)及内部处理时间需求。只要来自网络的入口数据速率与回到网络的出口数据速率相等,而且具有最小的处理需求,数据缓存即可保持相对较小。因为内部处理只增加很小的延迟,流量也比较稳定,所以几乎不需要存储数据。不过,随着系统执行更高级别的处理,就必须增大缓存来消除处理功能带来的延迟。突发流量对数据缓存的设计也有显著的影响。如果入口数据速率随着时间显著变化并偶尔超过信息包处理器的能力,就必须适当地改变入口缓冲器的尺寸,以解决与这些处理功能相关的延迟问题。

可编程逻辑器件的优势

在为这些应用构建缓冲子系统时,工程师倾向于首先考虑采用FPGA,而不是现成的分立存储器件。由于工程教育机构日益依赖于 FPGA 来教授电路设计的基础知识。因此,大部分工程师都熟悉这种技术。FPGA 有助于设计师随时对他们的设计进行重新配置,提供高度灵活性,并在短期内完成硬件的测试。此外,由于这些工具常常是人们熟悉的,可以迅速转变成最终解决方案。  

现在,FPGA 可提供数百万的逻辑门和兆比特级的片上存储器,设计师可将多个 FIFO集成到一个芯片上(见图 1)。然而,在数据缓存需求比较高的城域边缘网领域,设计师必须仔细评估他们所有的设计选择。在某些情况下,设计师会发现可编程逻辑器件在给定性能或成本方面存在固有的局限性,而分立器件可提供更具吸引力的解决方案。



图1 可集成多个FIFO的FPGA

例如,许多工程师没有意识到,基于 FPGA 的解决方案的性能会随着满足应用需求的数据缓存大小的改变而变化。虽然现在的FPGA 可以更高的时钟速率运行,当设计师把越来越多的 FIFO 映射到 FPGA 时,他们面临重大的性能局限性。设计师会使用来自 FPGA 供应商的工具,自动地将多个 FIFO 映射到单个物理存储器块中,并创建在不同的FIFO之间时域复用所需的逻辑。然而,采用这种复用方法,会使每个FIFO端口的工作频率与映射到设计中的 FIFO 数量成反比。这是因为当每个 FIFO 独立运行时,整个存储带宽是共享的。当 FIFO 器件的读写操作开始时,时序电路会在快速的 TDM 时钟域中访问物理存储器。为了完成每次存储器的存取,时序器必须将信息传回到FIFO端口的时钟域。随着 FPGA 中FIFO 数量的增加,时序电路的速度和时钟域传输的数量将会严重限制 FIFO 的性能。因此,一些FPGA供应商建议设计师把器件采用的 FIFO 的数量控制在10个之内。 

高性能城域边缘网路由器设计的存储器密度也会影响 FPGA 的性能。为了充分发挥性能,设计师很自然地优先选择内嵌的数据缓冲器。所以,许多设计师选择采用更高密度的 FPGA 来满足大型数据缓冲器的存储需求。

然而,采用这种策略也会产生一些问题。当设计师在 FPGA 中使用大量存储器时,一些存储器将会进一步远离I/O和逻辑门。这种存储资源在芯片内的分散将导致内部写脉冲随线长而变化,并延长建立时间。在一些应用中,FPGA 中大型存储阵列的使用可降低高达40%的芯片内部速度。

解决该问题的一种方法是选择更小和成本更低的 FPGA实现控制逻辑,并采用外部分立存储器来支持。设计师会采用外部SRAM来增强 FPGA 的存储能力。FPGA供应商可提供预定义模块,设计师可将其集成到 FPGA 中,用以进行外部存储器管理。这种方法有助于设计师使用更小和更便宜的 FPGA。

但是,由于FPGA架构固有的 I/O 局限性,这种方法为设计带来了延时。在采用 FPGA 和外部存储器的设计中,数据通过 FPGA 中比较慢的可编程门进入缓冲器,然后子系统必须为控制器分配一个地址,并将数据转移到外部存储器。接下来,系统必须分配一个地址并把数据拖到外部存储器中。这两个操作必须通过 FPGA 中比较慢的可编程 I/O门进行。最后,数据必须从 FPGA 发送到系统中,并再次经过 FPGA 可编程门。假设在 FPGA 和外部存储器中进行大量的存取,该子系统需要 8 个时钟周期来处理每个数据字节。  

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top