CN104580009B - 芯片转发数据的方法及装置 - Google Patents
芯片转发数据的方法及装置 Download PDFInfo
- Publication number
- CN104580009B CN104580009B CN201510041260.8A CN201510041260A CN104580009B CN 104580009 B CN104580009 B CN 104580009B CN 201510041260 A CN201510041260 A CN 201510041260A CN 104580009 B CN104580009 B CN 104580009B
- Authority
- CN
- China
- Prior art keywords
- data
- address
- transmitting terminal
- caching
- terminal caching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种芯片转发数据的方法及装置。一种芯片转发数据的方法,通过将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据;当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中;解决了现有技术中发送端缓存与接收端缓存之间物理连线复杂的问题。
Description
技术领域
本发明实施例涉及通信技术,尤其涉及一种芯片转发数据的方法及装置。
背景技术
随着专用集成电路(芯片)的迅猛发展,芯片已经广泛应用于数据交换及通信传输。
现有技术中,芯片从入口总线接收其他芯片(例如,中央处理器(CPU,CentralProcessing Unit))发送的待发送数据;芯片(其中,芯片包括接收端缓存及发送端缓存)对待发送数据进行处理(例如,打包处理),并将处理后的数据全部存储在接收端缓存中;当发送端缓存中的数据的个数少于出口总线的数据位宽时,芯片根据发送端缓存中剩余存储空间的首地址,确定接收端缓存中各数据分别对应的发送端缓存的地址,并根据各数据分别对应的发送端缓存的地址,将接收端缓存中的所有数据同步至发送端缓存(其中,发送端缓存的存储容量大于接收端缓存的存储容量);芯片调度发送端缓存中的数据发送至出口总线。由于存在需要将接收端缓存的任一比特(bit)位的数据同步至发送端缓存的任一bit位的场景;对于集成电路来说,若需要将缓存中一bit位的数据同步至另一bit位,则在需要对这两个bit位之间进行物理连线。
但是,现有技术中,存在接收端缓存到发送端缓存之间物理连线复杂的问题。
发明内容
本发明提供一种芯片转发数据的方法及装置,用以解决现有技术中接收端缓存到发送端缓存之间物理连线复杂的问题。
第一方面,本发明提供一种芯片转发数据的方法,用于将接收端缓存中的数据同步到发送端缓存中,所述方法包括:
确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;
将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;
将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取1,2,3…等自然数;
当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中,其中,L为发送端缓存的每一个存储单元的大小。
结合第一方面,在第一方面的第一种可能实现的方式中,所述确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围之前,还包括:
接收来自入口总线的待发送数据;
对所述待发送数据进行处理,获得处理后的数据;其中,所述处理后的数据包括有效数据和无效数据;
将所述有效数据存储至所述接收端缓存;
相应的,所述根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存之前,还包括:将所述发送端缓存的空闲存储单元中的数据都设置为所述无效数据;
所述将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,包括:将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据及所述无效数据。
结合第一方面的第一种可能实现的方式,在第一方面的第二种可能实现的方式中,所述接收端缓存的容量等于对来自所述入口总线的待发送数据进行处理后,能够获得的有效数据的数据量的最大值。
结合第一方面的第一种或第二种可能实现的方式,在第一方面的第三种可能实现的方式中,所述接收来自入口总线的待发送数据,包括:接收来自入口总线的待发送数据包;
相应的,所述处理为打包处理,所述有效数据包括所述待发送数据包、打包获得的包头及包尾;所述无效数据包括填充数据。
结合第一方面的第三种可能实现的方式,在第一方面的第四种可能实现的方式中,所述发送端缓存包括第一发送端缓存、第二发送端缓存和第三发送端缓存;
其中,所述第一发送端缓存用于存储所述待发送数据包;所述第二发送端缓存用于存储所述包头中与所述待发送数据包相关的部分数据;所述第三发送端缓存用于存储所述包尾中与所述待发送数据包相关的部分数据;所述第二发送端缓存及所述第三发送端缓存的存储单元的大小小于所述第一发送端缓存的存储单元的大小;
相应的,根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存,包括:
根据所述映射地址,将待发送数据包中处于所述地址范围内的数据同步至所述第一发送端缓存,将包头中处于所述地址范围内的数据同步至所述第二发送端缓存,将包尾中处于所述地址范围内的数据同步至所述第三发送端缓存。
第二方面,本发明提供一种芯片,用于将接收端缓存中的数据同步到发送端缓存中,所述芯片包括:
确定电路,用于确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;
地址分配电路,用于将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据;
数据同步电路,用于根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;
所述地址分配电路,还用于将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取1,2,3…等自然数;
所述地址分配电路,还用于当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值;其中,L为发送端缓存的每一个存储单元的大小;
所述数据同步电路,还用于:如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中。
结合第二方面,在第二方面的第一种可能实现的方式中,所述芯片还包括:
处理电路,用于接收来自入口总线的待发送数据;对所述待发送数据进行处理,获得处理后的数据;其中,所述处理后的数据包括有效数据和无效数据;将所述有效数据存储至所述接收端缓存;
相应的,所述数据同步电路,还用于:将所述发送端缓存的空闲存储单元中的数据都设置为所述无效数据;
所述地址分配电路,具体用于:将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据及所述无效数据。
结合第二方面的第一种可能实现的方式,在第二方面的第二种可能实现的方式中,所述接收端缓存的容量等于对来自所述入口总线的待发送数据进行处理后,能够获得的有效数据的数据量的最大值。
结合第二方面的第一种或第二种可能实现的方式,在第二方面的第三种可能实现的方式中,所述处理电路,具体用于:接收来自入口总线的待发送数据包;对所述待发送数据包进行打包处理,获得打包后的数据;
相应的,所述有效数据包括所述待发送数据包、打包获得的包头及包尾;所述无效数据包括填充数据。
结合第二方面的第三种可能实现的方式,在第二方面的第四种可能实现的方式中,所述发送端缓存包括第一发送端缓存、第二发送端缓存和第三发送端缓存;
其中,所述第一发送端缓存用于存储所述待发送数据包;所述第二发送端缓存用于存储所述包头中与所述待发送数据包相关的部分数据;所述第三发送端缓存用于存储所述包尾中与所述待发送数据包相关的部分数据;所述第二发送端缓存及所述第三发送端缓存的存储单元的大小小于所述第一发送端缓存的存储单元的大小;
相应的,所述数据同步电路,具体用于:根据所述映射地址,将待发送数据包中处于所述地址范围内的数据同步至所述第一发送端缓存,将包头中处于所述地址范围内的数据同步至所述第二发送端缓存,将包尾中处于所述地址范围内的数据同步至所述第三发送端缓存。
本发明提供一种芯片转发数据的方法及装置,通过将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据;当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中;使得不需要再限制发送端缓存的存储容量必须大于接收端缓存的存储容量;解决了现有技术中发送端缓存与接收端缓存之间物理连线复杂的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明芯片转发数据的方法的应用场景示意图;
图2为本发明芯片转发数据的方法实施例一的流程图;
图3为现有技术芯片转发数据的方法的示意图;
图4为本发明芯片转发数据的方法实施例二的流程图;
图5为本发明芯片转发数据的方法的示意图一;
图6为本发明芯片转发数据的方法的示意图二;
图7为本发明芯片实施例一的结构示意图;
图8为本发明芯片实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明芯片转发数据的方法的应用场景示意图;如图1所示,芯片11从入口总线接收其他芯片发送的待发送数据,芯片11对待发送数据进行处理,并将处理后的数据全部存储在接收端缓存12中;当发送端缓存13中的数据大小少于出口总线数据位宽时,芯片11根据发送端缓存13中剩余存储空间的首地址,确定接收端缓存12中各数据分别对应的发送端缓存13的地址,并根据各数据分别对应的发送端缓存13的地址,将接收端缓存12中的所有数据同步至发送端缓存13;芯片11调度发送端缓存13中的数据发送至出口总线。
图2为本发明芯片转发数据的方法实施例一的流程图,如图2所示,本实施例的方法可以包括:
步骤201、确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;
步骤202、将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;
步骤203、将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取1,2,3…等自然数;
步骤204、当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中,其中,L为发送端缓存的每一个存储单元的大小。
现有技术中,芯片获取接收端缓存中各数据分别对应的映射地址,并在需要将接收端缓存的数据同步至发送端缓存时,根据各数据分别对应的映射地址将接收端缓存中的所有数据都同步至发送端缓存。本发明的实施例中,将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据;当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中。
现有技术中,由于芯片获取接收端缓存中各数据分别对应的映射地址,并在需要将接收端缓存的数据同步至发送端缓存时,根据各数据分别对应的映射地址将接收端缓存中的所有数据都同步至发送端缓存;因此,发送端缓存的存储容量必须大于接收端缓存的存储容量;因此,若接收端缓存的存储容量为X1,则发送端缓存的存储容量应为X1+P(其中,P为正整数),发送端缓存与接收端缓存之间需要存在X1乘(X1+P)条物理连线。通过本发明的实施例中,将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据;当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中;使得不需要再限制发送端缓存的存储容量必须大于接收端缓存的存储容量;因此,若接收端缓存的存储容量为X1,则发送端缓存的存储容量应为X1-Q(其中,Q为正整数),则发送端缓存与接收端缓存之间需要存在X1乘(X1-Q)条物理连线。也即,本发明中通过减少发送端缓存的存储容量,从而减少了发送端缓存与接收端缓存之间的物理连线个数,解决了现有技术中发送端缓存与接收端缓存之间物理连线复杂的问题。
本实施例中,通过将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据;当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中;使得不需要再限制发送端缓存的存储容量必须大于接收端缓存的存储容量;解决了现有技术中发送端缓存与接收端缓存之间物理连线复杂的问题。
需要说明的是,本实施例步骤201“确定当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围”中,“接收端缓存中的地址范围”应为以接收端缓存中首个存储单元对应的存储单元首地址为起始地址的地址范围;步骤204“当发送端缓存中再次空闲出M个存储单元”中的“M个存储单元”,应为所述发送端缓存中存储地址最大的M个存储单元。
图3为现有技术芯片转发数据的方法的示意图。假设场景为:入口总线为8路、每路为128bit;出口总线为16路、每路为64bit;接收端缓存和发送端缓存的存储单元大小都为64bit。如图3所示,第1路入口总线输入数据块D0、D1(每个数据块的大小为64bit),第2路入口总线输入数据块D2、D3,第3路入口总线输入数据块D4、D5,第4路入口总线输入数据块D6、D7,第5路入口总线输入数据块D8、D9,第6路入口总线输入数据块D10、D11,第7路入口总线输入数据块D12、D13,第8路入口总线输入数据块D14、无效数据块null;且D0~D3属于待发送数据包Pkt0,D4、D5属于Pkt1,D6~D14属于Pkt2。其中,包头sop0及包尾eop0分别为Pkt0的包头及包尾,包头sop1及包尾eop1分别为Pkt1的包头及包尾,包头sop2及包尾eop2分别为Pkt2的包头及包尾;IDLE表示填充数据块(若对来自入口总线的待发送数据包进行打包后的长度小于预设长度(也即,最小包限制),则不够的部分需要填充IDLE)。
如图3所示,现有技术中,首先,芯片对来自入口总线的待发送数据包Pkt0、Pkt1及Pkt2进行打包;若假设最小包限制为33个8字节(byte);则对Pkt0(也即数据块D0~D3)打包之后,获得了sop0、D0~D3、eop0及27个填充数据块IDLE;对Pkt1(也即数据块D4、D5)打包之后,获得了sop1、D4、D5、eop1及29个IDLE;对Pkt2(也即数据块D6~D14)打包之后,获得了sop2、D6~D14、eop2及22个IDLE。
其次,芯片将打包后的数据全部存储至接收端缓存。需要说明的是,由于芯片从入口总线接收到的待发送数据包的包数最多可以为8个(每路入口总线分别对应一个待发送数据包),则接收端缓存的存储容量应该等于8×33×8×8bit(其中,第一个8表示8个数据包;33×8×8表示33个8byte;)。
再次,接收芯片将接收端缓存的数据全部同步至发送端缓存。其中,由于在将接收端缓存的数据同步至发送端缓存之前,发送端缓存中前四个存储单元中分别对应数据块#1、#2、#3、#4;因此将接收端缓存中的sop0同步至发送端缓存的第5个存储单元,将接收端缓存中的D0同步至发送端缓存的第6个存储单元,将接收端缓存中的D1同步至发送端缓存的第7个存储单元,……,将接收端缓存中的D14同步至发送端缓存的第80个存储单元,……,将接收端缓存中的最后一个IDLE同步至发送端缓存的第103个存储单元。需要说明的是,由于发送端缓存的存储容量必须大于接收端缓存的存储容量,因此接收端缓存的存储容量应该大于8×33×8×8bit。
然后,芯片将发送端缓存中的前16乘64bit的数据输出至出口总线。
最后,芯片对发送端缓存中的数据进行更新;将第17个存储单元的数据更新至第1个存储单元,将第18个存储单元的数据更新至第2个存储单元,……,将第103个存储单元的数据更新至第87个存储单元。
由上述过程可以看出,对于上述场景,现有技术中接收端缓存至发送端缓存之间物理连线的数目为(8×33×8×8)2=285474816条。
图4为本发明芯片转发数据的方法实施例二的流程图,如图4所示,本实施例的方法可以包括:
步骤401、接收来自入口总线的待发送数据;
步骤402、对所述待发送数据进行处理,获得处理后的数据;其中,所述处理后的数据包括有效数据和无效数据;
可选的,所述处理可以为打包处理。
步骤403、将所述有效数据存储至所述接收端缓存;
可选的,所述接收端缓存的容量等于对来自所述入口总线的待发送数据包进行处理后,能够获得的有效数据的数据量的最大值。
例如,对于图3中的待发送数据包Pkt0、Pkt1、Pkt2,则将打包后获得的有效数据sop0、D0~D3、eop0、sop1、D4、D5、eop1、sop2、D6~D14、eop2存储至接收端缓存。
步骤404、确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;
步骤405、将所述发送端缓存的空闲存储单元中的数据都设置为所述无效数据;
需要说明的是,步骤404与步骤405之间并没有先后顺序。
由于接收端缓存中仅存储了有效数据,而并没有存储无效数据;因此,通过步骤405中将发送端缓存的空闲存储单元中的数据都设置为无效数据,使得在将接收端缓存中的有效数据同步至发送端缓存后,在发送端缓存中能够获得完整的对待发送数据进行处理后的数据。
步骤406、将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;
步骤407、将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据及所述无效数据;其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取1,2,3…等自然数;
需要说明的是,由于接收端缓存中仅存储了对来自入口总线的数据进行处理后获得的有效数据,而在发送端缓存中不仅需要存储有效数据还需要存储无效数据;因此,值等于address_max+n(n依次取1,2,3…等自然数)的待修正地址不仅需要分配给接收端缓存中的数据还需要分配给无效数据。
步骤408、当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中,其中,L为发送端缓存的每一个存储单元的大小。
现有技术中,芯片将处理后的数据全部存储至接收端缓存;本发明的实施例中,仅将处理后获得的有效数据存储至接收端缓存,并将发送端缓存的空闲存储单元中的数据都设置为无效数据;从而进一步减少了接收端缓存的存储容量;因此,进一步减少了发送端与接收端缓存之间的物理连线个数。
芯片转发数据的方法实施例三
可选的,在芯片转发数据的方法实施例二的基础上,步骤401具体可以为:接收来自入口总线的待发送数据包;
相应的,所述处理为打包处理,所述有效数据包括所述待发送数据包、打包获得的包头及包尾;所述无效数据包括填充数据。
图5为本发明芯片转发数据的方法的示意图一。假设场景为:入口总线为8路、每路为128bit;出口总线为16路、每路为64bit;接收端缓存和发送端缓存的存储单元的大小都为64bit。
如图5所示,本发明的实施例中,首先,接收芯片对来自入口总线的待发送数据包Pkt0、Pkt1及Pkt2进行打包;若假设最小包限制为33个8字节(byte);则对Pkt0(也即数据块D0~D3)打包之后,获得了sop0、D0~D3、eop0及27个填充数据块IDLE;对Pkt1(也即数据块D4、D5)打包之后,获得了sop1、D4、D5、eop1及29个IDLE;对Pkt2(也即数据块D6~D14)打包之后,获得了sop2、D6~D14、eop2及22个IDLE。
之后,芯片将打包后的有效数据存储至接收端缓存;也即,将有效数据sop0、D0~D3、eop0、sop1、D4、D5、eop1、sop2、D6~D14、eop2存储至接收端缓存。需要说明的是,由于芯片从入口总线接收到的待发送数据包的包数最多可以为8个(每路入口总线分别对应一个待发送数据包),每个数据包都对应一个包头和包尾,则接收端缓存的存储容量应该等于(2×8+16)×(8×8)bit(也即,32个存储单元)。本步骤中将sop0存储至接收端缓存的第1个存储单元,将D0存储至接收端缓存的第2个存储单元,将D1存储至接收端缓存的第3个存储单元,……,将eop2存储至接收端缓存的第21个存储单元。
之后,确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围。这里假设发送端缓存包括了16+15个存储单元(也即,发送端缓存的存储容量为31×8×8);由于在将接收端缓存的数据同步至发送端缓存之前,发送端缓存中前四个存储单元中分别对应数据块#1、#2、#3、#4;因此发送端缓存中第5~31个存储单元为空闲存储单元。由于发送端缓存及接收端缓存的存储空间的大小相同,且每个数据包(例如Pkt0)打包后获得33个8字节的数据;因此,当前时刻能够写入发送端缓存的数据为接收端缓存中第1~6个存储单元的数据。
之后,芯片将所述发送端缓存的空闲存储单元中的数据都设置为IDLE。
之后,芯片将发送端缓存的第5个存储单元的映射地址,分配给处于接收端缓存中第1个存储单元的数据,……,将发送端缓存中第10个存储单元的映射地址,分配给处于接收端缓存中第6个存储单元的数据,并根据所述映射地址将处于接收端缓存中第1~6个存储单元的数据同步至发送端缓存;获得了图5中的“第一次同步后的发送端缓存”。
之后,芯片将address_max+6L+1~address_max+7L(其中,L为发送端缓存中每个存储单元的大小,也即64bit)分配给接收端缓存中的第7个存储单元的数据,将address_max+7L+1~address_max+8L分配给接收端缓存中的第8个存储单元的数据,将address_max+8L+1~address_max+9L分配给接收端缓存中的第9个存储单元的数据,将address_max+9L+1~address_max+10L分配给接收端缓存中的第10个存储单元的数据,将address_max+39L+1~address_max+40L分配给接收端缓存中的第11个存储单元的数据,……,将address_max+49L+1~address_max+50L分配给接收端缓存中的第21个存储单元的数据。需要说明的是,其中的待修正地址被分配给了无效数据,例如address_max+1被分配给了无效数据。
之后,芯片将发送端缓存中的前16乘64bit的数据输出至出口总线,也即将发送端缓存中前16个存储单元的数据输出至出口总线。
之后,芯片将第17个存储单元的数据更新至第1个存储单元,将第18个存储单元的数据更新至第2个存储单元,……,将第31个存储单元的数据更新至第15个存储单元。
之后,芯片确定发送端缓存中再次空出16个存储单元,将分配给接收端缓存中的第7个存储单元数据数据的待修正地址更新为address_max-10L+1~address_max-9L(也即,将发送端缓存中第22个存储单元的映射地址,分配给处于接收端缓存中第7个存储单元的数据),将分配给接收端缓存中第8个存储单元数据的待修正地址更新为address_max-9L+1~address_max-8L(也即,将发送端缓存中第23个存储单元的映射地址,分配给处于接收端缓存中第8个存储单元的数据),将分配给接收端缓存中第9个存储单元数据的待修正地址更新为address_max-8L+1~address_max-7L(也即,将发送端缓存中第24个存储单元的映射地址,分配给处于接收端缓存中第9个存储单元的数据),将分配给接收端缓存中第10个存储单元数据的待修正地址更新为address_max-7L+1~address_max-6L(也即,将发送端缓存中第25个存储单元的映射地址,分配给处于接收端缓存中第10个存储单元的数据),将分配给接收端缓存中第11个存储单元数据的待修正地址更新为address_max+23L+1~address_max+24L,……,将分配给接收端缓存中第21个存储单元数据的待修正地址更新为address_max+33L+1~address_max+34L。
之后,由于接收端缓存中第7~10个存储单元的数据对应的修正后的待修正地址处于发送端缓存的空闲存储单元的地址范围之内,因此根据修正后的待修正地址将接收端缓存中第7个存储单元的数据同步至发送端缓存第22个存储单元,将接收端缓存中第8个存储单元的数据同步至发送端缓存第23个存储单元,将接收端缓存中第9个存储单元的数据同步至发送端缓存第24个存储单元,将接收端缓存中第10个存储单元的数据同步至发送端缓存第25个存储单元;从而获得了图5中的“第二次同步后的发送端缓存”。
之后,芯片将发送端缓存中的前16乘64bit的数据输出至出口总线。
之后,芯片将第17个存储单元的数据更新至第1个存储单元,将第18个存储单元的数据更新至第2个存储单元,……,将第31个存储单元的数据更新至第15个存储单元。
之后,芯片确定发送端缓存中再次空出16个存储单元,将分配给接收端缓存中第11个存储单元数据的待修正地址更新为address_max+7L+1~address_max+8L,……,将分配给接收端缓存中第21个存储单元数据的待修正地址更新为address_max+17L+1~address_max+18L。
之后,芯片将发送端缓存中的前16乘64bit的数据输出至出口总线。
之后,芯片将第17个存储单元的数据更新至第1个存储单元,将第18个存储单元的数据更新至第2个存储单元,……,将第31个存储单元的数据更新至第15个存储单元。
之后,芯片确定发送端缓存中再次空出16个存储单元,将分配给接收端缓存中第11个存储单元数据的待修正地址更新为address_max-9L+1~address_max-8L,……,将分配给接收端缓存中第21个存储单元数据的待修正地址更新为address_max+L+1~address_max+2L。
之后,芯片将发送端缓存中的前16乘64bit的数据输出至出口总线。
之后,芯片将第17个存储单元的数据更新至第1个存储单元,将第18个存储单元的数据更新至第2个存储单元,……,将第31个存储单元的数据更新至第15个存储单元。
之后,芯片确定发送端缓存中再次空出16个存储单元,将分配给接收端缓存中第11个存储单元的待修正地址更新为address_max-25L+1~address_max-24L,……,将分配给接收端缓存中第21个存储单元数据的待修正地址更新为address_max-15L+1~address_max-14L。
之后,由于接收端缓存中第11~21个存储单元的数据对应的修正后的待修正地址处于发送端缓存的空闲存储单元的地址范围之内,因此根据修正后的待修正地址将接收端缓存中第11个存储单元的数据同步至发送端缓存第7个存储单元,……,将接收端缓存中第21个存储单元的数据同步至发送端缓存第17个存储单元;从而获得了图5中的“第三次同步后的发送端缓存”。
由上述过程可以看出,对于与现有技术相同的场景,本发明的实施例中接收端缓存与发送端缓存之间物理连线的数目为(32×64)×(31×64)=4063232条,与现有技术的285474816相比,通过本实施例的方法大大减少了接收端缓存与发送端缓存之间物理连线的数目。
芯片转发数据的方法实施例四
可选的,在本发明芯片转发数据的方法实施例三的基础上,发送端缓存可以包括:第一发送端缓存、第二发送端缓存和第三发送端缓存;
其中,所述第一发送端缓存用于存储所述待发送数据包;所述第二发送端缓存用于存储所述包头中与所述待发送数据包相关的部分数据;所述第三发送端缓存用于存储所述包尾中与所述待发送数据包相关的部分数据;所述第二发送端缓存及所述第三发送端缓存的存储单元的大小小于所述第一发送端缓存的存储单元的大小;
相应的,步骤406具体为:根据所述映射地址,将待发送数据包中处于所述地址范围内的数据同步至所述第一发送端缓存,将包头中处于所述地址范围内的数据同步至所述第二发送端缓存,将包尾中处于所述地址范围内的数据同步至所述第三发送端缓存。
例如,对于基于因特拉肯(interlaken)协议数据处理的包头(sop,start ofpacket)来说,只有指示包头标识的sop flag域和指示数据包来源的channel域是与待发送数据包有关的,其它bit的格式固定不变;因此,可以仅将sop flag和channel存储至第二发送端缓存中。
又例如,对于基于interlaken协议数据处理的包尾(eop,end of packet)来说,只有指示分段传输时最后一拍有效长度的eop_field域和指示包尾标识的eop flag bit域是与待发送数据包有关的,其它bit的格式固定不变;因此,可以仅将eop_field和eop flagbit存储至第三发送端缓存中。
图6为本发明芯片转发数据的方法的示意图二;如图6所示,接收端缓存中存储了数据块D0~D15、sop’(sop’表示sop中与待发送数据包相关的部分数据)以及eop’(eop’表示eop中与待发送数据包相关的部分数据);数据块D0~D15被同步至Buf_1(也即,第一发送端缓存),sop’被同步至Buf_2(也即,第二发送端缓存),eop’被同步至Buf_3(也即,第三发送端缓存)。
需要说明的是,由于芯片分别从三个发送端缓存同时获取数据并叠加后发送至出口总线;因此,第一发送端缓存、第二发送端缓存及第三发送端缓存所包括的存储单元的个数相同。但是,由于第二发送端缓存仅存储包头中与所述待发送数据包相关的部分数据,第三发送端缓存仅存储包尾中与所述待发送数据包相关的部分数据;因此,第一发送端缓存的存储单元的大小大于第二发送端缓存及第三发送端缓存的存储单元的大小。
与图5相同,图6的接收端缓存中也仅保存了有效数据;因此,图6接收端缓存的存储容量也应该等于(2×8+16)×(8×8);其中:“2”表示了包头和包尾;2乘以8表示来自入口总线的待发送数据包为8个时,则所有的包头和包尾需要占用2乘8个存储单元;16表示来自入口总线的16个数据块(例如,之前的D0~D14及null);8乘8表示一个存储单元的大小(也即64bit)。与图5相同,假设图6的各发送端缓存也都包括了16+15个存储单元;且第一发送端缓存的存储单元的大小为64bit(与图5的发送端缓存中一个存储单元的大小相同),第二发送端缓存的存储单元的大小为10bit(小于第一发送端缓存的存储单元的大小),第三发送端缓存的存储单元的大小为5bit(也小于第一发送端缓存的存储单元的大小)。基于上述场景,本发明的实施例中接收端缓存与发送端缓存之间物理连线的数目为(16×64)×(31×64)+(8×64)×(31×10)+(8×64)×(31×5)=2031616+158720+79360=2269696条;与图5所示的4063232相比,通过本实施例的方法进一步减少了接收端缓存与发送端缓存之间物理连线的数目。
图7为本发明芯片实施例一的结构示意图,如图7所示,本实施例的芯片可以包括:确定电路701、地址分配电路702及数据同步电路703。其中,确定电路701,用于确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;地址分配电路702,用于将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据;数据同步电路703,用于根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;地址分配电路702,还用于将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取1,2,3…等自然数;地址分配电路702,还用于当发送端缓存中再次空闲出M个存储单元,则将所有发送端缓存中的待修正地址减去M×L,得到修正后的待修正地址值;其中,L为发送端缓存的每一个存储单元的大小;数据同步电路703,还用于:如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中。
本实施例的芯片,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图8为本发明芯片实施例二的结构示意图,如图8所示,本实施例的芯片在图7所示芯片结构的基础上,进一步地,处理电路704,该处理电路704,用于接收来自入口总线的待发送数据;对所述待发送数据进行处理,获得处理后的数据;其中,所述处理后的数据包括有效数据和无效数据;将所述有效数据存储至所述接收端缓存;相应的,数据同步电路703,还用于:将所述发送端缓存的空闲存储单元中的数据都设置为所述无效数据;地址分配电路702,具体用于:将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据及所述无效数据。
进一步可选的,所述接收端缓存的容量等于对来自所述入口总线的待发送数据进行处理后,能够获得的有效数据的数据量的最大值。
可选的,处理电路704,具体用于:接收来自入口总线的待发送数据包;对所述待发送数据包进行打包处理,获得打包后的数据;
相应的,所述有效数据包括所述待发送数据包、打包获得的包头及包尾;所述无效数据包括填充数据。
进一步可选的,所述发送端缓存包括第一发送端缓存、第二发送端缓存和第三发送端缓存;其中,所述第一发送端缓存用于存储所述待发送数据包;所述第二发送端缓存用于存储所述包头中与所述待发送数据包相关的部分数据;所述第三发送端缓存用于存储所述包尾中与所述待发送数据包相关的部分数据;所述第二发送端缓存及所述第三发送端缓存的存储单元的大小小于所述第一发送端缓存的存储单元的大小;
相应的,数据同步电路703,具体用于:根据所述映射地址,将待发送数据包中处于所述地址范围内的数据同步至所述第一发送端缓存,将包头中处于所述地址范围内的数据同步至所述第二发送端缓存,将包尾中处于所述地址范围内的数据同步至所述第三发送端缓存。
本实施例的芯片,可以用于执行芯片转发数据的方法实施例二、或实施例三、或实施例四的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种芯片转发数据的方法,用于将接收端缓存中的数据同步到发送端缓存中,其特征在于,所述方法包括:
确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;
将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据,并根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;
将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取自1开始的连续正整数;
当发送端缓存中再次空闲出M个存储单元,则将所述待修正地址减去M×L,得到修正后的待修正地址,如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中,其中,L为发送端缓存的每一个存储单元的大小。
2.根据权利要求1所述的方法,其特征在于,所述确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围之前,还包括:
接收来自入口总线的待发送数据;
对所述待发送数据进行处理,获得处理后的数据;其中,所述处理后的数据包括有效数据和无效数据;
将所述有效数据存储至所述接收端缓存;
相应的,所述根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存之前,还包括:将所述发送端缓存的空闲存储单元中的数据都设置为所述无效数据;
所述将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,包括:
将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据及所述无效数据。
3.根据权利要求2所述的方法,其特征在于,所述接收端缓存的容量等于对来自所述入口总线的待发送数据进行处理后,能够获得的有效数据的数据量的最大值。
4.根据权利要求2或3所述的方法,其特征在于,所述接收来自入口总线的待发送数据,包括:接收来自入口总线的待发送数据包;
相应的,所述处理为打包处理,所述有效数据包括所述待发送数据包、打包获得的包头及包尾;所述无效数据包括填充数据。
5.根据权利要求4所述的方法,其特征在于,所述发送端缓存包括第一发送端缓存、第二发送端缓存和第三发送端缓存;
其中,所述第一发送端缓存用于存储所述待发送数据包;所述第二发送端缓存用于存储所述包头中与所述待发送数据包相关的部分数据;所述第三发送端缓存用于存储所述包尾中与所述待发送数据包相关的部分数据;所述第二发送端缓存及所述第三发送端缓存的存储单元的大小小于所述第一发送端缓存的存储单元的大小;
相应的,根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存,包括:
根据所述映射地址,将待发送数据包中处于所述地址范围内的数据同步至所述第一发送端缓存,将包头中处于所述地址范围内的数据同步至所述第二发送端缓存,将包尾中处于所述地址范围内的数据同步至所述第三发送端缓存。
6.一种芯片,用于将接收端缓存中的数据同步到发送端缓存中,其特征在于,包括:
确定电路,用于确定发送端缓存的空闲存储单元,以及当前时刻中能够写入发送端缓存的数据在接收端缓存中的地址范围;
地址分配电路,用于将发送端缓存的空闲存储单元的映射地址,分配给处于所述地址范围内的数据;
数据同步电路,用于根据所述映射地址将处于所述地址范围内的数据同步至发送端缓存;
所述地址分配电路,还用于将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据,其中,所述待修正地址的值等于address_max+n,address_max为所述发送端缓存的最高位地址,n依次取自1开始的连续正整数;
所述地址分配电路,还用于当发送端缓存中再次空闲出M个存储单元,则将所述待修正地址减去M×L,得到修正后的待修正地址;其中,L为发送端缓存的每一个存储单元的大小;
所述数据同步电路,还用于:如果修正后的待修正地址处于所述发送端缓存的空闲存储单元的地址范围之内,则根据所述修正后的待修正地址将其对应的数据同步到发送端缓存中。
7.根据权利要求6所述的芯片,其特征在于,所述芯片还包括:
处理电路,用于接收来自入口总线的待发送数据;对所述待发送数据进行处理,获得处理后的数据;其中,所述处理后的数据包括有效数据和无效数据;将所述有效数据存储至所述接收端缓存;
相应的,所述数据同步电路,还用于:将所述发送端缓存的空闲存储单元中的数据都设置为所述无效数据;
所述地址分配电路,具体用于:将待修正地址分配给接收端缓存中的、处于所述地址范围之外的数据及所述无效数据。
8.根据权利要求7所述的芯片,其特征在于,所述接收端缓存的容量等于对来自所述入口总线的待发送数据进行处理后,能够获得的有效数据的数据量的最大值。
9.根据权利要求7或8所述的芯片,其特征在于,所述处理电路,具体用于:接收来自入口总线的待发送数据包;对所述待发送数据包进行打包处理,获得打包后的数据;
相应的,所述有效数据包括所述待发送数据包、打包获得的包头及包尾;所述无效数据包括填充数据。
10.根据权利要求9所述的芯片,其特征在于,所述发送端缓存包括第一发送端缓存、第二发送端缓存和第三发送端缓存;
其中,所述第一发送端缓存用于存储所述待发送数据包;所述第二发送端缓存用于存储所述包头中与所述待发送数据包相关的部分数据;所述第三发送端缓存用于存储所述包尾中与所述待发送数据包相关的部分数据;所述第二发送端缓存及所述第三发送端缓存的存储单元的大小小于所述第一发送端缓存的存储单元的大小;
相应的,所述数据同步电路,具体用于:根据所述映射地址,将待发送数据包中处于所述地址范围内的数据同步至所述第一发送端缓存,将包头中处于所述地址范围内的数据同步至所述第二发送端缓存,将包尾中处于所述地址范围内的数据同步至所述第三发送端缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510041260.8A CN104580009B (zh) | 2015-01-28 | 2015-01-28 | 芯片转发数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510041260.8A CN104580009B (zh) | 2015-01-28 | 2015-01-28 | 芯片转发数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104580009A CN104580009A (zh) | 2015-04-29 |
CN104580009B true CN104580009B (zh) | 2018-08-21 |
Family
ID=53095230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510041260.8A Active CN104580009B (zh) | 2015-01-28 | 2015-01-28 | 芯片转发数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104580009B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112118195B (zh) * | 2020-03-31 | 2022-10-28 | 潍柴动力股份有限公司 | 数据打包方法及装置、存储介质和处理器 |
CN114338598B (zh) * | 2021-11-26 | 2024-01-23 | 北京中科晶上科技股份有限公司 | 5g信道资源映射的方法、装置与计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901199A (zh) * | 2010-07-30 | 2010-12-01 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
EP2595020A1 (en) * | 2011-03-15 | 2013-05-22 | OMRON Corporation, a corporation of Japan | Cpu of plc, system program for plc, and recording medium storing system program for plc |
CN103645969A (zh) * | 2013-12-13 | 2014-03-19 | 华为技术有限公司 | 数据复制方法及数据存储系统 |
CN104243098A (zh) * | 2014-09-23 | 2014-12-24 | 中国人民解放军理工大学 | 一种基于并行批次网络编码的传输方法 |
-
2015
- 2015-01-28 CN CN201510041260.8A patent/CN104580009B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101901199A (zh) * | 2010-07-30 | 2010-12-01 | 中兴通讯股份有限公司 | 一种数据透明传输的方法及系统 |
EP2595020A1 (en) * | 2011-03-15 | 2013-05-22 | OMRON Corporation, a corporation of Japan | Cpu of plc, system program for plc, and recording medium storing system program for plc |
CN103645969A (zh) * | 2013-12-13 | 2014-03-19 | 华为技术有限公司 | 数据复制方法及数据存储系统 |
CN104243098A (zh) * | 2014-09-23 | 2014-12-24 | 中国人民解放军理工大学 | 一种基于并行批次网络编码的传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104580009A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101515841B (zh) | 一种基于RapidIO协议的数据包传输的方法、设备和系统 | |
CN102761489B (zh) | 基于流水线模式的数据包零拷贝的核间通信方法 | |
CN102377682B (zh) | 基于定长单元存储变长分组的队列管理方法及设备 | |
CN101594299B (zh) | 基于链表的交换网络中队列缓冲管理方法 | |
CN106537858B (zh) | 一种队列管理的方法和装置 | |
CN109240617A (zh) | 分布式存储系统写请求处理方法、装置、设备及存储介质 | |
CN104065588B (zh) | 一种数据包调度和缓存的装置及方法 | |
CN102023961A (zh) | 一种基于共享内存的通信方法及装置 | |
CN103986473A (zh) | 用于基于误差保护包的帧的接收器 | |
CN104580009B (zh) | 芯片转发数据的方法及装置 | |
CN104346404B (zh) | 一种访问数据的方法、设备及系统 | |
CN104135496B (zh) | 一种同构环境下的rpc数据传输方法及系统 | |
CN104536816A (zh) | 提高虚拟机迁移效率的方法 | |
CN106406764A (zh) | 一种分布式san块存储的高效能数据访问系统及方法 | |
CN105656807A (zh) | 一种网络芯片多通道数据传输方法及传输装置 | |
CN104965793B (zh) | 一种云存储数据节点装置 | |
CN109902059A (zh) | 一种cpu与gpu之间的数据传输方法 | |
CN101848150B (zh) | 维护多播计数器的计数值的方法及装置 | |
CN101964751B (zh) | 数据包的传输方法及装置 | |
CN102457387B (zh) | 多播封包的接收方法 | |
CN102299861B (zh) | 一种报文流量控制方法 | |
CN101656586B (zh) | 提高同步数字体系虚级联延时补偿缓存效率的方法及装置 | |
CN101883046A (zh) | 一种应用于epon终端系统的数据缓存架构 | |
CN102164095B (zh) | 一种星上交换模块的数据报分段与重组系统及实现方法 | |
CN104468417B (zh) | 一种堆叠交换机报文传输方法、系统及堆叠交换机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |