CN114095289B - 数据多播电路、方法、电子设备及计算机可读存储介质 - Google Patents
数据多播电路、方法、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114095289B CN114095289B CN202010787623.3A CN202010787623A CN114095289B CN 114095289 B CN114095289 B CN 114095289B CN 202010787623 A CN202010787623 A CN 202010787623A CN 114095289 B CN114095289 B CN 114095289B
- Authority
- CN
- China
- Prior art keywords
- multicast
- data
- processing core
- circuit
- core
- 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
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 275
- 230000004044 response Effects 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004804 winding Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast operation; Broadcast operation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本公开实施例公开了一种数据多播电路、方法以及芯片。其中该数据多播电路对应于第一处理核,包括:多播使能信号产生电路,用于根据原始多播信息和所述第一处理核的核标识产生多播使能信号;其中所述原始多播信息用于标识参与数据多播的所有处理核;收发控制电路,用于根据所述多播使能信号生成多播数据包;其中所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。上述数据多播电路通过多播使能信号产生电路以及收发控制电路,使得处理核根据多播信息接力转发多播数据,解决了现有技术中在多个处理核之间多播数据时所带来的硬件线路复杂、多播控制不灵活的技术问题。
Description
技术领域
本公开涉及处理器领域,尤其涉及一种数据多播电路、方法、电子设备及计算机可读存储介质。
背景技术
随着信息时代发展,科技的进步,人工智能到了井喷式发展阶段,信息量的剧增,数据处理量也越来越大。如何高效处理海量数据,成为科技工作者的共同目标。
同时人工智能和芯片工艺共同进步,单颗芯片上可以集成越来越多的晶体管,芯片的数据计算能力也越来越大,不同科技公司相继在单芯片上集成了多核处理器来提高硬件性能。而数据在多核之间的共享传输往往成为芯片计算能力提升的关键瓶颈。
在人工智能领域的多处理核芯片架构中,不同的神经网络模型,不同处理核往往需要共享权重或其他数据,而同样的数据共享给多个处理核成为整个芯片算力提升的关键。
在现有技术中,一般使用共享存储或者数据广播的方式实现处理核之间的数据共享。
如图1a所示为现有技术中共享存储的实现方式。如图1a所示,多个处理核连接到同一个共享存储器,每个处理核到共享存储器中读写数据,其数据的传输过程如下:core0/core1/……/coren同时到共享存储器中读取数据;共享存储器仲裁每个core的申请,返回相应的数据;core0/core1/……/coren得到数据之后完成相应计算。然而,使用上述共享存储器的方案有如下缺陷:1、由于共享存储器会串行接收不同处理核的请求,因此共享存储器的数据带宽成为瓶颈;2、每个处理核独立读写共享存储器,任务同步性较差,效率低;多处理核到存储器的物理线路拥挤复杂,影响芯片高性能生产实现。
如图1b所示为现有技术中数据广播的实现方式。如图1b所示,core0可以将数据通过NOC(Network On Chip)网络广播到其他核,其数据的传输过程如下:core0将数据发送到NOC;NOC收到数据后广播给其他核;所有核接收NOC发送的数据。然而,使用上述数据广播的方式有如下缺陷:1、这种数据广播的NOC拓扑结构设计难度大,特别是片上处理核数较多时候,会增加芯片物理绕线难度,从而降低芯片性能;2、使用场景上受到限制,现有NOC多为第三方IP,对多播支持有限,另外多组核同时多播,数据依赖性会极大增加网络死锁概率。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中的上述技术问题,本公开实施例提出如下技术方案:
第一方面,本公开实施例提供一种数据多播电路,与第一处理核对应,其特征在于,包括:
多播使能信号产生电路,用于根据原始多播信息和所述第一处理核的核标识产生多播使能信号;其中所述原始多播信息用于标识参与数据多播的所有处理核;
收发控制电路,用于根据所述多播使能信号生成多播数据包;其中所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。
进一步的,所述收发控制电路,还用于:
根据所述原始多播信息判断所述第一处理核是否为主处理核;
响应于所述第一处理核为主处理核,使所述多播使能信号有效;
响应于所述第一处理核不是主处理核,使所述多播使能信号无效。
进一步的,所述数据多播电路还包括:
起点处理核计算电路,用于根据所述原始多播信息计算所述多播数据的下一个目标处理核;
响应于所述多播使能信号有效,所述收发控制电路接收所述多播数据并将所述多播数据包发送至所述下一个目标处理核。
进一步的,所述收发控制电路,还用于:
根据所述原始多播信息和所述第一处理核的核标识生成所述第一多播信息;
根据所述第一多播信息和所述多播数据生成所述多播数据包。
进一步的,响应于所述多播使能信号无效,所述收发控制电路还用于:
接收多播数据包;
根据所述多播数据包中的第一多播信息确定是否需要转发所述多播数据;
响应于需要转发所述多播数据,根据所述第一多播信息确定下一个目标处理核;
根据所述第一多播信息和所述第一处理核的核标识生成新的第一多播信息;
根据所述多播数据和所述新的第一多播信息生成新的多播数据包;
将所述新的多播数据包转发至所述下一个目标处理核。
进一步的,所述数据多播电路还包括:
地址解码电路,用于接收下一个目标处理核的核标识以确定所述下一个目标处理核的地址。
进一步的,响应于所述多播使能信号无效,所述收发控制电路还用于:
响应于所述第一处理核为参与所述数据多播的最后一个处理核,发送传输结束信号至参与所述数据多播的所述所有处理核。
进一步的,所述数据多播电路中还包括:
终点处理核计算电路,用于根据所述原始多播信息确定参与所述数据多播的所述最后一个处理核;
多播结束信号产生电路,用于根据所述终点处理核计算电路的输出结果以及所述传输结束信号产生多播结束信号。
进一步的,所述多播使能信号产生电路包括:
处理核表示向量生成电路,用于生成所述第一处理核的核标识的表示向量;
信号生成电路,用于根据所述表示向量以及原始多播信息生成所述多播使能信号。第二方面,本公开实施例提供一种数据多播方法,其特征在于,包括:
根据原始多播信息和所述第一处理核的核标识产生多播使能信号;其中所述多播信息用于标识参与数据多播的所有处理核;
根据所述多播使能信号生成多播数据包;其中,所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。第三方面,本公开实施例提供一种芯片,包括第一方面中任一项所述的数据多播电路。
第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第一方面中的任一所述的数据多播方法。
第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第一方面中的任一所述的数据多播方法。
第六方面,本公开实施例提供一种计算机程序产品,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第一方面中的任一所述的数据多播方法。
第七方面,本公开实施例提供一种计算装置,其特征在于,包括一个或多个所述第三方面所述的芯片。
本公开实施例公开了一种数据多播电路、方法以及芯片。其中该数据多播电路对应于第一处理核,包括:多播使能信号产生电路,用于根据原始多播信息和所述第一处理核的核标识产生多播使能信号;其中所述原始多播信息用于标识参与数据多播的所有处理核;收发控制电路,用于根据所述多播使能信号生成多播数据包;其中所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。上述数据多播电路通过多播使能信号产生电路以及收发控制电路,使得处理核根据多播信息接力转发多播数据,解决了现有技术中在多个处理核之间多播数据时所带来的硬件线路复杂、多播控制不灵活的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1a和1b为本公开现有技术的示意图;
图2为本公开实施例的应用场景示意图;
图3为本公开实施例中的数据多播电路的结构示意图;
图4为本公开实施例提供多播结束信号产生电路的示意图;
图5为本公开实施例提供的数据多播方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图2为本公开实施例的应用场景示意图。如图2所示,芯片中包括n个处理核,分别为core-0到core-n,处理核使用NOC相互连接在一起,NOC通过多个集群(Cluster)实现。当处理核需要执行数据多播时,将需要多播的数据发送至NOC,通过NOC发送至下一个处理核,下一个处理核继续执行数据多播,依次转发多播数据直至参与数据多播的最后一个处理核为止。
图3为本公开实施例提供的数据多播电路的示意图。本实施例所提供的数据多播电路300与第一处理核对应,即每个处理核对应一个数据多播电路300,该数据多播电路可以设置于处理核内部,如图3所示,也可以设置在处理核外部(未示出);其中,本实施例提供的数据多播电路300包括:
多播使能信号产生电路BC_EN(broadcast enable)301,用于根据原始多播信息coremap[n:0]和所述第一处理核的核标识coreid产生多播使能信号bc_en;其中所述原始多播信息用于标识参与数据多播的所有处理核;
收发控制电路RX_ctrl302,用于根据所述多播使能信号bc_en生成多播数据包;其中所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。
在本实施例中,所述原始多播信息coremap[n:0]通过寄存器设置;上层程序通过每个处理核的多播信息寄存器来设置所述原始多播信息,以控制处理核是否参与数据多播。示例性的,设有8个处理核,包括core0~core7;上层程序确定core0需要发送数据至其他处理核,如core1~core7,则设置每个参与数据多播的处理核core0~core7的多播信息寄存器的值为0xff,即coremap[7:0]=1111_1111,即原始多播信息包括8位,每一位与一个处理核对应,其中coremap[0]与core0对应,如果coremap[0]=1,表示core0参与数据多播,如果cormap[0]=0,表示core0不参与数据多播;原始多播信息中的其他位与其他处理核的对应关系以此类推,不再赘述。处理核的多播使能信号产生电路在接收到所述原始多播信息之后,根据与所述数据多播电路所对应的第一处理核的核标识和所述原始多播信息生成多播使能信号。
可选的,所述多播使能信号产生电路还包括:
处理核表示向量生成电路3011,用于生成所述第一处理核的核标识的表示向量;
信号生成电路3012,用于根据所述表示向量以及原始多播信息生成所述多播使能信号。
示例性的,所述处理核表示向量生成电路通过移位电路实现,所述移位电路用于将数值1左移,左移的次数与第一处理核的核标识相关。示例性的,所述第一处理核为core0,其核标识为0,则将核标识作为移位电路的输入值,所述移位电路将数值1左移0位,得到所述core0的表示向量为:0000_0001。所述移位电路的输出位数等于处理核的个数,如上述示例中包括8个处理核,则移位电路所输出的表示向量包括8位,每一位由0或1表示。
示例性的,所述信号生成电路3012有多个逻辑电路实现;如图3所示,所述信号生成电路3012中包括与n个非门电路,其中n为处理核的个数;每个非门电路与移位电路的一个数据位对应,即所述移位电路的每一位输出之后通过一个非门电路取反。以上述core0的表示向量为例,每一位通过一个非门电路取反得到:1111_1110。如图3所示,所述信号生成电路3012中还包括n个与门电路,每个与门电路包括两个输入端,其中一个输入端用于接收所述原始多播信息中的一位的值,另外一个输入端与上述多个非门电路中的一个连接,用于接收非门电路的输入,即所述多个与门电路中的每一个,用于将所述非门电路的输出与原始多播信息中对应位置的值做逻辑与运算;以上述core0为例,其表示向量通过非门电路取反得到1111_1110,原始多播信息为1111_1111,则两者按位做逻辑与运算得到:1111_1110。如图3所示,所述信号生成电路3012还包括一个或门电路,所述或门电路包括n个输入端,每个输入端与上述多个与门电路一一对应,所述与门电路将n个输入端输入的值执行逻辑或运算得到输出信号,该输出信号即是所述的多播使能信号bc_en。以上述core0为例,输入所述或门电路的值为1111_1110,所述或门将1111_1110按位做或逻辑运算得到值为1,即对于core0来说,其多播使能信号bc_en=1。
对于其他处理核,计算过程与上述过程类似,以产生对应的bc_en信号,在此不再赘述。
可选的,所述收发控制电路还用于:
根据所述原始多播信息判断所述第一处理核是否为主处理核;
响应于所述第一处理核为主处理核,使所述多播使能信号有效;
响应于所述第一处理核不是主处理核,使所述多播使能信号无效。
其中,所述主处理核为所述数据多播过程中的第一个处理核,参见上述示例,其中core0为参与数据多播的第一个处理核,则core0为主处理核。如图3所示,所述原始多播信息coremap以及第一处理核的核标识coreid被输入所述收发控制电路,所述收发控制电路根据所述原始多播信息以及第一处理核的核标识判断所述第一处理核是否为主处理核。示例性的,通过所述原始多播信息中值为1的最低位来判断所述第一处理核是否为主处理核,如上述示例中,原始多播信息为1111_1111,则其值为1的最低位为coremap[0]=1,表示多个参与多播的核中,core0是主处理核。那么,当所述第一处理核的核标识为0时,则可以判断所述第一处理核即core0为主处理核;当第一处理核的核标识为1,则core1不是主处理核。
响应于所述第一处理核为主处理核,收发控制电路使所述多播使能信号有效,即所述主处理核接下来需要发送多播数据给下一个目标处理核;响应于所述第一处理核不是主处理核,使所述多播使能信号无效,即从处理核在该时刻不发送多播数据,而是等待从其他处理核接收所述多播数据。
可选的,所述数据多播电路还包括:
起点处理核计算电路303,用于根据所述原始多播信息计算所述多播数据的下一个目标处理核;
响应于所述多播使能信号有效,所述收发控制电路接收所述多播数据并将所述多播数据包发送至所述下一个目标处理核。
在该实施例中所述起点处理核计算电路用于计算数据多播过程中的第一个目标处理核,即主处理核的下一个目标处理核。可选的,通过原始多播信息从低位到高位第二个值为1的位置确定所述多播数据的下一个目标处理核;示例性的,所述原始多播信息为1111_1111,则从低位到高位第二个值为1的位置为coremap[1],则core1为所述的多播数据的下一个目标处理核,即多播数据从core0发送至core1。因为此时收发控制电路判断多播使能信号有效,则收发控制电路接收所述多播数据并将多播数据包发送至所述下一个目标处理核。
可选的,所述收发控制电路302还用于:
根据所述原始多播信息和所述第一处理核的核标识生成所述第一多播信息;
根据所述第一多播信息和所述多播数据生成所述多播数据包。
在上述步骤中,响应于所述多播使能信号有效,即当第一处理核为主核时,所述收发控制电路生成第一多播信息,所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。示例性的,如原始多播信息为1111_1111,第一处理核为该数据多播过程中的主处理核core0,则第一处理核的核标识为0,其表示向量为0000_0001,在原始多播信息中减去第一处理核的核标识对应位置的值,得到第一多播信息为1111_1110,即尚未参与多播的各个处理核为core1-core7。在生成所述第一多播信息之后,将所述第一多播信息和所述多播数据合并成多播数据包。
可选的,所述多播数据包packet[n+m:0]可以使用coremap1[n:0]_Data[m:0]来表示,其中多播数据包packet中的低m+1位为多播数据,高n+1位为所述第一多播信息。在生成所述多播数据包之后,所述收发控制电路将所述多播数据包通过片上网络(NOC)发送至所述下一个目标处理核。
可选的,响应于所述多播使能信号无效,所述收发控制电路还用于:
接收多播数据包;根据所述多播数据包中的第一多播信息确定是否需要转发所述多播数据;响应于需要转发所述多播数据,根据所述第一多播信息确定下一个目标处理核;根据所述第一多播信息和所述第一处理核的核标识生成新的第一多播信息;根据所述多播数据和所述新的第一多播信息生成新的多播数据包;将所述新的多播数据包转发至所述下一个目标处理核。
在该可选实施例中,所述多播使能信号无效,即第一处理核不是数据多播过程中的主核的情况,在该情况下,所述收发控制电路直接从其他处理核接收多播数据包;在接收到所述多播数据包之后,根据所述多播数据包中的第一多播信息确定是否需要转发所述多播数据。具体的,通过将所述第一多播信息中与所述第一处理核所对应的位置的值置0判断是否需要转发所述多播数据,示例性的,设所述第一处理核的核标识为1,即所述第一处理核为core1,其接收到的多播数据包中的第一多播信息为1111_1110,则将第一多播信息中与核标识位对应的位置的值置0,得到1111_1100,此时再将1111_1100按位执行逻辑或运算,得到结果为1,即除了所述第一处理核之后,多播数据链上还有其他处理核,因此确定需要转发所述多播数据。当需要转发所述多播数据时,根据所述第一多播信息确定下一个目标处理核。
所述第一多播信息中第一处理核位置之后第一个值为1的位置所对应的处理核为下一个目标处理核,如上例所示,第一多播信息为1111_1110,所述第一处理核的核标识为1,其后第一个值为1的位置为coremap1[2]=1,则下一个目标处理核为core2。
将所述第一多播信息中对应所述第一处理核的位置的值置为0,可以得到新的第一多播信息,如接收到的第一多播信息为1111_1110,所述第一处理核的核标识为1,则将第一多播信息中的coremap[1]置为0,得到新的第一多播信息coremap1=1111_1100。所述新的第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。
之后将所述多播数据与所述新的第一多播信息根据上述相同的方式合成多播数据包,并将所述多播数据包转发至所述下一个目标处理核。
可选的,所述数据多播电路还包括地址解码电路304,所述地址解码电路用于接收下一个目标处理核的核标识以确定所述下一个目标处理核的地址。如上所述,所述收发控制电路确定下一个目标处理核,即得到下一个目标处理核的核标识;而每一个核标识在片上网络中是唯一的,该核标识本身可以作为处理核在片上网络中的地址,或者将处理核在片上网络的地址与所述处理核的核标识进行对应,通过核标识能够查询出核标识所对应的处理核在片上网络的地址。所述地址解码电路,即通过下一目标处理核的核标识确定出下一个目标处理核在片上网络的地址,之后片上网络在得到多播数据包以及所述多播数据包的目标处理核的地址之后,将所述多播数据包发送至所述下一个目标处理核。
可选的,所述数据多播电路还包括本地数据缓冲电路以及本地数据地址存储电路,当所述第一处理核接收到所述多播数据之后,无论其是否转发所述多播数据,均将所述多播数据缓存在所述本地数据缓冲电路中,并将所述多播数据在本地的存储地址存储在所述本地数据地址存储电路中,当所述第一处理核的本地存储器空闲时,再将所述多播数据存储到本地数据地址存储电路中所指定的本地存储地址。
可选的,所述数据多播电路还包括发送数据缓冲电路以及发送数据地址存储电路,当所述第一处理核发送或转发所述多播数据包时,其首先将多播数据发送至所述发送数据缓冲电路中,所述发送数据地址存储电路用于存储所述地址解码电路所确定的下一个目标处理核的地址,当片上网络空闲时,将所述发送数据缓冲电路的多播数据包发送至所述发送数据地址存储电路所指示的地址。
可选的,响应于所述多播使能信号无效,所述收发控制电路还用于:响应于所述第一处理核为参与所述数据多播的最后一个处理核,发送传输结束信号至参与所述数据多播的所述所有处理核。在该实施例中,响应于所述多播使能信号无效,表示所述第一处理核为从处理核,此时如果所述收发控制电路确定没有下一个目标处理核,则所述第一处理核为参与所述数据多播的最后一个处理核,示例性的,当逻辑或运算的结果为0,或者所述第一多播信息中除了所述第一处理核所对应的位置之外的位置的值全是0,则表示所述第一处理核为最后一个处理核,此时所述第一处理核发送传输结束信号trans_done至参与所述数据多播的所述所有处理核。
进一步的,所述数据多播电路中还包括:
终点处理核计算电路305,用于根据所述原始多播信息确定参与所述数据多播的所述最后一个处理核;
多播结束信号产生电路306,用于根据所述终点处理核计算电路的输出结果以及所述传输结束信号产生多播结束信号。
其中,所述终点处理核计算电路305,根据所述原始多播信息确定参与所述数据多播的最后一个处理核的核标识,具体的,可以通过判断原始多播信息中最高位的1来确定最后一个处理核。示例性的,所述原始多播信息为1111_1111,则最高位的1为coremap[7]=1,则core7为数据多播中的最后一个处理核,如原始多播信息为0011_1110,则最高位的1为coremap[5]=1,则core5为数据多播中的最后一个处理核。
所述多播结束信号产生电路306,用于根据终点处理核计算电路305的计算结果以及上述传输结束信号产生所述第一处理核的多播结束信号。可选的,所述多播结束信号产生电路306由数据选择器(MUX)实现,图4为多播结束信号产生电路的一个实现方式示意图;如图4所示,所述多播结束信号产生电路与数据选择器实现,其包括多个第一输入端,以接收每个处理核的传输结束信号,如芯片中包括8个处理核,则数据选择器包括8个第一输入端;所述数据选择器还包括第二输入端,在上述示例中,其可以包括8个第二输入端,以接收终点处理核计算电路305的输出结果,所述终点处理核计算电路305的输出结果为所述最后一个处理核的核标识的表示向量,之后将所述表示向量与第一输入端的输入信号做逻辑与操作,并通过8个输出端口输出计算结果;这样只有接收到最后一个处理核所发送的传输结束信号才能产生所述多播结束信号trans_done_i。
示例性的,所述coremap[7:0]=1111_1111,终点处理核计算电路305的输出结果为1000_000,此时,只有当core7的trans_done的值为1时,数据选择器才会从编号为7的输出端口输出trans_done_7,而其他输出端口由于终点处理核计算电路305的输出结果为1000_000,输出均为0,由此当最后一个处理核发送传输结束信号之后,主核和其他处理核可以产生多播结束信号以结束数据多播过程。具体的,所述收发控制电路还用于:接收所述多播结束信号以结束所述数据多播。
图5为本公开实施例提供的数据多播方法的流程图。如图5所示,该方法用于第一处理核中,包括如下步骤:
S501,根据原始多播信息和所述第一处理核的核标识产生多播使能信号;其中所述多播信息用于标识参与数据多播的所有处理核;
S502,根据所述多播使能信号生成多播数据包;其中,所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。
进一步的,所述数据多播方法还包括:
根据所述原始多播信息判断所述第一处理核是否为主处理核;
响应于所述第一处理核为主处理核,使所述多播使能信号有效;
响应于所述第一处理核不是主处理核,使所述多播使能信号无效。
进一步的,所述数据多播方法还包括:
根据所述原始多播信息计算所述多播数据的下一个目标处理核;
响应于所述多播使能信号有效,接收所述多播数据并将所述多播数据包发送至所述下一个目标处理核。
进一步的,所述数据多播方法还包括:
根据所述原始多播信息和所述第一处理核的核标识生成所述第一多播信息;
根据所述第一多播信息和所述多播数据生成所述多播数据包。进一步的,响应于所述多播使能信号无效,所述数据多播方法还包括:
接收多播数据包;
根据所述多播数据包中的第一多播信息确定是否需要转发所述多播数据;
响应于需要转发所述多播数据,根据所述第一多播信息确定下一个目标处理核;
根据所述第一多播信息和所述第一处理核的核标识生成新的第一多播信息;
根据所述多播数据和所述新的第一多播信息生成新的多播数据包;
将所述新的多播数据包转发至所述下一个目标处理核。
进一步的,所述数据多播方法还包括:
接收下一个目标处理核的核标识以确定所述下一个目标处理核的地址。
进一步的,所述数据多播方法还包括:
响应于所述第一处理核为参与所述数据多播的最后一个处理核,发送传输结束信号至参与所述数据多播的所述所有处理核。
进一步的,所述数据多播方法还包括:
根据所述原始多播信息确定参与所述数据多播的所述最后一个处理核;
根据所述终点处理核计算电路的输出结果以及所述传输结束信号产生多播结束信号。
进一步的,所述数据多播方法还包括:
接收所述多播结束信号以结束所述数据多播。
进一步的,所述根据原始多播信息和所述第一处理核的核标识产生多播使能信号,包括:
生成所述第一处理核的核标识的表示向量;
根据所述表示向量以及原始多播信息生成所述多播使能信号。
上述数据多播方法中的步骤为上述数据多播电路所执行的步骤,其具体执行过程细节可以参见上述对所述数据多播电路的描述,在此不再赘述。
在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。
本公开实施例还提供一种芯片,所述芯片包括上述实施例中任一数据多播电路。
以下以一个实际的应用场景举例说明本公开实施例中的数据多播电路的工作过程。
芯片中包括8个处理核,分别为core0-core7,每个处理核中均包括一个如上述实施例中所述的数据多播电路。每个处理核还包括多播信息寄存器和核标识寄存器,在进行数据多播之前,通过上层程序设置所述多播信息寄存器,以保存原始多播信息coremap[n:0]。coremap[n:0]中的每一位对应一个处理核,用于标识对应的处理核是否参与数据多播,在本次数据多播过程中,配置原始多播信息coremap[7:0]=1111_1111,则芯片中的每个处理核均参与此次数据多播。
收发控制电路会接收每个处理核通过多播使能信号产生电路产生多播使能信号bc_en,还会接收所述coremap[7:0]以及核标识coreid。所述收发控制电路根据coremap和coreid判断哪一个处理核为主核。本例中,coremap[7:0]=1111_1111,其中,coremap[0]=1,表示值为1的最低位为主核,因此core0为主核,core1-core7为从核。由此,收发控制电路使core0中所产生的多播使能信号有效,而core1-core7所产生的多播使能信号无效,从主核core0开始转发多播数据,其他核接收并转发多播数据包。
主核core0中的起点处理核计算电路计算出下一个目标处理核为core1,收发控制电路生成第一多播信息coremap1[7:0]=1111_1110,并接收多播数据,将多播数据与所述第一多播信息合并生成多播数据包,并转发至下一个目标处理核core1,同时core0保存所述多播数据至本地存储器中。
core1接收到core0发送的多播数据包之后,得到所述多播数据包中的第一多播信息coremap1[7:0]=1111_1110,由此确定下一个目标处理核为core2,core1的收发控制电路将所述第一多播信息更新成新的第一多播信息coremap1[7:0]=1111_1100,并将所述多播数据与所述新的第一多播信息合并生成新的多播数据包,并转发至下一个目标处理核core2,同时core1保存所述多播数据至本地存储器中。core2-core6依次执行与core1相似的操作,依次转发所述多播数据,并将所述多播数据保存至自身的本地存储器中。
core7接收到所述多播数据包之后,确定没有下一个目标处理核,则core7产生传输结束信号给所有参与数据多播的处理核;处理核中的终点处理核计算电路计算得到最后一个处理核为core7,当接收到core7的传输结束信号之后,通过多播结束信号产生电路将终点处理核计算电路的计算结果与接收到的多播结束信号做逻辑与操作得到多播结束信号,并将该信号发送至收发控制电路以结束所述数据多播过程。
在本公开实施例中,通过数据多播电路,在多个处理核之间接力传输多播数据,降低了多核处理器芯片的片上网络设计复杂度,减少相应物理绕线;由于多播信息的设置,使得本公开的技术方案支持任意多播核组合,同时结合多播信息也可以组成多个网络组,给应用最大灵活度;在本公开中,数据多播电路在接收数据的同时并行多播数据,随着数据量和核数的增加,传输效率成倍提升;在本公开中,通过传输结束信号,减少传输的延时,进一步提升传输效率和减少网络设计依赖。
本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述的数据多播方法。
本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述的数据多播方法。
本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述的数据多播方法。
本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、任务段、或代码的一部分,该模块、任务段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
Claims (10)
1.一种数据多播电路,与第一处理核对应,其特征在于,包括:
多播使能信号产生电路,用于根据原始多播信息和所述第一处理核的核标识产生多播使能信号;其中所述原始多播信息用于标识参与数据多播的所有处理核;
收发控制电路,用于根据所述多播使能信号生成多播数据包;其中所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。
2.如权利要求1所述的数据多播电路,其特征在于,所述收发控制电路,还用于:
根据所述原始多播信息判断所述第一处理核是否为主处理核;
响应于所述第一处理核为主处理核,使所述多播使能信号有效;
响应于所述第一处理核不是主处理核,使所述多播使能信号无效。
3.如权利要求2所述的数据多播电路,其特征在于,所述数据多播电路还包括:
起点处理核计算电路,用于根据所述原始多播信息计算所述多播数据的下一个目标处理核;
响应于所述多播使能信号有效,所述收发控制电路接收所述多播数据并将所述多播数据包发送至所述下一个目标处理核。
4.如权利要求3所述的数据多播电路,其特征在于,所述收发控制电路,还用于:
根据所述原始多播信息和所述第一处理核的核标识生成所述第一多播信息;
根据所述第一多播信息和所述多播数据生成所述多播数据包。
5.如权利要求2所述的数据多播电路,其特征在于,响应于所述多播使能信号无效,所述收发控制电路还用于:
接收多播数据包;
根据所述多播数据包中的第一多播信息确定是否需要转发所述多播数据;
响应于需要转发所述多播数据,根据所述第一多播信息确定下一个目标处理核;
根据所述第一多播信息和所述第一处理核的核标识生成新的第一多播信息;
根据所述多播数据和所述新的第一多播信息生成新的多播数据包;
将所述新的多播数据包转发至所述下一个目标处理核。
6.如权利要求1-5中任一项所述的数据多播电路,其特征在于,所述数据多播电路还包括:
地址解码电路,用于接收下一个目标处理核的核标识以确定所述下一个目标处理核的地址。
7.如权利要求2所述的数据多播电路,其特征在于,响应于所述多播使能信号无效,所述收发控制电路还用于:
响应于所述第一处理核为参与所述数据多播的最后一个处理核,发送传输结束信号至参与所述数据多播的所述所有处理核。
8.如权利要求7所述的数据多播电路,其特征在于,所述数据多播电路中还包括:
终点处理核计算电路,用于根据所述原始多播信息确定参与所述数据多播的所述最后一个处理核;
多播结束信号产生电路,用于根据所述终点处理核计算电路的输出结果以及所述传输结束信号产生多播结束信号。
9.如权利要求1所述的数据多播电路,其特征在于,所述多播使能信号产生电路包括:
处理核表示向量生成电路,用于生成所述第一处理核的核标识的表示向量;
信号生成电路,用于根据所述表示向量以及原始多播信息生成所述多播使能信号。
10.一种数据多播方法,用于第一处理核中,其特征在于,包括:
根据原始多播信息和所述第一处理核的核标识产生多播使能信号;
其中所述多播信息用于标识参与数据多播的所有处理核;
根据所述多播使能信号生成多播数据包;其中,所述多播数据包中包括多播数据以及第一多播信息;其中所述第一多播信息用于标识所述所有处理核中尚未参与所述数据多播的各个处理核。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010787623.3A CN114095289B (zh) | 2020-08-07 | 2020-08-07 | 数据多播电路、方法、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010787623.3A CN114095289B (zh) | 2020-08-07 | 2020-08-07 | 数据多播电路、方法、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114095289A CN114095289A (zh) | 2022-02-25 |
CN114095289B true CN114095289B (zh) | 2023-05-12 |
Family
ID=80295286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010787623.3A Active CN114095289B (zh) | 2020-08-07 | 2020-08-07 | 数据多播电路、方法、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114095289B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254254A (zh) * | 2016-09-19 | 2016-12-21 | 复旦大学 | 一种基于Mesh拓扑结构的片上网络通信方法 |
CN107005492A (zh) * | 2014-12-17 | 2017-08-01 | 英特尔公司 | 用于芯片上网络上的多播和缩减通信的*** |
CN109408257A (zh) * | 2018-11-09 | 2019-03-01 | 北京灵汐科技有限公司 | 用于片上网络noc的数据传输方法、装置及电子设备 |
US10608640B1 (en) * | 2019-05-10 | 2020-03-31 | Achronix Semiconductor Corporation | On-chip network in programmable integrated circuit |
CN111382114A (zh) * | 2018-12-28 | 2020-07-07 | 北京灵汐科技有限公司 | 一种用于片上网络的数据传输方法、装置及电子设备 |
CN111382115A (zh) * | 2018-12-28 | 2020-07-07 | 北京灵汐科技有限公司 | 一种用于片上网络的路径创建方法、装置及电子设备 |
-
2020
- 2020-08-07 CN CN202010787623.3A patent/CN114095289B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107005492A (zh) * | 2014-12-17 | 2017-08-01 | 英特尔公司 | 用于芯片上网络上的多播和缩减通信的*** |
CN106254254A (zh) * | 2016-09-19 | 2016-12-21 | 复旦大学 | 一种基于Mesh拓扑结构的片上网络通信方法 |
CN109408257A (zh) * | 2018-11-09 | 2019-03-01 | 北京灵汐科技有限公司 | 用于片上网络noc的数据传输方法、装置及电子设备 |
CN111382114A (zh) * | 2018-12-28 | 2020-07-07 | 北京灵汐科技有限公司 | 一种用于片上网络的数据传输方法、装置及电子设备 |
CN111382115A (zh) * | 2018-12-28 | 2020-07-07 | 北京灵汐科技有限公司 | 一种用于片上网络的路径创建方法、装置及电子设备 |
US10608640B1 (en) * | 2019-05-10 | 2020-03-31 | Achronix Semiconductor Corporation | On-chip network in programmable integrated circuit |
Also Published As
Publication number | Publication date |
---|---|
CN114095289A (zh) | 2022-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11973697B2 (en) | Composing diverse remote cores and FPGAs | |
US8654798B2 (en) | Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method | |
US11003604B2 (en) | Procedures for improving efficiency of an interconnect fabric on a system on chip | |
CN113098773B (zh) | 数据处理方法、装置及*** | |
CN109873771B (zh) | 一种片上网络***及其通信方法 | |
CN108199985B (zh) | GPGPU中基于全局节点信息的NoC仲裁方法 | |
US20220015588A1 (en) | Dual mode interconnect | |
CN112073321B (zh) | 信息处理方法、互连设备和计算机可读存储介质 | |
CN116383114B (zh) | 芯片、芯片互联***、数据传输方法、电子设备和介质 | |
CN114095289B (zh) | 数据多播电路、方法、电子设备及计算机可读存储介质 | |
EP3822776A1 (en) | System and method for transaction broadcast in a network-on-chip | |
CN116915708A (zh) | 路由数据包的方法、处理器及可读存储介质 | |
CN115994040A (zh) | 计算***以及进行数据广播和数据归约的方法及存储介质 | |
CN105224501A (zh) | 改进圆环面网络及其确定数据包传输路径的方法和装置 | |
CN112905523B (zh) | 一种芯片及核间数据传输方法 | |
US10990552B1 (en) | Streaming interconnect architecture for data processing engine array | |
CN105550157A (zh) | 一种分形树结构通信结构、方法、控制装置及智能芯片 | |
CN114363246A (zh) | 众核的片上网络数据传输方法、装置、设备及介质 | |
CN115225708B (zh) | 一种报文转发方法计算机设备及存储介质 | |
US20240223514A1 (en) | Multicast message delivery across remote cores | |
CN117155846B (zh) | 互连网络的路由方法、装置、计算机设备及存储介质 | |
CN112988653B (zh) | 数据处理电路、装置以及方法 | |
US20220391666A1 (en) | Distributed Deep Learning System and Distributed Deep Learning Method | |
RU2642383C2 (ru) | Способ передачи информации | |
US9928204B2 (en) | Transaction expansion for NoC simulation and NoC design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 201, No. 6 Fengtong Heng Street, Huangpu District, Guangzhou City, Guangdong Province, 510530 Patentee after: Guangzhou Ximu Semiconductor Technology Co.,Ltd. Country or region after: China Address before: 100080 202-24, building 6, yard 1, gaolizhang Road, Haidian District, Beijing Patentee before: Beijing SIMM Computing Technology Co.,Ltd. Country or region before: China |