缓冲装置及卷积运算装置与方法与流程

文档序号:14519042阅读:146来源:国知局
缓冲装置及卷积运算装置与方法与流程

本发明涉及一种缓冲装置及运算装置,特别涉及一种用于卷积运算的缓冲装置以及卷积运算装置。



背景技术:

卷积(convolution)是通过两个函数生成第三个函数的一种数学运算子,卷积广泛应用在科学、工程和数学上,例如图像处理以及电子工程与信号处理等等。

卷积神经网络(convolutionalneuralnetwork,cnn)也是一种卷积运算的应用,其包括一个或多个卷积层(convolutionallayer)以及关联权重和池化层(poolinglayer)。卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有不错的表现。

卷积神经网络也应用在深度学习(deeplearning),与其它深度学习架构相比,卷积神经网络在图像和语音识别方面能够产生优选的结果。此外,使用卷积神经网络的模型也可以使用反向传播算法进行训练。相比较其它深度学习架构以及前馈神经网络,卷积神经网络所需估计的参数较少,因此其成为目前深度学习架构的重要发展趋势。

然而,卷积运算是很耗费效能的运算,在卷积神经网络的应用中,卷积运算将占据大部分处理器的效能。因此,如何提供一种缓冲装置及卷积运算装置,能提高卷积运算效能,实为当前重要的课题之一。另外,因特网的多媒体应用例如串流媒体也越来越广泛,因此,如何提供一种缓冲装置及卷积运算装置,也能处理数据串流,实为当前重要的课题之一。



技术实现要素:

有鉴于此,本发明的目的为提供一种能处理数据串流的缓冲装置及卷积运算装置。

本发明的目的为提供一种能提高卷积运算效能的缓冲装置及卷积运算装置。

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

在一个实施例中,输入线路在当前时钟脉冲下从存储器输入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。卷积运算装置可用在卷积神经网络(convolutionalneuralnetwork,cnn)的应用。

存储器1储存待卷积运算的数据,数据例如是影像、视频、音频、统计、卷积神经网络其中一层的数据等等。以影像数据来说,其例如是像素数据;以视频数据来说,其例如是视频的帧的像素数据或是移动向量、或是视频中的音讯;以卷积神经网络其中一层的数据来说,其通常是一个二维阵列数据,也常常是一个影像数据。

全部或大部分的数据可先储存在其它地方,例如在另一存储器中,要进行卷积运算时再全部或部分地加载至存储器1中,然后通过缓冲装置2将数据输入至卷积运算模块3来进行卷积运算。若输入的数据是从数据串流而来,存储器1随时会从数据串流写入最新的数据以供卷积运算。

对于影像数据或视频的帧数据来说,处理的顺序是逐行(column)同时读取多列(row),因此在一个时序(clock)中,缓冲装置2是从存储器1输入同一行不同列上的数据,也就是缓冲装置2作为行(column)缓冲。

缓冲装置2耦接存储器1以及卷积运算模块3,其与存储器1之间具有有限的存储器存取宽度,卷积运算模块3实际上能进行得卷积运算也与存储器存取宽度有关。如果存储器输入有频颈,则卷积运算的效能将受到冲击而下降。

实际上,卷积运算模块3所需的输入除了数据之外还有系数,因平行处理的关系,卷积运算模块3不会只进行一个卷积运算,它会同时进行多个相邻数据的卷积运算以提高效能。由于步幅(stride)的大小不会超过移动窗(slidingwindow)的大小或卷积大小(convolutionsize),相邻的卷积运算往往会有重迭的数据。一般卷积神经网络的应用来说,常用的移动窗是1×1、3×3、5×5、7×7等等,其中又以3×3较为常用。

举例来说,卷积运算模块3具有多个卷积单元,各卷积单元基于滤波器以及多个当前数据进行卷积运算,并在卷积运算后保留部分的当前数据。缓冲装置2从存储器1取得多个新数据,并将新数据输入至卷积单元,新数据不与当前数据重复,新数据例如是前一轮卷积运算还未用到但是本轮卷积运算要用到的数据。卷积运算模块3的卷积单元基于滤波器、保留的当前数据以及新数据进行次轮卷积运算。

在一种实施方式下,卷积运算装置例如是一个处理器,存储器1例如是处理器内的高速存储器(cachememory),卷积运算模块3可包括一个或多个卷积单元阵列,卷积单元阵列具有多个卷积单元,各卷积单元可分别平行处理不同组输入数据的卷积运算,各不同组输入数据可能与前一组或次一组输入数据有部分重迭的数据。缓冲装置中包括多个功能单元,以增加平行处理卷积运算的效能。控制单元5、缓冲单元4、卷积单元阵列以及缓冲装置的单元是以数字逻辑电路构成,各单元的内部可包括多个逻辑组件来实现其功能。存储器1、卷积运算模块3、缓冲装置2、控制单元5以及缓冲单元4可以整合在同一个集成电路。

