人工神经网络处理装置转让专利

申请号 : CN201710258566.8

文献号 : CN107679620B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 方绍峡隋凌志于谦王俊斌单羿

申请人 : 赛灵思公司

摘要 :

本申请公开一种用于运行神经网络的处理器,其包括内存控制器组、片上总线和处理器内核。处理器内核进一步包括:寄存器、第一指令单元、第二指令单元、指令分发单元、数据传输控制器、缓存模块和计算模块。该处理器支持多种神经网络算法并且可以显著提高运算效率。

权利要求 :

1.一种用于运行神经网络的神经网络处理器,包括:内存控制器组,其包括一个或多个内存控制器,每个内存控制器用于访问对应的外部储存芯片,所述外部储存芯片储存神经网络数据和指令;

片上总线,用于内存控制器组与处理器内核阵列之间的通信;和处理器内核阵列,所述处理器内核阵列包括一个或多个处理器内核,每个处理器内核进一步包括:寄存器,用于配置神经网络处理器的工作参数和获取神经网络处理器的工作状态;

第一指令单元,用于获取并解析外部储存芯片中的指令;

第二指令单元,用于获取并解析外部储存芯片中的指令;

指令分发单元,用于选择启动第一指令单元和第二指令单元中的一个,并将启动的指令单元的解析结果传递至数据传输控制器;

数据传输控制器,用于基于解析结果将外部储存芯片中的神经网络数据写入缓存模块,以及将计算模块的计算结果从缓存模块写回外部储存芯片;

缓存模块,用于储存神经网络数据和计算模块的计算结果,所述计算结果包括中间计算结果和最终计算结果;和计算模块,其包括一个或多个计算单元,用于进行运行神经网络所需的计算。

2.根据权利要求1所述的神经网络处理器,其中,所述第一指令单元还包括:第一指令获取单元,用于获取外部储存芯片组中的指令;

第一指令解析单元,用于对获取的指令进行解析以获得解析结果。

3.根据权利要求1所述的神经网络处理器,其中,所述第二指令单元还包括:第二指令获取单元,用于获取外部储存芯片组中的指令;

第二指令解析单元,用于对获取的指令进行解析以获得解析结果。

4.根据权利要求1所述的神经网络处理器,其中,指令分发单元对第一指令单元或第二指令单元的解析结果进一步解码,并将解码结果发送至数据传输控制器。

5.根据权利要求1所述的神经网络处理器,其中,计算模块还包括:卷积计算单元阵列,包括多个卷积计算单元,每个卷积计算单元用于进行卷积计算并获得卷积计算结果;和混合计算单元,用于进行混合计算并获得混合计算结果。

6.根据权利要求5所述的神经网络处理器,其中,卷积计算单元还包括:乘法器阵列,用于进行卷积计算并获得卷积计算结果;

加法树,其与乘法器阵列相连,用于对卷积计算结果求和;和非线性计算阵列,其与所述加法树相连,用于把非线性函数操作应用到加法树的输出上。

7.根据权利要求5所述的神经网络处理器,其中,混合计算单元还包括:池化计算单元、逐元素计算单元、尺寸变换计算单元和全连接计算单元。

8.根据权利要求1所述的神经网络处理器,其中,所述缓存模块进一步包括:数据写调度单元,用于将神经网络数据和计算模块的计算结果写入缓存池;

缓存池,用于储存神经网络数据和计算模块的计算结果,所述计算结果包括中间计算结果和最终计算结果;

数据读调度单元,用于从缓存池读取计算所需的数据和计算模块的计算结果。

9.根据权利要求8所述的神经网络处理器,其中,所述缓存池进一步包括:一个或多个缓存块。

10.根据权利要求8所述的神经网络处理器,其中,数据写调度单元还包括:一个或多个写调度通道,每个写调度通道用于与所述一个或多个计算单元中的对应计算单元的输出连通;和写仲裁单元,用于根据预定规则对所述一个或多个写调度通道进行排队,从而对所述一个或多个计算单元的计算结果的写入进行调度。

