CN108073549B - 卷积运算装置及方法 - Google Patents

卷积运算装置及方法 Download PDF

Info

Publication number
CN108073549B
CN108073549B CN201611002219.0A CN201611002219A CN108073549B CN 108073549 B CN108073549 B CN 108073549B CN 201611002219 A CN201611002219 A CN 201611002219A CN 108073549 B CN108073549 B CN 108073549B
Authority
CN
China
Prior art keywords
convolution
scale
convolution operation
results
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201611002219.0A
Other languages
English (en)
Other versions
CN108073549A (zh
Inventor
杜力
杜源
李一雷
管延城
刘峻诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kneron Inc
Original Assignee
Kneron Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kneron Inc filed Critical Kneron Inc
Priority to CN201611002219.0A priority Critical patent/CN108073549B/zh
Priority to US15/459,737 priority patent/US10169295B2/en
Publication of CN108073549A publication Critical patent/CN108073549A/zh
Application granted granted Critical
Publication of CN108073549B publication Critical patent/CN108073549B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

本申请公开一种卷积运算的处理方法,包括:对各输入信道的数据进行卷积运算以输出多个卷积结果;以及将上述输入信道中对应顺序的各卷积结果交错加总以分别输出加总结果。

Description

卷积运算装置及方法
技术领域
本发明涉及一种卷积运算装置及方法,特别涉及一种搭配交错(interleaving)加总架构进行运算的卷积运算装置及方法。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)常应用于图像处理装置中,以便对影像数据进行图像处理。一般常用的移动窗(sliding window)可采用1×1、3×3、5×5或7×7等规模,其中又以3×3的规模较为常用,因此,一般卷积运算装置中的卷积单元会以3×3规模来设计。以输入最大带宽为8个像素数据为例,当使用8个3×3卷积单元对8个像素数据进行1×1卷积运算时,各3×3卷积单元中仅1个乘法器实质上进行卷积运算,因此其他的乘法器没有运用到,这造成硬件资源浪费。
因此,如何提供一种卷积运算装置及方法,可提升卷积单元内元件的使用率,增进卷积运算的效能,实为当前重要的课题之一。
发明内容
本发明的目的为提供一种卷积运算装置及方法,可提升卷积单元内元件的使用率,增进卷积运算的效能。
为达上述目的,本发明提供一种卷积运算装置,包括多个卷积运算模块以及一个交错加总单元。多个卷积运算模块各具有多个卷积单元,各卷积单元配置来输出多个卷积结果。交错加总单元耦接上述卷积运算模块的上述卷积单元,配置来对上述卷积运算模块中对应顺序的各卷积结果交错加总,以分别输出加总结果。
在一个实施例中,上述卷积单元以及交错加总单元系能够选择性地操作在低规模卷积模式以及高规模卷积模式;其中,在低规模卷积模式中,各卷积单元配置来输出上述卷积结果,交错加总单元配置来对上述卷积运算模块中对应顺序的各卷积结果交错加总以分别输出加总结果;其中,在高规模卷积模式中,各卷积单元配置来输出多个高规模卷积结果,交错加总单元将上述高规模卷积结果作为输出。
在一个实施例中,各卷积单元包括多个低规模卷积输出以及一个高规模卷积输出。多个低规模卷积输出进行低规模卷积运算以输出上述卷积结果。高规模卷积输出进行高规模卷积运算以输出高规模卷积结果。
在一个实施例中,交错加总单元选择性地将上述加总结果以及上述高规模卷积结果其中一个输出。
在一个实施例中,各卷积运算模块耦接输入信道,上述输入信道的总宽度与上述加总结果的总宽度相等。
在一个实施例中,上述卷积运算模块的数量小于或等于各卷积运算模块中上述卷积单元的数量。
在一个实施例中,各卷积单元的上述卷积结果系相同规模的卷积运算的结果。
在一个实施例中,上述卷积运算模块的数量等于各卷积单元的上述卷积结果的数量。
为达上述目的,本发明提供一种卷积运算的处理方法,包括:对于各输入信道的数据进行卷积运算以输出多个卷积结果;以及将上述输入信道中对应顺序的各卷积结果交错加总以分别输出加总结果。
在一个实施例中,卷积运算的处理方法进一步包括:决定在低规模卷积模式以及高规模卷积模式其中一个之中进行卷积运算;当在高规模卷积模式中,进行高规模卷积运算以输出多个高规模卷积结果;将上述高规模卷积结果作为输出;当在低规模卷积模式中,对于各输入信道的数据进行低规模卷积运算以输出上述卷积结果;将上述输入信道中对应顺序的各卷积结果交错加总以分别输出加总结果。
在一个实施例中,卷积运算的处理方法进一步包括:选择性地将上述加总结果以及上述高规模卷积结果其中一个输出。
在一个实施例中,上述输入通道的总宽度与上述加总结果的总宽度相等。
在一个实施例中,上述卷积结果系相同规模的卷积运算的结果。
在一个实施例中,交错加总的步骤是进行卷积神经网络的一后续层的部分运算。
在一个实施例中,部分运算是跨越该等输入通道的运算。
承上所述,本发明的卷积运算装置及方法中,同时对输入于各卷积运算模块的数据进行卷积运算,并通过交错加总单元将各卷积运算模块的输入信道中对应顺序的各卷积结果交错加总以分别输出加总结果,使各输入信道的新数据总宽度与各加总结果的总宽度相等,故可提升卷积单元的使用率,并达成输入带宽与输出带宽相等的功效。
附图说明
图1为依据本发明一个实施例的卷积运算装置的功能方块图。
图2为图1的卷积运算装置对一个二维数据进行卷积运算的示意图。
图3为依据本发明一个实施例的卷积运算模块执行卷积运算的架构图。
图4A为图3的卷积运算模块于3×3卷积运算模式下运作的示意图。
图4B为图3的卷积运算模块于3×3卷积运算模式下运作的另一个实施例的示意图。
图4C为图3的卷积运算模块于1×1卷积运算模式下运作的示意图。
图5为依据本发明一个实施例的卷积单元的功能方块图。
图6为依据本发明另一个实施例的卷积运算模块于1×1卷积运算模式下。
具体实施方式
以下将参照相关附图,说明依据本发明具体实施例的卷积运算装置及方法,其中相同的元件将以相同的元件符号加以说明,所附附图仅为说明用途,并非用于局限本发明。
图1为依据本发明一个实施例的卷积运算装置的功能方块图。以下将以两个卷积运算模块为例进行说明,请参阅图1所示,卷积运算装置100包括内存1、缓冲装置2、第一卷积运算模块3a、第二卷积运算模块3b、控制单元4、缓冲单元6以及交错加总单元5。第一卷积运算模块3a具有卷积单元(30a~37a),第二卷积运算模块3b则具有卷积单元(30b~37b)。交错加总单元5耦接于第一卷积运算模块3a及第二卷积运算模块3b中的各卷积单元。
卷积运算装置100可应用于卷积神经网络中的卷积运算。内存1可储存待进行卷积运算的数据,例如是影像数据、视频数据、统计数据或卷积神经网络其中一层的数据等等。以影像数据来说,其例如是像素数据;以视频数据来说,其例如是视频的视框的像素数据或是移动向量、或是视频中的音讯;以卷积神经网络其中一层的数据来说,其通常是一个二维数组数据,或是一个影像数据。全部或大部分的数据可先储存在其他地方,例如在另一个内存中,当进行卷积运算时再全部或部分地加载至内存1中,然后通过缓冲装置2将新数据输入至第一卷积运算模块3a及第二卷积运算模块3b来进行卷积运算。若输入的数据是从数据串流而来,内存1则从数据串流随时写入最新的数据以供卷积运算之用。
控制单元4可包括指令译码器以及控制器,指令译码器从控制器得到指令并将指令译码,由此得到目前输入数据大小、输入数据的行数、输入数据的列数、移动窗(slidingwindow)或称为卷积大小(convolution size)的编号、以及输入数据在内存1中的起始地址。另外,指令译码器也从控制器得到移动窗种类信息以及输出特征编号,并输出适当的控制信号到缓冲装置2,缓冲装置2根据上述信号来运作。控制单元4可控制第一卷积运算模块3a、第二卷积运算模块3b、交错加总单元5以及缓冲单元6的运作。例如数据从内存1输入到缓冲装置2的时序、内存1输入到第一卷积运算模块3a及第二卷积运算模块3b的时序、第一卷积运算模块3a及第二卷积运算模块3b的卷积运算的规模、数据从内存1到缓冲装置2的读取地址、数据从缓冲单元6到内存1的写入地址、第一卷积运算模块3a及第二卷积运算模块3b所运作的卷积模式。
举例来说,各卷积运算模块具有多个卷积单元,各卷积单元基于滤波器以及多个当前数据进行卷积运算,并于卷积运算后保留部分的当前数据。缓冲装置2从内存1取得多个新数据,并将新数据输入至卷积单元,新数据不与当前数据重复,新数据例如是前一轮卷积运算还未用到但是本轮卷积运算要用到的数据。卷积运算模块的卷积单元基于滤波器、保留的当前数据以及新数据进行次轮卷积运算。
多个卷积运算模块可平行处理以增进效能,从内存读取的分属不同信道的多个数据可以分别由不同的模块来处理。举例来说,各通道例如有但不限于8个数据,一个数据例如但不限于代表一个像素的值,不同信道的数据分别供各模块来进行卷积运算。例如第一个信道的数据是输入到第一卷积运算模块3a,第二个信道的数据是输入到第二卷积运算模块3b。另外,若还有更多信道的数据,例如全部有i个输入信道的数据,可以再增设第三卷积运算模块到第i个卷积运算模块来分别对第三至第i个信道的数据进行卷积运算。
在一个实施方式下,卷积运算装置100例如是一个处理器,内存1例如是处理器内的高速缓存(cache memory),缓冲装置2中包括多个功能单元,以增加平行处理卷积运算的效能。各卷积单元(30a~37a、30b~37b)、控制单元4、交错加总单元5、缓冲单元6以及缓冲装置2的功能单元可采用数字逻辑电路构成,各单元的内部可包括多个逻辑元件来实现其功能。内存1、缓冲装置2、第一卷积运算模块3a、第二卷积运算模块3b、控制单元4、交错加总单元5以及缓冲单元6可以整合于同一个集成电路。
在其他实施方式下,内存1可以是一般的随机存取内存(DRAM),第一卷积运算模块3a、第二卷积运算模块3b、控制单元4、交错加总单元5以及缓冲单元6可以整合于同一个集成电路。另外,若有更多个卷积运算模块,这些卷积运算模块也可以和前述单元或模块整合于同一个集成电路。
此外,第一卷积运算模块3a及第二卷积运算模块3b以及交错加总单元5可受控制单元4所控制而选择性地操作在低规模卷积模式以及高规模卷积模式,其中高规模卷积模式可以是3×3卷积运算模式,而低规模卷积模式可以是1×1卷积运算模式。在低规模卷积模式下,交错加总单元5可对第一卷积运算模块3a及第二卷积运算模块3b中对应顺序的各卷积结果交错加总,以分别对应各通道而输出加总结果,而于高规模卷积模式下,交错加总单元5则输出高规模卷积结果。
举例来说,控制单元4可接收控制信号或模式指令,并且根据这个控制信号或模式指令来决定其他模块以及单元要在哪一种模式运算。这个控制信号或模式指令可从其他控制单元或处理单元而得。
请参考图2,图2为图1的卷积运算装置对二维数据进行卷积运算的示意图。二维数据具有多行多列,其例如是影像,在此仅示意地显示其中5×4的像素。3×3矩阵大小的滤波器用于二维数据的卷积运算,滤波器具有系数FC0~FC8,滤波器移动的步幅小于滤波器的最短宽度。滤波器的规模与移动窗(sliding window)或卷积运算窗相当。移动窗可在5×4的影像上间隔移动,每移动一次便对窗内对应的数据P0~P8进行一次3×3卷积运算,卷积运算后的结果可称为特征值。移动窗S每次移动的间隔称为步幅(stride),由于步幅(stride)的大小并不会超过移动窗S(sliding window)的大小或是卷积运算的尺寸(convolution size),因此以本实施例的移动窗步幅来说,将会小于3个像素的移动距离。而且,相邻的卷积运算往往会有重迭的数据。以步幅等于1来说,数据P2、P5、P8是新数据,数据P0、P1、P3、P4、P6、P7是前一轮卷积运算已经输入过的数据。对于一般卷积神经网络的应用来说,常用的移动窗尺寸为1×1、3×3、5×5、7×7不等,其中又以本实施例的移动窗尺寸较为常用(3×3)。
图3为依据本发明一个实施例的卷积运算模块执行卷积运算的架构图。如图3所示,第一卷积运算模块3a包括卷积单元30a~37a,第二卷积运算模块3b包括卷积单元30b~37b,各卷积单元(30a~37a、30b~37b)可包括数据输入、滤波器系数输入、系数地址输入、致能输入、多个低规模卷积输出以及一个高规模卷积输出。
在各卷积运算模块中,以第一卷积运算模块3a为例,卷积运算的滤波器系数通过滤波器线路FC输入到各卷积单元30a~37a,滤波器线路FC可以是总线(bus),从滤波器线路FC的系数读取地址是从地址线路Coef Addr输入到各卷积单元30a~37a,各卷积单元30a~37a根据系数读取地址从滤波器线路FC读取滤波器系数。依据当下的卷积运算模式,第一输入信道CH_1的新数据输入到对应的卷积单元30a~37a。致能控制信号通过控制线路EN输入到各卷积单元30a~37a,致能控制信号可个别控制各卷积单元30a~37a是否启用,也可以进一步控制各卷积单元30a~37a内元件的启用。依据当下的卷积运算模式,各卷积单元30a~37a将从第一输入信道CH_1输入的数据以及滤波器系数进行卷积运算并输出。在低规模卷积模式中,各卷积单元30a~37a可分别输出两个低规模卷积结果pm0_0~pm7_0、pm0_1~pm7_1;在高规模卷积模式中,各卷积单元30a~37a可分别输出一个高规模卷积结果psum1~psum7。举例来说,低规模卷积模式是1×1的卷积运算,卷积单元30a进行1×1卷积运算并输出两个低规模卷积结果pm0_0、pm0_1;高规模卷积模式是3×3的卷积运算,卷积单元30a进行3×3卷积运算并输出一个高规模卷积结果psum0,其他卷积单元31a~37a也是一样。
由于3×3卷积运算在步幅为1时,每移动一次滤波器的窗有6个数据是和前次卷积运算处理的数据一样,因而实际需要新输入的数据是3个。另外,各卷积单元30a~37a的三个数据输入是间隔一个,也就是相邻的两个卷积单元会有两个相同的数据输入。全部卷积单元30a~37a实际上需要10个数据输入。但是,因为这10个数据之中已有两个在前一轮的卷积运算中已经读入,缓冲器可将两个数据缓冲,因此,实际上每轮从信道输入的新数据仍是8个。
另外,各通道的滤波器可以相同也可以不同。卷积运算模块3b或还有更多的卷积运算模块,其运作以及架构与前述一样。
交错加总单元5也受控制单元4所控制而被选择运作在其中一个卷积运算模式中,并配置来在卷积运算模式中对应地将交错加总结果输出、或对应地将高规模卷积结果输出。
交错加总单元5耦接第一及第二卷积运算模块3a、3b,由于第一及第二卷积运算模块3a、3b可针对输入数据的不同特征对其进行运算,并输出特征运算结果。而对于多个特征的数据写入来说,第一及第二卷积运算模块3a、3b则可对应输出多笔的运算结果。交错加总单元5的功能则在于可将第一及第二卷积运算模块3a、3b多笔的运算结果,结合后再得出输出特征结果。当交错加总单元5取得输出特征结果后,再将输出特征结果传送至缓冲单元6,以利进行下一阶段的处理。
举例来说,卷积神经网络具有多个运算层,例如卷积层、池化层等,卷积层以及池化层的层数可以是多层,各层的输出可以当作另一层或后续层的输入,例如第N层卷积层的输出是第N层池化层的输入或是其他后续层的输入,第N层池化层的输出是第N+1层卷积层的输入或是其他后续层的输入,第N层运算层的输出可以是第N+1层运算层的输入。
为了提升运算效能,进行第N层运算层的运算时,可以视运算资源(硬件)的使用情况来进行第N+i(i>0,N、i为自然数)层运算层的部分运算,有效运用运算资源并且能降低实际在第N+i层运算层时的运算量。
在本实施例中,在一种运算情况下,例如3x3卷积运算,第一及第二卷积运算模块3a、3b进行卷积神经网络的某一层卷积层的运算,交错加总单元5没有进行卷积神经网络的后续层的部分运算,缓冲单元6进行卷积神经网络的同一阶池化层的运算。在另一种运算情况下,例如1x1卷积运算,第一及第二卷积运算模块3a、3b进行卷积神经网络的某一层卷积层的运算,交错加总单元5进行卷积神经网络的后续层的部分运算,部分运算例如是相加加总,缓冲单元6进行卷积神经网络的同一阶池化层的运算。在其他实施例中,缓冲单元6除了进行池化层的运算,也可进行卷积神经网络的后续层的部分运算。前述的部分运算例如是将后续层的加总运算、平均运算、取最大值运算或其他运算等先在卷积神经网络的目前这一层做运算。
以下将以图4A及图4C分别说明高规模卷积模式及低规模卷积模式的卷积运算方法,其中高规模卷积模式及低规模卷积模式分别采用3×3及1×1卷积运算模式。
图4A为依据本发明实施例的卷积运算模块于3×3卷积运算模式下运作的示意图。
请参阅图4A所示,8个新数据输入至第一输入通道CH_1,8个新数据输入至第二输入通道CH_2,3×3滤波器系数通过滤波器线路FC输入到卷积单元30a~37a、30b~37b,卷积单元30a~37a将滤波器系数与输入的数据进行3×3卷积运算并分别输出卷积结果psum0~psum7,卷积单元30b~37b将滤波器系数与输入的数据进行3×3卷积运算并分别输出卷积结果psum0~psum7。即第一卷积运算模块3a及第二卷积运算模块3b共输出了16个数据。因此,第一卷积运算模块3a及第二卷积运算模块3b的总输入带宽等同于其总输出带宽。交错加总单元5不用进行交错加总,可以直接将卷积结果psum0~psum7作为输出。
此外,图4A中第一卷积运算模块3a及第二卷积运算模块3b的输出结果也可经由交错加总单元5进行运算。图4B为图3的卷积运算模块于3×3卷积运算模式下运作的另一个实施例的示意图。由于第一卷积运算模块3a及第二卷积运算模块3b分别输出不同通道的结果,交错加总单元5也可对其直接进行交错加总,例如将第一卷积运算模块3a输出的卷积结果psum0~psum7依序与第二卷积运算模块3b的卷积结果psum0~psum7相加,最后输出8个交错相加的结果。在这种运算情况下,第一及第二卷积运算模块3a、3b进行卷积神经网络的某一层卷积层的运算,交错加总单元5进行卷积神经网络的后续层的部分运算。
图4C为依据本发明实施例的卷积运算模块于1×1卷积运算模式下运作的示意图。请参阅图4C所示,8个新数据输入至第一输入通道CH_1,8个新数据输入至第二输入通道CH_2,两个1×1滤波器系数通过滤波器线路FC输入到卷积单元30a~37a、30b~37b,因一个1×1滤波器只有一个系数,故即使是两个1×1滤波器系数仍可用原本给3×3滤波器系数用的线路来输入。在各卷积运算模块中,以第一卷积运算模块3a为例,卷积单元30a~37a对输入的数据以及两个1×1滤波器系数进行卷积运算以输出16个1×1卷积结果pm0_0~pm7_0、pm0_1~pm7_1。因此,第一卷积运算模块3a及第二卷积运算模块3b总共输出32个卷积结果。接者,交错加总单元5将第一卷积运算模块3a输出的各卷积结果pm0_0~pm7_0与第二卷积运算模块3b对应输出顺序的各卷积结果pm0_0~pm7_0分别相加而输出8个部分加法运算的数据,交错加总单元5将第一卷积运算模块3a输出的各卷积结果pm0_1~pm7_1与第二卷积运算模块3b对应输出顺序的各卷积结果pm0_1~pm7_1分别相加而输出8个部分加法运算的数据。在这种运算情况下,第一及第二卷积运算模块3a、3b进行卷积神经网络的某一层卷积层的运算,交错加总单元5进行卷积神经网络的后续层的部分运算。
也就是说,交错加总单元5将第一及第二卷积运算模块3a、3b中对应的1×1卷积结果相加后作为输出,例如:第一及第二卷积运算模块3a、3b的卷积结果pm0_0相加后作为交错加总单元5的一个输出,其余输出以此类推。因此,交错加总单元5可对第一卷积运算模块3a及第二卷积运算模块3b中对应顺序的各卷积结果交错加总以分别输出一加总结果,使第一卷积运算模块3a及第二卷积运算模块3b加总结果的总宽度与第一输入通道CH_1及第二输入通道CH_2的新输入数据的总宽度相等。虽然1×1卷积结果的产生数量是3×3卷积结果的产生数量的二倍,但仍不需要额外增加输出线路或带宽。
图5为依据本发明一个实施例卷积单元的功能方块图,如图5所示,卷积单元30包括9个处理单位PE0~PE8(process engine)、一个地址译码器301及一个加法器302。卷积单元30可以作为前述图3、图4A以及图4C中各卷积单元30a~37a、30b~37b。
在3×3卷积运算模式下,待卷积运算的输入数据经由线路data[47:0]输入至处理单位PE0~PE2,处理单位PE0~PE2会将当前频率的输入数据在之后的频率输入至处理单位PE3~PE5以供次一轮的卷积运算,处理单位PE3~PE5会将当前频率的输入数据在之后的频率输入至处理单位PE6~PE8以供次一轮的卷积运算。3×3滤波器系数通过线路fc_bus[47:0]输入至处理单位PE0~PE8。在步幅为1时,3个新数据会输入至处理单位,已经输入的6个旧数据会移到其他处理单位。执行卷积运算时,处理单位PE0~PE8通过地址译码器301将选定地址的滤波器系数与输入至处理单位PE0~PE8的输入数据做乘法运算。当卷积单元30进行3×3卷积运算时,加法器302会将各乘法运算的结果相加以得到卷积运算的结果作为输出psum[35:0]。
当卷积单元30进行1×1卷积运算时,待卷积运算的输入数据系经由线路data[47:0]输入至处理单位PE0~PE2,三个1×1滤波器系数通过线路fc_bus[47:0]输入至处理单位PE0~PE2。在步幅为1时,3个新数据会输入至处理单位。执行卷积运算时,处理单位PE0~PE2通过地址译码器301将选定地址的滤波器系数与输入至处理单位PE0~PE2的输入数据做乘法运算。当卷积单元30进行1×1卷积运算时,加法器302会直接将处理单位PE0~PE2的卷积运算的结果作为输出pm_0[31:0]、pm_1[31:0]、pm_2[31:0]。另外,由于处理单位PE3~PE8没有实际参与卷积运算,这些处理单位PE3~PE8可以先关闭以节省电力。另外,虽然卷积单元30有三个1×1卷积运算的输出,但可以只有其中两个输出连接到交错加总单元;或是三个1×1卷积运算的输出都连接到交错加总单元,通过控制处理单位PE0~PE2的关闭与否来决定输出到交错加总单元的1×1卷积运算结果的数量。
承上所述,本发明的卷积运算装置及方法也可采用两个以上的卷积运算模块同时进行1×1卷积运算,以提升卷积运算的效能。图6为依据本发明另一个实施例于1×1卷积运算模式下的运作示意图。请参阅图6所示,在1×1卷积运算模式下,分别对第一输入通道CH_1至第N输入信道CH_N输入8个数据,各卷积单元30a~37a…30N~37N可通过选择不同的滤波器系数分别进行1×1卷积运算,交错加总单元5再依据各输入通道CH_1~CH_N与滤波器系数的对应关系将各卷积单元30a~37a…30N~37N输出的卷积结果重新相加,而得到N*8个加总结果。此外,卷积运算模块的数量则受限于内存带宽与单一卷积单元中处理单位PE的数量。例如,若卷积运算模块采用3×3卷积单元进行卷积运算,则最多可采用9个卷积运算模块同时进行1×1卷积运算。
交错加总单元5的输出也可分为N个信道,各信道输出的数据数量和输入信道的输入数据数量相同。
在第1个输出通道中,第1个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pm0_0的相加之和,第2个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pm1_0的相加之和,以此类推,第N个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pmN_0的相加之和。
在第2个输出通道中,第1个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pm0_1的相加之和,第2个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pm1_1的相加之和,以此类推,第N个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pmN_1的相加之和。
以此类推,在第N个输出通道中,第1个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pm0_N的相加之和,第2个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pm1_N的相加之和,以此类推,第N个输出数据是各卷积运算模块3a~3N的卷积单元30a~30N的1×1卷积结果pmN_N的相加之和。
另外,卷积运算的处理方法可应用或实施在前述实施例的卷积运算装置,相关的变化及实施方式故此不再赘述。卷积运算的处理方法也可应用或实施在其他计算装置。举例来说,数据串流的卷积运算的处理方法可用在能够执行指令的处理器,配置以执行卷积运算的处理方法的指令是储存在内存,处理器耦接内存并执行这些指令以进行卷积运算的处理方法。例如,处理器包括高速缓存、数学运算单元以及内部缓存器,高速缓存储存数据串流,数学运算单元能够进行卷积运算,内部缓存器可留存本轮卷积运算的部分数据于卷积运算模块内以供再一轮卷积运算。
综上所述,本发明的卷积运算装置及方法中,同时对输入于各卷积运算模块的数据进行卷积运算,并通过交错加总单元将各卷积运算模块的输入信道中对应顺序的各卷积结果交错加总以分别输出加总结果,使各输入信道的新数据总宽度与各加总结果的总宽度相等,故可提升卷积单元的使用率,并达成输入带宽与输出带宽相等的功效。
上述实施例并非用以限定本发明,任何熟悉此技术人员,在未脱离本发明之精神与范畴内,而对其进行的等效修改或变更,均应包含于后附的权利要求范围中。

