用于神经网络处理器的片上通信系统的制作方法

文档序号:21323559发布日期:2020-06-30 20:57阅读:264来源:国知局
用于神经网络处理器的片上通信系统的制作方法

相关申请的交叉引用

本申请基于2017年12月22日提交的美国临时申请no.62/610,127和2018年5月15日提交的美国专利申请no.15/980,685并要求其优先权,上述申请的全部内容通过引用合并于此。



背景技术:

随着基于神经网络的深度学习应用(例如图像识别、语音/语言识别和机器翻译)呈指数增长,基于商品cpu/gpu的平台不再是合适计算基础来支持性能、功率效率和经济可扩展性方面不断增长的计算需求。开发神经网络处理器以加速基于神经网络的深度学习应用已在许多业务领域获得了重大关注,包括成熟的芯片制造商、初创公司以及大型互联网公司。

神经网络处理器的常规互连结构通常建立在路由器之上。路由器可以在给定的结构拓扑上支持任何类型的通信。例如,可以将路由器设计为包含用于所有类型的通信的功能模块,以及用于临时保存传入和传出分组的大量缓冲器。因此,用于所有类型的通信的功能模块和大量缓冲器会消耗大量片上资源,但是很大一部分功能模块和缓冲器无法用于神经网络处理。此外,常规的互连结构不支持有效的分区和隔离。



技术实现要素:

本公开的实施例提供了一种用于人工神经网络处理器的片上通信系统。所述系统可包括:集群管理器,所述集群管理器被配置为生成全局信号;总线;以及经由所述总线与所述集群管理器通信地耦合的多个瓦片(tile)单元,其中,每个瓦片单元包括第一组连接器和至少一个节点,所述至少一个节点连接在所述第一组连接器的连接器之间,其中,所述至少一个节点被配置为获取所述全局信号。

本公开的实施例还提供了一种处理设备,所述处理设备经由第一端子通信地耦合到第一组连接器中的一个,并且经由第二端子通信地耦合到所述第一组连接器中的另一个。所述处理设备可包括:旁路总线,所述旁路总线连接在所述第一端子与所述第二端子之间,并被配置为在所述第一端子与所述第二端子之间传送数据信号;缓冲总线,所述缓冲总线连接在所述第一端子与所述第二端子之间,并被配置为缓冲所述数据信号;以及一个或多个多路复用器,所述一个或多个多路复用器被配置为根据模式信号启用所述旁路总线和所述缓冲总线之一。

本公开的实施例还提供了一种用于在片上通信系统上进行操作的方法。所述片上通信系统可包括集群管理器以及经由总线与所述集群管理器通信地耦合的瓦片阵列中的多个瓦片单元。所述方法可包括:接收任务;确定与所述集群管理器耦合的所述瓦片阵列的可用瓦片单元,其中,每个瓦片单元包括第一组连接器和连接在所述第一组连接器之间的至少一个节点;根据所述瓦片阵列的可用瓦片单元生成全局信号;以及基于所述全局信号将所述可用瓦片单元连接到环形拓扑中。

附图说明

在以下详细描述和附图中示出了本公开的实施例和各个方面。图中所示的各种特征未按比例绘制。

图1示出了根据本公开的实施例的示例性片上架构。

图2示出了根据本公开的实施例的示例性片上通信系统的框图。

图3a示出了根据本公开的实施例的示例性瓦片单元的框图。

图3b示出了根据本公开的实施例的片上通信系统的示例性节点的框图。

图3c示出了根据本公开的实施例的片上通信系统的示例性连接器的框图。

图4示出了根据本公开的实施例的示例性环形拓扑。

图5是根据本公开的实施例的示例性资源获取操作的流程图。

图6示出了根据本公开的实施例的示例性部分计算操作的流程图。

图7示出了根据本公开的实施例的使用片上通信系统的示例性归约(reduction)操作。

