用于Interlaken增强型调度的切包装置及方法
技术领域
本发明涉及集成电路领域,特别是涉及一种用于Interlaken增强型调度的切包装置及方法。
背景技术
随着通信电子技术的高速发展,芯片间的数据交换速度越来越快,传统的SPI(SerialPeripheralInterface,外围设备接口)4.2或XAUI(10GigabitEthernetAttachmentUnitInterface,10千兆比特以太网附加单元接口)总线由于自身的局限性,不能扩展到10Gbps以上。SPI4.2采用低速并行总线,如要向更高速度扩展的话,势必会增加更多的引脚,因而需要大面积的PCB(PrintedCircuitBoard,印刷电路板)走线,使硬件设计更加复杂;而XAUI总线无法对数据包流实行信道化,无法实现QoS(QualityofService,服务质量)特性。基于以上情况,Cisco和Cortina两家公司共同推出Interlaken总线。Interlaken总线在使用上非常灵活,总线容量在理论上不存在上限,可根据用户需求自行调节,数据采用64B/67B编码方式,主要应用于10Gbps端口的MAC(MediumAccessControl,介质访问控制)、OC-768SONET(SynchronousOpticalNetwork,同步光纤网络)framer(OC-768成帧器,OC-768为SONET光纤数据传输的标准速度)、下一代100Gb以太网集成电路和100GbpsSwitchfabric(交换矩阵)与包处理器。
Interlaken协议中规定的简单型调度在某些输入包长和BurstMax(最大突发长度)组合的情况下,会导致包尾存在未使用的带宽,从而需要在包尾填入IdleWords(空闲字)以保证BurstShort(短突发长度),从而导致接口性能的降低。所以Interlaken协议中提供了一种增强型调度的方法,以BurstMin(最小突发长度)代替BurstShort,并以一种更优化的切包机制以保证每个包尾均能满足BurstShort,而不需要填入额外的IdleWords,从而提高接口性能。
Interlaken协议中阐述的增强型调度算法中,在切包前需要预先确定输入包长,从而在实现过程中需要缓存每个输入数据包,从而计算输入数据包的长度,以供后续切包计算时使用。而在Interlaken承载不同的类型业务的数据包时,输入包长的上限可能较大,从而需要较大的数据缓存来计算包长;再者,每次切包都需要缓存整包后再进行数据切割,切包效率较低。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种用于Interlaken增强型调度的切包装置及方法,在不需要预先确定输入数据包长的情况下,能够按照Interlaken超强型调度的要求进行数据包切割,显著提高切包效率,有效节省数据缓存空间,降低设备成本。
本发明提供一种用于Interlaken增强型调度的切包装置,包括上游数据包接口、切片数据缓存、切片信息缓存、数据包接收模块、切片计算模块、切片发送模块和下游Interlaken模块接口,其中:
所述上游数据包接口,用于:将上游的待切包的数据转换为本切包装置所需的数据总线格式,并对输入的数据包进行包头包尾检错和纠错,使写入数据包头、包尾的数据均以正确的顺序成对出现;
所述切片数据缓存,用于:存储转换格式后的数据包;
所述切片信息缓存,用于:存储切片计算模块提供的切片信息,供切片发送模块使用;
所述数据包接收模块,用于:将转换格式后的数据包写入切片数据缓存中,并将写入的数据包头SOP、数据包尾EOP信息、写使能、写地址均送入切片计算模块,以供其进行切片计算;
所述切片计算模块,用于:根据已知的参数最大突发长度BurstMax/最小突发长度BurstMin的值,按照Interlaken增强型调度的切包算法,在数据包接收模块将数据包写入切片数据缓存模块的同时,切片计算模块进行切片计算,使切片大小在BurstMax与BusrtMin之间,计算得出切片信息后,将每个切片的结尾在切片数据缓存中的地址eob_addr存入切片信息缓存中,供后续进行数据包切片时使用;
所述切片发送模块,用于:根据切片信息缓存中存放的eob_addr,将每个切片从切片数据缓存中读出,并标记上突发开始SOB与突发结尾EOB,完成数据的切片;当切片信息缓存为非空时,说明切片计算模块已经准备了至少一个数据包切片的的结尾在切片数据缓存中的地址eob_addr;此时,将eob_addr从切片信息缓存中读出,根据此eob_addr,将切片数据从切片数据缓存中读出,并将其转换为下游Interlaken模块所需的并行数据总线格式,供下游Interlaken模块进行Interlaken协议处理;
所述下游Interlaken模块接口,用于:将完成切片的数据转换到下游Interlaken模块所需的数据总线格式。
本发明还提供一种基于上述切包装置的用于Interlaken增强型调度的切包方法,包括以下步骤:
A、数据包接收模块将输入数据包写入切片数据缓存中,同时,切片计算模块计算每个切片的长度,将计算出的切片信息存入切片信息缓存中;
首先上游数据包接口将上游的待切包的数据转换为本切包装置所需的数据总线格式,并对输入的数据包进行包头包尾检错和纠错,然后数据包接收模块将经过检错和纠错的数据包转换为切片模块所需的数据总线格式写入切片数据缓存;写入切片数据缓存的数据包信息同时也送给切片计算模块,供其进行切片计算;切片计算模块根据已知的参数BurstMax/BurstMin的值,按照Interlaken增强型调度的切包算法,在数据包接收模块数据包写入切片数据缓存的同时,切片计算模块进行切片计算,保证切片大小在BurstMax与BusrtMin之间,计算得出的切片信息存入切片信息缓存中,供后续进行数据包切片时使用;
B、当切片信息缓存为非空时,切片发送模块将切片计算模块计算出的切片信息从切片信息缓存中读出,并按照此信息将数据从切片数据缓存中读出,标记切片头尾信息SOB和EOB,完成数据的切片,再由下游Interlaken模块接口将以上数据和信息转换为下游Interlaken模块所需的输入并行数据总线格式,供其进行Interlaken协议处理。
在上述技术方案的基础上,步骤A中所述切片计算模块进行切片计算的流程为:
A1、等待数据包接收模块将数据写入切片数据缓存;在数据包接收模块进行写入切片数据缓存的同时,数据包接收模块将SOP、EOP信息、写使能、写地址均送入切片计算模块,由切片计算模块使用突发计数器burst_cnt对切片长度进行累加,当计算出一个切片长度时,对burst_cnt清零,并将计算出的切片信息存入切片信息缓存中;
A2、判断等待数据包尾指示wait_eop_ind是否为1,如果是,则转到步骤A3;如果否,则转到步骤A4;
A3、若wait_eop_ind为1,将已经锁存的EOP写入地址数据包尾地址锁存信息eop_addr_latch写入切片信息缓存,作为此切片的尾地址eob_addr,然后返回步骤A1;
A4、若wait_eop_ind不为1,则判断:burst_cnt=BurstMax+BurstMin是否成立,如果是,则转到步骤A5;如果否,则转到步骤A6;
A5、若burst_cnt=BurstMax+BurstMin成立,则对burst_cnt清零,并将上次的切片尾地址eob_addr_pre+burstmax存入切片信息缓存中,作为此切片的结尾在切片数据缓存中的地址eob_addr,然后返回步骤A1;
A6、若burst_cnt=BurstMax+BurstMin不成立,则判断切片数据缓存是否正在写入EOP,如果是,则转到步骤A7;如果否,则返回步骤A1;
A7、将EOP写入地址锁存至eop_addr_latch,然后转到步骤A8;
A8、判断burst_cnt>BurstMax是否成立,如果是,则转到步骤A9;如果否,则转到步骤A10;
A9、将eob_addr_pre+BurstMax–BurstMin存入切片信息缓存中,作为此切片的结尾在切片数据缓存中的地址eob_addr,将wait_eop_ind置为有效,然后返回步骤A1;
A10、将数据包的包尾地址eop_addr存入切片信息缓存中,作为此切片的结尾在切片数据缓存中的地址eob_addr,然后返回步骤A1。
与现有技术相比,本发明的优点如下:
本发明对Interlaken协议中的增强型调度的切包算法进行了优化,使得不需要预知整个包长就能够进行切片处理;同时,切片计算与切片发送完全独立,使得在符合增强型调度切片算法的前提下,显著提高切片效率;同时由于不需要缓存整个输入数据包,切片数据缓存只需大于(BurstMax+BurstMin)即可完成切片计算,能够有效节省数据缓存、提高切片效率、降低设备成本。
附图说明
图1是本发明实施例中用于Interlaken增强型调度的切包装置的结构框图。
图2是本发明实施例中切片计算模块进行切片计算的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种用于Interlaken增强型调度的切包装置,包括上游数据包接口、切片数据缓存、切片信息缓存、数据包接收模块、切片计算模块、切片发送模块和下游Interlaken模块接口,其中:
上游数据包接口,用于:将上游的待切包的数据转换为本切包装置所需的数据总线格式,并对输入的数据包进行包头包尾检错和纠错,使写入数据包头、包尾的数据均以正确的顺序成对出现,避免造成切片计算模块的混乱及下游Interlaken模块的异常;
切片数据缓存,用于:存储转换格式后的数据包;
切片信息缓存,用于:存储切片计算模块提供的切片信息,供切片发送模块使用;
数据包接收模块,用于:将转换格式后的数据包写入切片数据缓存中,并将写入的SOP(StartOfPacket,数据包头)、EOP(StartOfPacket,数据包尾)信息、写使能、写地址均送入切片计算模块,以供其进行切片计算;
切片计算模块,用于:根据已知的参数BurstMax/BurstMin的值,按照Interlaken增强型调度的切包算法,在数据包接收模块将数据包写入切片数据缓存模块的同时,切片计算模块进行切片计算,使切片大小在BurstMax与BusrtMin之间,计算得出切片信息后,将每个eob_addr(endofburstaddress,切片的结尾在切片数据缓存中的地址)存入切片信息缓存中,供后续进行数据包切片时使用;切片计算模块对于Interlaken协议中的增强型调度的切包算法进行了优化,不需要已知整个包长就可以进行切片计算,使得切片数据缓存只需大于(BurstMax+BurstMin),即可完成切片计算;
切片发送模块,用于:根据切片信息缓存中存放的eob_addr,将每个切片从切片数据缓存中读出,并标记上SOB(StartOfBurst,突发开始)与EOB(EndOfBurst,突发结尾),完成数据的切片;当切片信息缓存为非空时,说明切片计算模块已经准备了至少一个数据包切片的的结尾在切片数据缓存中的地址eob_addr;此时,将eob_addr从切片信息缓存中读出,根据此eob_addr,将切片数据从切片数据缓存中读出,并将其转换为下游Interlaken模块所需的并行数据总线格式,从而供下游Interlaken模块进行Interlaken协议处理;
下游Interlaken模块接口,用于:将完成切片的数据转换到下游Interlaken模块所需的数据总线格式。
本发明实施例提供一种用于Interlaken增强型调度的切包方法,包括以下步骤:
A、数据包接收模块将输入数据包写入切片数据缓存中,同时,切片计算模块计算每个切片的长度,将计算出的切片信息存入切片信息缓存中;
首先上游数据包接口将上游的待切包的数据转换为本切包装置所需的数据总线格式,并对输入的数据包进行包头包尾检错和纠错,然后数据包接收模块将经过检错和纠错的数据包转换为切片模块所需的数据总线格式写入切片数据缓存;写入切片数据缓存的数据包信息同时也送给切片计算模块,供其进行切片计算;切片计算模块根据已知的参数BurstMax/BurstMin的值,按照Interlaken增强型调度的切包算法,在数据包接收模块数据包写入切片数据缓存的同时,切片计算模块进行切片计算,保证切片大小在BurstMax与BusrtMin之间,计算得出的切片信息存入切片信息缓存中,供后续进行数据包切片时使用;
B、当切片信息缓存为非空时,切片发送模块将切片计算模块计算出的切片信息从切片信息缓存中读出,并按照此信息将数据从切片数据缓存中读出,标记切片头尾信息SOB和EOB,完成数据的切片,再由下游Interlaken模块接口将以上数据和信息转换为下游Interlaken模块所需的输入并行数据总线格式,供其进行Interlaken协议处理。
步骤A中切片计算模块对于Interlaken协议中的增强型调度的切包算法进行了优化,不需要预知整个包长,切片数据缓存存储的数据量只需大于(BurstMax+BurstMin),即可完成切片计算。
参见图2所示,步骤A中切片计算模块进行切片计算的流程为:
A1、等待数据包接收模块将数据写入切片数据缓存;在数据包接收模块进行写入切片数据缓存的同时,数据包接收模块将SOP、EOP信息、写使能、写地址均送入切片计算模块,由切片计算模块使用burst_cnt(突发计数器,用来计算每个burst的字节数)对切片长度进行累加,当计算出一个切片长度时,对burst_cnt清零,并将计算出的切片信息存入切片信息缓存中;
A2、判断wait_eop_ind(等待数据包尾指示)是否为1,如果是,则转到步骤A3;如果否,则转到步骤A4;
A3、若wait_eop_ind为1,将已经锁存的EOP写入地址eop_addr_latch(数据包尾地址锁存信息)写入切片信息缓存,作为此切片的尾地址eob_addr,然后返回步骤A1;
A4、若wait_eop_ind不为1,则判断:burst_cnt=BurstMax+BurstMin是否成立,如果是,则转到步骤A5;如果否,则转到步骤A6;
A5、若burst_cnt=BurstMax+BurstMin成立,则对burst_cnt清零,并将eob_addr_pre(上次的切片尾地址)+burstmax存入切片信息缓存中,作为此切片的结尾在切片数据缓存中的地址eob_addr,然后返回步骤A1;
A6、若burst_cnt=BurstMax+BurstMin不成立,则判断:切片数据缓存是否正在写入EOP,如果是,则转到步骤A7;如果否,则返回步骤A1;
A7、将EOP写入地址锁存至eop_addr_latch,然后转到步骤A8;
A8、判断burst_cnt>BurstMax是否成立,如果是,则转到步骤A9;如果否,则转到步骤A10;
A9、将eob_addr_pre+BurstMax–BurstMin存入切片信息缓存中,作为此切片的结尾在切片数据缓存中的地址eob_addr,将wait_eop_ind置为有效,然后返回步骤A1;
A10、将数据包的包尾地址eop_addr存入切片信息缓存中,作为此切片的结尾在切片数据缓存中的地址eob_addr,然后返回步骤A1。
以上计算切片的方法,对原有的Interlaken协议中增强型调度的切片算法进行了优化并提供了一钟具体的实施方案,切片数据缓存只需大于(BurstMax+BurstMin)即可满足切片要求,而且无需对整个数据包进行缓存,从而节省了数据缓存;切片计算过程与切片发送过程完全独立,从而提高切包效率。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。