CN108073550A - 缓冲装置及卷积运算装置与方法 - Google Patents

缓冲装置及卷积运算装置与方法 Download PDF

Info

Publication number
CN108073550A
CN108073550A CN201611002220.3A CN201611002220A CN108073550A CN 108073550 A CN108073550 A CN 108073550A CN 201611002220 A CN201611002220 A CN 201611002220A CN 108073550 A CN108073550 A CN 108073550A
Authority
CN
China
Prior art keywords
data
convolution algorithm
input
unit
remap
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.)
Pending
Application number
CN201611002220.3A
Other languages
English (en)
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.)
Energy Tolerance Ltd By Share Ltd
Original Assignee
Energy Tolerance Ltd By Share Ltd
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 Energy Tolerance Ltd By Share Ltd filed Critical Energy Tolerance Ltd By Share Ltd
Priority to CN201611002220.3A priority Critical patent/CN108073550A/zh
Priority to US15/459,675 priority patent/US10162799B2/en
Publication of CN108073550A publication Critical patent/CN108073550A/zh
Pending legal-status Critical Current

Links

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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/10Aspects relating to interfaces of memory device to external buses
    • G11C2207/104Embedded memory devices, e.g. memories with a processing device on the same die or ASIC memory designs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Complex Calculations (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种缓冲装置包括输入线路、输入缓冲单元以及重新映射单元。输入线路耦接存储器,配置为在当前时钟脉冲下让数据从存储器输入;输入缓冲单元耦接输入线路,配置为在当前时钟脉冲下将部分输入的缓冲以在后续时钟脉冲将其输出;重新映射单元耦接输入线路以及输入缓冲单元,配置为在当前时钟脉冲下依据输入线路上的数据以及输入缓冲单元的输出而产生多个重新映射数据,重新映射数据是供卷积运算的输入。

Description

缓冲装置及卷积运算装置与方法
技术领域
本发明涉及一种缓冲装置及运算装置,特别涉及一种用于卷积运算的缓冲装置以及卷积运算装置。
背景技术
卷积(convolution)是通过两个函数生成第三个函数的一种数学运算子,卷积广泛应用在科学、工程和数学上,例如图像处理以及电子工程与信号处理等等。
卷积神经网络(Convolutional Neural Network,CNN)也是一种卷积运算的应用,其包括一个或多个卷积层(convolutional layer)以及关联权重和池化层(poolinglayer)。卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有不错的表现。
卷积神经网络也应用在深度学习(deep learning),与其它深度学习架构相比,卷积神经网络在图像和语音识别方面能够产生优选的结果。此外,使用卷积神经网络的模型也可以使用反向传播算法进行训练。相比较其它深度学习架构以及前馈神经网络,卷积神经网络所需估计的参数较少,因此其成为目前深度学习架构的重要发展趋势。
然而,卷积运算是很耗费效能的运算,在卷积神经网络的应用中,卷积运算将占据大部分处理器的效能。因此,如何提供一种缓冲装置及卷积运算装置,能提高卷积运算效能,实为当前重要的课题之一。另外,因特网的多媒体应用例如串流媒体也越来越广泛,因此,如何提供一种缓冲装置及卷积运算装置,也能处理数据串流,实为当前重要的课题之一。
发明内容
有鉴于此,本发明的目的为提供一种能处理数据串流的缓冲装置及卷积运算装置。
本发明的目的为提供一种能提高卷积运算效能的缓冲装置及卷积运算装置。
一种缓冲装置与存储器耦接,缓冲装置包括输入线路、输入缓冲单元以及重新映射单元。输入线路耦接存储器,配置为在当前时钟脉冲下让数据从存储器输入;输入缓冲单元耦接输入线路,配置为在当前时钟脉冲下将部分输入的缓冲以在后续时钟脉冲将其输出;重新映射单元耦接输入线路以及输入缓冲单元,配置为在当前时钟脉冲下依据输入线路上的数据以及输入缓冲单元的输出而产生多个重新映射数据,重新映射数据是供卷积运算的输入。
在一个实施例中,输入线路在当前时钟脉冲下从存储器输入W个数据,重新映射单元产生W组重新映射数据以分别供W个卷积运算的输入。
在一个实施例中,输入线路在当前时钟脉冲下从存储器输入W个数据,输入缓冲单元是从W个数据中将最后K个数据缓冲以在后续时钟脉冲将其输出,输入缓冲单元的输出是排列在该输入线路的前面。
在一个实施例中,各组重新映射数据包括M个重新映射数据,卷积计算是M×M卷积计算。
在一个实施例中,重新映射单元是在输入缓冲单元的输出以及输入线路之中从起始端朝末端每间隔J步幅取得M个数据作为一组重新映射数据。
在一个实施例中,卷积运算间的步幅为1,各组重新映射数据包括3个重新映射数据,卷积运算是3×3卷积运算,输入缓冲单元配置为在当前时钟脉冲下将最后2个输入数据缓冲以在后续时钟脉冲将其输出。
在一个实施例中,缓冲装置进一步包括控制单元,控制单元耦接并控制重新映射单元。
在一个实施例中,存储器所储存的数据为二维阵列数据,缓冲装置作为行(column)缓冲,输入缓冲单元作为部分列(row)缓冲。
在一个实施例中,重新映射单元能够运作在第一卷积模式以及第二卷积模式。当运作在第一卷积模式时,重新映射单元在当前时钟脉冲下依据输入线路上的数据以及输入缓冲单元的输出而产生重新映射数据,重新映射数据是供卷积运算的输入;当运作在第二卷积模式时,重新映射单元在当前时钟脉冲下将输入线路上的数据输出以供卷积运算的输入。
在一个实施例中,第一卷积模式是3×3卷积运算模式,第二卷积模式是1×1卷积运算模式。
一种卷积运算装置包括存储器、卷积运算模块以及缓冲装置。缓冲装置耦接存储器以及卷积运算模块。缓冲装置包括输入线路、输入缓冲单元以及重新映射单元。输入线路耦接存储器,配置为在当前时钟脉冲下让数据从存储器输入;输入缓冲单元耦接输入线路,配置为在当前时钟脉冲下将部分输入的数据缓冲以在后续时钟脉冲将其输出;重新映射单元耦接输入线路以及输入缓冲单元,配置为在当前时钟脉冲下依据输入线路上的数据以及输入缓冲单元的输出而产生多个重新映射数据,重新映射数据输入至卷积运算模块。
在一个实施例中,输入线路在当前时钟脉冲下从存储器输入W个数据,重新映射单元产生W组重新映射数据至卷积运算模块,卷积运算模块依据W组重新映射数据进行W个卷积运算。
在一个实施例中,输入缓冲单元从W个数据中将最后K个数据缓冲以在后续时钟脉冲将其输出,输入缓冲单元的输出排列在输入线路的前面。
在一个实施例中,各组重新映射数据包括M个重新映射数据,卷积计算是M×M卷积计算。
在一个实施例中,重新映射单元是在输入缓冲单元的输出以及输入线路之中从起始端朝末端每间隔J步幅取得M个数据作为一组重新映射数据。
在一个实施例中,卷积运算间的步幅为1,各组重新映射数据包括3个重新映射数据,卷积运算是3×3卷积运算,输入缓冲单元配置为在当前时钟脉冲下最后2个输入数据缓冲以在后续时钟脉冲将其输出。
在一个实施例中,缓冲装置进一步包括控制单元,控制单元耦接并控制重新映射单元。
在一个实施例中,存储器所储存的数据为二维阵列数据,缓冲装置作为行(column)缓冲,输入缓冲单元作为部分列(row)缓冲。
在一个实施例中,在同一时钟脉冲下输入数据的数量与卷积运算模块所进行的卷积运算的数量相等。
在一个实施例中,卷积运算模块以及缓冲装置能够运作在第一卷积模式以及第二卷积模式。当运作在第一卷积模式时,重新映射单元在当前时钟脉冲下依据输入线路上的数据以及输入缓冲单元的输出而产生多个重新映射数据,重新映射数据输入至卷积运算模块;当运作在第二卷积模式时,重新映射单元在当前时钟脉冲下将输入线路上的数据输出至卷积运算模块。
在一个实施例中,第一卷积模式是3×3卷积运算模式,第二卷积模式是1×1卷积运算模式。
一种数据串流的卷积运算方法,包括:从缓冲区取得前一轮卷积运算已经输入的数据;在存储器中从数据串流取得前一轮卷积运算还未输入的数据;将从缓冲区以及数据串流取得的数据产生多组重新映射数据;基于滤波器以及各组重新映射数据进行本轮卷积运算;以及保留本轮卷积运算的部分数据于缓冲区以供次一轮卷积运算。
在一个实施例中,W个前一轮卷积运算还未输入的数据是在存储器中从数据串流取得,产生的重新映射数据为W组以分别供W个卷积运算的输入。
在一个实施例中,W个前一轮卷积运算还未输入的数据中最后K个数据是保留于缓冲区以供次一轮卷积运算。
在一个实施例中,各组重新映射数据包括M个重新映射数据,卷积计算是M×M卷积计算。
在一个实施例中,卷积运算间的步幅为1,各组重新映射数据包括3个重新映射数据,卷积运算是3×3卷积运算,前一轮卷积运算还未输入的数据中最后2个数据是保留于缓冲区以供次一轮卷积运算。
在一个实施例中,缓冲区为处理器内部的缓存器,存储器为处理器内部的高速存储器。
综上所述,在缓冲装置及卷积运算装置中,缓冲装置的输入缓冲单元能够将部分的输入数据缓冲储存当作下一时钟脉冲的输入数据,即使卷积运算需要的输入数据数量多于从存储器能够一次读取的数量,重新映射单元仍能够从输入缓冲单元取得所缺的数据,因而能提供足够的重新映射数据以供卷积运算,因而提高整体卷积运算效能。另外,由于从存储器所输入的数据数量和卷积运算所输出的数量二者相等,使得这个架构也很适合处理数据串流。
附图说明
图1为依据本发明的实施例的卷积运算装置的区块图。
图2为图1的卷积运算装置对二维数据进行卷积运算的示意图。
图3为依据本发明的实施例的存储器、缓冲装置及卷积运算模块的区块图。
图4为图2的缓冲装置的运作示意图。
图5为依据本发明的实施例的卷积单元的区块图。
具体实施方式
以下将参照相关附图,说明依据本发明具体实施例的缓冲装置及卷积运算装置,其中相同的组件将以相同的组件符号加以说明,所附附图仅为说明用途,并非用于局限本发明。
图1为依据本发明的实施例的卷积运算装置的区块图。请参阅图1所示,卷积运算装置包括存储器1、卷积运算模块3、缓冲装置2、控制单元5以及缓冲单元4。卷积运算装置可用在卷积神经网络(Convolutional Neural Network,CNN)的应用。
存储器1储存待卷积运算的数据,数据例如是影像、视频、音频、统计、卷积神经网络其中一层的数据等等。以影像数据来说,其例如是像素数据;以视频数据来说,其例如是视频的帧的像素数据或是移动向量、或是视频中的音讯;以卷积神经网络其中一层的数据来说,其通常是一个二维阵列数据,也常常是一个影像数据。
全部或大部分的数据可先储存在其它地方,例如在另一存储器中,要进行卷积运算时再全部或部分地加载至存储器1中,然后通过缓冲装置2将数据输入至卷积运算模块3来进行卷积运算。若输入的数据是从数据串流而来,存储器1随时会从数据串流写入最新的数据以供卷积运算。
对于影像数据或视频的帧数据来说,处理的顺序是逐行(column)同时读取多列(row),因此在一个时序(clock)中,缓冲装置2是从存储器1输入同一行不同列上的数据,也就是缓冲装置2作为行(column)缓冲。
缓冲装置2耦接存储器1以及卷积运算模块3,其与存储器1之间具有有限的存储器存取宽度,卷积运算模块3实际上能进行得卷积运算也与存储器存取宽度有关。如果存储器输入有频颈,则卷积运算的效能将受到冲击而下降。
实际上,卷积运算模块3所需的输入除了数据之外还有系数,因平行处理的关系,卷积运算模块3不会只进行一个卷积运算,它会同时进行多个相邻数据的卷积运算以提高效能。由于步幅(stride)的大小不会超过移动窗(sliding window)的大小或卷积大小(convolution size),相邻的卷积运算往往会有重迭的数据。一般卷积神经网络的应用来说,常用的移动窗是1×1、3×3、5×5、7×7等等,其中又以3×3较为常用。
举例来说,卷积运算模块3具有多个卷积单元,各卷积单元基于滤波器以及多个当前数据进行卷积运算,并在卷积运算后保留部分的当前数据。缓冲装置2从存储器1取得多个新数据,并将新数据输入至卷积单元,新数据不与当前数据重复,新数据例如是前一轮卷积运算还未用到但是本轮卷积运算要用到的数据。卷积运算模块3的卷积单元基于滤波器、保留的当前数据以及新数据进行次轮卷积运算。
在一种实施方式下,卷积运算装置例如是一个处理器,存储器1例如是处理器内的高速存储器(cache memory),卷积运算模块3可包括一个或多个卷积单元阵列,卷积单元阵列具有多个卷积单元,各卷积单元可分别平行处理不同组输入数据的卷积运算,各不同组输入数据可能与前一组或次一组输入数据有部分重迭的数据。缓冲装置中包括多个功能单元,以增加平行处理卷积运算的效能。控制单元5、缓冲单元4、卷积单元阵列以及缓冲装置的单元是以数字逻辑电路构成,各单元的内部可包括多个逻辑组件来实现其功能。存储器1、卷积运算模块3、缓冲装置2、控制单元5以及缓冲单元4可以整合在同一个集成电路。
在其它实施方式下,存储器1可以是一般的随机存取存储器(DRAM),卷积运算模块3、缓冲装置2、控制单元5以及缓冲单元4可以整合在同一个集成电路。
控制单元5可包括指令译码器以及控制器,指令译码器从控制器得到指令并将指令译码,由此得到目前输入数据大小、输入数据的行数、输入数据的列数、移动窗(slidingwindow)或称为卷积大小(convolution size)的编号、以及输入数据在存储器1中的起始地址。另外,指令译码器也从控制器得到移动窗种类信息以及输出特征编号,并输出适当的空置信号到缓冲装置2,缓冲装置2根据这些信号来运作,也控制卷积单元阵列3以及缓冲单元4的运作,例如数据从存储器1输入到缓冲装置2以及卷积运算模块3的时序、卷积运算模块3的卷积运算的规模、数据从存储器1到缓冲装置2的读取地址、数据从缓冲单元4到存储器1的写入地址、卷积运算模块3及缓冲装置2所运作的卷积模式。
举例来说,缓冲装置2以及卷积运算模块3能够运作在第一卷积模式以及第二卷积模式,运作在哪一个卷积模式是由缓冲装置2中的控制单元决定,也就是缓冲装置2中的控制单元控制缓冲装置2以及卷积运算模块3运作在第一卷积模式或第二卷积模式,不同的卷积模式是以不同大小的移动窗(sliding window)或称为卷积大小(convolution size)来进行卷积运算。例如,第一卷积模式是3×3卷积运算模式,第二卷积模式是1×1卷积运算模式。
举例来说,控制单元5可接收控制信号或模式指令,并且根据这个控制信号或模式指令来决定其它模块以及单元要在哪一种模式运算。这个控制信号或模式指令可从其它控制单元或处理单元而得。
当缓冲装置2以及卷积运算模块3运作在第一卷积模式时,缓冲装置2会将前一时钟脉冲的部分输入数据留存至当前时钟脉冲,并根据前一时钟脉冲的部分输入数据以及当前时钟脉冲的输入数据产生多个重新映射数据,重新映射数据输入至卷积运算模块3。这些重新映射数据包括多组移动窗所需的数据,例如3个重新映射数据供3×3卷积运算模式。由于卷积运算模块3具备平行运算以及移位功能,在步幅为1的情况下,每个时钟脉冲下提供3个重新映射数据即可供卷积运算模块3进行一个3×3卷积运算。
当运作在第二卷积模式时,缓冲装置2将当前时钟脉冲下的输入数据输出至卷积运算模块3,此时不需要将前一时钟脉冲的部分输入数据留存至当前时钟脉冲。
缓冲单元4是将卷积计算的结果暂存,必要时会先进行池化(pooling)运算。运算结果通过缓冲装置2存至存储器1,然后通过存储器1输出至其它地方。
请参考图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所示,缓冲装置2包括输入线路21、输入缓冲单元22以及重新映射单元23。输入线路21耦接存储器1,其配置为在当前时钟脉冲下让数据从存储器1输入。输入缓冲单元22耦接输入线路21,其配置为在当前时钟脉冲下将部分的输入数据缓冲以在后续时钟脉冲将其输出。重新映射单元23耦接输入线路21以及输入缓冲单元22,其配置为在当前时钟脉冲下依据输入线路21上的数据以及输入缓冲单元22的输出而产生多个重新映射数据,重新映射数据是输入至卷积运算模块3以供卷积运算的输入。
举例来说,输入线路21在当前时钟脉冲下从存储器1输入W个数据,重新映射单元产生W组重新映射数据至卷积运算模块3,卷积运算模块依据W组重新映射数据进行W个卷积运算,各组重新映射数据可输入到卷积运算模块3的各卷积单元以分别进行卷积运算。输入缓冲单元22从W个数据中将最后K个数据缓冲以在后续时钟脉冲将其输出,输入缓冲单元22的输出排列在输入线路21的前面。各组重新映射数据包括M个重新映射数据,卷积计算是M×M卷积计算。重新映射单元23在输入缓冲单元22的输出以及输入线路21之中从起始端朝末端每间隔J步幅取得M个数据作为一组重新映射数据。在一些实施方式中,在同一时钟脉冲下输入数据的数量与卷积运算模块所进行的卷积运算的数量相等。
在本实施例中,W为8,K为2,M为3,J为1,这些数值仅为举例说明而非限制,在其它实施例中,W、K、M、J可以是其它数值。
在本实施例中,输入线路21在当前时钟脉冲下从存储器1输入8个数据,数据的单位为1个字节,输入缓冲单元22配置为在当前时钟脉冲下将最后2个输入数据缓冲以在后续时钟脉冲将其输出。例如在第1个时钟脉冲中,数据R0~R7会输入到重新映射单元23,数据R6~R7还会输入到输入缓冲单元22;在第2个时钟脉冲中,数据R8~R15会输入到重新映射单元23,数据R14~R15还会输入到输入缓冲单元22;在第i+1个时钟脉冲中,数据Ri*8~Ri*8+7会输入到重新映射单元23,数据Ri*8+6~Ri*8+7还会输入到输入缓冲单元22。
在一个时钟脉冲中,将有10个数据输入至重新映射单元23。例如在第1个时钟脉冲中,输入线路21上的数据R0~R7会输入到重新映射单元23;在第2个时钟脉冲中,输入缓冲单元22的输出数据R6~R7输入到重新映射单元23,输入线路21上的数据R8~R15会输入到重新映射单元23;在第i+1个时钟脉冲中,输入缓冲单元22的输出数据Ri*8-2~Ri*8-1输入到重新映射单元23,输入线路21上的数据Ri*8~Ri*8+7会输入到重新映射单元23。
重新映射单元23产生8组重新映射数据至卷积运算模块3,各组重新映射数据包括3个重新映射数据,每个重新映射数据为1个字节,各卷积单元30~37的卷积运算是3×3卷积运算,卷积运算间的步幅为1。重新映射数据的产生将参考图4说明。
因卷积运算是3×3卷积运算且步幅为1,重新映射单元23至少需要10个数据才能产生8组重新映射数据供8个卷积运算。如果没有输入缓冲单元22,重新映射单元23仅能从输入线路21得到8个数据,因而仅能产生6组重新映射数据供6个卷积运算,而且每次从存储器1的加载动作必须加载前一次已经加载过的2个数据,而且,在同一时钟脉冲下从存储器1输入的数据数量与卷积运算模块3所进行的卷积运算的数量不相等,这将造成整体效能下降。
反观本案通过输入缓冲单元22的设置,重新映射单元23可以在一个时钟脉冲中得到10个数据,因而能产生8组重新映射数据供8个卷积运算,使得从存储器1输入的数据数量与卷积运算模块3所进行的卷积运算的数量相等。
图4为图3的缓冲装置的运作示意图。请参阅图3与图4所示,举例来说,存储器1所储存的数据为二维阵列数据,缓冲装置2作为行(column)缓冲,输入缓冲单元22作为部分列(row)缓冲。
移动窗(sliding window)是逐行(column)从存储器1依序读取固定8列(row)的数据。在每个时钟脉冲中,存储器1的8列数据作为8个输入数据。
在时钟脉冲Clk n中,数据R0~R7会从存储器1通过输入线路21输入到重新映射单元23,数据R6~R7还会输入到输入缓冲单元22。重新映射单元23在输入线路21之中,也就是在数据R0~R7之中,从起始端(数据R0)朝末端(数据R7)每间隔1步幅取得3个数据作为一组重新映射数据,各组重新映射数据分别数据R0~R2为一组、R1~R3为一组、…R5~R7为一组。但由于输入至重新映射单元23的数据不足,重新映射单元23只能得到8个数据因而只能产生6组重新映射数据供有效的卷积运算,并将产生2组无法供有效卷积运算的数据,但这现象仅会在初始时发生。
在时钟脉冲Clk n+1中,数据R6~R7会从输入缓冲单元22输入到重新映射单元23,数据R8~R15会从存储器1通过输入线路21输入到重新映射单元23,数据R14~R15还会输入到输入缓冲单元22。重新映射单元23在输入缓冲单元22的输出以及输入线路21之中,也就是从数据R6~R15中,从起始端(R6)朝末端(R15)每间隔1步幅取得3个数据作为一组重新映射数据,各组重新映射数据分别数据R6~R8为一组、R7~R9为一组、…R13~R15为一组。输入至重新映射单元23的数据已有10个,将产生8组有效卷积运算的数据。
以此类推,在时钟脉冲Clk n+i中,数据Ri*8-2~Ri*8-1会从输入缓冲单元22输入到重新映射单元23,数据Ri*8~Ri*8+7会从存储器1通过输入线路21输入到重新映射单元23,数据Ri*8+6~Ri*8+7还会输入到输入缓冲单元22。重新映射单元23是在输入缓冲单元22的输出以及输入线路21之中,也就是从数据Ri*8-2~R i*8+7中,从起始端(Ri*8-2)朝末端(Ri*8+7)每间隔1步幅取得3个数据作为一组重新映射数据,各组重新映射数据分别数据Ri*8-2~Ri*8为一组、Ri*8-1~Ri*8+1为一组、…Ri*8+5~Ri*8+7为一组。输入至重新映射单元23的数据已有10个,将产生8组有效卷积运算的数据,在同一个时钟脉冲中,从存储器1读取8个数据将对应地产生8个卷积运算结果。
另外,请再参阅图3所示,缓冲装置2进一步包括控制单元24,控制单元24耦接并控制重新映射单元23,控制单元5控制卷积运算模块3、缓冲装置2以及缓冲单元4的运作,例如数据从存储器1输入到缓冲装置2以及卷积运算模块3的时序、卷积运算模块3的卷积运算的规模、数据从存储器1到缓冲装置2的读取地址、数据从缓冲单元4到存储器1的写入地址、卷积运算模块3及缓冲装置2所运作的卷积模式。信号conv_size、信号Stride、信号num_row、信号num_col输入至控制单元24,信号conv_size表示当前该进行的卷积大小,信号Stride表示卷积运算之间的步幅、信号num_row表示当前数据的列数、信号num_col表示当前数据的行数。控制单元24根据信号conv_size控制重新映射单元23以及卷积运算模块3的卷积运算的运作模式,并依据信号Stride控制读取位移。
举例来说,重新映射单元23以及卷积运算模块3能够运作在第一卷积模式以及第二卷积模式,运作在那一个卷积模式是由控制单元24决定,也就是控制单元24控制重新映射单元23以及卷积运算模块3运作在第一卷积模式或第二卷积模式,不同的卷积模式是以不同大小的移动窗(sliding window)或称为卷积大小(convolution size)来进行卷积运算。例如,第一卷积模式是3×3卷积运算模式,第二卷积模式是1×1卷积运算模式。
当重新映射单元23以及卷积运算模块3运作在第一卷积模式时,重新映射单元23在当前时钟脉冲下依据输入线路21上的数据以及输入缓冲单元22的输出而产生重新映射数据,重新映射数据输入至卷积运算模块3供卷积运算的输入。输入缓冲单元22会将前一时钟脉冲的部分输入数据留存至当前时钟脉冲,重新映射单元23根据输入缓冲单元22所输出的前一时钟脉冲部分输入数据以及当前时钟脉冲输入线路21上的输入数据产生多个重新映射数据,重新映射数据输入至卷积运算模块3。这些重新映射数据包括多组移动窗所需的数据,例如3个重新映射数据供3×3卷积运算模式。由于卷积运算模块3具备平行运算以及移位功能,在步幅为1的情况下,每个时钟脉冲下提供3个重新映射数据即可供卷积运算模块3进行一个3×3卷积运算。
当运作在第二卷积模式时,重新映射单元23将当前时钟脉冲下输入线路21上的输入数据输出至卷积运算模块3,此时重新映射单元23不需要从输入缓冲单元22取得留存的前一时钟脉冲的部分输入数据。
图5为依据本发明一个实施例的卷积单元的区块图。以下将以3×3卷积单元为例进行说明,请参阅图5所示,卷积单元6包括9个处理单位PE0~PE8(process engine)、地址译码器61及加法器62。待卷积运算的输入数据经由线路data[47:0]输入至处理单位PE0~PE2,处理单位PE0~PE2会将当前时钟脉冲的输入数据在下一时钟脉冲输入至处理单位PE3~PE5,处理单位PE3~PE5会将当前时钟脉冲的输入数据在下一时钟脉冲输入至处理单位PE6~PE8。滤波器系数通过线路fc_bus[47:0]输入至处理单位PE0~PE8。执行卷积运算时,处理单位PE通过地址译码器61将选定地址的滤波器系数与输入至处理单位PE0~PE8的输入数据做乘法运算。当卷积单元6进行3×3卷积运算时,加法器62会将各乘法运算的结果相加以得到卷积运算的结果作为输出psum[35:0]。当卷积单元6进行1×1卷积运算时,加法器62会直接将处理单位PE0~PE2的卷积运算的结果作为输出pm_0[31:0]、pm_1[31:0]、pm_2[31:0]。
另外,一种数据串流的卷积运算方法包括:从缓冲区取得前一轮卷积运算已经输入的数据;在存储器中从数据串流取得前一轮卷积运算还未输入的数据;将从缓冲区以及数据串流取得的数据产生多组重新映射数据;基于滤波器以及各组重新映射数据进行本轮卷积运算;以及保留本轮卷积运算的部分数据于缓冲区以供次一轮卷积运算。
在一个实施例中,W个前一轮卷积运算还未输入的数据是在存储器中从数据串流取得,产生的重新映射数据为W组以分别供W个卷积运算的输入。W个前一轮卷积运算还未输入的数据中最后K个数据是保留于缓冲区以供次一轮卷积运算。各组重新映射数据包括M个重新映射数据,卷积计算是M×M卷积计算。
在一个实施例中,卷积运算间的步幅为1,各组重新映射数据包括3个重新映射数据,卷积运算是3×3卷积运算,前一轮卷积运算还未输入的数据中最后2个数据是保留于缓冲区以供次一轮卷积运算。
在一个实施例中,缓冲区为处理器内部的缓存器,存储器为处理器内部的高速存储器。
卷积运算方法可应用或实施在前述实施例的卷积运算装置,相关的变化及实施方式故此不再赘述。卷积运算方法也可应用或实施在其它计算装置。举例来说,数据串流的卷积运算方法可用在能够执行指令的处理器,配置以执行卷积运算方法的指令是储存在存储器,处理器耦接存储器并执行这些指令以进行卷积运算方法。例如,处理器包括高速存储器、数学运算单元以及内部缓存器,高速存储器储存数据串流,数学运算单元能够进行卷积运算,内部缓存器可留存本轮卷积运算的部分数据于卷积运算模块内以供次一轮卷积运算。
综上所述,在缓冲装置及卷积运算装置中,缓冲装置的输入缓冲单元能够将部分的输入数据缓冲储存当作下一时钟脉冲的输入数据,即使卷积运算需要的输入数据数量多于从存储器能够一次读取的数量,重新映射单元仍能够从输入缓冲单元取得所缺的数据,因而能提供足够的重新映射数据以供卷积运算,因而提高整体卷积运算效能。另外,由于从存储器所输入的数据数量和卷积运算所输出的数量二者相等,使得这个架构也很适合处理数据串流。
上述实施例并非用以限定本发明,任何熟悉此技术者,在未脱离本发明的精神与范围内,而对其进行的等效修改或变更,均应包含在所附权利要求书的范围中。

Claims (17)

1.一种缓冲装置,与存储器耦接,包括:
输入线路,耦接所述存储器,配置为在当前时钟脉冲下让数据从所述存储器输入;
输入缓冲单元,耦接所述输入线路,配置为在所述当前时钟脉冲下将部分输入的数据缓冲以在后续时钟脉冲将其输出;以及
重新映射单元,耦接所述输入线路以及所述输入缓冲单元,配置为在所述当前时钟脉冲下依据所述输入线路上的数据以及所述输入缓冲单元的输出而产生多个重新映射数据,所述重新映射数据是供卷积运算的输入。
2.如权利要求1所述的缓冲装置,其中所述输入线路在所述当前时钟脉冲下从所述存储器输入W个所述数据,所述重新映射单元产生W组所述重新映射数据以分别供W个卷积运算的输入。
3.如权利要求2所述的缓冲装置,其中所述输入缓冲单元从W个所述数据中将最后K个数据缓冲以在后续时钟脉冲将其输出,所述输入缓冲单元的输出排列在所述输入线路的前面。
4.如权利要求3所述的缓冲装置,其中各组所述重新映射数据包括M个所述重新映射数据,所述卷积计算是M×M卷积计算。
5.如权利要求4所述的缓冲装置,其中所述重新映射单元在所述输入缓冲单元的输出以及所述输入线路之中从起始端朝末端每间隔J步幅取得M个数据作为一组重新映射数据。
6.如权利要求3所述的缓冲装置,其中所述卷积运算间的步幅为1,各组重新映射数据包括3个所述重新映射数据,所述卷积运算是3×3卷积运算,所述输入缓冲单元配置为在所述当前时钟脉冲下最后2个输入数据缓冲以在后续时钟脉冲将其输出。
7.如权利要求1所述的缓冲装置,进一步包括:
控制单元,耦接并控制所述重新映射单元。
8.如权利要求1所述的缓冲装置,其中所述存储器所储存的数据为二维阵列数据,所述缓冲装置作为行(column)缓冲,所述输入缓冲单元作为部分列(row)缓冲。
9.如权利要求1所述的缓冲装置,其中所述重新映射单元能够运作在第一卷积模式以及第二卷积模式,
当运作在所述第一卷积模式时,所述重新映射单元在所述当前时钟脉冲下依据所述输入线路上的数据以及所述输入缓冲单元的输出而产生所述重新映射数据,所述重新映射数据是供卷积运算的输入;
当运作在所述第二卷积模式时,所述重新映射单元在所述当前时钟脉冲下将所述输入线路上的数据输出以供卷积运算的输入。
10.如权利要求9所述的缓冲装置,其中所述第一卷积模式是3×3卷积运算模式,所述第二卷积模式是1×1卷积运算模式。
11.一种卷积运算装置,包括:
存储器;
卷积运算模块;以及
如权利要求1至10中任一项所述的缓冲装置,所述重新映射数据输入至所述卷积运算模块。
12.一种数据串流的卷积运算方法,包括:
从缓冲区取得前一轮卷积运算已经输入的数据;
在存储器中从所述数据串流取得前一轮卷积运算还未输入的数据;
将从所述缓冲区以及所述数据串流取得的数据产生多组重新映射数据;
基于滤波器以及各组重新映射数据进行本轮卷积运算;以及
保留本轮卷积运算的部分数据于所述缓冲区以供次一轮卷积运算。
13.如权利要求12所述的卷积运算方法,其中W个前一轮卷积运算还未输入的数据是在所述存储器中从所述数据串流取得,产生的所述重新映射数据为W组以分别供W个卷积运算的输入。
14.如权利要求13所述的卷积运算方法,其中W个前一轮卷积运算还未输入的数据中最后K个数据是保留于所述缓冲区以供次一轮卷积运算。
15.如权利要求12所述的卷积运算方法,其中各组所述重新映射数据包括M个所述重新映射数据,所述卷积计算是M×M卷积计算。
16.如权利要求12所述的卷积运算方法,其中所述卷积运算间的步幅为1,各组重新映射数据包括3个所述重新映射数据,所述卷积运算是3×3卷积运算,前一轮卷积运算还未输入的数据中最后2个数据是保留于所述缓冲区以供次一轮卷积运算。
17.如权利要求12所述的卷积运算方法,其中所述缓冲区为处理器内部的缓存器,所述存储器为所述处理器内部的高速存储器。
CN201611002220.3A 2016-11-14 2016-11-14 缓冲装置及卷积运算装置与方法 Pending CN108073550A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201611002220.3A CN108073550A (zh) 2016-11-14 2016-11-14 缓冲装置及卷积运算装置与方法
US15/459,675 US10162799B2 (en) 2016-11-14 2017-03-15 Buffer device and convolution operation device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611002220.3A CN108073550A (zh) 2016-11-14 2016-11-14 缓冲装置及卷积运算装置与方法

Publications (1)

Publication Number Publication Date
CN108073550A true CN108073550A (zh) 2018-05-25

Family

ID=62107802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611002220.3A Pending CN108073550A (zh) 2016-11-14 2016-11-14 缓冲装置及卷积运算装置与方法

Country Status (2)

Country Link
US (1) US10162799B2 (zh)
CN (1) CN108073550A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073550A (zh) * 2016-11-14 2018-05-25 耐能股份有限公司 缓冲装置及卷积运算装置与方法
GB2568086B (en) * 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
AU2020340937A1 (en) * 2019-09-03 2022-03-24 Dolby Laboratories Licensing Corporation Low-latency, low-frequency effects codec
CN113625094A (zh) * 2021-09-11 2021-11-09 沈阳工业大学 一种地铁站台屏蔽门故障诊断系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010004946A (ko) * 1999-06-30 2001-01-15 구자홍 고속 컨벌루션 처리 방법 및 그 장치
CN1409850A (zh) * 1999-12-10 2003-04-09 Dspc技术有限公司 可编程卷积器
CN103985083A (zh) * 2014-05-21 2014-08-13 西安交通大学 一种可重构的一维卷积处理器
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
US20160062947A1 (en) * 2014-08-29 2016-03-03 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN105678378A (zh) * 2014-12-04 2016-06-15 辉达公司 间接访问样本数据以在并行处理系统中执行多卷积操作

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4918742A (en) * 1988-04-22 1990-04-17 The Boeing Company Image processing using multi-pass convolution with small kernels
US5151953A (en) 1990-12-10 1992-09-29 Harris Corporation Single chip 2-D convolver
US20060215929A1 (en) 2005-03-23 2006-09-28 David Fresneau Methods and apparatus for image convolution
US9514563B2 (en) 2013-08-30 2016-12-06 Arm Limited Graphics processing systems
CN108073550A (zh) * 2016-11-14 2018-05-25 耐能股份有限公司 缓冲装置及卷积运算装置与方法
US10394929B2 (en) * 2016-12-20 2019-08-27 Mediatek, Inc. Adaptive execution engine for convolution computing systems
KR102592721B1 (ko) * 2017-01-11 2023-10-25 한국전자통신연구원 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010004946A (ko) * 1999-06-30 2001-01-15 구자홍 고속 컨벌루션 처리 방법 및 그 장치
CN1409850A (zh) * 1999-12-10 2003-04-09 Dspc技术有限公司 可编程卷积器
CN103985083A (zh) * 2014-05-21 2014-08-13 西安交通大学 一种可重构的一维卷积处理器
US20160062947A1 (en) * 2014-08-29 2016-03-03 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN105678378A (zh) * 2014-12-04 2016-06-15 辉达公司 间接访问样本数据以在并行处理系统中执行多卷积操作
CN105681628A (zh) * 2016-01-05 2016-06-15 西安交通大学 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XUAN YANG ET.AL: "A Systematic Approach to Blocking Convolutional Neural Networks", 《ARXIV》 *

Also Published As

Publication number Publication date
US20180136872A1 (en) 2018-05-17
US10162799B2 (en) 2018-12-25

Similar Documents

Publication Publication Date Title
US20200234124A1 (en) Winograd transform convolution operations for neural networks
CN106970896B (zh) 面向向量处理器的二维矩阵卷积的向量化实现方法
US11645529B2 (en) Sparsifying neural network models
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
TWI634490B (zh) 卷積運算裝置及卷積運算方法
JP5184824B2 (ja) 演算処理装置及び方法
CN108073550A (zh) 缓冲装置及卷积运算装置与方法
CN108073977A (zh) 卷积运算装置及卷积运算方法
KR101788829B1 (ko) 콘볼루션 신경망 컴퓨팅 장치
CN108573305B (zh) 一种数据处理方法、设备及装置
CN107533459A (zh) 使用电阻存储器阵列的数据处理
US11562229B2 (en) Convolution accelerator using in-memory computation
CN108470009A (zh) 处理电路及其神经网络运算方法
CN106203617A (zh) 一种基于卷积神经网络的加速处理单元及阵列结构
CN111582465B (zh) 基于fpga的卷积神经网络加速处理系统、方法以及终端
CN110688616B (zh) 一种基于乒乓ram的条带阵列的卷积模块及其运算方法
CN108073549A (zh) 卷积运算装置及方法
JP2020042774A (ja) 人工知能推論演算装置
CN113989169A (zh) 一种膨胀卷积加速计算方法及装置
CN107909537A (zh) 一种基于卷积神经网络的图像处理方法及移动终端
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
CN105488753A (zh) 一种对图像进行二维傅立叶变换或反变换的方法及装置
CN108416430A (zh) 卷积神经网络的池化运算装置及方法
CN112396072A (zh) 基于asic与vgg16的图像分类加速方法及装置
CN110490312B (zh) 一种池化计算方法和电路

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180525

WD01 Invention patent application deemed withdrawn after publication