Claims (13)

1.一种卷积运算装置,包括:
多个卷积运算模块,各具有多个卷积单元,各卷积单元配置来输出多个卷积结果;以及
交错加总单元,耦接该多个卷积运算模块的该多个卷积单元,配置来对该多个卷积运算模块中对应顺序的各卷积结果交错加总以分别输出加总结果;
其中,该多个卷积单元以及该交错加总单元能够选择性地操作在低规模卷积模式以及高规模卷积模式;
在该低规模卷积模式中,各卷积单元配置来输出该多个卷积结果,该交错加总单元配置来对该多个卷积运算模块中对应顺序的各卷积结果交错加总以分别输出该加总结果;
在该高规模卷积模式中,各卷积单元配置来输出多个高规模卷积结果,该交错加总单元将该多个高规模卷积结果作为输出。
2.根据权利要求1所述的卷积运算装置,其中各卷积单元包括:
多个低规模卷积输出,进行低规模卷积运算以输出该多个卷积结果;以及
一个高规模卷积输出,进行高规模卷积运算以输出该高规模卷积结果。
3.根据权利要求2所述的卷积运算装置,其中该交错加总单元选择性地将该加总结果以及该多个高规模卷积结果其中一个输出。
4.根据权利要求1所述的卷积运算装置,其中各卷积运算模块耦接输入信道,该输入信道的总宽度与该加总结果的总宽度相等。
5.根据权利要求1所述的卷积运算装置,其中该多个卷积运算模块的数量小于或等于各该卷积运算模块中该多个卷积单元的数量。
6.根据权利要求1所述的卷积运算装置,其中各卷积单元的该多个卷积结果是相同规模的卷积运算的结果。
7.根据权利要求6所述的卷积运算装置,其中该多个卷积运算模块的数量等于各该卷积单元的该多个卷积结果的数量。
8.一种卷积运算的处理方法,包括:
决定在低规模卷积模式以及高规模卷积模式其中一个之中进行卷积运算;对于多个输入信道的各输入信道的数据进行卷积运算以输出多个卷积结果;当在该高规模卷积模式中,进行高规模卷积运算并将多个高规模卷积结果作为输出;当在该低规模卷积模式中,进行低规模卷积运算以输出该多个卷积结果;以及
将该多个输入信道中对应顺序的各卷积结果交错加总以分别输出加总结果。
9.根据权利要求8所述的处理方法,进一步包括:
选择性地将该加总结果以及该多个高规模卷积结果其中一个输出。
10.根据权利要求8所述的处理方法,其中该多个输入通道的总宽度与该加总结果的总宽度相等。
11.根据权利要求8所述的处理方法,其中该多个卷积结果是相同规模的卷积运算的结果。
12.根据权利要求8所述的处理方法,其中交错加总的步骤是进行卷积神经网络的后续层的部分运算。
13.根据权利要求12所述的处理方法,其中该部分运算是跨越该多个输入通道的运算。
CN201611002219.0A 2016-11-14 2016-11-14 卷积运算装置及方法 Expired - Fee Related CN108073549B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611002219.0A CN108073549B (zh) 2016-11-14 2016-11-14 卷积运算装置及方法
US15/459,737 US10169295B2 (en) 2016-11-14 2017-03-15 Convolution operation device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611002219.0A CN108073549B (zh) 2016-11-14 2016-11-14 卷积运算装置及方法