图8示出了根据本公开的实施例的示例性重新配置的环形拓扑的示意图。

图9示出了根据本公开的实施例的使用片上通信系统的示例性广播操作。

图10a示出了根据本公开的实施例的主瓦片列的示例性连接的示意图。

图10b示出了根据本公开的实施例的瓦片行的另一示例性连接的示意图。

具体实施方式

以下更详细地描述本公开的特定方面。如果与通过引用并入的术语和/或定义冲突,则以本文提供的术语和定义为准。

本公开的实施例提供了用于神经网络处理器的片上通信系统。

所公开的实施例提供了一种弹性的无路由器互连结构,该互连结构解决了传统解决方案中存在的缺点。本文描述的实施例提供了一种灵活的无路由器片上通信系统及其工作机制。通过跨节点使用协调控制,神经网络处理器可以避免通信结构中的路由器,并可以高效地支持人工神经网络处理所需的通信模式。

图1示出了根据本公开的实施例的示例性片上架构100。如图1所示,片上架构100可以包括片上通信系统102、片外存储器104、存储器控制器106、直接存储器访问(dma)单元108、联合测试动作组(jtag)/测试访问端(tap)控制器110、总线112、外围组件快速互连(pcie)接口114等。应当理解,片上通信系统102可以基于所传送的数据来执行算法操作。

片上通信系统102可以包括全局管理器1022和多个瓦片1024。全局管理器1022可以包括至少一个集群管理器以与瓦片1024协调。例如,每个集群管理器可以与瓦片的阵列相关联。如图1所示,全局管理器1022可以包括两个集群管理器以与两个瓦片阵列协调。瓦片1024可以被配置为在全局管理器1022的控制下对所传送的数据执行操作(例如,算法计算)。

片外存储器104可以包括只读存储器(rom)、可擦除可编程只读存储器(eprom)等。与集成在一个或多个处理器内的片上存储器相比,片外存储器104可以被配置为以较慢的访问速度存储大量数据。

存储器控制器106可以读、写或刷新一个或多个存储器设备。存储器设备可以包括片上存储器和片外存储器。例如,存储器设备可以被实现为任何类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(sram)、电可擦除可编程只读存储器(eeprom)、可擦除可编程只读存储器(eprom)、可编程只读存储器(prom)、只读存储器(rom)、磁存储器、闪存、或者磁盘或光盘。

dma单元108可以生成存储器地址并启动存储器读或写周期。dma单元108可包含能被一个或多个处理器写和读的若干硬件寄存器。寄存器可以包括存储器地址寄存器、字节计数寄存器和一个或多个控制寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(i/o)设备读或向i/o设备写)、传输单元的大小、和/或一个突发中传输的字节数的某种组合。

jtag/tap控制器110可以指定专用调试端口,该专用调试端口实现用于低开销访问的串行通信接口(例如,jtag接口),而无需直接外部访问系统地址和数据总线。jtag/tap控制器110还可以指定片上测试访问接口(例如,tap接口),该片上测试访问接口实现协议以访问一组测试寄存器,该测试寄存器提供各个部分的芯片逻辑级别和设备能力。

总线112可以包括芯片内总线和芯片间总线。芯片内总线可以彼此连接芯片上架构100的所有内部组件,例如片上通信系统102、片外存储器104、存储器控制器106、dma单元108、jtag/tap控制器110和pcie接口114。芯片间总线可以提供芯片之间的连接。

pcie接口114可以支持任何两个端点之间的全双工通信,而对跨多个端点的并发访问没有固有的限制。

图2示出了根据本公开的实施例的示例性片上通信系统102的框图。

如图2所示,片上通信系统102可以包括集群管理器202和瓦片阵列204。

集群管理器202可以被配置为生成用于组织瓦片阵列204的全局信号。集群管理器202可以经由全局总线连接到瓦片单元。应当理解,片上通信系统102可以包括一个以上的集群管理器。例如,如图2所示,基于所支持的多个任务的数量,可以在片上通信系统102上提供两个集群管理器202和206。

