CN1202480C - 高级微处理器中增强调度的方法和设备 - Google Patents

高级微处理器中增强调度的方法和设备 Download PDF

Info

Publication number
CN1202480C
CN1202480C CNB008088837A CN00808883A CN1202480C CN 1202480 C CN1202480 C CN 1202480C CN B008088837 A CNB008088837 A CN B008088837A CN 00808883 A CN00808883 A CN 00808883A CN 1202480 C CN1202480 C CN 1202480C
Authority
CN
China
Prior art keywords
instruction
storage
time
address
address realm
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
CNB008088837A
Other languages
English (en)
Other versions
CN1355902A (zh
Inventor
G·J·罗扎斯
G·P·达索萨
C·R·普赖斯
P·S·塞利斯
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 CN1355902A publication Critical patent/CN1355902A/zh
Application granted granted Critical
Publication of CN1202480C publication Critical patent/CN1202480C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Retry When Errors Occur (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Abstract

通过忽略对调度操作的某些常规限制条件和简单调度能尽快运行的某些指令,使调度程序产生能更快执行代码的多种设备和一种方法,如果该调度违背了某个调度限制条件,则能确定所需采用的步骤,使引起异常的每组指令正确执行。

Description

高级微处理器中增强调度的方法和设备
技术领域
本发明涉及计算机系统,并且特别针对在改进微处理器中加速指令重新排序的方法和设备。
背景技术
近来,开发出一种新的微处理器,该处理器结合单个,速度很快的主处理器(称为“形态主机”)以及软件(称为“代码形态软件”)来执行为在速度上区别于形态主处理器的处理器设计的应用程序,该处理器达不到形态主处理器的速率,而应用程序是为它设计的(目标处理器)。形态主处理器执行代码形态软件将应用程序翻译为形态主处理器指令完成原始目标软件的目的。因为目标指令已被翻译好了,它们都经执行并存入翻译缓冲器中,在该缓冲器中,它们不用通过进一步翻译就能被存取。虽然程序的初始翻译和执行比较慢,一旦翻译成功,就省略了许多用硬件执行程序通常所需要的步骤。
为了能高速执行为其他处理器设计的程序,形态主处理器包括许多硬件增强。这些硬件增强中的一个就是驻留在主处理器和翻译缓冲器之间的门控存储缓冲器。第二个硬件增强是一组主寄存器,它在任何目标指令序列开始翻译时,存储目标机器状态。生成目标处理器已知状态的目标指令序列翻译成形态主指令,并放置在等待执行的翻译缓冲器中。如果翻译的指令执行时没有发生异常,指令序列开始时的目标状态就更新为序列完成点处的目标状态。
如果在经翻译的主指令序列执行期间发生异常,处理停止,以及整个操作可能返回或转换到目标指令序列开始时存在的已知目标机器状态。这就允许在动态翻译和执行指令时迅速而又精确地处理异常,这是已有技术从没有实现的效果。
通过作为代码形态软件一部分的调度程序,使新处理器在运行时可以获得额外的速度。调度程序会对指令进行重排序和重调度,将指令从粗译产生的原始顺序翻译为能产生相同结果但允许更快执行的顺序。调度程序尝试将某些指令置于其他指令之前或将指令一起运行,以便经重调度软件的执行花费更少的时间。调度程序功能具有很多限制条件,其中最基本的就是重新经调度的程序必须仍然产生与原始程序相同的最终结果。例如在程序中存在着为了使序列产生正确结果而不允许中断执行的指令序列。为在不妨碍所产生结果的情况下,调度程序就不能干涉这样的序列。许多处理器提供了硬件互锁来确保这样的序列在实际运行时不会中断。对这样指令序列的保护需要又对没有硬件互锁的处理器例如所述的高级形态主处理器,提出特殊的限制条件。软件必须以某种方式注意到这样的序列并确保它们不被中断地运行。
控制相关性是重排序时调度程序所面临的另一个传统限制条件。控制相关性涉及转移指令;调度程序必须确保在转移发生前后指令的重排序不会引起程序的错误运行。
其他影响加载重排序的相关性是关于存储方面。例如,如果更新的数据存在一个存储器地址,并且随后用一寄存器操作进行操作,该地址的数据在发生存储时就不应该保留在寄存器中,寄存器中的数据可能失效。
所有这些限制条件使得典型的调度程序很保守地运行,并且因此产生比较慢的代码。
传统的调度程序很适合确定那些为了完成重排序而彼此相关的指令。普通的调度程序能够确定以某种方式依赖其他操作的某些操作,以及确定不以任何方式依赖于其他操作的某些操作,但它不能确定关于其他指令的任何事。这样的调度程序对待那些依赖其他操作的操作很保守,仍以它们原来顺序排列。这样的调度程序对那些完全独立于其他操作的操作就能以其期望的方式重排序它们。最终,调度程序将所有那些它不能确定是否具有相关性的操作作为依赖于其他操作的操作进行处理,并保守而又迟缓。
可设想提供电路和软件,用于让高级处理器的调度程序生成加速执行的代码。
发明内容
本发明揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
涉及第一地址范围的第一次存储器操作;
涉及至少一部分所述第一地址范围的第二次存储器操作;以及
插入到所述第一和第二次存储器操作中的第三次存储器操作,其中,所述第三次存储器操作并不一定涉及所述第一地址范围中的地址;其中,所述第一到第三次存储器操作中的至少一次操作包括存储操作;
b)从所述指令序列中去除所述第二次存储器操作;
c)执行所述去除了第二次存储器操作的指令序列;以及
d)在所述执行期间,确定所述第三次存储器操作是否涉及所述第一地址范围中的地址。
在本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
从第一地址范围进行加载的第一次加载指令;
从所述第一地址范围进行加载的第二次加载指令;以及
插入到所述第一和第二次加载指令中的存储指令,其中,所述存储指令并不一定存储到所述第一地址范围中的地址;
b)从所述指令序列中去除所述第二次加载指令;
c)在没有所述第二次加载指令的情况下,执行所述指令序列;以及
d)在所述执行期间,确定所述存储指令是否存储到所述第一地址范围中的地址。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
到第一地址范围的第一次存储指令;
到所述第一地址范围的第二次存储指令;以及
插入到所述第一和第二次存储指令中的加载指令,其中,所述加载指令并不一定涉及所述第一地址范围;
b)从所述指令序列中去除所述第一次存储指令;
c)执行所述去除了第一次存储指令的指令序列;以及
d)在所述执行期间,确定所述加载指令是否涉及所述第一地址范围中的地址。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
存储指令;
到第一地址范围的加载指令,该指令在所述指令序列中位于所述存储指令之后,其中所述存储指令不一定涉及所述第一地址范围;
b)将所述加载指令在所述指令序列中放置于所述存储指令之前;
c)在将所述加载指令放置在所述存储指令之前以后,执行所述指令序列;以及
d)在所述执行期间,确定所述存储指令是否涉及所述第一地址范围中的地址。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
加载指令;
到第一地址范围的存储指令,该指令在所述指令序列中位于所述加载指令之后,其中所述加载指令不一定涉及所述第一地址范围;
b)将所述存储指令在所述指令序列中放置于所述加载指令之前;
c)在将所述存储指令在所述指令序列中放置在所述加载指令之前以后,执行所述指令序列;以及
d)在所述执行期间,确定所述加载指令是否涉及所述第一地址范围中的地址。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
第一次存储指令;
到第一地址范围的第二次存储指令,该指令在所述指令序列中位于所述第一次存储指令之后,其中所述第一次存储指令不一定涉及所述第一地址范围;
b)将所述第二次存储指令在所述指令序列中放置于所述第一次存储指令之前;
c)在将所述第二次存储指令在所述指令序列中放置在所述第一次存储指令之前以后,执行所述指令序列;以及
d)在所述执行期间,确定所述第一次存储指令是否涉及所述第一地址范围中的地址。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
指令循环,包括:
涉及第一地址范围的第一次存储器操作;以及
第二次存储器操作,其中,所述第二次存储器操作并不一定涉及所述第一地址范围;其中,所述第一和第二次存储器操作中的至少一次操作包括存储指令;
b)从所述指令循环中去除所述第一次存储器操作;
c)在所述去除之后,执行所述指令序列;以及
d)在所述执行期间,确定所述第二次存储器操作是否涉及所述第一地址范围。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
存储到第一地址范围的第一次存储指令;以及
从所述第一地址范围进行加载的加载指令;以及
插入到所述第一存储指令和所述加载指令中的第二次存储指令,其中所述第二次存储指令并不一定存储到所述第一地址范围中的地址;
b)从所述指令序列中去除所述加载指令;
c)在没有所述加载指令的情况下,执行所述指令序列;以及
d)在所述执行期间,确定所述第二次存储指令是否存储到所述第一地址范围中的地址。
本发明的另一方面揭示了一种对指令进行调度和执行的方法,包括:
a)存取指令序列,包括:
从第一地址范围进行加载的加载指令;
第一次存储指令;其中所述第一次存储指令并不一定存储到所述第一地址范围中的地址;
第二次存储指令,存储到所述第一地址范围,其中所述第一次存储指令插入到所述加载指令和所述第二次存储指令中;
b)从所述指令序列中去除所述第二次存储指令;
c)在没有所述第二次存储指令的情况下,执行所述指令序列;以及
d)在所述执行期间,确定所述第一次存储指令是否存储到所述第一地址范围中的地址。
本发明的这些和其他目标和特征可以通过参照下面结合附图的详细描述来更好地理解,在几张附图中,相同的单元用相同的标识表示。
附图说明
图1是说明利用本发明的新微处理器图。
图2是用于实现如图1所示的新微处理器的硬件框图。
图3是说明如图1所示的新处理器的主要处理循环流程图。
图4是说明新处理器一部分的框图。
图5是说明新处理器另一部分的框图。
图6是说明根据本发明设计的调度程序软件操作流程图。
图7是说明用于实现本发明的电路的一个实施例框图。
具体实施方式
图1说明一种新微处理器10,该处理器结合一个比现代微处理器更简化的增强硬件处理部分(称为“形态主机”)和一个仿真软件部分(称为“代码形态软件”)。这两部分功能结合执行通常由高级微处理器中是由硬件单独完成的操作。新微处理器10比已有的微处理器更快,能运行已有许多的微处理器系列所运行的所有操作系统的全部软件
微处理器10包括一个形态主机11它是用来为执行不同目标处理器应用程序,而执行代码形态软件12。形态主机11包括特别适用于允许由代码形态软件12提供的加速技术更加有效使用的硬件增强。形态主处理器包括用于协助加速操作和在发生异常或错误时立刻提供目标计算机状态的硬件增强。代码形态软件包括软件,在其中将目标程序指令翻译成形态主机指令,对主指令进行调度和优化,并在必要时通过从异常返回到已知正确执行的最后点来响应异常和错误,并将该点正确目标状态替代工作状态,以便正确翻译目标代码。代码形态软件还包括用于增强处理速度的不同处理。图2的框图详细说明实现这里所讨论特性的形态主机硬件实例。
如图3中说明(图3描述了代码形态软件12的主循环操作),代码形态软件结合增强的形态主机在扫描中将目标指令翻译为形态主机指令,并用一种存储器数据结构将这些主指令存入超高速缓存(称为“翻译缓冲器”)。一旦目标指令经翻译,它也能从翻译缓冲器中调用并执行,并不需要无数已有微处理器技术中所必须的步骤例如:确定执行每条目标指令需要哪条原始指令,寻址每条原始指令,获取每条原始指令,对原始指令序列进行优化,给每条原始指令分配资源,对原始指令重排序,并在每执行每条目标指令一次时,要执行所涉及的每个原始指令序列的每个步骤。
现有仿真技术的主要问题是在目标程序执行期间不能高效处理产生的异常。某些在运行目标应用程序时所产生的异常指向目标操作系统,并且为了正确执行异常和随后的指令,在发生任何异常时,正确的目标状态很有用。为检测由某些特定主功能替代的特定目标操作,仿真程序还可能产生其他异常。主处理器在执行由目标指令导出的主指令时,也能产生异常。所有这些异常可能在由仿真程序试图将目标指令转换成主指令期间或当主处理器执行仿真主指令时产生。指向目标操作系统的异常是特别难处理的,因为它们需要一直了解目标处理器的状态。
为了有效地从这些异常恢复,增强形态主机包括许多硬件改进。这些改进包括一个门控存储缓冲器(参照图5)。该门控存储缓冲器存储硬件“门”的“未委托”侧上的工作存储器状态变化以及这些委托存储将“漏”向主存储器的硬件门“委托”侧的正式存储器状态变化,“委托”操作是将存储器存储从门的未委托侧转移到门的委托侧。如果发生异常,“返回”操作就放弃门控存储缓冲器中的未委托存储。
硬件改进还包括大量附加处理寄存器(参照图4)。除了能够允许寄存器重命名来减少试图使用相同硬件资源的指令问题外,附加寄存器允许维持一组主或工作寄存器处理主指令和一组目标寄存器保持最初创建目标应用程序的目标处理器的正式状态。目标寄存器通过专用接口与它们的等效工作寄存器相连,这就允许委托操作能将所有工作寄存器的内容迅速转移到正式目标寄存器并允许一个称为“返回”的操作能迅速将所有正式目标寄存器的内容迅速转回到它们的等效工作寄存器。
一旦一条或一组目标指令经过翻译并且没有错误地运行,附加正式寄存器和门控存储缓冲器就允许存储器状态和目标寄存器状态一起更新。更新由代码形态软件选择在整合目标指令边界发生。如果主处理器在运行由一系列目标指令翻译产生的原始主指令时没有产生异常,那么那些指令产生的工作存储和工作寄存器状态就转移给正式存储器和正式目标寄存器。
另一方面,如果在处理非目标指令边界点的主指令时发生异常,目标寄存器中最后更新(或委托)的原始状态可能由工作寄存器中调回,而在门控存储缓冲器中的未委托存储器存储可能被丢弃。随后,如果产生的异常是目标异常,引起目标异常的目标指令可能用一个目标微处理器每次一条地进行重新翻译并以串行序列执行。因为正确执行每条目标指令都没有错误,所以目标寄存器的状态可以更新;并且存储缓冲器中的数据门控进入存储器。随后,当在运行主指令时再次发生异常,目标处理器的正确状态保留在形态主机的目标寄存器和存储器中;并且可能没有延迟地就能正确处理操作。为了今后使用,将这种校正翻译产生的每个新翻译进行高速缓存。因为某一次或少有发生事件例如页错误会引起的翻译或丢弃而贮藏。这些特性的结合由代码形态软件和形态主机组合创建的微处理器能够比最初为其编写软件的处理器更加迅速地执行指令。
除了简化翻译指令、超高速缓存翻译的指令,并且每当需要那组指令执行时就执行每个翻译之外,代码形态软件也会对不同的翻译进行重排序、优化和重调度。一种优化处理将经翻译主指令的不同序列彼此连接或执行期间会变得明显的可能转移。最终,主指令的转移指令中的主要循环参照几乎完全消除。当达到这种条件时,就消除了获取目标指令,目标指令的解码,获取补偿目标指令的原始指令,优化那些原始操作,对原始操作重排序,并在运行任何主指令之前重调度那些原始指令所需的时间。这样,使用改进微处理器运行任意组目标指令所需的工作量就大为减少。
如上面所指出的,重排序操作使用调度程序,它试图为那些看来正确存在但缺乏经验排序的指令选择更好的排列。调度程序面临的问题是它们的运行受很多约束。最基本的约束就是程序所产生的结果必须和执行原始指令序列时产生的结果相同。所有这些限制条件促使传统的调度程序运行保守,并且因而产生执行缓慢的代码。
例如,为了确保产生正确的结果,典型的调度程序依据判定原则操作选择哪些是不具相关性的指令,哪些是具有相关性的指令,以及那些是未知是否有相关性的指令。具有相关性的指令和那些未知是否有相关性的指令都作为存在相关性来处理不重排序。仅有那些已知没有相关性的指令重新排序。遵循这些准则,调度程序产生的代码执行缓慢。
另一个限制条件涉及形态主处理器的特定实施例。形态主处理器的一个实施例是一种通过消除延缓操作的特定电路来设计出运行迅速的处理器。形态主处理器的这个实施例设计并没有采用硬件锁定机制。硬件锁定机制是一种想要确保指令特定序列中的所有步骤不被中断就执行的电路。缺少锁定机制就需要调度程序能够严格运行来确保这样序列中的所有步骤是以没有经过任何重排序的最初翻译排序进行处理,以便处理器能从该序列中产生正确结果。
本发明的调度程序是代码形态软件的软件部分。不同于已有的硬件调度程序,软件调度程序在重排序指令中使用了推理技术。调度程序对于某些指令推测期望的可能最快操作,并对指令重排序来完成结果。如果推测的选择是不正确的,在形态主机所提供的硬件就产生异常。在大多数情况下,推测是正确的,所以整个结果就有更加快的操作。然而,如果推测不正确,那么异常通常引起软件使用门控存储缓冲器,并且引起目标寄存器将操作返回到推测序列的开头,其正确状态是已知的。
对照已有调度程序技术使用的判定策略,本发明的调度程序在为重排序选择指令类别中使用概率准则。改进的调度程序从一组目标指令翻译所产生的指令序列中选择出4种指令序列类别(参照图6)。这些类别包括不具有相关性的指令序列、具有已知相关性的指令序列、可能不具有相关性的指令序列和可能具有相关性的指令序列。如同已有技术,那些已知不具有相关性的指令序列可能由调度程序随意重排序;并且那些具有已知相关性的指令序列以翻译程序所提供的序列顺序处理。
然而,那些可能没有相关性的指令作为实际上并没有相关性来处理,并且以能够提供可能最快执行的方式来进行重排序。在形态主机中配置了硬件装置来检测不正确的重排序,并且如果实际上存在相关性就引起异常。为了在操作序列错误执行时引起异常,调度程序连同硬件装置确保检测出可能错误执行的每条重排序指令。这样的异常允许调度程序忽略先前引起异常的重排序,并保守或以其他某些更适合的方式处理序列。
另一方面,可能积极或保守地处理那些可能具有相关性的指令。如果积极处理,它们就作为可能不具有相关性的那些指令处理。它们以提供可能最快执行的方式进行重排序,并且使用形态主机中提供的硬件来检测,不正确重排序就引起的异常。如果保守处理,它们就以翻译器提供的序列顺序处理。通常,因为大量异常的产生会明显减缓处理速度,所以保守处理将提供更快的处理。
在本发明的一个实施例中,将如图7所示的电路加入到主处理器中。这个电路是用来存储一个存储器地址由调度程序使用特殊“加载和保护”或“存储和保护”操作进行重排序的指令来存取。只要指令进行重排序时就使用这种“加载和保护”或“存储和保护”操作,将重排序指令存取的存储器地址放置在设计作为保护寄存器使用的形态主机的多个寄存器71中的一个。在一个实施例中,提供了8个保护寄存器71。“加载和保护”或“存储和保护”指令指明了用作保护的特定保护寄存器。
虽然“存储器地址”术语在本说明书中是用来说明加载和保护以及存储指令,但这个术语也作为确定被保护存储器区域的许多可能排列的参照来使用。用存储器地址术语是说明经保护的存储区域描述符。例如,在具有字节编址的存储器系统中,本发明的一个实施例使用开始存储器地址和等于地址区域中字节数的许多位来表示那些字节中每个字节的保护情况。在另一个类似编址的实施例使用开始存储器地址和长度,而第三实施例使用单独字节地址,并对每个字节地址使用单独的比较器。
在示范操作中,指令序列包括顺序为第一存储指令STORE1,第二存储指令STORE2,以及加载指令LOAD1。调度程序以假设重排序可能不会引起不正确操作,在重排序序列中,首先放加载指令,其次是第二存储指令,而第三是第一存储指令。为做到这点,调度程序使用“加载和保护”操作来将加载数据放在一个通用寄存器72中,并且导出加载数据的存储位置地址由指令分配到保护寄存器71。因为软件调度程序知道哪些指令需要检测来确定重排序是否会引起错误,调度程序在那些可能由于重排序而受影响的后续指令(在本情况中是STORE1和STORE2指令,在其前面放置有加载)中放置标识(例如在位屏蔽中的一位)指明存有被保护存储器地址的特定保护寄存器。该标识出现的特定位置(如果陷阱功能使用8个保护寄存器,就是8位中的一位)表示该指令的执行依赖于由存储指令所放每个存储地址是否与指定保护寄存器71中持有的存储器地址重叠。
同样,调度程序使用“存储和保护”操作将STORE2指令数据存入存储器中,并将数据要存储的存储器位置的地址放置在由存储和保护指令指定的保护寄存器71中。调度程序还为可能受重排序影响的每个指令(本情况中,只有STORE1指令)的位屏蔽中放置一个标识,表示持有这个被保护存储器地址的特定保护寄存器。最终,调度程序对最后的STORE1指令使用普通的存储指令。
当指令序列执行时,主机硬件使用比较电路73来确定这3个指令中的每个指令的存储器地址是否与存入某个保护寄存器71中的存储器地址上的任意数据部分重叠,并且如果重叠就产生异常。这样,LOAD1操作(已经成为加载和保护)就将其存储写入到保护寄存器71中,但并不检查任何保护寄存器,因为它们都没由设定的标识来指定。STORE2操作(已经成为加载和保护)将其存储出位置写到另一个保护寄存器71中,并检查已被LOAD1使用的保护寄存器71,确定它们的存储器位置之间是否有重叠。最后,STORE1操作(虽然经保护寄存器标识器扩充过,但还是简单存储)对每个LOAD1和STORE2指令的保护寄存器进行检查来确定在其存储器地址和LOAD1和STORE2指令的存储器地址之间的重叠。在上述第一和第三实施例的情况下,比较允许保护精确到字节级。
任何异常会引起代码形态软件决定应答该异常所采用的步骤。通常,代码形态软件执行失败的重排序的指令序列,并且使主机恢复到指令序列开头目标处理器的状态,从而对指令序列再进行保守处理。如果地址不同(在实例中表示存储指令不存取经保护的存储器地址),重排序指令序列的执行以重排序提供的加速进行。
为了完成主处理器和调度程序之间的通讯,修改了形态主机所使用的加载和存储指令。在一个实施例中,这些指令完全由“加载和保护”以及“存储和保护”指令所替代。每个“加载和保护”以及“存储和保护”指令包括位屏蔽(例如对应于8个保护寄存器的8位),用作标志的指明从中能寻找经重排序或别名的指令存储器地址的特定保护寄存器。这些位中的每一位指定一个有用的保护寄存器,其中存储硬件要检验的存储器地址。在可能受重排序影响的后续指令执行之前,当重排序指令时,指定存储存储器地址的专用保护寄存器可能用这个位屏蔽进行检查。“加载和保护”以及“存储和保护”指令可能用于分别替代通常的加载和存储指令,因为当位屏蔽时中没有位可设置时,就不会有检查发生。在这种情况下,“加载和保护”以及“存储和保护”操作就等同于加载和存储操作。还需要注意保护寄存器和持有存储器数据的特定通用寄存器之间的能力,允许有效少量使用保护寄存器。
本发明的主处理器还包括一个称为允许保护寄存器74的附加寄存器,用来存储含有与重排序指令相关的有效存储器地址的保护寄存器位置。指示特定保护寄存器的位被设定用来指明使用由“加载和保护”或“存储和保护”指令提供的标识的保护寄存器。在一个实施例中,只要发生委托操作,就清空允许保护寄存器的位来表示经翻译和重排序的指令序列执行时,没有发生重排序异常。因为重排序仅在两个委托操作点之间发生的所有指令序列中进行,这就允许重排序操作能对每个新翻译的指令序列使用所有分配来进行重排序的保护寄存器。
新发明的附加优势在于“存储和保护”指令着眼于彼此来进行存储重排序。在本发明中,这可以通过在存储位置存储数据,而将存储位置地址放在保护寄存器中来保护。当可能受重排序影响的后续存储出现,它的位屏蔽会指明硬件应对其存储器地址进行检查的保护寄存器,确定是否将发生异常或存储重排序是否已正确完成。
在新微处理器的一个实施例中,为了消除从存储器中获取数据所需时间或在存储器中存储数据所需时间,已提供的电路配置允许在操作异常中经常使用的存储数据在执行单元寄存器中被复制(或“别名”)。例如,如果在执行一个或更多代码序列期间,存储器中的数据频繁重用,则通常每次使用数据时,就必须要从存储器中获取数据,并加载到执行单元中的寄存器中。为了减少这种频繁的存储器存取所需要的时间,数据可以改为在代码序列开始就从存储器中加载到执行单元寄存器,并且分配运行的寄存器取代代码序列继续期间的存储器空间。一旦这完成,通常包含到将从指定的存储器地址数据加载到寄存器中的操作改为简单地从寄存器-寄存器的复制操作,这种操作具有更快的速度;并且那些复制操作常常可由进一步优化而取消。
同样,在代码序列执行期间,代码序列的执行经常需要数据频繁地写入到一个存储器地址。为了减少这种频繁将数据存储到相同地址所需的时间,每次数据写入到存储器地址时,在代码序列继续期间,可将数据传送到指定运行的执行单元寄存器来取代存储器空间。一旦指定了执行单元寄存器,数据的每次变更仅需要一个简单的寄存器-寄存器传送操作,这比存储到存储器地址的处理要快很多。
别名电路的操作在美国专利申请序列号08/721,698,1996.9.26登记,名为“在高级微处理器中别名存储器数据的方法和设备”中有描述(Method andApparatus for Aliasing Memory Data in an Advanced Microprocessor),M.Wing等人,并且这项专利已经转让给本发明的受让人。
本发明用于加速重排序操作的第二实施例使用了某附加硬件,因此同样的硬件既能用于重排序,也能用于上述发明申请的存储器地址别名方式。需要注意重排序指令通常在相邻委托操作之间的间隔中发生,而执行单元寄存器中的别名存储器数据则通常会在更长的时期中仍然有效。在第二实施例中,加了第二个“持续”寄存器76,它和为重排序提供短期保护的允许保护寄存器74一起使用,允许有长期或持续的保护,它以寄存器74相同的方式使用,但仅记录那些存储器地址应维护的周期要比相邻委托操作之间的周期更长的保护寄存器。
例如,如果希望别名一个存储器地址并希望在某个较长周期(例如一个循环)将数据存储在用的主寄存器中,则将持有长期别名操作地址的保护寄存器的标识从指令中复制,允许保护寄存器74和第二持续寄存器76中。假设重排序指令序列执行时没有产生异常,因此允许发生第一委托操作,随后清除允许保护寄存器。在这种方式中,在每次委托,除去指示持有可检验重排序指令地址的保护寄存器的短期标识。在委托时清除允许保护寄存器之后,将第二持续寄存器的内容写入到允许保护寄存器中。因为指明哪个保护寄存器的长期别名用的持续寄存器中的数据已写入到允许保护寄存器中,所以委托操作就不会影响用于长期别名的保护寄存器的标识。通过在每次委托将持续寄存器的内容写入到允许保护寄存器中,保护对于后续的指令序列继续有效,并且最终,直到别名操作不再需要数据时,第二寄存器才最后被清空。
除了第二持续寄存器76外,还保留一个影子寄存器78。它也存储持续寄存器中保留的信息。在委托和返回操作期间,使用影子寄存器。当发生委托时,持续寄存器76中的数据以上述方式复制到允许保护寄存器74中。相同的数据还复制到遮蔽持续寄存器的寄存器78,因此影子寄存器含有持续寄存器在后一个可能要重排序指令序列的开始处的设定。如果在执行下一个指令序列期间发生异常,需要返回操作,那么将影子寄存器的内容复制到允许保护寄存器和持续寄存器中。在允许保护器和持续寄存器中放上在指令序列开始执行之前与这些寄存器中的同样标识,因而确保了随后较保守执行的正确状态。
本发明配置还提供了附加优势。当持续寄存器76的加入允许使用同样的硬件来既增强短期(委托之间)的重排序能力,又在执行单元寄存器中长期维护别名存储器数据,因而消除了存储器存取冗余,它也能用于消除在委托操作之间发生的其他类型的冗余。例如,在指令序列期间可能发生在同一存储器地址有两次加载。如果发生这种情况,并且没有插入存储到存储器地址,那么第二次加载可能被简单地忽略;并且由第一次存储器存取放在寄存器中的数据没有经第二次加载操作取代改变就使用。然而如果在加载之间有存储插入,就有必要来确定存储所要存入的存储器地址是否是第二次存取所要取出的地址。这样,如果在加载之间有存储插入,已有优化技术就不能消除第二次加载。
为了缩短操作过程,本发明可能用于有利方面。如果第一加载改为用存在保护寄存器中的存储器地址的“加载和保护”操作,且存储指令接收一个标识,指明要检验的特定保护寄存器,那么可消除第二次加载,而且“加载和保护”操作存储的数据用于第二次加载。如果存储指令试图存取被保护存储器地址,则在存储存取发生之前通过比较检验保护寄存器的标识。这就会产生异常,且返回到有正确目标状态的最后委托点。随后,调度程序可能提供包括有第二次加载操作的合适指令序列,并且可能重新执行该序列。
同样,如果在两个委托操作之间的指令序列包括对同一存储器地址的两次存储,如果在两次存储之间,没有发生来自存储器地址的加载,就消除第一次存储。但是如果在间歇期间,一次加载已用到来自该存储器地址的数据,那么就能消除第一次加载。使用本发明,如果把加载指令变为“加载和保护”,就会消除对存储器地址的第一次存储。随后第二次存储把从“加载和保护”接收保护寄存器标识来检查存取的存储器地址。如果加载来自不同的地址,那么第二存储可能就正确进行。如果加载来自同一地址,那么第二次存储,尝试存取存储器就会产生异常,随后返回到最后委托点的操作。从那点开始,调度程序将重新调度指令,包括存储操作和重新执行序列。
虽然本发明是根据较佳实施例进行描述,但很明显本领域的熟练技术人员能够在不远离本发明的精神和范畴的情况下对其进行不同的修改和替换。例如,虽然本发明描述的实施例已经设计为用特定处理器系列运行,但应该了解本发明也能应用于为其他处理器结构设计的程序以及为其他程序设计的程序。因而,本发明应该根据随后的权利要求来衡量。

