CN101501636A - 用于基于动态可改变延迟来执行处理器指令的方法和设备 - Google Patents

用于基于动态可改变延迟来执行处理器指令的方法和设备 Download PDF

Info

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
Application number
CNA2007800302832A
Other languages
English (en)
Inventor
杰拉尔德·保罗·米夏拉克
肯尼思·艾伦·多克瑟尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101501636A publication Critical patent/CN101501636A/zh
Pending legal-status Critical Current

Links

Images

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent 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.一种用于在处理器中改变指令执行延迟的计算机程序产品,其包含:
用于基于由所述处理器执行的一个或一个以上应用程序来确定用于一个或一个以上指令的第一集合的第一延迟值和用于一个或一个以上指令的第二集合的第二延迟值的程序代码;以及
用于将所述延迟值提供到所述处理器的程序代码。
CNA2007800302832A 2006-08-16 2007-08-16 用于基于动态可改变延迟来执行处理器指令的方法和设备 Pending CN101501636A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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