Spi4.2总线桥接实现方法及spi4.2总线桥接器件的制作方法

文档序号:7695198阅读:245来源:国知局
专利名称:Spi4.2总线桥接实现方法及spi4.2总线桥接器件的制作方法
技术领域
本发明涉及系统包接口 (SPI, System Packet Interface)总线技术,尤 其涉及一种SPI4.2总线桥接实现方法及SPI4.2总线桥接器件。
背景技术
SPI4.2总线作为一种可支持多个逻辑通道的数据传输标准,在高性能处 理器或路由器中得到广泛应用。图1所示为一般中高端路由器线路板的硬件 框图,包括物理(PHY)层器件、媒质接入控制(MAC)层器件、网络 处理器(NPU)或中央处理器(CPU)、流量管理(TM)和交换网适配器 件以及交换网(Switch Fabric),所述MAC层器件还包括高级数据链路控 制HDLC等器件,其中,MAC层器件与NPU或CPU、以及NPU或CPU 与TM和交换网适配器件之间均是通过SPI4.2总线互连,NPU或CPU至少 需要提供两条完全独立的SPI4.2总线分别连接到MAC器件及TM和交换网 适配器件上(图1中将每条总线的发送方向和接收方向分别独立图示)。
参见图2所示,在实际应用中,为业务需要,通常希望在一个线路板的 NPU或CPU与MAC层器件相连的接口上提供两条独立的SPI4.2总线(图 2中以SPI4.2A和SPI4.2B区分),以便实现单个线路板槽位可以支持两个 不同的MAC层器件。但是,由于额外增加一条独立的SPI4.2总线需要占用 很多引脚,因此,对于已经商用的器件来说,再在NPU或CPU上增加一条 SPI4.2总线基本不可行。为了解决该问题,图3示出了一种基于SPI4.2总线 桥接器件的中高端路由器线路板硬件实现方案,其中,SPI4.2总线桥接器件 可以将NPU或CPU上的单一 SPI4.2总线扩展为两条完全独立的SPI4.2A和 SPI4.2B总线。本文中为便于描述,将SPI4.2总线桥接器件与NPU或CPU相连的SPI4.2总线称作主路SPI4.2总线,将SPI4.2总线桥接器件与MAC 层器件相连的两条总线SPI4.2A和SPI4.2B称作支路SPI4.2总线;并且,将 物理层器件到交换网的方向称作上行方向,将交换网到物理层器件的方向称 作下行方向。
目前,SPI4.2总线桥接器件主要通过一个2:1的复用解复用器件实现, 该器件不具备数据緩存能力,在上行方向,8 14.2总线桥接器件只是简单地 通过轮询的方式将两个支路SPI4.2总线发来的数据依次调度到主路SPI4.2 总线上进行传输。按照上述轮询的方式,只有在两个支路上行数据流量较少 的情况下,才可以保证数据报文的及时发送,不会造成网络拥塞。但是,数 据网络中的流量通常都具有突发性特点,如果两个支路同时出现较大突发流 量,而SPI4.2总线桥接器件又不具备数据緩存能力,那么就会造成主路 SPI4.2总线拥塞,并最终导致大量的数据报文因来不及发送而丟失或者是重 传。