每个集群管理器(例如202)可以经由全局总线发送全局信号。全局信号可用于初始集群分区设置和操作命令。每个集群管理器(例如202)可以与瓦片阵列(例如204)相关联,并且一个或多个瓦片阵列可以形成网格阵列。例如,当与集群管理器202和206相关联的瓦片阵列被组织在一起时,可以形成如图2所示的4瓦片×4瓦片网格阵列。应当理解,网格阵列可以包括n行和m列,其中n和m可以是任何正整数。

瓦片阵列204可以包括与集群管理器202通信地耦合的多个瓦片单元,并且两个瓦片单元可以形成瓦片,诸如瓦片2042。图3a示出了根据本公开的实施例的示例性瓦片单元300的框图。

如图3a所示,瓦片单元300可包括通信地耦合到一组连接器中的连接器302和连接器304的至少一个节点306。节点306可以包含两个分别与连接器302和304连接的端子。由于每个瓦片包括两个瓦片单元,所以每个瓦片(例如瓦片2042)可以包括两个节点和四个连接器,如图2所示。下面将进一步描述节点306的细节。

图3b示出了根据本公开的实施例的片上通信系统的示例性节点306的框图。

节点306可以经由第一端子330通信地耦合到连接器302,经由第二端子332通信地耦合到连接器304,并且经由第三端子334通信地耦合到片上通信系统102的其余部分。在一些实施例中,第一端子330和第二端子332可以与连接器302和304连接以收发数据信号,并且第三端子334可以与集群管理器202连接以经由全局总线接收全局信号。

节点306还可以包括旁路总线312、缓冲总线314和多路复用器316。

旁路总线312可以连接在第一端子330与第二端子332之间,并配置为在第一端子330与第二端子332之间传送数据信号。由于第一端子330和第二端子332可以与片上通信系统102的其他瓦片单元连接,所以旁路总线312可用于将数据广播到片上通信系统102的其余部分或简单地旁路节点306。

缓冲总线314也可以连接在第一端子330与第二端子332之间,并且包括先进先出(fifo)缓冲器以缓冲数据信号。fifo缓冲器可用于存储要由节点306处理的数据。

多路复用器316可以根据模式信号来启用旁路总线312和缓冲总线314之一。在一些实施例中,多路复用器316可以包括两个多路复用设备。例如,如图3b所示,节点306可以包括两个多路复用设备,每个都连接到旁路总线312和缓冲总线314两者。应当理解,多路复用器316可以包括例如四个金属氧化物半导体(mos)场效应晶体管(fet)以实现启用旁路总线312和缓冲总线314之一的功能。因此,多路复用器316可以以各种方式实现并且可以不受图3b的示例性结构的限制。通过多路复用器316,节点306可以在旁路模式与缓冲模式之间切换。

节点306可以进一步包括用于基于数据信号执行一个或多个操作的算术逻辑单元(alu)318。alu单元318可以与旁路总线312和缓冲总线314两者通信地耦合。例如,alu单元318可以包括与旁路总线312连接的发送单元320,并且可以被配置为根据发送使能信号(tx_en)将数据发送到旁路总线312。alu单元318可以进一步包括与旁路总线312连接的接收单元322,并且可以被配置为根据接收使能信号(rx_en)从旁路总线312接收数据。发送单元320可以包括与旁路总线312连接的寄存器以及在该寄存器与alu单元318之间连接的开关。在一些实施例中,该开关可以是三态缓冲器,其允许alu单元318在发送使能信号为开时将数据发送到寄存器,并且在发送使能信号为关时消除来自旁路总线312的影响。类似地,接收单元322也可以包括与旁路总线312连接的寄存器以及在该寄存器与alu单元318之间连接的开关。在一些实施例中,该开关可以是三态缓冲器,其允许alu单元318在接收使能信号为开时从寄存器接收数据并且在接收使能信号为关时消除来自接收单元322的影响。因此,嵌入有这种开关的连接器可以在利用alu单元收发数据与旁路alu单元之间动态切换。

