发送间隔调整方法、装置和网络设备.pdf

上传人:a*** 文档编号:1115789 上传时间:2018-04-01 格式:PDF 页数:19 大小:549.47KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110287863.8

申请日:

2011.09.26

公开号:

CN102347902A

公开日:

2012.02.08

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/56申请日:20110926|||公开

IPC分类号:

H04L12/56

主分类号:

H04L12/56

申请人:

北京星网锐捷网络技术有限公司

发明人:

陈鹏

地址:

100036 北京市海淀区复兴路29号中意鹏奥酒店东塔A座12层

优先权:

专利代理机构:

北京同立钧成知识产权代理有限公司 11205

代理人:

马爽

PDF下载: PDF下载
内容摘要

本发明实施例提供一种发送间隔调整方法、装置和网络设备,该发送间隔调整方法包括:统计第i个统计周期内从PCIE接口接收到的第一数据量和发送到PCIE接口的第二数据量;根据第一数据量与第i个统计周期的长度计算第i个统计周期的下行带宽,并根据第二数据量与第i个统计周期的长度计算第i个统计周期的上行带宽;根据第i个统计周期的上行带宽与下行带宽的比例关系,调整第i+1个统计周期内Post帧的发送间隔。本发明实施例可以实现调整第i+1个统计周期的上行带宽,进而可以实现调整第i+2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。

权利要求书

1: 一种发送间隔调整方法, 其特征在于, 包括 : 统计第 i 个统计周期内从快速外设部件互连 PCIE 接口接收到的第一数据量和所述第 i 个统计周期内发送到所述 PCIE 接口的第二数据量 ; 根据所述第一数据量与所述第 i 个统计周期的长度计算所述第 i 个统计周期的下行带 宽, 并根据所述第二数据量与所述第 i 个统计周期的长度计算所述第 i 个统计周期的上行 带宽 ; 根据所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行带宽的比例关系, 调整第 i+1 个统计周期内转发事务帧的发送间隔 ; i 为整数, 且 i ≥ 0。
2: 根据权利要求 1 所述的方法, 其特征在于, 所述根据所述第 i 个统计周期的上行带宽 与所述第 i 个统计周期的下行带宽的比例关系, 调整第 i+1 个统计周期内转发事务帧的发 送间隔包括 : 确定所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行带宽的比值, 以及 确定所述第 i 个统计周期的下行带宽与所述第 i 个统计周期的上行带宽的比值 ; 当所述第 i 个统计周期的下行带宽与所述第 i 个统计周期的上行带宽的第一比值小于 第一预定数值时, 增大所述第 i+1 个统计周期内转发事务帧的发送间隔 ; 当所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行带宽的第二比值小于 第二预定数值时, 缩小所述第 i+1 个统计周期内转发事务帧的发送间隔。
3: 根据权利要求 2 所述的方法, 其特征在于, 所述当所述第 i 个统计周期的下行带宽与 所述第 i 个统计周期的上行带宽的第一比值小于第一预定数值时, 增大所述第 i+1 个统计 周期内转发事务帧的发送间隔包括 : 将 0 与所述第一预定数值限定的区间划分为 N 个子区间, N 为正整数, N≥2; 当所述第 i 个统计周期的下行带宽与所述第 i 个统计周期的上行带宽的第一比值落入 所述 N 个子区间中的任一子区间时, 采用所述第一比值所在子区间对应的步长, 增大所述 第 i+1 个统计周期内转发事务帧的发送间隔。
4: 根据权利要求 2 所述的方法, 其特征在于, 所述当所述第 i 个统计周期的上行带宽与 所述第 i 个统计周期的下行带宽的第二比值小于第二预定数值时, 缩小所述第 i+1 个统计 周期内转发事务帧的发送间隔包括 : 将 0 与所述第二预定数值限定的区间划分为 M 个子区间, M 为正整数, M≥2; 当所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行带宽的第二比值落入 所述 M 个子区间中的任一子区间时, 采用所述第二比值所在子区间对应的步长, 缩小所述 第 i+1 个统计周期内转发事务帧的发送间隔。
5: 根据权利要求 2、 3 或 4 所述的方法, 其特征在于, 所述第一预定数值大于 0, 且小于 或等于 1 ; 所述第二预定数值大于 0, 且小于或等于 1。
6: 一种发送间隔调整装置, 其特征在于, 包括 : 统计模块, 用于统计第 i 个统计周期内从快速外设部件互连 PCIE 接口接收到的第一数 据量和所述第 i 个统计周期内发送到所述 PCIE 接口的第二数据量 ; 计算模块, 用于根据所述第一数据量与所述第 i 个统计周期的长度计算所述第 i 个统 计周期的下行带宽, 并根据所述第二数据量与所述第 i 个统计周期的长度计算所述第 i 个 统计周期的上行带宽 ; 2 调整模块, 用于根据所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行带 宽的比例关系, 调整第 i+1 个统计周期内转发事务帧的发送间隔。
7: 根据权利要求 6 所述的装置, 其特征在于, 所述调整模块包括 : 确定子模块, 用于确定所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行 带宽的比值 ; 增大子模块, 用于当所述第 i 个统计周期的下行带宽与所述第 i 个统计周期的上行 带宽的第一比值小于第一预定数值时, 增大所述第 i+1 个统计周期内转发事务帧的发送间 隔; 缩小子模块, 用于当所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行 带宽的第二比值小于第二预定数值时, 缩小所述第 i+1 个统计周期内转发事务帧的发送间 隔。
8: 根据权利要求 7 所述的装置, 其特征在于, 所述调整模块还包括 : 第一划分子模块 ; 所述第一划分子模块, 用于将 0 与所述第一预定数值限定的区间划分为 N 个子区间, N 为正整数, N≥2; 所述增大子模块, 具体用于当所述第 i 个统计周期的下行带宽与所述第 i 个统计周期 的上行带宽的第一比值落入所述 N 个子区间中的任一子区间时, 采用所述第一比值所在子 区间对应的步长, 增大所述第 i+1 个统计周期内转发事务帧的发送间隔。
9: 根据权利要求 7 所述的装置, 其特征在于, 还包括 : 第二划分子模块 ; 所述第二划分子模块, 用于将 0 与所述第二预定数值限定的区间划分为 M 个子区间, M 为正整数, M≥2; 所述缩小子模块, 具体用于当所述第 i 个统计周期的上行带宽与所述第 i 个统计周期 的下行带宽的第二比值落入所述 M 个子区间中的任一子区间时, 采用所述第二比值所在子 区间对应的步长, 缩小所述第 i+1 个统计周期内转发事务帧的发送间隔。
10: 一种网络设备, 其特征在于, 包括如权利要求 6-9 任意一项所述的发送间隔调整装 置。

说明书


