CN116225440A - 确定执行成本的方法和装置 - Google Patents

确定执行成本的方法和装置 Download PDF

Info

Publication number
CN116225440A
CN116225440A CN202211347690.9A CN202211347690A CN116225440A CN 116225440 A CN116225440 A CN 116225440A CN 202211347690 A CN202211347690 A CN 202211347690A CN 116225440 A CN116225440 A CN 116225440A
Authority
CN
China
Prior art keywords
instructions
execution cost
instruction
cost
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.)
Pending
Application number
CN202211347690.9A
Other languages
English (en)
Inventor
尼兰詹·哈萨布尼斯
贾斯汀·戈特施利希
杰斯敏·贾汗·提奇
阿南德·文卡特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN116225440A publication Critical patent/CN116225440A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

公开了确定执行成本的方法、装置、系统和制品。一种示例装置包括存储器;该装置中包括的指令;以及处理器电路,用来执行指令以:使得与助记符相对应的多个指令被执行;确定多个指令的平均执行成本;确定多个指令的执行成本的标准偏差;并且生成包括条目的映射表,该条目包括与平均值和标准偏差相关联的助记符。

Description

确定执行成本的方法和装置
技术领域
本公开概括而言涉及计算系统,更具体而言,涉及确定执行成本的方法和装置。
背景技术
需要处理器资源来执行指令,以执行一个或多个任务。执行指令所需要的处理器资源的量与指令的执行成本相对应。执行成本可以对应于执行程序的总周期数和/或秒数。由于不同的计算机架构的结构不同,所以为一种类型的计算机架构设计的程序对于另一种计算机架构可能具有不同的执行成本。计算系统可以使用代码的执行成本来尝试优化指令、改进指令、和/或以其他方式降低指令的执行成本。例如,机器编程在尝试基于两组指令的执行成本用高性能指令取代低性能指令时,可能依赖于执行成本。
发明内容
本公开的一个方面提供了一种基于执行成本生成映射表的装置。该装置包括:存储器;装置中包括的指令;以及处理器电路,用来执行指令以:使得与助记符相对应的多个指令被执行;确定多个指令的平均执行成本;确定多个指令的执行成本的标准偏差;并且生成包括条目的映射表,条目包括与平均值和标准偏差相关联的助记符。
本公开的另一方面提供了一种基于执行成本生成映射表的方法。该方法包括:使得与助记符相对应的多个指令被执行;通过利用一个或多个处理器执行指令,来确定多个指令的平均执行成本;通过利用一个或多个处理器执行指令,来确定多个指令的执行成本的标准偏差;并且通过利用一个或多个处理器执行指令,来生成包括条目的映射表,条目包括与平均值和标准偏差相关联的助记符。
本公开的另一方面提供了一种机器可读介质,包括代码,该代码当被执行时使得机器执行上述基于执行成本生成映射表的方法。
本公开的另一方面提供了一种设备,包括用于执行上述基于执行成本生成映射表的方法的装置。
本公开的另一方面提供了一种报告执行成本的装置。该装置包括:存储器;装置中包括的指令;以及处理器电路,用来执行指令以:识别来自程序的指令的助记符;基于助记符来确定指令的最大执行成本和最小执行成本;基于指令的最大执行成本和最小执行成本中的至少一者来确定程序的平均执行成本;并且报告程序的平均执行成本。
本公开的另一方面提供了一种报告执行成本的方法。该方法包括:识别来自程序的指令的助记符;基于助记符来确定指令的最大执行成本和最小执行成本;基于指令的最大执行成本和最小执行成本中的至少一者来确定程序的平均执行成本;并且报告程序的平均执行成本。
本公开的另一方面提供了一种机器可读介质,包括代码,该代码当被执行时使得机器执行上述报告执行成本的方法。
本公开的另一方面提供了一种设备,包括用于执行上述报告执行成本的方法的装置。
附图说明
图1是结合本文公开的示例用于确定执行成本的示例环境。
图2是图1的执行成本映射表确定电路和基本块执行成本确定电路的实现方式的框图。
图3A和3B图示了代表可被示例处理器电路执行来实现图2的执行成本映射表确定电路的示例机器可读指令的流程图。
图4图示了代表可被示例处理器电路执行来实现图2的基本块执行成本确定电路的示例机器可读指令的流程图。
图5是包括被构造来执行图3A、图3B和/或图4的示例机器可读指令以实现图1的示例计算设备的处理器电路的示例处理平台的框图。
图6是图5的处理器电路的示例实现方式的框图。
图7是图5的处理器电路的另一示例实现方式的框图。
图8是示例软件分发平台(例如,一个或多个服务器)的框图,该示例软件分发平台用于将软件(例如,与图3A、图3B和/或图4的示例机器可读指令相对应的软件)分发到与最终用户和/或消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、再销售、许可和/或次级许可)和/或原始设备制造商(OEM)(例如,用于包括在要被分发到例如零售商和/或诸如直接购买客户之类的其他最终用户的产品中)相关联的客户端设备。
具体实施方式
附图不是按比例的。相反,在附图中可放大层或区域的厚度。如本文所使用的,对连接的提及(例如,附着、耦合、连接、接合)可包括由该对连接的提及所提及的元素之间的中间构件和/或这些元素之间的相对运动,除非另有指示。因此,对连接的提及不一定推理出两个元素是直接连接的和/或彼此之间有固定关系。如本文所使用的,叙述任何部件与另一部件“接触”,被定义为意指在这两个部件之间没有中间部件。
除非另有具体声明,否则本文使用诸如“第一”、“第二”、“第三”等等之类的描述语,而不输入或以其他方式指示出任何优先级、物理顺序、在列表中的排列和/或以任何方式排序的含义,而只是用作标签和/或任意名称来区分元素,以便易于理解所公开的示例。在一些示例中,描述语“第一”在详细描述中可用于提及某一元素,而同一元素在权利要求中可以用不同的描述语来提及,例如“第二”或“第三”。在这种情况下,应当理解,这种描述语仅仅用于明确地标识那些元素,这些元素例如可能在其他情况下共享同一名称。如本文所使用的,“大致”和“大约”指的是由于制造容差和/或其他现实世界不完美而可能不确切的尺寸。如本文所使用的,“基本上实时”指的是以近乎瞬时的方式发生,承认现实世界中可能存在计算时间、传输等等方面的延迟。从而,除非另有指明,否则“基本上实时”指的是实时+/-1秒。如本文所使用的,短语“与……通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
如本文所使用的,“处理器电路”被定义为包括(i)一个或多个专用电气电路,其被构造为执行(一个或多个)特定的操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件),和/或(ii)一个或多个通用的基于半导体的电气电路,其被用指令编程以执行特定操作,并且包括一个或多个基于半导体的逻辑器件(例如,由一个或多个晶体管实现的电气硬件)。处理器电路的示例包括编程的微处理器、可实例化指令的现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器单元(Central Processor Unit,CPU)、图形处理器单元(Graphics Processor Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、XPU、或者微控制器和集成电路,例如专用集成电路(Application Specific Integrated Circuit,ASIC)。例如,XPU可以由异构计算系统实现,该计算系统包括多种类型的处理器电路(例如,一个或多个FPGA、一个或多个CPU、一个或多个GPU、一个或多个DSP,等等,和/或这些的组合)以及(一个或多个)应用编程接口(application programming interface,API),这些API可以将(一个或多个)计算任务指派给该多种类型的处理电路中最适于执行该(一个或多个)计算任务的任何一个(或多个)。
在许多不同的应用中(例如,代码优化、硬件设计(例如,编译器)、软件设计(例如,二进制转译器)、代码推荐系统、云或集群上的调度器,等等),准确高效地确定程序的成本(例如,完成程序的时钟周期和/或秒的总数)是可取的。例如,编译器后端可以通过依赖对执行成本的估计来选择指令。为了确定指令的执行成本,一些技术简单地在实际硬件上执行它们。然而,这种技术是昂贵和耗时的。其他技术已被用来使用模型和/或其他工具估计执行成本。然而,这种技术可能是不准确的和/或要求大量的维护开销。一些技术使用人工智能(artificial intelligence,AI)来预测一组指令的执行成本。虽然这种技术是准确的,但这种技术是计算密集型的,而且,基于AI的技术不提供对结果的解释。因此,基于AI的技术确定代码对应于执行成本的原因是未知的。
本文公开的示例开发了一种方法,它是准确的、可解释的并且使用比上述技术更少的处理器资源来执行。本文公开的示例包括服务器,该服务器开发了特定于架构的映射表,该映射表将转换后的指令(例如,基于指令行的前导助记符和/或功能的指令抽象)映射到平均执行成本和标准偏差成本。使用本文公开的示例,服务器可以从存储装置(例如,开源存储库、众包存储库、闭源存储库、本地存储装置、外部存储装置、本地数据库、外部数据库,等等)获得程序和/或基本代码块,执行代码行以识别与代码行的功能和/或助记符相对应的执行成本,并且将助记符映射到平均执行成本和执行成本的标准偏差。例如,本文公开的示例可以识别以助记符“add”开始的指令的10个实例,在与特定架构相对应的CPU上执行这10个实例,并且确定执行该指令所需要的平均周期为3,标准偏差为1。以这种方式,本文公开的示例将助记符“add”映射到“3”平均值和“1”标准偏差。如本文所使用的,基本块是指令或程序的序列,其中控制按顺序流过该序列。
在映射了阈值数目的程序和/或代码块之后,本文公开的示例可以将映射表部署到网络内的计算设备,这些计算设备可能与或不与特定的计算机架构相对应。以这种方式,计算系统可以通过以下方式使用映射来估计与基本块相对应的程序的执行成本:识别程序的每一行的助记符,并且使用映射表确定执行成本的相应平均值和/或标准偏差,从而要求的资源和时间远远少于上述技术。在一些示例中,部署期间计算设备的架构可能与映射表的架构不同。此外,映射表逐行地为程序的成本提供推理和/或解释能力。
图1是结合本文公开的示例描述的示例环境100的框图。示例环境100包括示例服务器102、示例执行成本映射表确定电路104、(一个或多个)示例架构特定CPU 105、示例网络106、示例计算设备108、示例映射表存储装置112、示例CPU 114、以及示例基本块执行成本确定电路116。
图1的(一个或多个)示例服务器102可以是生成映射表的(一个或多个)服务器和/或(一个或多个)任何其他计算设备。示例服务器103可以访问存储在本地或外部的代码块(例如,存储在本地或外部的代码存储库/存储装置/数据库)。在获得代码块之后,示例执行成本映射表确定电路104处理代码块以生成映射表,该映射表将执行成本的平均值和标准偏差与指令行的助记符和/或功能链接起来。如下面进一步描述的,执行成本映射表确定电路104处理代码块的行,并且通过抽象出具体的数值和/或寄存器值来生成助记符。以这种方式,与同一助记符相对应的指令由一个或多个架构特定CPU 105执行,并且执行成本被识别。在一些示例中,服务器102和计算设备108的架构是不同的。例如,计算设备108可以是客户端设备,其具有针对第一架构的CPU,但是正在使用针对第二架构的映射表优化为第二架构编写的程序。这可能发生,因为编译器可以支持交叉编译模式,其中在第二架构上运行的编译器可以生成或者优化为第一架构编写的程序。对与同一助记符相对应的每条指令的执行成本进行平均,并且计算标准偏差。助记符与相应的平均值和标准差一起被存储在映射表中。以这种方式,计算设备108可以使用映射表中的条目来基于包括与助记符相对应的代码行的程序来估计执行成本。
因为同一指令的执行成本对于不同的架构可能是不同的,所以图1的示例服务器102包括不同的(一个或多个)架构特定CPU 105,以根据不同的特定架构来执行代码。(一个或多个)架构特定CPU 105执行代码并且输出与所执行的代码相对应的执行成本。例如,(一个或多个)架构特定CPU 105充当驱动器程序,该驱动器程序在具体的汇编指令周围有必要的样板代码,以在循环中执行个体指令来达到稳定状态(例如,100次迭代),并且基于迭代测量执行成本。以这种方式,执行成本映射表确定电路104可以开发可被部署到计算设备的架构特定映射表。下面结合图2进一步描述示例执行成本映射表确定电路104。
图1的示例网络106是交换数据的互连系统的系统。可以使用任何类型的公共或私有网络来实现示例网络106,例如但不限于互联网、电话网络、局域网(local areanetwork,LAN)、线缆网络、和/或无线网络。为了使得能够经由网络106进行通信,(一个或多个)示例服务器102和/或计算设备108包括通信接口,该通信接口使得能够连接到以太网、数字订户线(digital subscriber line,DSL)、电话线、同轴线缆、或者任何无线连接,等等。在一些示例中,(一个或多个)服务器102和示例计算设备108经由示例网络106连接。
图1的示例计算设备108从服务器102(例如,经由网络106)获得所确定的映射表,并且使用映射表来估计程序的执行成本。示例计算设备108可以是服务器、基于边缘的设备、基于云的设备、物联网(internet of thing,IoT)设备、计算机、移动设备、平板设备、和/或任何其他类型的计算设备。示例计算设备108包括示例网络接口110,以经由网络106从服务器102获得与计算设备108的架构相对应的所确定的映射表。获得的映射表被存储在示例计算设备108的映射表存储装置112中。此外,网络接口110可以获得映射表更新和/或替换。在这样的示例中,更新和/或替换被用来更新存储在示例映射表存储装置112中的映射表。
图1的示例CPU 114执行指令(例如,程序和/或代码)以执行一个或多个任务。在一些示例中,CPU 114可以指示基本块执行成本确定电路116来确定程序、代码块和/或指令的成本。图1的基本块执行成本确定电路116通过如下方式来确定成本:逐行遍历代码,并且利用存储在示例映射表存储装置112中的映射表基于与该行的助记符相对应的执行成本和标准偏差确定每行代码的执行成本的范围。例如,当基本块执行成本确定电路116处理一行代码时,成本确定电路确定该行代码的助记符和/或功能部分(例如,“add”、“div”、“store”,等等)。在获得助记符之后,基本块执行成本确定电路116访问映射表存储装置112中的映射表,以识别所确定的助记符的平均值和标准偏差。示例基本块执行成本确定电路116基于平均值和标准偏差确定执行成本的最大值和最小值。在确定了每一行的最大和最小执行成本之后,示例基本块执行成本确定电路116基于最大和最小执行成本确定代码的平均执行成本和标准偏差成本。如果基本块执行成本确定电路116无法将所确定的助记符与映射表中的助记符相匹配,则基本块执行成本确定电路116可以基于当前值(例如,跨越映射表的各助记符的平均执行成本的均值、中位数或者模式和/或标准偏差执行成本的均值、中位数或者模式)确定该行代码的平均值和标准偏差。下面结合图2进一步描述示例基本块执行成本确定电路116。
图2是图1的示例执行成本映射表确定电路104和示例基本块执行成本确定电路116的示例实现方式的框图。示例执行成本映射表确定电路104包括示例网络接口200、(一个或多个)示例架构特定编译器202、示例指令转换器电路204、示例配对存储装置206、示例成本确定电路208、以及示例组件接口210。示例基本块执行成本确定电路116包括示例组件接口212、示例指令转换电路214、示例成本估计电路216、以及示例计算电路218。
图2的示例网络接口200经由网络106将映射表发送到(一个或多个)计算设备(例如,计算设备108)。在一些示例中,网络接口200从一个或多个外部存储库、存储装置和/或数据库获得指令、代码、程序和/或基本块。
(一个或多个)示例架构特定编译器202将高级别代码编译成与目标架构相对应的汇编代码。(一个或多个)示例架构特定编译器202可以是单个编译器,用于将高级别代码编译成多个架构,或者可以是多个编译器(例如,用于第一架构的第一编译器,用于第二架构的第二编译器,等等)。(一个或多个)示例架构特定编译器202可以是GNU编译器集合(GNUcompiler collection,GCC)、
Figure BDA0003918897430000081
C++编译器(/>
Figure BDA0003918897430000082
C++Compiler,ICC)、低级别虚拟机(low level virtual machine,LLVM),等等,其使用编译器选项的不同排列组合(例如,-O2、-march=T,等等)来编译输入程序。此外,(一个或多个)示例架构特定编译器202可以转换生成文件(makefile)中的指令(例如,如果可用的话)。
图2的示例指令转换器电路204将汇编代码的行转换为助记符和操作对象。例如,指令转换器电路204可以将“add$2,%rax”转换成“add”和“$2,%rax”。在转换成助记符和操作对象之后,示例指令转换器电路204通过移除与数字和/或寄存器(register)相对应的值和/或变量来抽象指令,并且用与值类型相对应的令牌来替换它们。例如,包括数值常数的操作对象将被替换为与数值类型(例如,整数、实数、布尔值,等等)相对应的令牌,并且与寄存器相对应的操作对象将被替换为与寄存器相对应的令牌。此外,示例指令转换器电路204将汇编指令与相应的抽象配对,并且将该配对存储在示例配对存储装置206中。在一些示例中,在存储到配对存储装置206之前,示例指令转换器电路204确定如果配对和/或抽象和令牌已经被存储在配对存储装置206中,则指令转换器电路204可以丢弃该配对(例如,因为在确定执行成本信息时,重复的指令可能不会向存储的配对添加多样性)。示例指令转换器电路204可以继续处理额外的输入程序,直到在示例配对存储装置206中存储了阈值数目的配对为止。该阈值可基于用户和/或制造商偏好。
图2的示例成本确定电路208访问示例配对存储装置206以访问一个或多个存储的配对。示例成本确定电路208可以基于抽象来识别与同一助记符(例如,具有不同操作对象)相对应的配对。成本确定电路208将与同一助记符相对应的配对(例如,经由组件接口210)发送到架构特定CPU 105(例如,对应于与架构特定编译器202的架构相对应的特定架构)并且(例如,经由组件接口210)获得每个指令的执行成本。示例成本确定电路208确定与同一助记符相对应的多个指令的执行成本的平均值和标准偏差。在确定了与助记符相对应的平均值和标准偏差之后,成本确定电路208为映射表生成条目,以包括助记符和对应的平均值和标准偏差成本。
图2的示例组件接口210把要执行的指令发送给(一个或多个)示例架构特定CPU105。此外,示例组件接口210从(一个或多个)架构特定CPU 105获得执行指令的执行成本。在一些示例中,组件接口210可以从服务器102的内部存储装置(例如,当服务器102包括存储装置、一个或多个数据库和/或一个或多个包括代码的存储库时)获得高级别指令、代码和/或基本块。
图2的示例基本块执行成本确定电路116的示例组件接口212从示例映射表存储装置112访问映射表。如上所述,计算设备108的网络接口110从服务器102获得映射表,并且将映射表存储到示例映射表存储装置112中。此外,示例组件接口212可以从示例CPU 114获得确定程序的执行成本的指令。示例组件接口212获得汇编语言的基本块、程序和/或代码以确定执行成本。在确定执行成本之后,示例组件接口212将执行成本发送给示例CPU 114或另一设备。
图2的示例指令转换电路214将获得和/或确定的汇编语言代码转换为个体行。在一些示例中,CPU 114包括编译器,来将高级别语言转换成汇编语言。在代码被分解成个体指令之后,示例指令转换电路214识别个体指令的助记符(例如,功能)。例如,指令转换电路214可以从指令“div$2”识别出助记符“div”。
示例成本估计电路216处理基本块、代码和/或程序的助记符,以确定基本块、代码和/或程序的执行成本和/或基本块、代码和/或程序的标准偏差。例如,对于与“mov”助记符相对应的指令,成本估计电路216访问映射表以识别助记符“mov”的条目。在识别了相应的条目之后,成本估计电路216从映射表确定该助记符的相应执行成本平均值(例如,也被称为范围平均值,Ravg)和执行成本标准偏差(例如,也被称为范围标准偏差,Rstdev)。如果指令的助记符不被包括在映射表中,则示例成本估计电路216可以使用执行成本平均值和执行标准偏差的预设值。在一些示例中,成本估计电路216基于来自映射表的各助记符的平均执行成本和平均标准偏差来选择预设值。
图2的示例计算电路218使用程序、代码和/或基本块的指令的平均执行成本和执行成本的标准偏差来计算程序的执行成本(例如,也被称为范围求和)和程序的执行成本的标准偏差。例如,计算电路218可以使用以下等式1确定特定指令的最小执行成本和/或成本范围,使用以下等式2确定特定指令的最大执行成本和/或成本范围,并且使用以下等式3确定程序的执行成本(例如,范围求和)(例如,程序、代码和/或基本块的指令的平均成本之和)。
min(R)=Ravg-Rstdev(等式1)
max(R)=Ravg+Rstdev(等式2)
range_summation(R1,..,Rn)=R1+R2+…+Rn (等式3)
在上述等式1-3中,Ravg是指令的平均执行成本,并且Rstdev是执行成本的标准偏差。因为标准偏差可以提供范围求和中不包括的有价值信息,所以示例计算电路218还计算程序、代码和/或基本块的指令的最小执行成本和最大执行成本的标准偏差,如以下等式4中所示。
standard_deviation(R1,..,Rn)=σ(min(R1),..,min(Rn),max(R1),..,max(Rn))(等式4)
示例计算电路218使用示例组件接口212将程序、代码和/或基本块的执行成本和标准偏差发送给CPU 114和/或其他组件/设备。
在一些示例中,计算成本映射表确定电路104包括用于识别的装置、用于生成的装置、以及用于转换的装置。例如,用于识别的装置可以由指令转换器电路204实现,用于生成的装置可以由成本确定电路208实现,并且用于转换的装置可以由指令转换器电路204或者(一个或多个)架构特定编译器202实现。在一些示例中,(一个或多个)架构特定编译器202、指令转换器电路204和/或成本确定电路208可以由处理器电路实例化,例如图5的示例处理器电路512。例如,(一个或多个)架构特定编译器202、指令转换器电路204和/或成本确定电路208可以通过图6的示例通用处理器电路600执行机器可执行指令来实例化,例如由至少图3A和/或3B的块实现的指令。在一些示例中,(一个或多个)架构特定编译器202、指令转换器电路204和/或成本确定电路208可以由硬件逻辑电路来实例化,该硬件逻辑电路可由被构造为执行与机器可读指令相对应的操作的图7的ASIC或FPGA电路700来实现。额外地或者替代地,(一个或多个)架构特定编译器202、指令转换器电路204和/或成本确定电路208可以由硬件、软件和/或固件的任意其他组合来实例化。额外地或者替代地,(一个或多个)架构特定编译器202、指令转换器电路204和/或成本确定电路208可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
在一些示例中,基本块执行成本确定电路116包括用于识别的装置、用于查找的装置、以及用于选择的装置、用于确定的装置、和/或用于报告的装置。例如,用于识别的装置可以由指令转换电路214实现,用于查找的装置可以由成本估计电路216实现,并且用于选择的装置、用于确定的装置和/或用于报告的装置可以由计算电路218实现。在一些示例中,指令转换电路214、成本估计电路216和/或计算电路218可以由处理器电路实例化,例如图5的示例处理器电路512。例如,指令转换电路214、成本估计电路216和/或计算电路218可以通过图6的示例通用处理器电路600执行机器可执行指令(例如由至少图4的块实现的指令)来实例化。在一些示例中,指令转换电路214、成本估计电路216和/或计算电路218可以由硬件逻辑电路来实例化,该硬件逻辑电路可由被构造为执行与机器可读指令相对应的操作的图7的ASIC或FPGA电路700来实现。额外地或者替代地,指令转换电路214、成本估计电路216和/或计算电路218可以由硬件、软件和/或固件的任意其他组合来实例化。额外地或者替代地,指令转换电路214、成本估计电路216和/或计算电路218可以由至少一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、专用集成电路(ASIC)、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现,这些硬件电路被构造为执行一些或所有机器可读指令和/或执行与机器可读指令相对应的一些或所有操作,而不执行软件或固件,但其他结构也同样是适当的。
虽然在图2中图示了实现图1的执行成本映射表确定电路104和/或基本块执行成本确定电路116的示例方式,但图2中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。另外,图1-图2的示例网络接口200、(一个或多个)示例架构特定编译器202、示例指令转换器电路204、示例成本确定电路208、示例组件接口210、212、示例指令转换电路214、示例成本估计电路216、示例计算电路218,和/或更概括而言,执行成本映射表确定电路104和/或基本块执行成本确定电路116,可以通过硬件、软件、固件和/或硬件、软件和/或固件的任意组合来实现。从而,例如,图1-图2的示例网络接口200、(一个或多个)示例架构特定编译器202、示例指令转换器电路204、示例成本确定电路208、示例组件接口210、212、示例指令转换电路214、示例成本估计电路216、示例计算电路218和/或更概括而言执行成本映射表确定电路104和/或基本块执行成本确定电路116中的任何一者,可以由处理器电路、(一个或多个)模拟电路、(一个或多个)数字电路、(一个或多个)逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程微控制器、(一个或多个)图形处理单元(GPU)、(一个或多个)数字信号处理器(DSP)、(一个或多个)专用集成电路(ASIC)、(一个或多个)可编程逻辑器件(programmable logic device,PLD)和/或(一个或多个)现场可编程逻辑器件(field programmable logic device,FPLD)(例如现场可编程门阵列(FPGA))来实现。当读到本专利的任何装置或系统权利要求覆盖纯软件和/或固件实现方式时,图1-图2的执行成本映射表确定电路104和/或基本块执行成本确定电路116中的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(digital versatile disk,DVD)、致密盘(compact disk,CD)、蓝光盘,等等。此外,图1-图2的执行成本映射表确定电路104和/或基本块执行成本确定电路116可包括除了图1-图2中所示的那些以外或者取代图1-图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。
在图3A、图3B和/或图4中示出了代表用于实现执行成本映射表确定电路104和/或基本块执行成本确定电路116的示例硬件逻辑电路、机器可读指令、硬件实现状态机和/或这些的任意组合的流程图。机器可读指令可以是供处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述处理器电路例如是下文联系图5论述的示例处理器平台500中所示的处理器电路512和/或下文联系图5论述的示例处理器电路。该程序可以体现在存储于与位于一个或多个硬件设备中的处理器电路相关联的一个或多个非暂态计算机可读存储介质上的软件中,所述一个或多个非暂态计算机可读存储介质例如是CD、软盘、硬盘驱动器(hard disk drive,HDD)、DVD、蓝光盘、易失性存储器(例如,任何类型的随机访问存储器(Random Access Memory,RAM),等等)或者非易失性存储器(例如,FLASH存储器、HDD,等等),但整个程序和/或其一部分或者也可以由除了处理器电路以外的一个或多个硬件设备执行和/或体现在固件或专用硬件中。机器可读指令可以分布在多个硬件设备上和/或由两个或更多个硬件设备(例如,服务器和客户端硬件设备)执行。例如,客户端硬件设备可以由端点客户端硬件设备(例如,与用户相关联的硬件设备)或中间客户端硬件设备(例如,可促进服务器和端点客户端硬件设备之间的通信的无线电接入网络(radioaccess network,RAN)网关)实现。类似地,非暂态计算机可读存储介质可包括位于一个或多个硬件设备中的一个或多个介质。另外,虽然是参考图3A、图3B和/或图4中所示的流程图来描述示例程序的,但可替代地使用实现图1-图2的执行成本映射表确定电路104和/或基本块执行成本确定电路116的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或者组合。额外地或者替代地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,处理器电路、分立的和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。处理器电路可以分布在不同的网络位置中和/或在以下项的本地:单个机器中的一个或多个硬件设备(例如,单核处理器(例如,单核中央处理器单元(CPU))、多核处理器(例如,多核CPU),等等)、分布在服务器机架的多个服务器上的多个处理器、分布在一个或多个服务器机架上的多个处理器、位于同一封装中(例如,同一集成电路(IC)封装或者两个或更多个单独的外壳中,等等)的CPU和/或FPGA。
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等等中的一种或多种格式来存储本文描述的机器可读指令。本文描述的机器可读指令可被存储为可被利用来创建、制造和/或产生机器可执行指令的数据或数据结构(例如,存储为指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分段并被存储在位于网络或者网络集合的相同或不同位置的一个或多个存储设备和/或计算设备(例如,服务器)上(例如,在云中、在边缘设备中,等等)。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密和/或存储在分开的计算设备上,其中这些部分当被解密、解压缩和/或组合时,形成实现可一起形成例如本文所述那种的程序的一个或多个操作的一组机器可执行指令。
在另一示例中,机器可读指令可被以如下状态存储:在该状态中,它们可被处理器电路读取,但要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发套件(software development kit,SDK)、应用编程接口(application programminginterface,API)等等,以便在特定的计算设备或其他设备上执行这些机器可读指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,本文使用的机器可读介质可包括机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在静止或在途时的特定格式或状态如何。
本文描述的机器可读指令可以由任何过去、当前或者未来的指令语言、脚本语言、编程语言等等来表示。例如,可以利用以下语言中的任何一种来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超本文标记语言(HyperText Markup Language,HTML)、结构化查询语言(Structured Query Language,SQL)、Swift,等等。
如上所述,可利用存储在一个或多个非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图3A、图3B和图4的示例操作,所述介质例如是光存储设备、磁存储设备、HDD、闪存、只读存储器(read-only memory,ROM)、CD、DVD、缓存、任何类型的RAM、寄存器、和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、用于简短实例、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。如本文所使用的,术语非暂态计算机可读介质和非暂态计算机可读存储介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为前序部分或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。如本文所使用的,当短语“至少”在例如权利要求的前序部分中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如A、B和/或C这样的形式使用时,指的是A、B、C的任意组合或子集,例如(1)单独A,
(2)单独B,(3)单独C,(4)A与B,(5)A与C,(6)B与C,或者(7)A与B以及与C。就本文在描述结构、组件、项目、C和/或事物的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。类似地,就本文在描述结构、组件、项目、物体和/或事物的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:
(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,或者(3)至少一个A和至少一个B。
如本文所使用的,单数指代(例如,“一”、“第一”、“第二”,等等)并不排除多数。如本文所使用的,术语“一”或“一个”物体指的是一个或多个该物体。术语“一”、“一个或多个”和“至少一个”在本文中是可互换使用的。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如同一实体或物体来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
图3A和3B图示了代表示例机器可读指令和/或示例操作300的流程图,该示例机器可读指令和/或示例操作可由处理器电路(例如,图2的示例执行成本映射表确定电路104)执行和/或实例化,来确定开发架构特定的映射表以提供给与特定架构相对应的计算设备。指令在块302开始,此时(一个或多个)架构特定编译器202确定是否已获得程序、代码和/或基本块(例如,对于外部数据经由网络接口200,和/或对于内部数据经由组件接口210)。
在块304,(一个或多个)示例架构特定编译器202将程序、代码和/或基本块转换为汇编语言。在块306,示例指令转换器电路204从程序、代码和/或基本块的汇编语言选择第一指令(例如,汇编指令的第一行)。在块308,示例指令转换器电路204将汇编语言的指令转换为助记符和操作对象。
在块310,示例指令转换器电路204确定操作对象是否对应于(一个或多个)数值常数。例如,操作对象是否包括数字值或者与数字常数相对应的值。如果示例指令转换器电路204确定操作对象不对应于数值常数(块310:“否”),则控制继续到块314。如果示例指令转换器电路204确定操作对象对应于数值常数(块310:“是”),则指令转换器电路204通过将与数值常数相对应的数字或变量替换为与常数类型(例如,整数、布尔值、短、长、浮点,等等)相对应的令牌,来生成转换后的指令(例如,指令的抽象)(块312)。以这种方式,具体的数值数字被抽象为一般数字类型。
在块314,示例指令转换器电路204确定操作对象是否对应于寄存器操作(例如,值将被访问、存储,等等)。如果示例指令转换器电路204确定操作对象不对应于寄存器(块314:“否”),则指令继续到块318。如果示例指令转换器电路204确定操作对象对应于寄存器(块314:“是”),则示例指令转换器电路204通过将与寄存器相对应的值替换为与寄存器相对应的令牌来生成转换后的指令(例如,指令的抽象)(块316)。以这种方式,具体的寄存器号被抽象为一般的寄存器令牌。
在块318,示例指令转换器电路204将指令与转换后的(例如,抽象)指令配对。在块320,示例指令转换器电路204确定该配对是否已经被存储在示例配对存储装置206中(例如,为了防止存储重复的配对)。在一些示例中,指令转换器电路204确定指令的抽象,而不是完整的配对,是否已经被存储在示例配对存储装置206中。如果示例指令转换器电路204确定配对已经被包括在配对存储装置206中(块320:“是”),则该配对被丢弃并且控制继续到块322。如果示例指令转换器电路204确定配对不是已经被包括在配对存储装置206中(块320:“是”),则示例指令转换器电路204将该配对存储在示例配配对存储装置206中(块322)。
在块324,示例指令转换器电路204确定配对存储装置206是否包括阈值数目的配对(例如,条目)。存储在示例配对存储装置206中的配对越少,映射表就会越不稳健(例如,条目就越少,并且执行成本信息可能就越不准确),而配对越多,需要的资源、时间和输入数据就越多。因此,用户和/或制造商可以定义条目的阈值以平衡稳健性与时间、资源和/或输入数据。如果示例配对存储装置206不包括阈值数目的配对(例如,不满足阈值)(块324:“否”),则控制返回到块302,以处理额外的程序、代码和/或基本块。如果示例配对存储装置206包括阈值数目的配对(例如,满足阈值)(块324:“是”),则示例成本确定电路208访问与第一助记符相对应的(一个或多个)指令(图3B的块326)。
在块328,示例成本确定电路208选择所访问的(一个或多个)指令中的第一指令。在块330,示例成本确定电路208指示CPU 105执行所选指令。例如,成本确定电路208可以经由组件接口210将指令发送到示例CPU 105。如上所述,示例CPU 105可以执行该指令一次或多次,以确定该指令的执行成本。在指令被执行一次或多次之后,CPU 105经由组件接口210向成本确定电路208提供指令的执行成本。在块332,示例成本映射电路经由组件接口210从CPU 105获得指令的执行成本。
在块334,示例成本确定电路208确定是否存在与转换后的指令相对应的额外指令。如果成本确定电路208确定存在额外指令(块334:“是”),则示例成本确定电路208选择后续指令(块336)并且控制返回到块330以确定与所选助记符相对应的额外指令的执行成本。如果成本确定电路208确定没有额外指令(块334:“否”),则示例成本确定电路208基于与所选助记符相对应的指令的执行成本的平均值来确定执行成本平均值(块338)。
在块340,示例成本确定电路208基于所获得的与助记符相对应的指令的执行成本来确定执行成本标准偏差。在块342,示例成本确定电路208在映射表中添加用于将助记符映射到执行成本平均值和标准偏差的条目。对于第一条目,示例成本确定电路208生成具有该单个条目的映射表。对于后续条目,示例成本映射电路将条目添加到先前生成的映射表中。在块344,示例成本确定电路208确定在配对存储装置206中是否有额外的助记符要被处理。如果示例成本确定电路208确定在配对存储装置206中存在额外的助记符(块344“是”),则成本确定电路208访问与后续助记符相对应的(一个或多个)指令(块346),并且控制返回到块328。如果示例成本确定电路208确定在配对存储装置206中没有额外的助记符(块344“否”),则成本确定电路208经由网络接口200将映射表部署到与架构相对应的设备(块348)。
图4的流程图代表了可由处理器电路(例如,图2的基本块执行成本确定电路116)执行和/或实例化来使用映射表确定程序、代码和/或基本块的执行成本的示例机器可读指令和/或示例操作。指令在块402开始,此时示例指令转换电路214确定是否已获得程序、代码和/或基本块(例如,经由组件接口212)。假设获得的程序、代码和/或基本块被转换和/或已被转换为汇编语言。如果获得的程序、代码和/或基本块不是汇编语言的,则示例指令转换电路214将该程序、代码和/或基本块转换为汇编语言。
如果示例指令转换电路214确定没有获得程序、代码和/或基本块(块402:“否”),则控制返回到块402。如果示例指令转换电路214确定已获得了程序、代码和/或基本块(块402:“是”),则示例指令转换电路214选择程序、代码和/或基本块的第一指令(块404)。在块406,示例指令转换电路识别所选指令的助记符和/或功能。在块408,示例成本估计电路216访问(例如,经由组件接口212)映射表存储装置112中的映射表,以尝试从映射表中找到助记符。如果示例成本估计电路216没有在映射表中找到助记符和/或功能(块410:“否”),则示例计算电路218基于指令的相应预设平均数和/或标准偏差来确定指令的最小和/或最大执行成本(块412)。例如,计算电路218选择指令的预设平均值和标准偏差,并且使用上述等式1-2来确定最小和/或最大执行成本。
如果示例成本估计电路216在映射表中找到助记符和/或功能(块410:“是”),则示例计算电路218基于映射表基于助记符的平均值和/或标准偏差确定指令的最小和/或最大执行成本(块414)。例如,计算电路218基于与映射数据的条目中的助记符相链接(例如,与之相关联地存储)的平均值和标准偏差来确定指令的平均值和标准偏差,并且使用上述等式1-2来确定最小和/或最大执行成本。在块416,示例指令转换电路214确定在所获得的程序、代码和/或基本块中是否存在额外的指令要被处理。
如果示例指令转换电路214确定在所获得的程序、代码和/或基本块中存在额外的指令(块416:“是”),则示例指令转换电路214选择后续指令(块418),并且控制返回到块406。如果示例指令转换电路214确定在所获得的程序、代码和/或基本块中没有额外的指令(块416:“否”),则示例计算电路218基于程序、代码和/或基本块的指令的执行成本平均值和/或最小和最大执行成本来确定所执行的程序的平均值和标准偏差(块420)。例如,计算电路218使用上述等式3-4来确定程序、代码和/或基本块的执行成本的平均值和标准偏差。在块422,示例计算电路218基于程序、代码和/或基本块的执行成本的平均值和标准偏差将执行成本报告给CPU 114和/或另一设备(例如,经由组件接口212)。
图5是示例处理器平台500的框图,示例处理器平台500被构造来执行和/或实例化图3A、图3B和/或图4的机器可读指令和/或操作以实现图2的执行成本映射表确定电路104和/或基本块执行成本确定电路116。处理器平台500可以例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(personal digital assistant,PDA)、互联网家电、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机(例如,增强现实(augmented reality,AR)耳机、虚拟现实(virtual reality,VR)耳机,等等)或其他可穿戴设备、或者任何其他类型的计算设备。
图示示例的处理器平台500包括处理器电路512。图示示例的处理器电路512是硬件。例如,处理器电路512可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU、DSP和/或微控制器来实现。处理器电路512可以由一个或多个基于半导体(例如,基于硅)的器件来实现。当在示例服务器102中实现处理器平台500时,处理器电路512实现(一个或多个)架构特定编译器202、指令转换器电路204、成本确定电路208、和/或组件接口210。当在示例计算设备108中实现处理器平台500时,处理器电路512实现组件接口212、指令转换电路214、成本估计电路216、以及计算电路218。
图示示例的处理器电路512包括本地存储器513(例如,缓存、寄存器,等等)。图示示例的处理器电路512通过总线518与包括易失性存储器514和非易失性存储器516的主存储器进行通信。易失性存储器514可由同步动态随机访问存储器(Synchronous DynamicRandom Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、
Figure BDA0003918897430000211
动态随机访问存储器(/>
Figure BDA0003918897430000212
Dynamic Random AccessMemory,/>
Figure BDA0003918897430000213
)和/或任何其他类型的RAM设备实现。非易失性存储器516可以由闪存和/或任何其他期望类型的存储器设备实现。对图示示例的主存储器514、516的访问受存储器控制器517控制。示例存储器513、514、516中的任何一者可以实现图1和/或图2的示例映射表存储装置112和/或示例配对存储装置206。
图示示例的处理器平台500还包括接口电路520。接口电路520可根据任何类型的接口标准由硬件实现,例如以太网接口、通用串行总线(universal serial bus,USB)接口、
Figure BDA0003918897430000214
接口、近场通信(near field communication,NFC)接口、PCI接口和/或PCIe接口。在图5中,示例接口520实现了图1的示例网络接口110和/或图2的示例网络接口200。
在图示示例中,一个或多个输入设备522连接到接口电路520。(一个或多个)输入设备522允许用户向处理器电路512中输入数据和/或命令。(一个或多个)输入设备522可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint设备和/或语音识别系统实现。
一个或多个输出设备524也连接到图示示例的接口电路520。输出设备524可以例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organiclight emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管(cathode ray tube,CRT)显示器、就地切换(in-place switching,IPS)显示器、触摸屏等等)、触觉输出设备、打印机和/或扬声器来实现。图示示例的接口电路520从而通常包括图形驱动器卡、图形驱动器芯片和/或图形处理器电路,比如GPU。
图示示例的接口电路520还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口,来促进通过网络526与外部机器(例如,任何种类的计算设备)的数据交换。通信可通过例如以太网连接、数字订户线(digital subscriberline,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统、光学连接等等进行。
图示示例的处理器平台500还包括一个或多个大容量存储设备528来存储软件和/或数据。这种大容量存储设备528的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disk,RAID)系统、固态存储设备(比如闪存设备)、以及DVD驱动器。
可由图3A、图3B和/或图4的机器可读指令实现的机器可执行指令532可被存储在大容量存储设备528中、易失性存储器514中、非易失性存储器516中、和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
图6是图5的处理器电路512的示例实现方式的框图。在这个示例中,图5的处理器电路512由微处理器600实现。例如,微处理器600可以实现多核硬件电路,例如CPU、DSP、GPU、XPU,等等。虽然它可包括任意数目的示例核心602(例如,1个核心),但此示例的微处理器600是包括N个核心的多核半导体设备。微处理器600的核心602可以独立操作,或者可以合作来执行机器可读指令。例如,与固件程序、嵌入式软件程序或软件程序相对应的机器代码可被核心602之一执行,或者可被核心602中的多个核心在相同或不同时间执行。在一些示例中,与固件程序、嵌入式软件程序或软件程序相对应的机器代码被分割成线程并且被核心602中的两个或更多个并行执行。该软件程序可以对应于图3A、3B和/或图4的流程图所表示的机器可读指令和/或操作的一部分或全部。
核心602可以通过示例总线604进行通信。在一些示例中,总线604可以实现通信总线,以实现与核心602中的一个(或多个)相关联的通信。例如,总线604可以实现集成电路间(Inter-Integrated Circuit,I2C)总线、串行外围接口(Serial Peripheral Interface,SPI)总线、PCI总线或者PCIe总线中的至少一者。额外地或者替代地,总线604可以实现任何其他类型的计算或电气总线。核心602可以通过示例接口电路606从一个或多个外部设备获得数据、指令和/或信号。核心602可以通过接口电路606向一个或多个外部设备输出数据、指令和/或信号。虽然此示例的核心602包括示例本地存储器620(例如,可被分割成L1数据缓存和L1指令缓存的第1级(L1)缓存),但微处理器600也包括可由核心共享的示例共享存储器610(例如,第2级(L2缓存)),用于高速访问数据和/或指令。可以通过向共享存储器610写入和/或从共享存储器1210读取来传送(例如,共享)数据和/或指令。每个核心602的本地存储器620和共享存储器610可以是包括多级缓存存储器和主存储器(例如,图5的主存储器514、516)的存储设备的层次体系的一部分。通常,该层次体系中的较高级别的存储器与较低级别的存储器相比表现出更低的访问时间并且具有更小的存储容量。缓存层次体系的各种级别的变化由缓存一致性策略来管理(例如,协调)。
每个核心602可被称为CPU、DSP、GPU,等等,或者任何其他类型的硬件电路。每个核心602包括控制单元电路614、算术和逻辑(arithmetic and logic,AL)电路(有时称为ALU)616、多个寄存器618、L1缓存620、以及示例总线622。其他结构也可以存在。例如,每个核心602可包括向量单元电路、单指令多数据(single instruction multiple data,SIMD)单元电路、加载/存储单元(load/store unit,LSU)电路、分支/跳转单元电路、浮点单元(floating-point unit,FPU)电路,等等。控制单元电路614包括被构造为控制(例如,协调)相应核心602内的数据移动的基于半导体的电路。AL电路616包括基于半导体的电路,其被构造为对相应核心602内的数据执行一个或多个数学和/或逻辑操作。一些示例的AL电路616执行基于整数的操作。在其他示例中,AL电路616也执行浮点操作。在另外一些示例中,AL电路616可包括执行基于整数的操作的第一AL电路和执行浮点操作的第二AL电路。在一些示例中,AL电路616可被称为算术逻辑单元(Arithmetic Logic Unit,ALU)。寄存器618是基于半导体的结构,用来存储数据和/或指令,例如由相应核心602的AL电路616执行的一个或多个操作的结果。例如,寄存器618可包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)片段寄存器、(一个或多个)机器专用寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器,等等。寄存器618可以如图6所示被安排为库组(bank)。可替代地,寄存器618可以按任何其他安排、格式或结构被组织,包括分布在整个核心602中以缩短访问时间。总线620可以实现I2C总线、SPI总线、PCI总线或PCIe总线中的至少一者。
每个核心602和/或更概括而言微处理器600可包括作为以上所示出和描述的附加和/或替代的结构。例如,可以存在一个或多个时钟电路、一个或多个电力供应源、一个或多个电力门、一个或多个缓存归属代理(cache home agent,CHA)、一个或多个聚合/通用网挡(converged/common mesh stop,CMS)、一个或多个移位器(例如,(一个或多个)桶形移位器)和/或其他电路。微处理器600是半导体设备,它被制造为包括许多相互连接的晶体管,以在一个或多个封装中包含的一个或多个集成电路(IC)中实现上述的结构。处理器电路可包括一个或多个加速器和/或与一个或多个加速器合作。在一些示例中,加速器由逻辑电路实现,以比通用处理器更快速和/或高效地执行某些任务。加速器的示例包括ASIC和FPGA,例如本文论述的那些。GPU或其他可编程设备也可以是加速器。加速器可以在处理器电路的板上,在与处理器电路相同的芯片封装中,和/或在与处理器电路分开的一个或多个封装中。
图7是图5的处理器电路512的另一示例实现方式的框图。在这个示例中,处理器电路512由FPGA电路700实现。例如,FPGA电路700可用于例如执行否则可通过图6的示例微处理器600执行相应的机器可读指令而执行的操作。然而,一旦被配置,FPGA电路700就用硬件来实例化机器可读指令,从而,执行操作的速度经常比执行相应软件的通用微处理器的执行速度更快。
更具体而言,与上文描述的图6的微处理器600(它是通用设备,可以被编程来执行图3A、图3B和/或图4的流程图所表示的机器可读指令的一部分或全部,但其互连和逻辑电路一旦被制造出来就固定了)相比,图7的示例的FPGA电路700包括互连和逻辑电路,这些互连和逻辑电路可以在制造之后以不同方式被配置和/或互连,以实例化例如由图3A、3B和/或图4的流程图表示的机器可读指令的一部分或全部。具体地,FPGA 700可以被认为是逻辑门、互连和开关的阵列。开关可以被编程以改变逻辑门被互连所互连的方式,有效地形成一个或多个专用的逻辑电路(除非和直到FPGA电路700被重编程为止)。配置的逻辑电路使得逻辑门能够以不同方式合作,以对输入电路接收的数据执行不同的操作。这些操作可以对应于图3A、3B和/或图4的流程图所表示的软件的一部分或全部。因此,FPGA电路700可被构造为有效地将图3A、3B和/或图4的流程图的机器可读指令的一部分或全部实例化为专用逻辑电路,来以类似于ASIC的专用方式执行与这些软件指令相对应的操作。因此,FPGA电路700执行与图7的机器可读指令的一部分或全部相对应的操作的速度可以比通用微处理器执行这些指令的速度更快。
在图7的示例中,FPGA电路700被构造为由最终用户通过硬件描述语言(hardwaredescription language,HDL)(例如Verilog)进行编程(和/或一次或多次重编程)。图7的FPGA电路700包括示例输入/输出(I/O)电路702,以从示例配置电路704和/或外部硬件(例如,外部硬件电路)706获得和/或向其输出数据。例如,配置电路704可以实现接口电路,该接口电路可以获得机器可读指令,以配置FPGA电路700,或者其(一个或多个)部分。在一些这样的示例中,配置电路704可以从用户、机器(例如,可以实现人工智能/机器学习(Artificial Intelligence/Machine Learning,AI/ML)模型以生成指令的硬件电路(例如,编程的,或专用的电路))等等获得机器可读指令。在一些示例中,外部硬件706可以实现图6的微处理器600。FPGA电路700还包括示例逻辑门电路708的阵列、多个示例可配置互连710、以及示例存储电路712。逻辑门电路708和互连710可被配置为实例化与图4-图5的机器可读指令中的至少一些相对应的一个或多个操作,和/或其他期望操作。图7所示的逻辑门电路708是按组或按块制造的。每个块包括基于半导体的电气结构,这些电气结构可被配置成逻辑电路。在一些示例中,电气结构包括为逻辑电路提供基本构建块的逻辑门(例如,与门、或门、或非门,等等)。在每个逻辑门电路708内存在可电控的开关(例如,晶体管),以便能够配置电气结构和/或逻辑门,来形成电路以执行期望的操作。逻辑门电路708可包括其他电气结构,例如查找表(look-up table,LUT)、寄存器(例如,触发器或锁存器)、多路复用器,等等。
图示示例的互连710是导电通路、迹线、通孔之类的,它们可包括可电控开关(例如,晶体管),这些开关的状态可通过编程(例如,使用HDL指令语言)被改变,以激活或停用一个或多个逻辑门电路708之间的一个或多个连接,来编程期望的逻辑电路。
图示示例的存储电路712被构造为存储由相应逻辑门执行的一个或多个操作的(一个或多个)结果。存储电路712可以由寄存器之类的实现。在图示示例中,存储电路712分布在逻辑门电路708之间,以促进访问并且提高执行速度。
图7的示例FPGA电路700还包括示例专用操作电路714。在这个示例中,专用操作电路714包括专用电路716,该专用电路可被调用来实现常用功能,以避免需要在现场对这些功能进行编程。这种专用电路716的示例包括存储器(例如,DRAM)控制器电路、PCIe控制器电路、时钟电路、收发器电路、存储器、以及乘法器-累加器电路。其他类型的专用电路也可存在。在一些示例中,FPGA电路700还可包括示例通用可编程电路718,例如示例CPU 720和/或示例DSP 722。其他通用可编程电路718可以额外地或者替代地存在,例如GPU、XPU,等等,它们可被编程以执行其他操作。
虽然图6和图7图示了图5的处理器电路512的两个示例实现方式,但也设想了许多其他途径。例如,如上所述,现代FPGA电路可包括板载CPU,例如图7的一个或多个示例CPU720。因此,图5的处理器电路512可以额外地通过组合图6的示例微处理器600和图7的示例FPGA电路700来实现。在一些这样的混合示例中,由图3A、3B和/或图4的流程图表示的机器可读指令的第一部分可以由图6的一个或多个核心602执行,并且由图3A、3B和/或图4的流程图表示的机器可读指令的第二部分可以由图7的FPGA电路700执行。
在一些示例中,图5的处理器电路512可以在一个或多个封装中。例如,图6的处理器电路600和/或图7的FPGA电路700可以在一个或多个封装中。在一些示例中,XPU可以由图5的处理器电路512实现,该处理器电路可以在一个或多个封装中。例如,XPU可包括在一个封装中的CPU、在另一个封装中的DSP、在又一个封装中的GPU、以及在再一个封装中的FPGA。
图8中图示了框图,该框图图示了示例软件分发平台805,用来将诸如图5的示例机器可读指令532之类的软件分发到由第三方拥有和/或操作的硬件设备。示例软件分发平台805可由能够存储软件并且将其传输到其他计算设备的任何计算机服务器、数据设施、云服务等等来实现。第三方可以是拥有和/或操作该软件分发平台805的实体的客户。例如,拥有和/或操作软件分发平台805的实体可以是软件(例如图5的示例机器可读指令532)的开发者、销售者和/或许可人。第三方可以是购买和/或许可该软件以供使用和/或再销售和/或分许可的消费者、用户、零售商、OEM,等等。在图示示例中,软件分发平台805包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令532,这些指令可对应于如上所述的图3A、图3B和/或图4的示例机器可读指令300、400。示例软件分发平台805的一个或多个服务器与网络810通信,该网络可对应于互联网和/或任何示例网络中的任何一个或多个。在一些示例中,作为商业交易的一部分,一个或多个服务器响应将软件传输给请求方的请求。对软件的交付、销售和/或许可的支付可由软件分发平台的一个或多个服务器处理和/或由第三方支付实体来处理。这些服务器使得购买者和/或许可人能够从软件分发平台805下载机器可读指令532。例如,可与图3A、3B和/或图4的示例机器可读指令300、400相对应的软件可被下载到示例处理器平台500,该平台将执行机器可读指令532以实现执行成本映射表确定电路104。在一些示例中,软件分发平台805的一个或多个服务器周期性地提供、传输和/或强制更新软件(例如,图5的示例机器可读指令532),以确保改进、补丁、更新等等被分发并且在最终用户设备处被应用于软件。
本文公开了改善人工智能的数据质量的示例方法、装置、系统和制品。进一步示例及其组合包括以下的:示例1包括一种基于执行成本生成映射表的装置,所述装置包括存储器,所述装置中包括的指令,以及处理器电路,用来执行所述指令以使得与助记符相对应的多个指令被执行,确定所述多个指令的平均执行成本,确定所述多个指令的执行成本的标准偏差,并且生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
示例2包括如示例1所述的装置,其中,所述处理器电路使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
示例3包括如示例1所述的装置,其中,所述多个指令是第一多个指令,所述处理器电路用来将第二多个指令转换成助记符和操作对象,通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令,并且通过将所述指令与所述转换后的指令相组合来生成配对。
示例4包括如示例3所述的装置,其中,所述处理器电路用来将所述配对存储在所述存储器中,并且从所述存储器访问与所述助记符相对应的所述第一多个指令。
示例5包括如示例3所述的装置,其中,所述处理器电路用来确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中,并且当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
示例6包括如示例3所述的装置,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
示例7包括如示例1所述的装置,其中,所述处理器电路用来从存储库获得所述指令,并且将所述指令转换成汇编语言。
示例8包括一种包括指令的非暂态计算机可读介质,所述指令当被执行时,使得一个或多个处理器至少使得与助记符相对应的多个指令被执行,确定所述多个指令的平均执行成本,确定所述多个指令的执行成本的标准偏差,并且生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
示例9包括如示例8所述的计算机可读存储介质,其中,所述指令使得所述一个或多个处理器使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
示例10包括如示例8所述的计算机可读存储介质,其中,所述多个指令是第一多个指令,所述指令使得所述一个或多个处理器将第二多个指令转换成助记符和操作对象,通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令,并且通过将所述指令与所述转换后的指令相组合来生成配对。
示例11包括如示例10所述的计算机可读存储介质,其中,所述指令使得所述一个或多个处理器将所述配对存储在存储装置中,并且从所述存储装置访问与所述助记符相对应的所述第一多个指令。
示例12包括如示例10所述的计算机可读存储介质,其中,所述指令使得所述一个或多个处理器确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中,并且当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
示例13包括如示例10所述的计算机可读存储介质,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
示例14包括如示例8所述的计算机可读存储介质,其中,所述指令使得所述一个或多个处理器从存储库获得所述指令,并且将所述指令转换成汇编语言。
示例15包括一种基于执行成本生成映射表的装置,该装置包括接口电路,以及处理器电路,该处理器电路包括以下各项中的一个或多个:中央处理单元、图形处理单元或数字信号处理器中的至少一者,所述中央处理单元、所述图形处理单元或所述数字信号处理器中的至少一者具有控制电路、一个或多个寄存器、以及算术和逻辑电路,来执行与所述装置中的指令相对应的一个或多个第一操作,以及,现场可编程门阵列(FPGA),所述FPGA包括逻辑门电路、多个可配置互连、以及存储电路,所述逻辑门电路和互连执行一个或多个第二操作,或者专用集成电路(ASIC),其包括逻辑门电路来执行一个或多个第三操作,所述处理器电路执行所述第一操作、所述第二操作或所述第三操作以实例化成本映射电路,以使得与助记符相对应的多个指令被执行,确定所述多个指令的平均执行成本,确定所述多个指令的执行成本的标准偏差,并且生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
示例16包括如示例15所述的装置,其中,所述成本映射电路使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
示例17包括如示例15所述的装置,其中,所述多个指令是第一多个指令,所述装置还包括指令转换器电路,用来将第二多个指令转换成助记符和操作对象,通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令,并且通过将所述指令与所述转换后的指令相组合来生成配对。
示例18包括如示例17所述的装置,其中,所述指令转换器电路用来将所述配对存储在所述存储装置中,并且所述成本映射电路从所述存储装置访问与所述助记符相对应的所述第一多个指令。
示例19包括如示例17所述的装置,其中,所述成本映射电路用来确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中,并且当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
示例20包括如示例17所述的装置,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
示例21包括如示例15所述的装置,还包括架构特定编译器,用来从存储库获得所述指令,并且将所述指令转换成汇编语言。
示例22包括一种基于执行成本生成映射表的装置,该装置包括用于识别多个指令的助记符的装置,用于生成映射表的装置,所述用于生成映射表的装置使得与所述助记符相对应的多个指令被执行,确定所述多个指令的平均执行成本,确定所述多个指令的执行成本的标准偏差,并且生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
示例23包括如示例22所述的装置,其中,所述用于生成映射表的装置使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
示例24包括如示例22所述的装置,其中,所述多个指令是第一多个指令,所述装置还包括用于转换的装置,所述用于转换的装置用来将第二多个指令转换成助记符和操作对象,通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令,并且通过将所述指令与所述转换后的指令相组合来生成配对。
示例25包括如示例24所述的装置,其中,所述用于转换的装置用来将所述配对存储在所述存储装置中,并且从所述存储装置访问与所述助记符相对应的所述第一多个指令。
示例26包括如示例24所述的装置,其中,所述用于生成的装置用来确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中,并且当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
示例27包括如示例24所述的装置,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
示例28包括如示例22所述的装置,还包括用于转换的装置,所述用于转换的装置用来从存储库获得所述指令,并且将所述指令转换成汇编语言。
示例29包括一种基于执行成本生成映射表的方法,该方法包括使得与助记符相对应的多个指令被执行,通过利用一个或多个处理器执行指令,来确定所述多个指令的平均执行成本,通过利用所述一个或多个处理器执行指令,来确定所述多个指令的执行成本的标准偏差,并且通过利用所述一个或多个处理器执行指令,来生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
示例30包括如示例29所述的方法,还包括使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
示例31包括如示例29所述的方法,其中,所述多个指令是第一多个指令,所述方法还包括将第二多个指令转换成助记符和操作对象,通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令,并且通过将所述指令与所述转换后的指令相组合来生成配对。
示例32包括如示例31所述的方法,还包括将所述配对存储在存储装置中,并且从所述存储装置访问与所述助记符相对应的所述第一多个指令。
示例33包括如示例31所述的方法,还包括确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中,并且当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
示例34包括如示例31所述的方法,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
示例35包括如示例29所述的方法,还包括从存储库获得所述指令,并且将所述指令转换成汇编语言。
从上述内容将会明白,已公开了确定执行成本的示例系统、方法、装置和制品。为了确定指令的执行成本,一些技术在执行指令之前运行指令以识别代码执行。然而,这种技术是昂贵和耗时的。其他技术已被用来使用模型和/或其他工具估计执行成本。然而,这种技术可能是不准确的和/或要求大量的维护开销。一些技术使用人工智能(AI)来预测一组指令的执行成本。虽然这种技术是准确的,但这种技术是计算密集型的,并且基于AI的技术不提供对结果的解释。
本文公开的示例包括服务器,该服务器开发了特定于架构的映射表,该映射表将转换后的指令(例如,基于指令行的前导助记符和/或功能的指令抽象)映射到平均执行成本和标准偏差成本。使用本文公开的示例,服务器可以从存储装置(例如,开源存储库、众包存储库、闭源存储库、本地存储装置、外部存储装置、本地数据库、外部数据库,等等)获得程序和/或基本代码块,执行代码行以识别与代码行的功能和/或助记符相对应的执行成本,并且将助记符映射到平均执行成本和执行成本的标准偏差。本文公开的示例开发了一种途径,它是准确的、可解释的并且使用比上述技术更少的处理器资源来执行。从而,所公开的系统、方法、装置和制品因此针对诸如计算机或其他电子和/或机械设备之类的机器的操作的一个或多个改进。
虽然本文公开了某些示例系统、方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有系统、方法、装置和制品。
特此通过引用将所附权利要求并入到该“具体实施方式”部分中,其中每个权利要求独立作为本公开的一个单独实施例。

Claims (24)

1.一种基于执行成本生成映射表的装置,该装置包括:
存储器;
所述装置中包括的指令;以及
处理器电路,用来执行所述指令以:
使得与助记符相对应的多个指令被执行;
确定所述多个指令的平均执行成本;
确定所述多个指令的执行成本的标准偏差;并且
生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
2.如权利要求1所述的装置,其中,所述处理器电路使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
3.如权利要求1所述的装置,其中,所述多个指令是第一多个指令,所述处理器电路用来:
将第二多个指令转换成助记符和操作对象;
通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令;并且
通过将所述指令与所述转换后的指令相组合来生成配对。
4.如权利要求3所述的装置,其中,所述处理器电路用来:
将所述配对存储在所述存储器中;并且
从所述存储器访问与所述助记符相对应的所述第一多个指令。
5.如权利要求3所述的装置,其中,所述处理器电路用来:
确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中;并且
当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
6.如权利要求3所述的装置,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
7.如权利要求1所述的装置,其中,所述处理器电路用来:
从存储库获得所述指令;并且
将所述指令转换成汇编语言。
8.一种基于执行成本生成映射表的方法,该方法包括:
使得与助记符相对应的多个指令被执行;
通过利用一个或多个处理器执行指令,来确定所述多个指令的平均执行成本;
通过利用所述一个或多个处理器执行指令,来确定所述多个指令的执行成本的标准偏差;并且
通过利用所述一个或多个处理器执行指令,来生成包括条目的映射表,所述条目包括与所述平均值和所述标准偏差相关联的助记符。
9.如权利要求8所述的方法,还包括使得所述多个指令在特定于架构的处理器单元上被执行,所述架构与获得所述映射表以估计执行成本的计算设备相对应。
10.如权利要求8所述的方法,其中,所述多个指令是第一多个指令,所述方法还包括:
将第二多个指令转换成助记符和操作对象;
通过利用与所述操作对象相对应的令牌替换所述操作对象来生成转换后的指令;并且
通过将所述指令与所述转换后的指令相组合来生成配对。
11.如权利要求10所述的方法,还包括:
将所述配对存储在存储装置中;并且
从所述存储装置访问与所述助记符相对应的所述第一多个指令。
12.如权利要求10所述的方法,还包括:
确定包括相同助记符或相同操作对象中的至少一者的配对是否被包括在存储装置中;并且
当所述配对已经被包括在所述存储装置中时,丢弃所述配对。
13.如权利要求10所述的方法,其中,所述令牌对应于以下各项中的至少一者:当所述操作对象对应于数值常数时,所述令牌对应于常数类型,或者当所述操作对象对应于寄存器操作时,所述令牌对应于寄存器。
14.如权利要求8到13中任一项所述的方法,还包括:
从存储库获得所述指令;并且
将所述指令转换成汇编语言。
15.一种机器可读介质,包括代码,所述代码当被执行时使得机器执行如权利要求8到14中任一项所述的方法。
16.一种设备,包括用于执行如权利要求8到14中任一项所述的方法的装置。
17.一种报告执行成本的装置,该装置包括:
存储器;
所述装置中包括的指令;以及
处理器电路,用来执行所述指令以:
识别来自程序的指令的助记符;
基于所述助记符来确定所述指令的最大执行成本和最小执行成本;
基于所述指令的最大执行成本和最小执行成本中的至少一者来确定所述程序的平均执行成本;并且
报告所述程序的平均执行成本。
18.如权利要求17所述的装置,其中,所述处理器电路用来基于映射表来确定所述指令的最大执行成本和最小执行成本。
19.如权利要求17所述的装置,其中,所述指令是第一指令,所述助记符是第一助记符,所述最大执行成本是第一执行成本,并且所述最小执行成本是第二执行成本,所述处理器电路用来:基于所述程序的第二指令的第二助记符来确定所述第二指令的第二最大执行成本和第二最小执行成本,并且基于所述第二指令的第二最大执行成本和第二最小执行成本中的至少一者来确定所述程序的平均执行成本。
20.一种报告执行成本的方法,该方法包括:
识别来自程序的指令的助记符;
基于所述助记符来确定所述指令的最大执行成本和最小执行成本;
基于所述指令的最大执行成本和最小执行成本中的至少一者来确定所述程序的平均执行成本;并且
报告所述程序的平均执行成本。
21.如权利要求20所述的方法,还包括基于映射表来确定所述指令的最大执行成本和最小执行成本。
22.如权利要求20所述的方法,其中,所述指令是第一指令,所述助记符是第一助记符,所述最大执行成本是第一执行成本,并且所述最小执行成本是第二执行成本,所述方法还包括:基于所述程序的第二指令的第二助记符来确定所述第二指令的第二最大执行成本和第二最小执行成本,并且基于所述第二指令的第二最大执行成本和第二最小执行成本中的至少一者来确定所述程序的平均执行成本。
23.一种机器可读介质,包括代码,所述代码当被执行时使得机器执行如权利要求20到22中任一项所述的方法。
24.一种设备,包括用于执行如权利要求20到22中任一项所述的方法的装置。
CN202211347690.9A 2021-12-02 2022-10-31 确定执行成本的方法和装置 Pending CN116225440A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/541,016 US20220091895A1 (en) 2021-12-02 2021-12-02 Methods and apparatus to determine execution cost
US17/541,016 2021-12-02

Publications (1)

Publication Number Publication Date
CN116225440A true CN116225440A (zh) 2023-06-06

Family

ID=80740391

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211347690.9A Pending CN116225440A (zh) 2021-12-02 2022-10-31 确定执行成本的方法和装置

Country Status (3)

Country Link
US (1) US20220091895A1 (zh)
CN (1) CN116225440A (zh)
DE (1) DE102022132022A1 (zh)

Also Published As

Publication number Publication date
DE102022132022A1 (de) 2023-06-07
US20220091895A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
US11704226B2 (en) Methods, systems, articles of manufacture and apparatus to detect code defects
US11782813B2 (en) Methods and apparatus to determine refined context for software bug detection and correction
CN116266114A (zh) 识别代码语义的方法、系统、制品和装置
EP4109345A1 (en) Methods and apparatus to load data within a machine learning accelerator
CN115410023A (zh) 为神经网络分类器实现并行体系结构的方法和装置
US20220113781A1 (en) Methods and apparatus for bi-directional control of computing unit frequency
EP4109275A1 (en) Methods and apparatus to transmit central processing unit performance information to an operating system
US20230214384A1 (en) Methods and apparatus to identify electronic devices
CN116339704A (zh) 用于机器学习引导的编译器优化的方法和装置
US20230035197A1 (en) Methods and apparatus to predict an impact of a source code change on a cloud infrastructure
US20220113757A1 (en) Apparatus, systems, and methods for intelligent tuning of overclocking frequency
US20220091895A1 (en) Methods and apparatus to determine execution cost
CN115617502A (zh) 用于数据增强自动模型生成的方法和设备
US20240126520A1 (en) Methods and apparatus to compile portable code for specific hardware
US20220114083A1 (en) Methods and apparatus to generate a surrogate model based on traces from a computing unit
US20230244525A1 (en) Methods and apparatus for an xpu-aware dynamic compute scheduling framework
EP4131011A1 (en) Methods and apparatus to generate a surrogate model based on traces from a computing unit
US20240094684A1 (en) Methods and apparatus for executing rules
US20230136365A1 (en) Methods and apparatus to allocate accelerator usage
US20220012106A1 (en) Methods and apparatus to expose a microservice to a software layer
US20220391668A1 (en) Methods and apparatus to iteratively search for an artificial intelligence-based architecture
US20220222177A1 (en) Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs
US20240169094A1 (en) Mitigating private data leakage in a federated learning system
US20220012062A1 (en) Methods and apparatus to increase boot performance
WO2024108382A1 (en) Methods and apparatus to perform many-to-one feature distillation in neural networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication