本申请公开一种用于运行神经网络的处理器,其包括内存控制器组、片上总线和处理器内核。处理器内核进一步包括:寄存器、指令模块、数据传输控制器、缓存模块、卷积计算单元和混合计算单元。该处理器支持多种神经网络算法并且可以显著提高运算效率。
【技术实现步骤摘要】
人工神经网络处理装置专利
本申请涉及人工神经网络,例如卷积神经网络(CNN)。更具体地,本申请涉及一种用于实现人工神经网络的处理装置。
技术介绍
人工智能近年得到迅速发展,极大地影响了人们的生活。基于人工神经网络,尤其是卷积神经网络(CNN,ConvolutionalNeuralNetwork)的方法在很多应用中、例如在计算机视觉领域中得到广泛使用。图1示出了典型的深度卷积神经网络(CNN)的实施例。如图1所示,典型的CNN由一系列有序运行的层组成。CNN模型的参数被称为“权重”。CNN的第一层读取输入图像,并输出一系列的特征图。下一层读取由上一层产生的特征图,并输出新的特征图。最后,一个分类器输出输入图像可能属于的每一类别的概率。CNN中两种基本层类型包括卷积层(CONV层)和全连层(FC层),在CONV层之后通常有池化层(Pooling层)。例如,对于一个CNN层,表示第j个输入特征图,表示第i个输出特征图,bi表示第i个输出图的偏置项。对于CONV层,nin和nout分别代表输入和输出特征图的数量。对于FC层,nin和nout分别代表输入和输出特征向量的长度。此时,CONV层以一系列特征图作为输入,并以卷积内核卷积获得输出特征图。通常与CONV层相连的非线性层,即,非线性激励函数被施加到输出特征图中的每个元素。CONV层可以用表达式(1)表示:其中,gi,j是应用到第j个输入特征图和第i个输出特征图的卷积内核。FC层是应用于输入特征向量上的一个线性变换,其可以用表达式(2)表示:fout=Wfin+b(2)其中,W是一个nout×nin变换矩阵,b是偏置项。应注意,对于FC层,输入的不是几个二维特征图的组合,而是一个特征向量。因此,在表达式(2)中,参数nin和nout实际上对应于输入和输出特征向量的长度。池化层通常与CONV层相连,用于输出每个特征图中的每个分区的最大值或平均值。池化层的最大值可以由表达式(3)表示:其中,p是池化内核的大小。这种非线性的“降采样”不仅为下一层降低了特征图的大小和计算,还提供了一种平移不变性。相较于传统算法,CNN需要较高的运算量与带宽需求。目前主要依靠中央处理器(CPU)阵列、图形处理器(GPU)阵列完成计算。然而,CPU、GPU等通用处理器不能充分利用卷积神经网络的特点,因此导致运算效率较低,带来了较大的功耗、成本开销。此外,如今愈发需要在终端设备上以低成本、低功耗、高性能来完成人工智能算法的计算,而现有通用处理器无法满足该需求。
技术实现思路
为了克服上述缺点,本申请提出一种新的用于运行神经网络的神经网络处理装置,其包括:内存控制器组,其包括一个或多个内存控制器,每个内存控制器用于访问对应的外部储存芯片,所述外部储存芯片储存神经网络数据和指令;片上总线,用于内存控制器组与处理器内核阵列之间的通信;和处理器内核阵列,所述处理器内核阵列包括一个或多个处理器内核,每个处理器内核进一步包括:寄存器,用于配置神经网络处理器的工作参数和获取神经网络处理器的工作状态;指令模块,用于获取并解析外部储存芯片中的指令并将解析结果传递至数据传输控制器;数据传输控制器,用于基于指令模块的解析结果将神经网络数据写入数据写调度单元,以及将计算模块的计算结果从数据读调度单元写回外部储存芯片;缓存模块,用于储存神经网络数据和计算结果,所述计算结果包括中间计算结果和最终计算结果;一个或多个卷积计算单元,用于进行卷积计算并获得卷积计算结果;和混合计算单元,用于进行混合计算并获得混合计算结果。为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本专利技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1是示出了典型的深度卷积神经网络的示意图;图2a和图2b示出了实现图1的深度卷积神经网络的一个示例性硬件构造;图3示出了实现图1的深度卷积神经网络的另一个示例性硬件构造;图4示出了根据本申请实施例的用于实现卷积神经网络的示例性卷积神经网络处理装置;图5示出了图4中用于实现卷积神经网络算法的外部储存芯片构成;图6示出了根据实施例的图4中两个指令单元和一个指令分发单元的内部构造及其工作机制;图7示出了根据一个实施例的数据写调度单元、缓存池和数据读调度单元的内部构造及其工作机制;图8示出了根据本申请实施例的卷积神经网络处理装置的示例性工作流程;图9示出了根据本申请实施例的卷积神经网络处理装置在并行工作模式下的示例性工作流程。具体实施方式下面将结合附图,对本申请的技术方案进行清楚、完整的描述。申请人之前的研究成果专利技术人之一曾经提出过如下用于实现卷积神经网络(CNN)的硬件构造。图2a和图2b示出了实现CNN的一个实施例性硬件构造。如图2a所示,整个硬件构造可以分为两个部分:可编程处理模块(PL)和通用处理系统(PS)。根据一个实施例,PL端是FPGA芯片,其配置有:复杂计算核、缓冲区、控制器和直接存储器访问(DMA)。具体地,复杂计算核包括多个处理单元(PE),处理单元负责CNN的CONV层、池化层,和FC层的大多数计算任务。缓冲区包括输入缓冲区和输出缓冲区,用于准备处理单元使用的数据并存储结果。控制器用于获取外部存储器上的指令、对其解码并对除了DMA以外的所有模块进行调配。DMA用于传输PS端的外部存储器和PL端的缓冲区之间的数据和指令。通用处理系统包括通用处理器(CPU)和外部存储器。外部存储器存储所有的CNN模型参数、数据和指令。CPU运行裸机程序并通过配置DMA帮助协调整个推理阶段。此外,也在CPU上实现Softmax函数。在一个实例中,基于图2a的硬件结构,完整的图像推理过程包括顺序执行的三个阶段:数据准备、数据处理和结果输出。数据准备阶段:在该阶段,计算所需的所有数据,包括:存储在外部存储器中的图像数据、模型数据和控制数据。其中,控制数据包括DMA使用的缓冲区描述符(BD)和控制器使用的指令。此时,尚未从相机获得图像数据。数据处理阶段:当所有数据准备好时,CPU主机开始给DMA配置预先存储在外部存储器中的BD。配置的DMA加载数据和指令给控制器,触发可编程处理模块上的计算过程。每次DMA中断,CPU主机为每个DMA的BD列表加上自持指针地址,配置新的BD,这一阶段工作直到最后的BD转移。结果输出阶段:当收到来自DMA的最后的BD中断时,处理器主机将Softmax函数用于来自PE的最终结果,并输出结果。图2b示出了图2a的计算单元的结构。如图2b所示,计算单元包括复杂卷积核、加法器树、非线性模块(NL)、池化模块(Pool)、偏置移位模块和数据移位模块。复杂卷积核采用行缓冲设计,当输入数据经过行布局的缓冲时,行缓冲释放一个窗口选择函数给输入图像。因此一个乘法器和一个加法器树跟随被选择窗口计算卷积,每个循环一批数据。加法器树用于对卷积器的所有结果求和。它可以加上来自输出缓冲区的中间数据或来自输入缓冲区的偏置数据。NL模块是用于非线性激励函数的本文档来自技高网...
【技术保护点】
一种用于运行神经网络的神经网络处理器,包括:内存控制器组,其包括一个或多个内存控制器,每个内存控制器用于访问对应的外部储存芯片,所述外部储存芯片储存神经网络数据和指令;片上总线,用于内存控制器组与处理器内核阵列之间的通信;和处理器内核阵列,所述处理器内核阵列包括一个或多个处理器内核,每个处理器内核进一步包括:寄存器,用于配置神经网络处理器的工作参数和获取神经网络处理器的工作状态;指令模块,用于获取并解析外部储存芯片中的指令并将解析结果传递至数据传输控制器;数据传输控制器,用于基于指令模块的解析结果将神经网络数据写入缓存模块,以及将计算单元的计算结果从缓存模块写回外部储存芯片;缓存模块,用于储存神经网络数据和计算结果,所述计算结果包括中间计算结果和最终计算结果;一个或多个卷积计算单元,用于进行卷积计算并获得卷积计算结果;和混合计算单元,用于进行混合计算并获得混合计算结果。
【技术特征摘要】
1.一种用于运行神经网络的神经网络处理器,包括:内存控制器组,其包括一个或多个内存控制器,每个内存控制器用于访问对应的外部储存芯片,所述外部储存芯片储存神经网络数据和指令;片上总线,用于内存控制器组与处理器内核阵列之间的通信;和处理器内核阵列,所述处理器内核阵列包括一个或多个处理器内核,每个处理器内核进一步包括:寄存器,用于配置神经网络处理器的工作参数和获取神经网络处理器的工作状态;指令模块,用于获取并解析外部储存芯片中的指令并将解析结果传递至数据传输控制器;数据传输控制器,用于基于指令模块的解析结果将神经网络数据写入缓存模块,以及将计算单元的计算结果从缓存模块写回外部储存芯片;缓存模块,用于储存神经网络数据和计算结果,所述计算结果包括中间计算结果和最终计算结果;一个或多个卷积计算单元,用于进行卷积计算并获得卷积计算结果;和混合计算单元,用于进行混合计算并获得混合计算结果。2.根据权利要求1的神经网络处理器,其中,所述每个卷积计算单元进一步包括:乘法器阵列,用于进行卷积计算并获得卷积计算结果;加法树,其与乘法器阵列相连,用于对卷积计算结果求和;和非线性计算阵列,其与所述加法树相连,用于把非线性函数操作应用到加法树的输出上。3.根据权利要求1或2的神经网络处理器,其中,混合计算单元包括:池化计算单元、逐元素计算单元、尺寸变换计算单元和全连接计算单元。4.根据权利要求1的神经网络处理器,其中,所述缓存模块进一步包括:缓存池,用于储存神经网络数据和卷积计算单元、混合计算单元的计算结果,所述计算结果包括中间计算结果和最终计算结果;数据写调度单元,用于将神经网络数据和所述卷积计算单元、混合计算单元的计算结果写入缓存池;数据读调度单元,用于从缓存池读取计...
【专利技术属性】
技术研发人员:方绍峡,隋凌志,于谦,王俊斌,单羿,
申请(专利权)人:北京深鉴科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。