1.本发明涉及通信技术领域,具体涉及一种基于片上网络的广播传输电路。
背景技术:
2.在片上系统(system on chip,soc)中采用片上网络(network-on-chip,noc)实现子系统之间的通信。具体的,在noc架构中,包括多个子系统(即计算核),
所述子系统通过广播路由器(broadcast router,br)互联,子系统将
数据以数据包的形式路由到目标子系统。
3.由于基于片上网络noc的片上系统soc能够较好地满足高带宽、低延迟的数据传输需求,因此noc是片上系统soc的最佳互联机制,但是在复杂的noc网络拓扑结构设计中,当采用广播路由器(broadcast router,br)多播时,经常会出现资源竞争而导致挂死的现象。
4.综上所述,在广播路由器br多播时,如何解决由于资源竞争而导致挂死现象是目前需要解决的问题。
技术实现要素:
5.有鉴于此,本发明实施例提供了一种基于片上网络的广播传输电路,可以避免广播路由器多播时出现挂死现象,实现广播的有序传输。
6.第一方面,本发明实施例提供了一种基于片上网络的广播传输电路,该电路包括:控制电路以及广播路由器,其中,所述控制电路包括
方向缓存区和控制模块;
7.所述广播路由器包括接收数据端口、分发模块、数据先进先出队列、第二仲裁器、以及传输数据端口;
8.所述接收数据端口与所述方向缓存区连接,所述控制模块与所述第二仲裁器连接;
9.所述方向缓存区用于存储广播数据的方向信息;所述控制模块用于根据所述方向缓存区存储的方向信息,生成
通道切换指令,所述通道切换指令用于控制所述广播路由器中所述第二仲裁器的通道,使所述方向信息对应的第二仲裁器调度所述数据先进先出队列中缓存的所述广播数据,每个所述数据先进先出队列对应一个通道;
10.所述接收数据端口用于接收所述广播数据;所述分发模块用于将所述接收到的所述广播数据分发到对应的数据先进先出队列;所述第二仲裁器用于接收所述控制模块发送的通道切换指令,以及根据所述通道切换指令调度所述数据先进先出队列中缓存的所述广播数据;每个所述传输数据端口用于输出所述广播数据。
11.可选的,所述方向缓存区为n个广播先进先出队列,所述控制模块包括第一仲裁器以及广播控制器;
12.所述广播路由器接收数据端口、分发模块、第二仲裁器、以及传输数据端口为n个,所述数据先进先出队列为n*m个;
13.所述n个接收数据端口分别与所述n个广播先进先出队列连接,所述广播控制器与所述n个第二仲裁器连接;
14.每个所述广播先进先出队列用于存储其对应的接收数据端口接收的广播数据的方向信息;所述第一仲裁器用于调度所述n个广播先进先出队列中缓存的方向信息;所述广播控制器用于根据所述第一仲裁器调度的方向信息,生成所述通道切换指令,使所述第一仲裁器调度的方向信息对应的每个第二仲裁器,调度其对应的m个数据先进先出队列中缓存的所述广播数据。
15.可选的,所述n为大于等于3的正整数,所述m为大于等于2的正整数。
16.可选的,所述方向信息存储在所述广播数据的数据包包头中,所述方向信息用于表示输出所述广播信息的传输数据端口的端口号。
17.可选的,每个所述广播先进先出队列的位宽大于或等于所述方向信息的比特数。
18.可选的,所述第二仲裁器还用于发送非广播数据。
19.可选的,响应于所述第二仲裁器接收到所述控制模块发送的通道切换指令,所述第二仲裁器用于,调度所述通道切换指令指示的广播通道对应的所述广播数据;
20.响应于所述数据先进先出队列中存储的数据为广播数据时,所述第二仲裁器确定所述数据先进先出队列对应的通道为广播通道。
21.可选的,响应于所述第二仲裁器的通道中的非广播通道,所述第二仲裁器还用于,在调度所述通道切换指令指示的广播通道对应的所述广播数据之前,调度所述非广播通道对应的非广播数据;
22.响应于所述数据先进先出队列中存储的数据为非广播数据时,所述第二仲裁器确定所述数据先进先出队列对应的通道为非广播通道。
23.可选的,所述非广播数据和所述广播数据分别携带对应的标志位,所述第二仲裁器根据所述标志位确定数据的类型,所述类型包括广播数据和非广播数据。
24.可选的,所述第二仲裁器还用于发送广播数据第一传输完成信息至所述广播控制器,所述第一传输完成信息用于表示所述第二仲裁器对应的通道完成传输所述广播数据。
25.可选的,所述广播控制器还用于发送第二传输完成信息至所述第一仲裁器,所述第二传输完成信息用于表示传输所述广播数据的全部通道完成传输。
26.可选的,响应于所述第一仲裁器接收到所述第二传输完成信息,所述第一仲裁器用于调度下一个新的广播数据。
27.第二方面,本发明实施例提供了一种集成电路,所述集成电路包括多个核、片上网络以及如第一方面或第一方面任一种可能中任一项所述的基于片上网络的广播传输电路。
28.第三方面,本发明实施例提供了一种基于片上网络的广播传输方法,该方法包括:调度方向缓存区中存储的方向信息,以确定目标方向信息;其中,响应于接收到的广播数据,将所述广播数据的方向信息写入所述方向缓存区;向所述目标方向信息对应的第二仲裁器发送通道切换指令;根据所述通道切换指令,控制所述目标方向信息对应的第二仲裁器的通道,使所述目标方向信息对应的第二仲裁器调度所述目标方向信息对应的广播数据。
29.第四方面,本发明实施例提供了一种板卡,所述板卡上包括所述第二方面的集成电路。
30.第五方面,本发明实施例提供了一种服务器,所述服务器上包括所述第四方面的板卡。
31.本发明实施例通过控制电路以及广播路由器,控制电路以及广播路由器,其中,所述控制电路包括方向缓存区和控制模块;所述广播路由器包括接收数据端口、分发模块、数据先进先出队列、第二仲裁器、以及传输数据端口;所述接收数据端口与所述方向缓存区连接,所述控制模块与所述第二仲裁器连接;所述方向缓存区用于存储广播数据的方向信息;所述控制模块用于根据所述方向缓存区存储的方向信息,生成通道切换指令,所述通道切换指令用于控制所述广播路由器中所述第二仲裁器的通道,使所述方向信息对应的第二仲裁器调度所述数据先进先出队列中缓存的所述广播数据,每个所述数据先进先出队列对应一个通道;所述接收数据端口用于接收所述广播数据;所述分发模块用于将所述接收到的所述广播数据分发到对应的数据先进先出队列;所述第二仲裁器用于接收所述控制模块发送的通道切换指令,以及根据所述通道切换指令调度所述数据先进先出队列中缓存的所述广播数据;每个所述传输数据端口用于输出所述广播数据。通过上述电路,可以避免广播路由器多播时出现挂死现象,实现广播的有序传输。
附图说明
32.通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
33.图1是现有技术中一种广播传输电路示意图;
34.图2是现有技术中一种br的内部电路结构示意图;
35.图3是现有技术中一种信号示意图;
36.图4是现有技术中一种数据传输时br的内部电路结构示意图;
37.图5是本发明实施例的一种基于片上网络的广播传输电路示意图;
38.图6是本发明实施例的一种基于片上网络的广播传输方法流程图;
39.图7是本发明实施例的一种基于片上网络的广播传输方法流程图;
40.图8是本发明实施例的一种基于片上网络的广播传输方法流程图;
41.图9是本发明实施例的一种广播传输的方法流程图。
具体实施方式
42.以下基于实施例对本发明公开进行描述,但是本发明公开并不仅仅限于这些实施例。在下文对本发明公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明公开。为了避免混淆本发明公开的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
43.此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
44.除非上下文明确要求,否则整个申请文件中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
45.在本发明公开的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明公开的描述中,除非另有说明,“多个”的含义是两个或两个以上。
46.在片上系统soc中采用片上网络noc实现子系统之间的通信。具体的,所述片上系
统soc包括多个分块(bank),每个分块(bank)包括多个计算核,如图1所示,以每个bank包括8个计算核为例,分别为计算核core0、core1、core2、core3、core4、core5、core6、和core7;所述每个bank还包括两个最后一级寄存器(last level buffer,llb),分别为llb0和llb1;每个llb中分别包括两个读写口s0和s1,所述每个bank还包括6个广播路由器(broadcast router,br),分别为br0、br1、br2、br3、br4、和br5;所述每个bank还包括两个多播站(broadcasting station,bs),分别为bs0和bs1;6个所述br组成路由网络,为计算核与计算核之间,以及计算核与llb之间的数据传输提供路由路径,所述bs用于控制将数据多播至所述多个核中的哪几个核;所述bank中还包括两个异步桥(async bridge),所述异步桥用于与其他bank进行跨异步时钟域数据连接。
47.通常在现有技术中,当有多个计算核需要共享数据时,首先由主核发送读数据请求给llb,所述读数据请求中包含coremap[7:0]域段,所述coremap[7:0]域段用于指示8个core中哪些core需要共享数据,其中,coremap[0]至coremap[7]对应于core0至core7,具体的,举例说明,例如coremap[7:0]用二进制数表示方法表示为8’b11001100,表示core2、core3、core6和core7需要共享数据,即每个core分别对应与二进制数中的一位;所述coremap[7:0]也可以采用十六进制数表示方法表示为8’h。上述实施例中,主核可以根据预先设定的规则确定,例如,主核可以约定为多个共享数据的计算核中编号最小的一个核,例如,core1、core3、core4、和core5需要共享数据,则根据预设规则可确定core1为主核;主核可以为多个共享数据的计算核中编号最大的一个核,例如,core2、core5、core6、和core8需要共享数据,则据预设规则可确定core8为主核。
[0048]
所述llb收到所述读数据请求后返回读数据,读数据通过noc传输通路将所述读数据多播到需共享数据的核内。例如:core2、core3、core6、和core7需要共享llb返回的读数据,从llb0中读出的数据首先经过bs0传输至br0,其中bs0用于控制将所述读数据多播至需共享该读数据的core2、core3、core6、和core7;然后br0将所述读数据经过路由传播至br2,br2将所述读数据多播给core2和core3;同时,由于core6和core7也需要共享所述读数据,br0也会将所述读数据多播至br1,继而再经过br3路由到达br5,然后br5将所述读数据多播给core6和core7。
[0049]
根据上述示例可知,br可以多播所述读数据,原因在于br的内部电路结构,所述br的内部电路结构,如图2所示,br的每个方向都可以接收数据和发送数据,接收数据的端口用rx表示,每个br可从四个方向接收数据,即每个br包括四个rx,分别为rx0、rx1、rx2和rx3;发送数据的端口用tx表示,每个br可往四个方向发送数据,即每个br包括四个tx,分别为tx0、tx1、tx2和tx3。其中,每个方向的rx对应设有一个分发模块(splitter),用于将该方向接收的数据发送至其他三个方向的tx,则所述br还包括4个splitter,分别为splitter0、splitter1、splitter2和splitter3。每个方向的tx对应设有一个仲裁器(arbiter),用于仲裁其他三个方向发送过来的数据,则所述br还包括4个arbiter,分别为arbiter0、arbiter1、arbiter2和arbiter3。以及,每个方向的tx可接收三个方向的数据,每个方向接收的数据对应设有一个缓冲器(buffer),该buffer为先进先出队列(first input first output,fifo),则所述br还包括12个fifo,其中,每个方向的tx设有3个fifo,分别用于缓存来自其他三个方向的数据,以及每个fifo与该方向arbiter之间的连接构成一个通道。具体的,所述读数据进入br后的传输过程为:首先经过splitter分发模块,可以根据最短路径的
路由原则将所述读数据分发到目标方向的fifo,需要路由到同一tx方向的数据在tx侧汇聚,即该目标方向的三个fifo分别汇聚了三个方向的rx的数据,每个fifo中数据的rx方向一致且tx方向一致;汇聚后的数据由该目标方向的arbiter对其三个fifo中的数据进行调度,调度后送至tx端口输出。
[0050]
具体的,burst粒度是指数据的传输单位,即传输的数据结构包含头指示信号(head)和尾指示信号(tail),head用于指示一个完整的burst数据的传输开始,tail用于指示一个完整的burst数据的传输结束;在head和tail之间会有多拍数据传输,且最大传输的数据长度为1kb。例如,完整的一个burst数据的大小是1kb,假设数据先进先出队列可以存储8个数据,一个数据的大小为16b(128比特),则其存储的数据大小远远小于1kb,进而无法将完整的一个burst数据全部缓存到数据先进先出队列后再调度,只能按照数据流的顺序进行数据传输,即将一个burst数据按照数据先进先出队列可存储的数据大小分开依次写入该队列。所述数据先进先出队列也可以设置为存储其他数量的数据,但在广播路由器应用场景中,数量不可以太大,因为太大会浪费资源。arbiter调度以burst数据为粒度,也就是说当arbiter仲裁一个通道开始传输数据后,必须等到该通道上的一个burst数据全部传输完成后才能仲裁切换至其他通道传输数据。在上述以burst粒度为单位进行数据传输时,时钟信号(clock)、有效信号(valid)、准备信号(ready)、头指示信号(head)、尾指示信号(tail)以及数据的信号示意图,如图3所示,当有效(valid)信号、准备信号(ready)以及头指示信号(head)同时为高时,开始发送数据,当有效信号(valid)、准备信号(ready)以及头指示信号(head)同时为低时,结束发送数据,其中,所述有效信号(valid)拉高,表示有数据需要发出,准备信号(ready)拉高,表示下游准备好接收数据。
[0051]
当br支持多播,并且支持数据以burst粒度进行传输时,会存在头阻塞(head-of-line blocking)问题,从而导致总线挂死。具体的,如图4所示,br中rx0对应splitter0,splitter0可以将接收到的数据发送至tx1、tx2和tx3方向,即splitter0将接收到的数据缓存在tx1的通道0所对应的数据先进先出队列fifo中,splitter0将接收到的数据缓存在tx2的通道0所对应的数据先进先出队列fifo中,splitter0将接收到的数据缓存在tx3的通道0所对应的数据先进先出队列fifo中;其他不再赘述,以图4为准。
[0052]
示例性的,当rx0接收一个需要多播传输的广播数据(broadcast)即broadcast 1,broadcast1的多播方向为tx1和tx3;同时,rx2接收一个需要多播传输的broadcast2,broadcast2的多播方向也为tx1和tx3。若arbiter1正在仲裁传输broadcast1在tx1方向的数据,arbiter3正在仲裁传输broadcast2在tx3方向的数据,即在tx1方向对broadcast1进行传输,在tx3方向对broadcast2进行传输。tx1方向上的broadcast2在tx1方向上的broadcast1传输完成之前无法得到仲裁,从而会一直拥堵在arbiter1的通道2对应的fifo中;tx3方向上的broadcast1在tx3方向上的broadcast2传输完成之前也无法得到仲裁,从而会一直拥堵在arbiter3的通道0对应的fifo中。如果两个broadcast传输的burst数据长度较长,超过数据fifo的深度,则会导致因为数据fifo资源不够,逐级向前反压至rx,即rx0和rx2都无法接收新的数据,进而导致两个broadcast的burst数据传输都无法完成,造成noc总线挂死。因此,如何避免广播路由器多播时出现挂死现象,实现广播的有序传输,是需要解决的问题。
[0053]
本发明实施例中,提出了一种基于片上网络的广播传输电路,通过控制电路解决
广播路由器多播时出现的挂死现象。
[0054]
本发明实施例中,图5是本发明实施例的一种基于片上网络的广播传输电路示意图,所述一种基于片上网络的广播传输电路包括控制电路501以及广播路由器502,其中,所述控制电路包括方向缓存区和控制模块;所述广播路由器包括接收数据端口5021、分发模块5022、数据先进先出队列5023、第二仲裁器5024、以及传输数据端口5025。所述接收数据端口5021与方向缓存区连接,则在所述接收数据端口5021接收到多播数据时,该多播数据的方向信息会同步写入方向缓存区,以及所述分发模块5022用于将所述接收到的所述广播数据分发到对应的数据先进先出队列。所述控制模块与所述第二仲裁器5024连接,则所述控制模块根据所述方向缓存区存储的方向信息,生成通道切换指令,所述通道切换指令用于控制所述广播路由器中所述第二仲裁器的通道,其中第二仲裁器的每个所述数据先进先出队列对应一个通道;所述第二仲裁器接收所述控制模块发送的通道切换指令,则根据所述通道切换指令调度所述数据先进先出队列中缓存的所述广播数据;每个所述传输数据端口用于输出所述广播数据。
[0055]
本发明实施例中,由于设计了控制电路,所述广播路由器在控制电路的控制下只能一次传输一个广播,不会同时传输两个广播,因此,不会出现现有技术中总线挂死的现象,保障广播的有序传播。
[0056]
在一种可能的实现方式中,所述方向缓存区为n个广播先进先出队列5011;所述控制模块包括第一仲裁器5012以及广播控制器5013。
[0057]
在一种可能的实现方式中,所述接收数据端口、分发模块、第二仲裁器、以及传输数据端口为n个,所述数据先进先出队列为n*m个,其中,n和m为正整数,m表示每个传输数据端口对应设置的数据先进先出队列的个数。所述n个接收数据端口5021分别与所述n个广播先进先出队列5011连接,所述广播控制器5013与所述n个第二仲裁器5024连接。通过该实现方式,由于n个广播先进先出队列5011与n个接收数据端口具有一一对应关系,即每个广播先进先出队列分别存储其对应的接收数据端口的广播数据的方向信息,便于第一仲裁器对各个接收数据端口的广播数据的方向信息进行调度。
[0058]
在一种可能的实现方式中,所述方向缓存区用于存储广播数据的方向信息;所述控制模块用于根据所述方向缓存区存储的方向信息,生成通道切换指令,所述通道切换指令用于控制所述广播路由器中所述第二仲裁器的通道,使所述方向信息对应的第二仲裁器调度所述数据先进先出队列中缓存的所述广播数据,每个所述数据先进先出队列对应一个通道。
[0059]
具体如图5所示,以rx0为例,rx0对应设有一个分发模块splitter0,用于将该方向接收的数据发送至其他三个方向的tx1、tx2和tx3;每个方向的tx可接收三个方向的数据,以tx0为例,tx0可接收rx1、rx2和rx3的数据,每个方向的数据对应设有一个数据fifo,即tx0设有3个fifo,分别用于缓存来自rx1、rx2和rx3三个方向的数据,以及每个fifo与该方向arbiter之间的连接构成一个通道。
[0060]
在一种可能的实现方式中,所述n为大于等于3的正整数,所述m为大于等于2的正整数。具体的,由于br用于实现多播,则至少有一个输入rx和两个输出tx,而每个tx的同方向上也对对应一个rx,每个rx的同方向上也会对应一个tx,因此最少需要3个tx和3个rx,进而与rx连接的广播fifo最少也需要三组;由于多播最少两个方向传播,因此广播路由器中,
每个第二仲裁器连接的数据fifo最少为2组。
[0061]
在一种可能的实现方式中,所述方向信息存储在所述广播数据的数据包包头中,即所述方向信息存储在所述广播数据的head指示信号中,所述方向信息用于表示输出所述广播信息的传输数据端口的端口号,假设所述方向信息采用二进制数表示,若rx0接收到一个broadcast需要发送到tx1和tx3,则所述broadcast的数据包包头中的方向信息可以表示为4’b0101,所述二进制数与tx0至tx3对应,即所述二进制数为1表示需要传输至对应的tx,所述二进制数为0表示不需要传输至对应的tx,此处,1和0表示的意义不固定,本发明实施例对其不做限定。
[0062]
在一种可能的实现方式中,每个所述广播先进先出队列的位宽大于或等于所述方向信息的比特数,则所述广播先进先出队列的每个内存地址可缓存一个广播数据的方向信息,进而第一仲裁器读取一次所述广播先进先出队列中的数据,即可确定该数据对应的广播数据的方向信息。例如,所述方向信息的比特数为4,则所述广播先进先出队列的位宽大于或等于4。
[0063]
在一种可能的实现方式中,所述第一仲裁器用于调度所述n个广播先进先出队列中缓存的方向信息。举例说明,假设rx0和rx2都接收到广播数据,其中,rx0接收到broadcast1,rx2接收到broadcast2,rx0将broadcast1包头中的方向信息存储到rx0对应的广播先进先出队列中,rx2将broadcast2包头中的方向信息存储到rx2对应的广播先进先出队列中,第一仲裁器对存储到rx0对应的广播先进先出队列中的方向信息以及对存储到rx2对应的广播先进先出队列中的方向信息进行轮询调度,一次只能调度一个广播先进先出队列中的方向信息,其中,所述轮询调度是指根据设定规则进行查询并调度,该设定规则可以为数据存储时间的顺序、数据量的顺序或者广播先进先出队列的排序等。例如,第一仲裁器先调度rx0对应的广播先进先出队列中的方向信息,调度完成后,再调度存储到rx2对应的广播先进先出队列中的方向信息,这个过程可以称为轮询调度。
[0064]
在一种可能的实现方式中,所述第一仲裁器获取到方向信息后,发送至广播控制器,所述广播控制器用于根据所述第一仲裁器调度的方向信息,生成所述通道切换指令,使所述第一仲裁器调度的方向信息对应的每个第二仲裁器,调度其对应的m个数据先进先出队列中缓存的所述广播数据。
[0065]
在一种可能的实现方式中,所述第二仲裁器还用于发送非广播数据,所述非广播数据为对应传输数据端口只有一个的数据,即只需要通过一个传输数据端口将该数据输出。具体的,所述方向信息所对应的第二仲裁器接收到所述广播控制器发送的通道切换指令后,所述第二仲裁器继续轮询操作,当轮询传输非广播通道的非广播数据时,先传输所述非广播数据;当轮询至所述通道切换指令指示的广播通道时传输所述广播数据。
[0066]
响应于所述数据先进先出队列中存储的数据为非广播数据时,所述第二仲裁器确定所述数据先进先出队列对应的通道为非广播通道;响应于所述数据先进先出队列中存储的数据为广播数据时,所述第二仲裁器确定所述数据先进先出队列对应的通道为广播通道;其中,所述非广播数据和所述广播数据分别携带对应的标志位,所述第二仲裁器根据所述标志位确定数据的类型。
[0067]
本发明实施例中,由于数据fifo存储的数据有限,而广播数据和并广播数据的长度较长,因此一般不会出现数据fifo中既存储广播数据又存储广播数据的情况。
[0068]
可选的,所述非广播数据和所述广播数据额外的还携带有效位,所述数据先进先出队列中前两位比特存储的为标志位和有效位,图5中,一个数据fifo空格中可以存储128比特的数据(称为fifo位宽),所述数据fifo可以包括多个格(称为fifo深度)。
[0069]
在一种可能的实现方式中,响应于所述第二仲裁器轮询到广播通道,但该广播通道并非所述通道切换指令中包括的广播通道,则所述第二仲裁器跳过该广播通道,继续轮询下一个通道。举例说明,假设第二仲裁器对应3个通道,其中第一通道是所述通道切换指令中指示的广播通道,第二通道是非广播通道,第三通道是广播通道,但是所述第三通道并非所述通道切换指令中指示的广播通道;假设切换到第一通道前,首先需要轮询第二通道和第三通道,轮询第二通道时,由于所述第二通道是非广播通道,因此需要传输所述第二通道中的非广播数据;轮询到第三通道时,由于所述第三通道是广播通道,但并非所述通道切换指令中指示的广播通道,因此,要跳过第三通道,不对所述第三通道中的数据进行处理。
[0070]
在一种可能的实现方式中,所述第二仲裁器还用于发送广播数据第一传输完成信息至所述广播控制器,所述第一传输完成信息用于表示所述第二仲裁器对应的通道完成传输所述广播数据。所述广播控制器接收到所述第一传输完成信息后,还用于发送第二传输完成信息至所述第一仲裁器,所述第二传输完成信息用于表示传输所述广播数据的全部通道完成传输。
[0071]
在一种可能的实现方式中,响应于所述第一仲裁器接收到所述第二传输完成信息,所述第一仲裁器用于调度下一个新的广播数据。
[0072]
下面通过两个具体实施例,对一种基于片上网络的广播传输方法进行详细的说明。
[0073]
具体实施例一、如图6所述,包括如下步骤:
[0074]
步骤s600、调度方向缓存区中存储的方向信息,以确定目标方向信息;其中,响应于接收到的广播数据,将所述广播数据的方向信息写入所述方向缓存区。
[0075]
可选的,所述方向缓存区中可能存储有多个广播数据的方向信息,可通过轮询的方式,对多个方向信息进行处理。该目标方向信息为当前要处理的方向信息。
[0076]
步骤s601、向所述目标方向信息对应的第二仲裁器发送通道切换指令。
[0077]
步骤s602、根据所述通道切换指令,控制所述目标方向信息对应的第二仲裁器的通道,使所述目标方向信息对应的第二仲裁器调度所述目标方向信息对应的广播数据。
[0078]
具体实施例二、如图7所述,包括如下步骤:
[0079]
步骤s700、rx接收到广播broadcast,将所述broadcast包头中的方向信息写入广播fifo。
[0080]
步骤s701、第一仲裁器调度所述广播fifo中的方向信息,将所述方向信息发送至广播控制器。
[0081]
步骤s702、所述广播控制器根据所述方向信息,向所述方向信息对应的第二仲裁器发送通道切换指令。
[0082]
其中,所述通道切换指令用于指示广播通道传输所述broadcast。
[0083]
步骤s703、所述第二仲裁器传输完当前burst数据后立即切换到所述通道切换指令所对应的广播通道;或者,所述第二仲裁器轮询完非广播通道后,切换到所述通道切换指令所对应的广播通道。
[0084]
具体的,所述步骤s703中第一种情况的具体示例如下,根据方向信息可知rx0有一个broadcast需要发送到tx1和tx3,则broadcast controller会定向发送通道切换指令给tx1对应的arbiter1以及tx3对应的arbiter3,要求所述arbiter1和所述arbiter3均切换到通道0传输broadcast数据。
[0085]
所述步骤s703中第二种情况的具体示例如下,所述第二仲裁器接收到控制信号后,不会立即切换到所述广播控制器指示的通道,而是需要继续轮询传输非broadcast数据,当轮询到要求切换的通道时,再进行broadcast传输,可以防止非broadcast数据发生饿死的情况。例如,当arbiter2被广播控制器要求切换到通道0传输broadcast数据,但是此时arbiter2正在仲裁传输通道1的非broadcast数据,并且通道3也有非broadcast数据待传输,则arbiter1会优先仲裁传输完通道1、3的数据后才会去传输仲裁通道0的broadcast数据。
[0086]
步骤s704、所述第二仲裁器发送广播数据第一传输完成信息至所述广播控制器。
[0087]
其中,所述第一传输完成信息用于表示所述第二仲裁器对应的通道完成传输所述广播数据。
[0088]
步骤s705、所述广播控制器发送第二传输完成信息至所述第一仲裁器。
[0089]
其中,所述第二传输完成信息用于表示传输所述广播数据的全部通道完成传输。
[0090]
在一种可能的实现方式中,如图8所示,在所述步骤s705之后,该方法还包括:
[0091]
步骤s706、所述第一仲裁器接收到所述第二传输完成信息,调度下一个新的广播数据对应的方向信息。
[0092]
本发明实施例中,所述步骤s706之后,再次执行步骤s700至步骤s705。
[0093]
下面通过一个具体实施例,对广播传输过程中广播路由器侧协调广播的方法进行详细的说明,具体如图9所述,包括如下步骤:
[0094]
步骤s900、广播路由器的接收数据端口接收广播。
[0095]
步骤s901、所述接收数据端口将所述广播发送至所述接收数据端口对应的分发模块。
[0096]
步骤s902、所述分发模块将所述广播的数据发送给至少两个数据先进先出队列,其中,所述至少两个数据先进先出队列分别对应不同的第二仲裁器。
[0097]
步骤s903、至少两个所述第二仲裁器接收到控制电路发送的通道切换指令。
[0098]
步骤s904、每个所述第二仲裁器轮询传输非广播通道的非广播数据,轮询至所述通道切换指令指示的广播通道时,传输所述数据先进先出队列中的广播数据。
[0099]
即,每个所述第二仲裁器优先传输其对应的通道中的非广播数据,将非广播数据传输完成后,优先传输通道切换指令对应的通道中的广播数据。
[0100]
本发明实施例中,通过增加控制电路,避免了广播数据传输时出现锁死现象,相比增加数据fifo的深度这样的方式,资源消耗较小;并且,在broadcast传输时,不参与broadcast传输的arbiter可继续传输非broadcast数据,性能损失较小。
[0101]
本发明实施例中提供了一种集成电路,所述集成电路包括多个核、片上网络以及所述的基于片上网络的广播传输电路。
[0102]
本发明实施例提供了一种板卡,所述板卡上包括所述集成电路。
[0103]
本发明实施例提供了一种服务器,所述服务器上包括所述板卡。
[0104]
如本领域技术人员将意识到的,本发明实施例的各个方面可以被实现为系统、方法或计算机程序产品。因此,本发明实施例的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本发明实施例的各个方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。
[0105]
可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、光纤、便携式光盘只读存储器(cd-rom)、光存储装置、磁存储装置或前述的任意适当的组合。在本发明实施例的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。
[0106]
计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。
[0107]
可以使用包括但不限于无线、有线、光纤电缆、rf等或前述的任意适当组合的任意合适的介质来传送实现在计算机可读介质上的程序代码。
[0108]
用于执行针对本发明实施例各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如java、smalltalk、c++等;以及常规过程编程语言如“c”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(lan)或广域网(wan)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。
[0109]
上述根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图图例和/或框图描述了本发明实施例的各个方面。将要理解的是,流程图图例和/或框图的每个块以及流程图图例和/或框图中的块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供至通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生机器,使得(经由计算机或其它可编程数据处理设备的处理器执行的)指令创建用于实现流程图和/或框图块或块中指定的功能/动作的装置。
[0110]
还可以将这些计算机程序指令存储在可以指导计算机、其它可编程数据处理设备或其它装置以特定方式运行的计算机可读介质中,使得在计算机可读介质中存储的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制品。
[0111]
计算机程序指令还可以被加载至计算机、其它可编程数据处理设备或其它装置上,以使在计算机、其它可编程设备或其它装置上执行一系列可操作步骤来产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的过程。
[0112]
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.一种基于片上网络的广播传输电路,其特征在于,该电路包括:控制电路以及广播路由器,其中,所述控制电路包括方向缓存区和控制模块;所述广播路由器包括接收数据端口、分发模块、数据先进先出队列、第二仲裁器、以及传输数据端口;所述接收数据端口与所述方向缓存区连接,所述控制模块与所述第二仲裁器连接;所述方向缓存区用于存储广播数据的方向信息;所述控制模块用于根据所述方向缓存区存储的方向信息,生成通道切换指令,所述通道切换指令用于控制所述广播路由器中所述第二仲裁器的通道,使所述方向信息对应的第二仲裁器调度所述数据先进先出队列中缓存的所述广播数据,每个所述数据先进先出队列对应一个通道;所述接收数据端口用于接收所述广播数据;所述分发模块用于将所述接收到的所述广播数据分发到对应的数据先进先出队列;所述第二仲裁器用于接收所述控制模块发送的通道切换指令,以及根据所述通道切换指令调度所述数据先进先出队列中缓存的所述广播数据;每个所述传输数据端口用于输出所述广播数据。2.如权利要求1所述的电路,其特征在于,所述方向缓存区为n个广播先进先出队列,所述控制模块包括第一仲裁器以及广播控制器;所述接收数据端口、分发模块、第二仲裁器、以及传输数据端口为n个,所述数据先进先出队列为n*m个;所述n个接收数据端口分别与所述n个广播先进先出队列连接,所述广播控制器与所述n个第二仲裁器连接;每个所述广播先进先出队列用于存储其对应的接收数据端口接收的广播数据的方向信息;所述第一仲裁器用于调度所述n个广播先进先出队列中缓存的方向信息;所述广播控制器用于根据所述第一仲裁器调度的方向信息,生成所述通道切换指令,使所述第一仲裁器调度的方向信息对应的每个第二仲裁器,调度其对应的m个数据先进先出队列中缓存的所述广播数据。3.如权利要求1所述的电路,其特征在于,所述方向信息存储在所述广播数据的数据包包头中,所述方向信息用于表示输出所述广播信息的传输数据端口的端口号。4.如权利要求1-3任一项所述的电路,其特征在于,响应于所述第二仲裁器接收到所述控制模块发送的通道切换指令,所述第二仲裁器用于,调度所述通道切换指令指示的广播通道对应的所述广播数据;响应于所述数据先进先出队列中存储的数据为广播数据时,所述第二仲裁器确定所述数据先进先出队列对应的通道为广播通道。5.如权利要求4所述的电路,其特征在于,响应于所述第二仲裁器的通道中的非广播通道,所述第二仲裁器还用于,在调度所述通道切换指令指示的广播通道对应的所述广播数据之前,调度所述非广播通道对应的非广播数据;响应于所述数据先进先出队列中存储的数据为非广播数据时,所述第二仲裁器确定所述数据先进先出队列对应的通道为非广播通道。6.如权利要求5所述的电路,其特征在于,所述非广播数据和所述广播数据分别携带对应的标志位,所述第二仲裁器根据所述标志位确定数据的类型,所述类型包括广播数据和非广播数据。
7.如权利要求2或3所述的电路,其特征在于,所述第二仲裁器还用于发送广播数据第一传输完成信息至所述广播控制器,所述第一传输完成信息用于表示所述第二仲裁器对应的通道完成传输所述广播数据。8.如权利要求7所述的电路,其特征在于,所述广播控制器还用于发送第二传输完成信息至所述第一仲裁器,所述第二传输完成信息用于表示传输所述广播数据的全部通道完成传输。9.一种集成电路,其特征在于,所述集成电路包括多个核、片上网络以及如权利要求1-8中任一项所述的基于片上网络的广播传输电路。10.一种基于片上网络的广播传输方法,其特征在于,该方法包括:调度方向缓存区中存储的方向信息,以确定目标方向信息;其中,响应于接收到的广播数据,将所述广播数据的方向信息写入所述方向缓存区;向所述目标方向信息对应的第二仲裁器发送通道切换指令;根据所述通道切换指令,控制所述目标方向信息对应的第二仲裁器的通道,使所述目标方向信息对应的第二仲裁器调度所述目标方向信息对应的广播数据。
技术总结
本发明实施例公开了一种基于片上网络的广播传输电路。本发明实施例中广播传输电路包括控制电路以及广播路由器,控制电路包括方向缓存区和控制模块;广播路由器包括接收数据端口、分发模块、数据先进先出队列、第二仲裁器、以及传输数据端口;接收数据端口与方向缓存区连接,控制模块与第二仲裁器连接;方向缓存区用于存储广播数据的方向信息;控制模块用于根据方向缓存区存储的方向信息,生成通道切换指令,通道切换指令用于控制广播路由器中第二仲裁器的通道,使方向信息对应的第二仲裁器调度数据先进先出队列中缓存的广播数据,每个数据先进先出队列对应一个通道。通过上述电路,可以避免广播路由器多播时出现挂死现象,实现广播的有序传输。播的有序传输。播的有序传输。
技术研发人员:
黄凯
受保护的技术使用者:
北京希姆计算科技有限公司
技术研发日:
2021.07.30
技术公布日:
2023/2/3