CN107592924A - 用于对由处理器执行的指令进行优化的方法和装置 - Google Patents

用于对由处理器执行的指令进行优化的方法和装置 Download PDF

Info

Publication number
CN107592924A
CN107592924A CN201680027157.0A CN201680027157A CN107592924A CN 107592924 A CN107592924 A CN 107592924A CN 201680027157 A CN201680027157 A CN 201680027157A CN 107592924 A CN107592924 A CN 107592924A
Authority
CN
China
Prior art keywords
asserted
instruction
region
block
error prediction
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
Application number
CN201680027157.0A
Other languages
English (en)
Other versions
CN107592924B (zh
Inventor
V·麦卡特
G·文卡塔苏布拉马拉尼安
H·H·陈
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 CN107592924A publication Critical patent/CN107592924A/zh
Application granted granted Critical
Publication of CN107592924B publication Critical patent/CN107592924B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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
    • G06F8/4441Reducing the execution time required by the program code
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Abstract

本文中公开了方法、装置、系统和制品。示例装置包括指令分析器,其用于在要由硬件处理器执行的指令内识别出断言的块。示例装置包括性能监测器,其用于基于与所述断言的块相关联的指令地址来访问错误预测统计。示例装置包括区域形成器,其用于响应于确定出所述错误预测统计高于错误预测阈值,将所述断言的块包括在断言的区域中以用于优化。

Description

用于对由处理器执行的指令进行优化的方法和装置
技术领域
本公开总体上涉及指令优化,并且更具体地涉及用于对由处理器执行的指令进行优化的方法和装置。
背景技术
处理器执行指令以完成有用的任务。现代的处理器使用处理器流水线。当指令被加载到处理器流水线以用于执行时,该指令实际上可能不被处理器执行直到已经在流水线中的其他指令被执行为止。在一些示例中,执行指令的处理器试图在将这些指令置于流水线中之前对这些指令进行优化,以试图更有效地进行操作。这样的优化可能使得指令不以其原有预期的排序被执行。例如,在一些示例中,处理器将在这些代码部分被需要之前推测地执行代码的部分,以设法对处理器的性能进行优化。
附图说明
图1是根据本公开的教导构建的用于对由处理器执行的指令进行优化的示例计算系统的图。
图2示出了将由图1的处理器执行的示例指令集。
图3示出了将由图1的处理器执行的示例优化的指令集。
图4是表示可以被执行以用于实现图1的示例处理器的示例机器可读指令的流程图。
图5是表示可以被执行以用于实现图1的示例动态二进制翻译器的示例机器可读指令的流程图。
图6是表示可以被执行以用于实现图1的示例动态二进制翻译器的示例机器可读指令的流程图。
图7是被构成用于执行图4、图5和/或图6的示例机器可读指令以实现图1的计算系统的示例处理器平台的框图。
附图未进行缩放。在任何可能的情况下,贯穿附图和所附书面描述所使用的相同的附图标记将指代相同或相似的部分。
具体实施方式
现代的处理器利用指令流水线来增加指令吞吐量。不是顺序地执行指令(例如,在执行第二指令之前第一指令被充分执行),而是指令可以被分成操作的序列使得这些操作可以被并行地执行(例如,通过不同的电路和/或在相同时间)。例如,指令可以被分成:用于从存储器中读取指令的第一操作、用于执行指令的第二操作、以及用于将指令的结果写入存储器的第三操作。这样,多个指令可以在单个时钟周期期间由处理器来执行。为了增强效率,一些处理器试图重新组织指令以确保指令流水线是不断充满的。然而,这样试图的优化可以引入延迟。
例如,当处理器执行条件运算,例如“IF(如果)”语句,处理器的分支预测器可以预测条件语句的输出并且在这样的结果被需要之前推测地执行指令(例如,执行“IF”语句,如同其被解析为TRUE(真))。即,条件语句的指令可以被置于处理器流水线中以用于执行,即使条件语句所基于的断言尚未被确定。如果分支预测器已经适当地估计了条件语句的断言,则当实际的断言被确定时,条件语句的结果立即是可用的(例如,不需要执行其他指令)。当处理器识别到做出了错误的推测假设(例如,预测了错误的断言)时,执行与未被预测的断言相关联的指令(例如,“IF”语句的“ELSE(否则)”部分)。错误的推测假设被识别为由处理器做出的分支错误预测。分支预测器可以使用存储的错误预测信息来例如试图更准确地预测条件运算的断言。
分支错误预测的成本是高昂的,特别是在乱序(OOO)处理器中。即使最先进的分支预测器的准确度很高,但是现代的OOO处理器中的流水线的长度使得分支错误预测在性能方面是成本昂贵的。动态二进制翻译(DTB)系统使用软件优化技术(例如,IF转换(if-conversion))可以减少分支错误预测的高惩罚。如果通过将条件语句转换为直线式代码(straight line code),则转换减少了分支错误预测的影响。如在本文中所使用的,直线式代码是引起执行两个分支(不考虑是否是预测的分支)的执行并且基于对断言的评估来选择合适的结果的代码(不同于在执行之前预测合适的分支)。
如本文中所使用的,指令的块表示一个或多个有序的指令。由于其有序的性质,这些指令可以一同被处理(例如,一同被包括在区域中、从区域中一同被排除等)。在一些示例中,指令的块的执行是基于断言的评估的。如本文中所使用的,区域被定义为包括一个或多个指令的块。在本文中所公开的示例中,断言的区域是包括断言的块(例如,其执行是取决于断言的一个或多个指令)的区域。
在DBT系统中,选择合适的指令区域以用于IF转换是重要的。当选择具有高动态执行计数的区域(例如,经常被执行的区域)时,得到的优化的指令产生来自处理器的更好的性能和/或功率节省。当选择了错误的区域以用于优化时,用在指令上的对区域进行优化所花费的努力会超过优化的效果。
许多DBT系统利用区域的观察到的执行计数作为该区域的未来动态执行计数的指示符。然而,单独使用时,该度量不考虑和与该区域相关联地发生的错误预测相关联的成本。此外,仅基于该区域的动态执行计数形成的区域可以是不完整的。例如,这些区域可以缺少与高错误预测分支相关的块,特别是如果这些块具有低执行频率。
本文中所公开的示例方法、装置和系统呈现了用于改进DBT系统的有效性的硬件/软件协同设计方案。如本文中所公开的,关于由处理器的分支预测器识别的分支错误预测的信息被用于识别指令的块以包括在用于优化的指令的区域中。例如,当指令的块表现为多于错误预测的阈值数量时,则该指令的块被包括在其相应的区域中,尽管未满足阈值执行频率。
图1是根据本公开的教导构建的用于对由处理器105执行的指令102进行优化的示例计算系统100的图。示例计算系统100包括指令优化器110,指令优化器110接收用于由处理器105执行的指令102。示例指令优化器110对指令102进行优化以形成用于由处理器105执行的优化的指令112来替代指令102。
如本文中所公开的,指令102、112是由处理器105执行的机器指令。指令102、112内的每个指令执行任务,诸如例如,对两个值进行加法、将值存储到存储器位置中等。在本文中所公开的示例中,指令是由编译器生成的机器可读指令。例如,编译器可以基于人类可读的编程语言(诸如例如,C++、JAVA、C#等)生成机器可读指令。然而,指令可以以任何其他方式(诸如例如,由人类来生成、由编译器来生成并且由人类来修改等)来生成。
图1的示出的示例中的示例处理器105由硬件来实现。例如,处理器105可以由来自任何期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器来实现。图1的示出的示例中的示例处理器105包括分支预测器120、指令执行器125以及性能计数器130。
图1的示出的示例中的示例分支预测器120识别将由处理器105的指令执行器125执行的指令内的分支(例如,条件语句)。示例分支预测器120预测将采用指令的哪个分支并且将预测的分支的指令转发到指令执行器125。在一些示例中,分支通过检测条件指令(例如,基于断言的指令)而被检测。然而,可以附加地或可替代地使用用于识别分支的任何其他方法。在图2的示出的示例中示出了示例条件语句。
当检测到条件指令时,分支预测器120预测哪个断言条件(例如,TRUE、FALSE(假)等)最终将被使用。在一些示例中,分支预测器120使用饱和计数器来预测断言。然而,可以附加地或可替代地使用用于预测断言的任何其他方法,诸如例如,静态预测、下一行预测(next line prediction)、两级自适应预测器(two-level adaptive predictor)、本地分支预测、全局分支预测、融合分支预测(alloyed branch prediction)等。与预测的条件相关联的指令被提供给指令执行器以用于推测执行。当确定断言的真值时,分支预测器120将断言的记录存储到性能计数器130中,使得分支预测器120可以试图在未来更准确地预测断言。如果例如确定了预测的分支是错误的(例如,与假设相关联的错误的指令被执行),则分支预测器120将未被预测的指令转发到指令执行器125以用于执行。推测地被执行和/或部分地被执行的指令(例如,与错误的预测相关联的指令)被丢弃。更重要的是,由于错误预测导致了延迟,因为未被预测的分支被执行的时间要晚于如果预测了正确的断言它应被执行的时间。
图1的示出的示例中的示例指令执行器125执行由分支预测器120提供的指令。在图1的示出的示例中,示例指令执行器125包括指令流水线。不是顺序地处理每个指令(例如,在执行第二指令之前第一指令被充分执行),而是每个指令被分成被置于指令流水线中的操作的序列,使得操作可以并行地被执行(例如,通过不同电路和/或在相同的时间)。示例指令执行器125执行在指令流水线的这些指令。
示例性能计数器130存储关于由示例指令执行器125执行的指令的性能度量。在所示的示例中,示例性能计数器130存储断言的记录和与该断言相关联的指令地址。断言记录由示例分支预测器使用以预测针对给定指令地址的断言。因此,性能计数器130存储其中分支预测器120错误地预测了针对给定指令地址的断言的实例的记录。在一些示例中,性能计数器130存储关于由于分支错误预测而遇到延迟的信息。这样的信息可用于指令优化器110,使得指令可以在由分支预测器120检查之前被优化。
图1的示出的示例中的示例指令优化器110包括指令分析器140、性能监测器145、错误预测数据存储150、区域形成器155以及转换器160。在一些示例中,指令优化器110被实现为动态二进制翻译(DBT)系统的组件。在本文中所公开的示例中,指令优化器110使用执行指令的基于硬件的处理器来实现。
图1的示出的示例中的示例指令分析器140估计指令102中的指令的执行频率。在图1的示出的示例中,示例指令分析器140与示例处理器105的性能计数器130进行交互,以确定指令被执行的次数。指令执行的过去的认知用于估计指令在未来将要被执行的频率。然而,示例指令分析器140可以利用任何其他方法来估计指令的执行频率。例如,指令分析器140可以利用硬件中断、代码插桩、指令仿真等来估计指令的执行频率。
图1的示出的示例中的示例性能监测器145与示例处理器105的性能计数器130进行交互,以识别与指令地址相关联的错误预测统计。如上面提到的,处理器105的分支预测器120将错误预测的指令的记录存储到性能计数器130中。在本文中所公开的示例中,性能计数器130提供错误预测中涉及的一个或多个指令地址的列表。在一些示例中,指令地址的列表通过错误预测发生的数量来进行排序。在一些示例中,性能计数器130提供与最频繁的错误预测(例如,前十个错误预测)相关联的指令地址。示例性能监测器145取回错误预测信息,并且将错误预测信息存储到错误预测数据存储150中。当确定指令的块是否应该被包括在被选择用于优化的区域中时,错误预测信息稍后由区域形成器155使用。
图1的示出的示例中的示例错误预测数据存储150存储由性能监测器145识别的错误预测信息。在所示的示例中,错误预测数据存储装置存储指令地址连同与该地址相关联地发生的错误预测的次数。在本文中所公开的示例中,示例错误预测数据存储150可以由易失性存储器(例如,同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)等)和/或非易失性存储器(例如,闪存)来实现。附加地或可替代地,示例错误预测数据存储150可以由一个或多个双数据速率(DDR)存储器(例如、DDR、DDR2、DDR3、移动DDR(mDDR)等)来实现。附加地或可替代地,示例错误预测数据存储150可以由一个或多个大容量存储设备(例如,硬盘驱动器、压缩盘驱动器、数字多功能盘驱动器等)来实现。尽管在所示的示例中,错误预测数据存储150被示为单个数据库,但是错误预测数据存储150可以由任何数量和/或类型的数据库来实现。
图1的示出的示例中的示例区域形成器155将指令的块分组为指令的区域以用于优化。在本文中所公开的示例中,示例区域形成器155利用被存储在错误预测数据存储150中的错误预测信息来识别指令的块是否应该被包括在区域中。在本文中所公开的示例中,错误预测统计是与块的指令地址相关联的错误预测的发生的数量。当错误预测的发生的数量大于或等于阈值(例如,多于五十五次发生、大于百分之二十的错误预测等)时,块被包括在区域中。
此外,附加地或可替代地,可以使用任何其他错误预测统计。例如,错误预测统计可以表示由于分支预测器120错误预测了块的断言而引起的延迟(例如,三十毫秒、一百毫秒等)。如果例如延迟大于时间的阈值量(例如,大于一百毫秒、大于一秒等),则示例区域形成器155可以将块包括在区域中。
附加地或可替代地,示例区域形成器155可以利用任何其他信息来识别指令的块何时被包括在区域中。例如,在一些示例中,示例区域形成器155利用估计的执行的频率来识别指令的块是否应该被包括在区域中。
图1示出的示例中的示例转换器160对由示例区域形成器155识别的指令的区域进行优化。在对区域进行优化后,优化的区域就被提供给处理器105以用于执行。在一些示例中,指令的多个区域可以被优化并且被提供给处理器105以用于执行。在一些示例中,处理器105的分支预测器120不将优化的指令识别为需要推测执行的断言的指令。作为结果,与断言的错误预测相关联的潜在的延迟可以被避免。
在本文中所公开的示例中,示例转换器160利用IF转换来对区域进行优化。如本文中所使用的,IF转换是将断言的语句转换为直线式代码的优化。在图2和/或图3的示出的示例中示出了示例IF转换优化。然而,附加地或可替代地,可以执行任何其他优化。
图2示出了要由处理器105执行的指令200的示例区域。图2的示例指令200表示未被优化的图1的指令102。在图2的示出的示例中,计算断言(p0)。(框205)。分支指令(框210)基于该断言来执行。基于断言的值,分支指令向下到块B(框215),或跳转到块C(框220)。如果控制进行到块B(框215),则执行块B的指令并且控制进行到块C(框220)并且然后进行到块D(框230)。如果控制已经跳转到块C(框220),则执行块C的指令并且控制进行到块D(框230)。
当执行图2的示例指令200时,处理器105的示例分支预测器120试图预测断言(p0)将会是真或假。因此,可以在分支指令(框210)之前执行块B、块C和/或块D来避免需要等待断言被计算(块205)。在其中断言是无偏差的(unbiased)示例中,示例分支预测器120可能无法准确地预测断言,因此导致了与执行来自未被预测的分支的指令(例如图2中的那些)相关联的显著的延迟。
在本文中所公开的示例中,指令可以被优化成直线式代码,因此移除了分支将被分支预测器120错误预测的可能性。通常,优化的直线式代码包括更少的推测指令,并且作为结果可能比指令的非推测版本花费更长的时间执行。然而,附加的潜在的执行时间比与分支错误预测相关联的惩罚有价值,特别是当优化被选择地应用于被识别为与更高级别的错误预测相关联的指令时。
图3示出了要由处理器105执行的指令300的示例优化的区域。图3的示出的示例中的示例指令300与图1的优化的指令112相对应并且表示图2的指令200的优化的版本。在图3的示出的示例中,计算断言(p0)。(框305)。不是包括基于该断言来执行的分支指令,而是图3的指令直接进行到块B(框315)。控制进行到块C(框320)。与图2的块C(框220)相比,图3的块C(框320)包括断言的存储指令(行321),其存储取决于计算的断言(p0)的值。然后,在块D(框330)中选择了合适的结果,并且指令终止。值得注意的是,图2的块210的条件分支在图3所示的示例中被移除。因此,分支预测器120将不会推测地执行块中的任何一个块,因此移除了分支预测器将错误地预测断言的可能性。
在图2的示出的示例中,指令200包括七个指令。在所示的示例中,当分支预测器120正确地预测断言(p0)(框210)时,可以执行少于图2的七个指令200(例如,块C(框215)可以被略过)。然而,如果分支预测器错误地预测了断言,则然后可以执行附加的指令(例如,被分支预测器120错误地跳过的块B(框215)的指令)。尽管图2的示出的示例,各种分支(例如,块B(块215)、块C(块220)等)各自包括两个指令,但是附加地或可替代地,可以使用任何其他数量和/或类型的指令。例如,块可以包括十个指令、一百个指令、一千个指令等。具有很多指令的块比具有更少指令的块趋向于表现出更长的错误预测惩罚。因此,针对错误预测断言的惩罚可以很高。
图3的示出的示例中的指令300当被执行时产生与图2的示出的示例中的指令200所产生的一样的计算结果。在图3的示出的示例中,指令300也包括七个指令。由于断言分支指令(例如,图2的框210的指令)未包括在图3的指令300中,所以指令预测器120将不会预测任何断言,而是将按照顺序执行所有七个指令。移除断言确定也移除了代表分支预测器120的分支错误预测的可能性,因此,增加了处理器105的效率。
尽管图1中示出了实现示例处理器105和/或示例指令优化器110的示例方式,但是图1中示出的元件、过程和/或设备中的一个或多个可以以任何其他方式被组合、划分、重新布置、省略、消除和/或实现。此外,图1的示例分支预测器120、示例指令执行器125、示例性能计数器130、和/或更普遍地示例处理器105、和/或示例指令分析器140、示例性能监测器145、示例错误预测数据存储150、示例区域形成器155、示例转换器160、和/或更普遍地示例指令优化器110可以由硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。因此,例如,图1的示例分支预测器120、示例指令执行器125、示例性能计数器130、和/或更普遍地示例处理器105、和/或示例指令分析器140、示例性能监测器145、示例错误预测数据存储150、示例区域形成器155、示例转换器160和/或更普遍地示例指令优化器110可以由一个或多个模拟或数字电路、逻辑电路、可编程处理器、专用集成电路(ASIC)、可编程逻辑器件(PLD)和/或现场可编程逻辑器件(FPLD)来实现。当阅读用于覆盖纯软件和/或固件实现的本专利的装置或系统权利要求中的任何一个时,图1的示例分支预测器120、示例指令执行器125、示例性能计数器130、示例指令分析器140、示例性能监测器145、示例错误预测数据存储150、示例区域形成器155、示例转换器160和/或示例指令优化器110中的至少一个在此被清楚地定义为包括存储软件和/或固件的有形计算机可读存储设备或存储盘(例如,存储器、数字通用盘(DVD)、压缩盘(CD)、蓝光盘等)。此外,图1的示例处理器105和/或示例指令优化器110可以包括除了图4中所示出的那些之外或代替图4中所示出的那些的一个或多个元件、过程和/或设备,和/或可以包括多于所示出的元件、过程和设备中的任一个或者全部中的一个。
在图4中示出了表示用于实现图1的示例处理器105的示例机器可读指令的流程图。在图5和/或图6中示出了表示用于实现图1的示例指令优化器110的示例机器可读指令的流程图。在这些示例中,机器可读指令包括用于由处理器(例如,图1的示出的示例中示出的处理器105和以下关于图7所讨论的示例处理器平台700中所示的处理器105)执行的程序。程序可以被体现在被存储在有形计算机可读存储介质(例如,CD-ROM、软盘、硬盘驱动器、数字通用盘(DVD)、蓝光盘)上或与处理器105相关联的存储器上的软件中,但是整个程序和/或其部分可以可替代地由除了处理器105之外的设备来执行和/或被体现在固件或专用硬件中。此外,尽管参照图4、图5和/或图6中示出的流程图来描述了示例程序,但是可以可替代地使用实现示例处理器105和/或示例指令优化器110的许多其他方法。例如,块的执行的顺序可以被改变,和/或所描述的块中的一些块可以被改变、消除或组合。
如上所提到的,图4、图5和/或图6示例中的示例过程可以使用存储在有形计算机可读存储介质上的编码的指令(例如,计算机和/或机器可读指令)来实现,其中有形计算机可读存储介质例如,硬盘驱动器、闪存、只读存储器(ROM)、压缩盘(CD)、数字通用盘(DVD)、高速缓存、随机存取存储器(RAM)和/或在其中信息被存储任何持续时间(例如,用于延长的时间段、永久地、用于简洁的实例、用于临时缓冲、和/或用于信息的高速缓存)的任何其他存储设备或存储盘。如本文中所使用的,术语有形计算机可读存储装置被清楚地定义为包括任何类型的计算机可读存储设备和/或存储盘并且不包括传播信号和传输介质。如本文中所使用的,“有形计算机可读存储介质”和“有形机器可读存储介质”可交换地被使用。附加地或可替代地,图4、图5和/或图6的示例过程可以使用存储在非暂时性计算机和/或机器可读介质上的编码的指令(例如,计算机和/或机器可读指令)来实现,其中非暂时性计算机和/或机器可读介质例如,硬盘驱动器、闪存、只读存储器、压缩盘、数字通用盘、高速缓存、随机存取存储器和/或在其中信息被存储任何持续时间(例如,用于延长的时间段、永久地、用于简洁的实例、用于临时缓冲、和/或用于信息的高速缓存)的任何其他存储设备或存储盘。如本文中所使用的,术语非暂时性计算机可读介质被清楚地定义为包括任何类型的计算机可读存储设备和/或存储盘并且不包括传播信号和传输介质。如本文中所使用的,当短语“至少”被用作权利要求的序言中的过渡词时,其与“包括”以相同的方式都是开放式的。
图4是表示可以被执行以用于实现图1的示例处理器105的示例机器可读指令400的流程图。图4的示例过程在示例分支预测器120接收到用于执行的指令时开始(框405)。在图4所示的示例中,接收的指令可以是未被优化的指令(例如,与图1的指令102相对应的指令)或可以是优化的指令(例如,与图1的优化的指令112相对应的指令)。示例分支预测器120检查指令以确定分支指令是否存在。(框410)。在本文中所公开的示例中,基于分支操作码(opcode)的出现而检测到分支指令。然而,附加地或可替代地,可以使用用于检测分支指令的任何其他方法,诸如,例如检测跳转命令、if-else命令、for命令、while命令等。如果没有检测到分支指令(框410返回“否”作为结果),则指令执行器125执行指令。(框415)。
如果检测到分支指令(框410返回“是”作为结果),则分支预测器120预测哪个分支将会被采用(例如,预测分支指令所基于的断言的值)。(框420)。在本文中所公开的示例中,示例分支预测器120使用饱和计数器来预测断言。然而,附加地或可替代地,可以使用用于预测哪个分支预测断言的任何其他方法,诸如,例如,静态预测、下一行预测、两级自适应预测器、本地分支预测、全局分支预测、融合分支预测等。
指令执行器125推测地执行与预测的分支相关联的指令。(框425)。当推测地执行指令时,示例指令执行器可以将执行的指令的结果存储到处理器105的存储器位置(例如,寄存器)中,使得当断言最终被确定时,稍后可以访问该结果。
然后,分支预测器120等待以确定是否预测了正确的分支。(框430)。如果预测了正确的分支(框430返回“是”作为结果),则使用了在框425中计算的推测结果,并且在框405,分支预测器120等候另外的指令。如果没有预测正确的分支(框430返回“否”作为结果),则与未被预测的分支相关联的指令由指令执行器125来执行。(框435)。
然后,性能计数器将分支错误预测的指示和/或与错误预测相关联的指令地址存储到处理器105的存储器中。(框440)。存储分支错误预测的指示使得分支预测器120能够利用错误预测信息设法在未来减小错误预测。此外,错误预测信息对于性能监测器145也是可用的,使得指令优化器110可以在分支预测器120确定是否使用推测执行之前对指令进行优化。
图5是表示可以被执行以用于实现图1的示例指令优化器110从而从处理器105中取回错误预测统计的示例机器可读指令500的流程图。图5的示例过程当执行时使得性能监测器145能够访问处理器105的性能计数器130,来取回关于分支预测器120的分支错误预测的信息。图5的示例过程500在示例性能监测器145访问硬件处理器执行统计时开始。(框505)。在所示的示例中,性能监测器145经由性能计数器130来访问执行统计。然而,可以以任何其他方式来访问执行统计。示例性能监测器145确定执行统计是否指示分支错误预测已经发生。(框510)。
如果没有识别出分支错误预测,则示例性能监测器145等待一阈值时间段。(框512)。在所示的示例中,一阈值时间段是五秒。然而,附加地或可替代地,可以使用任何其他阈值。在一些示例中,性能监测器145等待直到事件发生(例如,触发了输入、指令由指令优化器接收以用于优化等)。在一些示例中,示例性能监测器145不在访问硬件处理器执行统计中间进行等待(即,框512被省略)。
如果识别出分支错误预测统计,则示例性能监测器请求与识别的错误预测相关联的地址(或者多个地址)。(框515)。然后,示例性能监测器将与识别的错误预测相关联的地址存储到错误预测数据存储装置。(框520)。在所示的示例中,存储了与错误预测相关联地被识别的指令的指示(例如,指针)。然而,附加地或可替代地,可以使用用于存储识别的错误预测的指示的任何其他方法。例如,示例性能监测器145可以对计数器进行初始化和/或递增计数器,所述计数器与和错误预测相关联的识别的地址相关联。然后,示例性能监测器在再次访问硬件处理器执行统计(框505)之前,进行等待(框512)。
图6是表示可以被执行以用于实现图1的示例指令优化器110的示例机器可读指令600的流程图。图6的示例过程600在区域形成器155访问将由处理器105执行的指令时开始。(框605)。在图6的示出的示例中,区域形成器155在运行时期间(例如,当程序被执行时)访问将由处理器105执行的指令。然而,示例区域形成器155可以在任何其他时间和/或以任何其他方式(诸如,例如当指令正被编译时)来访问指令。
示例区域形成器155检查指令以识别预测的块。(框610)。在所示的示例中,通过在指令内定位分支命令(例如,图2的分支命令210)来识别预测的块。然而,附加地或可替代地,可以使用用于识别预测的块的任何其它方法。例如,在一些示例中,区域形成器155识别由分支命令使用的地址,以识别预测的块。
然后,指令分析器140估计识别的块的执行频率。(框615)。在所示的示例中,示例指令分析器140与示例处理器105的性能计数器130进行交互以确定与识别的块相关联的指令地址在给定的一段时间内(例如,过去的十分钟、过去的一小时等)已被执行的次数。指令执行的过去的认知被用于估计该块在未来将要被执行的频率。然而,示例指令分析器140可以利用任何其他方法来估计块的执行频率。例如,指令分析器140可以利用硬件中断、代码插桩、指令仿真等来估计块的执行频率。
然后,示例区域形成器155确定估计的执行频率是否大于阈值频率。(框620)。在一些示例中,附加地或可替代地,可以使用除了“大于”比较之外的逻辑操作,诸如,例如大于等于、小于、小于等于、等于等。在所示的示例中,阈值执行频率是每分钟一百次。然而,附加地或可替代地,可以使用任何其他的阈值频率。此外,附加地或可替代地,可以使用除了执行频率以外的因素。例如,执行计数可以用于确定块是否应该被包括在区域中。
如果估计的执行频率大于阈值频率(框620返回“是”作为结果),示例区域形成器155将块包括在区域中。(框625)。如果估计的执行频率不大于阈值频率(框620返回“否”作为结果),则示例区域形成器155识别与该块相关联的一个或多个指令地址。(框630)。示例区域形成器155访问由性能监测器145(例如,如关于图5所描述的)进行的存储在错误预测数据存储150中的错误预测统计,以识别该块是否应该被包括在区域中。(框635)。
在本文中所公开的示例中,错误预测统计是和与该块相关联的一个或多个指令地址相关联的错误预测的发生的数量。区域形成器155确定错误预测统计是否大于错误预测阈值。(框640)。在所示的示例中,错误预测阈值是发生的数量(例如,五十个错误预测、一百个错误预测等)。然而,错误预测阈值可以以任何其他方式来表示,诸如,例如,与指令地址相关联的错误预测与指令地址的执行的总数量相比的百分比(例如,高于百分之四十的错误预测、高于百分之七十的错误预测等)。
在一些示例中,块可以包括多个指令。在这样的示例中,针对与该块相关联的指令地址中的每一个的错误预测统计可以与错误预测阈值进行比较。在一些示例中,针对块的错误预测统计可以被认为是与该块相关联的指令地址的最大错误预测统计。然而,附加地或可替代地,可以使用用于识别针对块(与块内的单独指令不同)的错误预测统计的任何其它方法,诸如,例如与该块相关联的指令地址的平均错误预测统计、与该块相关联的指令地址的中位数错误预测统计等。此外,在一些示例中,框640被评估用于与该块相关联的每个指令地址,并且如果与块相关联的指令地址的错误预测统计中的任何一个或多个大于错误预测阈值,则产生真结果。
如果错误预测统计大于错误预测阈值(框640返回“是”作为结果),则示例区域形成器155将该块包括在区域中。(框625)。一旦区域形成器155将该块包括在区域中(框625)或识别出错误预测统计不大于错误预测阈值(框640返回“否”作为结果),区域形成器155确定是否存在用于包括在区域中的任何附加的块。(框642)。在所示的示例中,区域形成器155确定是否存在还未被区域形成器155分析的附加的块。然而,附加地或可替代地,可以使用用于确定是否存在用于包括在区域中的附加的块的任何其他方法。例如,示例区域形成器155可以确定块是否是基于与由区域形成器155识别的先前的块(例如,在框610种识别的块)相同的断言而进行断言的。如果存在附加的块(块642返回“是”作为结果),则控制进行到框610,其中框610到框642的过程被重复直到没有附加的块可用于包括在区域中。
当示例区域形成器155确定不存在用于包括在区域中的附加的块(框642返回“否”作为结果)时,则示例区域形成器155确定区域是否是完整的。(框645)。在本文中所公开的示例中,当前面的区域包括与相同的断言相关联的至少两个块时,区域被认为是完整的。如果区域是完整的(框645返回“是”作为结果),则示例转换器160在该区域上执行IF转换以对指令进行优化。(框650)。IF转换通过将条件语句转换为直线式代码而减小了分支错误预测的影响。上面关于图3公开了示例IF转换。然而,附加地或可替代地,可以对指令执行任何其它的优化。然后,优化的指令被提供给处理器105以用于由区域形成器155来执行。(框655)。返回到框645,如果区域形成器155确定区域不是完整的(框645返回“否”作为结果),则示例区域形成器155将未被优化的指令提供给处理器105以用于执行(框665)。
图7是能够执行图4、图5和/或图6的指令以实现图1的示例处理器105和/或示例指令优化器110的示例处理器平台700的框图。处理器平台700可以是例如服务器、个人计算机、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板计算机)、可穿戴设备、个人数字助理(PDA)、因特网装置、DVD播放器、CD播放器、数字视频录像机、蓝光播放器、游戏控制台、个人视频录像机、机顶盒、或任何其他类型的计算设备。
所示的示例中的处理器平台700包括处理器712。所示的示例中的处理器105是硬件。例如,处理器712可以由来自任何期望的系列或制造商的一个或多个集成电路、逻辑电路、微处理器或控制器来实现。
所示的示例中的处理器712包括本地存储器713(例如,高速缓存)。在图7所示的示例中,处理器712可以实现示例分支预测器120、示例指令执行器125、示例性能计数器130、示例指令分析器140、示例性能监测器145、示例区域形成器155、和/或示例转换器160。所示的示例中的处理器712经由总线718与包括易失性存储器714和非易失性存储器716的主存储器进行通信。易失性存储器714可以由以下来实现:同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)、和/或任何其他类型的随机存取存储器设备。非易失性存储器716可以由闪存和/或任何其它期望的类型的存储器设备来实现。对主存储器714、716进行存取是由存储器控制器来控制的。在图7所示的示例中,示例非易失性存储器716存储错误预测数据存储150。
所示的示例中的处理器平台700还包括接口电路720。接口电路720可以由任何类型的接口标准(诸如,例如以太网接口、通用串行总线(USB)、和/或PCI快速接口)来实现。
在所示的示例中,一个或多个输入设备722被连接到接口电路720。输入设备722准许用户将数据和指令输入到处理器712。输入设备可以由以下来实现:例如音频传感器、麦克风、摄像机(静止的或视频)、键盘、按键、鼠标、触摸屏、触控板、轨迹球、isopoint和/或语音识别系统。
一个或多个输出设备724也可以被连接到所示的示例中的接口电路720。输出设备724可以例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器、阴极射线管显示器(CRT)、触摸屏、触觉输出设备、发光二极管(LED)、打印机和/或扬声器)来实现。因此,所示的示例中的接口电路720通常包括图像驱动卡、图像驱动芯片或图像驱动处理器。
所示的示例中的接口电路720还包括通信设备,例如,发射机、接收机、收发机、调制解调器和/或网络接口卡,以用于促进经由网络726(例如,以太网连接、数字用户专线(DSL)、电话线、同轴电缆、蜂窝电话系统等)与外部机器(例如,任何类型的计算设备)的数据的交换。
所示的示例中的处理器平台700还包括一个或多个大容量存储设备728以用于存储软件和/或数据。这样的大容量存储设备728的示例包括软盘驱动器、硬盘驱动器、压缩盘驱动器、蓝光盘驱动器、RAID系统、和数字通用盘(DVD)驱动器。
图4、图5和/或图6的编码的指令732可以被存储在大容量存储设备728、易失性存储器714、非易失性存储器716中、和/或存储在可移除有形计算机可读存储介质(例如,CD或DVD)上。
根据前述内容,将会理解的是,上面公开的方法、装置和制品能够使指令的块包括在其中应用了IF转换的区域中。当选择了具有高动态执行计数的区域(例如,经常被执行的区域)时,得到的优化的指令产生来自处理器的更好的性能和/或功率节省。此外,通过考虑块的错误预测统计以用于包括在区域中,不具有高动态执行计数但是经常由处理器的分支预测器错误地预测的指令的块可以被包括在区域中以用于优化。再一次,那些得到的优化的指令产生来自处理器的更好的性能和/或功率节省。
示例可以包括以下主题:例如,方法、用于执行所述方法的动作的单元、包括指令的至少一个机器可读介质,所述指令当由机器执行时使得所述机器根据本文所描述的实施例和示例执行所述方法、或装置、或系统的动作,以对由处理器执行的指令进行优化。
示例1是一种用于对指令进行优化的装置,所述装置包括指令分析器,其用于在要由硬件处理器执行的指令内识别出断言的块。示例装置包括性能监测器,其用于基于与所述断言的块相关联的指令地址来访问错误预测统计。示例装置包括区域形成器,其用于响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中以用于优化。
示例2包括示例1所述的主题,并且还包括转换器,其用于响应于所述块包括在所述断言的区域中,对所述断言的区域进行优化以生成优化的指令,所述区域形成器用于将所述优化的指令提供给所述硬件处理器。
示例3包括示例2所述的主题,其中,所述转换器用于响应于所述区域形成器确定所述断言的区域是完整的,而对所述断言的区域进行优化。
示例4包括示例3所述的主题,其中,所述区域形成器用于通过确定所述断言的区域包括至少两个断言的块,来确定所述断言的区域是完整的。
示例5包括示例1-4中任一项所述的主题,其中,所述性能监测器用于访问来自所述硬件处理器的性能计数器的所述错误预测统计。
示例6包括示例1-5中任一项所述的主题,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
示例7包括示例1-6中任一项所述的主题,并且还包括指令分析器,其用于估计所述断言的块的执行频率。所述区域形成器用于响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
示例8是一种对指令进行优化的方法,所述方法包括在要由硬件处理器执行的指令内识别出断言的块。示例方法包括基于与所述断言的块相关联的指令地址来访问错误预测统计。示例方法还包括响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中。
示例9包括示例8所述的主题,并且还包括响应于将所述块包括在所述断言的区域中,对所述断言的区域进行优化以生成优化的指令。示例9还包括将所述优化的指令提供给所述硬件处理器。
示例10包括示例9所述的主题,其中,所述优化是响应于确定出所述断言的区域是完整的而执行的。
示例11包括示例10所述的主题,其中,确定所述断言的区域是完整的包括确定所述断言的区域包括至少两个断言的块。
示例12包括示例8-11中任一项所述的主题,并且还包括估计所述断言的块的执行频率。示例12还包括响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
示例13包括示例8-12中任一项所述的主题,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
示例14包括示例8-13中任一项所述的主题,其中,对所述断言的区域进行优化还包括对所述断言的区域执行IF转换。
示例15包括示例8-14中任一项所述的主题,其中,所述断言的块是第一断言的块,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计。示例15还包括响应于确定出所述断言的区域是不完整的,而识别在所述指令内的第二断言的块。示例15还包括基于所述第二断言的块的第二指令地址来访问第二错误预测统计。示例15还包括响应于确定出所述第二错误预测统计高于所述错误预测阈值,将所述第二断言的块包括在所述断言的区域中。
示例16包括示例8-15中任一项所述的主题,其中,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计。示例16还包括基于与所述断言的块相关联的第二指令地址来访问第二错误预测统计。示例16还包括响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述断言的块包括在所述断言的区域中。
示例17是至少一种有形机器可读介质,其包括指令,所述指令当被执行时,使得机器至少在要由硬件处理器执行的指令内识别出断言的块;基于与所述断言的块相关联的指令地址来访问错误预测统计;并且响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中。
示例18包括示例17所述的主题,其中,所述指令当被执行时,使得所述机器响应于将所述块包括在所述断言的区域中,而对所述断言的区域进行优化以生成优化的指令;并且将所述优化的指令提供给所述硬件处理器。
示例19包括示例18所述的主题,其中,响应于确定出所述断言的区域是完整的,而执行所述优化。
示例20包括示例19所述的主题,其中,确定所述断言的区域是完整的包括确定所述断言的区域包括至少两个断言的块。
示例21包括示例17-20中任一项所述的主题,其中,所述指令当被执行时,使得所述机器用于估计所述断言的块的执行频率;并且响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
示例22包括示例17-21中任一项所述的主题,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
示例23包括示例17-22中任一项所述的主题,其中,对所述断言的区域进行优化还包括对所述断言的区域执行IF转换。
示例24包括示例17-23中任一项所述的主题,其中,所述断言的块是第一断言的块,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且所述指令当被执行时,使得所述机器响应于确定出所述断言的区域是不完整的,而在所述指令内识别出第二断言的块。示例24的指令当被执行时,使得所述机器基于所述第二断言的块的第二指令地址来访问第二错误预测统计。示例24的指令当被执行时,使得所述机器响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述第二断言的块包括在所述断言的区域中。
示例25包括示例17-24中任一项所述的主题,其中,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计。示例25的指令当被执行时,使得所述机器基于与所述断言的块相关联的第二指令地址来访问第二错误预测统计;并且响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述断言的块包括在所述断言的区域中。
示例26是一种装置,所述装置包括用于在要由硬件处理器执行的指令内识别出断言的块的单元。示例26还包括用于基于与所述断言的块相关联的指令地址来访问错误预测统计的单元。示例26还包括用于响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中的单元。
示例27包括示例26所述的主题,并且还包括用于响应于将所述块包括在所述断言的区域中而对所述断言的区域进行优化以生成优化的指令的单元。示例27还包括用于将所述优化的指令提供给所述硬件处理器的单元。
示例28包括示例27所述的主题,其中,响应于确定出所述断言的区域是完整的,而执行所述优化。
示例29包括示例28所述的主题,其中,用于确定所述断言的区域是完整的单元包括用于确定所述断言的区域包括至少两个断言的块的单元。
示例30包括示例26-29中任一项所述的主题,并且还包括用于估计所述断言的块的执行频率的单元。示例30还包括用于响应于确定出估计的执行频率高于阈值频率而将所述断言的块包括在所述区域中的单元。
示例31包括示例26-30中任一项所述的主题,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
示例32包括示例26-31中任一项所述的主题,其中,用于对所述断言的区域进行优化的单元包括用于对所述断言的区域执行IF转换的单元。
示例33包括示例26-32中任一项所述的主题,其中,所述断言的块是第一断言的块,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计。示例33还包括用于响应于确定出所述断言的区域是不完整的而在所述指令内识别出第二断言的块的单元。示例33还包括用于基于所述第二断言的块的第二指令地址来访问第二错误预测统计的单元。示例33还包括用于响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述第二断言的块包括在所述断言的区域中的单元。
示例34包括示例26-33中任一项所述的主题,其中,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计。示例34还包括用于基于与所述断言的块相关联的第二指令地址来访问第二错误预测统计的单元。示例34还包括用于响应于确定出所述第二错误预测统计高于所述错误预测阈值而将所述断言的块包括在所述断言的区域中的单元。
尽管本文中已经公开了某些示例性方法、装置和制品,但是本专利的覆盖范围不限于此。相反,本专利涵盖了落入本专利的权利要求的范围内的所有方法、装置和制品。

