[go: up one dir, main page]

CN1154044C - 改变代码生成模式的方法 - Google Patents

改变代码生成模式的方法 Download PDF

Info

Publication number
CN1154044C
CN1154044C CNB008143447A CN00814344A CN1154044C CN 1154044 C CN1154044 C CN 1154044C CN B008143447 A CNB008143447 A CN B008143447A CN 00814344 A CN00814344 A CN 00814344A CN 1154044 C CN1154044 C CN 1154044C
Authority
CN
China
Prior art keywords
target
instruction
translation
instructions
sequence
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.)
Expired - Lifetime
Application number
CNB008143447A
Other languages
English (en)
Other versions
CN1379874A (zh
Inventor
L
L·托瓦尔德斯
ά
H·P·安维恩
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.)
Full Simeida LLC
Transmeta Inc
Original Assignee
Transmeta 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 Transmeta Inc filed Critical Transmeta Inc
Publication of CN1379874A publication Critical patent/CN1379874A/zh
Application granted granted Critical
Publication of CN1154044C publication Critical patent/CN1154044C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

一种用于在计算机中的各种转换过程之间转换的方法,它将指令从目标指令集转换到主机指令集,它包括以下步骤:执行包括解释程序和翻译程序的代码变体软件,以便从目标指令生成主机指令,按间隔检测正在操作的是解释程序还是翻译程序,如果正在操作的是解释程序,则增加计数,而如果正在操作的是翻译程序,则减少计数,以及当计数达到所选的最大限度时,从解释一系列目标指令变成翻译一系列目标指令,它提高动态地将指令从目标指令转换到主机指令集的微处理器的操作效率。

Description