11.根据权利要求8所述的神经网络处理器,其中,数据读调度单元还包括:一个或多个读调度通道,每个读调度通道用于与所述一个或多个卷积计算单元中的对应计算单元的输入连通;和写仲裁单元,用于根据预定规则对所述一个或多个读调度通道进行排队,从而对所述一个或多个卷积计算单元的计算结果的读取进行调度。

说明书 :

人工神经网络处理装置

发明领域

[0001] 本申请涉及人工神经网络,例如卷积神经网络(CNN)。更具体地,本申请涉及一种用于实现人工神经网络的处理装置。

背景技术

[0002] 人工智能近年得到迅速发展,极大地影响了人们的生活。基于人工神经网络,尤其是卷积神经网络(CNN,Convolutional Neural Network)的方法在很多应用中、例如在计算机视觉领域中得到广泛使用。
[0003] 图1示出了典型的深度卷积神经网络(CNN)的实施例。如图1所示,典型的CNN由一系列有序运行的层组成。
[0004] CNN模型的参数被称为“权重”。CNN的第一层读取输入图像,并输出一系列的特征图。下一层读取由上一层产生的特征图,并输出新的特征图。最后,一个分类器输出输入图像可能属于的每一类别的概率。CNN中两种基本层类型包括卷积层(CONV层)和全连层(FC层),在CONV层之后通常有池化层(Pooling层)。
[0005] 例如,对于一个CNN层, 表示第j个输入特征图, 表示第i个输出特征图,bi表示第i个输出图的偏置项。对于CONV层,nin和nout分别代表输入和输出特征图的数量。对于FC层,nin和nout分别代表输入和输出特征向量的长度。
[0006] 此时,CONV层以一系列特征图作为输入,并以卷积内核卷积获得输出特征图。通常与CONV层相连的非线性层,即,非线性激励函数被施加到输出特征图中的每个元素。
[0007] CONV层可以用表达式(1)表示:
[0008]
[0009] 其中,gi,j是应用到第j个输入特征图和第i个输出特征图的卷积内核。
[0010] FC层是应用于输入特征向量上的一个线性变换,其可以用表达式(2)表示:
[0011] fout=Wfin+b  (2)
[0012] 其中,W是一个nout×nin变换矩阵,b是偏置项。应注意,对于FC层,输入的不是几个二维特征图的组合,而是一个特征向量。因此,在表达式(2)中,参数nin和nout实际上对应于输入和输出特征向量的长度。
[0013] 池化层通常与CONV层相连,用于输出每个特征图中的每个分区的最大值或平均值。池化层的最大值可以由表达式(3)表示:
[0014]
[0015] 其中,p是池化内核的大小。这种非线性的“降采样”不仅为下一层降低了特征图的大小和计算,还提供了一种平移不变性。
[0016] 相较于传统算法,CNN需要较高的运算量与带宽需求。目前主要依靠中央处理器(CPU)阵列、图形处理器(GPU)阵列完成计算。然而,CPU、GPU等通用处理器不能充分利用卷积神经网络的特点,因此导致运算效率较低,带来了较大的功耗、成本开销。此外,如今愈发需要在终端设备上以低成本、低功耗、高性能来完成人工智能算法的计算,而现有通用处理器无法满足该需求。

发明内容

[0017] 为了克服上述缺点,本申请提出一种新的用于运行神经网络的神经网络处理装置,其包括:内存控制器组,其包括一个或多个内存控制器,每个内存控制器用于访问对应的外部储存芯片,所述外部储存芯片储存神经网络数据和指令;片上总线,用于内存控制器组与处理器内核阵列之间的通信;和处理器内核阵列,所述处理器内核阵列包括一个或多个处理器内核,每个处理器内核进一步包括:寄存器,用于配置神经网络处理器的工作参数和获取神经网络处理器的工作状态;第一指令单元,用于获取并解析外部储存芯片中的指令;第二指令单元,用于获取并解析外部储存芯片中的指令;指令分发单元,用于选择启动第一指令单元和第二指令单元中的一个,并将启动的指令单元的解析结果传递至数据传输控制器;数据传输控制器,用于基于指令模块的解析结果将神经网络数据写入数据写调度单元,以及将计算模块的计算结果从数据读调度单元写回外部储存芯片;缓存模块,用于储存神经网络数据和计算结果,所述计算结果包括中间计算结果和最终计算结果;和计算模块,其包括一个或多个计算单元,用于进行运行神经网络所需的计算。
[0018] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0019] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0020] 图1是示出了典型的深度卷积神经网络的示意图;
[0021] 图2a和图2b示出了实现图1的深度卷积神经网络的一个示例性硬件构造;
[0022] 图3示出了实现图1的深度卷积神经网络的另一个示例性硬件构造;
[0023] 图4示出了根据本申请实施例的用于实现卷积神经网络的示例性卷积神经网络处理装置;
[0024] 图5示出了图4中用于实现卷积神经网络算法的外部储存芯片构成;
[0025] 图6示出了根据实施例的图4中两个指令单元和一个指令分发单元的内部构造及其工作机制;
[0026] 图7示出了根据一个实施例的数据写调度单元、缓存池和数据读调度单元的内部构造及其工作机制;
[0027] 图8示出了根据本申请实施例的卷积神经网络处理装置的示例性工作流程;
[0028] 图9示出了根据本申请实施例的卷积神经网络处理装置在并行工作模式下的示例性工作流程。

具体实施方式