Claims (42)

1、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
涉及第一地址范围的第一次存储器操作;
涉及至少一部分所述第一地址范围的第二次存储器操作;以及
插入到所述第一和第二次存储器操作中的第三次存储器操作,其中,所述第三次存储器操作并不一定涉及所述第一地址范围中的地址;其中,所述第一到第三次存储器操作中的至少一次操作包括存储操作;
b)从所述指令序列中去除所述第二次存储器操作;
c)执行所述去除了第二次存储器操作的指令序列;以及
d)在所述执行期间,确定所述第三次存储器操作是否涉及所述第一地址范围中的地址。
2、如权利要求1所述的方法,其特征在于,进一步包括:在执行所述指令序列之前,将信息加入到第三次存储器操作以允许所述第一地址范围的确定。
3、如权利要求2所述的方法,其特征在于,所述信息包括屏蔽,用于允许确定多个寄存器中哪些寄存器保存有受保护的地址。
4、如权利要求3所述的方法,其特征在于,所述步骤d)进一步包括在所述执行期间,确定所述第三次存储器操作是否涉及所述受保护地址范围中的地址。
5、如权利要求3所述的方法,其特征在于,进一步包括:在执行所述指令序列之前,将与所述第一地址范围关联的存储器地址存储到所述多个寄存器中的一个寄存器。
6、如权利要求1所述的方法,其特征在于,进一步包括:在执行所述指令序列之前,将与所述第一地址范围关联的存储器地址存储到寄存器中。
7、如权利要求6所述的方法,其特征在于,
所述指令序列包括第四次存储器操作,该操作在所述指令序列中位于所述第一次存储器操作之后;以及
进一步包括:将信息添加到所述第四次存储器操作中,以便在所述第四次存储器操作即使涉及到所述第一地址范围时,该操作也能没有异常地执行。
8、如权利要求1所述的方法,其特征在于,如果所述第三次存储器操作没有插入,所述第一和第二次存储器操作就可安全地简化为单一的存储器操作。
9、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
从第一地址范围进行加载的第一次加载指令;
从所述第一地址范围进行加载的第二次加载指令;以及
插入到所述第一和第二次加载指令中的存储指令,其中,所述存储指令并不一定存储到所述第一地址范围中的地址;
b)从所述指令序列中去除所述第二次加载指令;
c)在没有所述第二次加载指令的情况下,执行所述指令序列;以及
d)在所述执行期间,确定所述存储指令是否存储到所述第一地址范围中的地址。
10、如权利要求9所述的方法,其特征在于,所述步骤b)进一步包括将与所述第一地址范围关联的存储器地址存储到保护寄存器中。
11、如权利要求10所述的方法,其特征在于,所述步骤b)进一步包括将标志加入到所述存储指令中以指示所述保护寄存器。
12、如权利要求9所述的方法,其特征在于,所述步骤b)进一步包括将所述第一加载指令改变成加载和保护指令。
13、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
到第一地址范围的第一次存储指令;
到所述第一地址范围的第二次存储指令;以及
插入到所述第一和第二次存储指令中的加载指令,其中,所述加载指令并不一定涉及所述第一地址范围;
b)从所述指令序列中去除所述第一次存储指令;
c)执行所述去除了第一次存储指令的指令序列;以及
d)在所述执行期间,确定所述加载指令是否涉及所述第一地址范围中的地址。
14、如权利要求13所述的方法,其特征在于,所述步骤b)进一步包括将与所述加载指令关联的存储器地址存储在保护寄存器中。
15、如权利要求14所述的方法,其特征在于,所述步骤b)进一步包括将标志加入到所述第二存储指令中以指示所述保护寄存器。
16、如权利要求13所述的方法,其特征在于,所述步骤b)进一步包括将所述加载指令改变成加载和保护指令。
17、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
存储指令;
到第一地址范围的加载指令,该指令在所述指令序列中位于所述存储指令之后,其中所述存储指令不一定涉及所述第一地址范围;
b)将所述加载指令在所述指令序列中放置于所述存储指令之前;
c)在将所述加载指令放置在所述存储指令之前以后,执行所述指令序列;以及
d)在所述执行期间,确定所述存储指令是否涉及所述第一地址范围中的地址。
18、如权利要求17所述的方法,其特征在于,所述步骤b)进一步包括将由所述加载指令存取的存储器地址范围存储在保护寄存器中。
19、如权利要求18所述的方法,其特征在于,进一步包括将标志加入到所述存储指令中以指示所述保护寄存器。
20、如权利要求17所述的方法,其特征在于,所述步骤b)进一步包括将所述加载指令改变成加载和保护指令。
21、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
加载指令;
到第一地址范围的存储指令,该指令在所述指令序列中位于所述加载指令之后,其中所述加载指令不一定涉及所述第一地址范围;
b)将所述存储指令在所述指令序列中放置于所述加载指令之前;
c)在将所述存储指令在所述指令序列中放置在所述加载指令之前以后,执行所述指令序列;以及
d)在所述执行期间,确定所述加载指令是否涉及所述第一地址范围中的地址。
22、如权利要求21所述的方法,其特征在于,所述步骤b)进一步包括将由所述存储指令存取的存储器地址范围存储在保护寄存器中。
23、如权利要求22所述的方法,其特征在于,进一步包括将标志加入到所述加载指令中以指示所述保护寄存器。
24、如权利要求21所述的方法,其特征在于,所述步骤b)进一步包括将所述存储指令改变成存储和保护指令。
25、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
第一次存储指令;
到第一地址范围的第二次存储指令,该指令在所述指令序列中位于所述第一次存储指令之后,其中所述第一次存储指令不一定涉及所述第一地址范围;
b)将所述第二次存储指令在所述指令序列中放置于所述第一次存储指令之前;
c)在将所述第二次存储指令在所述指令序列中放置在所述第一次存储指令之前以后,执行所述指令序列;以及
d)在所述执行期间,确定所述第一次存储指令是否涉及所述第一地址范围中的地址。
26.如权利要求25所述的方法,其特征在于,所述步骤b)进一步包括将所述第二次存储指令改变成存储和保护指令以保护由所述第二次存储指令所存储的数据不会由于所述第二次存储指令在所述指令序列中的移动而被覆盖。
27、如权利要求25所述的方法,其特征在于,所述步骤b)进一步包括将由所述第二次存储指令存储的数据所在的地址范围存储在保护寄存器中。
28、如权利要求27所述的方法,其特征在于,进一步包括将标志加入到所述第一次存储指令中以指示所述保护寄存器。
29、一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
指令循环,包括:
涉及第一地址范围的第一次存储器操作;以及
第二次存储器操作,其中,所述第二次存储器操作并不一定涉及所述第一地址范围;其中,所述第一和第二次存储器操作中的至少一次操作包括存储指令;
b)从所述指令循环中去除所述第一次存储器操作;
c)在所述去除之后,执行所述指令序列;以及
d)在所述执行期间,确定所述第二次存储器操作是否涉及所述第一地址范围。
30.如权利要求29所述的方法,其特征在于,进一步包括在执行所述指令序列之前,将标志加入到所述第二次存储器操作中以指示含有受保护地址的寄存器。
31.如权利要求29所述的方法,其特征在于,进一步包括在执行所述指令序列之前,将与所述第一地址范围关联的存储器地址存储在所述寄存器中。
32.如权利要求29所述的方法,其特征在于,所述第一次存储器操作包括加载操作。
33.如权利要求29所述的方法,其特征在于,所述第二次存储器操作包括加载操作。
34.如权利要求29所述的方法,其特征在于,所述第二次存储器操作包括存储操作。
35.一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
存储到第一地址范围的第一次存储指令;以及
从所述第一地址范围进行加载的加载指令;以及
插入到所述第一存储指令和所述加载指令中的第二次存储指令,其中所述第二次存储指令并不一定存储到所述第一地址范围中的地址;
b)从所述指令序列中去除所述加载指令;
c)在没有所述加载指令的情况下,执行所述指令序列;以及
d)在所述执行期间,确定所述第二次存储指令是否存储到所述第一地址范围中的地址。
36.如权利要求35所述的方法,其特征在于,所述步骤b)进一步包括将与所述第一地址范围关联的存储器地址存储在保护寄存器中。
37.如权利要求36所述的方法,其特征在于,所述步骤b)进一步包括将标志加入到所述第二次存储指令中以指示所述保护寄存器。
38、如权利要求35所述的方法,其特征在于,所述步骤b)进一步包括将所述第一次存储指令改变成存储和保护指令。
39.一种对指令进行调度和执行的方法,其特征在于,所述方法包括:
a)存取一指令序列,包括:
从第一地址范围进行加载的加载指令;
第一次存储指令;其中所述第一次存储指令并不一定存储到所述第一地址范围中的地址;
第二次存储指令,存储到所述第一地址范围,其中所述第一次存储指令插入到所述加载指令和所述第二次存储指令中;
b)从所述指令序列中去除所述第二次存储指令;
c)在没有所述第二次存储指令的情况下,执行所述指令序列;以及
d)在所述执行期间,确定所述第一次存储指令是否存储到所述第一地址范围中的地址。
40.如权利要求39所述的方法,其特征在于,所述步骤b)进一步包括将与所述第一地址范围关联的存储器地址存储在保护寄存器中。
41.如权利要求40所述的方法,其特征在于,所述步骤b)进一步包括将标志加入到所述第一次存储指令中以指示所述保护寄存器。
42、如权利要求39所述的方法,其特征在于,所述步骤b)进一步包括将所述加载指令改变成加载和保护指令。
CNB008088837A 1999-06-14 2000-06-12 高级微处理器中增强调度的方法和设备 Expired - Lifetime CN1202480C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/332,338 US7089404B1 (en) 1999-06-14 1999-06-14 Method and apparatus for enhancing scheduling in an advanced microprocessor
US09/332,338 1999-06-14

