CN115878440A - 用于静态分析npu指令性能的方法、电子设备、介质和程序 - Google Patents
用于静态分析npu指令性能的方法、电子设备、介质和程序 Download PDFInfo
- Publication number
- CN115878440A CN115878440A CN202310048569.4A CN202310048569A CN115878440A CN 115878440 A CN115878440 A CN 115878440A CN 202310048569 A CN202310048569 A CN 202310048569A CN 115878440 A CN115878440 A CN 115878440A
- Authority
- CN
- China
- Prior art keywords
- instruction
- executed
- execution
- instructions
- instruction execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000004088 simulation Methods 0.000 claims abstract description 43
- 230000009191 jumping Effects 0.000 claims description 25
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 15
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000003068 static effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000011156 evaluation Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000003062 neural network model Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本公开实施例中提供了一种用于静态分析NPU指令性能的方法、电子设备、介质和程序。所述方法采用仿真的方法分析NPU指令性能,并在指令的仿真中克服了要模仿硬件的每一个时钟周期的行为的过程,从而解决了现有仿真过程时间过长的问题。
Description
技术领域
本发明涉及仿真技术领域,具体涉及用于静态分析NPU指令性能的方法、电子设备、介质和程序。
背景技术
分析NPU指令的性能,能够帮助芯片设计人员、编译器开发人员和神经网络模型设计人员发现神经网络模型推理过程中的性能瓶颈,从而对NPU、编译器或神经网络模型结构等进行有针对性地优化。NPU指令的性能主要以指令或指令序列的执行的时间为参考指标。在芯片中,指令执行时间也可以由指令执行所用时钟周期数来代替。目前NPU指令或指令序列的性能评估方式主要有两种:一种方式是在物理硬件上真实执地行指令或指令序列,然后通过测量时间或统计时钟周期数获得执行时间;另一种方式是基于设计人员对电路功能的描述,通过用软件实现的仿真软件进行仿真执行,然后通过统计指令或指令序列所用时钟周期数来获得时间。
然而,针对前述的第一种NPU指令性能分析方式,即在物理硬件上真实执行指令或指令序列,虽然该方法能够非常精准地获得指令或指令序列的真实执行时间,且单次执行指令得出结果的速度较快,但是此方法不能在芯片制造前(或通过FPGA等搭建硬件仿真环境之前)就得到指令性能指标,对于芯片设计来说存在成本高昂、整体周期太长的问题。
此外,针对前述的第二种NPU指令性能分析方式,即基于设计人员对电路功能的描述,通过用软件实现的仿真软件进行仿真执行,然后通过统计指令或指令序列所用时钟周期数来获得时间,虽然该方法无需真实地制造出芯片,也无需进行硬件仿真,可在通用PC平台上进行软件仿真执行,但是该方法由于要模仿硬件的每一个时钟周期的行为,在芯片电路规模较大或指令序列较长时,存在仿真时间太长的问题。
因此,需要一种能够在快速、高效实现NPU指令性能仿真的同时降低成本的方法。
发明内容
有鉴于此,本公开实施例提供一种用于模块化电路行为仿真的方法和系统,至少部分解决现有技术中存在的问题。
第一方面,本公开实施例提供了一种用于静态分析NPU指令性能的方法,包括如下方法步骤:
S1:从待执行的指令序列中依次取出指令,并按指令相应所属的硬件指令执行单元将指令投递到NPU的一个或多个仿真指令执行单元的指令队列中;
S2:选取所述一个或多个指令执行单元中的至少一个指令执行单元中的指令队列中的待执行指令,并解析待执行指令的参数;
S3:基于待执行指令的参数,判断待执行指令的执行是否依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,其中若待执行指令的执行不依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到步骤S4;
S4:设置待执行指令开始执行时的时钟周期数并开始执行待执行指令,其中若待执行指令为所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于初始时钟周期数,若待执行指令不是所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于待执行指令所在的所述至少一个指令执行单元中上一条指令执行结束时的时钟周期数;
S5:按预定公式计算待执行指令执行所用的时钟周期数;
S6:将待执行指令执行结束时的时钟周期数设置为等于待执行指令开始执行时的时钟周期数加上待执行指令执行所用的时钟周期数;
S7:结束待执行指令的仿真;
S8:判断所述至少一个指令执行单元中的指令队列是否为空,其中若所述至少一个指令执行单元中的指令队列不为空,则跳转到步骤S2,若所述至少一个指令执行单元中的指令队列为空,则跳转到步骤S9;
S9:所述至少一个指令执行单元的仿真任务结束。
根据本公开实施例的一种具体实现方式,在步骤S3中,若待执行指令的执行依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到步骤S10;
S10:判断所述至少一个指令执行单元中的待执行指令所依赖的指令是否都已执行结束,其中若所述至少一个指令执行单元中的待执行指令所依赖的指令还没有执行结束,则跳转到步骤S11,若所述至少一个指令执行单元中的待执行指令所依赖的指令都已执行结束,则跳转到步骤S12;
S11:所述至少一个指令执行单元暂停执行待执行指令并进入等待状态;
S12:将待执行指令开始执行时的时钟周期数设置为等于待执行指令所依赖的所有指令中最后一个执行结束时的时钟周期数,开始执行待执行指令,并跳转到上述步骤S5。
根据本公开实施例的一种具体实现方式,在步骤S7之后还包括:
S13:判断待执行指令的执行结果是否被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,其中若待执行指令的执行结果不被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到上述步骤S8,若待执行指令的执行结果被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到步骤S14;
S14:向依赖待执行指令的执行结果的其他指令执行单元发送指示满足依赖条件的信号;
S15:判断接收到所述信号的其他指令执行单元是否处于等待状态,其中若接收到所述信号的所述其他指令执行单元正处于等待状态,则对接收到所述信号的所述其他指令执行单元中的待执行指令执行步骤S10中与所述至少一个指令执行单元相同的依赖性判断。
根据本公开实施例的一种具体实现方式,在步骤S15中,若接收到所述信号的所述其他指令执行单元未处于等待状态,则跳转到步骤S16;
S16:接收到所述信号的所述其他指令执行单元将依赖条件标记为已满足,并按所述其他指令执行单元当前的运行状态继续运行。
根据本公开实施例的一种具体实现方式,在步骤S9之后还包括:
S17:判断所述一个或多个指令执行单元的仿真任务是否都已结束,其中若所述一个或多个指令执行单元的仿真任务都已结束,则跳转到步骤S18;
S18:将所述指令序列执行结束时的时钟周期数设置为等于所述一个或多个指令执行单元中的所有指令中执行结束时的时钟周期数的最大值。
根据本公开实施例的一种具体实现方式,在步骤S17中,若所述一个或多个指令执行单元中存在仿真任务尚未结束的指令执行单元,则等待仿真任务尚未结束的指令执行单元继续按其当前的运行状态运行,直至所述一个或多个指令执行单元中的所有指令执行单元的仿真任务结束。
根据本公开实施例的一种具体实现方式,所述预定公式的执行包括:
基于对待执行指令进行解析后得到的参数,计算出待执行指令要执行的任务总量Q;
用待执行指令要执行的任务总量Q除以待执行指令在一个时钟周期内能做的任务量v,得到待执行指令执行所用的第一时钟周期数T1=Q/v;
确定对待执行指令进行解析后得到的参数所需的特殊处理或配置所需的第二时钟周期数T2;以及
待执行指令所用的时钟周期数T=T1+T2。
第二方面,本公开实施例提供了一种电子设备,该电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行上述用于静态分析NPU指令性能的方法。
第三方面,本公开实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行上述用于静态分析NPU指令性能的方法。
第四方面,本公开实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述用于静态分析NPU指令性能的方法。
通过本公开所提供的用于静态分析NPU指令性能的方法、电子设备、介质和程序,规避了现有仿真方式中要模仿硬件的每一个时钟周期的行为的过程,解决了现有仿真过程时间长的问题,同时无需物理硬件上真实执行指令或指令序列的高额成本和长周期。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本公开实施例的用于静态分析NPU指令性能的方法的流程图;以及
图2为根据本公开实施例的用于静态分析NPU指令性能的设备的示意图。
具体实施方式
下面结合附图对本公开实施例进行详细描述。
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其他方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其他结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本公开的基本构想,图式中仅显示与本公开中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。
接下来将参照图1至图2对根据本公开实施例的用于静态分析NPU指令性能的方法和设备进行说明。
图1为根据本公开实施例的用于静态分析NPU指令性能的方法100的流程图。
如图1所示,在步骤S1处,从待执行的指令序列中依次取出指令,并按指令相应所属的硬件指令执行单元将指令投递到NPU的一个或多个仿真指令执行单元的指令队列中。
值得注意的是,当NPU自身不具有并行执行能力时,其可以被视为只具有一个硬件指令执行单元。
接下来,转到步骤S2。在步骤S2处,选取所述一个或多个指令执行单元中的至少一个指令执行单元中的指令队列中的待执行指令,并解析待执行指令的参数。
接下来,转到步骤S3。在步骤S3处,基于待执行指令的参数,判断待执行指令的执行是否依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果。
若待执行指令的执行不依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到步骤S4;若待执行指令的执行依赖所述一个或多个指令执行单元中的其他指令执行单元中的指令队列中的指令的执行结果,则跳转到后续的步骤S10。
在步骤S4处,设置待执行指令开始执行时的时钟周期数并开始执行待执行指令。
若待执行指令为所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于初始时钟周期数。在根据本公开的一些实施方式中,初始时钟周期数为0或根据实际需要而设置。
若待执行指令不是所述指令序列中第一条被执行的指令,则待执行指令开始执行时的时钟周期数等于待执行指令所在的所述至少一个指令执行单元中上一条指令执行结束时的时钟周期数。
接下来,转到步骤S5。在步骤S5处,按预定公式计算待执行指令执行所用的时钟周期数。
一般地,需要知道每一种指令能在一个时钟周期内做多少计算(如乘法、加法运算等等)或数据搬运等等任务量,再加上指令在一些特殊情况下所需要的额外的处理时间(一般是固定周期数)或者指令执行前所需要的配置时间(一般是固定周期数)。具体而言,所述计算指令执行所用的时钟周期数的预定公式的执行包括:基于对待执行指令进行解析后得到的参数,计算出待执行指令要执行的任务总量Q;用待执行指令要执行的任务总量Q除以待执行指令在一个时钟周期内能做的任务量v,得到待执行指令执行所用的第一时钟周期数T1=Q/v;确定对待执行指令进行解析后得到的参数所需的特殊处理或配置所需的第二时钟周期数T2;以及待执行指令所用的时钟周期数T=T1+T2。
以数据搬运指令为例,假设NPU内部数据搬运指令执行单元一个时钟周期内可以固定搬运16个字节的数据;如果有一条数据搬运指令中设置的待搬运数据量为513个字节,且存放数据的内存首地址都是按16字节对齐的,那么执行这条数据搬运指令所用周期数可能为33。此外,如果要处理地址对齐等等问题,可能还要再加几个固定个数的时钟周期,也就是上述的特殊处理或配置所需的时钟周期数。
此外,可以注意到的是,在上述计算结果中,前32个时钟周期每个周期搬运16个字节有效数据,最后一个时钟中期也搬运了16个字节的数据,但只有一个字节是有效的。
可以理解的是,其他类型的指令执行时间也可以做类似的计算,这种计算公式是需要结合具体的硬件特性来设计的。
接下来,转到步骤S6。在步骤S6处,将待执行指令执行结束时的时钟周期数设置为等于待执行指令开始执行时的时钟周期数加上待执行指令执行所用的时钟周期数。
接下来,转到步骤S7。在步骤S7处,结束待执行指令的仿真。
接下来,转到步骤S8。在步骤S8处,判断所述至少一个指令执行单元中的指令队列是否为空。
若所述至少一个指令执行单元中的指令队列不为空,则跳转到上述步骤S2,若所述至少一个指令执行单元中的指令队列为空,则跳转到下述步骤S9。
在步骤S9处,所述至少一个指令执行单元的仿真任务结束。
接上述步骤S3,在步骤S10处,判断所述至少一个指令执行单元中的待执行指令所依赖的指令是否都已执行结束。
若所述至少一个指令执行单元中的待执行指令所依赖的指令还没有执行结束,则跳转到步骤S11,若所述至少一个指令执行单元中的待执行指令所依赖的指令都已执行结束,则跳转到步骤S12。
在步骤S11处,所述至少一个指令执行单元暂停执行待执行指令并进入等待状态。
在步骤S12处,将待执行指令开始执行时的时钟周期数设置为等于待执行指令所依赖的所有指令中最后一个执行结束时的时钟周期数,开始执行待执行指令,并跳转到上述步骤S5。
此外,在根据本公开实施例的一种具体实现方式中,在步骤S7之后还包括步骤S13、S14、S15和S16。
在步骤S13处,判断待执行指令的执行结果是否被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖。
若待执行指令的执行结果不被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到上述步骤S8,若待执行指令的执行结果被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到步骤S14。
在步骤S14处,向依赖待执行指令的执行结果的其他指令执行单元发送指示满足依赖条件的信号。
接下来,转到步骤S15。在步骤S15处,判断接收到所述信号的其他指令执行单元是否处于等待状态。
若接收到所述信号的所述其他指令执行单元正处于等待状态,则对接收到所述信号的所述其他指令执行单元中的待执行指令执行步骤S10中与所述至少一个指令执行单元相同的依赖性判断。
也就是说,此时依赖待执行指令的执行结果的其他指令执行单元正处于等待执行结果完成的状态,一旦接收到指示满足依赖条件的信号即跳转到步骤S10中进行与所述至少一个指令执行单元中相同的指令依赖性判断,即判断自身的指令队列中的待执行指令所依赖的指令是否都已执行结束。
若所依赖的指令还没有执行结束,则暂停执行待执行指令并进入等待状态,若所依赖的指令都已执行结束,则将待执行指令开始执行时的时钟周期数设置为等于待执行指令所依赖的所有指令中最后一个执行结束时的时钟周期数,开始执行待执行指令,并跳转到上述步骤S5。
换句话说,NPU的一个或多个指令执行单元都具有相同的并行指令执行能力,所述一个或多个指令执行单元中的每一个指令执行单元都可以被视为其他指令执行单元相对的其他指令执行单元。
若接收到所述信号的所述其他指令执行单元未处于等待状态,则跳转到步骤S16。
在步骤S16处,接收到所述信号的所述其他指令执行单元将依赖条件标记为已满足,并按所述其他指令执行单元当前的运行状态继续运行。
也就是说,此时接收到所述信号的其他指令执行单元的指令队列中有一条将来要被执行的指令的执行依赖于接收到的所述的信号,而接收到所述信号的所述其他指令执行单元正在处理与所述信号无关的任务。此时,接收到所述信号的所述其他指令执行单元将所述将来要被执行的指令的与所述信号相对应的依赖条件标记为已满足,然后继续处理被中断的与所述信号无关的任务。
此外,在根据本公开实施例的一种具体实现方式中,在步骤S9之后还包括:步骤S17和S18。
在步骤S17中,判断所述一个或多个指令执行单元的仿真任务是否都已结束。
若所述一个或多个指令执行单元的仿真任务都已结束,则跳转到步骤S18。在步骤S18中,将所述指令序列执行结束时的时钟周期数设置为等于所述一个或多个指令执行单元中的所有指令中执行结束时的时钟周期数的最大值。
若所述一个或多个指令执行单元中存在仿真任务尚未结束的指令执行单元,则等待仿真任务尚未结束的指令执行单元继续按其当前的运行状态运行,直至所述一个或多个指令执行单元中的所有指令执行单元的仿真任务结束。
也就是说,仿真任务尚未结束的指令执行单元继续按其当前的运行状态运行,直至完成全部指令的执行任务。所述仿真任务尚未结束的指令执行单元当前的运行状态可能是取指令状态、执行指令状态、等待状态、发送信号状态等等
在上述实施例中,NPU内部具有一个或多个执行指令的指令执行单元,每个指令执行单元可以执行若干类别的指令。在同一个指令执行单元中的指令只能顺序执行,在不同指令执行单元中的指令,可以在同一时刻并行执行。位于不同指令执行单元中的指令也可能存在依赖关系而需要其中一条指令等待另一条指令,即在一个指令执行单元的一条指令可能需要等待位于其他指令执行单元中的某条指令的执行结果。显然,可以明白的是,不具备并行执行能力的NPU可以等效地被视为只有一个指令执行单元的情况。
此外,需要说明的是,虽然本发明中在描述仿真工具在处理指令之间的依赖关系时,采用了以并行执行模拟实际的指令执行单元,并通过发送信号进行指令执行单元之间的同步的方式,但这并不构成对本发明的限制。也就是说,在模仿能并行执行多条指令的仿真工具中,还可以采用其他方式来处理这种指令之间的等待依赖关系,例如让指令执行单元进行空转并等待公共状态标记或按指令之间的依赖关系构建并借助图数据结构等方式来处理等待依赖关系。换句话说,虽然本发明在公布整体方案过程中公开了一种处理指令依赖关系的实施例,但本发明中公开的仿真工具对指令之间的依赖关系的处理方式不做限定。
本发明提出的静态分析NPU指令的方法设计了公式对指令的执行时钟周期数进行计算和执行仿真过程的程序,其中,对指令的执行时间进行计算的公式基于设计人员对电路行为的描述,公式的计算结果可精确到单个电路时钟周期。具体而言,在分析指令的性能时,通过公式计算具体指令所将要花费的时钟周期,得出单条指令的性能数据;在获得指令序列中所有单条指令的时钟周期的基础上,加入对指令之间可能存在的先后依赖关系和并行执行的处理过程后,得出指令序列的时钟周期数,也就是NPU指令的性能数据。在此过程中,仿真程序无需模仿硬件指令执行单元的每一个时钟周期的行为,极大地缩短了仿真时间,提高了仿真效率。
图2示出了实现本公开方法的设备200。如图2所示,设备200包括处理器201,其可以根据存储在只读存储器(ROM)202中的程序和/或数据或者从存储部分208加载到随机访问存储器(RAM)203中的程序和/或数据而执行各种适当的操作和处理。处理器201可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器201可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如,中央处理器(CPU)、图形处理器(GPU)、神经网络处理器(NPU)、数字信号处理器(DSP)等等。在RAM 203中,还存储有设备200操作所需的各种程序和数据。处理器201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
上述处理器与存储器共同用于执行存储在存储器中的程序,所述程序被计算机执行时能够实现上述各实施例描述的方法、步骤或功能。
以下部件连接至I/O接口205:包括键盘、鼠标、触摸屏等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。此外,要注意的是,图2中仅示意性示出部分组件,并不意味着设备200只包括图2所示组件。
进一步地,本公开实施例还提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述方法实施例中的用于模块化电路行为仿真的方法。
进一步地,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序指令被计算机执行时,使该计算机执行前述方法实施例中的用于模块化电路行为仿真的方法。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。
此外,本发明还可以有如下配置:
(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,若待执行指令的执行结果被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到步骤S14;
S14:向依赖待执行指令的执行结果的其他指令执行单元发送指示满足依赖条件的信号;
S15:判断接收到所述信号的其他指令执行单元是否处于等待状态,其中若接收到所述信号的所述其他指令执行单元正处于等待状态,则对接收到所述信号的所述其他指令执行单元中的待执行指令执行步骤S10中与所述至少一个指令执行单元相同的依赖性判断。
(4)根据上述(3)所述的方法,其特征在于,所述方法还包括:
在步骤S15中,若接收到所述信号的所述其他指令执行单元未处于等待状态,则跳转到步骤S16;
S16:接收到所述信号的所述其他指令执行单元将依赖条件标记为已满足,并按所述其他指令执行单元当前的运行状态继续运行。
(5)根据上述(1)所述的方法,其特征在于,所述方法在步骤S9之后还包括:
S17:判断所述一个或多个指令执行单元的仿真任务是否都已结束,其中若所述一个或多个指令执行单元的仿真任务都已结束,则跳转到步骤S18;
S18:将所述指令序列执行结束时的时钟周期数设置为等于所述一个或多个指令执行单元中的所有指令中执行结束时的时钟周期数的最大值。
(6)根据上述(5)所述的方法,其特征在于,所述方法还包括:
在步骤S17中,若所述一个或多个指令执行单元中存在仿真任务尚未结束的指令执行单元,则等待仿真任务尚未结束的指令执行单元继续按其当前的运行状态运行,直至所述一个或多个指令执行单元中的所有指令执行单元的仿真任务结束。
(7)根据上述(1)至(6)中任一项所述的方法,其特征在于,所述预定公式的执行包括:
基于对待执行指令进行解析后得到的参数,计算出待执行指令要执行的任务总量Q;
用待执行指令要执行的任务总量Q除以待执行指令在一个时钟周期内能做的任务量v,得到待执行指令执行所用的第一时钟周期数T1=Q/v;
确定对待执行指令进行解析后得到的参数所需的特殊处理或配置所需的第二时钟周期数T2;以及
待执行指令所用的时钟周期数T=T1+T2。
(8)一种电子设备,该电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行如上述(1)至(7)中的任一项所述的用于静态分析NPU指令性能的方法。
(9)一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行如上述(1)至(7)中的任一项所述的用于静态分析NPU指令性能的方法。
(10)一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行如上述(1)至(7)中的任一项所述的用于静态分析NPU指令性能的方法。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (10)
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,若待执行指令的执行结果被所述一个或多个指令执行单元中的其他指令执行单元的指令队列中的指令的执行所依赖,则跳转到步骤S14;
S14:向依赖待执行指令的执行结果的其他指令执行单元发送指示满足依赖条件的信号;
S15:判断接收到所述信号的其他指令执行单元是否处于等待状态,其中若接收到所述信号的所述其他指令执行单元正处于等待状态,则对接收到所述信号的所述其他指令执行单元中的待执行指令执行步骤S10中与所述至少一个指令执行单元相同的依赖性判断。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在步骤S15中,若接收到所述信号的所述其他指令执行单元未处于等待状态,则跳转到步骤S16;
S16:接收到所述信号的所述其他指令执行单元将依赖条件标记为已满足,并按所述其他指令执行单元当前的运行状态继续运行。
5.根据权利要求1所述的方法,其特征在于,所述方法在步骤S9之后还包括:
S17:判断所述一个或多个指令执行单元的仿真任务是否都已结束,其中若所述一个或多个指令执行单元中的所有指令执行单元的仿真任务都已结束,则跳转到步骤S18;
S18:将所述指令序列执行结束时的时钟周期数设置为等于所述一个或多个指令执行单元中的所有指令中执行结束时的时钟周期数的最大值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在步骤S17中,若所述一个或多个指令执行单元中存在仿真任务尚未结束的指令执行单元,则等待仿真任务尚未结束的指令执行单元继续按其当前的运行状态运行,直至所述一个或多个指令执行单元中的所有指令执行单元的仿真任务结束。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述预定公式的执行包括:
基于对待执行指令进行解析后得到的参数,计算出待执行指令要执行的任务总量Q;
用待执行指令要执行的任务总量Q除以待执行指令在一个时钟周期内能做的任务量v,得到待执行指令执行所用的第一时钟周期数T1=Q/v;
确定对待执行指令进行解析后得到的参数所需的特殊处理或配置所需的第二时钟周期数T2;以及
待执行指令所用的时钟周期数T=T1+T2。
8.一种电子设备,该电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使所述至少一个处理器执行如权利要求1至7中的任一项所述的用于静态分析NPU指令性能的方法。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令当由至少一个处理器执行时使所述至少一个处理器执行如权利要求1至7中的任一项所述的用于静态分析NPU指令性能的方法。
10.一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行如权利要求1至7中的任一项所述的用于静态分析NPU指令性能的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310048569.4A CN115878440B (zh) | 2023-01-31 | 2023-01-31 | 用于静态分析npu指令性能的方法、电子设备、介质和程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310048569.4A CN115878440B (zh) | 2023-01-31 | 2023-01-31 | 用于静态分析npu指令性能的方法、电子设备、介质和程序 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115878440A true CN115878440A (zh) | 2023-03-31 |
CN115878440B CN115878440B (zh) | 2023-05-16 |
Family
ID=85758546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310048569.4A Active CN115878440B (zh) | 2023-01-31 | 2023-01-31 | 用于静态分析npu指令性能的方法、电子设备、介质和程序 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878440B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940605A (en) * | 1995-06-06 | 1999-08-17 | Nec Corporation | Simulation method and simulation system |
CN104407968A (zh) * | 2014-10-30 | 2015-03-11 | 北京控制工程研究所 | 一种通过静态分析测算代码指令最长运行时间的方法 |
CN104598201A (zh) * | 2013-10-31 | 2015-05-06 | 国际商业机器公司 | 指令性能分析的方法和设备 |
CN105183650A (zh) * | 2015-09-11 | 2015-12-23 | 哈尔滨工业大学 | 基于llvm的科学计算程序自动性能预测方法 |
CN109324949A (zh) * | 2018-09-14 | 2019-02-12 | 珠海金山网络游戏科技有限公司 | 一种lua代码执行性能的静态分析方法 |
CN113254084A (zh) * | 2021-07-07 | 2021-08-13 | 航天中认软件测评科技(北京)有限责任公司 | 一种基于处理器流水线分析的时间和时序校准方法及装置 |
CN114201375A (zh) * | 2021-12-09 | 2022-03-18 | 北京奕斯伟计算技术有限公司 | 一种在硬件环境上获取代码指令消耗的方法及装置 |
-
2023
- 2023-01-31 CN CN202310048569.4A patent/CN115878440B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5940605A (en) * | 1995-06-06 | 1999-08-17 | Nec Corporation | Simulation method and simulation system |
CN104598201A (zh) * | 2013-10-31 | 2015-05-06 | 国际商业机器公司 | 指令性能分析的方法和设备 |
CN104407968A (zh) * | 2014-10-30 | 2015-03-11 | 北京控制工程研究所 | 一种通过静态分析测算代码指令最长运行时间的方法 |
CN105183650A (zh) * | 2015-09-11 | 2015-12-23 | 哈尔滨工业大学 | 基于llvm的科学计算程序自动性能预测方法 |
CN109324949A (zh) * | 2018-09-14 | 2019-02-12 | 珠海金山网络游戏科技有限公司 | 一种lua代码执行性能的静态分析方法 |
CN113254084A (zh) * | 2021-07-07 | 2021-08-13 | 航天中认软件测评科技(北京)有限责任公司 | 一种基于处理器流水线分析的时间和时序校准方法及装置 |
CN114201375A (zh) * | 2021-12-09 | 2022-03-18 | 北京奕斯伟计算技术有限公司 | 一种在硬件环境上获取代码指令消耗的方法及装置 |
Non-Patent Citations (2)
Title |
---|
GARGI ALAVANI等: "Predicting Execution Time of CUDA Kernel Using Static Analysis", 2018 IEEE INTL CONF ON PARALLEL & DISTRIBUTED PROCESSING WITH APPLICATIONS, UBIQUITOUS COMPUTING & COMMUNICATIONS, BIG DATA & CLOUD COMPUTING, SOCIAL COMPUTING & NETWORKING, SUSTAINABLE COMPUTING & COMMUNICATIONS * |
王旭: "计算机指令集仿真器的时间仿真技术研究" * |
Also Published As
Publication number | Publication date |
---|---|
CN115878440B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315889B (zh) | 仿真引擎的性能测试方法及存储介质 | |
US10437949B1 (en) | Scheduling events in hardware design language simulation | |
CN111045933A (zh) | 一种回归策略更新方法、装置、存储介质及终端设备 | |
CN111078276B (zh) | 应用程序的冗余资源处理方法、装置、设备及存储介质 | |
CN116126346B (zh) | Ai模型的代码编译方法、装置、计算机设备及存储介质 | |
CN115150024B (zh) | 数据处理方法、装置、设备和介质 | |
US20130013283A1 (en) | Distributed multi-pass microarchitecture simulation | |
CN117806981B (zh) | 一种cfd软件自动化测试方法及系统 | |
CN117971235A (zh) | 一种目标代码生成方法、装置、设备及存储介质 | |
CN115878440B (zh) | 用于静态分析npu指令性能的方法、电子设备、介质和程序 | |
CN112446501A (zh) | 真实网络环境中缓存分配模型的获取方法、装置及系统 | |
CN115098198B (zh) | 一种大量定时器实现方法 | |
CN116149917A (zh) | 评估处理器性能的方法及装置、计算设备、可读存储介质 | |
Wolf et al. | Execution cost interval refinement in static software analysis | |
CN115757186A (zh) | 一种软件接口的性能测试方法、装置、设备及介质 | |
CN115269431A (zh) | 一种接口测试方法、装置、电子设备及存储介质 | |
CN114706589A (zh) | 一种重复代码扫描方法、装置和电子设备 | |
CN113886035A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN114840256A (zh) | 一种程序数据级并行分析方法、装置及相关设备 | |
CN117634369B (zh) | 仿真方法、模型、电子设备、存储介质 | |
CN115951936B (zh) | 向量化编译程序的芯片适配方法、装置、设备及介质 | |
CN117785493B (zh) | 嵌入式系统的硬件资源访问方法、装置及服务器 | |
CN110825438B (zh) | 用于模拟人工智能芯片的数据处理的方法和装置 | |
CN114265593B (zh) | 指令调度方法、装置、设备及计算机可读存储介质 | |
CN114327643B (zh) | 机器指令预处理方法、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |