专利名称:发送间隔调整方法、装置和网络设备的制作方法
技术领域:
本发明实施例涉及数据传输技术领域,尤其涉及一种发送间隔调整方法、装置和网络设备。
背景技术:
快速夕卜设部件互连(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链路由X4改为X8,使得物理带宽提升一倍,从而使得系统瓶颈不再存在于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+Ι个统计周期内转发事务帧的发送间隔。本发明实施例还提供一种发送间隔调整装置,包括统计模块,用于统计第i个统计周期内从快速外设部件互连PCIE接口接收到的第一数据量和所述第i个统计周期内发送到所述PCIE接口的第二数据量;
计算模块,用于根据所述第一数据量与所述第i个统计周期的长度计算所述第i 个统计周期的下行带宽,并根据所述第二数据量与所述第i个统计周期的长度计算所述第 i个统计周期的上行带宽;调整模块,用于根据所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的比例关系,调整第i+Ι个统计周期内转发事务帧的发送间隔。本发明实施例还提供一种网络设备,包括如上所述的发送间隔调整装置。本发明实施例,首先统计第i个统计周期内从PCIE接口接收到的第一数据量和第 i个统计周期内发送到上述PCIE接口的第二数据量,然后根据上述第一数据量与第i个统计周期的长度计算第i个统计周期的下行带宽,并根据第二数据量与第i个统计周期的长度计算第i个统计周期的上行带宽;最后根据所述第i个统计周期的上行带宽与第i个统计周期的下行带宽的比例关系,调 整第i+Ι个统计周期内转发事务帧的发送间隔;从而可以实现调整第i+Ι个统计周期的上行带宽,进而可以实现调整第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+Ι个统计周期内Post帧的发送间隔。
具体地,可以确定第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值;当第i个统计周期的下行带宽与第i个统计周期的上行带宽的第一比值小于第一预定数值时,增大第i+Ι个统计周期内Post帧的发送间隔;当第i个统计周期的上行带宽与第 i个统计周期的下行带宽的第二比值小于第二预定数值时,缩小第i+Ι个统计周期内Post 帧的发送间隔。更具体地,可以将0与第一预定数值限定的区间划分为N个子区间,N为正整数, N > 2 ;当第i个统计周期的下行带宽与第i个统计周期的上行带宽的第一比值落入上述 N个子区间中的任一子区间时,采用第一比值所在子区间对应的步长,增大第i+Ι个统计周期内Post帧的发送间隔。可以将0与第二预定数值限定的区间划分为M个子区间,M为正整数,M彡2 ;当第 i个统计周期的上行带宽与第i个统计周期的下行带宽的第二比值落入上述M个子区间中的任一子区间时,采用第二比值所在子区间对应的步长,缩小第i+Ι个统计周期内Post帧的发送间隔。本实施例中,第一预定数值大于0,且小于或等于1 ;第二预定数值大于0,且小于或等于1。当然,本实施例并不仅限于此,第一预定数值和第二预定数值的取值范围也可以为其他范围,本实施例对此不作限定;例如当上述第一比值或第二比值为大于1的数值时,也可以根据系统性能要求或实际需要对第i+Ι个统计周期内Post帧的发送间隔进行调
iF. ο另外,当第i个统计周期的上行带宽与第i个统计周期的下行带宽的大小相同时, 可以不对第i+Ι个统计周期内Post帧的发送间隔进行调整。上述实施例可以实现调整第i+Ι个统计周期的上行带宽,进而可以实现调整第 i+2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE 链路的带宽利用率。本发明图1所示实施例中,上述统计周期的生成时序可以如图2所示,图2为本发明统计周期生成时序一个实施例的示意图,图2中的5微秒的统计周期是个初始值,可以根据不同应用场景的实际情况由CPU进行设定。当本发明实施例提供的方法应用于不同系统中时,随着不同系统的物理带宽的变化,统计周期也需要相应调整,以使得在一个相对较长的统计周期内,带宽的波动更加平滑。本发明实施例以链路的最大带宽为7Gbps为例来计算,当同时发起的最大读数据量为4KB时,可以计算得到统计周期为5微秒。总的来说,影响PCIE接口下行带宽的因素主要有以下两点(I)DMA发起的读请求的数据量越大,对端设备通过PCIE接口发给FPGA的数据量就越多,因此在PCIE接口上收到的数据量就越大。
(2)PCIE接口的上行带宽太大将会降低下行带宽。根据PCIE接口特性,写请求能够穿越读请求,当写请求的数据量太大时,PCIE接口将会阻塞读请求,优先保证写请求,从而导致上下行带宽不均衡。因此根据上下行链路的带宽状态,限制上行带宽是保证上下行带宽均衡的重要手段。本发明实施例根据第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值, 调整第i+Ι个统计周期内Post帧的发送间隔,从而可以达到调整第i+Ι个统计周期的上行带宽,进而影响第i+2个统计周期的下行带宽,使得PCIE链路的上下行带宽动态平衡的目的。下面以第一预定数值为75% ;第二预定数值为75% ;M和N均为3,各子区间对应的步长分别为4、2和1为例进行说明。本发明实施例的一种具体实现方式中,当第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于0,且小于或等于25%时,以步长为4,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于25%,且小于或等于50%时,以步长为2,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于50%,小于或等于75%时,以步长为1,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔。总的来说,当第i个统计周期的下行带宽小于第i个统计周期的上行带宽时,要增大第i+Ι个统计周期内上行链路的Post帧的发送间隔,以缩小上行带宽,使得下行链路的 Non-Post能够尽快提交给CPU,从而增加下行链路带宽。当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于0,且小于或等于25%时,以步长为4,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于25%,且小于或等于50%时,以步长为2,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于50%,且小于或等于75%时,以步长为1,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;总的来说,当第i个统计周期的上行带宽小于第i个统计周期的下行带宽时,要缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔,以增大上行带宽,这样下行链路的 Non-Post帧将被Post帧穿越,从而缩小下行链路带宽。举例来说,假设第i个统计周期内上行链路的Post帧的发送间隔为6,接口带宽为 200MHz,位宽为64位。因此第i个统计周期(5微秒=5000纳秒,即1000个时钟周期)内可以传输的64字节长度的数据包的个数为有效数据传输周期64字节X8/64 = 8个时钟周期,第i个统计周期内上行链路的Post帧的发送间隔为6个时钟周期,因此发送一个64字节的数据包需要14个时钟周期。这样,5微秒内可以传输的数据包的个数=1000/14 = 71,因此5微秒内传输的数据量为71X64字节=4544字节。假设第i个统计周期的下行带宽小于或等于第i个统计周期的上行带宽的25%, 即第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值小于或等于25%,则以步长为4,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔,这样,第i+Ι个统计周期内,传输一个64字节长的数据包需要8+6+4 = 18个时钟周期,因此5微秒内可以传输的数据包的个数为1000/18 = 55,也就是3520字节的数据量。因此增大上行链路的Post帧的发送间隔可以明显降低上行链路的带宽,同理可知缩小上行链路的Post帧的发送间隔可以增大上行链路的带宽。而调节当前统 计周期的上行带宽将影响PCIE接口上提交给下行链路的读请求的数据量,而当前统计周期内发出的读请求,只能影响下一个统计周期的下行带宽,也就是通过调整第i+Ι个统计周期的上行带宽来影响第i+2个统计周期的下行带宽,以此类推。通俗的说,本发明实施例就是根据上下行链路对PCIE接口带宽的互相争用来达到动态平衡,如图3所示,图3为本发明上下行带宽变化情况一个实施例的示意图,图3中, 实线表示上行带宽变化情况,虚线表示下行带宽变化情况,由图3可以看出,当上行带宽增加时,下行带宽将会逐渐减少;当上行带宽减少时,下行带宽将会逐渐增加。以64字节(Byte)的短包为例,DMA以200M输出的原始位宽为64位的数据,DMA 的最小帧间间隔为6个时钟周期,即DMA的上行带宽为200MX64bitX8/14 = 7. 3Gbps,如果第i个统计周期的下行带宽为2. OGbps,则第i个统计周期下行带宽与上行带宽的比值约为27. 40%,该比值大于25%,且小于50%,因此需要以步长为2,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔,这样第i+Ι个统计周期的上行带宽变为200MX64bitX8/ (14+2) = 6. 4Gbps,在第i+1个统计周期继续进行统计,发现下行链路带宽提升到2. 5Gbps, 这样,第i+1个统计周期下行带宽与上行带宽的比值约为39%,该比值仍旧大于25%,且小于50%,因此需要以步长为2,增大第i+2个统计周期内上行链路的Post帧的发送间隔,这样第i+2个统计周期的上行带宽变为200MX64bitX8/(14+2+2) =5. 6Gbps,此时下行链路带宽逐渐上升到3. OGbps。重复以上步骤,逐渐达到上下行带宽的动态平衡。本发明实施例中,当第i个统计周期的上行带宽等于第i个统计周期的下行带宽时,表示上行带宽与下行带宽暂时达到平衡,不需调整第i+Ι个统计周期内上行链路的 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+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于1/3,且小于或等于2/3时,以步长为2,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于2/3,且小于或等于1时,以步长为1,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔。
当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于0,且小于或等于1/3时,以步长为3,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于1/3,且小于或等于2/3时,以步长为2,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于2/3,且小于或等于1时,以步长为1,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔。当然,本发明实施例中,上下行带宽的平衡是一种动态的过程,受到CPU处理能力与PCIE接口特性的影响,上下行带宽不会在达到平衡后稳定不变,会出现时而上行带宽较大,时而下行链路带宽较大,但是在一个比较长的统计时间(例如1秒或者10秒)内,上下行带宽是趋于平衡的。而且本发明实施例在CPU的处理能力不足,引起DMA的BD库中任何一个方向可用 BD不够时,都可以保证PCIE链路上另外一个方向的带宽不受影响,使得PCIE链路的使用率达到最大。本发明实施例提供的上述方法可以实现在可编程逻辑器件,例如FPGA或复杂可编程逻辑器件(Complex Programmable Logic Device ;以下简称CPLD)芯片内部,占用逻辑资源少,在不占用CPU资源的情况下,可以比较稳定的控制PCIE接口上的上下行带宽,进而可以实现平衡上下行链路的速率,并且保证PCIE链路的带宽使用率达到最大。本发明实施例对其他可能造成链路带宽不平衡的接口标准也是适用的,当同一总线下连接两个不同的设备,本发明实施例提供的方法对其性能的平衡也是适用的。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、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+Ι个统计周期内Post帧的发送间隔。本实施例中,上述发送间隔调整装置可以通过可编程逻辑器件,例如FPGA或 CPLD实现;本实施例中的网络设备可以为交换机或路由器等设备,本实施例对网络设备的具体形式不作限定。上述发送间隔调整装置可以实现调整第i+Ι个统计周期的上行带宽,进而可以实现调整第i+2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。图5为本发明发送间隔调整装置另一个实施例的结构示意图,与图4所示的发送间隔调整装置相比,不同之处在于,本实施例中,调整模块43可以包括确定子模块431、增大子模块432和缩小子模块433 ;其中,确定子模块431,用于确定第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值,以及确定第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值;增大子模块432,用于当第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值小于第一预定数值时,增大第i+Ι个统计周期内Post帧的发送间隔;缩小子模块433,用于当第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值小于第二预定数值时,缩小第i+Ι个统计周期内Post帧的发送间隔。进一步地,调整模块43还可以包括第一划分子模块434 ;第一划分子模块434,用于将0与第一预定数值限定的区间划分为N个子区间,N 为正整数,N ^ 2 ;则,增大子模块432,具体用于当第i个统计周期的下行带宽与第i个统计周期的上行带宽的第一比值落入上述N个子区间中的任一子区间时,采用第一比值所在子区间对应的步长,增大第i+Ι个统计周期内Post帧的发送间隔。进一步地,调整模块43还可以包括第二划分子模块435 ;第二划分子模块435,用于将0与第二预定数值限定的区间划分为M个子区间,M 为正整数,M ^ 2 ;则,缩小子模块433,具体用于当第i个统计周期的上行带宽与第i个统计周期的下行带宽的第二比值落入上述M个子区间中的任一子区间时,采用第二比值所在子区间对应的步长,缩小第i+Ι个统计周期内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+Ι个统计周期内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+Ι个统计周期内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+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的下行带宽大于第i个统计周期的上行带宽的25%,且小于或等于第i个统计周期的上行带宽的50%,即第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于25%,且小于或等于50%时,以步长为2,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的下行带宽大于第i个统计周期的上行带宽的50%,且小于或等于第i个统计周期的上行带宽的75%,即第i个统计周期的下行带宽与第i个统计周期的上行带宽的比值大于50%,小于或等于75%时,以步长为1,增大第i+Ι个统计周期内上行链路的Post帧的发送间隔。总的来说,当第i个统计周期的下行带宽小于第i个统计周期的上行带宽时,要增大第i+Ι个统计周期内上行链路的Post帧的发送间隔,以缩小上行带宽,使得下行链路的 Non-Post能够尽快提交给CPU,从而增加下行链路带宽。
当第i个统计周期的上行带宽小于或等于第i个统计周期的下行带宽的25%,即第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值小于或等于25%时,以步长为4,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的上行带宽大于第i个统计周期的下行带宽的25%,且小于或等于第i个统计周期的下行带宽的50%,即第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于25%,且小于或等于50%时,以步长为2,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;当第i个统计周期的上行带宽大于第i个统计周期的下行带宽的50%,且小于或等于第i个统计周期的下行带宽的75%,即第i个统计周期的上行带宽与第i个统计周期的下行带宽的比值大于50%,且小于或等于75%时,以步长为1,缩小第i+Ι个统计周期内上行链路的Post帧的发送间隔;总的来说,当第i个统计周期的上行带宽小于第i个统计周期的下行带宽时,要缩小第i+Ι个统计周期内上行链路的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)在P0ST_REQ状态下,如果到达Post帧发送间隔计算单元69计算的发送间隔,则开始进行判决,当检查到s_dlbd_wrreq为高时跳转至DLBD_WR状态,响应DMA 65发起的更新下行BD请求。(11)在P0ST_REQ状态下,如果到达Post帧发送间隔计算单元69计算的发送间隔,则开始进行判决,当检查到s_dlbd_wrreq为低并且s_ulbd_wrreq为高时,跳转至ULBD_ WR状态,响应DMA 65发起的更新下行BD请求。(12)在P0ST_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 所示的发送间隔调整装置实现,该网络设备可以为交换机或路由器等设备,本实施例对网络设备的具体形式不作限定。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
权利要求
1.一种发送间隔调整方法,其特征在于,包括统计第i个统计周期内从快速外设部件互连PCIE接口接收到的第一数据量和所述第 i个统计周期内发送到所述PCIE接口的第二数据量;根据所述第一数据量与所述第i个统计周期的长度计算所述第i个统计周期的下行带宽,并根据所述第二数据量与所述第i个统计周期的长度计算所述第i个统计周期的上行带宽;根据所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的比例关系, 调整第i+1个统计周期内转发事务帧的发送间隔;i为整数,且i彡O。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的比例关系,调整第i+Ι个统计周期内转发事务帧的发送间隔包括确定所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的比值,以及确定所述第i个统计周期的下行带宽与所述第i个统计周期的上行带宽的比值;当所述第i个统计周期的下行带宽与所述第i个统计周期的上行带宽的第一比值小于第一预定数值时,增大所述第i+Ι个统计周期内转发事务帧的发送间隔;当所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的第二比值小于第二预定数值时,缩小所述第i+Ι个统计周期内转发事务帧的发送间隔。
3.根据权利要求2所述的方法,其特征在于,所述当所述第i个统计周期的下行带宽与所述第i个统计周期的上行带宽的第一比值小于第一预定数值时,增大所述第i+Ι个统计周期内转发事务帧的发送间隔包括将O与所述第一预定数值限定的区间划分为N个子区间,N为正整数,N彡2 ;当所述第i个统计周期的下行带宽与所述第i个统计周期的上行带宽的第一比值落入所述N个子区间中的任一子区间时,采用所述第一比值所在子区间对应的步长,增大所述第i+Ι个统计周期内转发事务帧的发送间隔。
4.根据权利要求2所述的方法,其特征在于,所述当所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的第二比值小于第二预定数值时,缩小所述第i+Ι个统计周期内转发事务帧的发送间隔包括将O与所述第二预定数值限定的区间划分为M个子区间,M为正整数,M彡2 ;当所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的第二比值落入所述M个子区间中的任一子区间时,采用所述第二比值所在子区间对应的步长,缩小所述第i+Ι个统计周期内转发事务帧的发送间隔。
5.根据权利要求2、3或4所述的方法,其特征在于,所述第一预定数值大于0,且小于或等于1 ;所述第二预定数值大于0,且小于或等于1。
6.一种发送间隔调整装置,其特征在于,包括统计模块,用于统计第i个统计周期内从快速外设部件互连PCIE接口接收到的第一数据量和所述第i个统计周期内发送到所述PCIE接口的第二数据量;计算模块,用于根据所述第一数据量与所述第i个统计周期的长度计算所述第i个统计周期的下行带宽,并根据所述第二数据量与所述第i个统计周期的长度计算所述第i个统计周期的上行带宽;调整模块,用于根据所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的比例关系,调整第i+1个统计周期内转发事务帧的发送间隔。
7.根据权利要求6所述的装置,其特征在于,所述调整模块包括确定子模块,用于确定所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的比值;增大子模块,用于当所述第i个统计周期的下行带宽与所述第i个统计周期的上行带宽的第一比值小于第一预定数值时,增大所述第i+Ι个统计周期内转发事务帧的发送间隔;缩小子模块,用于当所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的第二比值小于第二预定数值时,缩小所述第i+ι个统计周期内转发事务帧的发送间隔。
8.根据权利要求7所述的装置,其特征在于,所述调整模块还包括第一划分子模块; 所述第一划分子模块,用于将O与所述第一预定数值限定的区间划分为N个子区间,N为正整数,N彡2;所述增大子模块,具体用于当所述第i个统计周期的下行带宽与所述第i个统计周期的上行带宽的第一比值落入所述N个子区间中的任一子区间时,采用所述第一比值所在子区间对应的步长,增大所述第i+Ι个统计周期内转发事务帧的发送间隔。
9.根据权利要求7所述的装置,其特征在于,还包括第二划分子模块;所述第二划分子模块,用于将O与所述第二预定数值限定的区间划分为M个子区间,M 为正整数,M彡2;所述缩小子模块,具体用于当所述第i个统计周期的上行带宽与所述第i个统计周期的下行带宽的第二比值落入所述M个子区间中的任一子区间时,采用所述第二比值所在子区间对应的步长,缩小所述第i+Ι个统计周期内转发事务帧的发送间隔。
10.一种网络设备,其特征在于,包括如权利要求6-9任意一项所述的发送间隔调整装置。
全文摘要
本发明实施例提供一种发送间隔调整方法、装置和网络设备,该发送间隔调整方法包括统计第i个统计周期内从PCIE接口接收到的第一数据量和发送到PCIE接口的第二数据量;根据第一数据量与第i个统计周期的长度计算第i个统计周期的下行带宽,并根据第二数据量与第i个统计周期的长度计算第i个统计周期的上行带宽;根据第i个统计周期的上行带宽与下行带宽的比例关系,调整第i+1个统计周期内Post帧的发送间隔。本发明实施例可以实现调整第i+1个统计周期的上行带宽,进而可以实现调整第i+2个统计周期的下行带宽,使得PCIE链路的上下行带宽达到动态平衡,并可以提高PCIE链路的带宽利用率。
文档编号H04L12/56GK102347902SQ20111028786
公开日2012年2月8日 申请日期2011年9月26日 优先权日2011年9月26日
发明者陈鹏 申请人:北京星网锐捷网络技术有限公司