改变代码生成模式的方法
技术领域
本发明涉及计算机系统,尤其涉及用于提高动态地将指令从目标指令转换到主机指令集的微处理器的操作效率的方法。
背景技术
最近,开发了一种新的微处理器,它将一个简单但快速的主机处理器(被称作“变体主机(morph host)”)和软件(被称作“代码变体软件”)组合起来,以便执行为“目标”处理器设计的应用程序,该目标处理器具有与变体主机处理器的指令集不同的指令集。变体主机处理器执行代码变体软件,该软件将应用程序转换成实现原来的目标软件的目的的变体主机处理器指令。当转换目标指令时,新的主机指令被执行并被存储在转换缓冲器中,在那里,它们可以被存取而无须进一步转换。虽然程序的开始转换缓慢,但是,一旦转换成功,硬件执行程序通常所需的许多步骤就被取消了。新的微处理器已经证明,设计成的功耗很少的简单的快速处理器能够以等同于“目标”处理器(程序为它而设计)的速率来执行转换的“目标”指令。
为了能够以快速率运行为其他处理器设计的程序,变体主机处理器包括许多硬件改进。这些改进中的一个改进是门控存储缓冲器,它位于主机存储器与转换缓冲器之间。第二项改进是一套主机寄存器(除了正常工作的寄存器以外),它们存储目标处理器的已知状态,指任何序列的目标指令在被转换之前存在的状态。执行各个序列的变体主机指令时生成的内存存储被放置在门控存储缓冲器中。如果变体主机指令的执行没有出现例外,则该序列指令开始时的目标状态被更新到该序列完成点处的目标状态,内存存储被记住。
读者将注意到,新的微处理器执行处理转换所用的方法,即把由执行而生成的效果放置在临时存储器中直到执行完成转换为止的方法,是推测的一种非常快速有效的方法。实际上,新的微处理器使用相同的线路,用于推测其他操作的结果。例如,通过临时保存来自自然转换的指令的一个软件调度程序重新安排指令的执行结果,与现有技术的尝试相比,可以实现更积极进取的重新安排。当这种被重新安排的序列的指令执行以产生一个正确的结果时,由执行被重新安排的序列产生的内存存储可以被记住,目标状态可以被更新。如果被重新安排的序列在执行时生成例外,那么,处理器的状态可以被返回序列开始时的目标状态并且采用一种更保守的方法来转换序列。
新的微处理器最有利的特点中的一个特点是它链接长序列的转换指令的能力。一旦短序列的目标指令已被转换并被发现执行没有例外,就可以链接大量这些短序列,以便形成长序列的指令。这使得可以高速执行一个翻译程序,因为微处理器不需要经历通常由硬件处理器采取的所有步骤(例如,查找每个较短的转换序列)来执行指令。甚至可以达到比可能预期的更高的速度,因为一旦长序列被链接,优化器就经常可以取消来自长序列的许多步骤,而不改变产生的结果。硬件优化器从未能够优化足够长的各个序列的指令,以便允许各模式使重要的优化的能够变得显而易见。
新的处理器所出现的一个问题涉及只被执行很少次数的那些目标应用的那些指令。例如,某一特定的应用程序所需的初始化操作指令,经常是只有当该应用初次调用时才被执行;终止应用程序所需操作的指令,经常只是当实际上终止程序时才执行。但是,新的处理器通常按相同的方式来对待所有的指令。它为目标指令解码,取出执行目标指令为其设计的功能的原始主机指令,进行一个很通用的优化程序,然后将被转换和被优化的指令存储在转换高速缓冲存储器中。当新的处理器的操作继续进行时,各个序列的转换指令相互链接并被进一步优化;较长序列的被链接指令被存储在转换缓冲器中。最后,大批转换指令被存储为特大批的主机指令。当在特定的主机指令或一套被链接指令在执行期间发生例外时,新的处理器履行返回目标处理器的最近正确状态的进程,然后把目标指令的单步转换从最近正确状态的点提供到例外再次发生的点。这些转换也被存储在转换高速缓冲存储器中。Kelly等人于1998年11月3日授权的5,832,205号美国专利中详细描述了这种新的处理器,该专利已被转让给本发明的授让人。
虽然这个过程创建了快速执行的代码,但是,该过程所拥有的许多效果会限制可达到的总速度,并可能引起其他不合乎需要的效果。首先,该过程要求大量转换指令的存储容量。很多时候,一套相同的目标指令存在许多不同的转换,因为各个序列从不同的支路被输入。一旦被存储,转换指令就占据这个存储器,直到为某种肯定的原因被除去为止。其次,如果一系列指令将只被运行一次,则转换和优化所需的时间可能比执行最初目标指令的逐步转换所需的时间要多许多。这引起新的处理器的平均速度的降低。
由于这些原因,原来的处理器被修改,以便包括一个解释程序(作为代码变体软件的一部分),该解释程序实现每个目标指令的逐步转换。虽然有许多可能的实施例,但是,解释程序本质上取出一个目标指令,为该指令解码,提供一个主机过程以便实现目标指令的目的,并执行该主机过程。当完成解释和执行一个目标指令时,解释程序进行到下一个目标指令。这个过程实质上一步步通过对目标指令的解释和执行。当每个目标指令被解释和执行时,目标处理器的状态被更新。由解释程序产生的主机指令通常是不存储在转换高速缓冲存储器中的,因此,在不执行链接后,可以实行链接和进一步的优化。解释程序为该序列的目标指令的剩余部分继续进行这个过程。
一般而言,确定直至对任一序列中的指令进行了某一数量的执行,所有以前的解释和执行所需的时间才等同于转换和优化该序列所需的时间。所以,对于在某一应用程序的执行过程中很少被使用的指令,经常需要使用解释程序,而不是翻译程序软件。这样,通过只解释和不翻译该序列,只运行一次的一系列指令经常可以得到更好、更迅速的处理。
为了利用这个优点,只要一系列目标指令首先被遇到,就可修改被改善的处理器,以便使用该解释程序。解释程序软件与一个计数器关联,该计数器跟踪执行各个序列的指令的次数。每当遇到该序列时,就可以运行解释程序,直到已执行该序列某些次数而不产生例外为止。当目标指令在特定的序列期间已被解释和执行了所选的次数时,代码变体软件从解释程序转换到翻译程序及其附带的优化与存储过程。当发生这种情况时,将已经发生足够数量的执行,从而可能再次出现指令的执行,被存储的优化转换将会提供总体上速度大大加快的应用程序的执行。
当代码变体软件切换到正常的转换过程时,转换被优化并被存储在转换高速缓冲存储器中。其后,该转换可以被进一步优化并被链接到其他的转换,以便可以获得从这些过程实现的非常高速度的执行。
被改善的处理器的一个特别有用的实施例记录与解释程序执行目标指令的次数有关的数据,该执行只在指令中产生支路的各个点处进行。解释程序一步步通过各种目标指令,直到产生一个支路。当发生一个支路指令时,记录有关该特定支路指令(具有特定内存地址的指令)的统计数字。由于从一个序列的开端直到支路的所有目标指令都将只按连续的顺序加以执行,因此,在支路的点之前不需要保存记录,并且取消与转换高速缓冲存储器的存储有关的大量步骤。
而且,如果除特定目标指令已被执行的次数以外,解释程序还被用来收集统计数字,则可以获得额外的重要优点。例如,如果目标指令包括一个支路,则对其分支的指令的地址与支路已被执行的次数可以一起被记录下来。然后,当许多连续的目标指令由解释程序来执行时,将会建立起分支的历史和支路地址。这些统计数字可以被用来确定特定序列的指令是否可能将成为特大批转换指令。通过使用这些统计数字,特定序列的指令在被执行很多次数之后可以被推测为是一个特大批指令。在进行了选择次数的解释之后,该序列可以被转换、被优化、通过各种支路被链接而不必经历一项分开的链接操作,并且这样被存储在转换高速缓冲存储器中。如果推测是正确的,则在处理指令的过程中节省了大量时间。如果不正确,则操作只产生将代码变体软件返回解释程序的例外。
解释程序不仅用于为很少使用的序列生成主机代码,它也用于处理例外的过程中。只要被修改的处理器在执行任何被转换的目标应用时遇到一个目标例外,代码变体软件就使目标处理器的最近已知的正确状态发生重新运行。然后,使用代码变体软件的解释程序部分(而非翻译程序部分),来提供主机指令。解释程序一步步通过目标指令的生成和执行。当每个目标指令被解释和执行时,目标处理器的状态被更新为最新状态。
解释程序为该序列的目标指令的剩余部分继续进行这个过程,直到再次出现例外。在这一点上,目标处理器的状态对于解释的状态而言是正确的,以便可以正确、迅速地处理该例外。因为解释过程是如此简单,所以,确定目标例外的发生点的过程要大大快于由转换过程执行的这种点的确定,这种点经历上述的转换和优化过程,然后被存储在转换高速缓冲存储器中。
通过将解释程序与优化翻译程序(用作各个序列的转换指令的动态编辑器)组合,代码变体软件除去许多对新的处理器高速执行目标应用程序的限制。使用解释程序来处理指令的早期执行取消了优化在应用程序执行期间很少被使用的指令的需求,从而提高了运算的速度。将这些很少被使用的指令存储在转换高速缓冲存储器中的需求减少了对存储的要求,并且无需放弃许多转换指令。使用解释程序来处理例外产生了与使用翻译程序相同的有用效果,但却加快了操作,减少了存储要求。
R.Bedichek等人于同日申请提交并转让给本发明的受让人的美国专利申请______“ Method For Integration Of Interpretation And Translation In A Microprocessor”中详细描述了这种改进的处理器。
即使解释程序和翻译程序的组合用于大大改善独特的微处理器的操作,在操作过程中也仍然留有一些问题。一般可以将这些问题描述为:不能最适宜地使用这两种功能。由于由任何应用程序中的各个序列的指令执行的操作的类型非常多,因此,很难确定到哪个点应该结束解释和开始翻译。已经被解释足够次数的待翻译的过程经常不再被使用,所以,代码只占据转换高速缓冲存储器中的空间。其他过程经常被再使用。移动翻译开始处的点似乎不能解决这个问题。
人们希望提高改进的微处理器的运算速度,以便通过修改用于控制使用代码变体软件的解释程序和翻译程序软件的处理器,它可以更快速地加以执行。
发明内容
所以,本发明的目的是:提供一种更快的微处理器,它可与设计用于其它微处理器的应用程序和操作系统兼容,并且能够运行这些程序和操作系统。
本发明的这个目的和其他目的是通过一种方法来实现的,该方法用于确定一个过程,该过程用于将目标指令集中的指令转换成主机指令集中的指令,它包括以下步骤:执行包括解释程序和翻译程序的代码变体软件,以提供来自目标指令的主机指令;间歇检测正在执行的是解释程序还是翻译程序;如果正在执行解释程序,则增加一个计数,如果正在执行翻译程序,则减少该计数;以及,当该计数达到一个选择的最大限度时,从解释一系列目标指令变成翻译一系列目标指令。
本发明还提供一种用于优化计算机执行的方法,它动态地将指令从目标指令集转换到主机指令集它包括以下步骤:提供多个指令转换过程,每个指令转换过程为从目标指令集转换到主机指令集的指令提供不同层次的优化,提供用于动态地确定哪个转换过程最好地转换了每个序列的指令的装置,以及使用被确定为最好地转换了一系列的指令的转换过程,来转换该序列的指令。
本发明通过修改用于控制使用代码变体软件的解释程序和翻译程序软件的处理器,提高动态地将指令从目标指令转换到主机指令集的微处理器的操作效率,从而提高改进的微处理器的运算速度。
通过参考以下详细的描述并结合附图,将会更好地理解本发明的这些和其他的目的与优点。在附图中,相同的元件用相同的符号表示。
附图说明
图1是本发明的第一个实施例的流程图。
图2是本发明的第二个实施例的流程图。
具体实施方式
本发明不是只计数一系列目标指令在被转换和优化之前被解释的次数,而是尝试在该过程中引入某些智能。本发明通过使用尝试维持由系统设计者所选的解释数量与翻译数量之间的一种平衡,来实现这一点。
在图1所示的本发明基本实施例中,确定与翻译目标指令中所用的时间数量形成对比的解释目标指令中所用的时间数量。如果解释所用的时间太多,那么,处理器只是切换到翻译。当代码变体软件通过解释或翻译正在将各个序列的目标指令转换成各个序列的主机指令并且正在执行那些被转换的序列时,本发明的过程本质上测试在每次解释与翻译过程中所用的时间数量,以便确定解释正在使用的时间是否太多了。使用这个新过程允许各项操作由处理器来执行,以便确定正在使用的指令转换的方法是否适宜于加速处理器的总体操作。
执行测试操作的一个实施例使用定时器来选择测试正在由代码变体软件运行的特殊操作的时间间隔。例如,操作每千分之一秒可以被测试一次,以便确定正在运行的是解释程序还是翻译程序。从统计方面来讲,在正在使用额外的时间和由解释程序进行转换的时期,测试本身更有可能发生。向计数器提供每次询问的结果,在每次判断是解释程序在运行时,计数器进行上行计数,而当每次判断是翻译程序在运行时,计数器作下行计数。如果计数达到最大限度,则不管正在被转换的是什么序列的指令,在下一次执行该序列的指令时将软件操作从解释切换到翻译。这有助于增加正在被执行的翻译的数量(与解释比较)并加速了执行。另一方面,只要计数器没有达到最大限度,根据目标指令生成主机指令的操作就会继续,而不会发生变化。
一般而言,这种测试的方法确定:与翻译对比而言,处理器的软件执行的解释是否太多了。计数器被设置成的最大值可以根据本发明来选择,以便体现被确定为最好地使用处理器所需的解释操作的数量。例如,如果需要更多的解释,则选择一个较高的最大值;而如果需要更多的翻译,则选择一个较低的最大值。也可以对于解释和翻译有差别地加权询问的结果。例如,发现正在运行解释的一项测试可能会使计数增加1,而发现正在运行翻译的一项测试则可能会使计数只减少1/2。被加权以支持过程中的一个过程或另一个过程的其他值可能也根据系统设计者所需的结果来被加以使用。在解释与翻译之间进行切换的这种方法与在切换到翻译之前就简单地对某一特定的操作的次数进行解释相比,要准确得多。
本发明的另一个实施例通过使用由执行所设置数量的指令确定的一个间隔(而非一个时间间隔),来实现测试。这个实施例比使用定时间隔的实施例更可能提供有关解释程序正在操作的时间百分比的精确信息,因为它将指令与指令进行比较,而不是将指令与时间进行比较。这个实施例要求使用一个单一的计数器来测量由主机执行的指令的数目。在所设置数量的指令已经被执行之后,代码变体软件测试操作过程,以便确定正在运行的是解释程序还是翻译程序。过程的剩余部分按与实施例使用定时间隔相同的方式来加以执行,以便确定什么时候进行测试来确定过程是解释还是翻译。
图2所示的本发明的一个高级实施例使用上述专利申请中所揭示的计算方法和测试时间间隔以确定哪个过程正在被执行的方法的组合。经常采用计数和间隔测试方法,而转换过程继续进行。计数方法计数每个特殊序列的指令被解释的次数,并且当已无误地执行规定数量的序列的解释时,切换到该序列的翻译。计数方案能够非常快速地确定密封回路(tight loops)等短过程什么时候已经运行了一定的次数和什么时候应该被翻译。时间间隔测试方法同时用于确定转换的总体操作是否正在将太多的时间用于解释。确定何时在转换过程之间进行切换的时间间隔测试方法能够比计数方法更快速地检测较长序列的指令什么时候正在被解释,并因此为这些序列更快地切换到翻译。
本发明的更加高级的实施例可以使用原来的计数方法和时间间隔测试方法的另一个组合。尤其是,这样一种实施例可以提供计数指令被解释的次数,直到相同的指令已经被解释所选择的次数为止。在这个计数过程中,实现对该序列被解释的次数的计数,可以为每个序列保存统计数字。一旦已达到最大的计数,代码变体软件就变换到翻译过程。在相同的时期内,代码变体软件可以继续按时间间隔测试主机处理器正在转换所有指令的模式,以便确定转换过程是否应该从解释被切换到翻译。当满足任何一项测试时,代码变体软件从解释特定的序列切换到翻译特定的序列。但是,所实现的翻译可能不是最佳的,因此迅速被完成。例如,翻译过程可能进行翻译和重新安排,以便支持某一特定支路,而没有对其他序列的任何链接。当执行适当被翻译的过程时,软件也可以使用计数测试和收集支路统计数字,但要在较长的时期内,以便可以导出有关被翻译序列的实际操作的更多知识。这些统计数字对于确定更多优化翻译应该采取的形式非常有用。或者/此外,代码变体软件可以按时间间隔继续测试主机处理器正在翻译所有指令的模式,以便确定翻译是否应该从适度翻译过程被切换到更彻底的翻译过程(例如,涉及序列链接和跨越链接序列的优化的重大数量的过程)。如果测试过程在一个测试点(其处,一个最小的翻译正在执行)达到最大限度,过程切换到具有更高级的优化的翻译,该优化由更多的累积支路统计数字控制。可以对本发明的过程进行许多修改。从理论上讲,没有理由不能使用测试期间的不同层次来执行任何数量的翻译的中间步骤,以便确定是否切换到下一个层次的翻译。
虽然上文中已根据一个较佳实施例描述了本发明,但是,读者将理解,在不脱离本发明的精神和范围的前提下,本领域中的普通技术人员可以进行各种修改和变化。所以,本发明应该按权利要求书来衡量。

Claims (15)

1.一种用于在计算机中的各种转换过程之间转换的方法,它将指令从目标指令集转换到主机指令集,其特征在于,它包括以下步骤:
执行包括解释程序和翻译程序的代码变体软件,以便从目标指令生成主机指令,
按间隔检测正在操作的是解释程序还是翻译程序,
如果正在操作的是解释程序,则增加计数,而如果正在操作的是翻译程序,则减少计数,以及
当计数达到所选的最大限度时,从解释一系列目标指令变成翻译一系列目标指令。
2.如权利要求1所述的方法,其特征在于,所述间隔是选择的时间区间。
3.如权利要求1所述的方法,其特征在于,所述间隔是所选数量的被执行目标指令。
4.如权利要求1所述的方法,其特征在于,检测解释程序时所增加的计数的数量是可选择的。
5.如权利要求1所述的方法,其特征在于,检测翻译程序时所减少的计数的数量是可选择的。
6.如权利要求1所述的方法,其特征在于,它还包括以下步骤:
对一系列指令被解释的每一种情况计数,当情况的计数达到选择的最大限度时,从解释一系列目标指令变成翻译一系列目标指令。
7.如权利要求7所述的方法,其特征在于,它还包括以下步骤:
收集有关每一系列的指令的统计数字,以及
根据所收集的统计数字来优化一系列指令的翻译。
8.如权利要求1所述的的方法,其特征在于,当所述计数达到选择的最大限度时从解释一系列目标指令变成翻译一系列目标指令的步骤包括采用有限最佳方法进行翻译,并且
还包括以下步骤:
在执行采用有限最佳方法翻译的一系列目标指令时进行测试,以便确定该序列是否应该被进一步优化,以及
根据所述测试再进行翻译和进一步优化。
9.如权利要求8所述的方法,其特征在于,在执行采用有限最佳方法翻译的一系列目标指令时进行的测试步骤包括对一系列指令被执行的每一种情况计数,以及
当所述情况的计数达到选择的最大限度时,出现再翻译和进一步优化的步骤。
10.一种用于优化计算机执行的方法,它动态地将指令从目标指令集转换到主机指令集,其特征在于,它包括以下步骤:
提供多个指令转换过程,每个指令转换过程为从目标指令集转换到主机指令集的指令提供不同层次的优化,
提供用于动态地确定哪个转换过程最好地转换了每个序列的指令的装置,以及
使用被确定为最好地转换了一系列的指令的转换过程,来转换该序列的指令。
11.如权利要求10所述的方法,其特征在于,所述转换过程包括解释和翻译。
12.如权利要求10所述的方法,其特征在于,所述转换过程包括解释、采用最小优化进行的翻译和采用高级优化的翻译。
13.如权利要求10所述的方法,其特征在于,用于动态地确定哪个转换过程最好地转换每个序列的指令的装置取决于每个序列被特定转换过程转换的次数。
14.如权利要求10所述的方法,其特征在于,用于动态地确定哪个转换过程最好地转换了每个序列的指令的装置取决于一个转换过程比较另一个转换过程而言被运行的次数的比率。
15.如权利要求10所述的方法,其特征在于,用于动态地确定哪个转换过程最好地转换了每个序列的指令的装置
取决于每个序列被特定转换过程转换的次数,以及
取决于一个转换过程比较另一个转换过程而言被运行的次数的比率。
CNB008143447A 1999-10-13 2000-09-06 改变代码生成模式的方法 Expired - Lifetime CN1154044C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,979 US6880152B1 (en) 1999-10-13 1999-10-13 Method of determining a mode of code generation
US09/417,979 1999-10-13