应当理解,alu单元318的接收单元322也可以与缓冲总线314连接,以根据接收使能信号从缓冲总线314接收数据。在一些实施例中,alu单元318的发送单元320也可以与缓冲总线314连接,以将数据发送到缓冲总线314。

为了清楚起见,在图3中未示出发送单元320和接收单元322与旁路总线312和缓冲总线314的连接。

由于只能启用旁路总线312或缓冲总线314中的一个,因此alu单元318可以从旁路总线312或缓冲总线314接收数据。在一些实施例中,当多路复用器316启用缓冲总线314并且接收使能信号为开时,alu单元318可以从fifo缓冲器接收数据,然后处理该数据。在一些实施例中,当多路复用器316启用旁路总线312并且接收使能信号为开时,alu单元318可以从旁路总线312接收数据,然后处理该数据。

节点306可以进一步包括控制单元324,控制单元324被配置为根据经由第三端子334获取的全局信号来生成发送使能信号、接收使能信号和模式信号。在一些实施例中,控制单元324可以进一步生成用于配置连接器的选择(sel)信号。虽然在图3b中,控制单元324是节点306的嵌入式组件,但控制单元324也可以是由两个以上节点共享的组件。

图3c示出了根据本公开的实施例的片上通信系统的示例性连接器302的框图。如以上所讨论的,瓦片单元可以包括至少一个节点和两个动态连接器(例如,302和304)。两个连接器(例如302和304)可以彼此相同。因此,这里将参考图3c仅描述一个示例性连接器302。

连接器302可以包括四个端子(331、333、335和337)和三个传输门(339、341和343),传输门控制端子331与333之间、端子333与335之间、以及端子333与337之间的三个连接的断开和闭合。

如以上所讨论的,一个瓦片可以包括两个瓦片单元。在一些实施例中,端子331和333可以是用于与同一瓦片中的其他瓦片单元的连接器连接的内部端子。例如,通过连接两个瓦片单元,可以通过连接器将两个瓦片单元的两个节点连接在一起,从而形成两节点环。端子335和337可以是用于与另一瓦片连接的外部端子。通过连接至少两个瓦片,可以形成多节点环。因此,至少一个瓦片的连接器的连接和断开可产生各种节点环,以在不同节点之间传递数据用于各种操作。瓦片的连接可以被称为环形拓扑。

连接器的连接和断开可通过门控制。在一些实施例中,门339可以与节点306和用于同一瓦片中的另一瓦片单元的另一组连接器中的连接器308通信地耦合。门341可以与连接器308和用于相邻瓦片中的又一瓦片单元的又一组连接器中的连接器通信地耦合。门343可以与节点306和该又一组连接器中的连接器通信地耦合。当sel信号设置为“1”时,启用门339以连接端子331和333,禁用门341以断开端子331和335,并且也禁用门343以断开端子333和337。当sel信号设置为“0”时,禁用门339以断开端子331和333,启用门341以连接端子331和335,并且也启用门343以断开端子333和337。

因此,通过施加由控制单元324生成的sel信号,连接器(例如302和304)可以被配置为与同一瓦片内或来自另一瓦片的另一连接器连接/断开,和/或与和连接器耦合的节点连接/断开。因此,可以根据sel信号形成瓦片的环形拓扑。

图4示出了根据本公开的实施例的示例性环形拓扑400。如以上所讨论的,每个集群管理器202可以与包括多个瓦片的瓦片阵列相关联,并且一个或多个瓦片阵列可以形成网格阵列。图4示出了包括两个瓦片阵列的网格阵列。包括瓦片401-415的第一瓦片阵列由实线表示,并且第二瓦片阵列由虚线表示。由于第一瓦片阵列和第二瓦片阵列相似或相同,因此以下将仅描述包括瓦片401-415的第一瓦片阵列。