发送间隔调整方法、 装置和网络设备

    技术领域 本发明实施例涉及数据传输技术领域, 尤其涉及一种发送间隔调整方法、 装置和 网络设备。
     背景技术 快速外设部件互连 (Peripheral Component Interconnect Express ; 以下简称 : PCIE) 总线, 沿用了现有的外设部件互连 (Peripheral Component Interconnect Express ; 以下简称 : PCI) 编程概念及通讯标准, 但传输速度更快, PCIE 的一个串行高速收发器的单 向物理带宽即可达到 2.5 吉比特每秒 (Gigabit per second ; 以下简称 : Gbps)。而 PCIE 链 路分为发送 (TX) 与接收 (RX) 两个方向, 因此仅一个串行高速收发器的双向合计物理带宽 就可以达到 5Gbps。
     在用户接口层面, 使用事务层规定的处理层数据包 (Transaction Layer Packet ; 以下简称 : TLP) 帧来传输数据。用户的不同传输请求需要根据协议规定类型填写 TLP 帧头 中的相应字段。 TLP 帧可以分为转发事务 (Post) 帧与非转发事务 (Non-Post) 帧两大类, 其 中写数据请求属于 Post 帧, 而读数据请求则属于 Non-Post 帧。
     直接内存访问 (Direct Memory Access ; 以下简称 : DMA) 是一种不经过中央处理 单元 (Central Processing Unit ; 以下简称 : CPU) 而直接从内存存取数据的数据交换模 式。在 DMA 传输模式下, CPU 只须向现场可编程门阵列 (Field Programmable Gate Array ; 以下简称 : FPGA) 端的 DMA 控制器下达指令, 让 DMA 控制器来处理数据的传送, 数据传送完 毕再把信息反馈给 CPU, 这样就很大程度上减轻了 CPU 的资源占有率, 可以大大节省系统资 源, 提高数据传输速率。
     FPGA 端的 DMA 控制器通过缓存描述符 (Buffer Descriptor ; 以下简称 : BD) 与 CPU 进行数据传输, CPU 在自身的内存中设置相应的收发 BD 后, 启动 FPGA 的 DMA 控制器, FPGA 根据 CPU 设定的 BD 在 CPU 内存中的位置读取 BD, 如果是下行 BD, 则根据下行 BD 中的数据 存储地址和存储长度从 CPU 内存中搬运数据, 如果是上行 BD, 则将 FPGA 从下游芯片接口中 收到的数据填写到上行 BD 所设定的 CPU 内存中, 并将写入的数据总长度更新到上行 BD 中。 当 FPGA 收发完成一个完整数据包后, 将相应的上下行 BD 回写到 CPU 的内存中, 以通知 CPU 一个数据包已经收发完成。
     其中下行链路定义为 CPU 向 FPGA 发送数据, 上行链路定义为 FPGA 向 CPU 发送数 据。
     一个系统的上下行速率即数据包的收发速率与多种因素相关, 例如 CPU 对数据的 处理能力, FPGA 内部 DMA 的处理能力, FPGA 和 CPU 间的接口种类, 以及所选用的桥接芯片性 能等。当 CPU 和 FPGA 内部 DMA 的处理能力都足够强大时, 接口的性能就成了系统性能的瓶 颈。
     DMA 传输数据包时, 每一个数据包均配置一个 8 字节长度的 BD, 而且每个 BD 的读 取和回写也需要占用 PCIE 接口的带宽, FPGA 的 DMA 发起的读 BD 请求与读数据请求均需要
     通过 PCIE 接口的 TX 链路, 而系统的下行带宽完全取决于通过 PCIE TX 链路发起的读数据 请求数量, PCIETX 链路上发出的读请求的数据量越多, 则下行带宽越大。
     并且 PCIE 协议规定 Post 帧的可以穿越 Non-post 帧, 也就是说即使当读数据请求 优先于写数据请求提交给 PCIE 内核 (PCIE core) 之后, PCIE 接口上后到的写数据请求也 是优先于先前的读数据请求发送到 CPU 端。
     因此系统的瓶颈在于如何有效利用 PCIE 接口的 TX 链路带宽, 如何在 TX 链路上合 理分配上行写数据传输带宽和下行读数据的带宽。
     现有的保证系统上下行速率相对均衡的方案一般有 2 种, 即提高 PCIE 接口物理带 宽的方案与控制上行链路速率的方案。
     1、 提高 PCIE 接口物理带宽的方案。
     本方案通过提高 CPU 与 FPGA 之间 PCIE 接口的物理带宽, 例如选择满足 PCIE2.0 标准的 CPU 或者使 PCIE 链路由 ×4 改为 ×8, 使得物理带宽提升一倍, 从而使得系统瓶颈不 再存在于 PCIE 接口上, 同时保证上下行链路均达到最大性能。
     但是该方案存在以下缺点 : 系统成本显著上升, 增加硬件设计复杂度, 需要使用更 高性能的 CPU 与更大容量更多高速接口的 FPGA 来满足高速 PCIE 接口的物理指标。并且不 能最大限度的利用高速 PCIE 接口的全部带宽。
     2、 控制上行链路速率的方案。
     本方案通过限制上行链路的速率, 例如固定设置上行链路发包的最小间隔, 以限 制上行链路的最大带宽来提高下行链路的带宽, 保证 Non-Post 帧不被 Post 帧穿越, 来达到 上下行链路带宽的均衡性。
     但是该方案存在以下缺点 : 将系统的瓶颈转移到 FPGA, 通过限制 FPGA 的处理能 力, 来保证速率均衡, 但是通常实际应用场合中, CPU 的处理能力要弱于 FPGA, 在 CPU 来不及 设置下行 BD 的情况下, 而 FPGA 的上行速率又无法提升, 或者包长递增的情况下, 无法平衡 上下行速率, 将有相当一部分的 PCIE 带宽被浪费。 发明内容
     本发明实施例提供一种发送间隔调整方法、 装置和网络设备, 以实现上下行带宽 自适应均衡, 提高 PCIE 接口的带宽利用率。
     本发明实施例提供一种发送间隔调整方法, 包括 :
     统计第 i 个统计周期内从快速外设部件互连 PCIE 接口接收到的第一数据量和所 述第 i 个统计周期内发送到所述 PCIE 接口的第二数据量 ;
     根据所述第一数据量与所述第 i 个统计周期的长度计算所述第 i 个统计周期的下 行带宽, 并根据所述第二数据量与所述第 i 个统计周期的长度计算所述第 i 个统计周期的 上行带宽 ;
     根据所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下行带宽的比例关 系, 调整第 i+1 个统计周期内转发事务帧的发送间隔。
     本发明实施例还提供一种发送间隔调整装置, 包括 :
     统计模块, 用于统计第 i 个统计周期内从快速外设部件互连 PCIE 接口接收到的第 一数据量和所述第 i 个统计周期内发送到所述 PCIE 接口的第二数据量 ;计算模块, 用于根据所述第一数据量与所述第 i 个统计周期的长度计算所述第 i 个统计周期的下行带宽, 并根据所述第二数据量与所述第 i 个统计周期的长度计算所述第 i 个统计周期的上行带宽 ;
     调整模块, 用于根据所述第 i 个统计周期的上行带宽与所述第 i 个统计周期的下 行带宽的比例关系, 调整第 i+1 个统计周期内转发事务帧的发送间隔。
     本发明实施例还提供一种网络设备, 包括如上所述的发送间隔调整装置。
     本发明实施例, 首先统计第 i 个统计周期内从 PCIE 接口接收到的第一数据量和第 i 个统计周期内发送到上述 PCIE 接口的第二数据量, 然后根据上述第一数据量与第 i 个统 计周期的长度计算第 i 个统计周期的下行带宽, 并根据第二数据量与第 i 个统计周期的长 度计算第 i 个统计周期的上行带宽 ; 最后根据所述第 i 个统计周期的上行带宽与第 i 个统 计周期的下行带宽的比例关系, 调整第 i+1 个统计周期内转发事务帧的发送间隔 ; 从而可 以实现调整第 i+1 个统计周期的上行带宽, 进而可以实现调整第 i+2 个统计周期的下行带 宽, 使得 PCIE 链路的上下行带宽达到动态平衡, 并可以提高 PCIE 链路的带宽利用率。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动性的前提下, 还可以 根据这些附图获得其他的附图。
     图 1 为本发明发送间隔调整方法一个实施例的流程图 ;
     图 2 为本发明统计周期生成时序一个实施例的示意图 ;
     图 3 为本发明上下行带宽变化情况一个实施例的示意图 ;
     图 4 为本发明发送间隔调整装置一个实施例的结构示意图 ;
     图 5 为本发明发送间隔调整装置另一个实施例的结构示意图 ;
     图 6 为本发明发送间隔调整装置再一个实施例的结构示意图 ;
     图 7 为本发明 Post 帧发送间隔计算单元一个实施例的示意图 ;
     图 8 为本发明仲裁状态机一个实施例的示意图。
     具体实施方式
     为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明实施例 中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是 本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
     图 1 为本发明发送间隔调整方法一个实施例的流程图, 如图 1 所示, 该发送间隔调 整方法可以包括 :
     步骤 101, 统计第 i 个统计周期内从 PCIE 接口接收到的第一数据量和第 i 个统计 周期内发送到上述 PCIE 接口的第二数据量。
     本实施例中, i 为整数, 且 i ≥ 0。
     步骤 102, 根据上述第一数据量与第 i 个统计周期的长度计算第 i 个统计周期的下行带宽, 并根据上述第二数据量与第 i 个统计周期的长度计算第 i 个统计周期的上行带宽。
     具体地, 可以计算第一数据量与第 i 个统计周期的长度的比值, 以上述第一数据 量与第 i 个统计周期的长度的比值作为第 i 个统计周期的下行带宽 ; 计算第二数据量与第 i 个统计周期的长度的比值, 以上述第二数据量与第 i 个统计周期的长度的比值作为第 i 个 统计周期的上行带宽。
     步骤 103, 根据第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比例关 系, 调整第 i+1 个统计周期内 Post 帧的发送间隔。
     具体地, 可以确定第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比 值; 当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的第一比值小于第一预定 数值时, 增大第 i+1 个统计周期内 Post 帧的发送间隔 ; 当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的第二比值小于第二预定数值时, 缩小第 i+1 个统计周期内 Post 帧的发送间隔。
     更具体地, 可以将 0 与第一预定数值限定的区间划分为 N 个子区间, N 为正整数, N≥2; 当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的第一比值落入上述 N 个子区间中的任一子区间时, 采用第一比值所在子区间对应的步长, 增大第 i+1 个统计周 期内 Post 帧的发送间隔。 可以将 0 与第二预定数值限定的区间划分为 M 个子区间, M 为正整数, M≥2; 当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的第二比值落入上述 M 个子区间中 的任一子区间时, 采用第二比值所在子区间对应的步长, 缩小第 i+1 个统计周期内 Post 帧 的发送间隔。
     本实施例中, 第一预定数值大于 0, 且小于或等于 1 ; 第二预定数值大于 0, 且小于 或等于 1。当然, 本实施例并不仅限于此, 第一预定数值和第二预定数值的取值范围也可 以为其他范围, 本实施例对此不作限定 ; 例如 : 当上述第一比值或第二比值为大于 1 的数值 时, 也可以根据系统性能要求或实际需要对第 i+1 个统计周期内 Post 帧的发送间隔进行调 整。
     另外, 当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的大小相同时, 可以不对第 i+1 个统计周期内 Post 帧的发送间隔进行调整。
     上述实施例可以实现调整第 i+1 个统计周期的上行带宽, 进而可以实现调整第 i+2 个统计周期的下行带宽, 使得 PCIE 链路的上下行带宽达到动态平衡, 并可以提高 PCIE 链路的带宽利用率。
     本发明图 1 所示实施例中, 上述统计周期的生成时序可以如图 2 所示, 图 2 为本发 明统计周期生成时序一个实施例的示意图, 图 2 中的 5 微秒的统计周期是个初始值, 可以根 据不同应用场景的实际情况由 CPU 进行设定。当本发明实施例提供的方法应用于不同系统 中时, 随着不同系统的物理带宽的变化, 统计周期也需要相应调整, 以使得在一个相对较长 的统计周期内, 带宽的波动更加平滑。本发明实施例以链路的最大带宽为 7Gbps 为例来计 算, 当同时发起的最大读数据量为 4KB 时, 可以计算得到统计周期为 5 微秒。
     总的来说, 影响 PCIE 接口下行带宽的因素主要有以下两点 :
     (1)DMA 发起的读请求的数据量越大, 对端设备通过 PCIE 接口发给 FPGA 的数据量 就越多, 因此在 PCIE 接口上收到的数据量就越大。
     (2)PCIE 接口的上行带宽太大将会降低下行带宽。根据 PCIE 接口特性, 写请求能 够穿越读请求, 当写请求的数据量太大时, PCIE 接口将会阻塞读请求, 优先保证写请求, 从 而导致上下行带宽不均衡。
     因此根据上下行链路的带宽状态, 限制上行带宽是保证上下行带宽均衡的重要手 段。本发明实施例根据第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值, 调整第 i+1 个统计周期内 Post 帧的发送间隔, 从而可以达到调整第 i+1 个统计周期的上行 带宽, 进而影响第 i+2 个统计周期的下行带宽, 使得 PCIE 链路的上下行带宽动态平衡的目 的。
     下面以第一预定数值为 75% ; 第二预定数值为 75% ; M 和 N 均为 3, 各子区间对应 的步长分别为 4、 2 和 1 为例进行说明。
     本发明实施例的一种具体实现方式中, 当第 i 个统计周期的下行带宽与第 i 个统 计周期的上行带宽的比值大于 0, 且小于或等于 25%时, 以步长为 4, 增大第 i+1 个统计周期 内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值大于 25%, 且 小于或等于 50%时, 以步长为 2, 增大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ; 当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值大于 50%, 小 于或等于 75%时, 以步长为 1, 增大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔。
     总的来说, 当第 i 个统计周期的下行带宽小于第 i 个统计周期的上行带宽时, 要增 大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔, 以缩小上行带宽, 使得下行链路的 Non-Post 能够尽快提交给 CPU, 从而增加下行链路带宽。
     当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值大于 0, 且小于 或等于 25%时, 以步长为 4, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值大于 25%, 且 小于或等于 50%时, 以步长为 2, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值大于 50%, 且 小于或等于 75%时, 以步长为 1, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     总的来说, 当第 i 个统计周期的上行带宽小于第 i 个统计周期的下行带宽时, 要缩 小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔, 以增大上行带宽, 这样下行链路的 Non-Post 帧将被 Post 帧穿越, 从而缩小下行链路带宽。
     举例来说, 假设第 i 个统计周期内上行链路的 Post 帧的发送间隔为 6, 接口带宽为 200MHz, 位宽为 64 位。因此第 i 个统计周期 (5 微秒= 5000 纳秒, 即 1000 个时钟周期 ) 内 可以传输的 64 字节长度的数据包的个数为 :
     有效数据传输周期 : 64 字节 ×8/64 = 8 个时钟周期, 第 i 个统计周期内上行链路 的 Post 帧的发送间隔为 6 个时钟周期, 因此发送一个 64 字节的数据包需要 14 个时钟周期。
     这样, 5 微秒内可以传输的数据包的个数= 1000/14 = 71, 因此 5 微秒内传输的数 据量为 71×64 字节= 4544 字节。
     假设第 i 个统计周期的下行带宽小于或等于第 i 个统计周期的上行带宽的 25%, 即第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值小于或等于 25%, 则以 步长为 4, 增大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔, 这样, 第 i+1 个统计周
     期内, 传输一个 64 字节长的数据包需要 8+6+4 = 18 个时钟周期, 因此 5 微秒内可以传输的 数据包的个数为 1000/18 = 55, 也就是 3520 字节的数据量。
     因此增大上行链路的 Post 帧的发送间隔可以明显降低上行链路的带宽, 同理可 知缩小上行链路的 Post 帧的发送间隔可以增大上行链路的带宽。
     而调节当前统计周期的上行带宽将影响 PCIE 接口上提交给下行链路的读请求的 数据量, 而当前统计周期内发出的读请求, 只能影响下一个统计周期的下行带宽, 也就是通 过调整第 i+1 个统计周期的上行带宽来影响第 i+2 个统计周期的下行带宽, 以此类推。
     通俗的说, 本发明实施例就是根据上下行链路对 PCIE 接口带宽的互相争用来达 到动态平衡, 如图 3 所示, 图 3 为本发明上下行带宽变化情况一个实施例的示意图, 图 3 中, 实线表示上行带宽变化情况, 虚线表示下行带宽变化情况, 由图 3 可以看出, 当上行带宽增 加时, 下行带宽将会逐渐减少 ; 当上行带宽减少时, 下行带宽将会逐渐增加。
     以 64 字节 (Byte) 的短包为例, DMA 以 200M 输出的原始位宽为 64 位的数据, DMA 的最小帧间间隔为 6 个时钟周期, 即 DMA 的上行带宽为 200M×64bit×8/14 = 7.3Gbps, 如 果第 i 个统计周期的下行带宽为 2.0Gbps, 则第 i 个统计周期下行带宽与上行带宽的比值约 为 27.40%, 该比值大于 25%, 且小于 50%, 因此需要以步长为 2, 增大第 i+1 个统计周期内 上行链路的 Post 帧的发送间隔, 这样第 i+1 个统计周期的上行带宽变为 200M×64bit×8/ (14+2) = 6.4Gbps, 在第 i+1 个统计周期继续进行统计, 发现下行链路带宽提升到 2.5Gbps, 这样, 第 i+1 个统计周期下行带宽与上行带宽的比值约为 39%, 该比值仍旧大于 25%, 且小 于 50%, 因此需要以步长为 2, 增大第 i+2 个统计周期内上行链路的 Post 帧的发送间隔, 这 样第 i+2 个统计周期的上行带宽变为 200M×64bit×8/(14+2+2) = 5.6Gbps, 此时下行链路 带宽逐渐上升到 3.0Gbps。重复以上步骤, 逐渐达到上下行带宽的动态平衡。
     本发明实施例中, 当第 i 个统计周期的上行带宽等于第 i 个统计周期的下行带 宽时, 表示上行带宽与下行带宽暂时达到平衡, 不需调整第 i+1 个统计周期内上行链路的 Post 帧的发送间隔。
     另外, 本发明实施例中, 当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带 宽的比值在其他数值范围 ( 例如 : 大于 75%且小于 1) 时, 第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽相差比较小, 上行带宽也不需要大幅调整, 即不需要大幅调整第 i+1 个统计周期内上行链路的 Post 帧的发送间隔。
     当然本发明实施例并不仅限于此, 本发明实施例对将 0 与第一预设数值限定的区 间划分为 N 个子区间, 以及将 0 与第二预定数值限定的区间划分为 M 个子区间的方式, 以及 各子区间对应步长的大小不作限定。 下面以第一预定数值为 1, 第二预定数值为 1, M和N均 为 3, 步长分别为 3、 2 和 1 为例进一步说明。
     本发明实施例的另一具体实现方式中, 可以当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值大于 0, 且小于或等于 1/3 时, 以步长为 3, 增大第 i+1 个统计 周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值大于 1/3, 且小 于或等于 2/3 时, 以步长为 2, 增大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值大于 2/3, 且小 于或等于 1 时, 以步长为 1, 增大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔。当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值大于 0, 且小于 或等于 1/3 时, 以步长为 3, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值大于 1/3, 且小 于或等于 2/3 时, 以步长为 2, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值大于 2/3, 且小 于或等于 1 时, 以步长为 1, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔。
     当然, 本发明实施例中, 上下行带宽的平衡是一种动态的过程, 受到 CPU 处理能力 与 PCIE 接口特性的影响, 上下行带宽不会在达到平衡后稳定不变, 会出现时而上行带宽较 大, 时而下行链路带宽较大, 但是在一个比较长的统计时间 ( 例如 : 1 秒或者 10 秒 ) 内, 上 下行带宽是趋于平衡的。
     而且本发明实施例在 CPU 的处理能力不足, 引起 DMA 的 BD 库中任何一个方向可用 BD 不够时, 都可以保证 PCIE 链路上另外一个方向的带宽不受影响, 使得 PCIE 链路的使用率 达到最大。
     本发明实施例提供的上述方法可以实现在可编程逻辑器件, 例如 FPGA 或复杂可 编程逻辑器件 (Complex Programmable Logic Device ; 以下简称 : CPLD) 芯片内部, 占用逻 辑资源少, 在不占用 CPU 资源的情况下, 可以比较稳定的控制 PCIE 接口上的上下行带宽, 进 而可以实现平衡上下行链路的速率, 并且保证 PCIE 链路的带宽使用率达到最大。本发明实 施例对其他可能造成链路带宽不平衡的接口标准也是适用的, 当同一总线下连接两个不同 的设备, 本发明实施例提供的方法对其性能的平衡也是适用的。 本领域普通技术人员可以理解 : 实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成, 前述的程序可以存储于一计算机可读取存储介质中, 该程序 在执行时, 执行包括上述方法实施例的步骤 ; 而前述的存储介质包括 : ROM、 RAM、 磁碟或者 光盘等各种可以存储程序代码的介质。
     图 4 为本发明发送间隔调整装置一个实施例的结构示意图, 本实施例中的发送间 隔调整装置可以作为网络设备, 或网络设备的一部分实现本发明图 1 所示实施例的流程。 如图 4 所示, 该发送间隔调整装置可以包括 : 统计模块 41、 计算模块 42 和调整模块 43。
     其中, 统计模块 41, 用于统计第 i 个统计周期内从 PCIE 接口接收到的第一数据量 和第 i 个统计周期内发送到 PCIE 接口的第二数据量 ;
     计算模块 42, 用于根据第一数据量与第 i 个统计周期的长度计算第 i 个统计周期 的下行带宽, 并根据第二数据量与第 i 个统计周期的长度计算第 i 个统计周期的上行带宽 ; 具体地, 计算模块 42 可以计算第一数据量与第 i 个统计周期的长度的第一比值, 以上述第 一比值作为第 i 个统计周期的下行带宽 ; 以及计算第二数据量与第 i 个统计周期的长度的 第二比值, 以上述第二比值作为第 i 个统计周期的上行带宽。
     调整模块 43, 用于根据第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽 的比例关系, 调整第 i+1 个统计周期内 Post 帧的发送间隔。
     本实施例中, 上述发送间隔调整装置可以通过可编程逻辑器件, 例如 : FPGA 或 CPLD 实现 ; 本实施例中的网络设备可以为交换机或路由器等设备, 本实施例对网络设备的 具体形式不作限定。
     上述发送间隔调整装置可以实现调整第 i+1 个统计周期的上行带宽, 进而可以实
     现调整第 i+2 个统计周期的下行带宽, 使得 PCIE 链路的上下行带宽达到动态平衡, 并可以 提高 PCIE 链路的带宽利用率。
     图 5 为本发明发送间隔调整装置另一个实施例的结构示意图, 与图 4 所示的发送 间隔调整装置相比, 不同之处在于, 本实施例中, 调整模块 43 可以包括 : 确定子模块 431、 增 大子模块 432 和缩小子模块 433 ;
     其中, 确定子模块 431, 用于确定第 i 个统计周期的上行带宽与第 i 个统计周期的 下行带宽的比值, 以及确定第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比 值;
     增大子模块 432, 用于当第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽 的比值小于第一预定数值时, 增大第 i+1 个统计周期内 Post 帧的发送间隔 ;
     缩小子模块 433, 用于当第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽 的比值小于第二预定数值时, 缩小第 i+1 个统计周期内 Post 帧的发送间隔。
     进一步地, 调整模块 43 还可以包括 : 第一划分子模块 434 ;
     第一划分子模块 434, 用于将 0 与第一预定数值限定的区间划分为 N 个子区间, N 为正整数, N≥2; 则, 增大子模块 432, 具体用于当第 i 个统计周期的下行带宽与第 i 个统 计周期的上行带宽的第一比值落入上述 N 个子区间中的任一子区间时, 采用第一比值所在 子区间对应的步长, 增大第 i+1 个统计周期内 Post 帧的发送间隔。 进一步地, 调整模块 43 还可以包括 : 第二划分子模块 435 ;
     第二划分子模块 435, 用于将 0 与第二预定数值限定的区间划分为 M 个子区间, M 为正整数, M≥2; 则, 缩小子模块 433, 具体用于当第 i 个统计周期的上行带宽与第 i 个统 计周期的下行带宽的第二比值落入上述 M 个子区间中的任一子区间时, 采用第二比值所在 子区间对应的步长, 缩小第 i+1 个统计周期内 Post 帧的发送间隔。
     上述发送间隔调整装置在不占用 CPU 资源的情况下, 可以比较稳定的控制 PCIE 接 口上的上下行带宽, 进而可以实现平衡上下行链路的速率, 并且保证 PCIE 链路的带宽使用 率达到最大。
     图 6 为本发明发送间隔调整装置再一个实施例的结构示意图, 如图 6 所示, 该发送 间隔调整装置可以包括 : 统计定时单元 61、 上行带宽计算单元 62、 下行带宽计算单元 63、 请 求仲裁单元 64、 DMA 65、 TLP 帧组装发送单元 66、 TLP 帧接收分类单元 67、 数据缓存 68、 Post 帧发送间隔计算单元 69 和 PCIE 内核 (PCIE Core)610。
     其中, 统计定时单元 61, 用于在 DMA 65 启动后, 利用计数器产生 5 微秒间隔的脉 冲, 提供给上行带宽计算单元 62 和下行带宽计算单元 63 作为统计周期。
     上行带宽计算单元 62, 用于在第 i 个统计周期内, 对请求仲裁单元 64 发送到 PCIE 接口的第二数据量进行统计, 并计算第二数据量与第 i 个统计周期的长度的第二比值, 以 第二比值作为第 i 个统计周期的上行带宽。每个统计周期结束后, 上行带宽计算单元 62 统 计的数值清 0。
     下行带宽计算单元 63, 用于在第 i 个统计周期内, 对从 PCIE 接口接收到的第一数 据量, 并计算第一数据量与统计周期的长度的第一比值, 以上述第一比值作为第 i 个统计 周期的下行带宽。每个统计周期结束后, 下行带宽计算单元 63 统计的数值清 0。
     本实施例中的上行带宽计算单元 62 和下行带宽计算单元 63 可以实现本发明图 4
     和图 5 所示实施例中统计模块 41 和计算模块 42 的功能。
     请求仲裁单元 64, 用于根据上行带宽计算单元 62 计算的第 i 个统计周期的上行带 宽与下行带宽计算单元 63 计算的第 i 个统计周期的下行带宽的比例关系, 以及 Post 帧发 送间隔计算单元 69 计算的第 i+1 个统计周期内 Post 帧的发送间隔, 均衡 PCIE 接口上下行 链路的带宽。
     DMA 65, 用于根据 CPU 的相关设定发起各种数据传输的相关请求, 例如读 BD 请求、 读数据请求、 更新 BD 请求和 / 或写数据请求。其中读数据请求与读 BD 请求属于 Non-Post 请求 ; 更新 BD 请求与写数据请求属于 Post 请求。并且在下游接多个端口的时候, 根据下游 的数据缓存水线进行多通道仲裁, 根据下游端口的数据传输情况将上游总线上获取的带宽 动态分配给下游接口。
     TLP 帧组装发送单元 66, 用于根据请求仲裁单元 64 发起的请求种类, 按 PCIE 协议 规定的格式组装 TLP 帧, 而后发送给 PCIE 内核 610。
     TLP 帧接收分类单元 67, 用于将从 PCIE 内核 610 取得的 TLP 帧按照不同种类分开, 提供给 DMA 65。
     数据缓存 68, 用于存储 DMA 65 与下游通信接口收到的数据, 实现数据的存储转 发。 Post 帧发送间隔计算单元 69, 用于根据上行带宽计算单元 62 计算的第 i 个统计 周期的上行带宽与下行带宽计算单元 63 计算的第 i 个统计周期的下行带宽, 计算第 i+1 个 统计周期内 Post 帧的发送间隔, 然后将该发送间隔发送给请求仲裁单元 64。本实施例中, 请求仲裁单元 64 和 Post 帧发送间隔计算单元 69 可以实现本发明图 4 和图 5 所示实施例 中调整模块 43 的功能。
     PCIE 内核 610, 用于接收 TLP 帧组装发送单元 66 发送的 TLP 帧, 以及向 TLP 帧接 收分类单元 67 发送 TLP 帧。
     本实施例中的 Post 帧发送间隔计算单元 69 可以通过图 7 所示的电路实现, 图7 为本发明 Post 帧发送间隔计算单元一个实施例的示意图。
     如图 7 所示, 当第 i 个统计周期的下行带宽小于或等于第 i 个统计周期的上行带 宽的 25%, 即第 i 个统计周期的下行带宽与第 i 个统计周期的上行带宽的比值小于或等于 25%时, 以步长为 4, 增大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的下行带宽大于第 i 个统计周期的上行带宽的 25%, 且小于或 等于第 i 个统计周期的上行带宽的 50%, 即第 i 个统计周期的下行带宽与第 i 个统计周期 的上行带宽的比值大于 25%, 且小于或等于 50%时, 以步长为 2, 增大第 i+1 个统计周期内 上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的下行带宽大于第 i 个统计周期的上行带宽的 50%, 且小于或 等于第 i 个统计周期的上行带宽的 75%, 即第 i 个统计周期的下行带宽与第 i 个统计周期 的上行带宽的比值大于 50%, 小于或等于 75%时, 以步长为 1, 增大第 i+1 个统计周期内上 行链路的 Post 帧的发送间隔。
     总的来说, 当第 i 个统计周期的下行带宽小于第 i 个统计周期的上行带宽时, 要增 大第 i+1 个统计周期内上行链路的 Post 帧的发送间隔, 以缩小上行带宽, 使得下行链路的 Non-Post 能够尽快提交给 CPU, 从而增加下行链路带宽。
     当第 i 个统计周期的上行带宽小于或等于第 i 个统计周期的下行带宽的 25%, 即 第 i 个统计周期的上行带宽与第 i 个统计周期的下行带宽的比值小于或等于 25%时, 以步 长为 4, 缩小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的上行带宽大于第 i 个统计周期的下行带宽的 25%, 且小于或 等于第 i 个统计周期的下行带宽的 50%, 即第 i 个统计周期的上行带宽与第 i 个统计周期 的下行带宽的比值大于 25%, 且小于或等于 50%时, 以步长为 2, 缩小第 i+1 个统计周期内 上行链路的 Post 帧的发送间隔 ;
     当第 i 个统计周期的上行带宽大于第 i 个统计周期的下行带宽的 50%, 且小于或 等于第 i 个统计周期的下行带宽的 75%, 即第 i 个统计周期的上行带宽与第 i 个统计周期 的下行带宽的比值大于 50%, 且小于或等于 75%时, 以步长为 1, 缩小第 i+1 个统计周期内 上行链路的 Post 帧的发送间隔 ;
     总的来说, 当第 i 个统计周期的上行带宽小于第 i 个统计周期的下行带宽时, 要缩 小第 i+1 个统计周期内上行链路的 Post 帧的发送间隔, 以增大上行带宽, 这样下行链路的 Non-Post 帧将被 Post 帧穿越, 从而缩小下行链路带宽。
     本实施例中, 请求仲裁单元 64 的仲裁状态机如图 8 所示, 图 8 为本发明仲裁状态 机一个实施例的示意图。
     现将图 8 中各状态和各信号的含义介绍如下。
     状态说明 :
     IDLE : 空闲状态 ;
     NP_REQ : Non-Post 帧请求响应, 即读请求响应状态 ;
     DLBD_RD : 响应读下行 BD 请求 ;
     ULBD_RD : 响应读上行 BD 请求 ;
     DLDAT_RD : 响应读下行数据请求 ;
     Post_REQ : Post 帧请求响应, 即写请求响应状态 ;
     DLBD_WR : 响应写下行 BD 请求 ;
     ULBD_WR : 响应写上行 BD 请求 ;
     ULDAT_RD : 响应写上行数据请求。
     信号说明 :
     s_rdreq : 拉高表示 DMA 65 有发起读请求, 也就是说当 s_dlbd_rdreq 信号、 s_ ulbd_rdreq 或 s_dldat_rdreq 拉高时, s_rdreq 拉高。
     s_wrreq : 拉高表示 DMA 65 有发起写请求, 也就是说 s_dlbd_wrreq 信号、 s_ulbd_ wrreq 或 s_ulbd_wrreq 拉高时, s_wrreq 拉高。
     s_dlbd_rdreq : 拉高表示 DMA 65 有发起读下行 BD 请求 ;
     s_ulbd_rdreq : 拉高表示 DMA 65 有发起读上行 BD 请求 ;
     s_dldat_rdreq : 拉高表示 DMA 65 有发起读下行数据请求 ;
     s_dlbd_wrreq : 拉高表示 DMA 65 有发起写下行 BD 请求 ;
     s_ulbd_wrreq : 拉高表示 DMA 65 有发起写上行 BD 请求 ;
     s_ulbd_wrreq : 拉高表示 DMA 65 有发起写上行数据请求 ;
     dlbd_rddone : 拉高表示 DMA 65 的读下行 BD 请求成功发送 ;ulbd_rddone : 拉高表示 DMA 65 的读上行 BD 请求成功发送 ;
     dldat_rddone : 拉高表示 DMA 65 的读下行数据请求成功发送 ;
     dlbd_wrdone : 拉高表示 DMA 65 的写下行 BD 请求成功发送 ;
     ulbd_wrdone : 拉高表示 DMA 65 的写上行 BD 请求成功发送 ;
     uldat_wrdone : 拉高表示 DMA 65 的写上行数据请求成功发送。
     仲裁状态机说明 :
     (1) 系统在复位后, 进入 IDLE 状态 ;
     (2) 在 IDLE 状态下检测到 s_rdreq 信号为高, 就跳转至 NP_REQ, 响应各种读请求。
     (3) 在 IDLE 状态下如果没有检测到 s_rdreq 信号为高, 而是检测到 s_wrreq 信号 为高, 则跳转至 Post_REQ 状态, 响应各种写请求。
     (4) 在 NP_REQ 状态下, 如果检测到 s_dlbd_rdreq 信号为高则跳转至 DLBD_RD 状 态, 响应 DMA65 发出的读下行 BD 请求。
     (5) 在 NP_REQ 状态下, 如果检测到 s_dlbd_rdreq 信号为低, 而 s_ulbd_rdreq 信号 为高则跳转至 ULBD_RD 状态, 响应 DMA65 发出的读上行 BD 请求。
     (6) 在 NP_REQ 状态下, 如果检测到 s_dlbd_rdreq 信号与 s_ulbd_rdreq 信号为低, 且 s_dldat_rdreq 信号为高, 则跳转至 DLDAT_RD 状态, 响应 DMA65 发出的读下行数据的请 求。
     (7) 在 DLBD_RD 状态下, 在读下行 BD 的 TLP 帧提交给 PCIE 内核 610 之后, 若检测 到 dlbd_rddone 信号拉高, 则跳转回 IDLE 状态。
     (8) 在 ULBD_RD 状态下, 在读上行 BD 的 TLP 帧请求提交给 PCIE 内核 610 之后, 若 检测到 ulbd_rddone 信号拉高, 则跳转回 IDLE 状态。
     (9) 在 DLDAT_RD 状态下, 在读下行数据 TLP 帧提交给 PCIE 内核 610 之后, 若检测 到 dldat_rddone 信号拉高, 则跳转回 IDLE 状态。
     (10) 在 POST_REQ 状态下, 如果到达 Post 帧发送间隔计算单元 69 计算的发送间 隔, 则开始进行判决, 当检查到 s_dlbd_wrreq 为高时跳转至 DLBD_WR 状态, 响应 DMA 65 发 起的更新下行 BD 请求。
     (11) 在 POST_REQ 状态下, 如果到达 Post 帧发送间隔计算单元 69 计算的发送间 隔, 则开始进行判决, 当检查到 s_dlbd_wrreq 为低并且 s_ulbd_wrreq 为高时, 跳转至 ULBD_ WR 状态, 响应 DMA 65 发起的更新下行 BD 请求。
     (12) 在 POST_REQ 状态下, 如果到达 Post 帧发送间隔计算单元 69 计算的发送间 隔, 则开始进行判决, 当检查到 s_dlbd_wrreq 信号与 s_ulbd_wrreq 为低, 并且 s_uldat_ wrreq 信号为高时, 跳转至 ULDAT_WR 状态, 响应 DMA65 发起的写上行数据请求。
     (13) 在 DLBD_WR 状态下, 当更新下行 BD 的 TLP 帧提交给 PCIE 内核 610 之后, 若检 测到 dlbd_wrdone 拉高, 则跳转回 IDLE 状态。
     (14) 在 ULBD_WR 状态下, 当更新上行 BD 的 TLP 帧提交给 PCIE 内核 610 之后, 若检 测到 ulbd_wrdone 拉高, 则跳转回 IDLE 状态。
     (15) 在 ULDAT_WR 状态下, 当写上行数据的 TLP 帧提交给 PCIE 内核 610 之后, 若检 测到 uldat_wrdone 拉高, 则跳转回 IDLE 状态。
     本实施例所示的发送间隔调整装置可以通过可编程逻辑器件, 例如 : FPGA 或 CPLD等实现, 在不占用 CPU 资源的情况下, 可以比较稳定的控制 PCIE 接口上的上下行带宽, 进而 可以实现平衡上下行链路的速率, 并且保证 PCIE 链路的带宽使用率达到最大。
     本发明实施例还提供一种网络设备, 该网络设备可以通过本发明图 4、 图 5 或图 6 所示的发送间隔调整装置实现, 该网络设备可以为交换机或路由器等设备, 本实施例对网 络设备的具体形式不作限定。
     本领域技术人员可以理解附图只是一个优选实施例的示意图, 附图中的模块或流 程并不一定是实施本发明所必须的。
     本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分 布于实施例的装置中, 也可以进行相应变化位于不同于本实施例的一个或多个装置中。上 述实施例的模块可以合并为一个模块, 也可以进一步拆分成多个子模块。
     最后应说明的是 : 以上实施例仅用以说明本发明的技术方案, 而非对其限制 ; 尽 管参照前述实施例对本发明进行了详细的说明, 本领域的普通技术人员应当理解 : 其依然 可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替 换; 而这些修改或者替换, 并不使相应技术方案的本质脱离本发明各实施例技术方案的范 围。