发明内容
有鉴于此,本发明的目的在于提供一种SPI4.2总线桥接实现方法及 SPI4.2总线桥接器件,在网络存在突发流量时,减少报文丟失或重传。 为达到上述目的,本发明提供的技术方案如下
一种SPI4.2总线桥接实现方法,在SPI4.2总线桥接器件上外接存储器, 该方法包4舌
在支路SPI4.2总线到主路SPI4.2总线的上行方向,当主路SPI4.2总线 拥塞时,SPI4.2总线桥接器件先将支路SPI4.2总线发来的数据按照链表的方 式缓存在外接存储器中,然后再将存储器中缓存的数据调度到主路SPI4.2 总线上发送出去;当主路SPI4.2总线不拥塞时,SPI4.2总线桥接器件直接将 来自支路SPI4.2总线的数据发送到主路SPI4.2总线上;
在主路SPI4.2总线到支路SPI4.2总线的下行方向,SPI4.2总线桥接器 件直接将来自主路SPI4.2总线的数据透传到支路SP14.2总线上发送出去。所述緩存之前进一步包括SPI4.2总线桥接器件接收支路SPI4.2总线 发来的数据,并根据预先设定的报文丢弃算法判断是緩存还是丢弃该数据, 如果是緩存,则将该数据緩存到外接存储器中;否则,直接丢弃。
所述报文丟弃算法为加权随机早期检测WRED算法,所述SPI4.2总线 桥接器件接收到支路SPI4.2总线发来的数据后,根据该支路对应的接收方 向的报文緩存队列长度及预先设定的最低门限值和最高门限值判断是否丢 弃数据。
所述外接存储器的个数与支路SPI4.2总线的条数一致,每条支路SPI4.2 总线分别对应一个外接存储器;各外接存储器被划分成多个緩存块,且针对 各支路SPI4.2总线,分别设置用于记录其对应存储器中空闲緩存块地址信 息的空闲緩存链表和用于记录其对应存储器中已被占用的緩存块地址信息 的数据緩存链表;
所述緩存过程包括SPI4.2总线桥接器件收到支路SPI4.2总线发来的 数据后,从该支路SPI4.2总线对应的空闲緩存链表中取出空闲緩存块地址 信息,将收到的数据緩存到对应存储器中与该空闲緩存块地址信息对应的緩 存块中,同时将该緩存块地址信息从对应空闲緩存链表中删除,并将该緩存 块地址信息添加到对应数据缓存链表中。
所述数据緩存链表的个数与其对应支路SPI4.2总线配置的逻辑通道个 数相同,每个逻辑通道分别对应一个独立的数据緩存链表;或者,支路SPI4.2 总线的所有逻辑通道对应同一个数据緩存链表;或者,支路SPI4.2总线的 部分逻辑通道共享同一个数据緩存链表,部分逻辑通道分别对应独立的数据 緩存链表。
所述数据緩存链表的个数与其对应支路SPI4.2总线逻辑通道的优先级 个数相同,不同优先级的逻辑通道分别对应不同的数据緩存链表,相同优先 级的逻辑通道共享同 一数据緩存链表。
所述调度过程包括针对所有存储器中各数据緩存链表所指向的緩冲 区,SPI4.2总线桥接器件按照加权轮询WRR和严格优先级SP配合的方式从各緩冲区中读取数据,然后将读出的数据发送到主3各SPI4.2总线上;并 且,在数据从緩冲区中读出之后,SPI4.2总线桥接器件将读出的数据所存储 的緩存块地址信息添加到空闲緩存链表中,并将该緩存块地址信息从数据lt 存链表中删除。
所迷SPI4.2总线桥接器件按照固定的字节长度对存储器进行数据写入 或读出操作。
所述存储器为同步随机存储器SRAM或同步动态随机存储器SDRAM。
一种SPI4.2总线桥接器件,包括主路SPI4.2总线发送模块、主路SPI4.2 总线接收模块、上行调度单元以及分别与各支路SPI4.2总线对应的发送模 块、接收模块、报文预处理单元和内存管理单元,其中,
支路SPI4.2总线接收模块,用于接收来自本支路SPI4.2总线的数据, 并将接收到的数据发送给与本支路SPI4.2总线对应的报文预处理单元;
报文预处理单元,用于将支路SPI4.2总线接收模块发来的数据发送给 与该支^各SPI4.2总线对应的内存管理单元;
内存管理单元,用于在主路SPI4.2总线拥塞时,将来自报文预处理单 元的数据按照链表的方式写入到SPI4.2总线桥接器件外接的存储器中,并 根据上行调度单元的指示从外接存储器中读取緩存的数据,将读出的数据发 送给上行调度单元;并且,进一步用于在主路SPI4.2总线不拥塞时,直接 将来自报文预处理单元的数据发送给上行调度单元;
上行调度单元,用于指示各内存管理单元从外接存储器中读取数据,并 将内存管理单元发来的数据通过主路SPI4.2总线发送模块发送出去;
主路SPI4.2总线接收模块,用于接收来自主路SPI4.2总线的数据,并 将收到的数据透传到支路SPI4.2总线发送模块上发送出去。
所述报文预处理单元接收到支路SPI4.2总线接收模块发来的数据后, 根据预先设定的报文丢弃算法判断是緩存还是丢弃该数据,如果是緩存,则 将该数据发送给与该支路SPI4.2总线对应的内存管理单元;否则,直接丢 弃。
9所述报文丢弃算法为加权随机早期检测WRED算法,所述报文预处理 单元接收到支路SPI4.2总线接收模块发来的数据后,根据该支路对应的接 收方向的报文緩存队列长度及预先设定的最低门限值和最高门限值判断是 否丢弃数据。
所述外接存储器的个数与支路SPI4.2总线的条数一致,每条支路SPI4.2 总线分别对应一个外接存储器,且每条支路SPI4.2总线分别对应一个 SRAM;各存储器被划分成多个緩存块,各SRAM中设置用于记录其对应存 储器中空闲緩存块地址信息的空闲緩存链表和用于记录其对应存储器中已 被占用的緩存块地址信息的数据緩存链表;
在主路SPI4.2总线拥塞时,所述内存管理单元接收到报文预处理单元 发来的数据后,从对应SRAM的空闲緩存链表中取出空闲緩存块地址信息, 将收到的数据緩存到对应存储器中与该空闲緩存块地址信息对应的緩存块 中,同时将该緩存块地址信息从对应空闲緩存链表中删除,并将该緩存块地 址信息添加到对应数据緩存链表中。
所述SRAM外接在SPI4.2总线桥接器件上,或者集成在SPI4.2总线桥 接器件内部。
SRAM中设置的数据緩存链表个数与其对应支路SPI4.2总线配置的逻 辑通道个数相同,每个逻辑通道分别对应一个独立的数据緩存链表;或者, 支路SPI4.2总线的所有逻辑通道对应同一个数据緩存链表;或者,支路 SPI4.2总线的部分逻辑通道共享同一个数据緩存链表,部分逻辑通道分别对 应独立的数据緩存链表。
SRAM中设置的数据缓存链表个数与其对应支路SPI4.2总线逻辑通道 的优先级个数相同,不同优先级的逻辑通道分别对应不同的数据緩存链表, 相同优先级的逻辑通道共享同一数据緩存链表。
针对所有存储器中各数据緩存链表所指向的緩冲区,所述上行调度单元 按照加权轮询WRR和严格优先级SP配合的方式指示各内存管理单元从各 数据緩存链表所指向的緩冲区中读取数据;数据从缓冲区中读出之后,所述内存管理单元进一步将读出的数据所存 储的緩存块地址信息添加到空闲缓存链表中,并将该緩存块地址信息从数据 緩存链表中删除。操作。
由此可见,采用本发明提供的方案后,当支路SPI4.2总线存在大量4豆 时突发流量而造成主路SPI4.2总线拥塞时,SPI4.2总线桥接器件可以先将支 路SPI4.2总线上传的数据通过外接的存储器进行緩存,然后再通过调度机 制将存储器中缓存的数据发送到主路SPI4.2总线上进行传输。这样,SPI4.2 总线桥接器件就可以吸收支路SP14.2总线上来的短时突发数据报文流量, 使得主路SPI4.2总线提供给上行处理器的报文流量更加平稳,不会像现有 技术那样出现由于支路SPI4.2总线突发流量过大而引起的数据报文丢失或 重传的现象。并且,基于链表的数据緩存方式,可以进一步提高緩存空间的 利用率。


