用于静态分析NPU指令性能的方法、电子设备、介质和程序技术

技术编号:37125701 阅读:19 留言:0更新日期:2023-04-01 05:22
本公开实施例中提供了一种用于静态分析NPU指令性能的方法、电子设备、介质和程序。所述方法采用仿真的方法分析NPU指令性能,并在指令的仿真中克服了要模仿硬件的每一个时钟周期的行为的过程,从而解决了现有仿真过程时间过长的问题。间过长的问题。间过长的问题。

【技术实现步骤摘要】
用于静态分析NPU指令性能的方法、电子设备、介质和程序


[0001]本专利技术涉及仿真
,具体涉及用于静态分析NPU指令性能的方法、电子设备、介质和程序。

技术介绍

[0002]分析NPU指令的性能,能够帮助芯片设计人员、编译器开发人员和神经网络模型设计人员发现神经网络模型推理过程中的性能瓶颈,从而对NPU、编译器或神经网络模型结构等进行有针对性地优化。NPU指令的性能主要以指令或指令序列的执行的时间为参考指标。在芯片中,指令执行时间也可以由指令执行所用时钟周期数来代替。目前NPU指令或指令序列的性能评估方式主要有两种:一种方式是在物理硬件上真实执地行指令或指令序列,然后通过测量时间或统计时钟周期数获得执行时间;另一种方式是基于设计人员对电路功能的描述,通过用软件实现的仿真软件进行仿真执行,然后通过统计指令或指令序列所用时钟周期数来获得时间。
[0003]然而,针对前述的第一种NPU指令性能分析方式,即在物理硬件上真实执行指令或指令序列,虽然该方法能够非常精准地获得指令或指令序列的真实执行时间,且单次执行指令得出结果的速度较快,但是此方法不能在芯片制造前(或通过FPGA等搭建硬件仿真环境之前)就得到指令性能指标,对于芯片设计来说存在成本高昂、整体周期太长的问题。
[0004]此外,针对前述的第二种NPU指令性能分析方式,即基于设计人员对电路功能的描述,通过用软件实现的仿真软件进行仿真执行,然后通过统计指令或指令序列所用时钟周期数来获得时间,虽然该方法无需真实地制造出芯片,也无需进行硬件仿真,可在通用PC平台上进行软件仿真执行,但是该方法由于要模仿硬件的每一个时钟周期的行为,在芯片电路规模较大或指令序列较长时,存在仿真时间太长的问题。
[0005]因此,需要一种能够在快速、高效实现NPU指令性能仿真的同时降低成本的方法。

技术实现思路