Publications (2)

Publication Number Publication Date
CN108073549A CN108073549A (zh) 2018-05-25
CN108073549B true CN108073549B (zh) 2021-04-27

Family

ID=62106297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611002219.0A Expired - Fee Related CN108073549B (zh) 2016-11-14 2016-11-14 卷积运算装置及方法

Country Status (2)

Country Link
US (1) US10169295B2 (zh)
CN (1) CN108073549B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9858636B1 (en) 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
US10176551B2 (en) * 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data
JP2019040403A (ja) * 2017-08-25 2019-03-14 ルネサスエレクトロニクス株式会社 半導体装置および画像認識システム
US11514136B2 (en) * 2019-05-17 2022-11-29 Aspiring Sky Co. Limited Circuit for neural network convolutional calculation of variable feature and kernel sizes
KR102455310B1 (ko) * 2020-05-08 2022-10-18 한국전자통신연구원 콘볼루션 신경망 양자화 추론 장치 및 방법
CN113344179B (zh) * 2021-05-31 2022-06-14 哈尔滨理工大学 基于fpga的二值化卷积神经网络算法的ip核

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7013319B1 (en) * 2001-11-20 2006-03-14 Analog Devices, Inc. Digital filter methods and structures for increased processing rates
CN102831633A (zh) * 2012-08-02 2012-12-19 中国科学院光电技术研究所 一种基于线性纹理滤波的卷积滤波优化方法
CN103985083A (zh) * 2014-05-21 2014-08-13 西安交通大学 一种可重构的一维卷积处理器
CN105654135A (zh) * 2015-12-30 2016-06-08 成都数联铭品科技有限公司 一种基于递归神经网络的图像文字序列识别***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1182575B (it) * 1985-09-27 1987-10-05 Elsag Sistema per realizzare elaborazioni convolutive veloci su informazioni rappresentative di immagini
DE69935356T2 (de) * 1998-04-27 2007-11-08 Matsushita Electric Industrial Co., Ltd., Kadoma Verfahren zur Faltungsentschachtelung
US8442927B2 (en) * 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
US9582726B2 (en) * 2015-06-24 2017-02-28 Qualcomm Incorporated Systems and methods for image processing in a deep convolution network
US9858636B1 (en) * 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
TWI634490B (zh) * 2016-11-14 2018-09-01 美商耐能股份有限公司 卷積運算裝置及卷積運算方法
CN108073977A (zh) * 2016-11-14 2018-05-25 耐能股份有限公司 卷积运算装置及卷积运算方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7013319B1 (en) * 2001-11-20 2006-03-14 Analog Devices, Inc. Digital filter methods and structures for increased processing rates
CN102831633A (zh) * 2012-08-02 2012-12-19 中国科学院光电技术研究所 一种基于线性纹理滤波的卷积滤波优化方法
CN103985083A (zh) * 2014-05-21 2014-08-13 西安交通大学 一种可重构的一维卷积处理器
CN105654135A (zh) * 2015-12-30 2016-06-08 成都数联铭品科技有限公司 一种基于递归神经网络的图像文字序列识别***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Two-Level Interleaving Architecture for Serial Convolvers;Francescomaria Marino;《IEEE TRANSACTIONS ON SIGNAL PROCESSING》;19990531;第47卷(第5期);期刊第1481-1486页 *
移动图像通信***卷积码的位交织方案性能研究;袁东风等;《山东大学学报( 自然科学版)》;20000930;第35卷(第3期);期刊第297-304页 *

