一种路由器和片上网络传输系统及方法与流程

文档序号:13937532阅读:263来源:国知局
一种路由器和片上网络传输系统及方法与流程

本发明涉及神经网络领域,特别涉及一种路由器和片上网络传输系统及方法。



背景技术:

神经网络作为一种模拟人脑的机器学习技术一直都是人工智能研究领域的热点,并且在众多领域得到了广泛的应用,例如图像识别、自然语言理解等。近年来,利用深度学习获得的深度神经网络发展迅速,这种运算模型,通常包含大量的互相连接的数据节点,其连接关系通常使用权重进行表示。

随着深度神经网络规模的扩大,对网络模型的计算速度要求也越来越高,采用硬件加速替代传统软件计算的方式成为提高效率的有效方式之一,例如,采用多运算核心进行并行运算,但是由于数据过于庞大,沉重的传输负担通常会导致延时,使得系统性能整体下降。

因此,需要一种能够提高传输效率的路由器和适用于神经网络的片上网络传输系统及方法。



技术实现要素:

本发明提供一种路由器,包括控制单元,用于控制所述路由器;缓存,用于将接收的数据包输出至交叉开关;交叉开关,用于将接收的数据包路由到相应的输出端口;压缩器,用于对接收的数据包进行压缩,并将压缩后的数据包返回至所述缓存;以及解压缩器,用于对接收的数据包解压缩,并将解压缩后的数据包返回至相应的输出端口。

优选的,所述缓存包括通道选择器和虚通道,所述控制单元控制所述通道选择器为输入至所述路由器的数据包分配所述虚通道;所述交叉开关包括端口选择器,所述控制单元控制所述端口选择器为输入至所述交叉开关的数据包分配输出端口。

优选的,所述控制单元根据所述虚通道和输出端口的占用情况,判断从本地输入至所述路由器的数据包是否为空闲数据包。

优选的,所述控制单元根据当前路由器中缓存队列的空闲值对所述空闲数据包进行压缩优先级排序。

优选的,若所述空闲值一致,则根据与当前路由临近的路由下一跳的缓存队列空闲值来进行压缩优先级排序。

优选的,所述控制单元根据预设的空闲阈值进行仲裁;若所述空闲数据包相关联的所述空闲值低于该空闲阈值,则控制所述压缩器对数据包进行压缩;若所述空闲数据包的空闲值不低于该空闲阈值,则将所述空闲数据包直接返回至所述缓存。

优选的,所述压缩器采用基于步进的压缩方式对数据包进行压缩。

优选的,若输入至所述交叉开关的数据包是提供给本地使用的压缩后的数据包,所述控制单元将控制所述端口选择器将所述压缩后的数据包传输至所述解压缩器进行解压缩,之后返回至所述端口选择器;若输入至所述交叉开关的数据包是经所述路由器路由至外部的,所述控制单元将控制所述端口选择器直接为所述数据包分配输出端口。

根据本发明的另一个方面,还提供一种片上网络传输系统,包括多个如上所述的路由器。

根据本发明的另一个方面,还提供一种多核神经网络处理器,包括多个计算核心,所述计算核心之间采用了如上所述的片上网络传输系统进行数据传输。

优选的,基于图层大小将数据分散存储至所述多个计算核心;或者基于输入/输出网络将数据分散存储至所述多个计算核心;或者基于图层大小和输入/输出网络相结合的方式将数据分散存储至所述多个计算核心。

根据本发明的另一个方面,还提供一种用于路由器的数据压缩方法,包括以下步骤:

将本地输入至所述路由器的数据包分通道暂存入缓存;

利用控制单元判断数据包是否为空闲数据包,并对获得的空闲数据包进行优先级排序,获得需要压缩的空闲数据包;

利用压缩器对需要压缩的空闲数据包进行压缩,并将其返回至缓存。

根据本发明的另一个方面,还提供一种用于路由器的数据解压缩方法,包括以下步骤:

将外部输入至所述路由器的数据包分通道经缓存输入至交叉开关;

利用端口选择器将本地需要使用的压缩后的数据包输入解压缩器;

利用解压缩器对经过压缩的数据包进行解压,并将其返回端口选择器。

相对于现有技术,本发明取得了如下有益技术效果:本发明提供的路由器和片上网络传输系统及方法,在路由器中增加了对输入数据的在线压缩和对输出数据的在线解压缩,大幅度减小了片上网络中的传输数据的规模,降低了数据传输的延时,特别适用于具有多个计算核心的神经网络处理器系统,能够提高神经网络处理器的并行计算速度,从而提高网络的整体性能。

附图说明

图1是一种多核神经网络处理器。

图2是本发明较佳实施例的单个路由器的结构示意图。

图3是本发明较佳实施例的数据划分方式示意图。

图4是利用本发明提供的路由器的进行数据压缩的流程示意图。

图5a和5b是采用基于步进的压缩方式进行数据压缩的举例示意图。

图6是利用本发明提供的路由器的进行数据解压缩的流程示意图。