[0029] 下面将结合附图,对本申请的技术方案进行清楚、完整的描述。
[0030] 申请人之前的研究成果
[0031] 发明人之一曾经提出过如下用于实现卷积神经网络(CNN)的硬件构造。
[0032] 图2a和图2b示出了实现CNN的一个实施例性硬件构造。
[0033] 如图2a所示,整个硬件构造可以分为两个部分:可编程处理模块(PL)和通用处理系统(PS)。
[0034] 根据一个实施例,PL端是FPGA芯片,其配置有:复杂计算核、缓冲区、控制器和直接存储器访问(DMA)。
[0035] 具体地,复杂计算核包括多个处理单元(PE),处理单元负责CNN的CONV层、池化层,和FC层的大多数计算任务。缓冲区包括输入缓冲区和输出缓冲区,用于准备处理单元使用的数据并存储结果。控制器用于获取外部存储器上的指令、对其解码并对除了DMA以外的所有模块进行调配。DMA用于传输PS端的外部存储器和PL端的缓冲区之间的数据和指令。
[0036] 通用处理系统包括通用处理器(CPU)和外部存储器。外部存储器存储所有的CNN模型参数、数据和指令。CPU运行裸机程序并通过配置DMA帮助协调整个推理阶段。此外,也在CPU上实现Softmax函数。
[0037] 在一个实例中,基于图2a的硬件结构,完整的图像推理过程包括顺序执行的三个阶段:数据准备、数据处理和结果输出。
[0038] 数据准备阶段:在该阶段,计算所需的所有数据,包括:存储在外部存储器中的图像数据、模型数据和控制数据。其中,控制数据包括DMA使用的缓冲区描述符(BD)和控制器使用的指令。此时,尚未从相机获得图像数据。
[0039] 数据处理阶段:当所有数据准备好时,CPU主机开始给DMA配置预先存储在外部存储器中的BD。配置的DMA加载数据和指令给控制器,触发可编程处理模块上的计算过程。每次DMA中断,CPU主机为每个DMA的BD列表加上自持指针地址,配置新的BD,这一阶段工作直到最后的BD转移。
[0040] 结果输出阶段:当收到来自DMA的最后的BD中断时,处理器主机将Softmax函数用于来自PE的最终结果,并输出结果。
[0041] 图2b示出了图2a的计算单元的结构。
[0042] 如图2b所示,计算单元包括复杂卷积核、加法器树、非线性模块(NL)、池化模块(Pool)、偏置移位模块和数据移位模块。
[0043] 复杂卷积核采用行缓冲设计,当输入数据经过行布局的缓冲时,行缓冲释放一个窗口选择函数给输入图像。因此一个乘法器和一个加法器树跟随被选择窗口计算卷积,每个循环一批数据。
[0044] 加法器树用于对卷积器的所有结果求和。它可以加上来自输出缓冲区的中间数据或来自输入缓冲区的偏置数据。
[0045] NL模块是用于非线性激励函数的输入数据流。例如,所述函数可以是ReLU函数。
[0046] 池化模块利用行缓冲区,将特定的2×2窗口用于输入数据流,并输出其中的最大值。
[0047] 偏置移位模块和数据移位模块支持动态量化范围的转换。具体而言,偏置移位模块针对权重进行移位,数据移位模块针对数据进行移位。
[0048] 利用图2a和图2b的硬件构造,可以优化计算能力,缩短处理数据的时间。
[0049] 图3示出了实现CNN的另一个实施例性硬件构造。
[0050] 如图3所示,在该实施例中,通用处理器(CPU)用于调度可编程处理模块(PL)和直接存储器访问器(DMA)。
[0051] DMA分别与CPU、可编程处理模块和外部存储器连接,用于CPU和可编程处理模块之间的通信。具体而言,DMA通过FIFO在外部存储器和可编程处理模块之间传输数据。
[0052] 专用加速器包括:控制器、计算核和缓冲区。其中
[0053] 控制器用于获取指令,并基于所述指令对计算核进行调度。
[0054] 计算核用于基于指令和数据进行计算任务,并且包括:卷积核、加法器树、非线性模块等。卷积核的大小通常只有几个选项如3×3、5×5和7×7。例如,为卷积操作设计的二维卷积器是一个3×3窗口。加法器树对卷积器的所有结果求和。非线性模块适用于非线性激励函数的输入数据流。例如,所述函数可以是ReLU函数。此外,最大池化模块(未示出)用于池化操作,例如,将特定的2×2窗口用于输入数据流,并输出其中的最大值。
[0055] 缓冲区用于保存专用加速器的数据和指令,并且包括输入数据缓冲区、输出数据缓冲区、偏置移位模块。偏置移位用于支持动态量化范围的转换。例如,针对权重进行移位,或者针对数据进行移位。输入数据缓冲区还可以包括输入数据缓冲器和权重缓冲器。输入数据缓冲器可以是线状数据缓冲器,用于保存运算需要的数据,并延迟释放所述数据,以实现所述数据的重用。
[0056] 本发明的进一步改进
[0057] 在本申请中,基于图2a、图2b和图3的硬件构造,发明人提出一种改进的用于实现人工神经网络算法、例如CNN算法的处理装置,其旨在充分利用神经网络的算法特性与数据特点,在同等晶体管数与功耗下,实现较高的神经网络运算效率。
[0058] 图4示出了根据本申请实施例的用于实现卷积神经网络的示例性卷积神经网络处理装置。
[0059] 如图4所示,根据本申请实施例的卷积神经网络处理装置包括卷积神经网络处理器1(Deep Learning Processor Unit,以下简称DPU)和外部储存芯片阵列2,二者通过高速接口连接。
[0060] 图5示出了图4中用于实现卷积神经网络算法的外部储存芯片构成。已知,训练好的卷积神经网络算法包括网络拓扑结构和神经网络参数。如上文所述,卷积神经网络模型的参数被称为“权重”。
[0061] 如图5所示,卷积神经网络拓扑结构通过编译器编译成指令流数据25。指令流数据25与神经网络参数26、图像数据27,特征图数据28(即,中间运算结果)一起存储在外部储存芯片组2中。
[0062] 返回参照图4,DPU1包括通用处理器内核6、内存控制器组3、片上高速互联总线7和卷积神经网络处理器内核阵列8,其中各单元通过片上高速互联总线7通信。
[0063] 在一个实施例中,内存控制器组3可以包括m个内存控制器,每个内存控制器可以控制一组外部储存芯片。例如,内存控制器-1(由附图标记5表示)可以用于存取外部储存芯片组-1(由附图标记4表示)中的数据。应理解,可以根据实际需要对内存控制器、外部储存芯片组的数目进行配置,本申请不对此进行限制。
[0064] 通用处理器内核6用于在处理过程开始时将指令流数据25基址写入配置寄存器13并启动DPU;接收DPU任务完成中断信号,对DPU的卷积神经网络计算结果进行进一步分析处理;执行各类非CNN任务等。
[0065] 卷积神经网络处理器内核阵列8可以包括一个或多个卷积神经网络处理器内核。例如,在本实施例中,卷积神经网络处理器内核阵列8包括n个卷积神经网络处理器内核9。
应理解,可以根据实际需要对卷积神经网络处理器内核的数目进行配置,本申请不对此进行限制。
[0066] 通过在卷积神经网络处理器内核阵列中配置多个卷积神经网络处理器内核,可以例如支持多张图片、多种算法的并行运行,使卷积神经网络处理器具备极高的并发处理能力。
[0067] 更具体地,如图4所示,每个卷积神经网络处理器内核9可以包括一个或多个指令单元、指令分发单元12,配置寄存器13、数据传输控制器14、数据写调度单元15、缓存池16、数据读调度单元17、和计算模块,该计算模块包括一个或多个计算单元。
[0068] 配置寄存器13用于暂存指令流数据25基址以及其他DPU工作所需的辅助配置信息。此外,通用处理器内核可以从配置寄存器13获得当前各个DPU的工作状态信息。
[0069] 指令单元用于获得指令流数据25,并将指令解码并传送至指令分发单元12。指令单元可以包括指令获取模块和指令解析模块。其中,指令获取模块用于向总线申请获取位于外部储存芯片组的指令数据。指令解析模块用于解码指令,解析指令依赖关系。
[0070] 指令分发单元12用于进一步将指令解析为用于数据搬移与计算的各执行单元的控制信号,并将控制信号传递至相应的执行单元,执行单元可以是数据传输控制器、数据写调度单元、缓存池、数据读调度单元、和所述一个或多个计算单元。
[0071] 在一个实施例中,卷积神经网络处理器内核9可以包括多个指令单元1、2。
[0072] 图6示出了根据本发明实施例的两个指令单元和一个指令分发单元的内部构造及其工作机制。
[0073] 如图6所示,卷积神经网络处理器内核可以包括指令单元-1和指令单元-2,每个指令单元包括指令获取模块和指令解析模块,并且分别与指令分发单元通信。指令分发单元继而与各执行单元通信,以将控制信号传递至相应的执行单元。
[0074] 在这种构造下,当执行指令单元-1中的指令流时,若执行单元因为访存延迟或其他原因停顿,指令分发单元可以暂停该指令单元并启动另一指令单元,具体地,指令分发单元可以发送保存现场控制信号并启动指令单元-2,以获取指令单元-2中的另一条指令流并继续执行。
[0075] 通过在卷积神经网络处理器内核中配置两个指令单元,可以提高处理器的运算效率。
[0076] 具体而言,传统的处理器内核通过提高处理器的时钟频率与片上缓存容量来改善性能,但在实际应用中,由于指令相关、数据依赖、资源冲突等原因,执行单元往往得不到充分利用,使得处理器的效率受到限制。
[0077] 而在本实施例中,如上文所述,通过在卷积神经网络处理器内核中设置两个指令单元,可以同时获取两个独立的指令流,从而有效降低指令间的相关性,并且在其中一条指令流执行停顿时,可以切换至另一条指令流继续执行。这样,通过多个指令单元,可以复用同一套计算单元阵列,从而保证计算单元在尽可能多的时间里处于工作状态以使计算单元的效率最大化。
[0078] 应理解,在该实施例中,出于资源与效率平衡的考虑,处理器内核支持两个指令单元。然而,根据实际需要,处理器内核可以支持一个、两个或更多个指令单元,本发明不对此进行限制。
[0079] 返回参照图4,在该实施例中,数据传输控制器14用于与总线、数据写调度单元15和数据读调度单元17交互。具体地,当装载外部数据时,数据从外部存储芯片经由内存控制器、总线、数据传输控制器传输至数据写调度单元;当存储外部数据时,数据从数据读调度单元经由数据传输控制器、总线、内存控制器传输至外部存储芯片。数据写调度单元15用于将卷积神经网络的数据和计算单元的计算结果写入到缓存池16中。
[0080] 缓存池16用于储存卷积神经网络的数据和计算单元的计算结果,包括中间计算结果和最终计算结果。
[0081] 数据读调度单元17用于从缓存池16中读取计算所需的数据和计算单元的计算结果,并将计算结果传递给相应的执行单元。
[0082] 图7更详细地示出了图4所示的数据写调度单元15、缓存池16和数据读调度单元17的内部构造及其工作机制。
[0083] 如图7所示,数据写调度单元15可以由k个通道151的写调度器和写仲裁单元152组成。缓存池16可以由多个缓存块组成。数据读调度单元17可以由t个通道171的读调度器和读仲裁单元172组成。应理解,可以根据实际需要对数据写调度单元的通道数目、缓存池的缓存块数目、和数据读调度单元的通道数目进行配置,本申请不对此进行限制。
[0084] 数据读调度单元17的各个通道相互独立,用于与不同种类的计算单元的输入连接。数据写调度单元15的各个通道也相互独立,用于与不同种类的计算单元的输出相连接。计算单元的计算类型例如可以包括卷积计算、求和计算、非线性计算、池化计算、逐元素计算、尺寸变换计算等。
[0085] 此外,数据传输控制器14的输入可以占用数据读调度单元17的某几个通道,并将数据通过片上高速互联总线7送至内存控制器组3。应理解,可以根据实际需要对数据传输控制器的输入所占用的通道数目进行配置,本申请不对此进行限制。
[0086] 在这种构造下,当各计算单元将数据写入缓存池不同位置和/或读取缓存池中不同位置的数据时,由于数据写调度单元和/或数据读调度单元的各通道相互独立,因此各计算单元的写入和/或读取可以并发执行,互不干扰。当某几个计算单元希望将各自的数据写入缓存池同一位置和/或读取缓存池中同一位置的数据时,数据写调度单元和/或数据读调度单元的仲裁器将按一定规则进行裁决,优先级较高的通道畅通,优先级较低的通道被暂时堵塞,从而以队列形式完成数据的写入和/或读取。
[0087] 利用这种构造,可以最大化地利用片上缓存资源。
[0088] 具体而言,传统的处理器内核采用输入缓冲区->计算核阵列->输出缓冲区的整体结构。在这种结构中,一旦确定缓冲区的各部分缓存尺寸后,在实际运行中不可以再更改电路。然而,由于卷积神经网络的浅层输入数据多、中间结果多、输出结果多、权重数据少,而深层输入数据少、中间结果少、输出结果少、权重数据多,希望处理器的缓存区能够适配算法的多样性,从而进一步提高缓存利用率。
[0089] 而在本申请中,处理器内核取消了分立的输入缓冲、中间结果缓存、输出缓存设计,而代之以统一的缓存池、多通道数据读调度单元和多通道数据写调度单元的结构。借助这种构造,处理器可以支持任意可配置数量的读/写通道并发请求,并且每个读/写通道均可以访问整个缓存池空间。因此,针对上卷积神经网络的上述算法特点,可以根据实际计算需求申请、分配、使用各通道的缓存空间,从而最大化地利用片上缓存资源。
[0090] 返回参照图4,在该实施例中,每个卷积神经网路处理器内核中的计算模块可以包括相对独立的卷积计算单元阵列19和混合计算单元18。
[0091] 卷积计算单元阵列19可以包括一个或多个卷积计算单元,并且可以根据实际情况对卷积计算单元的数目进行配置。每个卷积计算单元可以包括乘法器阵列、加法树和非线性计算阵列。
[0092] 在一个示例中,乘法器阵列用于进行卷积计算并获得卷积计算结果;加法树与乘法器阵列相连并对卷积计算结果求和;非线性计算阵列与所述加法树相连,用于把非线性函数操作应用到加法树的输出上。
[0093] 在卷积计算单元阵列19包括多个卷积计算单元的情况下,由于单个卷积计算单元中的乘法器阵列、加法树、非线性计算阵列采用流水线方式设计,并且同时复制多条流水线并行运算,组成卷积计算单元阵列的所有乘法器、加法器、非线性计算的运算模块数目远超传统处理器,并且这些计算单元支持同时进行运算,因而可以获得远超传统处理器的计算性能与效率。
[0094] 混合计算单元18可以包括任意尺寸的池化(pooling)、逐元素(elementwise)、尺寸变换(resize)、全连接(full connected)等计算单元。应理解,混合计算单元还可以包括其他计算单元,这些计算单元也包含在本发明的范围内。
[0095] 如上文所述并且参照图7,各个计算单元均可以拥有自己独立的访问缓存池通道,或者可以与其他计算单元共享某一通道。由于可以根据实际情况对数据读/写调度单元的通道数目进行配置,因此本申请的处理器构造可以支持各种新型计算方式扩展。
[0096] 在实现CNN的实际应用中,由于混合计算是基于卷积计算结果的再加工,因此通过分离卷积计算单元阵列和混合计算单元,卷积计算和混合计算在访问缓存池资源方面不冲突,从而达到并行执行计算提高效率的目的。
[0097] 具体而言,如上文所述,传统的处理器内核采用输入缓冲区->计算核阵列->输出缓冲区的结构,因而,其计算结构的表现形式限制为卷积运算->混合运算的流水式运算。这种结构虽然可以较好地支持纯卷积计算,但对于不同尺寸的池化、逐元素、尺寸变换、全连接等运算的扩展计算能力较差。
[0098] 以2x2最大池化运算为例(即,在卷积计算结果上,每相邻4个数取一个最大值输出),假设已经确定卷积计算单元电路结构每时钟输出4x4=16个结果,那么2x2最大池化运算可以设置为每时钟在此基础上输出16/4=4个结果。但是,如果某一算法要求为3x3最大池化运算(即,在卷积计算结果上,每相邻9个数取一个最大值输出),则受制于确定的卷积计算单元电路结构,处理器无法支持该特性或者需要额外增加定制的缓存。
[0099] 而在本申请中,由于采用统一的缓存池、多通道数据读调度单元和多通道数据写调度单元设计,卷积计算单元与混合计算单元可以脱离顺序执行的流水线限制而彼此独立,同时可以保证各计算单元的数据吞吐率。这样,可以有效提高计算模块的灵活性与并行度。
[0100] 应理解,也可以采取其他方式实现卷积计算单元与混合计算单元的分离,例如,向卷积计算单元与混合计算单元分别分配专用的缓存,这些方式也包含在本发明的范围内。
[0101] 图8示出了根据本申请实施例的卷积神经网络处理装置的示例性工作流程,其包括如下步骤:
[0102] 步骤8001:通用处理器内核(CPU)6将指令流数据25基址写入配置寄存器13,然后启动DPU;
[0103] 步骤8002:启动DPU后,一个或多个指令单元独立地向片上高速互联总线7发起指令读取请求,申请获取位于外部储存芯片2中的指令流数据25。获取指令后,指令单元将指令解码,并送至指令分发单元12;
[0104] 步骤8003:指令分发单元12进一步解析指令,并将控制信号传递至各个执行单元;
[0105] 步骤8004:数据传输控制器14接受来自指令分发单元12的控制信号,向片上高速互联总线7发起数据读取请求,申请位于外部储存芯片2中的权重数据26、图像数据27和特征图数据28,并将获得的数据送至数据写调度单元15;
[0106] 步骤8005:数据写调度单元15将数据写入缓存池16;
[0107] 步骤8006:数据读调度单元17将计算所需的数据从缓存池16中以流水线方式取出,并送入卷积计算单元阵列19;
[0108] 步骤8007:卷积计算单元阵列19以流水线的方式处理输入数据,并将计算结果输出至数据写调度单元15;
[0109] 步骤8008:数据写调度单元15将卷积计算结果写回缓存池16;
[0110] 步骤8009:数据读调度单元17将计算所需的数据从缓存池16中以流水线方式取出,并送入混合计算单元18;
[0111] 步骤8010:混合计算单元18进行池化、点乘、调整图像尺寸等运算,此时混合计算单元18可以流水线的方式处理输入数据,并将计算结果输出至数据写调度单元15;
[0112] 步骤8011:数据写调度单元15将混合计算结果写回缓存池16;
[0113] 步骤8012:数据读调度单元17将数据从缓存池16读出,并送至数据传输控制器14。数据传输控制器14向片上高速互联总线7发起写请求,将数据写回至外部储存芯片2的指定位置;
[0114] 步骤8013:若已经完成所有任务,卷积神经网络处理器内核9将发起中断,告知通用处理器内核6指令流已执行完成。
[0115] 尽管上文描述了根据本申请的处理装置的实施例性工作流程,应理解,该流程的工作步骤可以不完全按顺序执行,而是并行执行。
[0116] 图9示出了根据本申请实施例的卷积神经网络处理装置在并行工作模式下的示例性工作流程。
[0117] 如图9所示,卷积神经网络处理装置可以例如实现同一计算任务内的并行或不同计算任务间并行。
[0118] 如图9所示,在一个实施例中,卷积神经网络处理装置可以实现同一计算任务内的并行运算。例如,在计算任务1(由附图标记30表示)中,执行上文所述的步骤8006、8007、8008时,即,从缓存池中读取卷积计算所需数据、进行计算、和将计算结果写回缓存池,数据读调度单元17、缓存池16、卷积计算单元阵列19和数据写调度单元15被占用。由于在该实施例中,图像数据读调度单元17、缓存池16和和数据写调度单元15支持多通道的并行操作,因此可以同时执行步骤8009、8010、8011,即,从缓存池中读取混合计算所需数据、进行计算、和将计算结果写回缓存池。此时,步骤8009、8010、8011占用图像数据读调度单元17、缓存池
16、混合计算单元18和数据写调度单元15。
[0119] 在另一个实施例中,卷积神经网络处理装置可以实现不同计算任务间的并行运算。例如,当计算任务1执行步骤8006、8009时,其占用数据读调度单元17,而数据传输控制器14、数据写调度单元15处于空闲状态。因此,可以同时执行计算任务2(由附图标记31表示)的步骤8004、8005,即,数据获取和存储至缓存池。
[0120] 同理,当计算任务1执行步骤8007、8010而占用卷积计算单元阵列17、混合计算单元18时,由于数据读调度单元17处于空闲状态,计算任务2可以进行步骤8006、8008,因而占用数据读调度单元17。此时,数据传输控制器14、数据写调度单元15处于空闲状态,计算任务3(由附图标记33表示)可以执行步骤8004、8005。
[0121] 当各执行单元运行时长相差较大,无法完全并行时,一旦某个执行单元进入空闲,指令分发单元12可以在第一时间分发任务至该单元,从而提高运算效率。
[0122] 采用上述机制,可以使DPU的各个执行单元尽可能满负荷运转,从而实现效率最大化。
[0123] 应理解,尽管上文实施例仅以卷积神经网络作为解释本申请的例子,本申请的处理装置并不局限于卷积神经网络或某种特定算法,而是可以支持各种神经网络算法,包括但不限于VGG、GoogleNet、AlexNet、ResNet。
[0124] 基于上述技术方案可知,本申请提出的神经网络处理装置尤其具有以下有益的技术效果:
[0125] 首先,本申请的神经网络处理装置支持多种神经网络算法,通过利用配套编译器将不同应用算法编译为处理装置可执行的指令流,可以实现广泛兼容的目的。
[0126] 其次,本申请的神经网络处理装置通过统一的数据写调度单元、缓存池和数据读调度单元的构造使空间分配和计算方式更为灵活,允许根据实际计算需求申请、分配、使用各通道的缓存空间,从而最大化地利用片上缓存资源。
[0127] 第三,本申请的神经网络处理装置通过独立进行卷积计算与混合计算将计算与存储分离,从而提高了运算效率。
[0128] 最后,本申请的神经网络处理装置通过配置两个或更多个指令单元,保证计算单元在尽可能多的时间里处于工作状态,从而提了运算效率。
[0129] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0130] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0131] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。