Also Published As

Publication number Publication date
US20180137084A1 (en) 2018-05-17
CN108073549A (zh) 2018-05-25
US10169295B2 (en) 2019-01-01

Similar Documents

Publication Publication Date Title
CN108073549B (zh) 卷积运算装置及方法
US10936937B2 (en) Convolution operation device and convolution operation method
US10943166B2 (en) Pooling operation device and method for convolutional neural network
US20180137414A1 (en) Convolution operation device and convolution operation method
US8130229B2 (en) Methods and apparatus for image processing at pixel rate
CA3034597A1 (en) A homomorphic processing unit (hpu) for accelerating secure computations under homomorphic encryption
US20060002471A1 (en) Motion estimation unit
EP2455854A1 (en) System, device, and method for on-the-fly permutations of vector memories for executing intra-vector operations
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
JPH04128982A (ja) プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法
US20200218537A1 (en) Digital signal processing array using integrated processing elements
CN112991142A (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US5949920A (en) Reconfigurable convolver circuit
JP2002304624A (ja) フィルタ処理装置及び撮像装置
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
EP0701218A1 (en) Parallel processor
JP4712503B2 (ja) リコンフィグ可能な画像処理用アドレス生成回路及びそれを有するリコンフィグlsi
TW201818264A (zh) 緩衝裝置及卷積運算裝置與方法
US20120093410A1 (en) Image processing apparatus and method for operating image processing apparatus
TWI616840B (zh) 卷積運算裝置及方法
EP0610688B1 (en) Image processor
JP2013239120A (ja) 画像処理装置
JP3553376B2 (ja) 並列画像処理プロセッサ
JP3860548B2 (ja) 画像処理装置及び画像処理方法
US6741294B2 (en) Digital signal processor and digital signal processing method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210427

Termination date: 20211114