基于RISC-V的拓展VM指令集编码方法技术

技术编号:35686189 阅读:12 留言:0更新日期:2022-11-23 14:31
本公开揭示了一种选用RISC

【技术实现步骤摘要】
基于RISC

V的拓展VM指令集编码方法


[0001]本公开属于处理器和计算
,特别涉及一种基于RISC

V的端侧DNN场景下的拓展VM指令集编码方法。

技术介绍

[0002]目前,一个通用处理器可以执行任何一个用高级语言编写的程序。在一些系统中,通用处理器的应用性能、功耗和生产成本都可以满足应用场景需求。
[0003]然而,在许多端侧嵌入式系统中,软件开发者不得不发挥创造力以达到高性能系统的需求。虽然大部分计算可以使用通用指令集完成,然而使用通用指令集去实现针对场景的特定运算意味着,要使用长指令流来完成任务。这样无疑增加了指令缓存的开销,以及处理器中各级别流水线部件运行的开销。为此,在以处理器为核心的系统中,架构设计者通常需要根据应用需求去拓展针对应用场景的特殊指令,以提高单核处理器的计算性能以及处理器运行能效。
[0004]为此,在以处理器为核心的系统中,架构设计者需要根据应用需求去拓展针对应用场景的特殊指令并实现包括指令集编码方法在内的相关方法,以提高单核处理器的计算性能以及处理器运行能效。

技术实现思路

[0005]RISC

V是一种简单、开放、免费的全新指令集架构,与大多数指令集相比,RISC

V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC

V芯片及软件,因此,本公开选用RISC

V指令集架构作为处理器的基本实现,并提出一种基于RISC

V的端侧DNN场景下的拓展VM指令集编码方法。
[0006]鉴于此,本公开提供了一种基于RISC

V的端侧DNN场景下的拓展VM指令集编码方法,包括如下步骤:
[0007]S1:编程dma加载src操作数,其中,根据src数据大小加载部分或者全部数据;
[0008]S2:vload指令加载源操作数到vreg;
[0009]S3:执行vector运算指令,结果保存在vreg中;
[0010]S4:vstore指令保存结果vreg到MMA的dst区域;
[0011]S5:编程dma将MMA中的dst数据写回DDR中的dst缓冲区;
[0012]其中,
[0013]所述方法包括一次vv指令的计算过程;
[0014]所述拓展VM指令集包括向量拓展指令和矩阵拓展指令。
[0015]优选的,
[0016]向量运算用VectorALU实现,向量寄存器为16组64*32bit的vreg。
[0017]优选的,
[0018]vload和vstore指令的数据必须来自MMA。
[0019]优选的,
[0020]Vector指令目的寄存器为vector register,vv指令源寄存器为两个vreg,vs指令的源寄存器为一个vreg和一个sreg。
[0021]优选的,
[0022]向量指令可以带一个条件控制字vpr,vpr为64bit,正好对应一个vreg的向量长度。
[0023]优选的,
[0024]所述方法还包括一次矩阵指令的计算过程,其进一步包括如下步骤:
[0025]S10:编程dma加载src操作数到MMA和MMB,其中,根据src数据大小加载部分或者全部数据),MMB只能加载const类型的数据;
[0026]S20:可选的,利用vload指令加载初始累加值到vreg;
[0027]S30:执行matrix运算指令,对MMA、MMB和vreg的三个操作数做矩阵乘累加,结果保存在vreg中;
[0028]S40:利用vstore指令把matrix操作的结果写回MMA中的dst区域;
[0029]S50:编程dma将MMA中的dst数据写回DDR中的dst缓冲区。
[0030]优选的,
[0031]矩阵运算用MatrixALU实现,可以实现2个8*8的矩阵做乘法运算,或者也可以实现1个1*64的向量和一个64*64的矩阵做向量矩阵乘法。
[0032]优选的,
[0033]矩阵乘法指令的两个src操作数矩阵分别来自MMA和MMB,同时可以附带一个来自vreg的第三个操作数实现乘累加操作。
[0034]优选的,
[0035]矩阵乘法指令的目的操作数必须为vreg,这个矩阵乘法的结果,可以利用向量指令实现矩阵和向量计算的pipeline,或者利用vstore直接写回MMA。
[0036]由此,本公开针对DNN场景扩展了一套自定义的RISC

V向量拓展和矩阵拓展指令。并且,本公开给出了向量指令集和矩阵指令集指令的具体编码方式。此外,本公开还提出了相应的处理器。
附图说明
[0037]图1是本公开一个实施例中RISC

V架构中Vector Register的示意图;
[0038]图2是本公开一个实施例中,从向量缓存的一个地址中向目标向量寄存器加载element的示意图;
[0039]图3是本公开一个实施例中,向量与向量操作的示意图;
[0040]图4是本公开一个实施例中,Algebra指令的方法示意图;
[0041]图5是本公开一个实施例中,特殊指令vector lookup table的方法示意图;
[0042]图6是本公开一个实施例中,条件寄存器生成指令的方法示意图;
[0043]图7是本公开一个实施例中,得到目的VPR结果的方法示意图;
[0044]图8是本公开一个实施例中,聚合指令的方法示意图;
[0045]图9是本公开一个实施例中,矩阵乘矩阵指令的方法示意图的示意图的示意图;
[0046]图10是本公开一个实施例中,矩阵点乘矩阵指令的方法示意图的示意图;
[0047]图11是本公开一个实施例中,向量乘矩阵指令的方法示意图的示意图;
[0048]图12是本公开一个实施例中,向量乘矩阵批量指令的方法示意图;
[0049]图13是本公开一个实施例中,单计算节点的示意图;
[0050]图14是本公开一个实施例中,一次vv指令的计算过程的示意图;
[0051]图15是本公开一个实施例中,一次矩阵指令的计算过程的示意图。
具体实施方式
[0052]下文将详细描述本公开的各个实施例。
[0053]本公开的总构思在于:选用RISC

V指令集架构作为处理器的基本实现,并在此基础上,增加自定义的向量矩阵指令拓展,以实现单核处理器在DNN场景下的高效数据处理。
[0054]1拓展指令实现
[0055]本节讨论专用指令的定义。专用指令比处理器的基本指令更快、更有效,因为每个新的指令通常把几个基本操作结合在一起,指令集的一组操作可能相互关联或者相互独立,操作的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于RISC

V的端侧DNN场景下的拓展VM指令集编码方法,包括如下步骤:S1:编程dma加载src操作数,其中,根据src数据大小加载部分或者全部数据;S2:vload指令加载源操作数到vreg;S3:执行vector运算指令,结果保存在vreg中;S4:vstore指令保存结果vreg到MMA的dst区域;S5:编程dma将MMA中的dst数据写回DDR中的dst缓冲区;其中,所述方法包括一次vv指令的计算过程;所述拓展VM指令集包括向量拓展指令和矩阵拓展指令。2.根据权利要求1所述的方法,其中,优选的,向量运算用VectorALU实现,向量寄存器为16组64*32bit的vreg。3.根据权利要求1所述的方法,其中,vload和vstore指令的数据必须来自MMA。4.根据权利要求1所述的方法,其中,Vector指令目的寄存器为vector register,vv指令源寄存器为两个vreg,vs指令的源寄存器为一个vreg和一个sreg。5.根据权利要求1所述的方法,其中,向量指令可以带一个条件控制字vpr,vpr为64bit,正好对应一个vreg的向量长度。6.根据权利要求1所述的方法...

【专利技术属性】
技术研发人员:赵文哲杨国茗夏天党祺玮任鹏举
申请(专利权)人:西安交通大学
类型:发明
国别省市:

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

1