Publications (2)

Publication Number Publication Date
CN1355902A CN1355902A (zh) 2002-06-26
CN1202480C true CN1202480C (zh) 2005-05-18

Family

ID=23297783

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008088837A Expired - Lifetime CN1202480C (zh) 1999-06-14 2000-06-12 高级微处理器中增强调度的方法和设备

Country Status (9)

Country Link
US (3) US7089404B1 (zh)
EP (1) EP1194855B1 (zh)
JP (2) JP2003502754A (zh)
KR (2) KR100758367B1 (zh)
CN (1) CN1202480C (zh)
AT (1) ATE441147T1 (zh)
CA (1) CA2377164C (zh)
DE (1) DE60042824D1 (zh)
WO (1) WO2000077965A2 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6981110B1 (en) 2001-10-23 2005-12-27 Stephen Waller Melvin Hardware enforced virtual sequentiality
US7386619B1 (en) * 2003-01-06 2008-06-10 Slt Logic, Llc System and method for allocating communications to processors in a multiprocessor system
US7316017B1 (en) * 2003-01-06 2008-01-01 Slt Logic, Llc System and method for allocatiing communications to processors and rescheduling processes in a multiprocessor system
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
KR100607987B1 (ko) * 2004-06-24 2006-08-02 삼성전자주식회사 명령어 스케줄링을 수행하는 메모리 제어장치 및 방법
US20060150188A1 (en) * 2004-12-21 2006-07-06 Manuel Roman Method and apparatus for supporting soft real-time behavior
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7478226B1 (en) 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
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
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9189233B2 (en) 2008-11-24 2015-11-17 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8775884B2 (en) 2009-03-04 2014-07-08 Alcatel Lucent Method and apparatus for position-based scheduling for JTAG systems
US8719649B2 (en) 2009-03-04 2014-05-06 Alcatel Lucent Method and apparatus for deferred scheduling for JTAG systems
US8621301B2 (en) 2009-03-04 2013-12-31 Alcatel Lucent Method and apparatus for virtual in-circuit emulation
US20100229058A1 (en) * 2009-03-04 2010-09-09 Suresh Goyal Method and apparatus for system testing using scan chain decomposition
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US9405547B2 (en) * 2011-04-07 2016-08-02 Intel Corporation Register allocation for rotation based alias protection register
CN103827816B (zh) * 2011-09-27 2016-11-09 英特尔公司 加快执行时存储器别名使用检查
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9183105B2 (en) * 2013-02-04 2015-11-10 Alcatel Lucent Systems and methods for dynamic scan scheduling
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
CN103761073A (zh) * 2014-01-08 2014-04-30 东南大学 一种面向ARMv7的基于推测的指令动态调度方法
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US11080182B2 (en) * 2019-01-07 2021-08-03 International Business Machines Corporation Object load introspection using guarded storage

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4817118A (en) 1987-06-29 1989-03-28 Step Engineering Mobile incident logger
US4903264A (en) 1988-04-18 1990-02-20 Motorola, Inc. Method and apparatus for handling out of order exceptions in a pipelined data unit
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5253349A (en) * 1991-01-30 1993-10-12 International Business Machines Corporation Decreasing processing time for type 1 dyadic instructions
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US5269017A (en) * 1991-08-29 1993-12-07 International Business Machines Corporation Type 1, 2 and 3 retry and checkpointing
US5349658A (en) 1991-11-01 1994-09-20 Rourke Thomas C O Graphical user interface
US5274815A (en) 1991-11-01 1993-12-28 Motorola, Inc. Dynamic instruction modifying controller and operation method
JP2786574B2 (ja) 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
JP3644959B2 (ja) 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5450560A (en) 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
DE69330889T2 (de) * 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US6704861B1 (en) * 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
US5420990A (en) 1993-06-17 1995-05-30 Digital Equipment Corporation Mechanism for enforcing the correct order of instruction execution
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
US5454117A (en) 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5463745A (en) 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5588126A (en) * 1993-12-30 1996-12-24 Intel Corporation Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system
US5537559A (en) 1994-02-08 1996-07-16 Meridian Semiconductor, Inc. Exception handling circuit and method
US5559976A (en) 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
US5546599A (en) 1994-03-31 1996-08-13 International Business Machines Corporation Processing system and method of operation for processing dispatched instructions with detected exceptions
TW260765B (zh) 1994-03-31 1995-10-21 Ibm
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5689712A (en) 1994-07-27 1997-11-18 International Business Machines Corporation Profile-based optimizing postprocessors for data references
US5537620A (en) * 1994-09-16 1996-07-16 International Business Machines Corporation Redundant load elimination on optimizing compilers
JP3617686B2 (ja) 1994-09-26 2005-02-09 株式会社リコー 画像形成装置及び画像形成装置管理システム
US6216200B1 (en) 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5694577A (en) * 1995-06-06 1997-12-02 Matsushita Electric Industrial Co., Ltd. Memory conflict buffer for achieving memory disambiguation in compile-time code schedule
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US5819056A (en) 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5809273A (en) 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US6185668B1 (en) * 1995-12-21 2001-02-06 Intergraph Corporation Method and apparatus for speculative execution of instructions
US5901308A (en) * 1996-03-18 1999-05-04 Digital Equipment Corporation Software mechanism for reducing exceptions generated by speculatively scheduled instructions
US5875340A (en) * 1996-05-31 1999-02-23 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
US5860017A (en) * 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5903749A (en) * 1996-07-02 1999-05-11 Institute For The Development Of Emerging Architecture, L.L.C. Method and apparatus for implementing check instructions that allow for the reuse of memory conflict information if no memory conflict occurs
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
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
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US6173366B1 (en) * 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5864692A (en) 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US6011908A (en) * 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US5918005A (en) 1997-03-25 1999-06-29 International Business Machines Corporation Apparatus region-based detection of interference among reordered memory operations in a processor
US5931957A (en) * 1997-03-31 1999-08-03 International Business Machines Corporation Support for out-of-order execution of loads and stores in a processor
US5790625A (en) 1997-04-14 1998-08-04 International Business Machines Corporation Mechanism for enabling an array of numerous large high speed counters
US5996060A (en) * 1997-09-25 1999-11-30 Technion Research And Development Foundation Ltd. System and method for concurrent processing
US6505296B2 (en) 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US6148394A (en) * 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
US6609189B1 (en) * 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6192465B1 (en) * 1998-09-21 2001-02-20 Advanced Micro Devices, Inc. Using multiple decoders and a reorder queue to decode instructions out of order
US6163839A (en) 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6463523B1 (en) * 1999-02-01 2002-10-08 Compaq Information Technologies Group, L.P. Method and apparatus for delaying the execution of dependent loads
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location