具体实施方式

为了使本发明的目的、技术方案以及优点更加清楚明白,以下结合附图,对本发明提供的片上网络传输系统及方法进一步详细说明。

现有的硬件处理器通常采用多运算核心并行计算来提高神经网络模型的运转速率,同时,这种处理器会采用片上网络(networkonchip,noc)来进行多个计算核心之间的互联。在深度神经网络开始进行计算时,首先要将数据请求经路由发送到对应的存储器中,若该数据不在存储器中,则将数据请求注入到相连的片上网络中,然后通过片上网络传输到指定的存储器;从指定的存储器中获得所需数据后,这些数据再重新注入到片上网络中,进而传输至初始发送数据请求的对应路由,以供深度神经网络进行计算。但是随着数据规模的不断扩大,不断增加的片上网络传输负担常常会导致系统性能下降。

发明人经研究发现,深度神经网络的计算数据矩阵具有一定的稀疏性,这种稀疏性可以是矩阵本身具有的,也可以是由网络剪枝引起的。这种矩阵的稀疏性通常体现为在矩阵中有很多的值为零。基于矩阵的上述稀疏特性,发明人提供了一种数据压缩方法,利用特定的编码去除掉为零的矩阵值,使得数据规模大幅度降低,也就是说,可以减少实际在noc中传输的数据包规模,从而提高整体noc的传输效率。

本发明提供了一种用于多核神经网络处理器的片上网络数据传输系统,图1是一种多核神经网络处理器,如图1所示,该处理器包括多个计算核心,每个计算核心包括用于执行运算的计算单元、用于存储数据和指令的存储单元,以及用于数据传输的路由器,其中,不同计算核心的路由器之间组成了本发明提供的片上网络数据传输系统,该系统包括多个相同的用于数据传输的路由器,其中每个路由器均可接收来自东南西北四个计算核心的路由器所发送的数据包,或者接收来自本地计算核心的存储单元所提供的数据包,并将上述接收数据包发送至东南西北四个计算核心的路由器,或者发送至本地计算单元以便计算单元使用。

图2是本发明较佳实施例的单个路由器的结构示意图,如图2所示,上述路由器包括用于控制路由器的控制单元1、用于分通道暂存数据的缓存2、用于将输入数据路由到相应的输出端口的交叉开关3、用于数据压缩的压缩器4和用于数据解压缩的解压缩器5。

其中,缓存2包括选择器21和虚通道22;交叉开关3包括选择器31。,控制单元1可发出控制指令到缓存2,缓存2的选择器21根据控制单元1的控制指令为输入到路由器的数据包分配虚通道22以便读取;交叉开关3将暂存在虚通道22中的数据路由到对应输出端口时,分配器31可根据路由器所采用的路由算法以及控制流信息来分配输出端口的占用权;同时,控制单元1可根据输入数据包对虚通道22的占用情况以及输出数据包对输出端口的占用情况来判断该数据包是否为空闲数据包,其中,未占用虚通道22或未被分配至输出端口的数据包可判定为空闲数据包;另外,控制单元1还可根据当前路由器中缓存队列的空闲值对以判定为空闲的数据包进行优先级排序,并向压缩器4发出指令,使得优先级高的空闲数据包先进行压缩。

根据本发明的另一个方面,还提供一种用于多核神经网络处理器的数据划分方法,可采用一定方式将数据划分后分别载入至不同的计算核心,(例如,基于图层划分、基于输入/输出网络划分或混合式划分等),进而使上述片上网络传输系统中的每个路由器都可接收来自东南西北四个计算核心或本地计算核心的数据包,并将接收的数据包分发至东南西北四个计算核心或本地计算核心。

图3是本发明较佳实施例的数据划分方式示意图,如图3所示,基于图层划分是指将神经网络中图层尺寸较大的网络层划分为小尺寸的图层,并依据该划分将数据分散存储至不同的计算核心中,以这种划分方式,可使得不同的计算核心中保存相同的神经网络权重数据。从而更好地适应计算单元阵列大小,同时,这种划分方式可以允许在本地访问数据,提高了数据局部性;

基于输入/输出网络划分是指根据神经网络中每个网络层包含的多个输入/输出数据图层对神经网络模型进行划分。例如,当有16个计算核心,48个输入/输出图层时,可以将输入/输出图层划分为16组,每个计算核心处理48/16个图层。这种划分方式可以缓解对输入/输出图层访问带来的通信拥堵,但数据需要广播至所有计算核心中,因此使得不同的计算核心中保存不同的权重数据;

混合划分方法是指同时采用上述两种方法,即在神经网络的数据图层较大时,采用上述基于图层的划分方法,可降低对远端计算核心的访问;而在神经网络的数据图层较小时,采用基于输入/输出网络划分方法,从而提高权重数据的复用率。

根据本发明的另一个方面,还提供一种对输入至上述路由器的数据包进行压缩的方法,图4是利用本发明提供的路由器的进行数据压缩的流程示意图,如图4所示,具体方法如下:

