CN114265593A - 指令调度方法、装置、设备及计算机可读存储介质 - Google Patents
指令调度方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114265593A CN114265593A CN202111518259.1A CN202111518259A CN114265593A CN 114265593 A CN114265593 A CN 114265593A CN 202111518259 A CN202111518259 A CN 202111518259A CN 114265593 A CN114265593 A CN 114265593A
- Authority
- CN
- China
- Prior art keywords
- instruction
- execution time
- compiler
- time consumption
- micro
- 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
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本申请提供了一种指令调度方法、装置、设备及计算机可读存储介质,涉及编译器领域,该方法包括:将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值;从而实现对各指令执行顺序的优化。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种指令调度方法、装置、设备及计算机可读存储介质。
背景技术
现有技术中编译器就是将一种语言(通常为高级语言)翻译为另一种语言(通常为低级语言)的程序。针对编译器GCC(GNUCompiler Collection,GNU编译器套件),现有的指令调度技术基于GCC内部自建的指令执行耗时模型,对指令的执行耗时进行评估,但是指令执行耗时模型简单,从而对指令的执行耗时评估不准确,只能以较粗的力度对指令进行调度;更为精确的指令调度仍然由硬件来进行设计,如此加大了硬件的设计难度,增加了成本。
发明内容
本申请针对现有的方式的缺点,提出一种指令调度方法、装置、设备及计算机可读存储介质,用于解决如何对指令调度进行优化,从而实现对指令执行顺序优化的问题。
第一方面,本申请提供了一种指令调度方法,包括:
将测试数据输入至编译器进行编译,得到编译数据;
确定编译数据中各指令的执行耗时对应的属性;
基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;
重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;
基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。
在一个实施例中,将测试数据输入至编译器进行编译,得到编译数据,包括:
将代码打点的测试数据输入至编译器进行编译,得到编译数据。
在一个实施例中,确定编译数据中各指令的执行耗时对应的属性,包括:
将编译数据输入至预设处理器进行处理,得到各指令的执行耗时;
基于各指令的执行耗时,确定各指令在所述预设处理器的不同处理类型下的耗时模型;
基于耗时模型,确定各指令的执行耗时对应的属性。
在一个实施例中,基于各指令的执行耗时,确定各指令在预设处理器的不同处理类型下的耗时模型,包括:
基于同一种指令的执行耗时,确定同一种指令在预设处理器的不同处理类型下的多种耗时模型。
在一个实施例中,基于耗时模型,确定各指令的执行耗时对应的属性,包括:
将耗时模型输入至预设的解析器,进行解析处理,得到各指令的执行耗时对应的属性,各指令的执行耗时对应的属性包括加减法属性、移位属性、数据拷贝属性中的至少一项。
在一个实施例中,基于更新后的微架构模型,对各指令进行调度,包括:
基于更新后的微架构模型,对乱序执行中的各指令进行调度。
在一个实施例中,预设评分规则基于预设的基准测试程序来确定。
第二方面,本申请提供了一种指令调度装置,包括:
第一处理模块,用于将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定所述编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;
第二处理模块,用于基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。
第三方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;
总线,用于连接处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请第一方面的指令调度方法。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的指令调度方法。
本申请实施例提供的技术方案,至少具有如下有益效果:
将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值;如此,实现了对指令调度的优化,即对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的指令调度系统的架构示意图;
图2为本申请实施例提供的一种指令调度方法的流程示意图;
图3为本申请实施例提供的另一种指令调度方法的流程示意图;
图4为本申请实施例提供的一种指令调度装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“B”,或者实现为“A和B”。
发明人研究发现:针对硬件,例如CPU(Central Processing Unit,中央处理器),指令调度的设计复杂且难度大。
基于此,为了解决现有指令调度中存在的问题中的至少一个,更好的满足指令调度的需求,本申请提供了一种指令调度方法,基于该方法可以对指令调度进行优化,即实现对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了更好的理解及说明本申请实施例的方案,下面对本申请实施例中所涉及到的一些技术用语进行简单说明。
代码打点:通过代码打点可以准确获取每个方法的执行时间,记录整个过程的耗时情况。
指令排流水:指令排流水是编译器对指令执行顺序的优化处理,编译器会根据指令执行耗时情况调整指令执行顺序,识别能够并行执行的指令,通过指令排流水优化可以优化程序的执行时间。
微架构模型:微架构模型可以是微架构。编译器的微架构是针对特定硬件架构的,为编译器提供各种属性的指令对应的执行耗时情况,用于模拟指令在真实硬件上运行耗时,即执行耗时。微架构主要用于编译器的排流水优化处理阶段。不同的硬件架构都可以专门定制微架构。
Machine descriptor文件:Machine descriptor文件是GCC的后端文件,也叫md文件。Machine descriptor文件定义了不同硬件架构支持的指令集及对应的寄存器,是编译代码的必要文件,通过Machine descriptor文件,GCC才能知道用户写的C代码对应什么指令。
基准测试程序:基准测试程序用来测量机器的硬件最高实际运行性能,以及软件优化的性能提升效果。基准测试程序可以为Benchmark程序、Coremark程序等;其中,Benchmark程序可分为微基准测试程序(Microbenchmark)和宏基准测试程序(Macrobenchmark),Coremark程序可以用于检测CPU性能。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请实施例所提供的方案可以适用于编译器领域中任意需要指令调度的应用场景。
为了更好的理解本申请实施例提供的方案,下面结合具体的一个应用场景对该方案进行说明。
在一个实施例中,图1中示出了本申请实施例所适用的一种指令调度系统的架构示意图,可以理解的是,本申请实施例所提供的指令调度方法可以适用于但不限于应用于如图1所示的应用场景中。
本示例中,如图1所示,该示例中的指令调度系统的架构可以包括但不限于服务器10、硬件20、编译器30和微架构模型40;其中,服务器10中包括编译器30,编译器30包括微架构模型40,微架构模型40可以是微架构;硬件20可以在服务器10中,硬件20也可以在其他服务器中,硬件20可以是CPU。服务器10和硬件20之间可以通过网络进行交互。
服务器10将测试数据输入至编译器30进行编译,得到编译数据;服务器10确定编译数据中各指令的执行耗时对应的属性;服务器10基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型40;服务器10重复执行将测试数据输入至编译器30进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型40,直至当编译器满足预设评分规则,则得到更新后的微架构模型40;服务器10基于更新后的微架构模型40,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。其中,服务器10确定编译数据中各指令的执行耗时对应的属性,包括:服务器10将编译数据输入至硬件20进行处理,得到各指令的执行耗时;服务器10基于各指令的执行耗时,确定各指令在所述预设处理器的不同处理类型下的耗时模型;服务器10基于耗时模型,确定各指令的执行耗时对应的属性。
可理解,上述仅为一种示例,本实施例在此不作限定。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、Wi-Fi及其他实现无线通信的网络。具体也可基于实际应用场景需求确定,在此不作限定。
参见图2,图2示出了本申请实施例提供的一种指令调度方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是服务器,作为一可选实施方式,该方法可以由服务器执行,为了描述方便,在下文的一些可选实施例的描述中,将以服务器作为该方法执行主体为例进行说明。如图2所示,本申请实施例提供的指令调度方法包括如下步骤:
S201,将测试数据输入至编译器进行编译,得到编译数据。
具体地,测试数据可以是插入了打点代码的测试程序,即代码打点的测试数据。编译数据可以是插入了打点代码的测试程序进行编译后的文件,编译数据可以用于在硬件上运行,硬件例如CPU。
S202,确定编译数据中各指令的执行耗时对应的属性。
具体地,例如指令是mov指令,mov指令执行耗时可以是两个寄存器之间拷贝的耗时,mov指令执行耗时也可以是从内存拷贝到寄存器之间的耗时。编译器(GCC)在定义指令时,会赋予指令属性,即指令的执行耗时对应的属性;例如,指令的执行耗时对应的属性可以包括加减法属性、移位属性、数据拷贝属性等,其中,加减法属性是算数运算,移位属性是逻辑运算,数据拷贝属性是内存读取存储,每种属性对应各自的指令的执行耗时;在指令排流水时,根据各指令的执行耗时情况,调整各指令的先后顺序。
S203,基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型。
具体地,微架构模型可以是微架构;微架构模型可以为编译器提供各种属性(指令的执行耗时对应的属性)的指令对应的执行耗时情况,用于模拟指令在硬件上的运行耗时,即执行耗时。
S204,重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型。
具体地,根据预设评分规则,确定是否继续执行S201-S203。将编译器包括的微架构模型进行更新,即对编译器进行了优化,将优化后的编译器对预设的基准测试程序进行编译运行,可以得到一个评分结果,当该评分结果满足预设评分规则,则得到更新后的微架构模型;当该评分结果不满足预设评分规则,则继续执行S201-S203。
S205,基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。
具体地,编译器通过更新后的微架构模型进行指令排流水,即对各指令进行调度,实现了根据实际的硬件性能和特性,充分优化了指令执行的顺序。
本申请实施例中,将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值;如此,实现了对指令调度的优化,即对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
在一个实施例中,将测试数据输入至编译器进行编译,得到编译数据,包括:
将代码打点的测试数据输入至编译器进行编译,得到编译数据。
具体地,测试数据可以是插入了打点代码的测试程序,即代码打点的测试数据。编译数据可以是插入了打点代码的测试程序进行编译后的文件。
在一个实施例中,确定编译数据中各指令的执行耗时对应的属性,包括步骤A1-A3:
步骤A1,将编译数据输入至预设处理器进行处理,得到各指令的执行耗时。
在一个实施例中,预设处理器是硬件,预设处理器可以为CPU。将编译结果(编译数据)在硬件(例如CPU)上运行,得到各指令执行的耗时数据,即各指令的执行耗时。
步骤A2,基于各指令的执行耗时,确定各指令在预设处理器的不同处理类型下的耗时模型。
在一个实施例中,通过对各指令的执行耗时进行分析,确定预设处理器在不同场景下的耗时模型,即各指令在预设处理器的不同处理类型下的耗时模型。
具体地,可以根据耗时数据,即各指令的执行耗时,分析出相同指令在不同场景下的耗时模型,即相同指令在预设处理器的不同处理类型下的耗时模型。例如,第一种场景是mov指令在两个寄存器之间拷贝,第二种场景是mov指令从内存拷贝到寄存器;可以根据mov指令的执行耗时,分析出mov指令在第一种场景下的耗时模型,即两个寄存器之间拷贝的耗时;同时可以根据mov指令的执行耗时,分析出mov指令在第二种场景下的耗时模型,即从内存拷贝到寄存器之间的耗时;第一种场景下的耗时模型和第二种场景下的耗时模型是不同的。
步骤A3,基于耗时模型,确定各指令的执行耗时对应的属性。
在一个实施例中,各指令的执行耗时对应的属性可以包括加减法属性、移位属性、数据拷贝属性等,其中,加减法属性是算数运算,移位属性是逻辑运算,数据拷贝属性是内存读取存储。
在一个实施例中,基于各指令的执行耗时,确定各指令在预设处理器的不同处理类型下的耗时模型,包括:
基于同一种指令的执行耗时,确定同一种指令在预设处理器的不同处理类型下的多种耗时模型。
具体地,基于同一种指令的执行耗时,分析出同一种指令在不同场景下的耗时模型,即同一种指令在预设处理器的不同处理类型下的耗时模型。例如,同一种指令为mov指令;第一种场景是mov指令在两个寄存器之间拷贝,第二种场景是mov指令从内存拷贝到寄存器;可以根据mov指令的执行耗时,分析出mov指令在第一种场景下的耗时模型,即两个寄存器之间拷贝的耗时;同时可以根据mov指令的执行耗时,分析出mov指令在第二种场景下的耗时模型,即从内存拷贝到寄存器之间的耗时;第一种场景下的耗时模型和第二种场景下的耗时模型是不同的。
在一个实施例中,基于耗时模型,确定各指令的执行耗时对应的属性,包括:
将耗时模型输入至预设的解析器,进行解析处理,得到各指令的执行耗时对应的属性,各指令的执行耗时对应的属性包括加减法属性、移位属性、数据拷贝属性中的至少一项。
具体地,预设的解析器可以是模型解析器,模型解析器可以是一种配套工具。预设的解析器可以基于各指令在不同场景下的耗时模型,分析出各指令的执行耗时对应的属性。服务器可以将各指令的执行耗时对应的属性写入Machine descriptor文件。
在一个实施例中,基于更新后的微架构模型,对各指令进行调度,包括:
基于更新后的微架构模型,对乱序执行中的各指令进行调度。
在一个实施例中,指令排流水对应两种场景,一种场景是指令的顺序执行,另一种场景是指令的乱序执行。基于更新后的微架构模型,进行指令排流水,对乱序执行中的各指令进行调度;如此,充分优化了乱序执行中的各指令执行的顺序,减少了各指令之间的等待时间。
在一个实施例中,预设评分规则基于预设的基准测试程序来确定。
在一个实施例中,基准测试程序可以为Benchmark程序、Coremark程序等。例如,将编译器包括的微架构模型进行更新,即对编译器进行了优化,将优化后的编译器对Coremark程序进行编译运行,可以得到一个评分结果,当该评分结果满足预设评分规则,则得到更新后的微架构模型。
应用本申请实施例,至少具有如下有益效果:
实现了对指令调度的优化,即对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
为了更好的理解本申请实施例所提供的方法,下面结合具体应用场景的示例对本申请实施例的方案进行进一步说明。
本申请实施例所提供的指令调度方法应用于编译器领域中的指令调度的场景。
参见图3,图3示出了本申请实施例提供的另一种指令调度方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是服务器,作为一可选实施方式,该方法可以由服务器执行,为了描述方便,在下文的一些可选实施例的描述中,将以服务器作为该方法执行主体为例进行说明。如图3所示,本申请实施例提供的指令调度方法包括如下步骤:
S301,将插入了打点代码的测试程序输入至编译器进行编译,得到编译数据。
S302,将编译数据输入至硬件进行处理,得到各指令的执行耗时。
S303,基于各指令的执行耗时,确定各指令在不同场景下的耗时模型。
S304,将各指令在不同场景下的耗时模型输入至模型解析器,进行解析处理,得到各指令的执行耗时对应的属性。
S305,基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型。
S306,判断编译器是否满足预设评分规则,当确定编译器是满足预设评分规则,则转到步骤S307处理;确定编译器不满足预设评分规则,则转到步骤S301处理。
S307,得到更新后的微架构模型。
S308,基于更新后的微架构模型,对各指令进行调度。
具体地,编译器通过更新后的微架构模型进行指令排流水,即对各指令进行调度,实现了根据实际的硬件性能和特性,充分优化了指令执行的顺序。
应用本申请实施例,至少具有如下有益效果:
实现对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
本申请实施例还提供了一种指令调度装置,该指令调度装置的结构示意图如图4所示,指令调度装置60,包括第一处理模块601和第二处理模块602。
第一处理模块601,用于将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定所述编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;
第二处理模块602,用于基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。
在一个实施例中,第一处理模块601,具体用于:
将代码打点的测试数据输入至编译器进行编译,得到编译数据。
在一个实施例中,第一处理模块601,具体用于:
将编译数据输入至预设处理器进行处理,得到各指令的执行耗时;
基于各指令的执行耗时,确定各指令在所述预设处理器的不同处理类型下的耗时模型;
基于耗时模型,确定各指令的执行耗时对应的属性。
在一个实施例中,第一处理模块601,具体用于:
基于同一种指令的执行耗时,确定同一种指令在预设处理器的不同处理类型下的多种耗时模型。
在一个实施例中,第一处理模块601,具体用于:
将耗时模型输入至预设的解析器,进行解析处理,得到各指令的执行耗时对应的属性,各指令的执行耗时对应的属性包括加减法属性、移位属性、数据拷贝属性中的至少一项。
在一个实施例中,第二处理模块602,具体用于:
基于更新后的微架构模型,对乱序执行中的各指令进行调度。
在一个实施例中,预设评分规则基于预设的基准测试程序来确定。
应用本申请实施例,至少具有如下有益效果:
将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值;如此,实现了对指令调度的优化,即对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
本申请实施例还提供了一种电子设备,该电子设备的结构示意图如图5所示,图5所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:服务器等。
应用本申请实施例,至少具有如下有益效果:
将测试数据输入至编译器进行编译,得到编译数据;确定编译数据中各指令的执行耗时对应的属性;基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型;重复执行将测试数据输入至编译器进行编译,得到编译数据、确定编译数据中各指令的执行耗时对应的属性、以及基于各指令的执行耗时对应的属性,更新编译器包括的微架构模型,直至当编译器满足预设评分规则,则得到更新后的微架构模型;基于更新后的微架构模型,对各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值;如此,实现了对指令调度的优化,即对各指令执行顺序的优化,并能够根据指令在硬件上的执行耗时,建立针对硬件的软件模型,即更新后的微架构模型,更新后的微架构模型用于编译器的指令调度,从而减轻了硬件的设计复杂度,降低了成本。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
基于与本申请实施例提供的方法相同的原理,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述本申请任一可选实施例中提供的方法。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种指令调度方法,其特征在于,包括:
将测试数据输入至编译器进行编译,得到编译数据;
确定所述编译数据中各指令的执行耗时对应的属性;
基于所述各指令的执行耗时对应的属性,更新所述编译器包括的微架构模型;
重复执行所述将测试数据输入至编译器进行编译,得到编译数据、所述确定所述编译数据中各指令的执行耗时对应的属性、以及所述基于所述各指令的执行耗时对应的属性,更新所述编译器包括的微架构模型,直至当所述编译器满足预设评分规则,则得到更新后的微架构模型;
基于所述更新后的微架构模型,对所述各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。
2.根据权利要求1所述的方法,其特征在于,所述将测试数据输入至编译器进行编译,得到编译数据,包括:
将代码打点的测试数据输入至编译器进行编译,得到编译数据。
3.根据权利要求1所述的方法,其特征在于,所述确定所述编译数据中各指令的执行耗时对应的属性,包括:
将所述编译数据输入至预设处理器进行处理,得到各指令的执行耗时;
基于所述各指令的执行耗时,确定所述各指令在所述预设处理器的不同处理类型下的耗时模型;
基于所述耗时模型,确定所述各指令的执行耗时对应的属性。
4.根据权利要求3所述的方法,其特征在于,所述基于所述各指令的执行耗时,确定所述各指令在所述预设处理器的不同处理类型下的耗时模型,包括:
基于同一种指令的执行耗时,确定所述同一种指令在所述预设处理器的不同处理类型下的多种耗时模型。
5.根据权利要求3所述的方法,其特征在于,所述基于所述耗时模型,确定所述各指令的执行耗时对应的属性,包括:
将所述耗时模型输入至预设的解析器,进行解析处理,得到所述各指令的执行耗时对应的属性,所述各指令的执行耗时对应的属性包括加减法属性、移位属性、数据拷贝属性中的至少一项。
6.根据权利要求1所述的方法,其特征在于,所述基于所述更新后的微架构模型,对所述各指令进行调度,包括:
基于所述更新后的微架构模型,对乱序执行中的各指令进行调度。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述预设评分规则基于预设的基准测试程序来确定。
8.一种指令调度装置,其特征在于,包括:
第一处理模块,用于将测试数据输入至编译器进行编译,得到编译数据;确定所述编译数据中各指令的执行耗时对应的属性;基于所述各指令的执行耗时对应的属性,更新所述编译器包括的微架构模型;重复执行所述将测试数据输入至编译器进行编译,得到编译数据、所述确定所述编译数据中各指令的执行耗时对应的属性、以及所述基于所述各指令的执行耗时对应的属性,更新所述编译器包括的微架构模型,直至当所述编译器满足预设评分规则,则得到更新后的微架构模型;
第二处理模块,用于基于所述更新后的微架构模型,对所述各指令进行调度,以使全部指令的执行总耗时小于预设时间阈值。
9.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111518259.1A CN114265593B (zh) | 2021-12-09 | 2021-12-09 | 指令调度方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111518259.1A CN114265593B (zh) | 2021-12-09 | 2021-12-09 | 指令调度方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114265593A true CN114265593A (zh) | 2022-04-01 |
CN114265593B CN114265593B (zh) | 2022-11-22 |
Family
ID=80827190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111518259.1A Active CN114265593B (zh) | 2021-12-09 | 2021-12-09 | 指令调度方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114265593B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707927A (zh) * | 2011-04-07 | 2012-10-03 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
CN103098026A (zh) * | 2010-07-13 | 2013-05-08 | 艾尔葛托奇普股份有限公司 | 集成电路的系统、架构和微架构(sama)表达方式 |
EP3343392A1 (en) * | 2016-12-31 | 2018-07-04 | INTEL Corporation | Hardware accelerator architecture and template for web-scale k-means clustering |
CN108846248A (zh) * | 2018-08-27 | 2018-11-20 | 中国科学院计算技术研究所 | 一种应用建模及性能预测方法 |
CN110780879A (zh) * | 2019-10-29 | 2020-02-11 | 南京星环智能科技有限公司 | 一种基于智能编译技术的决策执行方法、装置、设备及介质 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
CN112527477A (zh) * | 2019-09-19 | 2021-03-19 | 英特尔公司 | 用于动态调整处理器特征的技术 |
-
2021
- 2021-12-09 CN CN202111518259.1A patent/CN114265593B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103098026A (zh) * | 2010-07-13 | 2013-05-08 | 艾尔葛托奇普股份有限公司 | 集成电路的系统、架构和微架构(sama)表达方式 |
CN102707927A (zh) * | 2011-04-07 | 2012-10-03 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
EP3343392A1 (en) * | 2016-12-31 | 2018-07-04 | INTEL Corporation | Hardware accelerator architecture and template for web-scale k-means clustering |
CN108846248A (zh) * | 2018-08-27 | 2018-11-20 | 中国科学院计算技术研究所 | 一种应用建模及性能预测方法 |
CN112527477A (zh) * | 2019-09-19 | 2021-03-19 | 英特尔公司 | 用于动态调整处理器特征的技术 |
CN110780879A (zh) * | 2019-10-29 | 2020-02-11 | 南京星环智能科技有限公司 | 一种基于智能编译技术的决策执行方法、装置、设备及介质 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
Non-Patent Citations (1)
Title |
---|
姚文军等: "基于神威太湖之光的NAMD软件的移植与优化", 《计算机工程与科学》 * |
Also Published As
Publication number | Publication date |
---|---|
CN114265593B (zh) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7270764B2 (ja) | 人工知能チップ検証 | |
CN105701008B (zh) | 用于测试用例生成的系统和方法 | |
US10839312B2 (en) | Warning filter based on machine learning | |
US10360322B2 (en) | Simulation of virtual processors | |
CN110287702B (zh) | 一种二进制漏洞克隆检测方法及装置 | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
CN112948828A (zh) | 一种二进制程序恶意代码检测方法、终端设备及存储介质 | |
JP5514211B2 (ja) | 分岐オーバーライドを用いたプロセッサ実行のシミュレーション | |
CN114265593B (zh) | 指令调度方法、装置、设备及计算机可读存储介质 | |
US9442826B2 (en) | Kernel functionality checker | |
CN116149917A (zh) | 评估处理器性能的方法及装置、计算设备、可读存储介质 | |
CN110210046B (zh) | 应用程序及专用指令集处理器一体化敏捷设计方法 | |
JP6723483B2 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
CN113806231A (zh) | 一种代码覆盖率分析方法、装置、设备和介质 | |
CN115951936B (zh) | 向量化编译程序的芯片适配方法、装置、设备及介质 | |
JP2004030514A (ja) | 性能解析方法 | |
CN117290257B (zh) | 一种基于插件调用的软件生命周期规范化管理方法及系统 | |
CN117313595B (zh) | 用于功能验证的随机指令生成方法、设备及系统 | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
US20220114083A1 (en) | Methods and apparatus to generate a surrogate model based on traces from a computing unit | |
EP4131011A1 (en) | Methods and apparatus to generate a surrogate model based on traces from a computing unit | |
EP3547141B1 (en) | Information processing apparatus, information processing method, and information processing program | |
Sedlacek et al. | Software Tests Quality Evaluation Using Code Mutants | |
US20120227033A1 (en) | Method and apparatus for evaluating software performance | |
CN112988145A (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 | ||
CB02 | Change of applicant information |
Address after: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Beijing Applicant after: Beijing yisiwei Computing Technology Co.,Ltd. Address before: 100176 Room 101, 1f, building 3, yard 18, Kechuang 10th Street, Beijing Economic and Technological Development Zone, Beijing Applicant before: Beijing yisiwei Computing Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |