【技术实现步骤摘要】
一种用于执行卷积神经网络正向运算的装置和方法
本专利技术总体上涉及人工神经网络,具体地涉及一种用于执行卷积神经网络正向运算的装置和方法。
技术介绍
卷积神经网络是近年来广泛应用于模式识别、图像处理等领域的一种高效识别算法,它具有结构简单、训练参数少和适应性强、平移、旋转、缩放等特点。由于CNN/DNN的特征检测层通过训练数据进行学习,所以在使用CNN/DNN时,避免了显示的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。在已有的计算机领域应用中,与卷积运算相关的应用十分普遍。本专利技术专注于卷积神经网络,目前可以执行此种运算的主流装置如下:在现有技术中,一种进行卷积神经网络运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行卷积神经网络运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行卷积神经网络运算时运算性能较低。而使用多个通用处理器并行执行时,通 ...
【技术保护点】
1.一种用于执行卷积神经网络正向运算的装置,包括:控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:/n所述控制器单元,用于读取指令,将所述指令译成控制所述数据访问单元、所述主运算模块和所述从运算模块行为的控制信号;/n所述数据访问单元,用于执行所述装置的片外存储的地址空间与所述装置之间的数据或指令读写操作;/n所述从运算模块,用于输入数据和各自的卷积核并行执行卷积运算,获得对应的输出标量;/n所述互连模块,用于所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到每一个从运算模块,在 ...
【技术特征摘要】
1.一种用于执行卷积神经网络正向运算的装置,包括:控制器单元、数据访问单元、互连模块、主运算模块、以及多个从运算模块,其中:
所述控制器单元,用于读取指令,将所述指令译成控制所述数据访问单元、所述主运算模块和所述从运算模块行为的控制信号;
所述数据访问单元,用于执行所述装置的片外存储的地址空间与所述装置之间的数据或指令读写操作;
所述从运算模块,用于输入数据和各自的卷积核并行执行卷积运算,获得对应的输出标量;
所述互连模块,用于所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运算模块的输出标量拼成中间结果,输送回主运算模块;
所述主运算模块,用于根据所述中间结果获得偏置结果,并利用偏置结果执行激活函数操作。
2.根据权利要求1所述的装置,其中所述主运算模块执行激活函数操作使用的激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数。
3.根据权利要求1所述的装置,其中,所述装置还包括:
指令存储单元,通过所述数据访问单元读入指令并存储读入的指令。
4.根据权利要求2所述的装置,其中,所述指令包括至少1个操作码和至少1个操作域,其中,操作码用于指示该指令的功能;操作域用于指示该指令的数据信息,所述指令包括卷积神经网络COMPUTE指令。
5.根据权利要求4所述的装置,其中,卷积神经网络COMPUTE指令包括以下至少一种:卷积神经网络sigmoid指令,根据该指令,所述装置分别从存储单元的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做sigmoid激活;卷积神经网络TanH指令,根据该指令,装置分别从存储单元的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做TanH激活;卷积神经网络ReLU指令,根据该指令,装置分别从存储单元的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后将输出结果做ReLU激活;卷积神经网络group指令,根据该指令,装置分别从存储单元的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,然后将输出结果做激活;以及用于进行非线性激活和线性激活操作的运算指令。
6.根据权利要求3所述的装置,其中所述指令还包括:
CONFIG指令,用于在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
IO指令,用于从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令,用于清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部指令完毕,NOP指令本身不包含任何操作;
JUMP指令,用于控制将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令,用于将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
7.根据权利要求1所述的装置,其中,所述互连模块是所述主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路,互连模块为以下任一种结构:树状结构、环状结构、网格状结构、分级互连、总线结构。
8.根据权利要求1所述的装置,其中,所述主运算模块包括第一存储单元、第一运算单元、第一数据依赖关系判定单元和第一存储单元,其中:
所述第一存储单元,用于缓存主运算模块在计算过程中用到的输入数据和输出数据;
所述第一运算单元,用于完成主运算模块的各种运算功能;
所述第一数据依赖关系判定单元是第一运算单元读写所述第一存储单元的端口,用于保证对所述第一存储单元的数据读写不存在一致性冲突,并且负责从所述第一存储单元读取输入的神经元向量,并通过互连模块发送给所述从运算模块;以及来自所述互连模块的中间结果向量被发送到所述第一运算单元。
9.根据权利要求1所述的装置,其中,每个从运算模块包括第二运算单元、第二数据依赖关系判定单元、第二存储单元和第三存储单元,其中:
所述第二运算单元,用于接收控制器单元发出的控制信号并进行算数逻辑运算;
所述第二数据依赖关系判定单元,用于负责计算过程中对第二存储单元和第三存储单元的读写操作,保证对第二存储单元和第三存储单元的读写不存在一致性冲突;
所述第二存储单元,用于缓存输入数据以及该从运算模块计算得到的输出标量;以及
所述第三存储单元,用于缓存该从运算模块在计算过程中需要的卷积核。
10.根据权利要求8所述的装置,其中,所述第一数据依赖关系判定单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。
11.根据权利要求9所述的装置,其中,所述第一数据依赖关系判定单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该条控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该条控制信号才允许被发射。
12.根据权利要求1所述的装置,其中,数据访问单元从外部地址空间读入以下中的至少一个:输入数据、偏置数据、或卷积核。
13.一种用于执行卷积神经网络正向运算的方法,应用于如权利要求1至12中任一所述用于执行卷积神经网络正向运算的装置,该方法包括:
采用控制器单元读取指令,将所述指令译成控制所述数据访问单元、所述主运算模块和所述从运算模块行为的控制信号;
采用数据访问单元执行所述装置的片外存储的地址空间与所述装置之间的数据或指令读写操作;
采用从运算模块输入数据和各自的卷积核并行执行卷积运算,获得对应的输出标量;
采用互连模块所述主运算模块和所述从运算模块之间的数据传输,在神经网络全连接层正向运算开始之前,主运算模块通过互连模块将输入数据输送到每一个从运算模块,在从运算模块的计算过程结束后,互连模块逐级将各从运算模块的输出标量拼成中间结果,输送回主运算模块;
采用主运算模块根据所述中间结果获得偏置结果,并利用偏置结果执行激活函数操作。
14.根据权利要求13所述的方法,其中,所述方法还包括:
采用指令存储单元,通过所述数据访...
【专利技术属性】
技术研发人员:陈天石,韩栋,陈云霁,刘少礼,郭崎,
申请(专利权)人:中科寒武纪科技股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。