Publications (2)

Publication Number Publication Date
CN1379874A CN1379874A (zh) 2002-11-13
CN1154044C true CN1154044C (zh) 2004-06-16

Family

ID=23656145

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008143447A Expired - Lifetime CN1154044C (zh) 1999-10-13 2000-09-06 改变代码生成模式的方法

Country Status (7)

Country Link
US (2) US6880152B1 (zh)
EP (1) EP1236099A4 (zh)
JP (1) JP3844691B2 (zh)
KR (1) KR100578583B1 (zh)
CN (1) CN1154044C (zh)
CA (1) CA2379978C (zh)
WO (1) WO2001027751A1 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US7761857B1 (en) 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
US6594821B1 (en) 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
DE10128373A1 (de) * 2001-06-12 2003-01-02 Infineon Technologies Ag Datenverarbeitungsvorrichtung
JP3808755B2 (ja) * 2001-11-07 2006-08-16 富士通株式会社 Jitコンパイラを備えた仮想計算機
US7100154B2 (en) * 2003-01-16 2006-08-29 International Business Machines Corporation Dynamic compiler apparatus and method that stores and uses persistent execution statistics
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US7536682B2 (en) * 2003-04-22 2009-05-19 International Business Machines Corporation Method and apparatus for performing interpreter optimizations during program code conversion
US7543284B2 (en) * 2003-04-22 2009-06-02 Transitive Limited Partial dead code elimination optimizations for program code conversion
GB2400937B (en) * 2003-04-22 2005-05-18 Transitive Ltd Method and apparatus for performing interpreter optimizations during program code conversion
GB2401217B (en) * 2003-05-02 2005-11-09 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7783867B2 (en) * 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US8495607B2 (en) * 2010-03-01 2013-07-23 International Business Machines Corporation Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
WO2014155684A1 (ja) 2013-03-29 2014-10-02 富士通株式会社 プログラム、情報処理システム、およびプログラム移行方法
CN119902802B (zh) * 2025-04-02 2025-07-18 上海芯力基半导体有限公司 动态切换risc-v和x86指令集的处理器、方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2002201C (en) 1988-12-06 1999-04-27 John Charles Goettelmann Translation technique
IE940855A1 (en) 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5564111A (en) 1994-09-30 1996-10-08 Intel Corporation Method and apparatus for implementing a non-blocking translation lookaside buffer
US5751982A (en) 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5842017A (en) 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5774711A (en) 1996-03-29 1998-06-30 Integrated Device Technology, Inc. Apparatus and method for processing exceptions during execution of string instructions
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5958061A (en) 1996-07-24 1999-09-28 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state
US5832205A (en) 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US5838978A (en) 1996-10-09 1998-11-17 Hewlett-Packard Company System and method of using annotations to optimize dynamically translated code in the presence of signals
US6011908A (en) 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US6237065B1 (en) * 1999-05-14 2001-05-22 Hewlett-Packard Company Preemptive replacement strategy for a caching dynamic translator
US6529862B1 (en) * 1999-06-30 2003-03-04 Bull Hn Information Systems Inc. Method and apparatus for dynamic management of translated code blocks in dynamic object code translation