Claims (25)

1.一种用于对指令进行优化的装置,所述装置包括:
指令分析器,其用于在要由硬件处理器执行的指令内识别出断言的块;
性能监测器,其用于基于与所述断言的块相关联的指令地址来访问错误预测统计;以及
区域形成器,其用于响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中以用于优化。
2.根据权利要求1所述的装置,还包括转换器,其用于响应于所述块被包括在所述断言的区域中,而对所述断言的区域进行优化以生成优化的指令,所述区域形成器用于将所述优化的指令提供给所述硬件处理器。
3.根据权利要求2所述的装置,其中,所述转换器用于响应于所述区域形成器确定出所述断言的区域是完整的,而对所述断言的区域进行优化。
4.根据权利要求3所述的装置,其中,所述区域形成器用于通过确定所述断言的区域包括至少两个断言的块,来确定所述断言的区域是完整的。
5.根据权利要求1-4中任一项所述的装置,其中,所述性能监测器用于访问来自所述硬件处理器的性能计数器的所述错误预测统计。
6.根据权利要求1-5中任一项所述的装置,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
7.根据权利要求1-6中任一项所述的装置,还包括指令分析器,其用于估计所述断言的块的执行频率,所述区域形成器用于响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
8.一种对指令进行优化的方法,所述方法包括:
在要由硬件处理器执行的指令内识别出断言的块;
基于与所述断言的块相关联的指令地址来访问错误预测统计;并且
响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中。
9.根据权利要求8所述的方法,还包括:
响应于将所述块包括在所述断言的区域中,而对所述断言的区域进行优化以生成优化的指令;并且
将所述优化的指令提供给所述硬件处理器。
10.根据权利要求9所述的方法,其中,所述优化是响应于确定出所述断言的区域是完整的而执行的。
11.根据权利要求10所述的方法,其中,确定所述断言的区域是完整的包括确定所述断言的区域包括至少两个断言的块。
12.根据权利要求8-11中任一项所述的方法,还包括:
估计所述断言的块的执行频率;并且
响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
13.根据权利要求8-12中任一项所述的方法,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
14.根据权利要求8-13中任一项所述的方法,其中,对所述断言的区域进行优化还包括对所述断言的区域执行IF转换。
15.根据权利要求8-14中任一项所述的方法,其中,所述断言的块是第一断言的块,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且还包括:
响应于确定出所述断言的区域是不完整的,而在所述指令内识别出第二断言的块;
基于所述第二断言的块的第二指令地址来访问第二错误预测统计;并且
响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述第二断言的块包括在所述断言的区域中。
16.根据权利要求8-15中任一项所述的方法,其中,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且还包括:
基于与所述断言的块相关联的第二指令地址来访问第二错误预测统计;并且
响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述断言的块包括在所述断言的区域中。
17.包括指令的一种有形机器可读介质,所述指令当被执行时,使得机器至少用于:
在要由硬件处理器执行的指令内识别出断言的块;
基于与所述断言的块相关联的指令地址来访问错误预测统计;并且
响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中。
18.根据权利要求17所述的机器可读介质,其中,所述指令当被执行时,使得所述机器用于:
响应于将所述块包括在所述断言的区域中,而对所述断言的区域进行优化以生成优化的指令;并且
将所述优化的指令提供给所述硬件处理器。
19.根据权利要求18所述的机器可读介质,其中,所述优化是响应于确定出所述断言的区域是完整的而被执行的。
20.根据权利要求19所述的机器可读介质,其中,确定所述断言的区域是完整的包括确定所述断言的区域包括至少两个断言的块。
21.根据权利要求17-20中任一项所述的机器可读介质,其中,所述指令当被执行时,使得所述机器用于:
估计所述断言的块的执行频率;并且
响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
22.根据权利要求17-21中任一项所述的机器可读介质,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
23.根据权利要求17-22中任一项所述的机器可读介质,其中,所述断言的块是第一断言的块,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且所述指令当被执行时,使得所述机器用于:
响应于确定出所述断言的区域是不完整的,而在所述指令内识别出第二断言的块;
基于所述第二断言的块的第二指令地址来访问第二错误预测统计;并且
响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述第二断言的块包括在所述断言的区域中。
24.根据权利要求17-23中任一项所述的机器可读介质,其中,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且所述指令当被执行时,使得所述机器用于:
基于与所述断言的块相关联的第二指令地址来访问第二错误预测统计;并且
响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述断言的块包括在所述断言的区域中。
25.一种装置,包括:
用于在要由硬件处理器执行的指令内识别出断言的块的单元;
用于基于与所述断言的块相关联的指令地址来访问错误预测统计的单元;以及
用于响应于确定出所述错误预测统计高于错误预测阈值而将所述断言的块包括在断言的区域中的单元。
CN201680027157.0A 2015-06-11 2016-05-06 用于对由处理器执行的指令进行优化的方法和装置 Active CN107592924B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/737,058 US9916164B2 (en) 2015-06-11 2015-06-11 Methods and apparatus to optimize instructions for execution by a processor
US14/737,058 2015-06-11
PCT/US2016/031235 WO2016200522A1 (en) 2015-06-11 2016-05-06 Methods and apparatus to optimize instructions for execution by a processor

Publications (2)

Publication Number Publication Date
CN107592924A true CN107592924A (zh) 2018-01-16
CN107592924B CN107592924B (zh) 2022-03-22

Family

ID=57503805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680027157.0A Active CN107592924B (zh) 2015-06-11 2016-05-06 用于对由处理器执行的指令进行优化的方法和装置

Country Status (4)

Country Link
US (1) US9916164B2 (zh)
EP (1) EP3308261A4 (zh)
CN (1) CN107592924B (zh)
WO (1) WO2016200522A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117667221A (zh) * 2024-01-31 2024-03-08 睿思芯科(深圳)技术有限公司 混合算法的两级分支预测系统、方法及相关设备
CN117667221B (zh) * 2024-01-31 2024-04-30 睿思芯科(深圳)技术有限公司 混合算法的两级分支预测系统、方法及相关设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170168832A1 (en) * 2015-12-11 2017-06-15 International Business Machines Corporation Instruction weighting for performance profiling in a group dispatch processor

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
CN1582429A (zh) * 2001-11-05 2005-02-16 英特尔公司 在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法
US20070162896A1 (en) * 2006-01-10 2007-07-12 Intel Corporation Method and apparatus for generating run time profiles for program compilation
US20100287358A1 (en) * 2009-05-05 2010-11-11 International Business Machines Corporation Branch Prediction Path Instruction
CN102934075A (zh) * 2010-06-28 2013-02-13 高通股份有限公司 用于使用预先通知技术改变程序的顺序流程的方法和设备
US20130346728A1 (en) * 2008-11-05 2013-12-26 Ohad Falik Optimizing Performance Of Instructions Based On Sequence Detection Or Information Associated With The Instructions
US20140013020A1 (en) * 2012-07-06 2014-01-09 Arm Limited Data processing apparatus and method
US20140059334A1 (en) * 2010-11-16 2014-02-27 International Business Machines Corporation Autonomic Hotspot Profiling Using Paired Performance Sampling
US20140122836A1 (en) * 2012-11-01 2014-05-01 International Business Machines Corporation Confidence-driven selective predication of processor instructions
CN104040487A (zh) * 2011-12-23 2014-09-10 英特尔公司 用于合并掩码模式的指令
CN104049944A (zh) * 2013-03-15 2014-09-17 英特尔公司 将有条件短前向分支转换成计算等效的所断言指令
CN104077107A (zh) * 2013-03-30 2014-10-01 英特尔公司 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
US6092187A (en) 1997-09-19 2000-07-18 Mips Technologies, Inc. Instruction prediction based on filtering
US6584611B2 (en) * 1999-02-17 2003-06-24 Elbrus International Limited Critical path optimization—unload hard extended scalar block
US20030023959A1 (en) * 2001-02-07 2003-01-30 Park Joseph C.H. General and efficient method for transforming predicated execution to static speculation
US7188234B2 (en) 2001-12-12 2007-03-06 Intel Corporation Run-ahead program execution with value prediction
US20040194077A1 (en) * 2003-03-28 2004-09-30 Jayashankar Bharadwaj Methods and apparatus to collect profile information
US20040210886A1 (en) * 2003-04-15 2004-10-21 Sverre Jarp Optimized switch statement code employing predicates
US7617496B2 (en) * 2004-04-23 2009-11-10 Apple Inc. Macroscalar processor architecture
US8201159B2 (en) * 2006-08-04 2012-06-12 International Business Machines Corporation Method and apparatus for generating data parallel select operations in a pervasively data parallel system
US8250556B1 (en) * 2007-02-07 2012-08-21 Tilera Corporation Distributing parallelism for parallel processing architectures
US8453129B2 (en) * 2008-04-24 2013-05-28 International Business Machines Corporation Using hardware interrupts to drive dynamic binary code recompilation
US20100262813A1 (en) * 2009-04-14 2010-10-14 International Business Machines Corporation Detecting and Handling Short Forward Branch Conversion Candidates
US8191019B2 (en) * 2009-07-17 2012-05-29 Achronix Semiconductor Corporation Non-predicated to predicated conversion of asynchronous representations
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
US9952869B2 (en) 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
US20130007424A1 (en) 2011-06-29 2013-01-03 Gorton Jr Richard C Cascading indirect branch instructions
JP2013214820A (ja) * 2012-03-30 2013-10-17 Fujitsu Ltd 基地局装置および通信方法
US9043773B2 (en) 2013-03-15 2015-05-26 Intel Corporation Identification and management of unsafe optimizations
US10795683B2 (en) * 2014-06-11 2020-10-06 International Business Machines Corporation Predicting indirect branches using problem branch filtering and pattern cache
US9658855B2 (en) * 2014-10-10 2017-05-23 Fujitsu Limited Compile method and compiler apparatus

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
CN1582429A (zh) * 2001-11-05 2005-02-16 英特尔公司 在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法
US20070162896A1 (en) * 2006-01-10 2007-07-12 Intel Corporation Method and apparatus for generating run time profiles for program compilation
US20130346728A1 (en) * 2008-11-05 2013-12-26 Ohad Falik Optimizing Performance Of Instructions Based On Sequence Detection Or Information Associated With The Instructions
US20100287358A1 (en) * 2009-05-05 2010-11-11 International Business Machines Corporation Branch Prediction Path Instruction
CN102934075A (zh) * 2010-06-28 2013-02-13 高通股份有限公司 用于使用预先通知技术改变程序的顺序流程的方法和设备
US20140059334A1 (en) * 2010-11-16 2014-02-27 International Business Machines Corporation Autonomic Hotspot Profiling Using Paired Performance Sampling
CN104040487A (zh) * 2011-12-23 2014-09-10 英特尔公司 用于合并掩码模式的指令
US20140013020A1 (en) * 2012-07-06 2014-01-09 Arm Limited Data processing apparatus and method
US20140122836A1 (en) * 2012-11-01 2014-05-01 International Business Machines Corporation Confidence-driven selective predication of processor instructions
CN104049944A (zh) * 2013-03-15 2014-09-17 英特尔公司 将有条件短前向分支转换成计算等效的所断言指令
CN104077107A (zh) * 2013-03-30 2014-10-01 英特尔公司 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SCOTT.A.MAHLKE等: "Effective Compiler Support for Predicated Execution Using the Hyperblock", 《CENTER FOR RELIABLE AND HIGH-PERFORMANCE COMPUTING UNIVERSITY OF ILLINOIS》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117667221A (zh) * 2024-01-31 2024-03-08 睿思芯科(深圳)技术有限公司 混合算法的两级分支预测系统、方法及相关设备
CN117667221B (zh) * 2024-01-31 2024-04-30 睿思芯科(深圳)技术有限公司 混合算法的两级分支预测系统、方法及相关设备

