一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

矩阵乘法计算单元、加速单元、计算系统和相关方法与流程

2022-11-09 21:33:17 来源:中国专利 TAG:


1.本技术实施例涉及芯片技术领域,尤其涉及一种矩阵乘法计算单元、加速单元、计算系统和相关方法。


背景技术:

2.神经网络的稀疏化操作能够有效减小数据的带宽与存储,并提高计算的能效。相对于神经网络的非结构化稀疏,神经网络的结构化稀疏可以更有效地降低电路设计中的取数逻辑和计算逻辑的复杂度,但是并非所有的神经网络都适用于稀疏化操作,因为稀疏化操作会降低神经网络的精度。
3.目前,专用的深度学习处理器基于所运行的神经网络进行开发和设计。
4.然而,某些应用场景下,专用的深度学习处理器需要运行不同的神经网络,一部分神经网络具有稀疏化操作的需求,而另外的神经网络没有稀疏化操作的需求,但是深度学习处理器中的计算单元针对特定申请网络进行开发和设计,使得计算单元无法同时满足结构化稀疏神经网络和稠密神经网络的运算逻辑,导致计算单元的适用性较差。


技术实现要素:

5.有鉴于此,本技术实施例提供一种矩阵乘法计算单元、加速单元、计算系统和相关方法,以至少解决或缓解上述问题。
6.根据本技术实施例的第一方面,提供了矩阵乘法计算单元,包括:控制子单元和运算子单元;所述控制子单元,用于根据接收到的控制信号运行在稠密运算模式或稀疏运算模式,其中,在所述稠密运算模式下,选择第一矩阵中的数据作为第一输入数据发送给所述运算子单元,并选择非稀疏化的第二矩阵中的数据作为第二输入数据发送给所述运算子单元,在所述稀疏运算模式下,选择第三矩阵中的数据作为第一输入数据发送给所述运算子单元,并选择稀疏化后的第四矩阵中的数据作为第二输入数据发送给所述运算子单元;所述运算子单元,用于根据接收到的第一输入数据和第二输入数据进行矩阵乘法运算,并输出运算结果。
7.根据本技术实施例的第二方面,提供了一种加速单元,包括:上述第一方面中任一所述的矩阵乘法计算单元;主控制单元,用于控制所述计算单元工作。
8.根据本技术实施例的第三方面,提供了一种神经网络加速器,包括:上述第二方面中任一所述的加速单元;调度单元,用于调度所述加速单元获取第一矩阵和非稀疏化的第二矩阵,并调度所述加速单元执行所述第一矩阵和所述第二矩阵的矩阵乘法运算,或者,调度所述加速单元获取第三矩阵和稀疏化后的第四矩阵,并调度所述加速单元执行所述第三矩阵和所述第四矩阵的矩阵乘法运算。
9.根据本技术实施例的第四方面,提供了一种计算系统,包括:处理器、直接内存访问控制器、通信接口、静态随机存取存储器、通信总线和上述第三方面中的神经网络加速器;处理器、直接内存访问控制器、通信接口和静态随机存取存储器通过通信总线完成相互
间的通信;处理器、直接内存访问控制器、通信接口和神经网络加速器通过通信总线完成相互间的通信;静态随机存取存储器与神经网络加速器通过私有接口进行数据交互;处理器,用于计算系统的控制,及神经网络加速器的初始化。
10.根据本技术实施例的第五方面,提供了一种矩阵乘法计算方法,包括:接收控制信号;根据所述控制信号确定稠密运算模式或稀疏运算模式,在所述稠密运算模式下,选择第一矩阵中的数据作为第一输入数据,并选择非稀疏化的第二矩阵中的数据作为第二输入数据,在所述稀疏运算模式下,选择第三矩阵中的数据作为第一输入数据,并选择稀疏化后的第四矩阵中的数据作为第二输入数据;根据所述第一输入数据和所述第二输入数据进行矩阵乘法运算,并输出运算结果。
11.根据本技术实施例提供的矩阵方法方案,控制子单元可以根据控制信号切换至稠密运算模式或稀疏运算模式,在稠密运算模式下可以从第一矩阵中选择数据作为第一输入数据发送给运算子单元,并选择非稀疏化的第二矩阵中的数据作为第二输入数据发送给运算子单元,运算子单元根据接收到的第一输入数据和第二输入数据计算第一矩阵与第二矩阵的乘积,在稀疏运算模式下可以从第三矩阵中选择数据作为第一输入数据发送给运算子单元,并选择稀疏化后的第四矩阵中的数据作为第二输入数据发送给运算子单元,运算子单元根据接收到的第一输入数据和第二输入数据计算第三矩阵和第四矩阵的乘积。可见,控制子单元可以在稠密运算模式和稀疏运算模式下采用不同的取数逻辑从矩阵中取数,并将取出的数据发送给运算子单元进行乘累加运算,实现稀疏化矩阵的矩阵乘法运算和非稀疏化矩阵的矩阵乘法运算,从而可以同时满足结构化稀疏神经网络和稠密神经网络的运算逻辑,使得该矩阵乘法计算单元具有较强的适用性。
附图说明
12.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
13.图1是本技术一个实施例的计算系统的示意图;
14.图2是本技术一个实施例的神经网络加速器的示意图;
15.图3是本技术一个实施例的加速单元的示意图;
16.图4是本技术一个实施例的矩阵乘法计算单元的内部结构图;
17.图5是本技术另一个实施例的矩阵乘法计算单元的内部结构图;
18.图6是本技术又一个实施例的矩阵乘法计算单元的内部结构图;
19.图7是本技术一个实施例的第一矩阵和第二矩阵的示意图;
20.图8是本技术一个实施例的矩阵稀疏化的示意图;
21.图9是本技术另一个实施例的矩阵稀疏化的示意图;
22.图10是本技术一个实施例的矩阵乘法计算方法的流程图。
具体实施方式
23.以下基于实施例对本技术进行描述,但是本技术并不仅仅限于这些实施例。在下
文对本技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本技术。为了避免混淆本技术的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
24.首先,对本技术实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
25.矩阵乘法:设矩阵a为m
×
p的矩阵,矩阵b为p
×
n的矩阵,那么称m
×
n的矩阵c为矩阵a与矩阵b的乘积,记作c=ab,其中矩阵c中的第i行第j列元素可以表示为
26.矩阵的稀疏化:按照预设的规则对矩阵进行稀疏,将原矩阵中部分元素稀疏为零,进而将为零的元素剔除掉,由非零元素构成新的矩阵。通过稀疏化后的矩阵进行矩阵乘法运算,由于减少了矩阵中元素的数量,从而能够减小数据的带宽和存储,并提高计算的效能。
27.非结构化稀疏:矩阵的稀疏化分为非结构化稀疏和结构化稀疏,非结构化稀疏是指将矩阵中随机位置的元素稀疏为零,然后将为零的元素剔除掉,由非零元素构成稀疏化后矩阵。
28.结构化稀疏:结构化稀疏是指按照相应的稀疏规则,将矩阵中连续的若干行作为一个组,将每个组中的部分元素稀疏为零,进而将为零的元素剔除掉,由非零元素构成稀疏化后矩阵。比如,矩阵的每一行为一个数据,将连续的4行或8行作为一个数据组进行稀疏化处理,一个数据组进行稀疏化处理后变成包括1行或2行元素的矩阵,而矩阵的列数保持不变。
29.矩阵的元素:矩阵的元素是指构成矩阵的基本单元,矩阵所包括元素的数量等于矩阵的行数与列数的乘积。比如,矩阵a的行数为m,且矩阵a的列数为p阵,则矩阵a包括m
×
p个元素。
30.运算周期:运算周期是指矩阵乘法运算中从矩阵中取数的周期,即每隔多长时间从矩阵中取一次数,运算周期可以是一个时钟周期,也可以是连续的多个时钟周期。
31.乘法器:乘法器(multiplier)是一种完成两个互不相关的模拟信号相乘作用的电子器件,它可以将两个二进制数相乘。乘数与被乘数是乘法器的输入,乘积数是乘法器的输出,乘积数等于乘数与被乘数的乘积。例如,乘法器的输入为x1和x2,则乘法器的输出为x1×
x2。
32.累加器:累加器(accumulator)是产生两个或多个数的和的部件。多个数被依次输入累加器时,累加器可以计算被输入的各数的和,合数是累加器的输出,合数等于所有输入累加器的数的和。例如,累加器的输入为x1、x2和x3,则累加器的输出为x1 x2 x3。
33.加速单元:针对传统处理单元在一些专门用途的领域(例如,处理图像、语音识别、矩阵乘法计算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,在本技术实施例中主要是为了加速矩阵乘法运算速度而设计的专门处理单元。
34.计算系统
35.图1示出一种计算系统100的示意性框图。如图1所示,计算系统100可以基于各种型号的处理单元构建。计算系统100可以是诸如物联网处理单元、片上系统、桌面处理系统
或数据中心处理系统等。
36.如图1所示,计算系统100包括处理器10、直接内存访问控制器20、通信接口30、静态随机存取存储器40、通信总线50和神经网络加速器60。处理器10、直接内存访问控制器20、通信接口30和静态随机存取存储器40可通过通信总线50完成相互间通信,处理器10、直接内存访问控制器20、通信接口30和神经网络加速器60也可以通过通信总线50完成相互间通信。静态随机存取存储器40与神经网络加速器60通过私有接口进行数据交互。
37.神经网络(neuralnetwork)加速器60用于对神经网络中的算法进行加速,主要是对神经网络中的矩阵乘法进行加速,提高整个系统的计算性能与能效。
38.处理器10用于计算系统100的控制,以及初始化配置神经网络加速器60。
39.直接内存访问控制器(direct memory access controller,dmac)20可以将双倍速率同步动态随机存储器(double data rate,ddr)或闪存(flash eeprom memory)中的数据搬运到静态随机存取存储器(static random access memory,sram)40中。
40.神经网络加速器60可以通过私有接口从静态随机存取存储器40中读取数据,并对读取到的数据进行运算,比如,从静态随机存取存储器40中读取非稀疏化的矩阵进行矩阵乘法运算,或者,从静态随机存取存储器40中稀疏化后的矩阵进行矩阵乘法运算等。
41.通信接口30可连接存储设备、显示设备、音频设备、键盘、鼠标等输入/输出设备。存储设备可以是通过通信接口30与通信总线50耦合的硬盘、光盘以及闪存等用于信息存储的设备。显示设备可以经相应的显卡与通信总线50耦合,用于根据通信总线50提供的显示信号进行显示。
42.神经网络加速器60在本技术实施例中主要是为了加速矩阵乘法运算速度而设计的专门处理单元,可以体现为专门为矩阵乘法运算设计的处理单元、图形处理单元(gpu)、专用集成电路(asic)和现场可编程门阵列(fpga)等。处理器10是对神经网络加速器60进行调度、向神经网络加速器60分配要执行的待执行指令序列的单元,它可以采用处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等多种形式。
43.神经网络加速器60可基于计算机操作指令实现矩阵乘法运算。risc-v是一种基于精简指令集(risc)原则的开源指令集架构,其可以应用于单片机和fpga芯片等各个方面,具体可应用在物联网安全、工业控制、手机、个人计算机等领域,且由于其在设计时考虑了小型、快速、低功耗的现实情况,使得其尤其适用于仓库规模云计算机、高端移动电话和微小嵌入式系统等现代计算设备。随着人工智能物联网aiot的兴起,risc-v指令集架构也受到越来越多的关注和支持,并有望成为下一代广泛应用的cpu架构。
44.本技术实施例中的计算机操作指令可以是基于risc-v指令集架构的计算机操作指令,对应地,神经网络加速器60可以基于risc-v的指令集设计。具体地,本技术实施例提供的计算系统可以为采用risc-v指令集设计的芯片,该芯片可基于所配置的指令执行可执行代码,进而实现矩阵乘法运算。
45.传统的计算系统的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速器,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。本技术提出的神经网络加速器是专用于加速神经网络中矩阵乘法运算速度的处理单元,它是通过控制通路与数据通路相结合的结构,用
于实现稀疏化矩阵和非稀疏化矩阵的矩阵乘法运算。
46.采用本技术实施例提出的专用于加速矩阵乘法运算的神经网络加速器,在计算两个矩阵的乘积时,需要对两个矩阵中相对应位置的元素相乘后求和,控制通路可以工作于稠密运算模式和稀疏运算模式,在稠密运算模式和稀疏运算模式下控制通路按照不同的逻辑从两个矩阵中选择数据发送给数据通路,数据通路通过乘法器和累加器计算两个矩阵中数据的乘积并进行累加,获得两个矩阵的相乘结果。由于控制通路可以按照不同的取数逻辑从矩阵中取数,所以既可以从稀疏化矩阵中取数以实现稀疏化矩阵的矩阵乘法运算,也可以从非稀疏化矩阵中取数以实现非稀疏化矩阵的矩阵乘法运算,从而可以应用于结构化稀疏神经网络和稠密神经网络,因此具有较强的适用性。
47.神经网络加速器
48.图2是本技术一个实施例的神经网络加速器的内部结构图。如图2所示,神经网络加速器60包括加速单元61和调度单元62。
49.加速单元61要接受调度单元62的调度。加速单元61用于完成数据的读取及计算,并将计算结果写回,以及产生加速单元61计算完成的信号或发生异常的信号给调度单元62。调度单元62可以触发直接内存访问控制器20将计算的数据和计算相关的命令搬运到静态随机存取存储器40中,从静态随机存取存储器40中读取计算相关的命令,并对读取到的命令解析后下发到加速单元61,并在调度完成后产生神经网络加速器60的计算中断或异常。
50.加速单元61可以从静态随机存取存储器40中读取进行矩阵乘法的两个矩阵,将两个矩阵暂存在内部的缓存器中,进而可以对所读取的两个矩阵进行矩阵乘法运算。加速单元61从静态随机存取存储器40中读取的矩阵可以均为非稀疏化的矩阵,也可以是一个非稀疏化矩阵和一个稀疏化后的矩阵,还可以是两个稀疏化后的矩阵,进而加速单元61可以应用于结构化稀疏神经网络和稠密神经网络,因此具有较强的适用性。
51.加速单元
52.图3是本技术一个实施例的加速单元的内部结构图。如图3所示,加速单元61包括矩阵乘法计算单元611和主控制单元612。主控制单元612可以根据配置寄存器组信息,产生并下发加速单元61内的控制命令流,并将计算完成及异常处理状态上报。矩阵乘法计算单元611在主控制单元612的调度下,可以处理乘累加、累加、乘法等。
53.如图3所示,加速单元61还包括地址产生和总线访问单元613、配置寄存器组614、数据缓存单元615和矢量处理单元616。地址产生和总线访问单元613在获得命令流信息后,可以产生对应的读写地址,进而转换为总线的读写操作,并将读取到的数据写回到数据缓存单元615。配置寄存器组614存储加速单元61的配置信息。矢量处理单元616用于矩阵运算结果的后处理。
54.数据缓存单元615包括第一缓存器、第二缓存器和第三缓存器。地址产生和总线访问单元613根据主控制单元612产生的控制命令流,从总线读取待进行矩阵乘法运算的两个矩阵,并将两个矩阵分别存储到第一缓存器和第二缓存器中。矩阵乘法计算单元611从第一缓存器和第二缓存器中读取矩阵数据进行矩阵乘法运算,并将运算结果缓存到第三缓存器中。地址产生和总线访问单元613可以从第三缓存器中读取矩阵乘法计算单元611的运算结果,并通过总线将运算结果输出。
55.在计算第一矩阵与非稀疏化的第二矩阵的矩阵乘法时,第一缓存器用于缓存第一矩阵,第二缓存器用于缓存第二矩阵,第三缓存器用于缓存第一矩阵与第二矩阵的矩阵乘法运算结果。在计算第三矩阵与稀疏化后的第四矩阵的矩阵乘法时,第一缓存器用于缓存第三矩阵,第二缓存器用于缓存第四矩阵,第三缓存器用于缓存第三矩阵与第四矩阵的矩阵乘法运算结果。
56.矩阵乘法计算单元611根据主控制单元612产生的控制命令流,可以确定待进行矩阵乘法运算的矩阵是否为稀疏化矩阵,以及稀疏化矩阵的稀疏化比例,进而矩阵乘法计算单元611可以根据控制指令流采取相应的取数逻辑从第一缓存器和第二缓存器中取数,以实现稀疏化矩阵的矩阵乘法运算和非稀疏化矩阵的矩阵乘法运算。
57.第一缓存器、第二缓存器和第三缓存器均可以是先进先出(first input first output,fifo)缓存器。由于在进行矩阵乘法运算时,需要根据矩阵中元素所在的行列位置,对两个矩阵中相对应位置的元素相乘,采用fifo缓存器存储矩阵中的元素,使得矩阵乘法计算单元611可以按序选择矩阵中的元素进行乘累加运算,保证运算结果的准确性。另外,矩阵乘法计算单元611将运算结果存储到fifo缓存器中,地址产生和总线访问单元613从fifo缓存器中读取运算结果,保证了地址产生和总线访问单元613读取到的运算结果的准确性。
58.本技术实施例主要着眼于矩阵乘法计算单元611进行矩阵乘法运算的过程,在后文中会对矩阵乘法的运算过程进行详细描述。
59.矩阵乘法计算单元
60.图4是本技术一个实施例的矩阵乘法计算单元的内部结构图。如图4所示,矩阵乘法计算单元611包括控制子单元410和运算子单元420。控制子单元410可以根据接收到的控制信号在稠密运算模式或稀疏运算模式下运行。在稠密运算模式下,控制子单元410可以选择第一矩阵中的数据作为第一输入数据发送给运算子单元420,并选择非稀疏化的第二矩阵中的数据作为第二输入数据发送给运算子单元420。在稀疏运算模式下,控制子单元410可以选择第三矩阵中的数据作为第一输入数据发送给运算子单元420,并选择稀疏化后的第四矩阵中的数据作为第二输入数据发送给运算子单元420。运算子单元420可以根据接收到的第一输入数据和第二输入数据进行矩阵乘法运算,并输出运算结果。
61.运算子单元420用于计算第一矩阵与第二矩阵的乘积,或者第三矩阵与第四矩阵的乘积。控制子单元410可以从第一矩阵或第三矩阵中选择数据作为第一输入数据,第一矩阵和第三矩阵可以是矩阵或向量。在神经网络中的矩阵乘法,通常采用数据矩阵乘以权重矩阵,数据矩阵实时输入神经网络,所以数据矩阵通常是非稀疏化矩阵,即第一矩阵和第三矩阵为非稀疏化矩阵。
62.在本技术实施例中,控制子单元410可以根据控制信号切换至稠密运算模式或稀疏运算模式,在稠密运算模式下可以从第一矩阵中选择数据作为第一输入数据发送给运算子单元420,并选择非稀疏化的第二矩阵中的数据作为第二输入数据发送给运算子单元420,运算子单元420根据接收到的第一输入数据和第二输入数据计算第一矩阵与第二矩阵的乘积,在稀疏运算模式下可以从第三矩阵中选择数据作为第一输入数据发送给运算子单元420,并选择稀疏化后的第四矩阵中的数据作为第二输入数据发送给运算子单元420,运算子单元420根据接收到的第一输入数据和第二输入数据计算第三矩阵和第四矩阵的乘
积。可见,控制子单元410可以在稠密运算模式和稀疏运算模式下采用不同的取数逻辑从矩阵中取数,并将去除的数据发送给运算子单元420进行乘累加运算,实现稀疏化矩阵的矩阵乘法运算和非稀疏化矩阵的矩阵乘法运算,从而可以同时满足结构化稀疏神经网络和稠密神经网络的运算逻辑,使得该矩阵乘法计算单元611具有较强的适用性。
63.图5是本技术另一个实施例的矩阵乘法计算单元的内部结构图。如图5所示,运算子单元420包括m个乘法器421和m个累加器422,m为大于或等于2的正整数,每个乘法器421与一个累加器422相连接,不同的乘法器421与不同的累加器422相连接。乘法器421可以接收控制子单元410发送的第一输入数据和第二输入数据,并计算接收到的第一输入数据和第二输入数据的乘积,将计算出的乘积发送给相连接的累加器422。累加器422可以对接收到的乘积进行累加求和。
64.乘法器421的数量决定了进行矩阵乘法运算过程中每个时钟周期所能够处理矩阵元素的数量,比如m可取值16、32或64等。当乘法器421的数量为32时,控制子单元410在每个时钟周期可以向运算子单元420发送32个第一输入数据和32个第二输入数据,运算子单元420在每个时钟可以计算32对矩阵元素的乘积。应理解,一个第一输入数据是指第一矩阵或第三矩阵中的一个元素,第二输入数据是指第二矩阵或第四矩阵中的一个元素。
65.在本技术实施例中,由于矩阵乘法需要计算两个矩阵中相对应位置元素的乘积,并计算对应同一行或同一列元素的多个乘积的合,运算子单元420包括多个乘法器421和多个累加器422,乘法器421用于计算第一输入数据和第二输入数据的乘积,累加器422用于对相连接的乘法器421计算出的各乘积进行累加求和,所以乘法器421和累加器422提供了进行矩阵乘法运算所需的基础运算形式,在控制子单元410按照相应取数逻辑从两个矩阵中取数作为第一输入数据和第二输入数据后,可以实现非稀疏化矩阵的矩阵乘法运算和稀疏化矩阵的矩阵乘法运算,保证矩阵乘法计算单元611适用性的同时,保证矩阵乘法运算结果的准确性。
66.图6是本技术又一个实施例的矩阵乘法计算单元的示意图。如图6所示,控制子单元410包括一个第一选择器411、m个第二选择器412和一个第三选择器413。第一选择器411分别与各第二选择器412相连接,每个第二选择器412与一个乘法器421相连接,且不同的第二选择器412与不同的乘法器421相连接,第三选择器413分别与各乘法器421相连接。
67.第一选择器411可以在每个运算周期,依次从第一矩阵中选择一个元素分别发送给每个第二选择器412。第二选择器412可以在稠密运算模式下将第一选择器411发送的元素作为第一输入数据发送给相连接的乘法器421。第三选择器413可以在每个运算周期,从第二矩阵中选择与第一选择器411所选择运算相对应的m个元素作为第二输入数据,并将所选择出的m个第二输入数据依次分发给m个乘法器421。
68.在稠密运算模式下,矩阵乘法计算单元611用于计算第一矩阵与第二矩阵的乘积,运算子单元420需要计算第一矩阵中每一行元素与第二矩阵中每一列元素的乘积,所以需要计算第一矩阵中每个元素与第二矩阵中相应行中的各元素的乘积,比如,第一矩阵中每行的第一个元素需要分别与第二矩阵中第一行中的各元素相乘,为此第一选择器411可以在每个运算周期从第一矩阵中选择一个元素分别发送给各第二选择器412,同时第三选择器413从第二矩阵中行数等于第一选择器411所选择元素的列数的行选择q个元素,并将所选择的q个元素分别发送给q个乘法器421,其中q为小于或等于m的正整数。
69.需要说明的是,在稠密运算模式下,第二选择器412可以根据接收到的控制信号,选择来自第一选择器411的元素作为第一输入数据。
70.为了便于说明,下面以第一矩阵为行向量为例进行说明。实际应用场景中,第一矩阵可以是行向量,也可以是包括多行的矩阵,由于对每一行的处理都是相同的,所以本技术仅以第一距离为行向量为例进行说明。
71.图7是本技术一个实施例的第一矩阵和第二矩1阵的示意图。如图7所示,第一矩阵a1包括32个元素,第二矩阵b1为32
×
64的矩阵。在m等于32时,第一选择器411选择第一矩阵a1中的a1为第一输入数据分别发送给各第二选择器412,第二选择器412将a1发送给相连接的乘法器421,第三选择器413选择第二矩阵b1中的b
1,1
至b
1,32
作为第二输入数据,并将b
1,i
发送给第i个乘法器421,比如,将b
1,1
发送给第1个乘法器421,将b
1,2
发送给第2个乘法器421,将b
1,32
发送给第32个乘法器421,第i个乘法器421计算a1×b1,i
后,将a1×b1,i
发送给相连接的第i个累加器422。第一选择器411选择第一矩阵a1中的a2为第一输入数据分别发送给各第二选择器412,第二选择器412将a2发送给相连接的乘法器421,第三选择器413选择第二矩阵b1中的b
2,1
至b
2,32
作为第二输入数据,并将b
2,i
发送给第i个乘法器421,比如,将b
2,1
发送给第1个乘法器421,将b
2,2
发送给第2个乘法器421,将b
2,32
发送给第32个乘法器421,第i个乘法器421计算a2×b2,i
后,将a2×b2,i
发送给相连接的第i个累加器422,第i个累加器422计算a1×b1,i
a2×b2,i
。按照上述运算方法,分别对第一矩阵a1中的每个元素执行上述计算过程,直至第i个累加器422计算出第二矩阵a2中每一列对应的累加结果。
72.应理解,当第二矩阵的列数大于m时,第三选择器413首先从第二矩阵的前m列选择元素作为第二输入数据输入给乘法器421进行运算,具体地,第一行前m个元素处理完后,处理第二行前m个元素,并累加到第一行的结果,依次类推,直至第二矩阵的前m列的各行累加完毕,并将累加结果输出后,对各累加器进行清零。然后,第三选择器413从第二矩阵的第m 1列至第2m列选择元素作为第二输入数据输入给乘法器421进行运算,具体运算过程与前m列的处理方式相同。将第二矩阵按列划分为多个子矩阵,按照上述方式依次对各子矩阵进行处理,直至将第二矩阵中的全部元素处理完毕。如果第二矩阵中未处理元素的列数小于m,则依次选择每一行的全部未处理元素作为第二输入数据输入给乘法器421进行运算。
73.以图7中所示的第二矩阵b1为例,依次选择每一行前32个元素作为第二输入数据进行处理,并对前32列中已处理完成行的结果进行累加,直至将第32行的前32个元素作为第二输入数据进行处理,并将第32行前32个元素的处理结果与前32列前31行的结果进行累加,将累加结果输出后,对32个累加器422进行清零。然后,选择每一行后32个元素作为第二输入数据进行处理,并对后32列中已处理完成行的结果进行累加,直至将第32行的后32个元素作为第二输入数据进行处理,并将第32行后32个元素的处理结果与后32列前31行的结果进行累加,将累加结果输出后,对32个累加器422进行清零。
74.在本技术实施例中,稠密运算模式下,第一选择器411从第一矩阵中选择一个元素发送给第二选择器412,第二选择器412选择来自第一选择器411的元素作为第一输入数据,同时第三选择数据413从第二矩阵中选择与第一选择器411所选择元素相对应的q个元素分发给q个乘法器,每个乘法器411负责计算第二矩阵中相应列中各元素与第一矩阵中各元素的乘积,实现了非稀疏化矩阵的矩阵乘法运算。
75.在一种可能的实现方式中,如图6所示,控制子单元410还包括一个第四选择器
414、一个第五选择器415和m个第六选择器416。第四选择器414分别与各第六选择器416相连接,第五选择器415分别与各第六选择器416相连接,每个第六选择器416与一个第二选择器412相连接,且不同的第六选择器416与不同的第二选择器412相连接。
76.第三选择器413可以在每个运算周期,从第四矩阵中选择q个元素作为第二输入数据,并将所选择的q个第二输入数据依次分发给q个乘法器421。第四选择器414可以在每个运算周期,选择与第三选择器413所选择的q个元素相对应的q个索引值,并将所选择的q个索引值分发给q个第六选择器416,其中,索引值可指示第四矩阵中相应元素在稀疏化之前矩阵中的位置。第五选择器415可以从第三矩阵中选择n个元素分别发送给每个第六选择器416,n小于m的正整数。第六选择器416可以在每个运算周期,从接收到的n个元素中选择在第三矩阵中位置与接收到的索引值相匹配的元素发送给相连接的第二选择器412。第二选择器412可以在稀疏运算模式下,将相连接的第六选择器416发送的元素作为第一输入数据发送给相连接的乘法器421。
77.第四选择器414可以从第一缓存器或第二缓存器选择索引值。当第四选择器414从第一缓存器选择索引值时,由索引值构成的索引值矩阵与第三矩阵复用第一缓存器。当第四选择器414从第二缓存器选择索引值时,由索引值构成的索引值矩阵与第四矩阵复用第二缓存器。
78.在稠密运算模式下,第二选择器412可以根据接收到的控制信号,选择来自第一选择器411的元素作为第一输入数据。在稀疏运算模式下,第二选择器412可以根据接收到的控制信号,选择来自第六选择器416的元素作为第一输入数据。
79.第五选择器415每次从第三矩阵中选择n个元素分别发给每个第六选择器416,n的数值由对矩阵进行稀疏化处理时每个分组所包括行数确定。在对矩阵进行结构化稀疏时,将矩阵中相邻的n行元素作为一个分组,按照预设的稀疏化比例将分组中每列中的一个或多个元素稀疏为零,进而将为零的元素剔除后形成新的矩阵,实现矩阵的结构化稀疏。比如,在通过结构化稀疏获得第四矩阵时,将相邻的4行元素作为一个分组,则n等于4,即第五选择器415每次从第三矩阵中选择4个相邻的元素分别发送给每个第六选择器416。基于上述说明,第五选择器415每次从第三矩阵中选择n个元素分别发给每个第六选择器416,保证第五选择器415所选择出的n个元素中包括与相应乘法器421所接收到第二输入数据的位置相匹配的第一输入数据,进而保证矩阵乘法运算能够顺利进行。
80.第三选择器413在每个运算周期从第四矩阵中选择q个元素作为第二输入数据,q为小于或等于m的正整数,对于q的具体说明如下:如果第四矩阵的列数大于m,第三选择器413首先在每个运算周期从第四矩阵的前m列选择元素作为第二输入数据输入给乘法器421进行运算,具体地,第一行前m个元素处理完后,处理第二行前m个元素,并累加到第一行的结果,依次类推,直至第二矩阵的前m列的各行累加完毕,并将累加结果输出后,对各累加器进行清零。然后,第三选择器413从第四矩阵的第m 1列至第2m列选择元素作为第二输入数据输入给乘法器421进行运算,具体运算过程与前m列的处理方式相同。将第四矩阵按列划分为多个子矩阵,按照上述方式依次对各子矩阵进行处理,直至将第四矩阵中的全部元素处理完毕。应理解,如果第四矩阵中未处理元素的列数小于m,则依次选择每一行的全部未处理元素作为第二输入数据输入给乘法器421进行运算。
81.由于第四矩阵是经过稀疏化处理的矩阵,所以第四矩阵中各元素在第四矩阵中的
位置与在稀疏化之前矩阵中的位置发生了改变,为了保证第六选择器416能够选择出与第二输入数据位置相对应的第一输入数据,第四选择414选择与第三选择器413所选择的第二输入数据相对应的索引值,并将索引值发送给相对应的第六选择器416,由于索引值指示了第二输入数据在稀疏化之前矩阵中的位置,所以第六选择器416能够根据接收到的索引值从接收到的n个元素中选择与第二输入数据相匹配的元素作为第一输入数据,保证矩阵乘法运算的结果准确性。
82.图8是本技术一个实施例的矩阵稀疏化的示意图。如图8所示,对矩阵b2进行结构化稀疏,获得矩阵b2

,索引矩阵b2

记录了矩阵b2

中各元素的索引值,其中,索引值为2

b00表示相应元素位于矩阵b2的第一行,索引值为2

b01表示相应元素位于矩阵b2的第二行,索引值为2

b10表示相应元素位于矩阵b2的第三行,索引值为2

b11表示相应元素位于矩阵b2的第四行。比如,矩阵b2

中的元素b32对应的索引值为2

b10,且元素b32位于矩阵b2

的第二列,则可以确定元素b12位于矩阵b2中的第三行第二列。
83.比如,在第三选择器413选择矩阵b2

中的元素b32为第二输入数据后,第四选择器414选择元素b32的索引值2

b10发送给相应的第六选择器416,第六选择器416根据索引值2

b10从所接收到的4个元素中选择位于第三矩阵中第三列的元素作为第一输入数据。
84.在本技术实施例中,第三选择器413从稀疏化后的第四矩阵中选择第二输入数据,第四选择器414选择指示第二输入数据在稀疏化之前矩阵中位置的索引值发送给各第六选择器416,第六选择器416根据索引值选择第三矩阵中与第二输入数据的位置相匹配的元素作为第一输入数据,进而乘法器421计算位置相匹配的第一输入数据与第二输入数据的乘积,在保证矩阵乘法运算结果准确性的前提下,实现了对稀疏化矩阵的矩阵乘法运算,使得矩阵乘法计算单元611可以用于非稀疏化矩阵的矩阵乘法运算和稀疏化矩阵的矩阵乘法运算,保证了矩阵乘法计算单元611具有较强的适用性。
85.在一种可能的实现方式中,在第四矩阵的稀疏化比例为p:n时,第五选择器415可以每p个运算周期依次从第三矩阵中选择n个元素分别发送给每个第六选择器416,其中,p为小于n的正整数。
86.在通过结构化稀疏获得第四矩阵时,可以采用不同的稀疏化比例,比如以相邻4行为一个分组进行结构化稀疏时,稀疏化比例可以是1:4或2:4等。采用不同的稀疏化比例进行结构化稀疏,会使第四矩阵所包括的行数不同,在稀疏化比例为1:4时第四矩阵的行数为1,在稀疏化比例为2:4时第四矩阵的行数为2。图8示出了在稀疏化比例为1:4时矩阵稀疏化的过程,图9示出了在稀疏化比例为2:4时矩阵稀疏化的过程。
87.如图9所示,通过对矩阵b3进行结构化稀疏,获得矩阵b3

,索引矩阵b3

记录了矩阵b3

中各元素的索引值,其中,索引值为2

b00表示相应元素位于矩阵b3的第一行,索引值为2

b01表示相应元素位于矩阵b3的第二行,索引值为2

b10表示相应元素位于矩阵b3的第三行,索引值为2

b11表示相应元素位于矩阵b3的第四行。
88.在p等于1(即第四矩阵的稀疏化比例为p:n)时,第四矩阵的行数为1,第三选择器413每个运算周期从第四矩阵中选择q个元素作为第二输入数据,第五选择器415在一个运算周期便可以选出位置与第三选择器413所选出的各第二输入数据相匹配的元素作为第一输入数据,所以第五选择器415可以每个运算周期从第三矩阵中选择n个元素分别发送给每个第六选择器416。在p大于1时,第四矩阵的行数大于1,第三选择器413每个运算周期从第
四矩阵中选择位于同一行的q个元素作为第二输入数据,但第五选择器415在一个运算周期选出的各第一输入数据中的部分第一输入数据与第三选择器413选出的第二输入数据位置不匹配,需要等待下个运算周期第三选择器413再次选出的第二输入数据。因此,对应于第三选择器413在每个运算周期从第四矩阵中选择q个元素,第五选择器415每隔p个运算周期从第三矩阵中选择n个元素分别发送给每个第六选择器416。
89.在本技术实施例中,根据第四矩阵的稀疏化比例,第五选择器可以按不同的取数周期从第三矩阵中选择第一输入数据,从而可以对采用不同稀疏化比例进行结构化稀疏后的矩阵进行矩阵乘法运算,进一步提高了矩阵乘法计算单元611的适用性。
90.在一种可能的实现方式中,如图3和图4所示,控制子单元410可以从第一缓存器233中读取第一输入数据发送给运算子单元420,并从第二缓存器234中读取第二输入数据发送给运算子单元420。运算子单元420可以将运算结果存储到第三缓存器235中。另外,控制子单元410还可以从第一缓存器233中读取索引值。
91.在本技术实施例中,从不同的缓存器中读取第一输入数据和第二输入数据,保证了数据读取的效率,同时保证了数据读取的逻辑正确性,从而保证矩阵乘法运算的效率和准确性。
92.矩阵乘法计算方法
93.图10是本技术一个实施例的矩阵乘法计算方法的流程图,该矩阵乘法计算方法可应用于上述任一实施例中的矩阵乘法计算单元611。如图10所示,该矩阵乘法计算方法包括如下步骤:
94.步骤1001、接收控制信号;
95.步骤1002、根据控制信号确定稠密运算模式或稀疏运算模式,在稠密运算模式下,选择第一矩阵中的数据作为第一输入数据,并选择非稀疏化的第二矩阵中的数据作为第二输入数据,在稀疏运算模式下,选择第三矩阵中的数据作为第一输入数据,并选择稀疏化后的第四矩阵中的数据作为第二输入数据;
96.步骤1003、根据第一输入数据和第二输入数据进行矩阵乘法运算,并输出运算结果。
97.由于上述矩阵乘法计算方法的细节在上述本技术实施例的矩阵乘法计算单元部分,已经结合结构图进行了详细说明书,具体过程可参见前述矩阵乘法计算单元实施例中的描述,在此不再赘述。
98.本技术实施例的商业价值
99.本技术实施例在解决矩阵乘法计算单元的适用性较差的技术问题时,采用由多个选择器构成的控制子单元,控制子单元可以根据控制信号在稠密运算模式或稀疏运算模式下运行,在稠密运算模式或稀疏运算模式下采用不同的取数逻辑,在稠密运算模式下实现非稀疏化矩阵的矩阵乘法运算,在稀疏运算模式下实现稀疏化矩阵的矩阵乘法运算,从而可以同时满足结构化稀疏神经网络和稠密神经网络的运算逻辑,使得该矩阵乘法计算单元具有较强的适用性。
100.应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的
比较简单,相关之处参见其他实施例的部分说明即可。
101.应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
102.应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
103.还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献