Also Published As

Publication number Publication date
JP2003511790A (ja) 2003-03-25
WO2001027751A1 (en) 2001-04-19
US7331041B1 (en) 2008-02-12
CA2379978C (en) 2006-07-25
EP1236099A4 (en) 2004-11-03
KR20020039686A (ko) 2002-05-27
EP1236099A1 (en) 2002-09-04
KR100578583B1 (ko) 2006-05-12
CA2379978A1 (en) 2001-04-19
US6880152B1 (en) 2005-04-12
JP3844691B2 (ja) 2006-11-15
CN1379874A (zh) 2002-11-13

Similar Documents

Publication Publication Date Title
CN1154044C (zh) 改变代码生成模式的方法
US6986128B2 (en) Multiple stage program recompiler and method
US8418153B2 (en) Method for integration of interpretation and translation in a microprocessor
JP3615770B2 (ja) アドレスされた構成部分の思索の失敗を検出するメモリ・コントローラ
CN1390329A (zh) 控制使用动态反馈的指令转换
CN1264083C (zh) 用于在执行被转换指令时维持环境的方法和装置
JP3776132B2 (ja) マイクロプロセッサの改良
US9495136B2 (en) Using aliasing information for dynamic binary optimization
KR20060002031A (ko) 명령들을 스케줄링 및 실행하는 방법
CN1266591C (zh) 用于java硬件加速器的猜测执行的方法和装置
CN1156754C (zh) 用于在推测微处理器中转换指令的方法
JP3654913B2 (ja) 一時的にターゲット・プロセッサの状態を保持する装置を備えたホスト・マイクロプロセッサ
US7080204B2 (en) Cache controller computer system and method for program recompilation
Brandner et al. Embedded JIT compilation with CACAO on YARI
CN111309329A (zh) 一种指令地址自适应重定位方法及程序编译方法

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: KNOWLEDGE VENTURE CAPITAL ROMPLAST-14 O., LTD

Free format text: FORMER OWNER: TRANSMITAR CO., LTD

Effective date: 20091106

Owner name: TRANSMITAR CO., LTD

Free format text: FORMER OWNER: TRANSMITAR CO., LTD.

Effective date: 20091106

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20091106

Address after: Nevada

Patentee after: TRANSMETA Corp.

Address before: California, USA

Patentee before: Full simeida LLC

Effective date of registration: 20091106

Address after: California, USA

Patentee after: Full simeida LLC

Address before: California, USA

Patentee before: Transmeta Corp.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20040616