在其它实施方式下,存储器1可以是一般的随机存取存储器(dram),卷积运算模块3、缓冲装置2、控制单元5以及缓冲单元4可以整合在同一个集成电路。

控制单元5可包括指令译码器以及控制器,指令译码器从控制器得到指令并将指令译码,由此得到目前输入数据大小、输入数据的行数、输入数据的列数、移动窗(slidingwindow)或称为卷积大小(convolutionsize)的编号、以及输入数据在存储器1中的起始地址。另外,指令译码器也从控制器得到移动窗种类信息以及输出特征编号,并输出适当的空置信号到缓冲装置2,缓冲装置2根据这些信号来运作,也控制卷积单元阵列3以及缓冲单元4的运作,例如数据从存储器1输入到缓冲装置2以及卷积运算模块3的时序、卷积运算模块3的卷积运算的规模、数据从存储器1到缓冲装置2的读取地址、数据从缓冲单元4到存储器1的写入地址、卷积运算模块3及缓冲装置2所运作的卷积模式。

举例来说,缓冲装置2以及卷积运算模块3能够运作在第一卷积模式以及第二卷积模式,运作在哪一个卷积模式是由缓冲装置2中的控制单元决定,也就是缓冲装置2中的控制单元控制缓冲装置2以及卷积运算模块3运作在第一卷积模式或第二卷积模式,不同的卷积模式是以不同大小的移动窗(slidingwindow)或称为卷积大小(convolutionsize)来进行卷积运算。例如,第一卷积模式是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,滤波器移动的步幅小于滤波器的最短宽度。滤波器的规模与移动窗(slidingwindow)或卷积运算窗相当。移动窗可在5×4的影像上间隔移动,每移动一次便对窗内对应的数据p0~p8进行一次3×3卷积运算,卷积运算后的结果可称为特征值。移动窗s每次移动的间隔称为步幅(stride),由于步幅(stride)的大小并不会超过移动窗s(slidingwindow)的大小或是卷积运算的尺寸(convolutionsize),因此以本实施例的移动窗步幅来说,将会小于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)缓冲。

移动窗(slidingwindow)是逐行(column)从存储器1依序读取固定8列(row)的数据。在每个时钟脉冲中,存储器1的8列数据作为8个输入数据。

在时钟脉冲clkn中,数据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组无法供有效卷积运算的数据,但这现象仅会在初始时发生。

在时钟脉冲clkn+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组有效卷积运算的数据。

以此类推,在时钟脉冲clkn+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~ri*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运作在第一卷积模式或第二卷积模式,不同的卷积模式是以不同大小的移动窗(slidingwindow)或称为卷积大小(convolutionsize)来进行卷积运算。例如,第一卷积模式是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(processengine)、地址译码器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个数据是保留于缓冲区以供次一轮卷积运算。

在一个实施例中,缓冲区为处理器内部的缓存器,存储器为处理器内部的高速存储器。

卷积运算方法可应用或实施在前述实施例的卷积运算装置,相关的变化及实施方式故此不再赘述。卷积运算方法也可应用或实施在其它计算装置。举例来说,数据串流的卷积运算方法可用在能够执行指令的处理器,配置以执行卷积运算方法的指令是储存在存储器,处理器耦接存储器并执行这些指令以进行卷积运算方法。例如,处理器包括高速存储器、数学运算单元以及内部缓存器,高速存储器储存数据串流,数学运算单元能够进行卷积运算,内部缓存器可留存本轮卷积运算的部分数据于卷积运算模块内以供次一轮卷积运算。

综上所述,在缓冲装置及卷积运算装置中,缓冲装置的输入缓冲单元能够将部分的输入数据缓冲储存当作下一时钟脉冲的输入数据,即使卷积运算需要的输入数据数量多于从存储器能够一次读取的数量,重新映射单元仍能够从输入缓冲单元取得所缺的数据,因而能提供足够的重新映射数据以供卷积运算,因而提高整体卷积运算效能。另外,由于从存储器所输入的数据数量和卷积运算所输出的数量二者相等,使得这个架构也很适合处理数据串流。

上述实施例并非用以限定本发明,任何熟悉此技术者,在未脱离本发明的精神与范围内,而对其进行的等效修改或变更,均应包含在所附权利要求书的范围中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1