一种卷积神经网络运算指令及其方法技术

技术编号:17304256 阅读:34 留言:0更新日期:2018-02-18 22:07
本披露提供了一种卷积神经网络运算指令及其方法,其中卷积神经网络运算指令,所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。将输出数据作为下一层的输入数据。

An operation instruction and method of convolution neural network

This disclosure provides a convolutional neural network arithmetic instructions and methods, including convolutional neural network arithmetic instructions, the convolutional neural network arithmetic instructions including at least 1 operation code and at least 1 operating domain, among them, the operation code for indicating the convolutional neural network arithmetic instruction function, the operation the domain is used for indicating the convolutional neural network arithmetic instruction data; the data information includes: immediately or register number, including: the starting address and data input data length, starting address and data length of convolution kernel, and the type of activation function. The output data is used as the input data of the next layer.

【技术实现步骤摘要】
一种卷积神经网络运算指令及其方法
本披露总体上涉及人工神经网络,具体地涉及一种卷积神经网络运算指令及其方法。
技术介绍
卷积神经网络是近年来广泛应用于模式识别、图像处理等领域的一种高效识别算法,它具有结构简单、训练参数少和适应性强、平移、旋转、缩放等特点。由于CNN/DNN的特征检测层通过训练数据进行学习,所以在使用CNN/DNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。在已有的计算机领域应用中,与卷积运算相关的应用十分普遍。本披露专注于卷积神经网络,目前可以执行此种运算的主流装置如下:在现有技术中,一种进行卷积神经网络运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行卷积神经网络运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行卷积神经网络运算时运算性能较低。而使用多个通用处理器并行执行时,通用处理器之间的相互通讯又有可能成为性能瓶颈。在另一种现有技术中,使用图形处理器(GPU)来进行向量计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行卷积神经网络运算。然而,上述方案中,GPU片上缓存太小,在进行大规模卷积神经网络运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
技术实现思路
(一)要解决的技术问题本披露的目的在于,提供一种支持卷积神经网络的装置,解决现有技术中存在的受限于片间通讯、片上缓存不够等问题。(二)技术方案本披露的一个方面提供了一种卷积神经网络运算指令,所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。可选的,所述卷积神经网络运算指令包括:COMPUTE指令、CONFIG指令、IO指令、NOP指令、JUMP指令或MOVE指令。可选的,所述COMPUTE指令包括:卷积神经网络sigmoid指令、卷积神经网络TanH指令、卷积神经网络ReLU指令以及卷积神经网络group指令;所述卷积神经网络sigmoid指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述sigmoid指令将输出结果做sigmoid激活;所述卷积神经网络TanH指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述TanH指令将输出结果做TanH激活;所述卷积神经网络ReLU指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述ReLU指令将输出结果做ReLU激活;所述卷积神经网络group指令,用于装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,然后根据所述group指令将输出结果做激活。可选的,所述运算指令包括:所述COMPUTE指令,用于指引装置进行非线性激活和线性激活操作;或所述CONFIG指令,用于指引装置在每层人工神经网络计算开始前配置当前层计算需要的各种常数;或所述IO指令,用于指引装置实现从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部存储空间;或所述NOP指令,用于指引装置清空当前装置内部所有控制信号缓存队列中的控制信号;或所述JUMP指令,用于指引装置实现控制流的跳转;或所述MOVE指令,用于指引装置内部地址空间中某一地址的数据搬运至内部地址空间的另一地址。可选的,所述存储器为高速暂存存储器。第二方面,提供一种卷积神经网络运算指令的运算方法,所述方法包括如下步骤:读入卷积神经网络运算指令并存储读入的卷积神经网络运算指令,读取所述卷积神经网络运算指令,将所述卷积神经网络运算指令译成控制信号;所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度;执行所述卷积神经网络运算指令的读写操作,执行所述卷积神经网络运算指令实现所述输入数据与所述卷积核的卷积运算得到卷积运算结果。可选的,所述数据信息还包括:激活函数的类型。可选的,所述方法还包括:将输入数据输送到每个运算模块,获取每个运算模块依据输入数据以及各自的卷积核计算得到的输出标量,将每个运算模块的输出标量拼成中间向量,将所有的输入数的中间向量拼接成中间结果,并对所述中间结果执行后续运算。可选的,所述后续运算包括:将所述中间结构与偏置数据相加,然后执行激活操作,所述激活操作包括:使用非线性函数sigmoid,tanh,relu,softmax或线性函数中的任意一个执行激活操作;所述sigmoid指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述sigmoid指令将输出结果做sigmoid激活;所述TanH指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述TanH指令将输出结果做TanH激活;所述ReLU指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述ReLU指令将输出结果做ReLU激活。第三方面,提供一种卷积神经网络运算指令的运算装置,所述运算装置包括:数据访问单元,用于读入卷积神经网络运算指令并存储读入的卷积神经网络运算指令,控制器单元,读取所述卷积神经网络运算指令;将所述卷积神经网络运算指令译成控制信号;所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度;运算单元,用于执行所述卷积神经网络运算指令的读写操作,执行所述卷积神经网络运算指令实现所述输入数据与所述卷积核的卷积运算得到卷积运算结果。可选的,所述数据信息还包括:激活函数的类型。可选的,所述数据访问单元,还用于将输入数据输送到每个运算模块,获取每个运算模块依据输入数据以及各自的卷积核计算得到的输出标量;所述运算单元,用于将每个运算模块的输出标量拼成中间向量,将所有的输入数的中间向量拼接成中间结果,并对所述中间结果执行后续运算。可选的,所述后续运算包括:将所述中间结构与偏置数据相加,然后执行激活操作,所述激活操作包括:使用非线性函数sigmoid,tanh,relu,softmax或线性函数中的任意一个执行激活操作;所述sigmoid指令,用于在装置分别从存储器的指定地址取出指定本文档来自技高网...
一种卷积神经网络运算指令及其方法