发送间隔调整方法、装置和网络设备.pdf_第1页
第1页 / 共19页
发送间隔调整方法、装置和网络设备.pdf_第2页
第2页 / 共19页
发送间隔调整方法、装置和网络设备.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《发送间隔调整方法、装置和网络设备.pdf》由会员分享,可在线阅读,更多相关《发送间隔调整方法、装置和网络设备.pdf(19页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102347902A43申请公布日20120208CN102347902ACN102347902A21申请号201110287863822申请日20110926H04L12/5620060171申请人北京星网锐捷网络技术有限公司地址100036北京市海淀区复兴路29号中意鹏奥酒店东塔A座12层72发明人陈鹏74专利代理机构北京同立钧成知识产权代理有限公司11205代理人马爽54发明名称发送间隔调整方法、装置和网络设备57摘要本发明实施例提供一种发送间隔调整方法、装置和网络设备,该发送间隔调整方法包括统计第I个统计周期内从PCIE接口接收到的第一数据量和发送到PCIE接口的第二。

2、数据量;根据第一数据量与第I个统计周期的长度计算第I个统计周期的下行带宽,并根据第二数据量与第I个统计周期的长度计算第I个统计周期的上行带宽;根据第I个统计周期的上行带宽与下行带宽的比例关系,调整第I1个统计周期内POST帧的发送间隔。本发明实施例可以实现调整第I1个统计周期的上行带宽,进而可以实现调整第I2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书12页附图4页CN102347921A1/2页21一种发送间隔调整方法,其特征在于,包括统计第I个统计周期内。

3、从快速外设部件互连PCIE接口接收到的第一数据量和所述第I个统计周期内发送到所述PCIE接口的第二数据量;根据所述第一数据量与所述第I个统计周期的长度计算所述第I个统计周期的下行带宽,并根据所述第二数据量与所述第I个统计周期的长度计算所述第I个统计周期的上行带宽;根据所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内转发事务帧的发送间隔;I为整数,且I0。2根据权利要求1所述的方法,其特征在于,所述根据所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内转发事务帧的发送间隔包括确定所述第I个统计周期的上行带宽与所。

4、述第I个统计周期的下行带宽的比值,以及确定所述第I个统计周期的下行带宽与所述第I个统计周期的上行带宽的比值;当所述第I个统计周期的下行带宽与所述第I个统计周期的上行带宽的第一比值小于第一预定数值时,增大所述第I1个统计周期内转发事务帧的发送间隔;当所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的第二比值小于第二预定数值时,缩小所述第I1个统计周期内转发事务帧的发送间隔。3根据权利要求2所述的方法,其特征在于,所述当所述第I个统计周期的下行带宽与所述第I个统计周期的上行带宽的第一比值小于第一预定数值时,增大所述第I1个统计周期内转发事务帧的发送间隔包括将0与所述第一预定数值限定的区间。

5、划分为N个子区间,N为正整数,N2;当所述第I个统计周期的下行带宽与所述第I个统计周期的上行带宽的第一比值落入所述N个子区间中的任一子区间时,采用所述第一比值所在子区间对应的步长,增大所述第I1个统计周期内转发事务帧的发送间隔。4根据权利要求2所述的方法,其特征在于,所述当所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的第二比值小于第二预定数值时,缩小所述第I1个统计周期内转发事务帧的发送间隔包括将0与所述第二预定数值限定的区间划分为M个子区间,M为正整数,M2;当所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的第二比值落入所述M个子区间中的任一子区间时,采用所述第二比。

6、值所在子区间对应的步长,缩小所述第I1个统计周期内转发事务帧的发送间隔。5根据权利要求2、3或4所述的方法,其特征在于,所述第一预定数值大于0,且小于或等于1;所述第二预定数值大于0,且小于或等于1。6一种发送间隔调整装置,其特征在于,包括统计模块,用于统计第I个统计周期内从快速外设部件互连PCIE接口接收到的第一数据量和所述第I个统计周期内发送到所述PCIE接口的第二数据量;计算模块,用于根据所述第一数据量与所述第I个统计周期的长度计算所述第I个统计周期的下行带宽,并根据所述第二数据量与所述第I个统计周期的长度计算所述第I个统计周期的上行带宽;权利要求书CN102347902ACN10234。

7、7921A2/2页3调整模块,用于根据所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内转发事务帧的发送间隔。7根据权利要求6所述的装置,其特征在于,所述调整模块包括确定子模块,用于确定所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的比值;增大子模块,用于当所述第I个统计周期的下行带宽与所述第I个统计周期的上行带宽的第一比值小于第一预定数值时,增大所述第I1个统计周期内转发事务帧的发送间隔;缩小子模块,用于当所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的第二比值小于第二预定数值时,缩小所述第I1个统计周期内转发事务帧的发送间隔。

8、。8根据权利要求7所述的装置,其特征在于,所述调整模块还包括第一划分子模块;所述第一划分子模块,用于将0与所述第一预定数值限定的区间划分为N个子区间,N为正整数,N2;所述增大子模块,具体用于当所述第I个统计周期的下行带宽与所述第I个统计周期的上行带宽的第一比值落入所述N个子区间中的任一子区间时,采用所述第一比值所在子区间对应的步长,增大所述第I1个统计周期内转发事务帧的发送间隔。9根据权利要求7所述的装置,其特征在于,还包括第二划分子模块;所述第二划分子模块,用于将0与所述第二预定数值限定的区间划分为M个子区间,M为正整数,M2;所述缩小子模块,具体用于当所述第I个统计周期的上行带宽与所述第。

9、I个统计周期的下行带宽的第二比值落入所述M个子区间中的任一子区间时,采用所述第二比值所在子区间对应的步长,缩小所述第I1个统计周期内转发事务帧的发送间隔。10一种网络设备,其特征在于,包括如权利要求69任意一项所述的发送间隔调整装置。权利要求书CN102347902ACN102347921A1/12页4发送间隔调整方法、装置和网络设备技术领域0001本发明实施例涉及数据传输技术领域,尤其涉及一种发送间隔调整方法、装置和网络设备。背景技术0002快速外设部件互连PERIPHERALCOMPONENTINTERCONNECTEXPRESS;以下简称PCIE总线,沿用了现有的外设部件互连PERIPH。

10、ERALCOMPONENTINTERCONNECTEXPRESS;以下简称PCI编程概念及通讯标准,但传输速度更快,PCIE的一个串行高速收发器的单向物理带宽即可达到25吉比特每秒GIGABITPERSECOND;以下简称GBPS。而PCIE链路分为发送TX与接收RX两个方向,因此仅一个串行高速收发器的双向合计物理带宽就可以达到5GBPS。0003在用户接口层面,使用事务层规定的处理层数据包TRANSACTIONLAYERPACKET;以下简称TLP帧来传输数据。用户的不同传输请求需要根据协议规定类型填写TLP帧头中的相应字段。TLP帧可以分为转发事务POST帧与非转发事务NONPOST帧两大。

11、类,其中写数据请求属于POST帧,而读数据请求则属于NONPOST帧。0004直接内存访问DIRECTMEMORYACCESS;以下简称DMA是一种不经过中央处理单元CENTRALPROCESSINGUNIT;以下简称CPU而直接从内存存取数据的数据交换模式。在DMA传输模式下,CPU只须向现场可编程门阵列FIELDPROGRAMMABLEGATEARRAY;以下简称FPGA端的DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU的资源占有率,可以大大节省系统资源,提高数据传输速率。0005FPGA端的DMA控制器通过缓存描述符B。

12、UFFERDESCRIPTOR;以下简称BD与CPU进行数据传输,CPU在自身的内存中设置相应的收发BD后,启动FPGA的DMA控制器,FPGA根据CPU设定的BD在CPU内存中的位置读取BD,如果是下行BD,则根据下行BD中的数据存储地址和存储长度从CPU内存中搬运数据,如果是上行BD,则将FPGA从下游芯片接口中收到的数据填写到上行BD所设定的CPU内存中,并将写入的数据总长度更新到上行BD中。当FPGA收发完成一个完整数据包后,将相应的上下行BD回写到CPU的内存中,以通知CPU一个数据包已经收发完成。0006其中下行链路定义为CPU向FPGA发送数据,上行链路定义为FPGA向CPU发送。

13、数据。0007一个系统的上下行速率即数据包的收发速率与多种因素相关,例如CPU对数据的处理能力,FPGA内部DMA的处理能力,FPGA和CPU间的接口种类,以及所选用的桥接芯片性能等。当CPU和FPGA内部DMA的处理能力都足够强大时,接口的性能就成了系统性能的瓶颈。0008DMA传输数据包时,每一个数据包均配置一个8字节长度的BD,而且每个BD的读取和回写也需要占用PCIE接口的带宽,FPGA的DMA发起的读BD请求与读数据请求均需要说明书CN102347902ACN102347921A2/12页5通过PCIE接口的TX链路,而系统的下行带宽完全取决于通过PCIETX链路发起的读数据请求数量。

14、,PCIETX链路上发出的读请求的数据量越多,则下行带宽越大。0009并且PCIE协议规定POST帧的可以穿越NONPOST帧,也就是说即使当读数据请求优先于写数据请求提交给PCIE内核PCIECORE之后,PCIE接口上后到的写数据请求也是优先于先前的读数据请求发送到CPU端。0010因此系统的瓶颈在于如何有效利用PCIE接口的TX链路带宽,如何在TX链路上合理分配上行写数据传输带宽和下行读数据的带宽。0011现有的保证系统上下行速率相对均衡的方案一般有2种,即提高PCIE接口物理带宽的方案与控制上行链路速率的方案。00121、提高PCIE接口物理带宽的方案。0013本方案通过提高CPU与F。

15、PGA之间PCIE接口的物理带宽,例如选择满足PCIE20标准的CPU或者使PCIE链路由4改为8,使得物理带宽提升一倍,从而使得系统瓶颈不再存在于PCIE接口上,同时保证上下行链路均达到最大性能。0014但是该方案存在以下缺点系统成本显著上升,增加硬件设计复杂度,需要使用更高性能的CPU与更大容量更多高速接口的FPGA来满足高速PCIE接口的物理指标。并且不能最大限度的利用高速PCIE接口的全部带宽。00152、控制上行链路速率的方案。0016本方案通过限制上行链路的速率,例如固定设置上行链路发包的最小间隔,以限制上行链路的最大带宽来提高下行链路的带宽,保证NONPOST帧不被POST帧穿越。

16、,来达到上下行链路带宽的均衡性。0017但是该方案存在以下缺点将系统的瓶颈转移到FPGA,通过限制FPGA的处理能力,来保证速率均衡,但是通常实际应用场合中,CPU的处理能力要弱于FPGA,在CPU来不及设置下行BD的情况下,而FPGA的上行速率又无法提升,或者包长递增的情况下,无法平衡上下行速率,将有相当一部分的PCIE带宽被浪费。发明内容0018本发明实施例提供一种发送间隔调整方法、装置和网络设备,以实现上下行带宽自适应均衡,提高PCIE接口的带宽利用率。0019本发明实施例提供一种发送间隔调整方法,包括0020统计第I个统计周期内从快速外设部件互连PCIE接口接收到的第一数据量和所述第I。

17、个统计周期内发送到所述PCIE接口的第二数据量;0021根据所述第一数据量与所述第I个统计周期的长度计算所述第I个统计周期的下行带宽,并根据所述第二数据量与所述第I个统计周期的长度计算所述第I个统计周期的上行带宽;0022根据所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内转发事务帧的发送间隔。0023本发明实施例还提供一种发送间隔调整装置,包括0024统计模块,用于统计第I个统计周期内从快速外设部件互连PCIE接口接收到的第一数据量和所述第I个统计周期内发送到所述PCIE接口的第二数据量;说明书CN102347902ACN102347921A3/1。

18、2页60025计算模块,用于根据所述第一数据量与所述第I个统计周期的长度计算所述第I个统计周期的下行带宽,并根据所述第二数据量与所述第I个统计周期的长度计算所述第I个统计周期的上行带宽;0026调整模块,用于根据所述第I个统计周期的上行带宽与所述第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内转发事务帧的发送间隔。0027本发明实施例还提供一种网络设备,包括如上所述的发送间隔调整装置。0028本发明实施例,首先统计第I个统计周期内从PCIE接口接收到的第一数据量和第I个统计周期内发送到上述PCIE接口的第二数据量,然后根据上述第一数据量与第I个统计周期的长度计算第I个统计周期的下行带。

19、宽,并根据第二数据量与第I个统计周期的长度计算第I个统计周期的上行带宽;最后根据所述第I个统计周期的上行带宽与第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内转发事务帧的发送间隔;从而可以实现调整第I1个统计周期的上行带宽,进而可以实现调整第I2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。附图说明0029为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以。

20、根据这些附图获得其他的附图。0030图1为本发明发送间隔调整方法一个实施例的流程图;0031图2为本发明统计周期生成时序一个实施例的示意图;0032图3为本发明上下行带宽变化情况一个实施例的示意图;0033图4为本发明发送间隔调整装置一个实施例的结构示意图;0034图5为本发明发送间隔调整装置另一个实施例的结构示意图;0035图6为本发明发送间隔调整装置再一个实施例的结构示意图;0036图7为本发明POST帧发送间隔计算单元一个实施例的示意图;0037图8为本发明仲裁状态机一个实施例的示意图。具体实施方式0038为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对。

21、本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。0039图1为本发明发送间隔调整方法一个实施例的流程图,如图1所示,该发送间隔调整方法可以包括0040步骤101,统计第I个统计周期内从PCIE接口接收到的第一数据量和第I个统计周期内发送到上述PCIE接口的第二数据量。0041本实施例中,I为整数,且I0。0042步骤102,根据上述第一数据量与第I个统计周期的长度计算第I个统计周期的下说明书CN102347902ACN10。

22、2347921A4/12页7行带宽,并根据上述第二数据量与第I个统计周期的长度计算第I个统计周期的上行带宽。0043具体地,可以计算第一数据量与第I个统计周期的长度的比值,以上述第一数据量与第I个统计周期的长度的比值作为第I个统计周期的下行带宽;计算第二数据量与第I个统计周期的长度的比值,以上述第二数据量与第I个统计周期的长度的比值作为第I个统计周期的上行带宽。0044步骤103,根据第I个统计周期的上行带宽与第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内POST帧的发送间隔。0045具体地,可以确定第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值;当第I个统计周期的下行带。

23、宽与第I个统计周期的上行带宽的第一比值小于第一预定数值时,增大第I1个统计周期内POST帧的发送间隔;当第I个统计周期的上行带宽与第I个统计周期的下行带宽的第二比值小于第二预定数值时,缩小第I1个统计周期内POST帧的发送间隔。0046更具体地,可以将0与第一预定数值限定的区间划分为N个子区间,N为正整数,N2;当第I个统计周期的下行带宽与第I个统计周期的上行带宽的第一比值落入上述N个子区间中的任一子区间时,采用第一比值所在子区间对应的步长,增大第I1个统计周期内POST帧的发送间隔。0047可以将0与第二预定数值限定的区间划分为M个子区间,M为正整数,M2;当第I个统计周期的上行带宽与第I个。

24、统计周期的下行带宽的第二比值落入上述M个子区间中的任一子区间时,采用第二比值所在子区间对应的步长,缩小第I1个统计周期内POST帧的发送间隔。0048本实施例中,第一预定数值大于0,且小于或等于1;第二预定数值大于0,且小于或等于1。当然,本实施例并不仅限于此,第一预定数值和第二预定数值的取值范围也可以为其他范围,本实施例对此不作限定;例如当上述第一比值或第二比值为大于1的数值时,也可以根据系统性能要求或实际需要对第I1个统计周期内POST帧的发送间隔进行调整。0049另外,当第I个统计周期的上行带宽与第I个统计周期的下行带宽的大小相同时,可以不对第I1个统计周期内POST帧的发送间隔进行调整。

25、。0050上述实施例可以实现调整第I1个统计周期的上行带宽,进而可以实现调整第I2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。0051本发明图1所示实施例中,上述统计周期的生成时序可以如图2所示,图2为本发明统计周期生成时序一个实施例的示意图,图2中的5微秒的统计周期是个初始值,可以根据不同应用场景的实际情况由CPU进行设定。当本发明实施例提供的方法应用于不同系统中时,随着不同系统的物理带宽的变化,统计周期也需要相应调整,以使得在一个相对较长的统计周期内,带宽的波动更加平滑。本发明实施例以链路的最大带宽为7GBPS为例来计算,当同时发起的。

26、最大读数据量为4KB时,可以计算得到统计周期为5微秒。0052总的来说,影响PCIE接口下行带宽的因素主要有以下两点00531DMA发起的读请求的数据量越大,对端设备通过PCIE接口发给FPGA的数据量就越多,因此在PCIE接口上收到的数据量就越大。说明书CN102347902ACN102347921A5/12页800542PCIE接口的上行带宽太大将会降低下行带宽。根据PCIE接口特性,写请求能够穿越读请求,当写请求的数据量太大时,PCIE接口将会阻塞读请求,优先保证写请求,从而导致上下行带宽不均衡。0055因此根据上下行链路的带宽状态,限制上行带宽是保证上下行带宽均衡的重要手段。本发明实施。

27、例根据第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值,调整第I1个统计周期内POST帧的发送间隔,从而可以达到调整第I1个统计周期的上行带宽,进而影响第I2个统计周期的下行带宽,使得PCIE链路的上下行带宽动态平衡的目的。0056下面以第一预定数值为75;第二预定数值为75;M和N均为3,各子区间对应的步长分别为4、2和1为例进行说明。0057本发明实施例的一种具体实现方式中,当第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值大于0,且小于或等于25时,以步长为4,增大第I1个统计周期内上行链路的POST帧的发送间隔;0058当第I个统计周期的下行带宽与第I个统计周期的上行带。

28、宽的比值大于25,且小于或等于50时,以步长为2,增大第I1个统计周期内上行链路的POST帧的发送间隔;0059当第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值大于50,小于或等于75时,以步长为1,增大第I1个统计周期内上行链路的POST帧的发送间隔。0060总的来说,当第I个统计周期的下行带宽小于第I个统计周期的上行带宽时,要增大第I1个统计周期内上行链路的POST帧的发送间隔,以缩小上行带宽,使得下行链路的NONPOST能够尽快提交给CPU,从而增加下行链路带宽。0061当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值大于0,且小于或等于25时,以步长为4,缩小第I1。

29、个统计周期内上行链路的POST帧的发送间隔;0062当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值大于25,且小于或等于50时,以步长为2,缩小第I1个统计周期内上行链路的POST帧的发送间隔;0063当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值大于50,且小于或等于75时,以步长为1,缩小第I1个统计周期内上行链路的POST帧的发送间隔;0064总的来说,当第I个统计周期的上行带宽小于第I个统计周期的下行带宽时,要缩小第I1个统计周期内上行链路的POST帧的发送间隔,以增大上行带宽,这样下行链路的NONPOST帧将被POST帧穿越,从而缩小下行链路带宽。0065举例。

30、来说,假设第I个统计周期内上行链路的POST帧的发送间隔为6,接口带宽为200MHZ,位宽为64位。因此第I个统计周期5微秒5000纳秒,即1000个时钟周期内可以传输的64字节长度的数据包的个数为0066有效数据传输周期64字节8/648个时钟周期,第I个统计周期内上行链路的POST帧的发送间隔为6个时钟周期,因此发送一个64字节的数据包需要14个时钟周期。0067这样,5微秒内可以传输的数据包的个数1000/1471,因此5微秒内传输的数据量为7164字节4544字节。0068假设第I个统计周期的下行带宽小于或等于第I个统计周期的上行带宽的25,即第I个统计周期的下行带宽与第I个统计周期的。

31、上行带宽的比值小于或等于25,则以步长为4,增大第I1个统计周期内上行链路的POST帧的发送间隔,这样,第I1个统计周说明书CN102347902ACN102347921A6/12页9期内,传输一个64字节长的数据包需要86418个时钟周期,因此5微秒内可以传输的数据包的个数为1000/1855,也就是3520字节的数据量。0069因此增大上行链路的POST帧的发送间隔可以明显降低上行链路的带宽,同理可知缩小上行链路的POST帧的发送间隔可以增大上行链路的带宽。0070而调节当前统计周期的上行带宽将影响PCIE接口上提交给下行链路的读请求的数据量,而当前统计周期内发出的读请求,只能影响下一个统。

32、计周期的下行带宽,也就是通过调整第I1个统计周期的上行带宽来影响第I2个统计周期的下行带宽,以此类推。0071通俗的说,本发明实施例就是根据上下行链路对PCIE接口带宽的互相争用来达到动态平衡,如图3所示,图3为本发明上下行带宽变化情况一个实施例的示意图,图3中,实线表示上行带宽变化情况,虚线表示下行带宽变化情况,由图3可以看出,当上行带宽增加时,下行带宽将会逐渐减少;当上行带宽减少时,下行带宽将会逐渐增加。0072以64字节BYTE的短包为例,DMA以200M输出的原始位宽为64位的数据,DMA的最小帧间间隔为6个时钟周期,即DMA的上行带宽为200M64BIT8/1473GBPS,如果第I。

33、个统计周期的下行带宽为20GBPS,则第I个统计周期下行带宽与上行带宽的比值约为2740,该比值大于25,且小于50,因此需要以步长为2,增大第I1个统计周期内上行链路的POST帧的发送间隔,这样第I1个统计周期的上行带宽变为200M64BIT8/14264GBPS,在第I1个统计周期继续进行统计,发现下行链路带宽提升到25GBPS,这样,第I1个统计周期下行带宽与上行带宽的比值约为39,该比值仍旧大于25,且小于50,因此需要以步长为2,增大第I2个统计周期内上行链路的POST帧的发送间隔,这样第I2个统计周期的上行带宽变为200M64BIT8/142256GBPS,此时下行链路带宽逐渐上升。

34、到30GBPS。重复以上步骤,逐渐达到上下行带宽的动态平衡。0073本发明实施例中,当第I个统计周期的上行带宽等于第I个统计周期的下行带宽时,表示上行带宽与下行带宽暂时达到平衡,不需调整第I1个统计周期内上行链路的POST帧的发送间隔。0074另外,本发明实施例中,当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值在其他数值范围例如大于75且小于1时,第I个统计周期的上行带宽与第I个统计周期的下行带宽相差比较小,上行带宽也不需要大幅调整,即不需要大幅调整第I1个统计周期内上行链路的POST帧的发送间隔。0075当然本发明实施例并不仅限于此,本发明实施例对将0与第一预设数值限定的区间划分。

35、为N个子区间,以及将0与第二预定数值限定的区间划分为M个子区间的方式,以及各子区间对应步长的大小不作限定。下面以第一预定数值为1,第二预定数值为1,M和N均为3,步长分别为3、2和1为例进一步说明。0076本发明实施例的另一具体实现方式中,可以当第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值大于0,且小于或等于1/3时,以步长为3,增大第I1个统计周期内上行链路的POST帧的发送间隔;0077当第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值大于1/3,且小于或等于2/3时,以步长为2,增大第I1个统计周期内上行链路的POST帧的发送间隔;0078当第I个统计周期的下行带宽与。

36、第I个统计周期的上行带宽的比值大于2/3,且小于或等于1时,以步长为1,增大第I1个统计周期内上行链路的POST帧的发送间隔。说明书CN102347902ACN102347921A7/12页100079当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值大于0,且小于或等于1/3时,以步长为3,缩小第I1个统计周期内上行链路的POST帧的发送间隔;0080当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值大于1/3,且小于或等于2/3时,以步长为2,缩小第I1个统计周期内上行链路的POST帧的发送间隔;0081当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值大于2/3,。

37、且小于或等于1时,以步长为1,缩小第I1个统计周期内上行链路的POST帧的发送间隔。0082当然,本发明实施例中,上下行带宽的平衡是一种动态的过程,受到CPU处理能力与PCIE接口特性的影响,上下行带宽不会在达到平衡后稳定不变,会出现时而上行带宽较大,时而下行链路带宽较大,但是在一个比较长的统计时间例如1秒或者10秒内,上下行带宽是趋于平衡的。0083而且本发明实施例在CPU的处理能力不足,引起DMA的BD库中任何一个方向可用BD不够时,都可以保证PCIE链路上另外一个方向的带宽不受影响,使得PCIE链路的使用率达到最大。0084本发明实施例提供的上述方法可以实现在可编程逻辑器件,例如FPGA。

38、或复杂可编程逻辑器件COMPLEXPROGRAMMABLELOGICDEVICE;以下简称CPLD芯片内部,占用逻辑资源少,在不占用CPU资源的情况下,可以比较稳定的控制PCIE接口上的上下行带宽,进而可以实现平衡上下行链路的速率,并且保证PCIE链路的带宽使用率达到最大。本发明实施例对其他可能造成链路带宽不平衡的接口标准也是适用的,当同一总线下连接两个不同的设备,本发明实施例提供的方法对其性能的平衡也是适用的。0085本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施。

39、例的步骤;而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。0086图4为本发明发送间隔调整装置一个实施例的结构示意图,本实施例中的发送间隔调整装置可以作为网络设备,或网络设备的一部分实现本发明图1所示实施例的流程。如图4所示,该发送间隔调整装置可以包括统计模块41、计算模块42和调整模块43。0087其中,统计模块41,用于统计第I个统计周期内从PCIE接口接收到的第一数据量和第I个统计周期内发送到PCIE接口的第二数据量;0088计算模块42,用于根据第一数据量与第I个统计周期的长度计算第I个统计周期的下行带宽,并根据第二数据量与第I个统计周期的长度计算第I个统。

40、计周期的上行带宽;具体地,计算模块42可以计算第一数据量与第I个统计周期的长度的第一比值,以上述第一比值作为第I个统计周期的下行带宽;以及计算第二数据量与第I个统计周期的长度的第二比值,以上述第二比值作为第I个统计周期的上行带宽。0089调整模块43,用于根据第I个统计周期的上行带宽与第I个统计周期的下行带宽的比例关系,调整第I1个统计周期内POST帧的发送间隔。0090本实施例中,上述发送间隔调整装置可以通过可编程逻辑器件,例如FPGA或CPLD实现;本实施例中的网络设备可以为交换机或路由器等设备,本实施例对网络设备的具体形式不作限定。0091上述发送间隔调整装置可以实现调整第I1个统计周期。

41、的上行带宽,进而可以实说明书CN102347902ACN102347921A8/12页11现调整第I2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。0092图5为本发明发送间隔调整装置另一个实施例的结构示意图,与图4所示的发送间隔调整装置相比,不同之处在于,本实施例中,调整模块43可以包括确定子模块431、增大子模块432和缩小子模块433;0093其中,确定子模块431,用于确定第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值,以及确定第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值;0094增大子模块432,用于当第I个。

42、统计周期的下行带宽与第I个统计周期的上行带宽的比值小于第一预定数值时,增大第I1个统计周期内POST帧的发送间隔;0095缩小子模块433,用于当第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值小于第二预定数值时,缩小第I1个统计周期内POST帧的发送间隔。0096进一步地,调整模块43还可以包括第一划分子模块434;0097第一划分子模块434,用于将0与第一预定数值限定的区间划分为N个子区间,N为正整数,N2;则,增大子模块432,具体用于当第I个统计周期的下行带宽与第I个统计周期的上行带宽的第一比值落入上述N个子区间中的任一子区间时,采用第一比值所在子区间对应的步长,增大第I1个。

43、统计周期内POST帧的发送间隔。0098进一步地,调整模块43还可以包括第二划分子模块435;0099第二划分子模块435,用于将0与第二预定数值限定的区间划分为M个子区间,M为正整数,M2;则,缩小子模块433,具体用于当第I个统计周期的上行带宽与第I个统计周期的下行带宽的第二比值落入上述M个子区间中的任一子区间时,采用第二比值所在子区间对应的步长,缩小第I1个统计周期内POST帧的发送间隔。0100上述发送间隔调整装置在不占用CPU资源的情况下,可以比较稳定的控制PCIE接口上的上下行带宽,进而可以实现平衡上下行链路的速率,并且保证PCIE链路的带宽使用率达到最大。0101图6为本发明发送。

44、间隔调整装置再一个实施例的结构示意图,如图6所示,该发送间隔调整装置可以包括统计定时单元61、上行带宽计算单元62、下行带宽计算单元63、请求仲裁单元64、DMA65、TLP帧组装发送单元66、TLP帧接收分类单元67、数据缓存68、POST帧发送间隔计算单元69和PCIE内核PCIECORE610。0102其中,统计定时单元61,用于在DMA65启动后,利用计数器产生5微秒间隔的脉冲,提供给上行带宽计算单元62和下行带宽计算单元63作为统计周期。0103上行带宽计算单元62,用于在第I个统计周期内,对请求仲裁单元64发送到PCIE接口的第二数据量进行统计,并计算第二数据量与第I个统计周期的长。

45、度的第二比值,以第二比值作为第I个统计周期的上行带宽。每个统计周期结束后,上行带宽计算单元62统计的数值清0。0104下行带宽计算单元63,用于在第I个统计周期内,对从PCIE接口接收到的第一数据量,并计算第一数据量与统计周期的长度的第一比值,以上述第一比值作为第I个统计周期的下行带宽。每个统计周期结束后,下行带宽计算单元63统计的数值清0。0105本实施例中的上行带宽计算单元62和下行带宽计算单元63可以实现本发明图4说明书CN102347902ACN102347921A9/12页12和图5所示实施例中统计模块41和计算模块42的功能。0106请求仲裁单元64,用于根据上行带宽计算单元62计。

46、算的第I个统计周期的上行带宽与下行带宽计算单元63计算的第I个统计周期的下行带宽的比例关系,以及POST帧发送间隔计算单元69计算的第I1个统计周期内POST帧的发送间隔,均衡PCIE接口上下行链路的带宽。0107DMA65,用于根据CPU的相关设定发起各种数据传输的相关请求,例如读BD请求、读数据请求、更新BD请求和/或写数据请求。其中读数据请求与读BD请求属于NONPOST请求;更新BD请求与写数据请求属于POST请求。并且在下游接多个端口的时候,根据下游的数据缓存水线进行多通道仲裁,根据下游端口的数据传输情况将上游总线上获取的带宽动态分配给下游接口。0108TLP帧组装发送单元66,用于。

47、根据请求仲裁单元64发起的请求种类,按PCIE协议规定的格式组装TLP帧,而后发送给PCIE内核610。0109TLP帧接收分类单元67,用于将从PCIE内核610取得的TLP帧按照不同种类分开,提供给DMA65。0110数据缓存68,用于存储DMA65与下游通信接口收到的数据,实现数据的存储转发。0111POST帧发送间隔计算单元69,用于根据上行带宽计算单元62计算的第I个统计周期的上行带宽与下行带宽计算单元63计算的第I个统计周期的下行带宽,计算第I1个统计周期内POST帧的发送间隔,然后将该发送间隔发送给请求仲裁单元64。本实施例中,请求仲裁单元64和POST帧发送间隔计算单元69可以。

48、实现本发明图4和图5所示实施例中调整模块43的功能。0112PCIE内核610,用于接收TLP帧组装发送单元66发送的TLP帧,以及向TLP帧接收分类单元67发送TLP帧。0113本实施例中的POST帧发送间隔计算单元69可以通过图7所示的电路实现,图7为本发明POST帧发送间隔计算单元一个实施例的示意图。0114如图7所示,当第I个统计周期的下行带宽小于或等于第I个统计周期的上行带宽的25,即第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值小于或等于25时,以步长为4,增大第I1个统计周期内上行链路的POST帧的发送间隔;0115当第I个统计周期的下行带宽大于第I个统计周期的上行带宽。

49、的25,且小于或等于第I个统计周期的上行带宽的50,即第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值大于25,且小于或等于50时,以步长为2,增大第I1个统计周期内上行链路的POST帧的发送间隔;0116当第I个统计周期的下行带宽大于第I个统计周期的上行带宽的50,且小于或等于第I个统计周期的上行带宽的75,即第I个统计周期的下行带宽与第I个统计周期的上行带宽的比值大于50,小于或等于75时,以步长为1,增大第I1个统计周期内上行链路的POST帧的发送间隔。0117总的来说,当第I个统计周期的下行带宽小于第I个统计周期的上行带宽时,要增大第I1个统计周期内上行链路的POST帧的发送间隔,以缩小上行带宽,使得下行链路的NONPOST能够尽快提交给CPU,从而增加下行链路带宽。说明书CN102347902ACN102347921A10/12页130118当第I个统计周期的上行带宽小于或等于第I个统计周期的下行带宽的25,即第I个统计周期的上行带宽与第I个统计周期的下行带宽的比值小于或等于25时,以步长为4,缩小第I1个统计周期内上行链路的POST帧的发送间隔;0119当第I个统计周期的上行带宽大于第I个统计周期的下行带宽的25,且小于或等于第I个统计周期的下行带宽的50。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1