CN101501636A - 用于基于动态可改变延迟来执行处理器指令的方法和设备 - Google Patents
用于基于动态可改变延迟来执行处理器指令的方法和设备 Download PDFInfo
- Publication number
- CN101501636A CN101501636A CNA2007800302832A CN200780030283A CN101501636A CN 101501636 A CN101501636 A CN 101501636A CN A2007800302832 A CNA2007800302832 A CN A2007800302832A CN 200780030283 A CN200780030283 A CN 200780030283A CN 101501636 A CN101501636 A CN 101501636A
- Authority
- CN
- China
- Prior art keywords
- delay
- instructions
- instruction
- length
- 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
Links
- 238000000034 method Methods 0.000 title claims description 28
- 238000011010 flushing procedure Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- 230000001934 delay Effects 0.000 claims 4
- 230000001052 transient effect Effects 0.000 claims 2
- 238000004590 computer program Methods 0.000 claims 1
- 230000008676 import Effects 0.000 claims 1
- 230000003111 delayed effect Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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 or look ahead
-
- 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
-
- 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
-
- 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 or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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 or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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 or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
指令执行延迟在系统设计已结束之后是可改变的,因此使所述系统能够动态考虑影响指令执行的各种情况。在一些实施例中,通过待由处理系统执行的应用程序确定动态延迟。在其它实施例中,通过分析先前执行的指令的历史来确定所述动态延迟。在另外其它实施例中,通过评估可用于给定应用程序的处理资源来确定所述动态延迟。无论如何,可以每一指令、多个指令或应用程序为基础动态地改变所述延迟。可通过确定用于一个或一个以上指令的第一集合的第一延迟值和用于一个或一个以上指令的第二集合的第二延迟值来控制处理器指令执行。基于所述相应延迟值来延迟所述指令集合的执行。
Description
技术领域
本发明大体上涉及微处理器,且特定来说涉及动态延迟指令执行。
背景技术
现代处理系统常规上包括主或中央处理器和一个或一个以上协处理器。主处理器将某些任务卸载到协处理器。举例来说,可将浮点、算术、图形、信号处理、字符串处理、加密和/或向量处理任务卸载到相应协处理器。置于主处理器上的计算负荷通过卸载处理器密集任务而得以减轻,因此改进系统性能。
卸载到协处理器的指令可为推测性的,即,当将指令提供到协处理器用以执行时,主处理器尚未最终决议是否应执行所述指令。这常发生于条件分支指令的情形下。当遇到条件分支指令时,处理器预测其将占用的路径;所述条件分支指令是否将跳转到不同代码流(即,占用分支),或是否在分支后继续执行指令(即,未占用分支)。处理器或协处理器接着推测性执行与所预测路径相关联的一个或一个以上指令。当稍后决议分支指令时,可确定路径被错误预测(常称为分支误预测)。当发生分支误预测时,在误预测路径中的所有指令被丢弃或冲洗。因为对误预测路径中的指令执行的任何工作是不必要的,而所述工作已大体上进行,所以可能不利地影响功率消耗。
为了减小与误预测分支相关联的不利效应,常规协处理器利用固定指令执行延迟来操作。由常规协处理器接收的指令招致对应于固定延迟的执行延迟。因而,由协处理器接收的指令的执行直到固定延迟期满才开始。一旦处理器的设计被“冻结”,就不可在不修正设计的情况下修改指令执行延迟。因此,由常规协处理器执行的每一指令招致相同固定延迟,而不考虑被执行的特定软件应用程序或执行所述软件应用程序的环境。然而,不同应用程序类型产生不同指令执行可预测性。即,与一些应用程序类型相关联的推测性指令几乎始终被正确地预测为占用,且因此,因为分支误预测的可能性相对较低,所以推测性指令执行是相当可靠的。
举例来说,对每一视频帧的每一巨集区块执行由视频解码应用程序所使用的逆转换功能。相反,执行与其它应用程序类型相关联的推测性指令可能较不可靠,从而使执行管线冲洗的可能性较高。举例来说,由视频解码应用程序执行的去块和去环滤波器功能视特定视频帧的像素值而定,且较不可预测地被执行。结果,当执行与具有不同指令执行可预测性的应用程序相关联的推测性指令时,固定指令执行延迟可妨碍处理器性能或功率。
指令执行延迟常规上固定于启用完全推测性指令执行的一个极值或固定于不启用推测性指令执行的另一极值。在完全推测性指令执行模式中,协处理器在无延迟的情况下且在指令由主处理器提交之前推测性地执行提供到所述协处理器的每一指令。因而,固定指令执行延迟实质上为零。尽管此技术对性能有益,但其在推测性指令执行变得不可预测时将妨碍功率效率。举例来说,高推测性指令常常可为误预测的,因此使得零延迟协处理器不必要地频繁执行代码。每次从执行管线冲洗与误预测指令相关联的计算时,功率效率降级。然而,归因于缺少用于发布给协处理器的新指令的额外启动等待时间而提高了性能。
相反,在非推测性执行配置中,协处理器推迟指令执行,直到主处理器提交相应指令为止。尽管就功率来说,此技术通过防止执行随后将被冲洗的指令而对高推测性指令有益,但所述技术归因于其额外启动等待时间而妨碍系统性能。当常常正确预测分支且可将分支连续馈入协处理器时,长启动等待时间得以隐藏且因此并未显著地降级性能。另一方面,当(例如)处理器正等待来从协处理器的结果时,非推测性方法大大增加指令的有效等待时间。
发明内容
根据本文中所教示的方法和设备,在处理系统中执行的指令招致动态可改变的指令执行延迟。尽管所述延迟可经改变以引起完全推测性执行或非推测性执行,但所述延迟还可引起部分推测性执行,其中指令执行一些推测性计算,但在指定级停止执行直到所述指令被提交为止。此外,所述延迟可经配置以在设定数目的循环之后允许完全推测性执行,希望所述推测性通常将在所述指令准备好更新结构状态时被决议。动态、运行时间执行延迟控制使处理系统能够考虑影响是否需要指令执行延迟或所需要的指令执行延迟程度的各种变化的情况。
在一些实施例中,动态延迟由待由处理系统执行的应用程序而确定。在其它实施例中,动态延迟通过分析先前执行的指令的历史而确定。在另外其它实施例中,动态延迟通过评估可用于给定应用程序的处理资源而确定。无论如何,延迟可以每一指令、多个指令或应用程序为基础而动态改变。
通过确定用于一个或一个以上指令的第一集合的第一延迟值和用于一个或一个以上指令的第二集合的第二延迟值,可控制处理器指令执行。基于相应延迟值来延迟所述指令集合的执行。延迟确定单元确定所述延迟值,且处理单元基于所述相应延迟值来执行所述指令集合。所述延迟确定单元可包括于主处理器或协处理器中。所述处理单元可包含被包括于所述主处理器或协处理器中的一个或一个以上执行单元。
当然,本发明不限于以上特征和优点。所属领域的技术人员在阅读以下详细描述且查看附图后将认识到额外特征和优点。
附图说明
图1是说明具有延迟确定单元的处理系统的一实施例的框图。
图2是说明用动态指令执行延迟值标记的指令的一实施例的框图。
图3是说明存储动态指令执行延迟信息的寄存器的一实施例的框图。
图4是说明用于控制处理器指令执行的程序逻辑的一实施例的逻辑流程图。
图5是说明包括具有延迟确定单元的主处理器的处理系统的一实施例的框图。
图6是说明具有包括于专用协处理器中的延迟确定单元的处理系统的一实施例的框图。
图7是说明具有延迟确定单元的处理器的一实施例的框图。
具体实施方式
图1说明处理系统10的一实施例,其包括主或中央处理器12和协处理器14。协处理器14基于动态指令执行延迟而执行由主处理器12提供到其处的指令。即,协处理器根据动态延迟而延迟指令执行。在完成设计阶段之后改变指令执行延迟的能力使处理系统10能够相应地基于调整动态延迟而动态考虑影响指令执行的各种情况。
在一些实施例中,延迟确定单元16包括于主处理器12、协处理器14或不同协处理器(未图示)中或与主处理器12、协处理器14或不同协处理器相关联,延迟确定单元16考虑待由协处理器14执行的一个或一个以上指令的特定集合的推测性性质。延迟确定单元16通过相应地改变与协处理器14相关联的指令执行延迟而考虑指令的推测性性质。一些指令的推测性可比其它指令更大或更小,即,所述指令被提交的可能性更大或更小,从而允许所述指令在主处理器12或协处理器14中更新结构状态。结构状态包括通过处理器的指令集合而对程序设计师可见的任何状态。举例来说,指令执行结果可存储于包括于主处理器12中或与主处理器12相关联的寄存器文件18中,或存储于包括于协处理器14中或与协处理器14相关联的寄存器文件19中。因而,经卸载到协处理器14的每一指令或指令集合可基于其推测性性质而招致执行延迟。举例来说,高推测性指令可招致较大执行延迟,而低推测性指令可招致较小延迟。
在其它实施例中,延迟确定单元16考虑处理资源可用于待由处理器系统10执行的应用程序的程度。即,延迟确定单元16基于例如处理速度、存储器带宽、高速缓冲存储器大小、显示器能力、电池模式、电池寿命、功率节省模式等处理资源而改变动态延迟。因而,延迟确定单元16通过相应地改变与协处理器14相关联的执行延迟而使处理系统10能够在系统性能与功率消耗之间进行折衷。举例来说,如果电池寿命是一问题,那么延迟确定单元16可改变协处理器14的延迟,使得指令直到首先由主处理器12提交才得以执行,因此降低功率消耗。
不管触发指令执行延迟的调整的条件如何,可以每一指令、多个指令或应用程序为基础而动态地改变延迟。改变指令执行延迟的能力并不防止指令管线冲洗;而是,其允许基于延迟的推测性执行控制。对用户的益处是处理系统10的动态功率与性能平衡和优化。
更详细地说,主处理器12通信式耦合到协处理器14。主处理器12包括指令单元20、一个或一个以上执行单元22和寄存器文件18。指令单元20提供对到执行单元22和协处理器14的指令流的集中式控制。可包括一个或一个以上载入/存储单元(未图示)、浮点单元(未图示)和整数单元(未图示)的执行单元22执行由指令单元20所分派的指令。寄存器文件18包含在存储器(未图示)与主处理器12的功能单元(例如,执行单元22)之间分级数据的寄存器阵列。同样,协处理器的寄存器文件19包含在存储器(未图示)与协处理器14的功能单元(例如,执行单元26)之间分级数据的寄存器阵列。在由主处理器12提交相应指令之前,寄存器文件18可存储临时结果。在此布置中,寄存器文件18可实施寄存器重命名,此实现将物理寄存器文件条目动态映射到结构寄存器名称。因而,保存临时结果的寄存器条目可在提交指令时得以重命名。同样,协处理器14可存储由其产生的临时结果,直到提交产生指令为止,在此时更新寄存器文件19。
协处理器14接收由指令单元20所卸载的指令。在一些实施例中,协处理器14仅能够执行协处理器功能,且不可从存储器(未图示)取得指令、执行程序流控制指令、执行输入/输出操作、管理存储器等。因而,主处理器12取得用于协处理器14的指令且处理除协同处理功能外的其它操作。在其它实施例中,协处理器14更多地依据通用处理器的原理而起作用,从而在主处理器12的控制下执行有限范围的额外功能。
无论如何,卸载到协处理器14的指令可在指令队列24中经缓冲以随后分派到协处理器执行单元26,或可直接被提供到协处理器执行单元26。协处理器的指令队列24可驻留于主处理器12中或协处理器14外部的其它位置。协处理器执行单元26可包含用于执行指令的多个级28,例如,解码、寄存器存取、执行和回写级。不管协处理器执行单元26的管线性质如何,每一指令均由协处理器14基于存储于寄存器30中的动态延迟而执行。此外,提供到协处理器14的每一指令或指令集合与其相应延迟相关联。此关联使寄存器30能够在不丢失指派给尚未完全执行的指令的延迟值的情况下得以动态再编程。结果,与移动经过指令队列24和各种执行级28的指令相关联的延迟可用以随后使用。在一个实施例中,如图2中所示,由协处理器14处理的一个或一个以上指令的每一集合用其经指派延迟而标记。因而,移动经过协处理器指令队列24和执行单元26的指令包含含有经解码指令的第一字段32、含有指派给所述指令的延迟值的第二字段34、含有可选标记的第三字段36,和含有一个或一个以上可选旗标位的第四字段38。
可以各种形式表达动态指令执行延迟值。可单独或组合地利用这些各种形式的动态指令执行延迟值。在一个实施例中,动态指令执行延迟对应于寄存器30中的推测性指令执行旗标40,如图3中所说明。当设定推测性指令执行旗标40时,在无延迟的情况下推测性地执行指令。在另一实施例中,动态指令执行延迟对应于寄存器30中的指令提交旗标42,如图3中所说明。当设定指令提交旗标42时,延迟指令执行直到由主处理器12提交相应指令为止,即,主处理器12已最终确定应执行指令为止。
在又一实施例中,动态指令执行延迟对应于寄存器30中的处理器循环计数字段44,如图3中所说明。当计数字段44载入有一值时,延迟指令执行直到经过对应于计数字段44的处理器循环数目为止。在足够数目的处理器循环已经过之后,假定无其它情况拖延指令执行,接着可开始所述指令执行。在又一实施例中,动态指令执行延迟对应于寄存器30中的管线级字段46,如图3中所说明。管线级字段46指示若干协处理器14执行管线级28,指令执行经由所述执行管线级得以处理。指令执行停止于所指示级处直到主处理器12提交相应指令为止。在主处理器12提交指令之后,指令执行以剩余级28重新开始。举例来说,存储于管线级字段46中的值可指示恰好在协处理器执行单元26的回写级(例如,图1中所展示的级n)之前的级。在无延迟的情况下执行指令,直到所述指令到达回写级为止。因而,结果直到指令由主处理器12提交才更新结构状态,因此允许临时结果在指令未经提交的情况下被冲洗。
返回图1,延迟确定单元16确定待与个别指令或指令组相关联的动态指令执行延迟,如图4的步骤100所说明。延迟确定单元16包含适于产生动态延迟的固件和/或硬件。无论如何产生,延迟值均被提供到协处理器14,在协处理器14处所述值确定由协处理器14处理的指令所招致的执行延迟,如图4的步骤102所说明。
在一些实施例中,延迟确定单元16基于待由处理系统10执行的应用程序而确定动态指令执行延迟。即,应用程序指示合适的执行延迟,或合适的延迟可由应用程序或针对应用程序得以确定。在一个实施例中,应用程序基于可用于所述应用程序的处理资源(例如,处理速度、存储器带宽、高速缓冲存储器大小、显示器能力、电池模式、电池寿命、功率节省模式等)而确定动态延迟。
在另一实施例中,应用程序基于可由所述应用程序容许的指令执行延迟而确定动态延迟。举例来说,一些应用程序可在未不利影响系统性能的情况下容许高指令执行延迟,例如,执行高循环计数批次处理的应用程序(其中结果在执行计算之后被显著消耗)。相反,其它应用程序不可容许高指令执行延迟,例如,具有短指令集合或立即需要结果的应用程序。
可通过使指令执行延迟适合于个别应用程序而优化系统性能。由处理系统10执行的每一应用程序可(例如)以每一指令、多个指令或应用程序为基础而相应地调整指令执行延迟。应用程序可在编译时间(例如,使用JavaTM实时编译器)期间、在应用程序载入时间期间或在应用程序执行时间(也称为运行时间)期间确定动态延迟。无论如何,延迟确定单元16将指示所需指令执行延迟的指令提供到主处理器12。响应于所述指令,主处理器12可将动态延迟值直接写入到协处理器寄存器30。或者,主处理器12将所述指令传递到协处理器14,在协处理器14处协处理器14解码所述指令且相应地更新寄存器30。
在其它实施例中,延迟确定单元16基于分支历史数据而确定动态指令执行延迟。在一个实施例中,延迟确定单元16维持分支历史数据(例如,指示分支预测准确性的数据)的表50。在一个实施例中,分支历史数据对应于执行管线冲洗的频率。在所述情形下,延迟确定单元16在每次协处理器14从其指令队列24或执行单元26冲洗指令时进行追踪,且使这些事件与引起每次冲洗发生的相应指令相关联。此数据提供关于某些指令推测性如何的指示。指令的推测性越高,可能指派给所述指令的延迟越大,且反之亦然。
在另一实施例中,分支历史数据对应于由包括于主处理器12中的分支处理单元(未图示)维持的数据,例如,维持于分支历史表(未图示)中的数据。当一指令或指令集合被卸载到协处理器14时,延迟确定单元16存取历史表50以确定所述指令由主处理器12提交的可能性较高还是较低。指令的推测性越高,指派给所述指令的延迟越大。相反情况适用于推测性较低的指令。
在另外其它实施例中,延迟确定单元16使用用于确定动态指令执行延迟的混合方法。根据所述混合方法,待由处理系统10执行的应用程序使用由延迟确定单元16维持的历史数据以确定动态延迟值。即,应用程序探测历史表50以确定待指派给构成所述应用程序的指令的执行延迟。所述混合方法允许程序存取历史数据以确定最佳适于个别应用程序的指令执行延迟。这可在编译时间、载入时间或运行时间期间发生。
与如何确定动态延迟无关,如先前所提及,延迟确定单元16可包括于主处理器12中。图5说明处理系统10的一个实施例,其中延迟确定单元16包括于主处理器12的指令单元20中或与主处理器12的指令单元20相关联。指令取得单元60从指令高速缓冲存储器(未图示)检索指令,解码所述指令且将经解码指令载入到指令队列62中。指令分派单元64将排入队列的指令分派到合适的执行单元22。分支处理单元(BPU)66检测分支指令,且视检测到的分支类型而定来执行各种分支预测机制(例如,通过预测分支目标地址和/或是否将占用特定分支)。BPU维持追踪最近执行的分支指令的占用/未占用历史的分支历史表(BHT)68。
延迟确定单元16可存取BHT 68以确定指派给具有由BHT 68追踪的历史的指令的动态延迟值。在一个实施例中,延迟确定单元16用BHT 68的内容补充其历史表50。延迟确定单元16使用存储于BHT 68中的信息以确定动态指令执行延迟值(例如,通过基于先前占用/未占用分支历史的强弱度而确定延迟值)。如先前所描述,所得动态延迟值被提供到协处理器14以延迟经卸载指令的执行。
或者,图6说明处理系统10的一个实施例,其中延迟确定单元16被包括于专用于确定用于一个或一个以上其它协处理器14和/或主处理器12的动态指令执行延迟的协处理器70中。其它协处理器14和主处理器12每一者包括寄存器30,所述寄存器用于存储由专用协处理器70产生的动态延迟信息。专用协处理器70监视整个系统操作以确定最佳适合于其它协处理器14中的每一者和主处理器12的动态延迟。因而,专用协处理器70可确定唯一适合于其它协处理器14中的每一者和主处理器12的动态延迟值。专用协处理器70可根据先前本文中所揭示的实施例中的任一者来确定动态延迟值,例如,通过待由处理系统10执行的应用程序、通过分析先前执行的指令的历史或通过评估可用于给定应用程序的系统资源来确定动态延迟值。
尽管已大部分地关于协处理器描述了先前本文中所揭示的各种动态延迟确定实施例,但所述实施例同样可应用于包括于主处理器12中的执行单元22。即,主处理器执行单元22中的一者或一者以上可使用由延迟确定单元16确定的动态延迟值来控制内部指令执行时序。在所述情形下,图7说明包括延迟确定单元16的主处理器12的一个实施例,所述延迟确定单元16用于控制与主处理器12的执行单元22中的一者或一者以上相关联的指令执行延迟。
执行单元22可包含用于执行指令的多个级82,例如,解码、寄存器存取、执行和回写级。待由主处理器12内部执行的指令可经缓冲于指令队列80中用以随后执行或可直接被提供到执行级82中的第一级。不管执行单元22的管线和队列性质如何,指令执行基于存储于一个或一个以上寄存器30中的动态指令执行延迟。为了启用指令执行延迟的动态改变,提供到执行单元22的一个或一个以上指令的每一集合与其相应延迟相关联。因而,寄存器30可在不丢失指派给先前尚未执行的指令的延迟值的情况下得以动态再编程。可根据先前本文中所揭示的实施例中的任一者来确定动态延迟值。并且,延迟确定单元16可确定用于包括于主处理器12中的每一执行单元18的不同动态延迟,因此启用以每一执行单元为基础的指令执行时序控制。
执行于处理系统10中的至少一些指令基于动态可改变延迟值而招致预执行延迟。在一些实施例中,动态延迟由待由处理系统10执行的应用程序而确定。基于应用程序的执行延迟调整可在编译时间、载入时间或运行时间进行。在其它实施例中,动态延迟通过分析先前执行的指令的历史而确定。在另外其它实施例中,动态延迟通过评估可用于给定应用程序的处理资源而确定。无论如何,动态指令执行延迟可由主处理器12或协处理器14来确定。动态延迟可为零延迟、基于循环或基于级和事件的。基于级和事件的延迟导致指令被保持于指定级中(包括指令队列),直到指定事件发生(例如,接收到提交)为止。延迟可以每一指令、多个指令或应用程序为基础而被动态改变。
在记住以上范围的变化和应用的情况下,应了解,本发明不受上文描述限制,也不受附图限制。事实上,本发明仅受所附权利要求书及其合法等效物限制。
Claims (36)
1.一种控制指令执行的方法,其包含:
确定用于一个或一个以上指令的第一集合的第一延迟值;
基于所述第一延迟而延迟一个或一个以上指令的所述第一集合的执行;
确定用于一个或一个以上指令的第二集合的第二延迟值;以及
基于所述第二延迟而延迟一个或一个以上指令的所述第二集合的执行。
2.根据权利要求1所述的方法,其进一步包含使所述延迟值中的个别延迟值与一个或一个以上指令的所述相应集合相关联。
3.根据权利要求2所述的方法,其中使所述延迟值中的个别延迟值与一个或一个以上指令的所述相应集合相关联包含用所述相应延迟值来标记一个或一个以上指令的每一集合。
4.根据权利要求1所述的方法,其中在代码编译时间、代码载入时间和代码运行时间中的至少一者期间确定所述延迟值。
5.根据权利要求1所述的方法,其中基于与所述相应指令集合相关联的应用程序来确定所述延迟值。
6.根据权利要求5所述的方法,其中基于可用于所述相应应用程序的处理器资源来确定所述延迟值。
7.根据权利要求1所述的方法,其中基于可用于相应应用程序的处理器资源来确定所述延迟值。
8.根据权利要求1所述的方法,其中确定所述延迟值包含:
维持推测性指令执行的历史;以及
基于所述推测性指令执行的历史来确定所述延迟值。
9.根据权利要求8所述的方法,其中维持推测性指令执行的历史包含追踪执行管线冲洗的发生。
10.根据权利要求1所述的方法,其中所述延迟值指示完全推测性指令执行、非推测性指令执行、在若干指令处理延迟循环之后的完全推测性指令执行,和部分推测性指令执行中的至少一者。
11.根据权利要求10所述的方法,其中部分推测性指令执行包含在指定级暂停每一指令的执行,直到提交所述相应指令为止。
12.根据权利要求1所述的方法,其中确定所述延迟值包含:
处理一个或一个以上指令的所述集合中的个别集合以确定所述相应延迟值;以及导引所述延迟值的存储。
13.根据权利要求12所述的方法,其中基于所述相应延迟值来延迟一个或一个以上指令的所述集合中的个别集合的执行包含:
从寄存器检索所述延迟值;
基于所述相应的所检索延迟值来延迟一个或一个以上指令的所述集合中的个别集合的执行;以及
导引执行所述指令集合的结果的存储。
14.根据权利要求13所述的方法,其中导引执行所述指令集合的结果的存储包含暂时存储来自与所述指令集合中的一者或一者以上相关联的未经提交指令的结果。
5.根据权利要求14所述的方法,其进一步包含用与经提交的一个或一个以上指令的所述集合中的至少一者相关联的结果来更新结构状态。
16.根据权利要求14所述的方法,其进一步包含响应于执行管线冲洗条件而清除与未经提交的指令相关联的所述结果。
17.根据权利要求16所述的方法,其中所述执行管线冲洗条件对应于分支误预测错误、异常、截获、中断和故障中的至少一者。
18.一种处理设备,其包含:
延迟确定单元,其经配置以确定用于一个或一个以上指令的第一集合的第一延迟值和用于一个或一个以上指令的第二集合的第二延迟值;以及
处理单元,其经配置以基于所述第一延迟来延迟一个或一个以上指令的所述第一集合的执行,且基于所述第二延迟来延迟一个或一个以上指令的所述第二集合的执行。
19.根据权利要求18所述的处理设备,其中所述处理单元进一步经配置以使所述延迟值中的个别延迟值与一个或一个以上指令的所述相应集合相关联。
20.根据权利要求19所述的处理设备,其中所述处理单元经配置以通过用所述相应延迟值标记一个或一个以上指令的每一集合而使所述延迟值中的个别延迟值与一个或一个以上指令的所述相应集合相关联。
21.根据权利要求18所述的处理设备,其中所述延迟确定单元经配置以在代码编译时间、代码载入时间和代码运行时间中的至少一者期间确定所述延迟值。
22.根据权利要求18所述的处理设备,其中所述延迟确定单元经配置以基于与一个或一个以上指令的所述相应集合相关联的应用程序来确定所述延迟值。
23.根据权利要求22所述的处理设备,其中所述延迟确定单元经配置以基于可用于所述相应应用程序的处理器资源来确定所述延迟值。
24.根据权利要求18所述的处理设备,其中所述延迟确定单元经配置以基于可用于相应应用程序的处理器资源来确定所述延迟值。
25.根据权利要求18所述的处理设备,其中所述延迟确定单元经配置以通过维持推测性指令执行的历史且基于所述推测性指令执行的历史确定所述延迟值来确定所述延迟值。
26.根据权利要求25所述的处理设备,其中所述延迟确定单元经配置以通过追踪执行管线冲洗的发生来维持推测性指令执行的历史。
27.根据权利要求18所述的处理设备,其中所述延迟值指示完全推测性指令执行、非推测性指令执行、在若干指令处理延迟循环之后的完全推测性指令执行和部分推测性指令执行中的至少一者。
28.根据权利要求27所述的处理设备,其中部分推测性指令执行包含在指定级暂停每一指令的执行,直到所述相应指令被提交为止。
29.根据权利要求18所述的处理设备,其中所述延迟确定单元经配置以通过处理一个或一个以上指令的所述集合中的个别集合以确定所述相应延迟值且导引所述值在寄存器中的存储来确定所述延迟值。
30.根据权利要求29所述的处理设备,其中所述处理单元经配置以通过从所述寄存器检索所述延迟值、基于所述相应所检索延迟值来延迟一个或一个以上指令的所述集合中的个别集合的执行且导引执行所述指令集合的结果的存储而基于所述相应延迟值来延迟一个或一个以上指令的所述集合中的个别集合的执行。
31.根据权利要求30所述的处理设备,其中所述处理单元经配置以通过暂时存储与所述指令集合中的一者或一者以上相关联的未经提交指令的结果来导引执行所述指令集合的结果的存储。
32.根据权利要求31所述的处理设备,其中所述处理单元进一步经配置以用与经提交的一个或一个以上指令的所述集合中的至少一者相关联的所述结果来更新结构状态。
33.根据权利要求31所述的处理设备,其中所述处理单元进一步经配置以响应于执行管线冲洗条件而清除与未经提交的指令相关联的所述结果。
34.根据权利要求33所述的处理设备,其中所述执行管线冲洗条件对应于分支误预测错误、异常、截获、中断和故障中的至少一者。
35.一种在协处理器中施加指令执行延迟的方法,其包含:
根据从相关联处理器接收到的延迟值来延迟传入指令的执行;以及
响应于从所述相关联处理器接收到新延迟值而改变施加于随后传入指令上的延迟量。
36.一种用于在处理器中改变指令执行延迟的计算机程序产品,其包含:
用于基于由所述处理器执行的一个或一个以上应用程序来确定用于一个或一个以上指令的第一集合的第一延迟值和用于一个或一个以上指令的第二集合的第二延迟值的程序代码;以及
用于将所述延迟值提供到所述处理器的程序代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/464,839 | 2006-08-16 | ||
US11/464,839 US8566568B2 (en) | 2006-08-16 | 2006-08-16 | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101501636A true CN101501636A (zh) | 2009-08-05 |
Family
ID=38713453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800302832A Pending CN101501636A (zh) | 2006-08-16 | 2007-08-16 | 用于基于动态可改变延迟来执行处理器指令的方法和设备 |
Country Status (11)
Country | Link |
---|---|
US (1) | US8566568B2 (zh) |
EP (1) | EP2057537A1 (zh) |
JP (1) | JP5329410B2 (zh) |
KR (1) | KR101221507B1 (zh) |
CN (1) | CN101501636A (zh) |
BR (1) | BRPI0716620A2 (zh) |
CA (1) | CA2659317A1 (zh) |
MX (1) | MX2009001748A (zh) |
RU (1) | RU2419836C2 (zh) |
TW (1) | TW200820070A (zh) |
WO (1) | WO2008022288A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103999036A (zh) * | 2011-12-16 | 2014-08-20 | 英特尔公司 | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和系统 |
US10061609B2 (en) | 2013-06-26 | 2018-08-28 | Intel Corporation | Method and system using exceptions for code specialization in a computer architecture that supports transactions |
WO2023004662A1 (zh) * | 2021-07-29 | 2023-02-02 | 华为技术有限公司 | 延迟产生方法及相关设备 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0624846D0 (en) * | 2006-12-13 | 2007-01-24 | Imec Inter Uni Micro Electr | Application level estimation techniques for parametric yield in embedded systems under static real-time constraints |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US7594079B2 (en) * | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US7698537B2 (en) * | 2006-12-20 | 2010-04-13 | Arm Limited | Data processing apparatus for processing a stream of instructions in first and second processing blocks with the first processing block supporting register renaming and the second processing block not supporting register renaming |
EP2006784A1 (en) * | 2007-06-22 | 2008-12-24 | Interuniversitair Microelektronica Centrum vzw | Methods for characterization of electronic circuits under process variability effects |
US8078843B2 (en) * | 2008-01-31 | 2011-12-13 | International Business Machines Corporation | Facilitating processing in a computing environment using an extended drain instruction |
TWI396132B (zh) * | 2008-08-06 | 2013-05-11 | Nat Univ Tsing Hua | 非規則性暫存器集之指令管線化方法 |
US8683180B2 (en) | 2009-10-13 | 2014-03-25 | International Business Machines Corporation | Intermediate register mapper |
US8484653B2 (en) * | 2010-07-28 | 2013-07-09 | Red Hat Israel, Ltd. | Mechanism for delayed hardware upgrades in virtualization systems |
US20140208075A1 (en) * | 2011-12-20 | 2014-07-24 | James Earl McCormick, JR. | Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch |
US9384002B2 (en) * | 2012-11-16 | 2016-07-05 | International Business Machines Corporation | Speculative finish of instruction execution in a processor core |
US9395990B2 (en) * | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
TWI508087B (zh) * | 2013-07-01 | 2015-11-11 | Mstar Semiconductor Inc | 記憶體信號的動態相位追蹤方法及其相關控制電路 |
CN104123118A (zh) * | 2014-07-03 | 2014-10-29 | 可牛网络技术(北京)有限公司 | 指令的发送方法和装置 |
US10310860B2 (en) | 2016-07-29 | 2019-06-04 | International Business Machines Corporation | Starting and stopping instruction dispatch to execution unit queues in a multi-pipeline processor |
US10725816B2 (en) | 2017-01-13 | 2020-07-28 | International Business Machines Corporation | Optimizing pipeline execution scheduling based on commit activity trends, priority information, and attributes |
US11119941B2 (en) | 2017-10-31 | 2021-09-14 | Hewlett Packard Enterprise Development Lp | Capability enforcement controller |
US20220300610A1 (en) * | 2019-06-20 | 2022-09-22 | Technion Research & Development Foundation Limited | Secured speculative execution processor |
US11921709B2 (en) * | 2020-01-09 | 2024-03-05 | Vmware, Inc. | Uniform access to diverse structured information for client applications |
US20210365554A1 (en) * | 2020-05-25 | 2021-11-25 | Eta Scale Ab | Securing computing systems against microarchitectural replay attacks |
US11556342B1 (en) * | 2020-09-24 | 2023-01-17 | Amazon Technologies, Inc. | Configurable delay insertion in compiled instructions |
CN114490106A (zh) * | 2020-11-13 | 2022-05-13 | 瑞昱半导体股份有限公司 | 信息交换系统与方法 |
US11868777B2 (en) * | 2020-12-16 | 2024-01-09 | Advanced Micro Devices, Inc. | Processor-guided execution of offloaded instructions using fixed function operations |
US11625249B2 (en) | 2020-12-29 | 2023-04-11 | Advanced Micro Devices, Inc. | Preserving memory ordering between offloaded instructions and non-offloaded instructions |
US11921634B2 (en) | 2021-12-28 | 2024-03-05 | Advanced Micro Devices, Inc. | Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5021945A (en) | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
JPS6449370A (en) | 1987-08-19 | 1989-02-23 | Toshiba Corp | Facsimile equipment |
US5155858A (en) | 1988-10-27 | 1992-10-13 | At&T Bell Laboratories | Twin-threshold load-sharing system with each processor in a multiprocessor ring adjusting its own assigned task list based on workload threshold |
US5584031A (en) * | 1993-11-09 | 1996-12-10 | Motorola Inc. | System and method for executing a low power delay instruction |
JPH07200294A (ja) | 1994-01-06 | 1995-08-04 | Fujitsu Ltd | 遅延分岐実行機能を備えたプロセッサ装置 |
US5706459A (en) | 1994-01-06 | 1998-01-06 | Fujitsu Limited | Processor having a variable number of stages in a pipeline |
US5587329A (en) * | 1994-08-24 | 1996-12-24 | David Sarnoff Research Center, Inc. | Method for fabricating a switching transistor having a capacitive network proximate a drift region |
US5719800A (en) * | 1995-06-30 | 1998-02-17 | Intel Corporation | Performance throttling to reduce IC power consumption |
JPH09146769A (ja) | 1995-11-20 | 1997-06-06 | Hitachi Ltd | パイプライン処理装置 |
US5740417A (en) | 1995-12-05 | 1998-04-14 | Motorola, Inc. | Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states |
JP3745039B2 (ja) | 1996-08-01 | 2006-02-15 | 株式会社ルネサステクノロジ | 遅延命令を有するマイクロプロセッサ |
US5805907A (en) * | 1996-10-04 | 1998-09-08 | International Business Machines Corporation | System and method for reducing power consumption in an electronic circuit |
US6006325A (en) * | 1996-12-19 | 1999-12-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for instruction and data serialization in a computer processor |
US6029006A (en) * | 1996-12-23 | 2000-02-22 | Motorola, Inc. | Data processor with circuit for regulating instruction throughput while powered and method of operation |
US6282663B1 (en) * | 1997-01-22 | 2001-08-28 | Intel Corporation | Method and apparatus for performing power management by suppressing the speculative execution of instructions within a pipelined microprocessor |
US5923892A (en) * | 1997-10-27 | 1999-07-13 | Levy; Paul S. | Host processor and coprocessor arrangement for processing platform-independent code |
US6338137B1 (en) | 1998-05-29 | 2002-01-08 | Texas Instruments Incorporated | Data processor having memory access unit with predetermined number of instruction cycles between activation and initial data transfer |
CN1155883C (zh) | 1999-05-13 | 2004-06-30 | Arc国际美国控股公司 | 在流水线处理器中用于跳转延迟时隙控制的方法和装置 |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6671795B1 (en) | 2000-01-21 | 2003-12-30 | Intel Corporation | Method and apparatus for pausing execution in a processor or the like |
US6721892B1 (en) * | 2000-05-09 | 2004-04-13 | Palmone, Inc. | Dynamic performance adjustment of computation means |
JP3697393B2 (ja) | 2000-12-21 | 2005-09-21 | 株式会社東芝 | プロセッサ |
US6826704B1 (en) * | 2001-03-08 | 2004-11-30 | Advanced Micro Devices, Inc. | Microprocessor employing a performance throttling mechanism for power management |
JP2004519796A (ja) | 2001-04-11 | 2004-07-02 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 分岐構造を持つエミュレーションコプロセッサ |
US6961847B2 (en) * | 2002-03-20 | 2005-11-01 | Intel Corporation | Method and apparatus for controlling execution of speculations in a processor based on monitoring power consumption |
JP2004062427A (ja) | 2002-07-26 | 2004-02-26 | Renesas Technology Corp | マイクロプロセッサ |
US20040064745A1 (en) * | 2002-09-26 | 2004-04-01 | Sudarshan Kadambi | Method and apparatus for controlling the rate at which instructions are executed by a microprocessor system |
TW591525B (en) | 2003-03-07 | 2004-06-11 | Novatek Microelectronics Corp | Interrupt-processing system for shortening interrupt latency in microprocessor |
US7334143B2 (en) * | 2004-04-19 | 2008-02-19 | Hewlett-Packard Development Company, L.P. | Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value |
JP2006059068A (ja) * | 2004-08-19 | 2006-03-02 | Matsushita Electric Ind Co Ltd | プロセッサ装置 |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
US20090182986A1 (en) * | 2008-01-16 | 2009-07-16 | Stephen Joseph Schwinn | Processing Unit Incorporating Issue Rate-Based Predictive Thermal Management |
-
2006
- 2006-08-16 US US11/464,839 patent/US8566568B2/en not_active Expired - Fee Related
-
2007
- 2007-08-16 BR BRPI0716620-6A patent/BRPI0716620A2/pt not_active IP Right Cessation
- 2007-08-16 WO PCT/US2007/076151 patent/WO2008022288A1/en active Application Filing
- 2007-08-16 EP EP07814185A patent/EP2057537A1/en not_active Withdrawn
- 2007-08-16 CA CA002659317A patent/CA2659317A1/en not_active Abandoned
- 2007-08-16 TW TW096130349A patent/TW200820070A/zh unknown
- 2007-08-16 JP JP2009524810A patent/JP5329410B2/ja not_active Expired - Fee Related
- 2007-08-16 KR KR1020097004884A patent/KR101221507B1/ko not_active IP Right Cessation
- 2007-08-16 MX MX2009001748A patent/MX2009001748A/es active IP Right Grant
- 2007-08-16 RU RU2009109242/08A patent/RU2419836C2/ru not_active IP Right Cessation
- 2007-08-16 CN CNA2007800302832A patent/CN101501636A/zh active Pending
Non-Patent Citations (2)
Title |
---|
JUAN L. ARAGÓN,等: "Power-Aware Control Speculation through Selective Throttling", 《HIGH-PERFORMANCE COMPUTER ARCHITECTURE,2003》 * |
THOMAS R. GROSS等: "Optimizing Delayed Branches", 《IEEE》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103999036A (zh) * | 2011-12-16 | 2014-08-20 | 英特尔公司 | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和系统 |
CN103999036B (zh) * | 2011-12-16 | 2017-07-14 | 英特尔公司 | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和系统 |
US10061609B2 (en) | 2013-06-26 | 2018-08-28 | Intel Corporation | Method and system using exceptions for code specialization in a computer architecture that supports transactions |
WO2023004662A1 (zh) * | 2021-07-29 | 2023-02-02 | 华为技术有限公司 | 延迟产生方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
RU2009109242A (ru) | 2010-09-27 |
JP2010501102A (ja) | 2010-01-14 |
TW200820070A (en) | 2008-05-01 |
WO2008022288A1 (en) | 2008-02-21 |
KR101221507B1 (ko) | 2013-01-15 |
JP5329410B2 (ja) | 2013-10-30 |
EP2057537A1 (en) | 2009-05-13 |
KR20090042304A (ko) | 2009-04-29 |
BRPI0716620A2 (pt) | 2013-10-08 |
MX2009001748A (es) | 2009-02-25 |
CA2659317A1 (en) | 2008-02-21 |
RU2419836C2 (ru) | 2011-05-27 |
US8566568B2 (en) | 2013-10-22 |
US20080046692A1 (en) | 2008-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101501636A (zh) | 用于基于动态可改变延迟来执行处理器指令的方法和设备 | |
US9875106B2 (en) | Computer processor employing instruction block exit prediction | |
US7890738B2 (en) | Method and logical apparatus for managing processing system resource use for speculative execution | |
JP6095670B2 (ja) | コンピュータ・システム内のオペランド活性情報の維持 | |
EP0751458B1 (en) | Method and system for tracking resource allocation within a processor | |
USRE35794E (en) | System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache | |
US5860017A (en) | Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction | |
CN100407137C (zh) | 推测性地执行程序指令的方法、微处理器及系统 | |
EP2035920B1 (en) | Local and global branch prediction information storage | |
US6263427B1 (en) | Branch prediction mechanism | |
JPH1091455A (ja) | キャッシュ・ヒット/ミスにおける分岐 | |
US20080172548A1 (en) | Method and apparatus for measuring performance during speculative execution | |
US8612730B2 (en) | Hardware assist thread for dynamic performance profiling | |
US7454596B2 (en) | Method and apparatus for partitioned pipelined fetching of multiple execution threads | |
EP1444571B1 (en) | Hidden job start preparation in an instruction-parallel processor system | |
CN101371223A (zh) | 运算数的提早有条件选择 | |
US7941646B2 (en) | Completion continue on thread switch based on instruction progress metric mechanism for a microprocessor | |
JP2020091751A (ja) | 演算処理装置および演算処理装置の制御方法 | |
US20220197662A1 (en) | Accessing A Branch Target Buffer Based On Branch Instruction Information | |
JPWO2008155839A1 (ja) | 命令処理装置 | |
TW202344988A (zh) | 用於最佳化迴路重放性能的處理器中捕獲迴路的最佳化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090805 |