对于任何一个路由器来说,若接收的数据包来自于本地计算核心,控制单元1首先会发出控制指令至缓存2,根据控制指令,选择器21为不同的数据包分配虚通道22,控制单元1将根据数据包对虚通道22的占用情况判定该数据包是否空闲,即未占用虚通道22的数据包为空闲数据包。

控制单元1可根据当前路由器中缓存队列的空闲值cl对经判定为空闲的数据包进行压缩优先级排序,其中,空闲值低的数据包压缩优先级高;同时,控制单元1可根据预设的空闲阈值进行仲裁,若空闲数据包的空闲值低于该空闲阈值,则控制压缩器4对其进行压缩后再返回至缓存2,若空闲数据包的空闲值高于该空闲阈值,则将该空闲数据包直接返回至缓存2。上述返回至缓存2的经过压缩或未经压缩的数据包,可经缓存2的选择器21输入至交叉开关3,选择器31将为这些数据包分配输出端口,以便将数据包路由至东南西北四个方向或本地。

在本发明的一个实施例中,控制单元1对空闲数据包进行压缩优先级排序时,若空闲值cl值一致,则可以根据临近路由下一跳的缓存队列空闲值ca来进行排序,其中,路由下一跳空闲值低的空闲数据包的压缩优先级高。

控制单元1根据压缩优先级排序,陆续将空闲数据包由缓存2传输给压缩器4,压缩器4可以采用相应的压缩方式对传输过来的数据包进行压缩,下面以基于步进的压缩方式对神经网络中的权重数据包进行数据压缩为例进行说明。

基于步进的压缩方式体现在一种包括步进值的数据压缩格式,具体格式包括<数据值,步进值>两部分。以权重数据为例,数据值指的是非零的权重数据值,步进值代表从当前非零数值开始,相隔指定步进值后得到下一个非零数值的有效位置。

神经网络的权重可采用一定位宽的比特数据表示,通过采用上述基于步进的压缩方式,经压缩后的权重最低位表示的是非零权重数据的原始值,其余位数是步进值。

图5a和图5b是采用基于步进的压缩方式对权重数据进行压缩的举例说明,如图5a所示,位宽为m的权重数据,最低位为n时,步进值为m-n。其中,数据压缩格式位宽m可根据用户需要、处理系统架构及所需的步进长度来选定;

如图5b所示,假设未经压缩的权重数据采用了n比特的二进制数表示,其中,第一个非零数据值为24,第二个非零权重值为12,其与第一个非零数据值24相隔四个数值为零的数据,则步进值为4;第三个非零数据值8与第二个非零数据值12之间相隔九个数值为零的数据,则步进值为9;第四个非零数据值27与第三个非零数据值8之间相隔八个数值为零的数据,则步进值为8。

由此可知,经过压缩后的权重二进制数据节省了零值所占的位宽,在路由器的传输过程中可大幅度降低片上网络的传输压力。

根据本发明的另一个方面,还提供一种对输入至上述路由器的数据包进行解压缩的方法,图6是利用本发明提供的路由器的进行数据解压缩的流程示意图,如图6所示,具体方法如下:

对于任何一个路由器来说,若接收的数据包来自于东南西北四个方向的外部计算核心,控制单元1首先会发出控制指令至缓存2,根据控制指令,选择器21为不同的数据包分配虚通道22,再经过选择器21输入值交叉开关3,由选择器31为数据包分配输出端口。

若输入至交叉开关3的数据包是经过压缩的数据包,且需要提供给本地计算单元进行使用,控制单元1会首先控制选择器31将该数据包输入至解压缩器5解压缩后再返回至选择器31(具体解压方式可采用与上述压缩方法相对应的方式,此处不再赘述),再由选择器31分配输端口,进而输出至本地计算单元;

若输入至交叉开关3的数据包是需要经路由器路由至东西南北四个外部计算核心的,则无论该数据包是否为经压缩的数据包,控制单元1将控制选择器31直接为其分配至相应的输出端口。

尽管在上述实施例中,采用了基于步进的压缩方式为例进行了举例说明,但本领域普通技术人员应理解,此处的压缩方法还可采用其它多种稀疏矩阵的表达方式。例如,基于坐标表示(coordinateformat,coo),即使用行下标、列下标和数据值三元组来表示非零值;基于行压缩(compressedsparserow,csr)的方式,该方式的列下标向量和数据值向量与coo的格式类似,只在行下标表示上做了压缩;基于列压缩(compressedsparsecolumn,csc)的方式,该方式的行下标和数据值向量与coo格式类似,只在列下标上做了压缩。

相对于现有技术,在本发明实施例中所提供的适用于多核神经网络处理器的片上网络数据传输系统及方法,通过在片上网络传输系统中增加了在线压缩器和解压缩器,大幅度减小了网络中的传输规模,从而降低了整体数据的传输延迟,提高了神经网络的并行计算速度。

虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。

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