在图4中,网格阵列可以包括三种类型的瓦片。第一类型包括在瓦片阵列的边界处的瓦片(例如瓦片401-415),第二类型包括在网格阵列的边界处的瓦片(例如瓦片401-409和415),第三类型包括在瓦片阵列的边界和网格阵列的边界处的瓦片(例如401-409和415)。

因为网格阵列对于给定的芯片是固定的,所以可以通过对x-y坐标进行硬编码来使每个节点知道其物理位置。然而,可以通过在由集群管理器分配的资源位掩码中定位瓦片的位置来实现分配的环形连接中的相对位置。

在本公开的实施例中,可以在运行中(onthefly)灵活地重新配置片上瓦片及其连接。例如,通过控制sel信号,一个瓦片可以打开与相邻瓦片的连接或与之断开连接。这允许瓦片阵列动态地重新配置自身以支持高效的部分计算操作、广播和归约操作、以及资源获取操作。例如,如图4所示,瓦片401-415顺序地串联连接。

为了协助这种重新配置,可以执行资源获取操作。图5是根据本公开的实施例的示例性资源获取操作500的流程图。例如,资源获取操作500可以由片上通信系统(例如,片上通信系统102)执行。

在步骤502中,片上通信系统可以从片上架构接收任务。在一些实施例中,片上通信系统的集群管理器(例如,图2的集群管理器202)可以接收任务。该任务可以是神经处理任务。当在瓦片数量方面具有给定资源要求的新任务来自驱动程序时,可以识别空闲集群并接收任务。如果无法识别空闲的集群管理器,则可以拒绝任务。

在步骤504中,片上通信系统(例如,集群管理器)可以确定针对任务的瓦片阵列的可用瓦片单元。由于片上通信系统102可以同时处理多个任务,所以瓦片阵列的一部分可能已被较早的任务占用。如果可用瓦片单元的数量大于任务所请求的数量,则可以接受任务;否则,任务被拒绝。

如果任务被接受,则在步骤506中,片上通信系统(例如,集群管理器)可以根据瓦片阵列的可用瓦片单元来生成全局信号。例如,可以根据指示瓦片阵列的可用瓦片单元的资源位掩码来生成全局信号。集群管理器可以集中管理资源位掩码,以记录整个网格阵列中的可用瓦片单元。任务完成后,相应的集群管理器可以通过复位(unset)资源位掩码中的相应位来释放资源。可以序列化来自不同集群管理器的资源位掩码上的操作,以避免竞争条件。

在步骤508中,片上通信系统(例如,集群管理器)可以基于全局信号将可用瓦片单元连接到环形拓扑中。在一些实施例中,片上通信系统102可以将全局信号发送到瓦片阵列的可用瓦片单元。例如,全局信号可以包括集群管理器202的集群标识(id),并且集群管理器202可以经由全局总线将全局信号与资源位掩码一起发送到可用瓦片单元。在可用瓦片单元已经接收到全局信号之后,可用瓦片单元的每个节点中的控制单元324可以对照其自身的节点id来检查集群id和资源位掩码,以查看接收到的全局信号是否属于控制单元324。如果接收到的全局信号属于控制单元324,则控制单元324可以进一步确定其在网格阵列中的位置。基于位置信息,控制单元324可以进一步基于全局信号生成sel信号,以配置属于每个节点的两个相邻连接器。根据sel信号,可以将瓦片连接到如图4所示的环形拓扑400中。

此外,利用使用前述步骤建立的环形拓扑400,集群管理器202可以进一步基于任务在可用瓦片单元的节点之中确定主节点(homenode)。例如,集群管理器202可以将位于环中间的节点确定为主节点。主节点也可能不是中央节点。例如,如图4所示,瓦片407的底部节点是主节点(hn)。

