向量矩阵乘法加速方法、单元、加速单元和片上系统技术方案

技术编号:33245683 阅读:13 留言:0更新日期:2022-04-27 17:56
本申请实施例提供了一种向量矩阵乘法加速方法、单元、加速单元和片上系统,该方法应用于第五代精简指令集处理器,该方法包括:根据第一矩阵的元素的数据长度以及向量寄存器的长度,获得向量寄存器存储第一矩阵的元素的数量N,N为正整数;根据数量N,对第一矩阵进行重排处理,获得可并行处理N个数据的第三矩阵;采用单指令多数据流指令对向量与第三矩阵进行乘法计算。本方案可提高向量矩阵乘法的运算速度。度。度。

【技术实现步骤摘要】
向量矩阵乘法加速方法、单元、加速单元和片上系统


[0001]本申请实施例涉及芯片
,尤其涉及一种向量矩阵乘法加速方法、单元、加速单元和片上系统。

技术介绍

[0002]随着芯片技术的不断发展,越来越多的领域需要用到向量与矩阵的乘法运算,它起到了至关重要的作用。例如,在一种典型的应用场景中,常用的神经网络中往往存在一个全连接层,全连接层的核心操作就是向量矩阵乘法运算。因此,向量矩阵乘法运算速度的快慢往往决定了一些芯片处理数据的速度。基于第五代精简指令集(RISC

V)的处理器随着芯片技术的发展应运而生,其越来越多的应用在边缘计算设备、IOT设备上,因此对向量矩阵乘法的运算速度有了更高的要求,因此如何提升向量矩阵乘法运算的速度就成了一个需要解决的技术问题。

技术实现思路