图1为现有技术中一般中高端路由器线路板的硬件框图2为现有技术中提供两条SPI4.2总线的中高端路由器线路板硬件框
图3为现有技术中基于SPI4.2总线桥接器件的中高端路由器线路板硬 件框图4为本发明实施例中SPI4.2总线桥接器件的结构示意图; 图5为本发明实施例中SPI4.2总线桥接器件的工作流程图; 图6为WRED算法示意图7为本发明实施例中基于单链表的緩冲区示意图; 图8为本发明实施例中基于多链表的緩冲区示意图;图9为本发明实施例中ICS上行数据调度示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举 实施例,对本发明作进一步详细说明。
本发明的基本思想是在SPI4.2总线桥接器件上外接存储器,当主路 SPI4.2总线拥塞时,SPI4.2总线桥接器件先将支路SPI4.2总线发来的数据通 过外接的存储器进行緩存,然后再通过调度机制将存储器中緩存的数据发送 到主路SPI4.2总线上。
其中,所述存储器可以是同步随机存储器(SRAM)或同步动态随机存 储器(SDRAM)等。在緩存容量需求较小且对访问速度要求较高的情况下, 可以优选SRAM作为数据报文的緩存介质,因为SRAM可以提供高的数据 访问速度和带宽。但是,由于采用SRAM作为数据报文緩存介质的成本较 高,因此,在緩存容量需求较大而对成本又有严格控制的情况下,可以优选 SDRAM (包括DDR SDRAM、 DDR2 SDRAM、 DDR3 SDRAM等)作为数 据报文的緩存介质,因为对于相同的缓存容量,SDRAM的价格要远远低于 SRAM。
在以下实施例中,均以采用SDRAM作为数据报文緩存介质为例进行说 明。并且,为进一步提高緩存的利用率,可以通过链表的方式对SDRAM中 緩存的数据报文进行管理,而关于链表管理信息,由于信息量不大,故可以 采用高访问速度的SRAM进行维护。
图4示出了本发明中SPI4.2总线桥接器件的一种示例性结构示意图。 如图4所示,支路总线SPI4A、 SPI4B及主路总线SPI4M的发送和接收方向 分别独立图示,且SPI4A和SPI4B分别配置各自对应的报文预处理单元、 内存管理单元(MMU, Memory Management Unit)及SRAM、 SDRAM。其 中,报文预处理单元用于决定是将从支路SPI4.2总线上收到的报文存储到 SDRAM中还是丢弃;MMU用于实现SDRAM中数据的写入和读出控制;SRAM用于管理SDRAM中的緩存地址信息;上行调度单元(ICS )用于从 MMU中读取数据并将数据传递到主路总线SPI4M的发送方向上,以实现凄丈 据的上行传输。
其中,每条SPI4.2总线都可以配置多个逻辑通道,且主路SPI4.2总线 可以配置的逻辑通道数据应大于等于各支路SPI4.2总线配置的逻辑通道数 量之和。
需要说明的是,图4中为便于作图,将SRAM放在了 SPI4.2总线桥接 器件外部,但实际上在具体实现时,SRAM不仅可以外接在SPI4.2总线桥 接器件上,也可以集成在SPI4.2总线桥接器件内部。也就是说,SRAM所 处于的位置不限于图4所示。
图5示出了图4所示SPI4.2总线桥接器件的工作流程图,具体包括以 下步骤
步骤501:两个支路总线SPI4A和SPI4B的接收模块(RX )接收到报 文后,首先发送给各自对应的报文预处理单元,SPI4A—RX发送给报文预处 理单元A, SPI4B—RX发送给报文预处理单元B。
鉴于SPI4A和SPI4B对应的4妄收^莫块、预处理单元及MMU是相互对 称的关系,故在以下步骤中,均从SPI4A侧进行说明,SPI4B侧的处理原则 与SPI4A侧一致,下面不再——赘述。
步骤502:报文预处理单元A收到SPI4A—RX发送来的报文后,根据预 先设定的报文丢弃算法判断是将该报文存储到外接的SDRAM—A中还是丟 弃,如果需要存储到SDRAM—A中,执行步骤503;否则,直接丢弃。
报文预处理单元的主要作用是在主路SPI4M总线拥塞时,将支路SPI4 总线各逻辑通道发来的数据緩存到外接SDRAM中,并在数据存满SDRAM 之后开始丢弃报文。为了较好地保证支路SPI4总线各逻辑通道报文丢弃的 均衡性,可以采用加权随机早期检测(WRED , weighted random early detection)算法作为报文丟弃算法。
图6示出了 WRED算法示意图,其中横坐标为平均队列长度,纵坐标为丢包概率,如图6所示,WRED算法根据平均队列长度决定是否丟弃报文 当平均队列长度小于等于最低门限值low时不丟包;当平均队列长度位于最 低门限值low与最高门限值high之间时,在0到最大丢弃概率p之间选择 一个丟包概率随机丢包,丟包概率的选择与图中曲线的斜率有关,平均队列 长度越长,丢包概率就越大;当平均队列长度大于等于最高门限值high时, 丢弃所有进入的报文。
步骤502中,若报文预处理单元A采用WRED算法,则图6中的平均 队列长度即为报文预处理单元A接收方向的报文緩存队列的长度,报文预 处理单元A根据接收方向的报文緩存队列长度及预先设定的最低门限值和 最高门限值决定是否丢包,其中,最低门限值和最高门限值可根据实际需求 而设置。
步骤503:报文预处理单元A将收到的l艮文发送给MMU一A。 步骤504: MMU—A将收到的报文存储到SDRAM一A中。 SDRAM—A的緩冲区被划分成多个緩存块(Block),每个緩存块分别 对应一个缓存地址。在SRAM一A中,需要维护两种类型的链表空闲缓存 链表和数据缓存链表。其中,空闲緩存链表用于记录SDRAM一A中空闲的 緩存块地址信息;数据緩存链表用于记录SDRAM一A中已被使用的緩存块 地址信息。MMU一A收到报文预处理单元A发来的报文后,首先从SRAM 的空闲緩存链表中申请一个空闲的緩存块地址,然后再将收到的报文存储到 SDRAM中与该地址对应的緩存块中,同时,该緩存块地址信息被从空闲緩 存链表中摘除,且被顺序存储到数据緩存链表中。
针对支路SPI4A总线所对应的各个逻辑通道(Channel ),可以在 SRAM_A中建立一个总的数据緩存链表,用来记录支路SPI4A总线所有逻 辑通道使用的緩存块地址信息;或者,为支路SPI4A总线的每个逻辑通道分 别建立一个独立的数据緩存链表,分别记录各个逻辑通道所使用的緩存块地 址信息;又或者,部分逻辑通道共享一个数据緩存链表,部分逻辑通道分别 建立单独的数据緩存链表。在具体实现时,多个逻辑通道是否共享同一数据緩存链表可根据逻辑通道的优先级来确定,也就是说,数据缓存链表的个数
与其对应支路SPI4.2总线逻辑通道的优先级个数一致,不同优先级的逻辑
通道分别对应不同的数据緩存链表,相同优先级的逻辑通道共享同 一个数据 緩存链表。
图7示出了基于单链表的緩冲区示意图,支路SPI4A总线的所有逻辑 通道在SRAM一A中共享一个数据緩存链表。其中,SDRAM—A緩冲区中的
BlockO、 Blockl、 Block2........ Block7........ Block(n)中H照顺序依次存
放了緩存的数据报文,且所有Block通过链表的形式连接起来形成一个顺序 的数据报文緩存链(图7中的实线箭头连接线体现了 SDRAM一A中緩存数 据的依次连接关系)。存放了数据的每个Block的地址信息通过SRAM—A
中的数据緩存链表进行管理,Block0、 Blockl、 Block2........ Block7........
Block(n)对应的地址信息分别为数据1£存《连表中的Dataptr0 、 Dataptrl 、
Dataptr2........ Dataptr7........ Dataptr ( n )。另夕卜,SDRAM—A中的空闲
緩存块地址信息也以链表的方式进行管理,图7所示空闲緩存链表中的 Emptr0、 Emptrl、 Emptr2、 Emptr3、 Emptr4分别对应SDRAM—A緩冲区中 的空闲緩存块NullO、 Nulll、 Nul12、 Nul13、 Nul14 (图7中的虚线箭头连接 线体现了 SDRAM_A中空闲緩存块的连接关系)。
图8示出了基于多链表的緩冲区示意图,图8中假设支路SPI4A总线 共配置四个独立的逻辑通道a、 b、 c、 d,且每个逻辑通道在SRAM一A中分 别对应一个数据緩存链表,用于记录各逻辑通道占用的緩存块地址信息。其 中,Channel(a)数据緩存链表中的aDataptrO、 aDataptrl 、 aDataptr2、 aDataptr3 分别对应SDRAM—A緩冲区中的Channel(aO)、 Channel(al)、 Channel(a2)、 Channel(a3); Channel(b)l丈据緩存链表中的bDataptrO、 bDataptrl分别对应 SDRAM—A緩冲区中的Channel(bO)、 Channel(bl); Channel(c)数据緩存链表 中的cDataptrO、 cDataptrl分别对应SDRAM—A缓冲区中的Channel(cO)、 Channel(cl); Channel(d)数据緩存链表中的dDataptrO、 dDataptrl 、 dDataptr2 分别对应SDRAM—A緩冲区中的Channel(dO)、 Channel(dl)、 Channel(2)。空闲緩存链表中的Emptr0、 Emptrl 、 Emptr2分别对应SDRAM—A緩冲区中的 空闲緩存块NullO、 Nulll、 Nul12。图8所示的这种为每个逻辑通道分别配置 一个独立的数据緩存链表的方式,会占用相对较多的链表资源。
无论是采用图7所示的单链表方式还是图8所示的多链表方式, MMU一A的数据收发控制模块在收到来自报文预处理单元A的报文后,都是 先向链表管理单元申请空闲的緩存块地址,链表管理单元收到请求后从 SRAM—A的空闲緩存链表中取出一个最早释放的緩存块地址指针Emptr (k),并将Emptr ( k)返回给数据收发控制才莫块,Emptr ( k)指向SDRAM—A 中的空闲緩存块Null (k);数据收发控制模块收到链表管理单元返回的信 息后,将收到的数据报文存储到SDRAM—A中与Emptr (k)对应的緩存块 Null ( k)中。
数据存储到緩存块Null (k)之后,链表管理单元需要将空闲緩存链表 中的Emptr ( k)指针释放掉即从空闲緩存链表中删除;同时,在SDRAM—A 中将刚刚被占用的緩存块标记为Block(k),并且将该緩存块的地址信息顺 序存储到緩存的数据所来自逻辑通道对应的数据緩存链表的最后端,以表示 有最新的数据添加到当前逻辑通道的緩存队列中。
步骤505: MMU一A按照ICS的指示从SDRAM一A中读取数据,并将读 出的数据发送给ICS。
步骤506: ICS将收到的数据发送给SPI4M总线的发送模块SPI4M_TX, SPI4M一TX将该数据传送给上行处理器如NPU或CPU。
步骤505中,ICS可以按照加权轮询(WRR, Weighted Round Robin) 和严才各优先级(SP, Strict priority )配合的方式指示各MMU从所有独立的 数据緩存链表所指向的SDRAM中读出数据。下面结合图9所示的ICS上行 数据调度示意图对ICS的上行数据调度过程进行说明。
图9中,假设支路SPI4A总线和支路SPI4B总线分别对应两个独立的 数据緩存链表,分别标记为SPI4A数据緩存链表1、 SPI4A数据緩存链表 2、 SPI4B数据緩存链表1、 SPI4B数据緩存链表2。针对这4个数据緩存链表所对应的SDRAM缓沖区中的数据,ICS可以按照WRR和SP结合的方式 调度输出到主路SPI4M总线的发送模块中。举例说明如下假设SPI4A数 据緩存链表1指向的缓沖区的优先级最高,其它三个数据緩存链表指向的乡爰 冲区共享同 一优先级,且共享同 一优先级的三个緩冲区采用加权轮询的方式 进行调度,加权比例为(SPI4A数据緩存链表2指向的緩沖区SPI4B数据 緩存链表l指向的緩冲区SPI4B数据緩存链表2指向的緩冲区=2:1:1 )。 则在这种情况下,ICS将指示MMU—A优先读取SPI4A数据緩存链表1指向 的緩冲区中的数据,然后按照2:1:1的加权比例釆用加权轮询的方式指示 MMU_A和MMU—B从其它3个数据緩存链表指向的緩冲区中读取数据。
收到数据读取指示的MMU按照ICS指示从相应数据緩存链表中获取緩 存数据的地址信息,然后根据获取的地址信息从SDRAM中读出数据,并将 读出的数据发送给ICS, ICS将读出的数据发送到上行主路SPI4M总线上。 图9中,左侧各緩冲区中的数字表示緩冲区中的报文顺序,右侧上行方向 SPI4M总线lt据队列中排列的是ICS按照WRR和SP原则从各緩沖区中调 度的报文,其中,斜方格填充的表示从SPI4A数据緩存链表1指向的緩冲区 中读出的报文,左斜线填充的表示从SPI4A数据緩存链表2指向的緩冲区中 读出的报文,圆点填充的表示从SPI4B数据緩存链表1指向的缓冲区中读出 的报文,右斜线填充的表示从SPI4B数据緩存链表2指向的緩沖区中读出的 报文。
在数据从SDRAM中读出之后,MMU需要将该数据对应的緩存地址依 序添加到SRAM中的空闲緩存链表中,以便该地址对应的緩存块可以被后 续的数据报文所使用;并且,MMU还要将该地址从相应的数据緩存链表中 释放出来。以图8为例,当Cha皿el(b)数据緩存链表中的地址指针bDataptrO 指向的SDRAM緩冲区中的数据Channel(bO)被读出后,Channel(bO)对应的 缓存块地址将被添加到空闲緩存链表的Emptr2之后,并且,释放Channel(b) 数据緩存链表中的地址指针bDataptrO, Channel(b)数据緩存链表最新的数 据缓存指针更新为bDataptrl 。需要说明的是,ICS上行数据调度方法并不限于图9所示的一种,对于
存在更多数据緩存链表及要求更多调度优先级的情况,本发明同样适用。
在SPI4.2总线桥接器件中,MMU负责管理外接SDRAM中数据的所有 读出和写入操作,为了提升SDRAM的读写性能,MMU每次对SDRAM进 行读操作或写操作可以以固定长度的字节为单位,如64Byte、 512Byte或 1 KByte等。
由以上描述可见,采用图4所示的SPI4.2总线桥接器件后,如果主3各 SPI4.2总线上传数据的通道发生拥塞,则每个支路SPI4.2总线对应的MMU 可以先将报文预处理单元发来的数据存储到外接的SDRAM中,然后MMU 再根据ICS的指示从SDRAM中读出数据传递给ICS,最后由ICS将数据发 送到主路SPI4.2总线上进行上行传输。这样,SPI4.2总线桥接器件就可以吸 收支路SPI4.2总线上来的短时突发数据报文流量,使得主路SPI4.2总线提 供给上行处理器的报文流量更加平稳,不会像现有技术那样出现由于支路 SPI4.2总线突发流量过大而引起的数据报文丟失或重传的现象。
需要说明的是,如果在MMU接收到预处理单元发来的报文后,主路 SPI4.2总线上传数据的通道不拥塞,且对应的SDRAM中也没有待上传的缓 存报文,则MMU可以直接将收到的报文发送给ICS,由ICS进行上传,而 不需要经过外接SDRAM对报文进行緩存。
图5对SPI4.2总线桥接器件中上行方向(从支路SPI4.2总线到主路 SPI4.2总线方向)的报文传输作了详细说明。在下行方向(从主路SPI4.2 总线到支路SPI4.2总线方向),由于通常情况下支路SPI4.2总线的带宽之 和要大于主路SPI4.2总线的带宽,如支路SPI4A和SPI4B总线分别提供10G 的带宽,而主路SPI4M总线的带宽也仅为10G,故对于从SPI4M—RX接收 到的下行报文,SPI4.2总线桥接器件可以直接按照逻辑通道将收到的报文透 传到SPI4A或SPI4B总线上,通过SPI4A—TX或SPI4B—TX将报文发送出去, 而不进行緩存。比如,假设支路SPI4A和SPI4B总线分别配置了 5条逻辑 通道,主路SPI4M总线配置了 10条逻辑通道,且主路SPI4M总线配置的IO条逻辑通道与两条支路总线配置的共IO条逻辑通道分別——对应,则在
这种情况下,当SPI4M_RX收到下行报文后,SPI4M—RX可以根据主路总线 逻辑通道与支路总线逻辑通道的对应关系,直接将收到的报文映射到相应的 支路SPI4.2总线上发送出去。
需要说明的是,虽然上述实施例都是针对两条支路SPI4.2总线的情况 进行展开描述的,但应理解的是,本发明所提供的方案同样适用于两条以上 支路SPI4.2总线的场景。关于两条以上支路SPI4.2总线的处理,原则上与 上述两条支路SPI4.2总线的处理一致,这里不再——赘述。
以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说 明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原 则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范 围之内。
权利要求
1、一种SPI4.2总线桥接实现方法,其特征在于,在SPI4.2总线桥接器件上外接存储器,该方法包括在支路SPI4.2总线到主路SPI4.2总线的上行方向,当主路SPI4.2总线拥塞时,SPI4.2总线桥接器件先将支路SPI4.2总线发来的数据按照链表的方式缓存在外接存储器中,然后再将存储器中缓存的数据调度到主路SPI4.2总线上发送出去;当主路SPI4.2总线不拥塞时,SPI4.2总线桥接器件直接将来自支路SPI4.2总线的数据发送到主路SPI4.2总线上;在主路SPI4.2总线到支路SPI4.2总线的下行方向,SPI4.2总线桥接器件直接将来自主路SPI4.2总线的数据透传到支路SPI4.2总线上发送出去。
2、 根据权利要求1所述的方法,其特征在于,所述緩存之前进一步包括 SPI4.2总线桥接器件接收支路SPI4.2总线发来的数据,并根据预先设定的报文丢弃算法判断是緩存还是丟弃该数据,如果是緩存,则将该数据緩存到外 接存储器中;否则,直接丟弃。
3、 根据权利要求2所述的方法,其特征在于,所述报文丟弃算法为加权随 机早期检测WRED算法,所述SPI4.2总线桥接器件接收到支路SPI4.2总线发 来的数据后,根据该支路对应的接收方向的报文緩存队列长度及预先设定的最 低门限值和最高门限值判断是否丟弃数据。
4、 根据权利要求1至3任一项所述的方法,其特征在于,所述外接存储器 的个数与支路SPI4.2总线的条数一致,每条支路SPI4.2总线分别对应一个外接 存储器;各外接存储器被划分成多个緩存块,且针对各支路SPI4.2总线,分别 设置用于记录其对应存储器中空闲緩存块地址信息的空闲缓存链表和用于记录 其对应存储器中已被占用的緩存块地址信息的数据緩存链表;所述缓存过程包括SPI4.2总线桥接器件收到支路SPI4.2总线发来的数据 后,从该支路SPI4.2总线对应的空闲緩存链表中取出空闲緩存块地址信息,将 收到的数据緩存到对应存储器中与该空闲緩存块地址信息对应的緩存块中,同时将该緩存块地址信息从对应空闲緩存链表中删除,并将该緩存块地址信息添 加到对应数据緩存链表中。
5、 根据权利要求4所述的方法,其特征在于,所述数据緩存链表的个数与 其对应支路SPI4.2总线配置的逻辑通道个数相同,每个逻辑通道分别对应一个 独立的数据緩存链表;或者,支路SPI4.2总线的所有逻辑通道对应同一个数据 緩存链表;或者,支路SPI4.2总线的部分逻辑通道共享同一个数据缓存链表, 部分逻辑通道分别对应独立的数据緩存链表。
6、 根据权利要求4所述的方法,其特征在于,所述数据緩存链表的个数与 其对应支路SPI4.2总线逻辑通道的优先级个数相同,不同优先级的逻辑通道分 别对应不同的数据緩存链表,相同优先级的逻辑通道共享同一数据緩存链表。
7、 根据权利要求4所述的方法,其特征在于,所述调度过程包括 针对所有存储器中各数据緩存链表所指向的緩冲区,SPI4.2总线桥接器件按照加权轮询WRR和严格优先级SP配合的方式从各緩冲区中读取数据,然后 将读出的数据发送到主路SPI4.2总线上;并且,在数据从緩冲区中读出之后, SPI4.2总线桥接器件将读出的数据所存储的緩存块地址信息添加到空闲缓存链 表中,并将该緩存块地址信息从数据緩存链表中删除。
8、 根据权利要求1所述的方法,其特征在于,所述SPI4.2总线桥接器件 按照固定的字节长度对存储器进行数据写入或读出操作。
9、 根据权利要求1所述的方法,其特征在于,所述存储器为同步随机存储 器SRAM或同步动态随机存储器SDRAM。
10、 一种SPI4,2总线桥接器件,其特征在于,包括主路SPI4.2总线发送 模块、主路SPI4.2总线接收模块、上行调度单元以及分别与各支路SPI4.2总线 对应的发送模块、接收模块、报文预处理单元和内存管理单元,其中,支路SPI4.2总线接收模块,用于接收来自本支路3 14.2总线的数据,并将 接收到的数据发送给与本支路SPI4.2总线对应的^^艮文预处理单元;报文预处理单元,用于将支路SPI4.2总线接收模块发来的数据发送给与该 支路SPI4.2总线对应的内存管理单元;内存管理单元,用于在主路SPI4.2总线拥塞时,将来自报文预处理单元的 数据按照链表的方式写入到SPI4.2总线桥接器件外接的存储器中,并根据上行 调度单元的指示从外接存储器中读取緩存的数据,将读出的数据发送给上行调 度单元;并且,进一步用于在主路SPI4.2总线不拥塞时,直接将来自报文预处 理单元的数据发送给上行调度单元;上行调度单元,用于指示各内存管理单元从外接存储器中读取数据,并将 内存管理单元发来的数据通过主路SPI4.2总线发送模块发送出去;主路SPI4.2总线接收模块,用于接收来自主路SPI4.2总线的数据,并将收 到的数据透传到支路SPI4.2总线发送模块上发送出去。
11、 根据权利要求IO所述的器件,其特征在于,所述报文预处理单元接收 到支路SPI4.2总线接收模块发来的数据后,根据预先设定的报文丢弃算法判断 是緩存还是丢弃该数据,如果是緩存,则将该数据发送给与该支路SPI4.2总线 对应的内存管理单元;否则,直接丟弃。
12、 根据权利要求11所述的器件,其特征在于,所述报文丟弃算法为加权 随机早期检测WRED算法,所述报文预处理单元接收到支路SPI4.2总线接收 模块发来的数据后,根据该支路对应的接收方向的报文緩存队列长度及预先设 定的最低门限值和最高门限值判断是否丢弃数据。
13、 根据权利要求10至12任一项所述的器件,其特征在于,所述外接存 储器的个数与支路SPI4.2总线的条数一致,每条支路SPI4.2总线分别对应一个 外接存储器,且每条支路SPR2总线分别对应一个SRAM;各存储器被划分成 多个緩存块,各SRAM中设置用于记录其对应存储器中空闲緩存块地址信息的 空闲緩存链表和用于记录其对应存储器中已被占用的緩存块地址信息的数据緩 存链表;在主路SPI4.2总线拥塞时,所述内存管理单元接收到报文预处理单元发来 的数据后,从对应SRAM的空闲緩存链表中取出空闲緩存块地址信息,将收到 的数据緩存到对应存储器中与该空闲緩存块地址信息对应的緩存块中,同时将 该緩存块地址信息从对应空闲緩存链表中删除,并将该缓存块地址信息添加到对应数据緩存链表中。
14、 根据权利要求13所述的器件,其特征在于,所述SRAM外接在SPI4.2 总线桥接器件上,或者集成在SPI4.2总线桥接器件内部。
15、 根据权利要求13所述的器件,其特征在于,SRAM中设置的数据緩存 链表个数与其对应支路SPI4.2总线配置的逻辑通道个数相同,每个逻辑通道分 别对应一个独立的数据緩存链表;或者,支路SPI4.2总线的所有逻辑通道对应 同一个数据緩存链表;或者,支路SPI4.2总线的部分逻辑通道共享同一个数据 緩存链表,部分逻辑通道分别对应独立的数据緩存链表。
16、 根据权利要求13所述的器件,其特征在于,SRAM中设置的数据緩存 链表个数与其对应支路SPI4.2总线逻辑通道的优先级个数相同,不同优先级的 逻辑通道分别对应不同的数据緩存链表,相同优先级的逻辑通道共享同 一数据 緩存链表。
17、 根据权利要求13所述的器件,其特征在于,针对所有存储器中各数据 緩存链表所指向的緩冲区,所述上行调度单元按照加权轮询WRR和严格优先 级SP配合的方式指示各内存管理单元从各数据緩存链表所指向的緩冲区中读 取数据;数据从緩沖区中读出之后,所述内存管理单元进一步将读出的数据所存储 的缓存块地址信息添加到空闲緩存链表中,并将该缓存块地址信息从数据緩存 链表中删除。
18、 根据权利要求IO所述的器件,其特征在于,所述内存管理单元按照固 定的字节长度对存储器进行数据写入和读出操作。
19、 根据权利要求IO所述的器件,其特征在于,所述存储器为同步随机存 储器SRAM或同步动态随机存储器SDRAM。
全文摘要
本发明提供了一种SPI4.2总线桥接实现方法,该方法包括在SPI4.2总线桥接器件上外接存储器,当主路SPI4.2总线拥塞时,SPI4.2总线桥接器件先将支路SPI4.2总线发来的数据按照链表的方式缓存在外接存储器中,然后再将存储器中缓存的数据调度到主路SPI4.2总线上发送出去。相应地,本发明还提供了一种SPI4.2总线桥接器件。利用本发明提供的技术方案,能够在网络存在突发流量时,减少报文丢失或重传。
文档编号H04L12/56GK101309194SQ200810114279
公开日2008年11月19日 申请日期2008年6月2日 优先权日2008年6月2日
发明者凯 任, 王心远 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1