[0006]有鉴于此,本公开实施例提供一种用于模块化电路行为仿真的方法和系统,至少部分解决现有技术中存在的问题。
[0007]第一方面,本公开实施例提供了一种用于静态分析NPU指令性能的方法,包括如下方法步骤:S1:从待执行的指令序列中依次取出指令,并按指令相应所属的硬件指令执行单元将指令投递到NPU的一个或多个仿真指令执行单元的指令队列中;S2:选取所述一个或多个指令执行单元中的至少一个指令执行单元中的指令队列中的待执行指令,并解析待执行指令的参数;S3:基于待执行指令的参数,判断待执行指令的执行是否依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,其中若待执行指令的执行不依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指
令的执行结果,则跳转到步骤S4;S4:设置待执行指令开始执行时的时钟周期数并开始执行待执行指令,其中若待执行指令为所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于初始时钟周期数,若待执行指令不是所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于待执行指令所在的所述至少一个指令执行单元中上一条指令执行结束时的时钟周期数;S5:按预定公式计算待执行指令执行所用的时钟周期数;S6:将待执行指令执行结束时的时钟周期数设置为等于待执行指令开始执行时的时钟周期数加上待执行指令执行所用的时钟周期数;S7:结束待执行指令的仿真;S8:判断所述至少一个指令执行单元中的指令队列是否为空,其中若所述至少一个指令执行单元中的指令队列不为空,则跳转到步骤S2,若所述至少一个指令执行单元中的指令队列为空,则跳转到步骤S9;S9:所述至少一个指令执行单元的仿真任务结束。
[0008]根据本公开实施例的一种具体实现方式,在步骤S3中,若待执行指令的执行依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到步骤S10;S10:判断所述至少一个指令执行单元中的待执行指令所依赖的指令是否都已执行结束,其中若所述至少一个指令执行单元中的待执行指令所依赖的指令还没有执行结束,则跳转到步骤S11,若所述至少一个指令执行单元中的待执行指令所依赖的指令都已执行结束,则跳转到步骤S12;S11:所述至少一个指令执行单元暂停执行待执行指令并进入等待状态;S12:将待执行指令开始执行时的时钟周期数设置为等于待执行指令所依赖的所有指令中最后一个执行结束时的时钟周期数,开始执行待执行指令,并跳转到上述步骤S5。
[0009]根据本公开实施例的一种具体实现方式,在步骤S7之后还包括:S13:判断待执行指令的执行结果是否被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,其中若待执行指令的执行结果不被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到上述步骤S8,若待执行指令的执行结果被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到步骤S14;S14:向依赖待执行指令的执行结果的其他指令执行单元发送指示满足依赖条件的信号;S15:判断接收到所述信号的其他指令执行单元是否处于等待状态,其中若接收到所述信号的所述其他指令执行单元正处于等待状态,则对接收到所述信号的所述其他指令执行单元中的待执行指令执行步骤S10中与所述至少一个指令执行单元相同的依赖性判断。
[0010]根据本公开实施例的一种具体实现方式,在步骤S15中,若接收到所述信号的所述其他指令执行单元未处于等待状态,则跳转到步骤S16;S16:接收到所述信号的所述其他指令执行单元将依赖条件标记为已满足,并按所
述其他指令执行单元当前的运行状态继续运行。
[0011]根据本公开实施例的一种具体实现方式,在步骤S9之后还包括:S17:判断所述一个或多个指令执行单元的仿真任务是否都已结束,其中若所述一个或多个指令执行单元的仿真任务都已结束,则跳转到步骤S18;S18:将所述指令序列执行结束时的时钟周期数设置为等于所述一个或多个指令执行单元中的所有指令中执行结束时的时钟周期数的最大值。
[0012]根据本公开实施例的一种具体实现方式,在步骤S17中,若所述一个或多个指令执行单元中存在仿真任务尚未结束的指令执行单元,则等待仿真任务尚未结束的指令执行单元继续按其当前的运行状态运行,直至所述一个或多个指令执行单元中的所有指令执行单元的仿真任务结束。
[0013]根据本公开实施例的一种具体实现方式,所述预定公式的执行包括:基于对待执行指令进行解析后得到的参数,计算出待执行指令要执行的任务总量Q;用待执行指令要执行的任务总量Q除以待执行指令在一个时钟周期内能做的任务量v,得到待执行指令执行所用的第一时钟周期数T1=Q/v;确定对待执行指令进行解析后得到的参数所需的特殊处理或配置所需的第二时钟周期数T2;以及待执行指令所用的时钟周期数T=T1+T2。
[0014]第二方面,本公开实施例提供了一种电子设备,该电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于静态分析NPU指令性能的方法,其特征在于,所述方法包括:S1:从待执行的指令序列中依次取出指令,并按指令相应所属的硬件指令执行单元将指令投递到NPU的一个或多个仿真指令执行单元的指令队列中;S2:选取所述一个或多个指令执行单元中的至少一个指令执行单元中的指令队列中的待执行指令,并解析待执行指令的参数;S3:基于待执行指令的参数,判断待执行指令的执行是否依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,其中若待执行指令的执行不依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到步骤S4;S4:设置待执行指令开始执行时的时钟周期数并开始执行待执行指令,其中若待执行指令为所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于初始时钟周期数,若待执行指令不是所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于待执行指令所在的所述至少一个指令执行单元中上一条指令执行结束时的时钟周期数;S5:按预定公式计算待执行指令执行所用的时钟周期数;S6:将待执行指令执行结束时的时钟周期数设置为等于待执行指令开始执行时的时钟周期数加上待执行指令执行所用的时钟周期数;S7:结束待执行指令的仿真;S8:判断所述至少一个指令执行单元中的指令队列是否为空,其中若所述至少一个指令执行单元中的指令队列不为空,则跳转到步骤S2,若所述至少一个指令执行单元中的指令队列为空,则跳转到步骤S9;S9:所述至少一个指令执行单元的仿真任务结束。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在步骤S3中,若待执行指令的执行依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到步骤S10;S10:判断所述至少一个指令执行单元中的待执行指令所依赖的指令是否都已执行结束,其中若所述至少一个指令执行单元中的待执行指令所依赖的指令还没有执行结束,则跳转到步骤S11,若所述至少一个指令执行单元中的待执行指令所依赖的指令都已执行结束,则跳转到步骤S12;S11:所述至少一个指令执行单元暂停执行待执行指令并进入等待状态;S12:将待执行指令开始执行时的时钟周期数设置为等于待执行指令所依赖的所有指令中最后一个执行结束时的时钟周期数,开始执行待执行指令,并跳转到上述步骤S5。3.根据权利要求2所述的方法,其特征在于,所述方法在步骤S7之后还包括:S13:判断待执行指令的执行结果是否被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,其中若待执行指令的执行结果不被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到上述步骤S8,若待执行指令的执行结果被所述一个或多个指令执行单元中的其他指令执行单元的指...

【专利技术属性】
技术研发人员:陆天翼梁爽
申请(专利权)人:北京超星未来科技有限公司
类型:发明
国别省市:

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

1