在建立环形拓扑400之后,可以使用片上通信系统102来执行各种操作。这样的示例性操作可以包括部分计算操作、归约操作、广播操作等。这些操作将在下面进一步描述。

图6示出了根据本公开的实施例的示例性部分计算操作600的流程图。在已经建立了环形拓扑400之后,可以将其用于神经网络层的部分计算操作600。例如,部分计算操作600可以由片上通信系统102执行。

在步骤602中,片上通信系统可以基于权重矩阵为节点生成权重。通常,神经网络可以按层组织。每一层都可以对其输入执行计算并生成输出。一层的输出可以传递到下一层用于进一步处理。例如,前一层的输出可以是下一层的输入。为了执行计算,可以为每个层分配权重,并且神经网络的权重矩阵可以包括分配给层的所有权重。可以根据神经网络的结构和任务的性质来生成权重矩阵。例如,可以根据环形拓扑400来划分权重矩阵。通过划分权重矩阵,每个节点可以获取计算所需的对应权重。

在步骤604中,片上通信系统可以将任务划分为针对节点的子任务。每个节点(例如,图3a的节点306)可以激活缓冲总线并将子任务的数据加载到fifo缓冲器中用于alu单元进行计算。为了划分任务,可以沿着环形拓扑400将任务在某方向上一次移动一个节点。方向可以是顺时针或逆时针。在一些实施例中,在任务的移动期间,每个节点可以接收预先分配给之前的节点的数据。例如,当计算是两个矩阵(例如,权重矩阵和与任务相关联的矩阵)的乘积时,每个节点可以生成矩阵乘积中的元素。参考下面的等式1,例如,x11-x23可以指示权重,y11-y32可以指示数据,并且节点306可以生成z21的部分结果。注意,节点306获取与用于z11的数据相同的数据(即,y11,y21和y31),该数据可以被预先分配给之前的节点。

基于子任务的权重和数据,每个节点都可以计算分配的层输出的部分结果。因此,在步骤606中,片上通信系统的每个节点可以基于权重和子任务来确定节点的部分结果。该确定可以通过计算来执行。通过确定部分结果,可以在输入数据的每个分区都经过环形拓扑400之后产生最终输出。

图7示出了根据本公开的实施例的使用片上通信系统(例如,图2的片上通信系统102)的示例性归约操作700。

在步骤702中,在已经建立了环形拓扑(例如,图4的环形拓扑400)并且所有节点已经完成计算它们自己的值之后,片上通信系统可以经由集群管理器来向节点(例如,图3a的节点306)发送归约命令。在一些实施例中,可以通过全局总线将归约命令与集群id一起发送到节点306的控制单元324。节点306的控制单元324可以验证归约命令和集群id,以确定归约命令是否与节点306相关联。

在步骤704中,片上通信系统可以重新配置环形拓扑以生成多个节点环。在一些实施例中,片上通信系统102可以使环形拓扑400中的瓦片彼此断开连接,并且重新配置瓦片以形成多个节点环。图8示出了根据本公开的实施例的示例性重新配置的环形拓扑800的示意图。如图8所示,瓦片401-415之间的较早的连接被断开,并且由虚线(例如,802)示出。每个瓦片内的两个瓦片单元被连接以形成两节点环。一个瓦片内的两个瓦片单元可以包括顶部节点和底部节点。在一些实施例中,可以跨两个以上的瓦片建立连接,并且重新配置的节点环可以包括两个以上的瓦片。例如,如图8所示,瓦片413和415的四个节点可以连接以形成四节点环。应当理解,也可以类似地形成六节点环。因此,节点环可以是两节点环、四节点环、六节点环等。

