CN1862495A - 用于在执行被转换指令时维持环境的方法和装置 - Google Patents

用于在执行被转换指令时维持环境的方法和装置 Download PDF

Info

Publication number
CN1862495A
CN1862495A CNA2005101188818A CN200510118881A CN1862495A CN 1862495 A CN1862495 A CN 1862495A CN A2005101188818 A CNA2005101188818 A CN A2005101188818A CN 200510118881 A CN200510118881 A CN 200510118881A CN 1862495 A CN1862495 A CN 1862495A
Authority
CN
China
Prior art keywords
instruction
conversion
environment
sequence
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005101188818A
Other languages
English (en)
Other versions
CN100401258C (zh
Inventor
D·凯培尔
R·克迈利克
R·贝迪切克
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 CN1862495A publication Critical patent/CN1862495A/zh
Application granted granted Critical
Publication of CN100401258C publication Critical patent/CN100401258C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/06Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
    • G06F7/20Comparing separate sets of record carriers arranged in the same sequence to determine whether at least some of the data in one set is identical with that in the other set or sets
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Steroid Compounds (AREA)

Abstract

一种方法(图1),用于维持从为目标微处理器设计的指令转换而得到的指令的转换环境,以便在主机微处理器上运行,包括:存储与每个转换主机指令有关的转换环境;指示目前正在由主机处理器执行的主机指令的转换环境;将为下一条主机指令存储的转换环境与目前正在被执行的主机指令的转换环境进行比较(图2);如果下一条主机指令的转换环境和目前执行的主机指令相同,则执行下一条主机指令;以及如果下一条主机指令的转换环境和目前执行的主机指令不相同,则搜索(图2)具有这样转换环境的一个指令,它相比于目前执行的主机指令的转换环境。

Description

用于在执行被转换指令时维持环境的方法和装置
本申请是申请日为2000年9月6日、申请号为00814315.3、发明名称为“用于在执行被转换指令时维持环境的方法和装置”的发明专利申请的分案申请。
发明领域
本发明涉及计算机系统,尤其涉及用于改善微处理器在执行程序过程中的性能的方法,所述程序是从为不同处理器执行而设计的程序转换而来。
背景技术
最近,开发了一种新的微处理器,它将一个简单但快速的主机处理器(被称作“变体主机(morph host)”)和软件(被称作“代码变体软件(code morphingsoftware)”)组合起来,以便执行为目标处理器设计的应用程序,该目标处理器具有与变体主机处理器不同的指令集。变体主机处理器执行代码变体软件,该软件将目标应用程序动态地转换成能够实现目标应用程序的目的主机处理器指令。当指令被转换时,它们被存储在一个转换缓冲器中,在那里,它们可以被存取而无须进一步转换。虽然程序初步转换缓慢,但是,一旦被转换,硬件执行程序通常所需的其中的许多步骤就被取消了。新的微处理器已经证明,被设计成扩展很少功率的一个简单的快速处理器能够以等同于“目标”处理器(程序为它而设计)速率的速率来执行被转换的“目标”指令。
使转换问题复杂化的是各种中断和例外,它们由目标计算机及其操作系统的硬件执行,以便计算机系统进行操作。当在目标计算机的操作过程中采用目标例外时,通常必须通过调用一个微代码序列以实现操作来保存例外时间的计算机状态,必须检索正确的例外处理程序,必须处理例外,然后必须发现程序中的正确点,用于读取程序。这经常要求程序回复到例外发生点处的目标计算机状态。实行这些操作的目标计算机的硬件和软件所提供的各种结果必须以某种方式由转换程序提供,以便变体主机处理器能够正确地响应于这些例外。
为了能够以快速的速率运行为其他处理器设计的程序,变体主机处理器包括许多硬件改进。这些改进中的一个改进是门控存储缓冲器,它临时存储由执行转换缓冲器中的指令的被转换序列产生的内存存储。第二项改进是一组主机寄存器(除了正常工作的寄存器以外),它们存储任何序列的正在被转换的目标指令开始时目标处理器的状态。目标指令序列被转换成主机指令并被加以执行。这些序列在目标状态已知的点处开始和结束。如果被转换指令的执行没有出现一个例外,则由执行被转换主机指令生成的内存存储通过一个提交指令被存储在存储器中(被记住);保持目标状态的寄存器被更新到完成序列的点处的目标状态。
但是,如果在执行该序列的主机指令时发生一个例外,则处理停止;整个操作可能被返回到该序列的目标指令的开始(其处存有目标处理器的已知状态)。这允许动态转换和执行指令时所导致的例外进行迅速、准确的处理。
将注意到,所用的方法是由新的微处理器处理转换的执行,它通过保持由临时存储器中的执行所生成的效果,直到转换的执行被完成,是一种推测性的迅速而有效的方法。实质上,新的微处理器使用相同的电路,用于推测其他操作的结果。例如,通过由软件调度程序从自然转换的指令重新排序后执行,而临时保存的指令的执行结果,可以实现比原先的技术尝试更有进取性的重新排序。当执行这种重排序列的指令以产生一个正确的结果时,由执行重排序序列产生的内存存储可以被记住,目标状态可以被更新。如果重排序序列在执行时生成一个例外,那么,处理器的状态可以被返回序列开始时的目标状态并在执行序列的过程中采用一种更保守的方法。
新的微处理器最有利的特点之一是其链接长序列的被转换指令的能力。一旦短序列的目标指令已被转换并被发现无例外地执行,就可以链接大量这些短序列,以便形成长序列的指令。这允许按高速度执行一个转换程序,因为微处理器不需要经历通常由硬件处理器采取的所有步骤(例如,查找每个较短的转换序列)来执行指令。甚至可以达到比预期可能更高的速度,因为一旦长序列被链接,优化器就可以经常取消来自长序列的许多步骤,而不改变产生的结果。硬件优化器从未能优化足够长的各个序列的指令,以便允许显著优化模式能变得显而易见。
无论处理器何时正在执行指令,它都在按具有各种特征的某种特殊的模式运行。必须按正确的模式来执行一项应用的指令,以便始终如一地产生正确的结果。模式的这些特征有效地成为指令的背景,可以被认为是指令的一部分。当处理器执行指令时,那些指令中的某些指令可以改变操作的特征和模式。这要求微处理器的许多特征有不同的设置,以便处理这些不同的模式。机器状态的特征通常是指指令在其中执行的环境(context),这些特征必须被正确设置,以便指令提供正确的结果。环境可以被说成是机器当前状态的概括,它是从指令执行产生正确结果所需的。
在为具有第一指令集的目标处理器设计的各个序列的指令转换成一个不同指令集的一系列主机指令的过程中,新的微处理器面临的一个主要问题是由需要维持转换和运行时的环境所引起。
有种种不同的事物,它们可构成执行一个程序中的环境。只列举可构成环境的许多因素中的一些因素就可展示该问题有多复杂。精通该技术领域的人将理解,差不多有成百上千个环境的可能项目。
许多微处理器被设计成操作具有8位、16位和32位字长(取决于使用的操作系统的能力)的指令的应用程序。相同的指令经常被用于利用不同字长的指令来书写应用。但是,如果微处理器尝试执行16位指令,而它的特征被设置用来执行32位指令,则这些指令也许将不会正确执行。这样,指令字长可以被认为是出于执行目的的目标处理器环境。
另一个例子是,指令按不同层次的许可来执行。这样,一些指令只能由具有最高层次存取的人来执行;其他指令可以由处于较低层次和较高层次的用户来执行。当执行转换指令时,有必要维持相同的存取层次,以便应用不会干涉不相关的应用的资源。
基于因特尔X86的处理器允许应用指定代码和数据的各个部分(段)被存储在存储器中。例如,程序可以指定基地址和程序段的长度,以便一个代码段在一个基地址开始并连续通过一定数量的内存,而一个数据段在一个不同的基地址开始并包括不同数量的内存。或者,程序可以指定一个单一的扁平段,用于存储程序所有的指令、数据和其他因素。此外,一个程序的所有段可以在相同的基地址开始,但运行到不同的结束地址。所以,正在被使用的基地址的布置对于执行指令而言是一个非常重要的特征。为不同用户分配的各个内存区域的混乱也许会妨碍程序执行指令具有正确的结果。这样,这就可能是环境的一个重要因素。
如果一项应用被设计成执行调页启动,则该应用必须虑及可能发生的调页例外。如果一项应用被设计为调页关闭,则不会发生调页例外。因此,调页可能是环境的一个重要的因素。
有许多其他的特征,无论指令何时被执行,这些特征必须与将指令汇编成指令时相同,以便产生正确的结果。利用复杂的指令集(例如,因特尔X86处理器所用的指令集),构成环境的特征的数量非常大。
如同目标处理器的指令执行一样,当那些转换指令被执行时,有必要使从目标指令转换来的主机指令维持原来处理器的环境,目标指令正是为该处理器而被设计,以便由主机系统产生相同的结果。由于环境的那些项目可能由指令而引起不同的结果,需要从转换到执行过程中维持环境,这似乎要求环境的差不多成百上千个因素都要成为各个转换的一部分,以便确保所产生的结果是正确的。
何时执行处理器上的指令以产生正确的结果很关键,同时还需要能尽快地执行指令。通常通过产生尽可能有效地运行的代码,来实现这一点。环境或机器状态恰好控制如何可以使代码有效。有许多机器状态的特征(指令在其中执行)影响转换和执行的效率并可以使指令更快地运行或对执行产生某种其他所需的影响。在所有情况下,重要的是,在目标微处理器上以一种特殊的模式使被执行的指令在一种环境中被加以执行,该环境具有被设置成在主机系统中以相同模式执行指令的特征。此外,重要的是,当执行那个被优化的代码时,要维持执行目标代码的优化转换的转换环境。
所以,需要提供这样的装置和方法,通过它们,执行为目标处理器(具有不同指令集)设计的指令转换而来的指令的微处理器可以维持目标处理器的环境,以便转换指令的执行提供正确的结果。
同样需要通过动态转换而保证的速度和由新的微处理器实行的优化被维持在一个过程中,该过程确保在与原来设计的环境相同的环境中执行转换。
                          发明内容
所以,本发明的一个目的是:确保转换指令在与它们被原来转换的环境相同的转换环境中被加以执行,只要有可能,就这样做,而不减慢被转换指令的执行。
本发明的这个目的和其他的目的通过这样一种方法来实现,该方法维持转换指令的每个部分的转换环境,将其中只要转换指令的一个新部分要被执行时变体主机就起作用的的转换环境与转换指令所述部分的转换处的转换环境进行比较,如果转换环境相同,则允许执行;如果转换环境不同,则强迫搜索一个不同的转换或原始指令的重新转换,从中导出被转换指令的所述部分。
通过参考以下结合附图的详细描述,将更好地理解本发明的这些和其他的目的和特征。在附图中,类似的因素在几幅视图中有类似的名称。
                          附图简述
图1是说明根据本发明的一种方法的流程图。
图2展示了执行一个特定指令所必需的各个步骤。
图3是展示实施本发明的一种方法的流程图。
图4是展示本发明的方法的一个部分的流程图。
图5是展示本发明的方法的另一个部分的流程图。
图6是展示根据本发明的环境表述图。
                          具体实施方式
如以上详细描述的内容,新的微处理器执行将目标指令序列转换成主机指令序列的代码变体软件,将那些转换指令序列存储在一个转换缓冲器中用于再用,尝试执行那些转换指令序列,当转换序列执行以产生一个正确的结果时更新状态和内存,当转换指令序列没有通过执行以产生一个正确结果时,放弃转换指令序列的尝试执行的效果。所存储的转换指令序列可以被优化,并经常被互相链接,以产生长序列的转换指令。这些长序列可以被进一步优化,以减小它们的长度并提高它们的执行效率,以便新的处理器执行操作的速度经常可以大大地快于原始转换。
为了使一系列转换指令产生由原始目标指令产生的结果,新的处理器必须正确地为每个目的指令解码。这意味着新的处理器必须确保转换指令包括原来指令的所有环境,以便那些原来的指令的意思被完全转换。例如,转换必须包括确定定义段类型、其基地址和范围的信息,以便可以执行适当的内存存取。转换必须能够确定调页在执行期间是否被启动以便知道地址怎样被计算,以及页面例外是否应该被接受。转换必须能够确定环境的所有其他因素,这些因素允许目标序列实现结果,当转换序列由主机处理器执行时,它从该目标序列被转换并被实现。
例如,X86处理器的一个指令(例如以下所示):
add$eax,4($ebp);
命令X86处理器将4加到“ebp”寄存器中的值中,以确定一个段偏移。核查这个段偏移,以确定它是否位于正在被存取的内存段(堆栈段)的段界限内。此外,X86处理器核查指令是否被允许读和/或写正在被存取的内存段;最后,段偏移被加到段基地址,以产生一个线性地址,它又被用来确定由指令存取的内存位置的物理地址。然后,该物理地址被用来取出存储在内存位置中的值和将内存值加到“eax”寄存器中的值中。
但是,除了指令的这些因素以外,有大量的隐含因素。例如,这里“ebp”寄存器的使用意味着堆栈段的使用。一个不同寄存器的使用可能意味着一个不同段的使用。
X86段会“增大”或“减小”。堆栈段经常减小,而其他的段通常则增大。一个段偏移对于一个特定段是否有效的确定取决于正在被存取的段是增大还是减小。对于一个增大段而言,有效偏移的范围从0到段界限。对于一个减小段而言,有效偏移的范围从段界限到16位段的最大的可能偏移(216-1)和32位段的(232-1)。
当线性地址已被计算时,确定是否可以使用调页。如果不可以,则线性地址是内存数据的物理地址;如果可以使用调页,则物理地址必须被加以计算。在任何一种情况下,内存段的界限必须被测试,以确定地址是否合法;最后,数据被存取并被加到eax寄存器中的值中。
这样,关于这个简单的指令,ebp寄存器是一个堆栈寄存器的知识、存储器中堆栈的基地址、取决于段是增大还是减小的段的有效偏移的范围、是否可以使用调用、正在被寻址的内存段的类型。它的基地址是构成环境的所有特征。当转换指令被执行时,必须了解这些特征,以便能够适当地执行操作。
实际上,当解释程序执行一项目标指令时,它必须执行所有这些隐含的(即背景)步骤和检查,以便正确地执行指令。隐含的步骤和检查必须以潜在的大代价被加以明确的执行。将目标指令自然地转换成主机指令也将是如此。
精通该技术领域的人将理解,指令可以改变环境,在此环境中,指令通过改变构成一种操作模式的特征中的一个特征来加以执行。所以,新的处理器必须跟踪指令,并确保当目标指令改变环境(转换指令序列将在其中执行)时环境的因素在转换序列内变化。这样,当转换序列完成执行时,将为新的处理器正确地表现转换序列的环境。
转换指令的每个序列不仅应该包括可以用于确定构成环境的所有必要特征的信息,只要转换指令的任何序列被正确执行和接下来的一个序列将要被执行,新的处理器就应该确保它目前正在其中操作的环境是正确执行下一个序列的开始所需的环境。这样,新的处理器应该测试存在于转换指令的第一序列的末端的环境,以确保它等同于在可以开始执行下一个序列之前转换指令的下一个序列所需的环境。同样,为了将两个序列的转换指令链接起来成为一个单一的序列,新的处理器应该确定第一序列在其中完成执行的环境与序列(它将被链接到该序列)将在其中开始执行的环境相同。
将会看到,需要包括转换指令的每个序列中的环境的所有因素,并需要在开始执行之前检查每个新序列的环境,这些并不产生有效的代码。
本发明克服了这些问题并产生以一个速率有效地执行代码,该速率对目标处理器执行相同代码的速率提出了挑战。本发明依靠局域性的特性,以便生成执行更加有效的代码。
尤其是,在多数情况下,处理器在任何过程或程序中执行的指令趋向于被执行不只一次,或利用其他指令被执行大部分的时间。这产生的效果是:使环境从指令的一个序列到下一个序列是类似的或相同的。例如,环境的许多因素取决于正在被存取的特殊的内存段;一个段基地址和范围、段是否增大或减小、段是否可写还是只能被读取是取决于正在被存取的段的所有因素。如果段从一个序列到下一个序列是相同的,则这些因素是相同的。在多数情况下,被用于第一序列的内存段与被用于下一个序列的段相同。环境的其他因素也显示了局域性的特征。局域性的属性允许本发明假设环境从一个序列到另一个序列将是相同的。
环境相同的假设使新的处理器能够转换一系列指令,来表现转换的环境,以便以某种方式作为一个不变量适当地执行。然后,处理器只核查表现,以确定整个环境是相同的,而不是逐步通过确定转换的环境正确所需的每项测试。如果是相同的,则可以执行转换序列。如果不相同,则处理器寻找符合标准的另一种转换。如果没有发现什么,则必须生成一项新的转换。图1以流程图展示了一般方法。
将会看见,使用局域性属性允许系列转换指令由于某些指令而减少,那些指令由正在被作为不变量的环境因素隐含。图2展示了一系列操作,它们代表解释程序执行上述增加功能的各个步骤所必需的步骤。如所见内容,那些步骤中至少有10个步骤被环境要求插入序列,以确保执行操作,来提供作为增加功能的相同的结果。被标记有一个星号的那些操作可以从指令序列中被除去,并用某种方式被表现在转换序列的开端处。例如,可能是两种状态中的这个状态或另一个状态的环境的因素可能都由环境的第一种表示(例如,四分之一字)的某个指定位置中的单个位代表,而具有更大数量的状态的特征可能需要四分之一字的一些其他指定位置中的更大数量的位。
图3是流程图,展示了当完成第一序列的转换指令的执行和开始下一个序列时新的处理器的操作。所展示的第一步骤是对下一个序列指令的环境的一项测试。新的处理器观察其目前的环境(第一序列完成时机器正在操作的环境)表示,并将那个环境与下一个序列的环境的表述进行比较。如果环境完全相同,则下一个序列的转换指令作为先前序列在相同的环境中被加以执行。这取消了较早序列中所需的所有步骤,以便确定环境是否正确。新的处理器假设符合每个条件并相应地执行以下步骤,而不是执行由星号标记的图2中的各个步骤。
如果整个环境不相同,则不执行下一个序列的指令。而是新的处理器搜索符合下一个序列标准的另一个序列的转换指令。通常,这将是相同序列的目标指令的另一个转换,但是,该目标指令具有的环境表示与上次执行的序列的环境表示相同。这种序列可能不存在。如果是这样,新的处理器执行代码变体软件,以便创建这种转换并将该转换存储在具有其环境表示的转换缓冲器中,用于进一步使用。
为了确保一系列被转换指令在其中执行的环境是正确的,代码变体软件有必要跟踪环境的可预知变化,并且当发生任何变化时,有必要将环境的表述改变成正确的表示。在这种方式下,当实现下一个序列的环境测试时,主机处理器目前正在执行的环境将被正确地表示。
代码变体软件检测不可预见地改变环境的一个指令,这也是很重要的。例如,如果一个指令加载一个新的段寄存器,那么,可能随段而变化的所有标准可能会改变。在加载段寄存器之后,实际上有一种新的环境;新的环境应该被用于执行来自该序列中的那个点上的指令。取决于环境的被影响部分的任何后续指令(例如,存取被加载的段寄存器的任何指令)不能被执行,而没有证实新的环境是合适的。代码变体软件可以终止两个点之间的任何点处的转换,和/或安排环境在它被修改的点与后来指令取决于更新值的点之间被加以证实。
由于通过将不同的转换序列链接起来而使得执行被明显地加速,以便它们作为一个单一较长序列而运行,因此,使用链接程序是非常合乎需要的。将会理解,当两个序列将被链接时,有必要使较长序列的每个部分正确地执行。所以,有必要使环境适合较长序列的每个部分,以便正确地执行。通过利用使用第二个转换序列的地址而将第一转换序列与第二个转换序列链接,可以在本发明的一个实施例中实现这一点。在新的处理器中,该地址通常保留在一个程序控制单元中。当一个序列将被链接到另一个序列时,第一序列通过指向程序控制中的地址来结束。当第二个序列被输入时,转换核查环境的表述,以确保它与第二个序列所需的环境相同。
根据每个链接序列的第二个序列所需的环境表示来测试主机的环境,这需要一些操作周期。所以,如图4中所示,本发明的一个更高级的实施例将环境测试从转换中除去,并将它放在原来的链接程序。也就是说,当首先确定两个序列将被链接时,通过比较第一序列和第二个序列的环境表示,来比较第一序列结束时它正在其中执行的环境和第二个序列在其中开始执行的环境。如果环境表示相同,则可以实现链接。此后,当执行较长的序列时,不再一定要测试两个序列被链接的点处的环境。第一序列的末端指向第二个序列的地址,就可以实现链接。通过只是在原来链接的时间核查环境,而不是每次执行链接序列都核查环境,来加速指令执行。
以同样的方式,无论何时进行对转换的搜索,一个实施例会既寻找一个特定转换和一个特定环境。这样,如图5中所示,机器操作环境到所需转换环境的核查完全从转换序列中除去,并被置于代码变体软件的调度功能中。只要需要下一个转换或将要实现一个被提议的链接,通过在转换缓冲器中搜索一个正确的转换和一个正确的环境,调度功能本质上寻找下一个序列的转换指令来执行。
本发明提供进一步提高执行指令的速度的延伸。由本发明提供的一项延伸允许当一个指令不可预见地改变环境时发生链接。该操作允许链接到由程序控制器保留的地址,然后根据目前的环境来测试新环境。如果环境的表述相同,则可以后续链接。
另一项延伸(也在图5中示出)取决于新的转换序列不一定总要具有与目前环境(主机正在其中执行)相同的环境,以便产生正确的结果。一些转换序列取决于环境的很少因素或环境(而不是主机正在其中执行的环境)的限制因素。只要存在正确执行待执行序列所必需的环境,这些序列就可以被执行并被链接到前面的序列。通过比较待执行的转换序列的环境表示和主机的目前环境的表述以便确定不同环境的那些因素,可以对此进行测试。然后,回顾不同的因素,以便确定它们对于待执行的序列而言是否必要,如果必要的话,则不同之处是它们在待执行的序列中的限制性是否较少。如果环境因素不需要或限制性较少,则可以执行或链接该序列。
如图6所示,表述环境的方式可以在很宽的范围内变化。例如,如果被连接在一起的所有环境因素占据的位与机器寄存器中的位的数量差不多(例如,32或64位),则环境可以由这种串联来表示;通过执行有关表示的简单的位操作(例如,“异或(XOR)”和“与(AND)”),可以容易地实现这些测试。或者,当环境中的因素的数量和尺寸超过寄存器中的位的数量时,环境因素可以被存储在存储器中的一个数据结构中;并且,进入数据结构的指针可以被用于为精确的环境匹配进行比较。然后,指针是环境的表述。取决于环境的单独因素的更多的有关比较(不是精确的匹配)将必须存取存储器中的数据结构。
表示环境的另一种方法是这两种技术的混合物。可以直接表示一些因素,而其他因素则被存储在存储器中。表示的余项是到存储器中的数据结构的一个指针/索引。精确的比较又是直接了当的,而取决于因素的比较则将会更加复杂。
虽然本发明已根据一个较佳实施例被描述过,但是,将理解,在不脱离本发明的精神和范围的前提下,精通该技术领域的人可以进行各种修改和变化。所以,本发明应该根据以下的权利要求来加以衡量。

Claims (2)

1.一种方法,其特征在于该方法包括:维持转换指令的每个部分的转换环境;将其中只要将要执行转换指令的新部分就运行变体(morph)主机处理器的转换环境与该部分转换处的转换环境进行比较;如果正确执行新部分所必需的转换环境相同,就允许执行;以及如果正确执行新部分所必需的转换环境不同,则强迫搜索一个不同的转换。
2.如权利要求1所述的的方法,该方法包括维持转换指令的每个部分的转换环境,其中,如果正确执行该新部分所必需的转换环境不同则强迫搜索一个不同的转换,这包括重新转换原始指令,从中导出转换指令的部分。
CNB2005101188818A 1999-10-13 2000-09-06 用于在执行被转换指令时维持环境的方法 Expired - Lifetime CN100401258C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,981 1999-10-13
US09/417,981 US6415379B1 (en) 1999-10-13 1999-10-13 Method and apparatus for maintaining context while executing translated instructions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB008143153A Division CN1264083C (zh) 1999-10-13 2000-09-06 用于在执行被转换指令时维持环境的方法和装置

Publications (2)

Publication Number Publication Date
CN1862495A true CN1862495A (zh) 2006-11-15
CN100401258C CN100401258C (zh) 2008-07-09

Family

ID=23656160

Family Applications (2)

Application Number Title Priority Date Filing Date
CNB008143153A Expired - Lifetime CN1264083C (zh) 1999-10-13 2000-09-06 用于在执行被转换指令时维持环境的方法和装置
CNB2005101188818A Expired - Lifetime CN100401258C (zh) 1999-10-13 2000-09-06 用于在执行被转换指令时维持环境的方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNB008143153A Expired - Lifetime CN1264083C (zh) 1999-10-13 2000-09-06 用于在执行被转换指令时维持环境的方法和装置

Country Status (9)

Country Link
US (1) US6415379B1 (zh)
EP (1) EP1226492B1 (zh)
JP (1) JP3786603B2 (zh)
KR (1) KR100498272B1 (zh)
CN (2) CN1264083C (zh)
AT (1) ATE326721T1 (zh)
CA (1) CA2379976C (zh)
DE (1) DE60028069T2 (zh)
WO (1) WO2001027741A1 (zh)

Families Citing this family (25)

* 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
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
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
US6845353B1 (en) 1999-12-23 2005-01-18 Transmeta Corporation Interpage prologue to protect virtual address mappings
US6763327B1 (en) * 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US7036106B1 (en) 2000-02-17 2006-04-25 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
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
US6826682B1 (en) 2000-06-26 2004-11-30 Transmeta Corporation Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state
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
US7681046B1 (en) 2003-09-26 2010-03-16 Andrew Morgan System with secure cryptographic capabilities using a hardware specific digital secret
US7694151B1 (en) 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7496727B1 (en) 2005-12-06 2009-02-24 Transmeta Corporation Secure memory access system and method
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9250900B1 (en) 2014-10-01 2016-02-02 Cadence Design Systems, Inc. Method, system, and computer program product for implementing a microprocessor with a customizable register file bypass network

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4456954A (en) * 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6591414B2 (en) * 1996-10-28 2003-07-08 Fujitsu Limited Binary program conversion apparatus, binary program conversion method and program recording medium

Also Published As

Publication number Publication date
CA2379976C (en) 2009-04-07
JP2003511787A (ja) 2003-03-25
DE60028069T2 (de) 2006-12-21
WO2001027741A1 (en) 2001-04-19
DE60028069D1 (de) 2006-06-22
EP1226492B1 (en) 2006-05-17
CA2379976A1 (en) 2001-04-19
EP1226492A4 (en) 2005-03-30
JP3786603B2 (ja) 2006-06-14
ATE326721T1 (de) 2006-06-15
US6415379B1 (en) 2002-07-02
EP1226492A1 (en) 2002-07-31
KR20020039688A (ko) 2002-05-27
CN1264083C (zh) 2006-07-12
KR100498272B1 (ko) 2005-06-29
CN100401258C (zh) 2008-07-09
CN1379872A (zh) 2002-11-13

Similar Documents

Publication Publication Date Title
CN1264083C (zh) 用于在执行被转换指令时维持环境的方法和装置
CN1095115C (zh) 在超标量处理器中检测和执行俘获的装置
CN1202480C (zh) 高级微处理器中增强调度的方法和设备
US8095750B2 (en) Transactional memory system with fast processing of common conflicts
US6304867B1 (en) System and method for enhanced performance of a relational database management system through the use of application-specific memory-resident data
US8117403B2 (en) Transactional memory system which employs thread assists using address history tables
CN1141647C (zh) 赋予高级微处理器内存储器数据别名的方法和装置
CN1154044C (zh) 改变代码生成模式的方法
CN1161689C (zh) 在超标量处理器中处理装入指令的方法和电路
CN1047245C (zh) 采用独立存取中间存储器的超标量处理器系统中加强指令调度的方法和系统
CN1848088A (zh) 将本机接口函数调用转换为更简单操作的方法和系统
KR20040111361A (ko) 포인터 식별 및 자동 데이터 프리페치
JPH06103463B2 (ja) コード生成方法
CN1329304A (zh) 基于寄存器地址环绕式处理的提前装载地址表项目无效
JPH04225431A (ja) 命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法
US20080222198A1 (en) Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program
CN1196997C (zh) 不按序执行指令的装置和检测不按序指令的方法
CN1650266A (zh) 支持单线程应用程序的时分多路复用推理性多线程
CN116257552A (zh) 数据库查询语句的优化方法、存储介质与设备
CN1860436A (zh) 用于处理指令循环的方法和系统
US20050183079A1 (en) Tail duplicating during block layout
CN1107909C (zh) 带临时保存目标处理器状态的装置的主处理器
KR100649799B1 (ko) 고속 서브-클레스 검사 및 서브-타입 검사를 컴퓨터에 의해 구현하는 방법 그 시스템
CN1220937C (zh) 设计在cpu里的利用映像寄存器组支持“非侵入性”调试的方法
CN1163826C (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
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: 20080709