Also Published As

Publication number Publication date
EP1194855A4 (en) 2004-11-03
US8209517B1 (en) 2012-06-26
DE60042824D1 (de) 2009-10-08
JP3872809B2 (ja) 2007-01-24
EP1194855B1 (en) 2009-08-26
JP2003502754A (ja) 2003-01-21
KR20060002031A (ko) 2006-01-06
WO2000077965A2 (en) 2000-12-21
WO2000077965A3 (en) 2001-04-05
KR20020022068A (ko) 2002-03-23
US9081563B2 (en) 2015-07-14
CN1355902A (zh) 2002-06-26
US20120246453A1 (en) 2012-09-27
JP2006099800A (ja) 2006-04-13
US7089404B1 (en) 2006-08-08
EP1194855A2 (en) 2002-04-10
ATE441147T1 (de) 2009-09-15
CA2377164A1 (en) 2000-12-21
KR100758367B1 (ko) 2007-09-14
CA2377164C (en) 2007-09-25

Similar Documents

Publication Publication Date Title
CN1202480C (zh) 高级微处理器中增强调度的方法和设备
CN1141647C (zh) 赋予高级微处理器内存储器数据别名的方法和装置
CN1184564C (zh) 计算机系统及在计算机系统中执行指令的方法
CN1161691C (zh) 检测被寻址单元预测失败的存储控制器
US5721927A (en) Method for verifying contiquity of a binary translated block of instructions by attaching a compare and/or branch instruction to predecessor block of instructions
JP3571266B2 (ja) スーパースカラプロセッサ
US7934203B2 (en) Preparing instruction groups for a processor having multiple issue ports
CN1264083C (zh) 用于在执行被转换指令时维持环境的方法和装置
CN1700136A (zh) 处理器扩展和软件验证
CN1266589C (zh) 多重高速缓冲存储器线写回和作废技术
CN1242087A (zh) 用于高级微处理器的门控存储缓冲器
CN1292527A (zh) 逐模块验证
US20170262364A1 (en) Efficient reference classification and quick memory reuse in a system that supports concurrent garbage collection
CN1291316C (zh) 用于管理处理器中的状态信息的方法及其处理器
US11550714B2 (en) Compiling application with multiple function implementations for garbage collection
CN1169046C (zh) 完全迟缓链接
CN1148656C (zh) 面向线程的调试
US7080204B2 (en) Cache controller computer system and method for program recompilation
CN108446186B (zh) 从加壳Android应用程序中恢复Dex源文件的方法
CN1497432A (zh) 微处理器标记寄存器屏蔽移入弹出装置和方法
CN1292526A (zh) 用于最低上界类型的符号计算的数据流算法
CN1237441C (zh) 选择性控制存储器属性的装置及方法
CN1107909C (zh) 带临时保存目标处理器状态的装置的主处理器
CN1286772A (zh) 用于高级微处理器的翻译存储器保护装置
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

Granted publication date: 20050518

CX01 Expiry of patent term