【技术保护点】
一种卷积神经网络运算指令,其特征在于,所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。

【技术特征摘要】
1.一种卷积神经网络运算指令,其特征在于,所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型。2.根据权利要求1所述的运算指令,其特征在于,所述卷积神经网络运算指令包括:COMPUTE指令、CONFIG指令、IO指令、NOP指令、JUMP指令或MOVE指令。3.根据权利要求2所述的运算指令,其特征在于,所述COMPUTE指令包括:卷积神经网络sigmoid指令、卷积神经网络TanH指令、卷积神经网络ReLU指令以及卷积神经网络group指令;所述卷积神经网络sigmoid指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述sigmoid指令将输出结果做sigmoid激活;所述卷积神经网络TanH指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述TanH指令将输出结果做TanH激活;所述卷积神经网络ReLU指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述ReLU指令将输出结果做ReLU激活;所述卷积神经网络group指令,用于装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,然后根据所述group指令将输出结果做激活。4.根据权利要求2所述的运算指令,其特征在于,所述运算指令包括:所述COMPUTE指令,用于指引装置进行非线性激活和线性激活操作;或所述CONFIG指令,用于指引装置在每层人工神经网络计算开始前配置当前层计算需要的各种常数;或所述IO指令,用于指引装置实现从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部存储空间;或所述NOP指令,用于指引装置清空当前装置内部所有控制信号缓存队列中的控制信号;或所述JUMP指令,用于指引装置实现控制流的跳转;或所述MOVE指令,用于指引装置内部地址空间中某一地址的数据搬运至内部地址空间的另一地址。5.根据权利要求3所述的运算指令,其特征在与,所述存储器为高速暂存存储器。6.一种卷积神经网络运算指令的运算方法,其特征在于,所述方法包括如下步骤:读入卷积神经网络运算指令并存储读入的卷积神经网络运算指令,读取所述卷积神经网络运算指令,将所述卷积神经网络运算指令译成控制信号;所述卷积神经网络运算指令包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度;执行所述卷积神经网络运算指令的读写操作,执行所述卷积神经网络运算指令实现所述输入数据与所述卷积核的卷积运算得到卷积运算结果。7.根据权利要求6所述的方法,其特征在于,所述数据信息还包括:激活函数的类型。8....

【专利技术属性】
技术研发人员:陈天石韩栋陈云霁刘少礼郭崎
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1