返回参考图7,在步骤706中,片上通信系统可以使用每个节点环中的旁路总线将部分结果从第一节点发送到第二节点。由于每个节点都可以执行计算并包含部分结果,因此可以对第一节点和第二节点的存储数据(例如权重)执行部分归约以生成部分结果。这些部分结果可以被进一步集中处理。在一些实施例中,可以将部分结果发送到第二节点并进行集中处理。如图8所示,可以将部分结果从瓦片401的顶部节点发送到瓦片401的底部节点。应当理解,数据也可以从底部节点发送到顶部节点。

在一些实施例中,可以将数据从第一瓦片的底部节点发送到第二瓦片的底部节点,其中第二瓦片的底部节点比节点环中的其他节点更靠近主节点。例如,如图8所示,可以将瓦片407的底部节点设置为主节点,并且因此,可以通过连接804将数据从瓦片415的底部节点发送到瓦片413的底部节点。应该理解,当节点环包括主节点时,可以将数据发送到主节点。因此,通过将数据发送到更靠近主节点的节点,可以最终将数据传送到主节点。

在步骤708中,片上通信系统可以在第二节点上执行归约操作。例如,通过将部分结果从顶部节点发送到底部节点,底部节点可以在底部节点上执行部分归约。可以在瓦片阵列的所有瓦片上并行执行部分归约。通过重复环形拓扑的重新配置、节点之间的数据传输以及所传输数据的操作,部分归约的所有部分结果都可以由主节点收集,并且主节点可以执行最终归约。环形拓扑的重新配置可以与任务相关联。在一些实施例中,可以首先形成多个两节点环以并行地处理部分归约操作。例如,每个两节点环可以分别包括瓦片401-415的两个节点。并且如以上所讨论的,结果可以存储在多个两节点环的底部节点中。然后,可以形成多个四节点环以对存储在先前的两节点环中的底部节点中的结果进一步执行归约操作,并且可以将结果存储在更靠近主节点的一些底部节点中。例如,参考图8,四节点环可以包括包含一对瓦片401和403、一对瓦片405和407、一对瓦片409和411以及一对瓦片413和415的环。然后,可以形成多个六节点环,以传输和处理由四节点环生成的结果。例如,六节点环可以包括瓦片403、405和407的环,并且因此,可以将存储在先前的四节点环(例如,瓦片403的底部节点)中的结果发送到主节点(例如,瓦片407的底部节点)用于进一步处理。应当理解,重新配置可以适应于任务和瓦片阵列的规模。

图9示出了根据本公开的实施例的使用片上通信系统(例如,图2的102片上通信系统)的示例性广播操作900。例如,如以上参考图7所讨论的,主节点可以执行最终归约操作。例如,主节点的alu单元可以执行最终归约。在执行了最终归约之后,归约结果可以被加载到主节点的发送单元(例如,图3b的发送单元320)中。然后,片上通信系统可以执行广播操作900以广播最终结果。应当理解,在广播操作900之前,可以重置广播操作900中涉及的所有瓦片的连接。例如,可以断开瓦片之间的连接,并且可以将每个瓦片的节点连接到两节点环。

在步骤902中,片上通信系统可以将广播命令发送到节点。在一些实施例中,在主节点已经将最终结果加载到发送单元320中之后,可以通过全局总线将广播命令与集群id一起发送到节点。每个节点的控制单元324可以根据集群id来验证广播命令。因此,每个节点都可以确定广播命令是否与之关联。

在步骤904中,片上通信系统可以确定节点(例如,节点306)的位置信息。节点的位置信息可用于生成广播操作900的命令。例如,广播操作900可以包括一系列协调的控制信号,这些信号控制用于广播操作900的节点的连接器和总线选择。这些控制信号可以包括用于节点的每个连接器的操作序列,以根据节点及其相邻节点的位置来与相邻节点的连接器连接或断开。由于仅一些节点可用于广播操作900,因此一些相邻节点的连接器可能不可用。因此,节点(例如306)的位置信息可以包括网格阵列中的网格阵列位置信息和环形拓扑400中的相对位置。

