CN107592924B - 用于对由处理器执行的指令进行优化的方法和装置 - Google Patents
用于对由处理器执行的指令进行优化的方法和装置 Download PDFInfo
- Publication number
- CN107592924B CN107592924B CN201680027157.0A CN201680027157A CN107592924B CN 107592924 B CN107592924 B CN 107592924B CN 201680027157 A CN201680027157 A CN 201680027157A CN 107592924 B CN107592924 B CN 107592924B
- Authority
- CN
- China
- Prior art keywords
- predicated
- block
- misprediction
- instruction
- region
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000004044 response Effects 0.000 claims abstract description 36
- 238000005457 optimization Methods 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 29
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000004519 manufacturing process Methods 0.000 abstract description 4
- 238000003860 storage Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 10
- 230000001934 delay Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
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 (19)
1.一种用于对指令进行优化的装置,所述装置包括:
指令分析器,其用于在要由硬件处理器执行的指令内识别出断言的块;
性能监测器,其用于访问与所述断言的块相对应的错误预测统计,所述错误预测统计表示和与所述断言的块相关联的一个或多个指令地址相关联的错误预测发生的数量;以及
区域形成器,其用于响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中以用于优化。
2.根据权利要求1所述的装置,还包括转换器,其用于响应于所述块被包括在所述断言的区域中,而对所述断言的区域进行优化以生成优化的指令,所述区域形成器用于将所述优化的指令提供给所述硬件处理器。
3.根据权利要求2所述的装置,其中,所述转换器用于响应于所述区域形成器确定出所述断言的区域是完整的,而对所述断言的区域进行优化。
4.根据权利要求3所述的装置,其中,所述区域形成器用于通过确定所述断言的区域包括至少两个断言的块,来确定所述断言的区域是完整的。
5.根据权利要求1-4中任一项所述的装置,其中,所述性能监测器用于访问来自所述硬件处理器的性能计数器的所述错误预测统计。
6.根据权利要求1-4中任一项所述的装置,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
7.根据权利要求1-4中任一项所述的装置,还包括指令分析器,其用于估计所述断言的块的执行频率,所述区域形成器用于响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
8.一种对指令进行优化的方法,所述方法包括:
在要由硬件处理器执行的指令内识别出断言的块;
访问与所述断言的块相对应的错误预测统计,所述错误预测统计表示和与所述断言的块相关联的一个或多个指令地址相关联的错误预测发生的数量;并且
响应于确定出所述错误预测统计高于错误预测阈值,而将所述断言的块包括在断言的区域中。
9.根据权利要求8所述的方法,还包括:
响应于将所述块包括在所述断言的区域中,而对所述断言的区域进行优化以生成优化的指令;并且
将所述优化的指令提供给所述硬件处理器。
10.根据权利要求9所述的方法,其中,所述优化是响应于确定出所述断言的区域是完整的而执行的。
11.根据权利要求10所述的方法,其中,确定所述断言的区域是完整的包括确定所述断言的区域包括至少两个断言的块。
12.根据权利要求8-11中任一项所述的方法,还包括:
估计所述断言的块的执行频率;并且
响应于确定出估计的执行频率高于阈值频率,而将所述断言的块包括在所述区域中。
13.根据权利要求8-11中任一项所述的方法,其中,所述错误预测统计表示所述断言的块已被所述硬件处理器的分支预测器错误预测的次数。
14.根据权利要求8-11中任一项所述的方法,其中,对所述断言的区域进行优化还包括对所述断言的区域执行IF转换。
15.根据权利要求8-11中任一项所述的方法,其中,所述断言的块是第一断言的块,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且还包括:
响应于确定出所述断言的区域是不完整的,而在所述指令内识别出第二断言的块;
基于所述第二断言的块的第二指令地址来访问第二错误预测统计;并且
响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述第二断言的块包括在所述断言的区域中。
16.根据权利要求8-11中任一项所述的方法,其中,所述指令地址是第一指令地址,所述错误预测统计是第一错误预测统计,并且还包括:
基于与所述断言的块相关联的第二指令地址来访问第二错误预测统计;并且
响应于确定出所述第二错误预测统计高于所述错误预测阈值,而将所述断言的块包括在所述断言的区域中。
17.一种对指令进行优化的装置,包括用于执行根据权利要求8-16中的任一项所述的方法的单元。
18.一种对指令进行优化的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求8-16中的任一项所述的方法。
19.一种具有指令的计算机可读介质,所述指令在被处理器执行时,使所述处理器执行根据权利要求8-16中的任一项所述的方法。
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 CN107592924A (zh) | 2018-01-16 |
CN107592924B true 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) |
Families Citing this family (1)
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 (6)
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 | 英特尔公司 | 在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法 |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
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 (26)
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 |
US7975263B2 (en) * | 2006-01-10 | 2011-07-05 | Intel Corporation | Method and apparatus for generating run time profiles for program compilation |
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 |
US8543796B2 (en) * | 2008-11-05 | 2013-09-24 | Intel Corporation | Optimizing performance of instructions based on sequence detection or information associated with the instructions |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
US10338923B2 (en) * | 2009-05-05 | 2019-07-02 | International Business Machines Corporation | Branch prediction path wrong guess instruction |
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 |
US8615742B2 (en) * | 2010-11-16 | 2013-12-24 | International Business Machines Corporation | Autonomic hotspot profiling using paired performance sampling |
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 | 基地局装置および通信方法 |
US9021172B2 (en) * | 2012-07-06 | 2015-04-28 | Arm Limited | Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter |
US9389868B2 (en) * | 2012-11-01 | 2016-07-12 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
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 |
-
2015
- 2015-06-11 US US14/737,058 patent/US9916164B2/en not_active Expired - Fee Related
-
2016
- 2016-05-06 WO PCT/US2016/031235 patent/WO2016200522A1/en active Application Filing
- 2016-05-06 CN CN201680027157.0A patent/CN107592924B/zh active Active
- 2016-05-06 EP EP16807980.4A patent/EP3308261A4/en not_active Withdrawn
Patent Citations (6)
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 | 英特尔公司 | 在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法 |
CN102934075A (zh) * | 2010-06-28 | 2013-02-13 | 高通股份有限公司 | 用于使用预先通知技术改变程序的顺序流程的方法和设备 |
CN104040487A (zh) * | 2011-12-23 | 2014-09-10 | 英特尔公司 | 用于合并掩码模式的指令 |
CN104049944A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 将有条件短前向分支转换成计算等效的所断言指令 |
CN104077107A (zh) * | 2013-03-30 | 2014-10-01 | 英特尔公司 | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 |
Non-Patent Citations (1)
Title |
---|
Effective Compiler Support for Predicated Execution Using the Hyperblock;Scott.A.Mahlke等;《Center for Reliable and High-Performance Computing University of Illinois》;19921231;45-54 * |
Also Published As
Publication number | Publication date |
---|---|
CN107592924A (zh) | 2018-01-16 |
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 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5734980B2 (ja) | 条件付き非ブランチング命令の非実行を予測するための方法および機器 | |
TWI521347B (zh) | 用於減少由資料預擷取引起的快取汙染之方法及裝置 | |
US8078852B2 (en) | Predictors with adaptive prediction threshold | |
US10162635B2 (en) | Confidence-driven selective predication of processor instructions | |
US10353710B2 (en) | Techniques for predicting a target address of an indirect branch instruction | |
KR20130033476A (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
US20080072024A1 (en) | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors | |
US11748072B2 (en) | Apparatus and method for source code optimisation | |
JP5579694B2 (ja) | 復帰スタックを管理する方法および装置 | |
US20140156978A1 (en) | Detecting and Filtering Biased Branches in Global Branch History | |
CN115769189A (zh) | 指令地址转换和指令预取引擎 | |
US8250344B2 (en) | Methods and apparatus for dynamic prediction by software | |
EP3887942B1 (en) | Loop exit predictor | |
CN107592924B (zh) | 用于对由处理器执行的指令进行优化的方法和装置 | |
US20140250289A1 (en) | Branch Target Buffer With Efficient Return Prediction Capability | |
US20150248295A1 (en) | Numerical stall analysis of cpu performance | |
CA2725906C (en) | System and method for processing interrupts in a computing system | |
KR101947737B1 (ko) | 명시적 및 암시적 정보 흐름 추적 방법 및 그 장치 | |
US20130007424A1 (en) | Cascading indirect branch instructions | |
EP3933597A1 (en) | Code flow trace compression employing branch prediction for implicit code flow data encoding in a processor | |
TWI798339B (zh) | 使用送交視窗移動元件的方法、模組、設備、分析器、電腦程式和儲存媒體 | |
CN117170741A (zh) | 一种基于risc-v的防止流水线冲刷系统 |
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 |