[0003]有鉴于此,本申请实施例提供一种向量矩阵乘法加速方法、单元、加速单元和片上系统,以至少部分解决上述问题。
[0004]根据本申请实施例的第一方面,提供了一种向量矩阵乘法加速方法,应用于第五代精简指令集处理器,该方法包括:
[0005]根据第一矩阵的元素的数据长度以及向量寄存器的长度,获得向量寄存器存储第一矩阵的元素的数量N,N为正整数;
[0006]根据数量N,对第一矩阵进行重排处理,获得可并行处理N个数据的第三矩阵;
[0007]采用单指令多数据流指令对向量与第三矩阵进行乘法计算。
[0008]根据本申请实施例的第二方面,提供了一种向量矩阵乘法加速单元,应用于第五代精简指令集处理器,该向量矩阵乘法加速单元包括:
[0009]第一获取单元,用于根据第一矩阵的元素的数据长度以及向量寄存器的长度,获得向量寄存器存储第一矩阵的元素的数量N,N为正整数;
[0010]第二获取单元,用于根据数量N,对第一矩阵进行重排处理,获得可并行处理N个数据的第三矩阵;
[0011]乘法计算单元,用于采用单指令多数据流指令对向量与第三矩阵进行乘法计算。
[0012]根据本申请实施例的第三方面,提供了一种加速单元,包括:
[0013]根据上述第二方面中任一个所述的向量矩阵乘法加速单元;
[0014]控制器,用于控制所述向量矩阵乘法加速单元工作。
[0015]根据本申请实施例的第四方面,提供了一种电子设备,包括:
[0016]根据上述第三方面所述的加速单元;
[0017]调度单元,用于调度所述加速单元执行向量矩阵乘法加速任务。
[0018]根据本申请实施例的第五方面,提供了一种片上系统,包括根据上述第三方面所
述的加速单元。
[0019]根据本申请实施例提供的向量矩阵乘法加速方法,由于能根据第一矩阵的元素的数据长度以及向量寄存器的长度,获得向量寄存器存储第一矩阵的元素的数量N,N为正整数,然后可以根据数量N,对第一矩阵进行重排处理,获得可并行处理N个数据的第三矩阵,最后能采用单指令多数据流指令对向量与第三矩阵进行乘法计算,从而本申请实施例中通过对第一矩阵进行重排处理获得更便于处理的第三矩阵,优化了第一矩阵在内存中的存储结构,利用单指令多数据流指令对向量与第三矩阵进行乘法运算以得到向量与第一矩阵乘法运算的结果,能够有效地提高向量矩阵乘法运算的速度。
附图说明
[0020]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0021]图1是本申请实施例的一个示例性的第一矩阵在内存中排列的示意图;
[0022]图2是本申请实施例的一个示例性的向量矩阵乘法加速方法的流程图;
[0023]图3是本申请实施例的一个示例性的第二矩阵在内存中排列的示意图;
[0024]图4是本申请实施例的一个示例性的第三矩阵在内存中排列的示意图;
[0025]图5是本申请实施例的一个示例性的向量矩阵乘法加速单元的结构框图;
[0026]图6是本申请实施例所应用的一个示例性的电子设备的结构框图;
[0027]图7是本申请实施例的一个示例性的电子设备内部的调度单元和加速单元的结构图。
具体实施方式
[0028]以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
[0029]向量矩阵乘法加速方法
[0030]为了体现本申请实施例中的向量矩阵乘法加速方法的优势,在对本申请实施例中的向量矩阵乘法加速方法进行说明之前,先介绍一下相关技术中的向量矩阵乘法计算方案。
[0031]相关技术中,向量矩阵乘法应用于很多领域,例如神经网络中的全连接层,其核心操作就是向量矩阵乘法运算。向量矩阵乘法运算中,向量在芯片的内存中存储为一个1行H列的行矩阵,而与其进行乘法运算的矩阵(称之为第一矩阵)在芯片的内存中则存储为一个W行H列的矩阵。两者相乘的结果为一个W行1列的列矩阵。第一矩阵在内存中按行进行存储,参照图1,一个示例性的第一矩阵B1共W=8行、H=12列,元素为b0~b95共96个元素,按行存储于内存中。向量和第一矩阵内的元素数据类型可以是浮点数或定点数,本申请中以浮点数为例。
[0032]参照图1所示,一种常规的向量矩阵乘法运算方式是:向量A与第一矩阵B1相乘,以H=12、W=8为例,在进行向量矩阵乘法运算时,在第一个时钟周期从内存中按行读取第一矩阵第1行第1列的元素b0,与向量的第一列的元素a0相乘,之后将相乘的结果存入寄存器中,之后按行读取第一矩阵b的第一行的第2到8个元素,在计算结果矩阵(即向量A与第一矩阵B1乘法运算的结果,共W个元素)时,需要将向量A的每一个元素分别与第一矩阵B1的第一列的各个元素对应相乘后再相加(例如,参照图1,即,向量a的a0与第一矩阵的b0相乘、a1与b8相乘、a2与b16相乘、a3与b24相乘、a4与b32相乘、a5与b40相乘、a6与b48相乘、a7与b56相乘、a8与b64相乘、a9与b72相乘、a10与b80相乘、a11与b88相乘,之后将12个结果相加,加和即为结果矩阵的第一个元素的值)。
[0033]而由于在计算结果矩阵中的每一个元素的值时,从内存中按行读取第一矩阵B1的元素与向量A中的对应元素相乘时都需要等待多个时钟周期,因此读取和运算速度较慢。例如,参照图1,在a0和b0相乘后,由于按行从内存中读取第一矩阵B1的元素之后需要等待读取b1~b7的时间,直到读取到b8,将a1与b8相乘,之后将a1与b8相乘的结果与a0和b0相乘的结果相加,同理,a2与b16相乘也需要等待读取b9~b15的时间,a3与本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种向量矩阵乘法加速方法,应用于第五代精简指令集处理器,所述方法包括:根据第一矩阵的元素的数据长度以及向量寄存器的长度,获得所述向量寄存器存储所述第一矩阵的元素的数量N,N为正整数;根据所述数量N,对所述第一矩阵进行重排处理,获得可并行处理N个数据的第三矩阵;采用单指令多数据流指令对向量与所述第三矩阵进行乘法计算。2.根据权利要求1所述的方法,其中,所述根据第一矩阵的元素的数据长度以及向量寄存器的长度,获得所述向量寄存器存储所述第一矩阵的元素的数量N,包括:将所述向量寄存器的长度除以所述第一矩阵的元素的数据长度,获得所述向量寄存器存储所述第一矩阵的元素的数量N。3.根据权利要求2所述的方法,其中,所述根据所述数量N,对所述第一矩阵进行重排处理,获得可并行处理N个数据的第三矩阵,包括:对所述第一矩阵进行重排处理,获得可在所述向量寄存器中连续读取的第二矩阵;根据所述数量N,对所述第二矩阵进行重排,获得可并行处理N个数据的第三矩阵。4.根据权利要求3所述的方法,其中,所述对所述第一矩阵进行重排处理,获得可在所述向量寄存器中连续读取的第二矩阵,包括:对所述第一矩阵进行转置,获得所述第二矩阵,所述第一矩阵为H行,W列矩阵,所述第二矩阵为W行,H列矩阵,W和H为正整数。5.根据权利要求4所述的方法,其中,所述根据所述数量N,对所述第二矩阵进行重排,获得可并行处理N个数据的第三矩阵,包括:从所述第二矩阵的第一行至第W行,依次取N行,且每N行按照从第一列至第H列的数据进行排列,所获得的N*H个数据构成第三矩阵的一行数据;直至获得第一行至第W/N行数据,构成第三矩阵,所述第三矩阵为W/N行,N*H列...

【专利技术属性】
技术研发人员:赵翔宇
申请(专利权)人:平头哥杭州半导体有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1