CN113159302A - 一种用于可重构神经网络处理器的路由结构 - Google Patents
一种用于可重构神经网络处理器的路由结构 Download PDFInfo
- Publication number
- CN113159302A CN113159302A CN202011481685.8A CN202011481685A CN113159302A CN 113159302 A CN113159302 A CN 113159302A CN 202011481685 A CN202011481685 A CN 202011481685A CN 113159302 A CN113159302 A CN 113159302A
- Authority
- CN
- China
- Prior art keywords
- input
- routing module
- tile
- rps
- data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种用于可重构神经网络处理器的路由结构。包含至少一个NoC基本阵列Array,每一个阵列Array主要有多个组片Tile排布组成,每一个NoC基本阵列Array用于神经网络中一层卷积层的计算,组片Tile的数量为卷积层的卷积核Ker长或宽尺寸K的平方,即一个NoC基本阵列Array由K2个组片Tile组成;多个组片Tile以单列、单行或者行列阵列排布。本发明集成了存内计算以及NoC两方面的优势,不仅利用了NVM进行存内计算,突破了“储存墙”问题,不仅提高了计算性能,还保证了整体架构的灵活性。
Description
技术领域
本发明属于集成电路领域的一种用于进行神经网络计算的NoC阵列结构,与存内计算与片上网络相关,具体涉及一种用于可重构神经网络处理器的路由结构。
背景技术
过去几十年来,CMOS技术节点的摩尔定律收缩推动了计算性能的进步,同时压缩了计算成本。然而,芯片上的电路持续收缩带来了挑战,尤其是当处理器用于大数据和人工智能等对计算能力有巨大需求的领域的情况。为满足后摩尔定律时代的计算能力需求,新的计算范式正在紧锣密鼓地发展。冯·诺依曼体系结构下存储墙剪刀叉不断增大,访存功耗墙问题也日益突出,造成“存储墙”的根本原因是存储与计算部件在物理空间上的分离。另一方面,数据移动的能耗比也随之不断增加。最有前途的解决方案之一是在内存中进行计算,又称存内计算,以更低的计算能力大大提高并行计算速度。
存内计算的顶层架构将与传统计算模式有很大的区别。作为存内计算核心的新兴的电阻式非易失性存储器的写入功率高、写入速度慢,所以负载存储方案对于存内计算来说将是低效率的。由于目前现有的存内计算研究大多只关注于存算核的设计,存内计算的电路缺乏灵活的顶层架构配置神经网络的存储和运算单元,因此,应开发新的灵活的互连架构和映射策略,以满足神经网络的各种要求。而具有高并行性和可扩展性的片上网络(Network on Chip,NoC)已经引起了工业界和学术界的广泛关注,为解决这一问题提供了方案。
NoC包括计算和通信两个子系统。计算子系统完成广义的“计算”任务,计算单元(Process Element,PE)既可以是现有意义上的CPU、片上系统(System on Chip,SoC),也可以是各种专用功能的IP核或存储器阵列、可重构硬件等。在神经网络计算的硬件设计中,存内计算模块PE负责计算;通信子系统负责连接PE,实现计算资源之间的高速通信。通过这两个子系统,能够灵活地进行神经网络层之间的通信和整体的运算。
目前,AtomLayer、FloatPIM、PRIME等存内计算模型已经能支持卷积神经网络(Convolution Neural Network,CNN)的运行,并能显著降低运行功耗。 AtomLayer是一种基于ReRAM的通用加速器,采用原子层计算,每次只处理一个网络层,从而消除了与流水线相关的问题;还采用了独特的滤波器映射和数据复用系统,以最大限度地降低层切换和DRAM访问成本。FloatPIM是一种全数字可扩展的存内计算架构,可以在训练和测试阶段加速CNN;FloatPIM 支持原生浮点表示,可以实现相邻内存块之间的快速通信,以减少存内计算架构的内部数据移动。NoC已也被证明可以支持CNN,相关模型有Eyeriss系列、 GANPU等。Eyeriss v2引入分层网状网络(HM-NoC)来解决神经网络层形的变化的问题,此举同时限制了本地PE集群内昂贵的通信以及电路交换路由的成本,使其实现成本最小化。它还采用了新的PE架构,支持在压缩域中直接处理稀疏的权重和输入激活,不仅提高了能效,而且提高了吞吐量;增加了对 SIMD的支持,使每个PE每周期可以处理2个乘累加运算(Multiplication and Accumulation,MAC)。
用单纯的存内计算电路会导致缺少灵活的顶层架构的问题,仅用片上网络的通信方式和轻量化神经网络的方法无法从硬件层面对神经网络进行加速,这都大大限制了神经网络计算速度的提升。
发明内容
针对上述问题,本发明提出了一种利用非易失性储存器(Non-volatile Memory,NVM)的、可扩展的、可重构的、用于CNN卷积的片上网络设计结构和方法,通过优化输入输出数据流,并在路由中引入控制字指令,能够减少数据的复制和搬移,减少神经网络计算芯片的功耗,并提高计算和数据流的并行性,提升整体计算效率。
本发明的通过如下技术方案实现:
本发明中提及的神经网络中一层是指卷积层。
包含至少一个NoC基本阵列Array,每一个阵列Array主要有多个组片 Tile排布组成,每一个NoC基本阵列Array用于神经网络中一层卷积层的计算,组片Tile的数量为卷积层的卷积核Ker长或宽尺寸K的平方,即一个NoC基本阵列Array由K2个组片Tile组成;
多个组片Tile以单列、单行或者行列阵列排布:
在多个组片Tile以单列或者单行排布情况下,每列/行的相邻组片Tile之间连接并依次数据传递;
在多个组片Tile以行列阵列排布情况下,每列的相邻组片Tile之间连接并依次数据传递形成一列组片组,然后在相邻列组片组之间连接并平行双向传递数据。
每一个组片Tile包括依次连接的输入特征图像路由模块Rifm(Router inputfeature map)、存内计算模块PE与部分和路由模块Rps(Router partial sum);相邻组片Tile的输入特征图像路由模块Rifm连接,并沿组片Tile分布排列的顺序依次传递数据;相邻组片Tile的部分和路由模块Rps连接,并沿组片Tile分布排列的顺序依次传递数据。
每个输入特征图像路由模块Rifm的输入端与和自身所在组片Tile前一个相邻的组片Tile中的输入特征图像路由模块Rifm的输出端相连,输入特征图像路由模块Rifm的第一输出端与和自身所在组片Tile后一个相邻的组片Tile 中的输入特征图像路由模块Rifm的输入端相连,输入特征图像路由模块Rifm 间的数据传输进行握手传输以保证数据收发的同步,输入特征图像路由模块 Rifm的第二输出端与自身所在组片Tile中的存内计算模块PE的相连;
所述的输入特征图像路由模块Rifm包含特征本地计数器cnt和输入输出控制器,特征本地计数器cnt在输入特征图像路由模块Rifm开始接收到数据后开始计数,计数结果提供作为相对时间;图像中单像素数据输入到输入输出控制器,输入输出控制器实时根据特征本地计数器cnt的计数结果,与输入到神经网络一层卷积层中的输入图像的尺寸H进行判断当前时刻是否向存内计算模块 PE和输入特征图像路由模块Rifm发送数据;特征本地计数器cnt的计数结果除以尺寸H的余数,若余数在0-H-K+1之间,K表示卷积层的卷积核Ker的长或宽尺寸,则输入输出控制器向存内计算模块PE发送单像素数据,输入输出控制器同时将单像素数据输出发送到和自身输入特征图像路由模块Rifm下一相邻的输入特征图像路由模块Rifm中;
所述的存内计算模块PE包含数模转换电路和基于非易失性储存器(Non-volatile Memory,NVM)的存内计算器,数模转换电路从输入特征图像路由模块 Rifm的输入输出控制器接收单像素数据,数模转换电路将输入的数字信号转换为模拟信号,发送到存内计算器进行乘累加运算(Multiplication and Accumulation,MAC),再将运算结果转换为数字信号输出到部分和路由模块 Rps;每个部分和路由模块Rps的第一输入端与和自身所在组片Tile前一个相邻的组片Tile中的部分和路由模块Rps的输出端相连,部分和路由模块Rps的输出端与和自身所在组片Tile后一个相邻的组片Tile中的输部分和路由模块Rps的输入端相连,部分和路由模块Rps间的数据传输进行握手传输以保证数据收发的同步,部分和路由模块Rps的第二输入端与自身所在组片Tile中的存内计算模块PE的相连;
所述的部分和路由模块Rps包含加和本地计数器cnt、控制字调度表ctrlwd(control word)、缓存、加法器、输入输出控制器和译码器;
所述的缓存分为两部分,分别储存待求和的部分和与分组和;
所述的控制字调度表ctrlwd用于储存部分和路由模块Rps进行求和计算以及数据收发时所需的指令,控制字指令在初始化阶段,根据输入神经网络的尺寸生成;由于储存部分和路由模块Rps的执行内容具有周期性,调度表中仅储存一个周期内的指令。与所述的双通道输出输出保持一致,控制字调度表 ctrlwd也有两张,分别对应部分和通道与分组和通道的求和以及数据收发。
所述的加法器用于对滑动窗中每一格的乘积结果进行求和;
所述的译码器,根据本地计数器计数结果,从控制字调度表取出当前时刻所需指令,再由译码器控制部分和路由模块Rps的输入输出、求和、储存等操作;加和本地计数器cnt在部分和路由模块Rps开始接收到数据后开始计数,计数结果提供作为相对时间并输入译码器,译码器根据相对时间从控制字调度表提取指令并进行译码,然后按照译码结果控制加法器读取缓存的数据进行加和,获得结果后发送到输入输出控制器;译码器从存内计算模块PE的存内计算器接收乘累加结果数据,并根据和自身部分和路由模块Rps上一相邻的部分和路由模块Rps中的译码器发送过来的部分和与分组和数据,处理后输出到和自身部分和路由模块Rps下一相邻的部分和路由模块Rps的部分和与分组和数据。
在多个组片Tile以行列阵列排布情况下,在相邻列组片组的同一行组片 Tile之间,通过同一行两个组片Tile的部分和路由模块Rps连接。
这样当多个阵列组合时,部分和路由模块Rps能和左右其他列的阵列中对应位置的组片Tile的部分和路由模块Rps进行传输,数据的传输需要进行握手以保证数据收发的同步,用于传输计算的分组和。
相邻相连的部分和路由模块Rps之间通过双通道传输,利用双通道分别传输计算的部分和与分组和,部分和是指卷积计算中滑动窗未达到完整行数对应的乘积和,分组和卷积计算中滑动窗一行或多行对应的乘积和。
若干个连续连接的组片Tile构成一个滑动窗的处理,各个组片Tile分别对应滑动窗中按照行列顺序编号的各个像素的处理,即第1~c个组片Tile对应构成滑动窗的第一行像素的处理,第c+1~2c个组片Tile对应构成滑动窗的第二行像素的处理,依次类推到第c(n-1)+1~cn个组片Tile对应构成滑动窗的第二行像素的处理,c表示滑动窗中每行的像素数量,n表示滑动窗中的行数。
每个当前组片Tile中的部分和路由模块Rps接收上一个组片Tile中的部分和路由模块Rps发送过来的滑动窗处理值的累计值,再累加自身的滑动窗处理值,再传递到之后的各个组片Tile中的部分和路由模块Rps再进行相同方式的不断累加。
若当前组片Tile中的部分和路由模块Rps接收再累加后的累计值达到滑动窗中的完整行数,则当前累计值为分组和,通过分组和的通道传输到下一个组片Tile中的部分和路由模块Rps;
若当前组片Tile中的部分和路由模块Rps接收再累加后的累计值未达到滑动窗中的完整行数,则当前累计值为部分和,通过部分和的通道传输到下一个组片Tile中的部分和路由模块Rps。
本发明提供一种用于进行神经网络计算的NoC基本阵列结构,还可以具备这样的特征,每一个阵列中Tile的排布方式可以配置,可以选择在NoC中可以由一列,即如图7所示的1×K2的阵列组成;也可以由一个方阵,即如图8所示的K×K的阵列组成。由单列的1×K2的阵列变成K×K的阵列,需要将单列的1×K2的阵列呈S形布置,使得K×K的阵列中相邻列之间的上部和下部均间隔跨列连接,并且上部和下部的连接是交替的。
本发明提供一种用于进行神经网络计算的NoC基本阵列结构,还可以具备这样的特征,利用多个阵列进一步组成大型阵列,如4×K2或4×K×K的阵列,进一步提升卷积计算的并行性,并同时具备池化运算的功能。
一个阵列进行神经网络计算中一层卷积层,不同层卷积层的处理分散到不同阵列中进行,输入输出通过路由设备进行收发。每一个阵列对应位置的Tile 之间相互连接,由路由进行双向的数据收发。
所述的路由结构用于图像的神经网络处理,每一个组片Tile代表处理一个像素。
本发明作用与有益效果:
根据本发明提供的可重构的用于神经网络卷积计算的架构,集成了存内计算以及NoC两方面的优势,不仅利用了NVM进行存内计算,突破了冯·诺依曼体系结构下的“储存墙”问题,同时利用具有可灵活扩展的NoC将存内计算核心与路由互连,从而实现存算一体的低功耗神经网络卷积计算,实现了可针对不同神经网络尺寸进行配置,不仅提高了计算性能,还保证了整体架构的灵活性。
附图说明
为了清晰说明本发明中的NoC架构以及实施方案细节,下面对本发明中所需要的附图进行简要说明。
图1为本发明的NoC网络阵列整体结构图;
图2为本发明的Array基本单位(虚线框),以及由多个Array组成的阵列 (点划线框)图;
图3为本发明的NoC基本阵列中Tile的架构图;
图4为本发明的Tile中存内计算模块PE的架构图;
图5为本发明的Tile中输入特征图像路由模块Rifm的架构图;
图6为本发明的Tile中部分和路由模块的架构图;
图7为本发明的一个阵列1×K2排布方式示意图;
图8为本发明的一个阵列K×K排布方式示意图;
图9为本发明的计算过程示意图;
图10为本发明的输入特征图像路由模块Rifm计算流程示意图;
图11为本发明的部分和路由模块计算流程示意图。
图12为本发明实施例中一层神经网络卷积层的输入图像与卷积核示意图
图13为本发明实施例中输入数据的数据流示意图
图14为本发明实施例中分组和与部分和数据流示意图
图15为本发明实施例中相邻列的Tile之间的分组和传输示意图
图16位本发明的Rps中一条控制字的示意图
具体实施方式
为了是本发明的实施细节更加清晰明了,下面结合实施例及上述附图对本发明的可重构的用于神经网络卷积计算的NoC架构进行具体阐释。
如图1所示,利用多个组片Tile组成的大型NoC阵列,记阵列长宽为N。
用于卷积运算的基本单位为一组组片Tile构成的阵列(Array),如图2中的虚线框部分,所需计算的CNN卷积核(Kernel,Ker)的长宽记为K,则基本单位中组片Tile的个数为K2。
如图3所示,每一个组片Tile主要由存内计算模块PE、输入特征图像路由模块Rifm与部分和路由模块Rps构成,PE与Rifm和Rps相连。其中,如图 4所示,PE包括输入输出的附加数模转换电路,以及基于NVM的存内计算单元,储存Ker权重的数据,用于进行MAC运算;如图5所示,输入特征图像路由模块Rifm用于将输入数据分发给PE以及其他组片Tile;如图6所示,部分和路由模块Rps包括用于储存计算数据的缓存(Buffer),用于存放控制字(control word,ctrlwd)调度表的储存,以及用于部分和求和的加法器。
如图12所示,本实施例中,以长和宽为7的图像,即H=7,作为输入, Ker长和宽为3,即K=3。那么,一个阵列中包含9个组片,每个组片的存内计算模块PE中储存Ker中对应序号的像素点的权重。如图13所示,本实施例中输入数据为图像像素按序号依次输入,不需要对图像像素点进行额外的复制与搬移。但是同时也造成阵列Array一次运算的结果与一个滑动窗的运算结果不匹配的问题。比如,第一个滑动窗为Ker与输入图像的1、2、3、8、9、10、15、16、17号像素进行相乘累加,而在一个阵列Array里面需要输入像素点数据流动到储存对应序号的Ker像素点权重的组片后,才可以在存内计算模块中进行乘累加MAC运算,即输入图像的1号像素点流动到第1个组片后进行 MAC运算,输入图像的2号像素点流动到第2个组片后进行MAC运算,输入图像的8号像素点流动到第4个组片后进行MAC运算,输入图像的15号像素点流动到第7个组片后进行MAC运算,以此类推。因此,需要等待到输入图像的17号像素点数据流动到第9个组片完成计算后,与阵列中前面的组片计算结果求和,才得到第一个滑动窗的计算结果。为此,每一个组片中存内计算模块PE的计算结果都需要由部分和路由模块Rps进行传输与求和。对滑动窗按行进行分组,也即对基本单位Array分组,记第j个滑动窗计算时第i组的和为分组和(Gi (j)),记尚未求和得到分组和的求和结果记为部分和(Pi (j))。分组和均在第nK个组片的部分和路由模块Rps中产生,n=1,2…K-1;部分和则在其余组片的Rps中产生。本发明Tile中的路由Rifm即负责输入数据流的收发,决定是否发送给PE进行MAC运算;路由Rps即负责输出数据流的处理与收发,将输出结果与其他PE的输出结果求和得到分组和,将不同的分组和进行求和合并得到卷积结果。由于输入数据为图像像素依次输入,分组和(Gi (j))可以在相邻的时间内计算完成,Rps发送部分和与同一组Tile的计算结果求和为分组和。但同一个滑动窗不同的分组和(Gi (j),i=0,1,…,K-1)并不能够同时计算完成,因此Rps还需要将分组和缓存以等待求和。
在本实施例中分组和在第3,6,9个组片生成。以第1组的分组和为例,第1组的分组和为前3个组片计算结果的和,第1个组片中的部分和路由模块 Rps根据控制字ctrlwd,将计算结果,即部分和发送给第2个组片中的Rps;第2个组片中的Rps根据控制字ctrlwd将接收到的数据缓存,等输入图像2号像素点数据在本组片的PE中进行计算,再控制字ctrlwd将被缓存的数据与计算结果求和得到部分和并发送给第3个组片;第3个组片中的Rps根据控制字 ctrlwd将接收到的数据缓存,等输入图像3号像素点数据在本组片的PE中进行计算,再控制字ctrlwd将被缓存的数据与计算结果求和得到分组和,该分组和将被传输到下一个产生分组和的组片,即第6个组片,与下一个分组和,即输入图像的8、9、10号像素点的计算结果之和,进行求和。如图14所示,其余的部分和于分组和的产生方式以及传输方式也以此类推,在一个阵列中的最后一个组片,即第9个,产生的分组和与之前接收到的分组和求和即为一个滑动窗卷积计算的结果。
本实施例中,一个阵列Array也可以由多列组片Tile组成一个较大的阵列,每列组片,记阵列中组片的列数为B,在本实施例中以B=4具体说明多列组片对于提高计算并行性的作用。如图15所示,在本实施例中,第1列组片依次输入图像第1、B+1、2B+1…,即第1、5、9、…、49行的像素点数据,第 2列组片依次输入图像第2、B+2、2B+2…,即第2、6、10、…、46行的像素点数据,以此类推。本实施例中一层卷积计算中的第一个滑动窗的计算结果,为第1列组片中第3个产生的分组和,与第2列组片中第6个产生的分组和,与第3列组片中第9个产生的分组和之和。因此,与单列组片的不同之处在于,每一个分组和产生后不是传输到所在列的第K2个组片,而是先通过部分和路由模块Rps横向传输到滑动窗中最后一个分组和所在列,再通过Rps纵向传输到第K2个组片,并求和得到一个滑动窗的计算结果。在本实施例中,第一个滑动窗的第一个分组和在第1列的第3个组片产生后,部分和路由模块Rps 根据控制字ctrlwd发送给第2列的第3个组片,第2列的第3个组片中的Rps 根据ctrlwd将接收数据继续发送给第3列的第3个组片,第3列的第3个组片中的Rps根据ctrlwd将接收数据发送给同一列的第4个组片,直到第9个;类似的,第一个滑动窗的第二个分组和在第2列的第6个组片产生后,部分和路由模块Rps根据控制字ctrlwd发送给第3列的第6个组片,第3列的第6个组片中的Rps根据ctrlwd将接收数据发送给同一列的第7个组片,直到第9个;第一个滑动窗的第三个分组和在第3列的第9个组片产生后,与缓存中的前两个分组和求和即得到一个滑动窗卷积计算的结果。因此,由B列组片组成的大型阵列,一次可以处理多行输入图像的像素点数据,计算过程中也不需要对输入图像像素点做额外的复制,只需要按次序输入组片,因此能够有效第提高计算的并行性,与单列的阵列相比,计算速度大约提升B倍。
本实施例中,在Tile部分和路由模块Rps中内置控制字调度表中的一条控制字ctrlwd对部分和路由模块Rps的行为进行控制。由于输入数据流的特性,每一个组片Tile的计算、收发数据等行为均有周期性,周期即为输入图像长宽,记为H,即组片以处理一行输入图像的像素点作为一个周期。因此,所有的 ctrlwd根据所需计算网络的尺寸在计算前的初始化阶段生成,并储存到部分和路由模块Rps中的缓存形成ctrlwd调度表。每一个部分和路由模块Rps可以根据自身的计数器计算出所需指令的键值,在对应的时刻取出对应的ctrlwd对路由以及计算模块进行控制,其本质相当于哈希表。
如图16所示,每一条控制字由一串0或1的序列组成,序列包含不同的分区,不同的分区控制部分和路由模块的不同类型操作,如输入、输出、储存、求和等。每一个分区占据一定的位数,利用简单的编码来指定具体的操作。比如,部分可路由模块控制第二个输入端,即自身所在组片Tile中的存内计算模块PE的输入端,的分区只需要1位,1代表有输入,需要输入输出控制器接收数据;0代表无输入,输入输出控制器无需执行操作。对于部分和与分组和的两套控制字,其区别在于,部分和控制字仅控制部分和路由模块第一个输入与输出端的部分和通道,连接自身所在组片中的存内计算模块PE第二个输入端,以及用于对部分和求和的加法器和储存部分和的缓存;而分组和控制字仅控制部分和路由模块第一个输入与输出端的分组和通道,以及储存分组和的缓存。
本实施例中以一列中第4、5、6个组片的一个分组和的计算过程说明控制字的具体作用。根据组片执行的周期性,每处理输入图像的一行像素点为一个周期,即周期为H=7,一张控制字调度表中包含H条控制字。而对于一个Ker 中的像素点,即一个组片,只需要与一行的输入图像的H-K+1个像素点数据进行乘累加运算。因此的每一个部分和路由模块Rps的控制字调度表中的前H- K+1条控制字的输入分区、输出分区和储存分区均为1。由于第4个组片不会接收到部分和,因此不需要进行求和操作,即仅第5、6个组片的Rps中部分和控制字调度表的前H-K+1条控制字的求和分区非零,其值分别为01和10对应两个组片的Rps中的不同的求和。由于分组和控制部分仅有对应输入输出控制器和缓存,因此分组和控制字均不需要求和分区。利用每一个组片的Rps中的本地计数器提供的相对时间cnt,译码器在控制字调度表中提取相应位置的控制字,其位置为cnt除以H所得到的余数,Rps根据控制字分别控制输入输出控制器、缓存和加法器。在本实施例中,部分和路由模块的所有操作都由控制字调度表中的控制字确定,译码器通过取指令与译码完成Rps的操作。相比于以往的片上网络架构,需要额外在输入数据中加入所需执行操作的信息来告知路由模块如何对该数据进行处理,本发明能够有效地减少传输数据量,简化整体的计算流程。
如图9所示,本实施例卷积计算过程分为初始化阶段和卷积计算阶段。在初始化阶段,每一个Tile的PE中储存不同Ker中对应位置像素点的不同通道的权重,Rps根据所对应的Ker位置生成两张ctrlwd调度表。在进行卷积计算阶段,将输入的一张特征图像分割为多通道的像素点(通道数记为C),依次输入第一个Tile,对于每一个Tile,其计算流程如下:
1.Rifm接收输入数据,再将其发送给下一个Tile,同时根据计数器判断是否将数据发送给PE。对cnt用周期H取模,若结果在[0,H-K+1],则需要将数据发送给PE;否则只需要发送给下一个Tile的Rifm。如图10所示。
2.PE接收到输入数据后进行MAC运算。
3.Rps根据计数器调取调度表的指令,对本地计数器的计数结果cnt用周期H取模,结果即为指令在调度表中的位置。分别从两张ctrlwd调度表中取出部分和ctrlwdp和分组和ctrlwdg,并合并为一条ctrlwd。Rps对ctrlwd进行译码,并执行对应操作,如图11所示。
本实施例中阵列Array中每一组Tile内Rps的执行行为相近,在输入数据与PE中的权重对应时,ctrlwd控制进行读取PE计算结果、求和以及收发部分和的操作;当输入数据与PE中的权重不对应时,ctrlwd为空指令,不进行任何操作。一般情况下每组Tile的Rps,从PE读取计算结果,与Buffer中对应的部分和求和,得到部分和并通过P通道发送到下一个Tile;同时将接收到的部分和储存在Buffer进行等待与之后PE的计算结果求和。但Array中有三类Tile 有特殊情况:
1.每组第一个Tile的Rps,仅从PE读取计算结果并从P通道发送到下一个Tile。
2.每组最后一个Tile的Rps,求和得到分组和并通过G通道发送到下一个 Tile。
3.Array中最后一个Tile的Rps,还需要对分组和即卷积计算结果进行激活。
本实施例中,池化操作均在每一个阵列的最后一个Rps中进行,Rps将激活结果缓存,等待需要进行池化的数据,当一次池化所需数据集齐后取最大值进行输出。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (7)
1.一种用于可重构神经网络处理器的路由结构,其特征在于:
包含至少一个NoC基本阵列Array,每一个阵列Array主要有多个组片Tile排布组成,每一个NoC基本阵列Array用于神经网络中一层卷积层的计算,组片Tile的数量为卷积层的卷积核Ker长或宽尺寸K的平方,即一个NoC基本阵列Array由K2个组片Tile组成;
多个组片Tile以单列、单行或者行列阵列排布:
在多个组片Tile以单列或者单行排布情况下,每列/行的相邻组片Tile之间连接并依次数据传递;
在多个组片Tile以行列阵列排布情况下,每列的相邻组片Tile之间连接并依次数据传递形成一列组片组,然后在相邻列组片组之间连接并平行双向传递数据。
2.根据权利要求1所述的一种用于可重构神经网络处理器的路由结构,其特征在于:每一个组片Tile包括依次连接的输入特征图像路由模块Rifm、存内计算模块PE与部分和路由模块Rps;相邻组片Tile的输入特征图像路由模块Rifm连接,相邻组片Tile的部分和路由模块Rps连接。
3.根据权利要求1所述的一种用于可重构神经网络处理器的路由结构,其特征在于:每个输入特征图像路由模块Rifm的输入端与和自身所在组片Tile前一个相邻的组片Tile中的输入特征图像路由模块Rifm的输出端相连,输入特征图像路由模块Rifm的第一输出端与和自身所在组片Tile后一个相邻的组片Tile中的输入特征图像路由模块Rifm的输入端相连,输入特征图像路由模块Rifm间的数据传输进行握手传输以保证数据收发的同步,输入特征图像路由模块Rifm的第二输出端与自身所在组片Tile中的存内计算模块PE的相连;
所述的输入特征图像路由模块Rifm包含特征本地计数器cnt和输入输出控制器,特征本地计数器cnt在输入特征图像路由模块Rifm开始接收到数据后开始计数,计数结果提供作为相对时间;图像中单像素数据输入到输入输出控制器,输入输出控制器实时根据特征本地计数器cnt的计数结果,与输入到神经网络一层卷积层中的输入图像的尺寸H进行判断当前时刻是否向存内计算模块PE和输入特征图像路由模块Rifm发送数据;特征本地计数器cnt的计数结果除以尺寸H的余数,若余数在0-H-K+1之间,K表示卷积层的卷积核Ker的长或宽尺寸,则输入输出控制器向存内计算模块PE发送单像素数据,输入输出控制器同时将单像素数据输出发送到和自身输入特征图像路由模块Rifm下一相邻的输入特征图像路由模块Rifm中;
所述的存内计算模块PE包含数模转换电路和存内计算器,数模转换电路从输入特征图像路由模块Rifm的输入输出控制器接收单像素数据,数模转换电路将输入的数字信号转换为模拟信号,发送到存内计算器进行乘累加运算,再将运算结果转换为数字信号输出到部分和路由模块Rps;每个部分和路由模块Rps的第一输入端与和自身所在组片Tile前一个相邻的组片Tile中的部分和路由模块Rps的输出端相连,部分和路由模块Rps的输出端与和自身所在组片Tile后一个相邻的组片Tile中的输部分和路由模块Rps的输入端相连,部分和路由模块Rps间的数据传输进行握手传输以保证数据收发的同步,部分和路由模块Rps的第二输入端与自身所在组片Tile中的存内计算模块PE的相连;
所述的部分和路由模块Rps包含加和本地计数器cnt、控制字调度表ctrlwd、缓存、加法器、输入输出控制器和译码器;
所述的缓存分为两部分,分别储存待求和的部分和与分组和;
所述的控制字调度表ctrlwd用于储存部分和路由模块Rps进行求和计算以及数据收发时所需的指令,控制字指令在初始化阶段,根据输入神经网络的尺寸生成;
所述的加法器用于对滑动窗中每一格的乘积结果进行求和;
所述的译码器,根据本地计数器计数结果,从控制字调度表取出当前时刻所需指令,再由译码器控制部分和路由模块Rps的输入输出、求和、储存等操作;加和本地计数器cnt在部分和路由模块Rps开始接收到数据后开始计数,计数结果提供作为相对时间并输入译码器,译码器根据相对时间从控制字调度表提取指令并进行译码,然后按照译码结果控制加法器读取缓存的数据进行加和,获得结果后发送到输入输出控制器;译码器从存内计算模块PE的存内计算器接收乘累加结果数据,并根据和自身部分和路由模块Rps上一相邻的部分和路由模块Rps中的译码器发送过来的部分和与分组和数据,处理后输出到和自身部分和路由模块Rps下一相邻的部分和路由模块Rps的部分和与分组和数据。
4.根据权利要求1所述的一种用于可重构神经网络处理器的路由结构,其特征在于:在多个组片Tile以行列阵列排布情况下,在相邻列组片组的同一行组片Tile之间,通过同一行两个组片Tile的部分和路由模块Rps连接。
5.根据权利要求4所述的一种用于可重构神经网络处理器的路由结构,其特征在于:相邻相连的部分和路由模块Rps之间通过双通道传输,利用双通道分别传输计算的部分和与分组和,部分和是指卷积计算中滑动窗未达到完整行数对应的乘积和,分组和卷积计算中滑动窗一行或多行对应的乘积和。
6.根据权利要求5所述的一种用于可重构神经网络处理器的路由结构,其特征在于:若干个连续连接的组片Tile构成一个滑动窗的处理,各个组片Tile分别对应滑动窗中按照行列顺序编号的各个像素的处理。
7.根据权利要求1所述的一种用于可重构神经网络处理器的路由结构,其特征在于:所述的路由结构用于图像的神经网络处理,每一个组片Tile代表处理一个像素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011481685.8A CN113159302B (zh) | 2020-12-15 | 2020-12-15 | 一种用于可重构神经网络处理器的路由结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011481685.8A CN113159302B (zh) | 2020-12-15 | 2020-12-15 | 一种用于可重构神经网络处理器的路由结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113159302A true CN113159302A (zh) | 2021-07-23 |
CN113159302B CN113159302B (zh) | 2022-07-19 |
Family
ID=76882578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011481685.8A Active CN113159302B (zh) | 2020-12-15 | 2020-12-15 | 一种用于可重构神经网络处理器的路由结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113159302B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114330658A (zh) * | 2021-12-28 | 2022-04-12 | 北京航天自动控制研究所 | 一种动态可重构的卷积神经网络多核加速器 |
WO2023116314A1 (zh) * | 2021-12-23 | 2023-06-29 | 哲库科技(上海)有限公司 | 一种神经网络加速装置、方法、设备和计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282375A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Generating Program Fragments Using Keywords and Context Information |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110378468A (zh) * | 2019-07-08 | 2019-10-25 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
CN110751280A (zh) * | 2019-09-19 | 2020-02-04 | 华中科技大学 | 一种应用于卷积神经网络的可配置卷积加速器 |
US20200311200A1 (en) * | 2019-03-29 | 2020-10-01 | Western Digital Technologies, Inc. | Neural networks using data processing units |
-
2020
- 2020-12-15 CN CN202011481685.8A patent/CN113159302B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282375A1 (en) * | 2013-03-15 | 2014-09-18 | Microsoft Corporation | Generating Program Fragments Using Keywords and Context Information |
US20200311200A1 (en) * | 2019-03-29 | 2020-10-01 | Western Digital Technologies, Inc. | Neural networks using data processing units |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110378468A (zh) * | 2019-07-08 | 2019-10-25 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
CN110751280A (zh) * | 2019-09-19 | 2020-02-04 | 华中科技大学 | 一种应用于卷积神经网络的可配置卷积加速器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023116314A1 (zh) * | 2021-12-23 | 2023-06-29 | 哲库科技(上海)有限公司 | 一种神经网络加速装置、方法、设备和计算机存储介质 |
CN114330658A (zh) * | 2021-12-28 | 2022-04-12 | 北京航天自动控制研究所 | 一种动态可重构的卷积神经网络多核加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN113159302B (zh) | 2022-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10223334B1 (en) | Native tensor processor | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN112950656A (zh) | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 | |
US7673118B2 (en) | System and method for vector-parallel multiprocessor communication | |
KR20210002495A (ko) | 다중 포트 메모리를 포함하는 벡터 레지스터 파일을 갖는 행렬 벡터 곱셈기 | |
CN103218348B (zh) | 快速傅里叶变换处理方法和系统 | |
CN111124675A (zh) | 一种面向图计算的异构存内计算设备及其运行方法 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN113159302B (zh) | 一种用于可重构神经网络处理器的路由结构 | |
CN114254733A (zh) | 使用树形直接存储器存取(dma)总线的神经网络权重分布 | |
US11954580B2 (en) | Spatial tiling of compute arrays with shared control | |
CN116842998A (zh) | 一种基于分布式优化的多fpga协同训练神经网络方法 | |
Shabani et al. | Hirac: A hierarchical accelerator with sorting-based packing for spgemms in dnn applications | |
CN113240074B (zh) | 一种可重构神经网络处理器 | |
CN107368459B (zh) | 基于任意维数矩阵乘法的可重构计算结构的调度方法 | |
CN111522776B (zh) | 一种计算架构 | |
CN115496190A (zh) | 一种面向卷积神经网络训练的高效可重构硬件加速器 | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
CN116911365A (zh) | 一种适用于存算一体阵列的数据流通路装置及其方法 | |
Ji et al. | Hubpa: High utilization bidirectional pipeline architecture for neuromorphic computing | |
US11922306B2 (en) | Tensor controller architecture | |
US7516059B2 (en) | Logical simulation device | |
CN110766150A (zh) | 一种深度卷积神经网络硬件加速器中的区域并行数据载入装置及方法 | |
CN113313251B (zh) | 一种基于数据流架构的深度可分离卷积融合方法及系统 | |
US11972349B1 (en) | Flexible compute array utilization in a tensor processor |
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 |