在步骤906中,片上通信系统可以连接包括主节点的主瓦片列的瓦片,以从主节点接收数据。瓦片阵列可以包括瓦片列和瓦片行,并且包含主节点的瓦片列可以被称为主瓦片列。图10a示出了根据本公开的实施例的主瓦片列的示例性连接1000的示意图。如图10a所示,瓦片407的底部节点是主节点(hn),因此,主瓦片列可以包括瓦片407和409。片上通信系统102可以将瓦片407和409与主节点连接,以便瓦片407和409的节点(例如,瓦片409的节点和瓦片407的顶部节点)可以从主节点接收数据。应当理解,只有瓦片的非主节点可以连接到主节点并从主节点接收数据。

在一些实施例中,除主节点之外的节点(例如,瓦片409的节点和瓦片407的顶部节点)可以启用每个节点的旁路总线,从而每个节点的旁路总线可以连接到主节点的旁路总线。存储在主节点的发送单元中的数据可以被其他节点通过施加接收使能信号并取消发送使能信号来接收。同时,可以启用主节点的发送使能信号。因此,可以将存储在主节点中的数据加载到主节点的旁路总线中,并且除主节点之外的节点可以从加载的旁路总线接收发送的数据。

在步骤908中,片上通信系统可以将主瓦片列的每个瓦片与对应于该瓦片的行中的瓦片连接。在一些实施例中,在步骤908之前,片上通信系统可以断开主瓦片列的节点。图10b示出了根据本公开的实施例的瓦片行的示例性连接1010的示意图。如以上所讨论的,主瓦片列可以包括瓦片407和409,并且瓦片407和409可以分别对应于行1012和1014。行1012可以包括瓦片401-407,并且行1014可以包括瓦片409-415。因此,片上通信系统102可以将瓦片401-407彼此连接,并且将瓦片409-415彼此连接。类似地,片上通信系统102可以启用这些瓦片的旁路总线,从而可以将存储在瓦片列的瓦片407和409中的数据广播到其余瓦片。

应当理解,对于广播操作900,可以使用瓦片行代替瓦片列,反之亦然。例如,在步骤906中,可以连接主瓦片行的瓦片,而不是主瓦片列的瓦片。并且因此,在步骤908中,然后可以连接瓦片列的瓦片。

公开的实施例提供了一种弹性的无路由器的互连结构,该互连结构解决了传统解决方案中存在的缺点。本文描述的实施例提供了一种灵活的无路由器片上通信系统及其工作机制。通过跨节点使用协调控制,它们可以完全避免通信结构中的路由器,并可以高效地支持人工神经网络处理所需的所有通信模式。

第一,提出的片上通信系统可以是无路由器的,并且可以消除由路由器引起的效率低下。片上通信系统的节点中的先进先出(fifo)缓冲器是算术逻辑单元(alu)可以直接使用数据的地方。使用协调控制,片上通信系统不需要基于信用的流量控制、路由表查找或虚拟通道管理,并且没有死锁。另外,由于本身没有路由器,因此不需要将数据分解成小块并封装在带有头和尾的分组中。

第二,片上通信系统中的旁路总线不仅提供广播能力,而且允许旁路节点以进行点对点数据传输。因此,与必须一次一跳传输数据的传统的网状网络相比,更高效且可扩展。

第三,利用每个瓦片中的动态连接器和集中式集群管理器,可以有效灵活地划分片上资源。因此,可以直接支持多任务。此外,在每个分区内,随着处理器经过神经网络的不同层,可以根据计算需求变化自然地扩展或收缩实际瓦片使用。这提供了在活动分区中的那些非活动瓦片上使用时钟门控/功率门控进一步提高效率的机会。

通过考虑本文公开的实施例的说明书和实践,本公开的其他方面和实施例对于本领域技术人员将是显而易见的。

意图将说明书和其中的示例视为仅是示例性的,本公开的真实范围和精神由所附权利要求指示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1