首页> 中国专利> 运算处理装置

运算处理装置

摘要

进行卷积处理和全连接处理的深度学习用的运算处理装置的SRAM写入控制部控制成,将构成数据存储存储器的SRAM各自虚拟地分割为多个区域,根据ID切换要写入的区域,并且在相同的SRAM中存储同一坐标的不同的输入特征量图数据。

著录项

  • 公开/公告号CN112334915A

    专利类型发明专利

  • 公开/公告日2021-02-05

    原文格式PDF

  • 申请/专利权人 奥林巴斯株式会社;

    申请/专利号CN201880094605.8

  • 发明设计人 古川英明;

    申请日2018-06-25

  • 分类号G06N3/063(20060101);G06F17/16(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人于英慧;崔成哲

  • 地址 日本东京都

  • 入库时间 2023-06-19 09:47:53

说明书

技术领域

本发明涉及运算处理装置,更详细地说,涉及使用卷积神经网络进行深度学习的运算处理装置的电路结构。

背景技术

以往,存在使用分层地连接有多个处理层而得到的神经网络来执行运算的运算处理装置。特别是在进行图像识别的运算处理装置中,广泛进行了使用卷积神经网络(Convolutional Neural Network,以下称为CNN)的深度学习。

在基于使用了CNN的深度学习的图像识别中,通过对所输入的图像数据(像素数据)依次实施CNN的多个处理层中的处理,得到识别出图像中包含的对象物的最终运算结果数据。CNN的处理层大致分类为进行包含卷积运算处理、非线性处理、缩小处理(池化处理)等在内的卷积处理的Convolution层(卷积层)和进行将所有输入(像素数据)乘以系数并累积相加的全连接处理的FullConnect层(全连接层)。

基于使用了CNN的深度学习的图像识别能够实现较高的识别率。但是,为了增加要检测的被摄体的种类或者提高被摄体检测精度,需要增大网络。这样,数据存储缓冲器和系数存储缓冲器必然成为大容量,但在LSI(Large-Scale Integrated circuit:大规模集成电路)中无法搭载大容量的存储器。

此外,在图像识别处理中的深度学习中,在第(K-1)层和第K层中的FM(FeatureMap:特征量图)尺寸与FM数量(FM的面数)的关系为如下式那样的关系的情况较多,在作为电路决定存储器尺寸时难以优化。

FM尺寸[K]=1/4×FM尺寸[K-1]

FM数量[K]=2×FM数量[K-1]

例如,在考虑能够与作为CNN的变化之一的Yolo_v2对应的电路的存储器的尺寸的情况下,当想仅用FM尺寸和FM数量的最大值来决定时,需要1GB左右。实际上,由于FM数量和FM尺寸成反比关系,因此在计算上3MB左右就足够,但必须按层细致地计算并设计存储器管理。

由于存在这样的问题,所以CNN一般通过使用了高性能PC或GPU(GraphicsProcessing Unit:图形处理单元)的软件处理来安装。但是,为了实现高速处理,需要用硬件构成处理较重的部分。作为这样的硬件安装的例子,在专利文献1中有记载。

专利文献1公开了一种通过搭载多个运算块和多个存储器来实现运算处理的高效化的运算处理装置。具有多个运算处理单元,分别具有运算块及与该运算块成对的缓冲器,经由中继部并行执行卷积运算处理,并且在运算部之间收发累积相加数据,由此即使输入的网络较大,也能够一次生成对激活处理的输入。

现有技术文献

专利文献

专利文献1:日本特开2017-151604号公报

发明内容

发明要解决的课题

专利文献1是运算块和数据保持部成对的结构,对于超过运算块数的网络,能够通过冗余数据保持部反复执行累积相加运算来应对。但是,需要具体控制,特别是在数据保持部中需要用于对应如上所述的FM数量与FM尺寸的关系的缓冲器和控制的优化,但是,对此没有考虑。

鉴于上述情况,本发明的目的在于提供一种能够适用于深度学习并且存储器尺寸能够适于搭载于LSI的运算处理装置。

用于解决课题的手段

本发明的第一方式是一种运算处理装置,其用于进行卷积处理和全连接处理的深度学习,其中,该运算处理装置具有:数据存储存储器管理部,所述数据存储存储器管理部具有:数据存储存储器,其由3个以上的SRAM构成;计数器,其根据输入特征量图数据对输入有效数据数量进行计数而变换为坐标;SRAM写入控制部,其将所述计数器变换后的坐标变换为所述数据存储存储器中的地址,将所述输入特征量图数据存储到所述数据存储存储器中;以及SRAM读出控制部,其接收来自外部的请求,从所述数据存储存储器按照规定的方法取出所存储的所述输入特征量图数据;系数存储存储器管理部,其具有存储系数的系数存储存储器,参考所述数据存储存储器管理部的状态,从所述系数存储存储器取出与从所述数据存储存储器管理部取出的数据对应的系数;数据输入部,其从存储用外部存储器取得所述输入特征量图数据;系数输入部,其从所述存储用外部存储器取得所述系数;以及运算部,其以输入N并行、输出M并行的结构,从所述数据存储存储器取得所述输入特征量图数据,从所述系数存储存储器取得所述系数,而进行滤波处理、累积相加处理、非线性运算处理和池化处理,其中,N、M≧1且为正数;数据输出部,其将从所述运算部输出的M并行的数据连接起来作为输出特征量图数据输出到所述存储用外部存储器;以及控制器,其控制所述数据存储存储器管理部、所述系数存储存储器管理部、所述数据输入部、所述数据输出部和所述运算部,所述计数器生成所输入的所述输入特征量图数据的ID,所述SRAM写入控制部控制成,将构成所述数据存储存储器的所述SRAM各自虚拟地分割为多个区域,根据所述ID切换要写入的区域,并且在相同的SRAM中存储有同一坐标的不同的输入特征量图数据,所述SRAM读出控制部切换所述地址,以访问与想取出的所述输入特征量图数据的所述ID对应的所述区域,所述运算部具有:滤波运算部,其以N并行的方式执行滤波运算;第1加法器,其将所述滤波运算部的运算结果全部累积相加;第2加法器,其将所述第1加法器的累积相加结果在后级累积相加;触发器,其保持所述第2加法器的累积相加结果;以及运算控制部,其控制成,生成输入特征量图数据的ID,而从所述系数存储存储器管理部取得ID与从所述SRAM读出控制部输入的输入特征量图数据相同的所述系数,以取出一个数据存储存储器所存储的多个输入特征量图数据,并控制成,直到取完全部输入特征量图数据为止,所述第2加法器将所述第1加法器的累积相加结果累积相加。

也可以是,所述运算部按照同一坐标的每个输入特征量图数据执行运算处理,所述SRAM写入控制部每当所述同一坐标的输入特征量图数据的运算处理结束时,开放存储有所述同一坐标的输入特征量图数据的所述区域,存储所述输入特征量图数据的后续数据。

也可以是,所述SRAM读出控制部从所述数据存储存储器读出所述输入特征量图数据,以根据一个输入特征量图数据执行要输出的m张的输出特征量图数据的运算处理,所述数据输出部对有效数据进行计数而识别是哪个输出特征量图数据,适当地生成输出特征量图数据中的地址,而将该输出特征量图数据输出到所述存储用外部存储器。

也可以是,所述SRAM读出控制部从所述数据存储存储器读出所述输入特征量图数据的部分数据,所述运算部进行从所述SRAM读出控制部输入的所述输入特征量图数据的部分数据的运算处理,生成所述输出特征量图数据的部分数据,在所述输入特征量图数据的所述部分数据的处理结束之后,进入所述输入特征量图数据的下一部分数据的处理。

发明效果

根据本发明的各方式的运算处理装置,即使是iFM(输入特征量图)尺寸或iFM数量(iFM的面数)增大而无法完全进入数据存储存储器(IBUF)的尺寸,也能够不进行滤波器尺寸的量的重叠而无缝地实施运算处理和数据更新。

附图说明

图1是示出本发明实施方式的运算处理装置的结构的框图。

图2是示出本发明实施方式的运算处理装置的运算部的结构的图。

图3是示出本发明实施方式的运算处理装置的IBUF(数据存储存储器)管理部的结构的图。

图4是示出本发明实施方式的运算处理装置的IBUF(数据存储存储器)的结构的图。

图5是示出在本发明实施方式的运算处理装置中对输入到1个输入ch的iFM(输入特征量图)进行分割而存储到IBUF中的情形的图。

图6是示出在本发明实施方式的运算处理装置中对被分割而存储到IBUF中的iFM进行处理的情形的图。

图7是示出在本发明实施方式的运算处理装置中n=2时的、通过iFMID使地址偏移发生变化的图像的图。

图8是示出本发明实施方式的运算处理装置中的、向IBUF的数据写入控制流程的图。

图9是示出本发明实施方式的运算处理装置中的iFM的数据配置和系数的一例的图。

图10是示出本发明实施方式的运算处理装置中的卷积处理时的时序图的图。

图11是示出本发明实施方式的运算处理装置中的SRAM读出控制部的控制流程的一例的图。

图12是示出本发明实施方式的运算处理装置中的CNN的处理示意图的图。

图13是示出本发明实施方式的运算处理装置中的SRAM读出控制部的控制流程的一例的图。

图14是示出本发明实施方式的运算处理装置中的运算时的时序图的图。

图15是示出在本发明实施方式的运算处理装置中写出数据的DRAM的输出示意图的图。

具体实施方式

(实施方式1)

使用附图对本发明的实施方式进行说明。图1是示出本发明实施方式的运算处理装置的结构的框图。

运算处理装置1具有控制器2、数据输入部3、系数输入部4、IBUF(数据存储存储器)管理部5、WBUF(系数存储存储器)管理部6、运算部7和数据输出部8。数据输入部3、系数输入部4和数据输出部8经由总线10与DRAM(存储用外部存储器)9连接。运算处理装置1根据输入特征量图(iFM)生成输出特征量图(oFM)。

IBUF管理部5具有输入特征量图(iFM)数据存储用的存储器(数据存储存储器、IBUF)、数据存储存储器的管理/控制电路(数据存储存储器控制电路)、后述的计数器51、SRAM写入控制部52、N个IBUF(数据存储存储器)(0~N-1)和SRAM读出控制部53。IBUF分别由3个以上的SRAM构成。

IBUF管理部5对输入数据(iFM数据)中的有效数据数量进行计数而变换为坐标,进而将该坐标变换为IBUF地址(IBUF中的地址),将数据存储到数据存储存储器中,并且按照规定的方法从数据存储存储器取出iFM数据。IBUF管理部5控制成在输入多个FM时,同一坐标的数据进入相同的IBUF。

WBUF管理部6具有系数存储用存储器(系数存储存储器、WBUF)和系数存储存储器的管理/控制电路(系数存储存储器控制电路)。WBUF管理部6参考IBUF管理部5的状态,从系数存储存储器取出与从IBUF管理部5取出的数据对应的系数。

DRAM 9存储iFM数据、oFM数据和系数。数据输入部3从DRAM 9按照规定的方法取得输入特征量图(iFM),并交付给IBUF(数据存储存储器)管理部5。数据输出部8向DRAM 9按照规定的方法写出输出特征量图(oFM)数据。具体而言,数据输出部8将从运算部7输出的M并行的数据连接起来输出到DRAM 9。系数输入部4从DRAM 9按照规定的方法取得系数,并交付给WBUF(系数存储存储器)管理部6。

运算部7从IBUF(数据存储存储器)管理部5取得数据,从WBUF(系数存储存储器)管理部6取得系数,进行滤波处理、累积相加、非线性运算、池化处理等数据处理。控制器2进行电路整体的控制。

在CNN中,在多个处理层中实施几层类似处理。在使用本发明实施方式的运算处理装置1的情况下,运算部7仅具有1层的处理所需的数据和系数并进行1层的处理,数据和系数逐个放置在DRAM 9中。然后,反复执行必要的层数的处理。运算处理装置1输出被摄体估计结果作为最终输出数据,通过使用处理器(也可以是电路)对该最终输出数据进行处理来获得被摄体估计结果。

图2是示出本发明实施方式的运算处理装置的运算部7的结构的图。运算部7的输入通道数量为N(N为1以上的正数),即,输入数据(iFM数据)为N维,对N维的输入数据并行地进行处理(输入N并行)。

运算部7的输出通道数量为M(M为1以上的正数),即,输出数据为M维,并行地输出M维的输入数据(输出M并行)。如图2所示,在一个层中,按照各通道(ich_0~ich_N-1)输入iFM数据(d_0~d_N-1)和系数(k_0~k_N-1),输出一个数据。该处理以M层并行方式进行,输出M个数据och_0~och_M-1。

这样,运算部7设输入通道数量为N、输出通道数量为M,取得并行度为N×M的结构。输入通道数量N和输出通道数量M的大小能够根据CNN的大小来设定(变更),因此,考虑处理性能或电路规模来适当地设定。

运算部7具有运算控制部71,该运算控制部71进行运算部内的各部的控制。此外,运算部7按照各层具有滤波运算部72、第1加法器73、第2加法器74、FF(触发器)75、非线性变换部76和池化处理部77。而且,这样的层有M个。

运算控制部71通过向运算部7的前级发出请求,将规定的数据输入到滤波运算部72。滤波运算部72构成为能够在内部由乘法器和加法器以N并行同时执行,进行输入数据的滤波处理,并以N并行输出滤波处理的结果。

第1加法器73将以N并行执行并输出的滤波运算部72中的滤波处理的结果全部相加。第2加法器74将以时分方式输入的第1加法器73的运算结果累积相加。第2加法器74直到取完全部iFM数据为止,将第1加法器73的运算结果累积相加。设置FF 75以保持累积相加的结果。非线性变换部76对第2加法器74和FF 75中的累积相加的结果进行基于Activate函数等的非线性运算处理。具体安装未特别规定,但是,例如通过折线近似进行非线性运算处理。

池化处理部77进行从多个数据中选择输出最大值(Max Pooling:最大值池化)、计算平均值(Average Pooling:平均值池化)等池化处理,该多个数据是从非线性变换部76输入的。另外,通过运算控制部71能够忽略非线性变换部76和池化处理部77。

运算控制部71进行在运算部7内的各部中进行的上述处理的控制。根据这样的结构,在运算部7中,输入通道数量N和输出通道数量M的大小能够根据CNN的大小来设定(变更),因此,考虑处理性能或电路规模来适当地设定。

图3是示出本发明实施方式的运算处理装置的IBUF(数据存储存储器)管理部5的结构的图。IBUF管理部5具有计数器51、SRAM写入控制部52、N个IBUF(数据存储存储器)(0~N-1)和SRAM读出控制部53。

在所输入的iFM(输入特征量图)数据的数量超过输入的并行度N的情况下,有时以时分的方式输入iFM数据,因此,需要用于识别输入了哪个iFM数据的ID(以下,称作iFMID)。iFMID是针对数据输入部3从DRAM 9以突发传输为单位所取得的数据确定的一个代表值,例如,以使最初的1~N面的iFMID变化为0、使N+1~2N面的iFMID变化为1、……的方式依次递增地发生变化。

计数器51生成所输入的iFM数据的ID(iFMID),并且按照每个iFMID对输入数据中的有效数据数量(输入有效数据数量)进行计数,变换为坐标(iFM坐标)并输出。

SRAM写入控制部52将从计数器51输出的iFM坐标变换为IBUF地址(IBUF中的地址),将数据(iFM数据)存储到IBUF中。此外,SRAM写入控制部52将构成IBUF的各SRAM虚拟地分割为多个区域,通过iFMID切换要写入的区域。此外,SRAM写入控制部52控制成在相同的SRAM中存储有同一坐标的不同的iFM数据。

此外,SRAM写入控制部52每当同一坐标的iFM数据的运算处理结束时,开放存储有该同一坐标的iFM数据的区域,存储iFM数据的后续数据。

SRAM读出控制部53从外部接收请求(req),并从IBUF按照规定的方法取出数据。此外,SRAM读出控制部53切换地址,以访问与想取出的iFMID对应的IBUF内的区域。

运算部7的运算控制部71控制成生成iFMID,而从WBUF取得与从SRAM读出控制部53输入的iFM数据相同的iFMID的系数,以取出1个IBUF所存储的多个iFM。此外,运算控制部71直到取完全部iFM数据为止,使用第2加法器74将第1加法器73的运算结果累积相加。

图4是示出本实施方式的运算处理装置的IBUF(数据存储存储器)的结构的图。IBUF分别由3个以上的SRAM构成。在图4的例子中,1个IBUF(IBUF_i)由4个SRAM构成,使用其中的3个SRAM(SRAM0~SRAM2)来取出滤波运算所需的数据。剩余的1个SRAM(SRAM 3)用于写入从DRAM取得的数据。

结束运算部7中的处理而不再需要的数据以SRAM的每一个为单位依次开放,作为IBUF整体,作为循环缓冲器工作。另外,在本例中,IBUF由4个SRAM构成,但是,只要SRAM的数量为3个以上,可以为任意个。通过使SRAM的数量为3个以上,即使在例如读出位置在SRAM1和SRAM2中重叠(横跨)的情况下,也能够在正在依次取出数据的过程中并行地进行向SRAM3的写入。

在SRAM1的使用结束之后,预先开放以用于写入。由于在处理执行中向SRAM3的写入完成,所以写入处理转移到已经开放的SRAM1。在此期间,读取侧使用SRAM2~SRAM3的区域继续进行滤波处理。这样,通过依次开放不使用的区域而进行数据更新,能够进行无缝的处理(滑动窗口处理)。

接着,说明iFM数量(iFM的面数)超过电路的输入并行度并向1个IBUF输入多个FM的情况。现在假设iFM数量=N×n(N:输入并行度)。向各输入ch输入n面的数据。因此,以输入面数n对IBUF内进行分割,在分割后的各个区域内进行滑动窗口处理。如图5所示那样对输入到各输入ch的n面的数据进行分割而存储到IBUF中。

图5是示出对输入到1个输入ch的iFM进行分割而存储到IBUF中的情形的图。图6是示出对被分割而存储到IBUF中的iFM进行处理的情形的图。图是IBUF由4个SRAM(SRAM1、……、SRAM4)构成的例子。即,IBUF在物理上分为4个SRAM。

各SRAM(SRAM1、……、SRAM4)被虚拟地分割为n个。使得在SRAM的各分割区域中存储有iFM的相同区域(坐标)的数据。具体而言,在SRAM1的分割区域中存储有与iFM的区域A对应的数据iFM_0~iFM_n-1。在SRAM2的分割区域中存储有与iFM的区域B对应的iFM_n~iFM_2n-1。在SRAM3的分割区域中存储有与iFM的区域C对应的iFM_2n~iFM_3n-1。在SRAM4的分割区域中存储有与iFM的区域D对应的iFM_3n~iFM_4n-1。

即,使得在1个SRAM内存储有iFM的相同坐标位置的数据。这是因为,同时取出iFM的相同坐标位置的数据而进行运算处理,进行滑动窗口处理。另外,通过使SRAM的数量为3个以上,即使在进行跨越iFM的2个区域(坐标)的数据的处理(从SRAM1和SRAM2的数据读入)的情况下,也能够并行进行向第3SRAM的写入。

在图6的例子中,首先,第1面的iFM_0、第2面的iFM_1、……、第n面的iFM_n-1为相同坐标位置(区域A)的数据,它们存储到SRAM1的分割区域中。第1面的iFM_n、第2面的iFM_n+1、……、第n面的iFM_2n-1为相同坐标位置(区域B)的数据,它们存储到SRAM2的分割区域中。第1面的iFM_2n、第2面的iFM_2n+1、……、第n面的iFM_3n-1为相同坐标位置(区域C)的数据,它们存储到SRAM3的分割区域中。第1面的iFM_3n、第2面的iFM_3n+1、……、第n面的iFM_4n-1为相同坐标位置(区域D)的数据,它们存储到SRAM4的分割区域中。

SRAM1所存储的iFM_0、iFM_1、……、iFM_n-1为相同坐标位置的数据,在相同的定时进行运算处理,在相同的定时不需要。存储有不需要的数据的SRAM被依次开放,存储作为iFM的后续数据的第1面的iFM_4n、第2面的iFM_4n+1、……、第n面的iFM_5n-1。这样,进行滑动窗口处理。

在1个SRAM的区域中,将被虚拟地分割而成的各区域尺寸称作“分割区域尺寸”。分割区域尺寸对应于在各区域中能够存储的iFM的数据量。使用完成数据能够以分割区域尺寸为单位丢弃,因此,以分割区域尺寸为单位进行滑动窗口处理,开放SRAM的使用完成区域而能够输入iFM的后续数据。

具体而言,在图6中,在存储有SRAM1的iFM_0、SRAM2的iFM_n、SRAM3的iFM_2n、SRAM4的iFM_3n的分割区域尺寸(存储有第1面的数据的分割区域尺寸)中,进行滑动窗口处理。同时,在存储有SRAM1的iFM_1、SRAM2的iFM_n+1、SRAM3的iFM_2n+1、SRAM4的iFM_3n+1的分割区域尺寸(存储有第2面的数据的分割区域尺寸)中,进行滑动窗口处理。同时,在存储有SRAM1的iFM_n-1、SRAM2的iFM_2n-1、SRAM3的iFM_3n-1、SRAM4的iFM_4n-1的分割区域尺寸(存储有第n面的数据的分割区域尺寸)中,进行滑动窗口处理。

这样,在本发明中,在多个运算部各自中,以时分的方式对多个FM进行处理,由此能够对应较大的网络。

另外,iFMID按照每个面增加为0、1、2、……、n-1,因此,能够通过利用iFMID使地址偏移发生变化来如图6那样将iFM配置于IBUF。图7是示出n=2时的、通过iFMID使地址偏移发生变化的图像的图。另外,在n=1的情况下,无需参考iFMID,因此,将iFMID固定为零即可。

图8是示出本实施方式的运算处理装置中的、向IBUF的数据写入控制流程的图。从步骤S1开始iFM分割循环。在步骤S2中,判定IBUF是否能够写入。在IBUF不可写入的情况下,进入步骤S3,待机(等待),并返回步骤S2。

在IBUF能够写入的情况下,进入步骤S4。从步骤S4开始分割区域尺寸循环,从步骤S5开始iFM数量(n)循环。在步骤S6中进行地址计算,在步骤S7中,判定是否存在数据输入。在不存在数据输入的情况下,进入步骤S8,待机(等待),并返回步骤S7。

在存在数据输入的情况下,进入步骤S9,对IBUF进行数据写入。在步骤S10中,判定是否进行了相当于iFM数量(n)的处理,在未进行的情况下,返回步骤S5,在进行了的情况下,进入步骤S11。在步骤S11中判定是否进行了分割区域尺寸的量的处理,在未进行的情况下,返回步骤S4,在进行了的情况下,进入步骤S12。在步骤S12中,判定iFM分割是否已完成,在未完成的情况下,返回步骤S1,在已完成的情况下,结束处理(向IBUF的数据写入处理)。

接着,对如上述那样读出输入到IBUF的数据时的处理进行说明。在各输入ch中加入多个iFM,但是,假设输入了2个面的iFM(iFM1、iFM2)。而且,假设iFM的数据配置及对其施加的滤波器的系数如图9那样。图9是示出iFM的数据配置和系数的一例的图。

在iFM1中,数据配置如图9的(a)那样。a1、b1、……、p1表示数据,配置有4×4的数据。对其中的3×3的数据(a1、b1、c1、d1、e1、f1、g1、i1、j1、k1)各自施加的滤波器的系数如图9的(b)那样。w1、w2、……、w9表示各数据系数。

同样,在iFM2中,数据配置如图9的(c)那样。a2、b2、……、p2表示数据,配置有4×4的数据。对其中的3×3的数据(a2、b2、c2、d2、e2、f2、g2、i2、j2、k2)各自施加的滤波器的系数如图9的(d)那样。x1、x2、……、x9表示各数据系数。

时序图如图10所示。图10是示出本实施方式的运算处理装置中的卷积处理时、iFM数量=2N时的时序图的图。3×3的9个数据a1~k1和系数w1~w9的滤波运算结果为A,3×3的9个数据a2~k2和系数x1~x9的滤波运算结果为B。滤波运算结果在第2加法器中在时间方向上被累积相加,其结果保持到FF中。第2加法器中的最终累积相加结果为Σ。

即,iFM1和iFM2以时分的方式输入,并在第2加法器中被累积相加,其结果保持到FF中。在第2加法器的结果为A或A+B时,仍处于累积相加的中途,因此,不输出到非线性变换部。当第2加法器中的累积相加完成时,该累积相加结果Σ输出到非线性变换部,FF返回初始值。非线性变换部进行非线性变换f(Σ)。

图11是示出本实施方式的运算处理装置中的SRAM读出控制部的控制流程的一例的图。首先,在步骤S21中,oFM_V循环开始。oFM_V循环是在V方向(横向)上对oFM的数据进行处理的循环。然后,在步骤S22中,oFM_H循环开始。oFM_H循环是在H方向(纵向)上对oFM的数据进行处理的循环。在步骤S23中,生成WBUF访问地址,并行地在步骤S26中生成IBUF访问地址。

当在步骤S23中生成了WBUF访问地址时,在步骤S24中进行数据存储判定。在数据存储判定为OK的情况下,进入步骤S29的池化循环。在数据存储判定为NG的情况下,在步骤S25中待机(等待),并返回步骤S24。

此外,当在步骤S26中生成IBUF访问地址时,在步骤S27中进行数据存储判定。在数据存储判定为OK的情况下,进入步骤S29的池化循环。在数据存储判定为NG的情况下,在步骤S28中待机(等待),并返回步骤S27。

在步骤S29的池化循环之后,进入步骤S30的iFM数量循环、步骤S31的滤波器尺寸循环,在步骤S32中进行运算部的处理。在步骤S33中判定是否可以结束各循环,在未结束的情况下,返回各循环,在全部循环已结束的情况下,控制流程结束。

IBUF的数据存储判定是关于在包含池化处理在内滤波处理所需的全部iFM的坐标数据是否已存储到IBUF中的判定,最内侧循环成为判定后。另外,假设判定方法能够进行各种变更。此外,只要以oFM的H尺寸为单位判定即可,oFM_H循环也放置在数据存储判定后。

另外,关于在本实施方式中所说明的存储器控制和存储器存储方法,还能够应用于输入多个帧来生成输出数据的算法。例如,也能够应用于利用帧间相关的MPEG等压缩处理或降噪处理。

(实施方式2)

在实施方式1中,针对对一个CNN的层进行处理的电路和如何将输入到该电路的iFM展开到IBUF中并进行处理进行了说明。在实施方式2中,特别是,对应于oFM数量(oFM的面数)超过电路的并行度M的情况。

图12是示出本实施方式的CNN的处理示意图的图。图12示出了oFM数量=2M的例子,仅显示了一个输入ch。假设oFM数量超过输出并行度M,oFM数量=M×m(m>1)。CNN是根据全部iFM的同一坐标数据计算oFM的1个像素的处理。

此时,当逐个面生成oFM时,iFM在IBUF内进行了滑动窗口处理,因此,最初的部分的数据被覆盖而不再存在于IBUF中。因此,每当进行生成新的oFM的处理时,必须从DRAM重新读取iFM。

因此,在本实施方式中,控制成生成全部能够用IBUF所存储的数据进行处理的oFM。具体而言,在从输入到IBUF的iFM(仅存储一部分)起对一个oFM执行尽可能的处理次数之后,不更新IBUF而进行与下一oFM对应的处理(适当地切换系数)。

此时的“尽可能的处理次数”在设定为在IBUF上作为单位的分割区域尺寸时是高效的。这是因为,进入构成IBUF的1个SRAM的iFM1面量的数据为分割区域尺寸,当以该分割区域尺寸为单位进行处理时,在结束了想输出的oFM数量的处理的时刻,1个SRAM的量的数据为使用完成,因此能够开放。另外,分割区域尺寸为iFM中的数据量,不一定与oFM上的数据量一致。这是因为,产生基于池化处理的缩小。

不以像素为单位改变oFM的理由是因为将某一程度的数据量传输到DRAM上的效率较高。如果缓冲器的尺寸或传输效率没有问题,则也可以以像素为单位切换。

这样,在本实施方式中,在进行滑动窗口处理之前,进行能够以所加入的数据进行的全部处理。另外,被输出的数据不是逐个完成并输出oFM,而一点点地输出多个oFM的一部分,最终完成并输出多个oFM。

图13是示出本实施方式的运算处理装置中的SRAM读出控制部的控制流程的一例的图。“dM计数器”相当于分割区域尺寸的循环计数器。首先,在步骤S41中,假设dM计数器=0。然后,从步骤S42开始oFM_V循环,从步骤S43开始oFM_H循环。oFM_V循环是在V方向(横向)上对oFM的数据进行处理的循环,oFM_H循环是在H方向(纵向)上对oFM的数据进行处理的循环。

在步骤S44中,生成WBUF访问地址,并行地在步骤S47中生成IBUF访问地址。

当在步骤S44中生成了WBUF访问地址时,在步骤S45中进行数据存储判定。在数据存储判定为OK的情况下,进入步骤S50的池化循环。在数据存储判定为NG的情况下,在步骤S46中待机(等待),并返回步骤S45。

此外,当在步骤S47中生成IBUF访问地址时,在步骤S48中进行数据存储判定。在数据存储判定为OK的情况下,进入步骤S50的池化循环。在数据存储判定为NG的情况下,在步骤S49中待机(等待),并返回步骤S48。

在步骤S50的池化循环之后,进入步骤S51的iFM数量循环、步骤S52的滤波器尺寸循环,在步骤S53中进行运算部的处理。在步骤S54和步骤S55中判定是否可以结束各循环,在未结束的情况下,返回各循环,在全部循环已结束的情况下,进入步骤S56。

在步骤S56中,判定dM计数器是否为分割区域尺寸以上。在dM计数器为分割区域尺寸以上的情况下,进入步骤S57,设为dM计数器=0。然后,在步骤S58中,向下一oFM发送系数,进入步骤S60。

在dM计数器不为分割区域尺寸以上的情况(dM计数器小于分割区域尺寸的情况)下,进入步骤S59,增加dM计数器的值。然后,进入步骤S60。

在步骤S60中判定是否可以结束oFM_V循环和oFM_H循环,在未结束的情况下,返回各循环,在全部循环已结束的情况下,控制流程结束。

图14示出本实施方式的运算处理装置中的iFM数量=2N、oFM数量=3M的情况下的时序图的一例。当设分割区域尺寸为4D时,存在池化,因此,oFM上的数据数量成为oFM数量×D个。

在数据输出部中对池化后的有效数据数量进行计数,能够识别出目前接收到哪个oFM,因此,根据识别结果适当地展开到DRAM上。图15是示出写出数据的DRAM的输出示意图的图。图中的数字表示输出顺序。

这样,在本实施方式中,IBUF管理部内的SRAM读出控制部从IBUF取出数据,以根据相同的输入数据执行要输出的m张的oFM的滤波处理。然后,数据输出部对有效数据进行计数来识别是哪个oFM数据,适当地生成地址,而输出到DRAM。由此,能够在不重新读入iFM的情况下输出超过输出并行度的oFM数量。

即,SRAM读出控制部从IBUF读出iFM数据的部分数据。运算部进行从SRAM读出控制部输入的iFM的部分数据的运算处理(对所读入的位置的数据进行处理),生成oFM数据的部分数据。然后,在结束之后,进入iFM数据的下一部分数据的处理。

以上,对本发明的一个实施方式进行了说明,但本发明的技术范围并不受上述实施方式限定,能够在不脱离本发明的宗旨的范围内改变构成要素的组合,或者对各构成要素施加各种变更或进行删除。

在本说明书中,“前、后、上、下、右、左、纵、横、行、列”等表示方向的词语用于说明本发明的装置中的这些方向。因此,本发明的说明书中用于说明的这些词语应该在本发明的装置中被相对地解释。

产业上的可利用性

本发明能够广泛应用于进行使用卷积神经网络的深度学习的运算处理装置,即使是iFM尺寸或iFM数量较大而无法完全进入数据存储存储器(IBUF)的尺寸,也能够不进行滤波器尺寸的量的重叠而无缝地实施运算处理和数据更新。

标号说明

1:运算处理装置;2:控制器;3:数据输入部;4:系数输入部;5:IBUF(数据存储存储器)管理部;6:WBUF(系数存储存储器)管理部;7:运算部;8:数据输出部;9:DRAM(存储用外部存储器);10:总线;51:计数器;52:SRAM写入控制部;53:SRAM读出控制部;71:运算控制部;72:滤波运算部;73:第1加法器;74:第2加法器;75:FF(触发器);76:非线性变换部;77:池化处理部。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号