Also Published As

Publication number Publication date
EP3308261A4 (en) 2019-01-16
US20160364240A1 (en) 2016-12-15
US9916164B2 (en) 2018-03-13
WO2016200522A1 (en) 2016-12-15
EP3308261A1 (en) 2018-04-18
CN107592924B (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
JP6345623B2 (ja) 条件付き非ブランチング命令の非実行を予測するための方法および機器
CN102934075B (zh) 用于使用预先通知技术改变程序的顺序流程的方法和设备
KR101788683B1 (ko) 루프에 대한 데이터 프리페치 요청들을 취소하기 위한 방법들 및 장치
US10607137B2 (en) Branch predictor selection management
US20080072024A1 (en) Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors
US20120079255A1 (en) Indirect branch prediction based on branch target buffer hysteresis
US20130346727A1 (en) Methods and Apparatus to Extend Software Branch Target Hints
KR20080023723A (ko) 분기 명령들을 예측하기 위한 방법 및 장치
US20090265531A1 (en) Code Evaluation for In-Order Processing
JP5745638B2 (ja) 分岐命令の中に符号化されたバイモーダル分岐予測子
US20190004803A1 (en) Statistical correction for branch prediction mechanisms
US20140156978A1 (en) Detecting and Filtering Biased Branches in Global Branch History
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
CN110109705A (zh) 一种支持嵌入式边缘计算的超标量处理器分支预测方法
CN116048627B (zh) 指令缓冲方法、装置、处理器、电子设备及可读存储介质
WO2019005458A1 (en) BRANCH PREDICTION FOR FIXED STEERING BRANCH INSTRUCTIONS
CN107592924A (zh) 用于对由处理器执行的指令进行优化的方法和装置
US20150248295A1 (en) Numerical stall analysis of cpu performance
US10838731B2 (en) Branch prediction based on load-path history
EP2348399A1 (en) System and method for processing interrupts in a computing system
US20130007424A1 (en) Cascading indirect branch instructions
EP3933597A1 (en) Code flow trace compression employing branch prediction for implicit code flow data encoding in a processor
Najjar et al. Pipeline Hazards Resolution for a New Programmable Instruction Set RISC Processor
Alexandre RST: Reuse through Speculation on Traces

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