太阳城集团

  • / 46
  • 下载费用:30 金币  

用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级.pdf

摘要
申请专利号:

太阳城集团CN201580051837.1

申请日:

2015.07.24

公开号:

CN106716362A

公开日:

2017.05.24

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 9/455申请日:20150724|||公开
IPC分类号: G06F9/455; G06F9/45; G06F9/30; G06F9/38 主分类号: G06F9/455
申请人: 英特尔公司
发明人: M·阿布达拉
地址: 美国加利福尼亚州
优先权: 2014.07.25 US 62/029,383; 2015.07.23 US 14/807,141
专利代理机构: 上海专利商标事务所有限公司 31100 代理人: 何焜
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

太阳城集团CN201580051837.1

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.06.16|||2017.05.24

法律状态类型:

太阳城集团实质审查的生效|||公开

摘要

太阳城集团用于不可知的运行时架构的系统。该系统包括系统仿真/虚拟化转换器、应用代码转换器、以及系统转换器,其中系统仿真/虚拟化转换器和应用代码转换器实现系统仿真进程,并且其中系统转换器实现用于执行来自访客镜像的代码的系统转换进程。系统转换器进一步包括用于取出传入的微指令序列的指令取出组件、耦合到指令取出组件的用于接收被取出的宏指令序列并解码为微指令序列的解码组件、以及耦合到解码组件的用于接收微指令序列并通过将该微指令序列重排序为包括多个相关的代码组的经优化的微指令序列来执行优化处理的分配和发出级。微处理器流水线耦合到分配和发出级,用于接收和执行经优化的微指令序列。序列高速缓存耦合到分配和发出级,用于接收和存储经优化的微指令序列的副本,以用于在经优化的微指令序列上的后续的命中之后的后续的使用,以及硬件组件经耦合以用于将指令移动到传入的微指令序列中。

权利要求书

1.一种不可知的运行时架构的系统,包括:
系统仿真/虚拟化转换器;
应用代码转换器;以及
系统转换器,其中所述系统仿真/虚拟化转换器和所述应用代码转换器实现系统仿真
过程,并且其中所述系统转换器实现用于执行来自访客镜像的代码的系统转换过程,其中
所述系统转换器进一步包括:
指令取出组件,用于取出传入的微指令序列;
解码组件,耦合到所述指令取出组件,用于接收被取出的宏指令序列并解码为微指令
序列;
分配和发出级,耦合到所述解码组件,用于接收所述微指令序列并通过将所述微指令
序列重排序为包括多个相关的代码组的经优化的微指令序列来执行优化处理;
微处理器流水线,耦合到所述分配和发出级,用于接收和执行所述经优化的微指令序
列;
序列高速缓存,耦合到所述分配和发出级,用于接收和存储所述经优化的微指令序列
的副本,以用于在所述经优化的微指令序列上的后续的命中之后的后续的使用;以及
硬件组件,用于将指令移动到所述传入的微指令序列中。
2.如权利要求1所述的方法,其特征在于,经解码的微指令的副本存储在微指令高速缓
存中。
3.如权利要求1所述的方法,其特征在于,使用所述微处理器的分配和发出级来执行所
述优化处理。
4.如权利要求3所述的方法,其特征在于,所述分配和发出级进一步包括将所述微指令
序列重排序为所述经优化的微指令序列的指令调度和优化器组件。
5.如权利要求1所述的方法,其特征在于,所述优化处理进一步包括动态地展开微指令
序列。
6.如权利要求1所述的方法,其特征在于,通过多个迭代来实现所述优化处理。
7.如权利要求1所述的方法,其特征在于,通过实现重排序的寄存器重命名过程来实现
所述优化处理。
8.一种微处理器,包括:
系统仿真/虚拟化转换器;
应用代码转换器;以及
系统转换器,其中所述系统仿真/虚拟化转换器和所述应用代码转换器实现系统仿真
过程,并且其中所述系统转换器实现用于执行来自访客镜像的代码的系统转换过程,其中
所述系统转换器进一步包括:
指令取出组件,用于取出传入的微指令序列;
解码组件,耦合到所述指令取出组件,用于接收被取出的宏指令序列并解码为微指令
序列;
分配和发出级,耦合到所述解码组件,用于接收所述微指令序列并通过将所述微指令
序列重排序为包括多个相关的代码组的经优化的微指令序列来执行优化处理;
微处理器流水线,耦合到所述分配和发出级,用于接收和执行所述经优化的微指令序
列;
序列高速缓存,耦合到所述分配和发出级,用于接收和存储所述经优化的微指令序列
的副本,以用于在所述经优化的微指令序列上的后续的命中之后的后续的使用;以及
硬件组件,用于将指令移动到所述传入的微指令序列中。
9.如权利要求8所述的微处理器,其特征在于,经解码的微指令的副本存储在微指令高
速缓存中。
10.如权利要求8所述的微处理器,其特征在于,使用所述微处理器的分配和发出级来
执行所述优化处理。
11.如权利要求10所述的微处理器,其特征在于,所述分配和发出级进一步包括将所述
微指令序列重排序为所述经优化的微指令序列的指令调度和优化器组件。
12.如权利要求8所述的微处理器,其特征在于,所述优化处理进一步包括动态地展开
微指令序列。
13.如权利要求8所述的微处理器,其特征在于,通过多个迭代来实现所述优化处理。
14.如权利要求8所述的微处理器,其特征在于,通过实现重排序的寄存器重命名过程
来实现所述优化处理。
15.一种微处理器,包括:
系统仿真/虚拟化转换器;
应用代码转换器;以及
系统转换器,其中所述系统仿真/虚拟化转换器和所述应用代码转换器实现系统仿真
过程,并且其中所述系统转换器实现用于执行来自访客镜像的代码的系统转换过程,其中
所述系统转换器进一步包括:
指令取出组件,用于取出传入的微指令序列;
解码组件,耦合到所述指令取出组件,用于接收被取出的宏指令序列并解码为微指令
序列;
分配和发出级,耦合到所述解码组件,用于接收所述微指令序列并通过将所述微指令
序列重排序为包括多个相关的代码组的经优化的微指令序列来执行优化处理;
微处理器流水线,耦合到所述分配和发出级,用于接收和执行所述经优化的微指令序
列;
序列高速缓存,耦合到所述分配和发出级,用于接收和存储所述经优化的微指令序列
的副本,以用于在所述经优化的微指令序列上的后续的命中之后的后续的使用;以及
硬件组件,用于将指令移动到所述传入的微指令序列中。
16.如权利要求15所述的微处理器,其特征在于,优化处理进一步包括扫描依赖性矩阵
的多个行以标识匹配指令。
17.如权利要求16所述的微处理器,其特征在于,优化处理进一步包括分析所述匹配指
令以确定所述匹配指令是否包括分块依赖性,以及其中执行重命名以移除所述分块相关。
18.如权利要求17所述的微处理器,其特征在于,对应于所述依赖性矩阵的每一行的第
一匹配的指令被移动到对应的依赖性组中。
19.如权利要求15所述的微处理器,其特征在于,所述经优化的微指令序列的副本被存
储在所述微处理器的存储器层级中。
20.如权利要求19所述的微处理器,其特征在于,所述存储器层级包括L1高速缓存和L2
高速缓存和系统存储器。

说明书

用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级

本申请要求共同待审并且共同转让的由Mohammad A.Abdallah于2014年7月25日
提交的名称为“A RUNTIME ARCHITECTURE FOR EFFICIENTLY OPTIMIZING AND EXECUTING
GUEST CODE AND CONVERTING TO NATIVE CODE(用于高效地优化和执行访客代码并将其转
换为本机代码的运行时架构)”的美国临时专利申请序列号62/029383的权益,该申请通过
引用整体结合于此。

发明领域

本发明总地涉及数字计算机系统,更具体地涉及用于选择包括指令序列的指令的
系统和方法。

发明背景

处理器被要求处理多个从属的或完全独立的任务。这些处理器的内部状态通常由
在程序执行的每个特定瞬间可能保存不同的值的寄存器组成。在程序执行的每个瞬间,内
部状态镜像被称为处理器的架构状态。

当将代码执行切换到运行另一功能(例如,另一线程、进程或程序)时,则必须保存
机器/处理器的状态,使得新功能可以利用内部寄存器来建立新功能的新状态。当终止新功
能时,则可以丢弃其状态,并且将恢复先前上下文的状态并且执行恢复。这种切换进程被称
为上下文切换,并且通常包括10个或数百个循环,尤其在采用大量寄存器(例如,64、128、
256)和/或乱序执行的现代架构中。

在知晓线程的硬件架构中,硬件支持用于有限数量的硬件支持的线程的多个上下
文状态是常见的。在这种情形下,硬件为每个支持的线程复制所有架构状态元素。这消除了
当执行新线程时对上下文切换的需要。然而,这仍然有许多缺点,即为在硬件中支持的每个
附加的线程复制所有架构状态元素(即,寄存器)的面积、功率、以及复杂性。此外,如果软件
线程的数量超过被明确地支持的硬件线程的数量,则仍然必须执行上下文切换。

随着在要求大量线程的细粒度的基础上需要并行性,这变得常见。具有复制上下
文状态硬件存储的硬件知晓线程的架构无助于非线程的软件代码,并且只为线程软件减少
上下文切换的数量。然而,这些线程通常为粗粒度的并行性构建,并且导致启动和同步的繁
重的软件开销,使得细粒度的并行性(例如功能调用和循环并行执行)不具有高效的线程启
动/自动生成。描述的此类开销伴随着此类代码使用最新编译器的自动并行化或用于非显
示地/容易地并行的/线程化软件代码的用户并行化技术的困难。

发明概述

在一个实施例中,本发明实现为用于不可知的运行时架构的系统。该系统包括系
统仿真/虚拟化转换器、应用代码转换器、以及系统转换器,其中系统仿真/虚拟化转换器和
应用代码转换器实现系统仿真进程,并且其中系统转换器实现用于执行来自访客镜像的代
码的系统转换进程。系统转换器进一步包括用于取出传入的微指令序列的指令取出组件、
耦合到指令取出组件的用于接收被取出的宏指令序列并解码为微指令序列的解码组件、以
及耦合到解码组件的用于接收微指令序列并通过将微指令序列重排序为包括多个相关的
代码组的经优化的微指令序列来执行优化处理的分配和发出级。微处理器流水线耦合到分
配和发出级,用于接收和执行经优化的微指令序列。序列高速缓存耦合到分配和发出级,用
于接收和存储经优化的微指令序列的副本,以用于在经优化的微指令序列上的后续的命中
之后的后续的使用,以及硬件组件经耦合以用于将指令移动到传入的微指令序列中。

以上是概述并且因此必然地包括对细节的简化、概括和省略;因此,本领域技术人
员将理解概述仅是说明性的并且无论如何不旨在是限制性的。仅由权利要求书定义的本发
明的其他方面、创造性特征、以及优势将在以下陈述的非限制性的详细描述中变得显而易
见。

附图说明

本发明作为示例而非限制在所附附图中示出,在附图中,相似的附图标记指代相
似的元件。

图1示出根据本发明的一个实施例的架构不可知的运行时系统的概览示图。

图2示出根据本发明的一个实施例的描绘了硬件加速的转换/JIT层的示图。

图3示出根据本发明的一个实施例的硬件加速的运行时转换/JIT层的更详细的示
图。

图4示出根据本发明的一个实施例的描绘了用于实现系统仿真和系统转换的组件
的示图。

图5示出根据本发明的一个实施例的描绘了访客标志架构仿真的示图。

图6示出根据本发明的一个实施例的统一寄存器组的示图。

图7示出根据本发明的一个实施例的统一阴影寄存器组和支持推测架构状态和瞬
态架构状态的流水线架构1300的示图。

图8示出根据本发明的一个实施例的描绘了运行提前批处理/转换进程的示图。

图9示出根据本发明的一个实施例的示出其中将访客指令块和它们的对应的本机
转换块存储在高速缓存内的方式的示例性硬件加速的转换系统的图示。

图10示出根据本发明的一个实施例的硬件加速的转换系统的更详细的示例。

图11示出根据本发明的一个实施例的包括双范围使用的第二使用模型的示图。

图12示出根据本发明的一个实施例的包括不需要保存和在从瞬态上下文返回后
不需要恢复先前上下文的瞬态上下文切换的第三使用模型的示图。

图13示出根据本发明的一个实施例的描绘了其中指令序列中的异常是由于需要
对后续代码的变换的情形的示图。

图14示出根据本发明的一个实施例的包括不需要保存和在从瞬态上下文返回后
不需要恢复先前上下文的瞬态上下文切换的第四使用模型的示图。

图15示出根据本发明的一个实施例的示出了优化的在分支之前调度指令的示图。

图16示出根据本发明的一个实施例的示出了优化的在存储之前调度加载的示图。

图17示出根据本发明的一个实施例的存储过滤算法的示图。

图18示出根据本发明的一个实施例的在组成按顺序从存储器读取的加载的存储
器一致性模型中的具有乱序加载的信号标实现的示图。

图19示出根据本发明的一个实施例的通过JIT优化的重排序过程的示图。

图20示出根据本发明的一个实施例的通过JIT优化的重排序过程的示图。

图21示出根据本发明的一个实施例的通过JIT优化的重排序过程的示图。

图22示出根据本发明的一个实施例的示出通过JIT优化在存储之前被重排序的加
载的示图。

图23示出根据本发明的一个实施例的加载和存储指令分割的第一示图。

图24示出根据本发明的一个实施例的示出其中在存储器内存储CLB功能结合代码
高速缓存和访客指令到本机指令的映射的方式的示例性流程图。

图25示出根据本发明的一个实施例的运行提前运行时访客指令转换/解码过程的
示图。

图26示出根据本发明的一个实施例的描绘了具有访客指令序列的转换表和具有
本机指令映射的本机映射表的示图。

发明详细描述

虽然结合一个实施例描述了本发明,发明不旨在被限制为本文中所陈述的特定形
式。相反,旨在覆盖如所附权利要求书定义的可被合理地包括在发明的范围内的此类替代
方案、修改以及等效方案。

在以下详细描述中,陈述了诸如特定方法顺序、结构、元素和连接的多个具体细
节。然而将理解不需要利用这些和其他具体细节以实践本发明的实施例。在其他情形下,省
略了公知的结构、元素或连接,或者没有以具体细节描述它们,以便避免不必要地模糊该描
述。

本说明书中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特
定特征、结构或特性被包括在本发明的至少一个实施例中。出现在说明书中的多个位置的
短语“在一个实施例中”不必须全部指示同一实施例,也不是与其他实施例相互排斥的单独
的或替代的实施例。此外,描述了一些实施例可以呈现的并且其他实施例可以不呈现的各
种特征。类似地,描述了对于一些实施例可以是要求的并且对于其他实施例可以不是要求
的各种要求。

接下来的详细描述中的一些部分是按照对计算机存储器内的数据位的操作的程
序、步骤、逻辑块、处理和其他符号表示而给出的。这些描述和表示是数据处理领域内技术
人员使用的最有效地将其工作本质传达给本领域内其它技术人员的手段。流程、计算机执
行步骤、逻辑块、过程等等在本文中被一般地构思成达到所要求结果的自洽步骤或指令序
列。这些步骤需要对物理量进行物理操控。通常但非必须,这些量采用计算机可读存储介质
的电信号或磁信号的形式,并且在计算机系统中能被存储、传输、组合、比较、以及以其他方
式操控。主要出于常见用途的考虑,将这些信号称为位、值、要素、符号、字符、项、数字等被
证明是方便的。

然而,应当记住,所有这些和类似的术语用于与适当的物理量关联,并且仅仅是应
用于这些量的方便的标记。除非具体说明否则,如从以下讨论所显而易见的,应意识到,贯
穿本发明使用诸如“处理”、“访问”、“写”、“存储”、“复制”等术语的讨论指的是计算机系统
或类似的电子计算设备的动作和过程,它们将计算机系统寄存器和存储器和其他计算机可
读介质内表示为物理(电子)量的数据处理和/或变换成计算机系统存储器、寄存器或其他
这种太阳城集团存储、传输或显示设备内类似地表示为物理量的其他数据。

本发明的实施例针对通用不可知的运行时系统的实现方式。如本文中所使用的,
本发明的实施例还被称为“VISC ISA不可知的运行时架构”。以下详细描述的图1至30示出
进程和系统使用的用于实现通用不可知的运行时系统的机制。

本发明的实施例针对利用软件工业中的趋势的优势,即新的系统软件愈发朝向运
行时编译、优化和执行的趋势。更传统的更旧的软件系统适于静态编译。

本发明的实施例有利地针对运行时操纵的新的系统软件。例如,最初流行的是
Java虚拟机运行时实现方式。但是这些实现方式具有慢于本机执行四到五倍之间的劣势。
最近,实现方式已经更朝向Java虚拟机实现方式加上本机代码封装(例如,慢于两到三倍之
间)。更近地,实现方式已经朝向Chrome和低级虚拟机运行时实现方式(例如,比本机慢两
倍)。

本发明的实施例将实现具有扩展运行时支持并且将使用扩展运行时支持的架构。
本发明的实施例将具有高效地执行访客代码(例如,包括运行时访客代码)的能力。本发明
的实施例能高效地将访客/运行时指令转换为本机指令。本发明的实施例将能高效地将被
转换的访客/运行时代码映射到本机代码。此外,本发明的实施例将能高效地在运行时优化
访客代码或本机代码。

这些能力使本发明的实施例能非常适于架构不可知的运行时系统的时代。本发明
的实施例将完整地便携有运行传统应用代码的能力,并且这种代码可以被优化为如在其他
架构上运行的两倍快或比两倍更快。

图1示出根据本发明的一个实施例的架构不可知的运行时系统的概览示图。图1示
出虚拟机运行时JIT(例如,及时编译器)。虚拟机运行时JIT包括所示的如Java的字节代码、
低级内部表示代码和虚拟机JIT。虚拟机JIT处理低级内部表示代码和如Java的字节代码。
虚拟机JIT的输出是所示的ISA特定代码。

Java代码是独立于机器的。编程者可以写一个程序,并且该程序应在许多不同的
机器上运行。java虚拟机是ISA特定的,每个机器架构具有其自己的机器专用虚拟机。虚拟
机的输出是在运行时动态地生成的ISA特定代码。

图1还示出紧密耦合到处理器的硬件加速的转换/JIT层。运行时JIT/转换层允许
处理器使用被预处理的java字节代码,被预处理的java字节代码不需要被虚拟机JIT处理,
从而显著地加速代码性能。运行时JIT/转换层还允许处理器使用java字节代码的低级内部
表示(例如,示出在虚拟机运行时JIT内),低级内部表示不需要被虚拟机/JIT处理。

图1还示出了由产生静态二进制执行代码的离线编译器(例如,x86、ARM等等)处理
的C++代码(例如,等等)。C++是一种独立于机器的编程语言。编译器是机器专用的(例如,
x86、ARM等等)。使用机器专用编译器离线编译程序,从而生成机器专用的静态二进制代码。

图1示出常规处理器上的常规操作系统怎样执行ISA特定代码,同时还示出能怎样
有利地经由硬件加速的转换/JIT层和处理器来处理便携代码(例如,来自低级内部表示)、
被预处理的如Java的字节代码(例如,来自虚拟机运行时JIT)和静态二进制可执行代码(例
如,来自编译器)。

应当注意,硬件加速的转换/JIT层是用于实现本发明的实施例的优势的主机制。
以下示图示出操作硬件加速的转换/JIT层的方式。

图2示出根据本发明的一个实施例的描绘了硬件加速的转换/JIT层的示图。图2示
图示出虚拟机/高级运行时/加载太阳城集团JIT怎样产生虚拟机高级指令表示、低级虚拟机指令
表示以及访客代码应用指令。这些都馈送到用于运行时/加载太阳城集团访客/虚拟机指令表示到
本机指令表示的映射的进程。这进而被传递到所示的硬件加速的转换/JIT层,其中其被运
行时本机指令表示到指令组装组件处理,并且然后被传递到用于代码高速缓存分配和元数
据创建的由硬件/软件进行的动态的基于序列的块构建/映射组件。在图2图示中,硬件加速
的转换/JIT层被示为耦合到具有序列高速缓存以存储被动态地转换的序列的处理器。图2
示图还示出运行时本机指令序列形成组件可以怎样直接地处理本机代码,运行时本机指令
序列形成组件将产生的输出发送到用于代码高速缓存分配和元数据创建的由硬件/软件进
行的动态的基于序列的块构建/映射组件。

图3示出根据本发明的一个实施例的硬件加速的运行时转换/JIT层的更详细的示
图。图3示出硬件加速的运行时转换/JIT层怎样包括促进系统仿真和系统转换的硬件组件。
这些组件,诸如分散式标志支持、CLB/CLBV等等,包括支持系统仿真和系统转换工作的定制
的硬件。它们使得运行时软件执行以常规处理器的五倍或更多倍运行。以下讨论系统仿真
和系统转换。

图4示出根据本发明的一个实施例的描绘了用于实现系统仿真和系统转换的组件
的示图。图4还示出具有应用代码和OS/系统特定代码的镜像。

本发明的实施例使用系统仿真和系统转换以便于执行应用代码和OS/系统特定代
码。通过使用系统仿真,机器仿真/虚拟化与硬件支持的架构不同的访客系统架构(包括系
统和应用代码)。仿真由系统仿真/虚拟化转换器(例如,其处理系统代码)和应用代码转换
器(例如,其处理应用代码)提供。应当注意,应用代码转换器示为描绘有裸金属组件。

通过使用系统转换,机器将具有访客架构和硬件支持的架构之间的类似的系统架
构特性的代码进行转换,但架构的非系统部分是不同的(即,应用指令)。系统转换器示为包
括访客应用转换器组件和裸金属组件。系统转换器还示为潜在地实现多次优化过程。应当
注意,通过提及术语系统转换和仿真,本文中随后的描述指的是可以使用图4上所示的系统
仿真路径或系统转换路径的过程。

以下图5到26图示用于实现系统仿真和系统转换以支持通用不可知的运行时系
统/VISC ISA不可知的运行时架构的各种进程和系统。伴随以下示图中的进程和系统,硬
件/软件加速被提供给运行时代码,其进而提供提高的架构性能。这种硬件加速包括对分布
式标志的支持、CLB、CLBV、硬件访客转换表等等。

图5示出根据本发明的一个实施例的描绘了访客标志架构仿真的示图。图5的左手
侧示出具有五个标志的集中式标志寄存器。图5的右手侧示出具有分布式标志寄存器的分
布式标志架构,其中标志分布在寄存器本身中。

在架构仿真(例如,系统仿真或转换)期间,分布式标志架构有必要仿真集中式访
客标志架构的行为。还可以通过使用不同于与数据寄存器相关联的标志字段的多个独立的
标志寄存器来实现分布式标志架构。例如,数据寄存器可以被实现为R0到R15,而独立的标
志寄存器可以被实现为F0到F15。该情形中的这些标志寄存器不直接与数据寄存器相关联。

图6示出根据本发明的一个实施例的统一寄存器组1201的示图。如图5所描绘的,
统一寄存器组1201包括两个部分1202-1203和条目选择器1205。统一寄存器组1201实现对
架构推测的支持以用于硬件状态更新。

统一寄存器组1201使能对优化的阴影寄存器和提交的寄存器状态管理进程的实
现。该进程支持用于硬件状态更新的架构推测。在该进程下,本发明的实施例可以支持阴影
寄存器功能和提交的寄存器功能而不要求任何寄存器存储器之间的交叉复制。例如,在一
个实施例中,统一寄存器组1201的功能大部分由条目选择器1205提供。在图5的实施例中,
每个寄存器组条目由两组寄存器R&R’组成,R&R’分别来自部分1和部分2。在任意给定的时
间,从每个条目读取的寄存器是来自部分1的R或来自部分2的R’。基于条目选择器1205为每
个条目存储的x&y位的值,对于寄存器的每个条目存在4个不同的组合。

图7示出根据本发明的一个实施例的统一阴影寄存器组和支持推测架构状态和瞬
态架构状态的流水线架构1300的示图。

图7的实施例描绘包括架构1300的组件,架构1300支持包括架构推测状态的指令
和结果并且支持包括瞬态状态的指令和结果。如本文中所使用的,提交的架构状态包括可
以被在处理器上执行的程序访问(例如,读和写)的可见的寄存器和可见的存储器。相反,推
测的架构状态包括未被提交并且因此不是全局可见的寄存器和/或存储器。

在一个实施例中,存在由架构1300实现的四个使用模型。第一使用模型包括用于
硬件状态更新的架构推测。

第二使用模型包括双范围使用。该使用模型应用到取出2个线程到处理器中,其中
一个线程在推测状态中执行,而另一线程在非推测状态中执行。在该使用模型中,两个范围
被取出到机器中,并且同时存在于机器中。

第三使用模型包括JIT(及时)变换或对指令从一种形式到另一种形式的编译。在
该使用模型中,经由软件(例如,JIT)完成对架构状态的重排序。第三使用模型可以应用到
例如访客到本机指令变换、虚拟机到本机指令变换、或将本机微指令重新映射/变换到更优
化的本机微指令。

第四使用模型包括不需要保存和在从瞬态上下文返回后不需要恢复先前上下文
的瞬态上下文切换。该使用模型应用到可以由于多种原因发生的上下文切换。一个此类原
因可以是例如经由异常处理上下文对异常的精确处理。

重新参考图7,架构1300包括用于实现上文所述的四种使用模型的多个组件。统一
阴影寄存器组1301包括:第一部分,提交的寄存器组1302;第二部分,阴影寄存器组1303;以
及第三部分,最新指示符数组1304。包括推测引退存储器缓冲器1342和最新指示符数组
1340。架构1300包括乱序架构,因此架构1300进一步包括重排序缓冲器和引退窗口1332。重
排序和引退窗口1332进一步包括机器引退指针1331、就绪位数组1334和每指令最新指示符
(例如指示符1333)。

根据本发明的一个实施例进一步详细地描述第一使用模型,用于硬件状态更新的
架构推测。如上所述,架构1300包括乱序架构。架构1300的硬件能够提交乱序指令结果(例
如,乱序加载、乱序存储和乱序寄存器更新)。架构1300利用统一阴影寄存器组来支持提交
的寄存器和阴影寄存器之间的推测执行。此外,架构1300利用推测加载存储缓冲器1320和
推测引退存储器缓冲器1342来支持推测执行。

架构1300将使用这些组件结合重排序缓冲器和引退窗口1332来允许其状态正确
地引退到提交的寄存器1302和到可见存储器1350,即使机器以乱序方式将那些状态内部地
引退到了统一阴影寄存器组和引退存储器缓冲器。例如,架构将使用统一阴影寄存器组
1301和推测存储器1342基于异常发生或不发生来实现回滚和提交事件。该功能使寄存器状
态能乱序地引退到统一阴影寄存器组1301并且使推测引退存储器缓冲器1342能乱序地引
退到可见存储器1350。随着推测执行继续和乱序指令执行继续,如果没有误预测分支并且
没有异常发生,则机器引退指针1331继续直到触发提交事件。提交事件通过使其提交点前
进而使得统一阴影寄存器组提交其内容,并且使得推测引退存储器缓冲器根据机器引退指
针1331将其内容提交到存储器1350。

例如,考虑重排序缓冲器和引退窗口1332内示出的指令1-7,就绪位数组1334在准
备好执行的指令旁边示出“X”并且在未准备好执行的指令旁边示出“/”。因此,允许指令1、
2、4和6乱序地继续。随后,如果异常发生,例如指令6分支被误预测,则可以回滚指令6之后
发生的指令。替代地,如果没有异常发生,可以通过相应地移动机器引退指针1331来提交所
有指令1-7。

最新指示符数组1341、最新指示符数组1304和最新指示符1333用于允许乱序运
行。例如,即使指令2在指令5之前加载寄存器R4,一旦指令5准备好发生,来自指令2的加载
将被忽略。最新加载将根据最新指示符覆盖更早的加载。

在重排序缓冲器和引退窗口1332内发生分支预测或异常的事件中,触发回滚事
件。如上所述,在回滚的事件中,统一阴影寄存器组1301将回滚到其上一提交的点,并且推
测引退存储器缓冲器1342将被转储清除。

图8示出根据本发明的一个实施例的描绘了运行提前批处理/转换过程的示图。该
图图示出其中访客代码经历转换过程并且被变换到本机代码的方式。该本机代码进而填充
本机代码高速缓存,其进一步用于填充CLB。该图示出访客代码怎样跳转到先前未被转换的
地址(例如,5000)。转换过程然后将该访客代码改变到所示的对应的本机代码(例如,包括
访客分支8000和访客分支6000)。访客分支被转换到代码高速缓存中的本机分支(例如,本
机分支g8000和本机分支g6000)。机器知晓用于本机分支的程序计数器将与用于访客分支
的程序计数器不同。这通过本机代码高速缓存中的记号(例如,X、Y和Z)示出。随着这些变换
完成,将所得的变换存储在CLB中以供未来使用。该功能极大地加速访客代码到本机代码的
变换。

图9示出根据本发明的一个实施例的示出其中将访客指令块和它们的对应的本机
转换块存储在高速缓存内的方式的示例性硬件加速的转换系统500的图示。如图9所示,转
换后备缓冲器506用于缓存访客和本机块之间的地址映射;使得通过到处理器508的低等待
太阳城集团可用性来访问最频繁遇到的本机转换块。

图9示图示出其中将最频繁遇到的本机转换块维持在高速低等待太阳城集团高速缓存即
转换后备缓冲器506内的方式。图9中描绘的组件实现硬件加速的转换处理以实现高得多的
水平的性能。

访客取出逻辑单元502起到从系统存储器501取出访客指令的基于硬件的访客指
令取出单元的作用。给定应用的访客指令驻留在系统存储器501内。程序启动之后,基于硬
件的访客取出逻辑单元502开始将访客指令预取到访客取出缓冲器503中。访客取出缓冲器
507累积访客指令并且将它们组装到访客指令块中。通过使用转换表504将这些访客指令块
转换到对应的本机转换块。将经过转换的本机指令累积在本机转换缓冲器505内,直到本机
转换块是完整的。然后将本机转换块传送到本机高速缓存507并且将映射存储在转换后备
缓冲器506中。本机高速缓存507然后用于将本机指令馈送到处理器508以供执行。在一个实
施例中,访客取出逻辑单元502实现的功能由访客取出逻辑状态机产生。

随着该过程继续,转换后备缓冲器506由访客块到本机块的地址映射填充。转换后
备缓冲器506使用一种或多种算法(例如,近期最少使用的,等等)来确保将更频繁遇到的块
映射保持在缓冲器内,而将极少遇到的块映射从缓冲器驱逐。以这种方式,将热本机转换块
映射存储在转换后备缓冲器506内。此外,应当注意,本机块内的很好地预测的远访客分支
不需要将新映射插入到CLB中,因为它们的目标块被拼合在单个被映射的本机块内,因此为
CLB结构保留小的容量效率。此外,在一个实施例中,CLB被构造成只存储结尾访客到本机地
址的映射。该方面还保留CLB的小的容量效率。

访客取出逻辑502依赖于转换后备缓冲器506来确定是否已经将来自访客指令块
的地址转换到本机转换块。如上所述,本发明的实施例为转换处理提供硬件加速。因此,在
从系统存储器501取出访客地址用于新转换之前,访客取出逻辑502将依赖于转换后备缓冲
器506来确定预先存在的本机转换块映射。

在一个实施例中,通过访客地址范围或通过单独访客地址来索引转换后备缓冲
器。访客地址范围是已经被转换到本机转换块的访客指令块的地址的范围。经由本机转换
块映射的对应的访客指令块的对应的访客地址范围来索引转换后备缓冲器存储的本机转
换块映射。因此,访客取出逻辑可以将访客地址与访客地址范围或被转换的块的单独的访
客地址比较,它们的映射被保持在转换后备缓冲器506中以确定预先存在的本机转换块是
否驻留在存储在本机高速缓存507中的或图6的代码高速缓存中的内容内。如果预先存在的
本机转换块是在本机高速缓存中或代码高速缓存中,则将对应的本机转换指令从这些高速
缓存直接转发到处理器。

以此方式,热访客指令块(例如,被频繁地执行的访客指令块)具有维持在高速低
等待太阳城集团转换后备缓冲器506内的它们的对应的热本机转换块映射。随着块被触及,合适的
替换策略确保热块映射保持在转换后备缓冲器内。因此,访客取出逻辑502可以快速地标识
先前是否已经转换了被请求的访客地址,并且可以将先前被转换的本机指令直接转发到本
机高速缓存507以供处理器508执行。这些方面节省了大量循环,因为到系统存储器的行程
可以耗费40到50个循环或更多循环。这些属性(例如,CLB、访客分支序列预测、访客&本机分
支缓冲器、先前的本机缓存)允许本发明的实施例的硬件加速功能实现访客应用的应用性
能达到可比的本机应用的应用性能的80%到100%内。

在一个实施例中,独立于来自处理器508的访客指令请求,访客取出逻辑502连续
地预取访客指令用于转换。可以将本机转换块累积在系统存储器501中的转换缓冲器“代码
高速缓存”内以用于那些较不频繁使用的块。转换后备缓冲器506还保持最频繁使用的映
射。因此,如果被请求的访客地址不映射到转换后备缓冲器中的访客地址,则访客取出逻辑
可以检查系统存储器501以确定访客地址是否对应于其中存储的本机转换块。

在一个实施例中,转换后备缓冲器506实现为高速缓存并且利用高速缓存一致性
协议来维持与存储在更高级高速缓存和系统存储器501中的大得多的转换缓冲器的一致
性。还将存储在转换后备缓冲器506内的本机指令映射写回到更高级高速缓存和系统存储
器501。到系统存储器的写回维持一致性。因此,高速缓存管理协议可以用于确保将热本机
转换块映射存储在转换后备缓冲器506内并且将冷本机转换映射块存储在系统存储器501
中。因此,大得多的形式的转换缓冲器506驻留在系统存储器501中。

应当注意,在一个实施例中,示例性硬件加速的转换系统500可以用于实现多个不
同的虚拟存储方案。例如,其中将访客指令块和它们对应的本机转换块存储在高速缓存内
的方式可以用于支持虚拟存储方案。类似地,用于缓存访客和本机块之间的地址映射的转
换后备缓冲器506可以用于支持虚拟存储方案(例如,对虚拟存储器到物理存储器映射的管
理)。

在一个实施例中,图9架构实现使用可以接收多个不同的指令架构作为输入的灵
活的转换过程的虚拟指令集处理器/计算机。在这种虚拟指令集处理器中,将处理器的前端
实现为使得其可以是软件控制的,同时利用硬件加速的转换处理的优势来传递高得多的水
平的性能。使用这种实现方式,可以处理和转换不同的访客架构,同时每个访客架构接收硬
件加速的益处以享有高得多的水平的性能。示例访客架构包括Java或JavaScript、x86、
MIPS、SPARC等等。在一个实施例中,“访客架构”可以是本机指令(例如,来自本机应用/宏操
作)并且转换过程产生优化本机指令(例如,优化的本机指令/微操作)。软件控制的前端可
以为在处理器上执行的应用提供大程度的灵活性。如上所述,硬件加速可以实现近本机硬
件速度以供访客应用的访客指令的执行。

图10示出根据本发明的一个实施例的硬件加速的转换系统600的更详细的示例。
系统600与如上所述的系统500以基本相同的方式执行。然而,系统600示出描述示例性硬件
加速过程的功能的附加细节。

系统存储器601包括数据结构,数据结构包括访客代码602、转换后备缓冲器603、
优化器代码604、转换器代码605以及本机代码高速缓存606。系统600还示出共享硬件高速
缓存607,其中访客指令和本机指令可以是交织的和共享的。访客硬件高速缓存610捕捉来
自共享硬件高速缓存607的那些最频繁触及的访客指令。

访客取出逻辑620从访客代码602中预取访客指令。访客取出逻辑620与TLB 609对
接,TLB 609起到将虚拟访客地址变换到对应的物理访客地址的转换后备缓冲器的作用。
TLB 609可以将命中直接转发到访客硬件高速缓存610。将访客取出逻辑620取出的访客指
令存储在访客取出缓冲器611中。

转换表612和613包括替换字段和控制字段,并且起到用于将接收自访客取出缓冲
器611的访客指令变换到本机指令的多级转换表的作用。

复用器614和615将被转换的本机指令传送到本机转换缓冲器616。本机转换缓冲
器616累积被转换的本机指令以组装本机转换块。然后将这些本机转换块传送到本机硬件
高速缓存600并且将映射保持在转换后备缓冲器630中。

转换后备缓冲器630包括数据结构,该数据结构用于被转换的块进入点地址631、
本机地址632、被转换的地址范围633、代码高速缓存和转换后备缓冲器管理位634以及动态
分支偏移位635。访客分支地址631和本机地址632包括指示哪些对应的本机转换块驻留在
被转换的块范围633内的访客地址范围。高速缓存管理协议和替换策略确保热本机转换块
映射驻留在转换后备缓冲器630内而冷本机转换块映射驻留在系统存储器601中的转换后
备缓冲器数据结构603内。

如系统500,系统600试图确保热块映射驻留在高速低等待太阳城集团转换后备缓冲器
630内。因此,当取出逻辑640或访客取出逻辑620试图取出访客地址时,在一个实施例中,取
出逻辑640可以首先检查访客地址以确定对应的本机转换块是否驻留在代码高速缓存606
内。这允许确定被请求的访客地址是否具有代码高速缓存606中的对应的本机转换块。如果
被请求的访客地址不驻留在缓冲器603或608、或缓冲器630内,则从访客代码602中取出访
客地址和多个后续访客指令,并且经由转换表612和613实现转换过程。以此方式,本发明的
实施例可以实现运行提前访客取出和解码、表查找以及指令字段组装。

图11示出根据本发明的一个实施例的包括双范围使用的第二使用模型的示图
1400。如上所述,该使用模型应用到取出2个线程到处理器中,其中一个线程在推测状态中
执行,而另一线程在非推测状态中执行。在该使用模型中,两个范围被取出到机器中并且同
时存在于机器中。

如图1400所示,已经将2个范围/跟踪1401和1402取出到机器中。在该示例中,范
围/跟踪1401是当前的非推测范围/跟踪。范围/跟踪1402是新的推测范围/跟踪。架构1300
使推测和临时状态允许2个线程使用这些状态以供执行。一个线程(例如,1401)在非推测范
围中执行,而另一线程(例如,1402)使用推测范围。两个范围都可以被取出到机器中并且同
时存在,每个范围不同地设定其相应的模式。第一个是非推测的,而另一个是推测的。因此,
第一个在CR/CM模式中执行,而另一个在SR/SM模式中执行。在CR/CM模式中,对提交的寄存
器进行读和写,并且存储器写去往存储器。在SR/SM模式中,寄存器写继续到SSSR,并且寄存
器读来自最新的写,同时存储器写入引退存储器缓冲器(SMB)。

一个示例将是被排序的当前范围(例如,1401)和推测的下一范围(例如,1402)。当
依赖性将是重要的时,两个范围都可以在机器中执行,因为下一范围在当前范围之后取出。
例如,在范围1401中,在“将SSSR提交到CR”处,寄存器和存储器直到该点是在CR模式中,而
代码在CR/CM模式中执行。在范围1402中,代码在SR和SM模式中执行,并且如果异常发生可
以回滚。以此方式,两个范围在机器中同时执行,但是每个范围在不同的模式中执行,并且
相应地读和写寄存器。

图12示出根据本发明的一个实施例的包括不需要保存和在从瞬态上下文返回后
不需要恢复先前上下文的瞬态上下文切换的第三使用模型的示图。如上所述,该使用模型
应用到可以由于多种原因发生的上下文切换。一个此类原因可以是例如经由异常处理上下
文对异常的精确处理。

当机器正执行被变换的代码并且其遇到上下文切换(例如,被变换的代码内部的
异常或如果需要变换后续代码)时,第三使用模型发生。在当前范围中(例如,在异常之前),
SSSR和SMB还未将它们的推测状态提交到访客架构状态。当前状态正在SR/SM模式中运行。
当异常发生,机器切换到异常处理程序(例如,转换器)以精确地处理异常。插入回滚,其使
得寄存器状态回滚到CR,并且转储清除SMB。转换器代码将在SR/CM模式中运行。在转换器代
码的执行期间,SMB正将其内容引退到存储器而无需等待提交事件。将寄存器写入到SSSR而
无需更新CR。随后,当完成转换器并且在切换回执行被转换的代码之前,其回滚SSSR(例如,
将SSSR回滚到CR)。在该过程期间,最后提交的寄存器状态在CR中。

这在示图1500中示出,其中先前范围/跟踪1501已经从SSSR提交到CR中。当前范
围/跟踪1502是推测的。寄存器和存储器以及该范围是推测的,并且执行在SR/SM模式下发
生。在该示例中,异常在范围1502中发生,并且需要按变换之前的原始顺序重新执行代码。
在该点处,回滚SSSR并且转储清除SMB。然后JIT代码1503执行。JIT代码将SSSR回滚到范围
1501的末尾并且转储清除SMB。JIT的执行在SC/CM模式下。当完成JIT时,将SSSR回滚到CR,
并且当前范围/跟踪1504然后在CR/CM模式中按原始变换顺序重新执行。以此方式,按准确
的当前顺序精确地处理异常。

图13示出根据本发明的一个实施例的描绘了其中指令序列中的异常是由于需要
对后续代码的变换的情形的示图1600。如示图1600所示,先前范围/跟踪1601以到未被变换
的目的地的远跳转结束。在跳转到远跳转目的地之前,将SSSR提交到CR。JIT代码1602然后
执行以变换在远跳转目的地的访客指令(例如,以建立新的本机指令的跟踪)。JIT的执行在
SR/CM模式下。在JIT执行结束时,将寄存器状态从SSSR回滚到CR,并且被JIT变换了的新范
围/跟踪1603开始执行。新范围/跟踪在SR/SM模式中从先前范围/跟踪1601的上一提交的点
继续执行。

图14示出根据本发明的一个实施例的包括不需要保存和在从瞬态上下文返回后
不需要恢复先前上下文的瞬态上下文切换的第四使用模型的示图1700。如上所述,该使用
模型应用到可以由于多种原因发生的上下文切换。一个此类原因可以是例如经由异常处理
上下文处理输入或输出。

示图1700示出其中在CR/CM模式下执行的先前范围/跟踪1701以功能F1的调用结
束的情形。将直到该点的寄存器状态从SSSR提交到CR。功能F1范围/跟踪1702然后开始在
SR/CM模式下推测地执行。功能F1然后以返回到主范围/跟踪1703结束。在该点处,将寄存器
状态从SSSR回滚到CR。主范围/跟踪1703恢复在CR/CM模式中执行。

图15示出根据本发明的一个实施例的示出了优化的在分支之前调度指令的示图。
如图15所示,在传统及时编译器示例旁边描绘了硬件优化的示例。图15的左手侧示出原始
未优化的代码,包括未使用分支偏移,“分支C到L1”。图15的中间栏示出传统及时编译器优
化,其中将寄存器重命名并且在分支之前移动指令。在该示例中,及时编译器插入补偿代码
以解释其中分支偏移决定是错误的(例如,其中与未被使用相反,分支实际上被使用了)那
些情况。相反,图15的右栏示出硬件展开的优化。在该情形中,将寄存器重命名并且在分支
之前移动指令。然而,应当注意,未插入补偿代码。硬件保持对是分支偏移决定是真或假的
跟踪。在被错误地预测的分支的情形下,硬件自动回滚到其状态以执行正确的指令序列。硬
件优化器解决方案能够避免对补偿代码的使用,因为在其中分支被误预测的这些情形下,
硬件跳转到存储器中的原始代码并且执行来自此处的正确序列,同时转储清除被误预测的
指令序列。

图16示出根据本发明的一个实施例的示出了优化的在存储之前调度加载的示图。
如图16所示,在传统及时编译器示例旁边描绘了硬件优化的示例。图16的左手侧示出原始
未优化的代码,包括存储,“R3<-LD[R5]”。图16的中间栏示出传统及时编译器优化,其中将
寄存器重命名并且移动加载使其在存储之前。在该示例中,及时编译器插入补偿代码以解
释其中加载指令的地址对存储指令的地址设定别名(例如,其中使加载在存储之前的移动
是不合适的)的那些情况。相反,图16的右栏示出硬件展开的优化。在该情形中,将寄存器重
命名并且也移动加载使其在存储之前。然而,应当注意,未插入补偿代码。在其中移动加载
使其在存储之前是错误的情形中,硬件自动地回滚到其状态以执行正确的指令序列。硬件
优化器解决方案能够避免对补偿代码的使用,因为在其中地址别名-检查分支被误预测的
这些情形下,硬件跳转到存储器中的原始代码并且执行来自此处的正确序列,同时转储清
除被误预测的指令序列。在该情形下,序列假定没有重命名。应当注意,在一个实施例中,图
16中图示的功能可以由指令调度和优化器组件实现。类似地,应当注意,在一个实施例中,
图16中图示的功能可以由软件优化器实现。

此外,对于动态展开的序列,应当注意指令可以通过使用重命名来经过先前路径
预测的分支(例如,动态构建的分支)。在非动态预测的分支的情形中,对指令的移动应当考
虑分支的范围。可以将循环展开到要求的程度,并且可以跨整个序列应用优化。例如,这可
以通过重命名跨分支移动的指令的目的地寄存器来实现。该特征的一个益处是不需要补偿
代码或对分支的范围的广泛分析的事实。该特征因此极大地加速和简化优化过程。

图17示出根据本发明的一个实施例的存储过滤算法的示图。图17实施例的目标是
过滤存储以防止所有存储必须针对加载队列中的所有条目进行检查。

存储监听用于地址匹配的高速缓存以维持一致性。如果线程/核X加载来自高速缓
存行的读,则其标记其从中加载了数据的高速缓存行的部分。在另一线程/核Y存储监听高
速缓存之后,如果任何此类存储与该高速缓存行部分重叠,则为该线程/核X的加载引起误
预测。

用于过滤这些监听的一个解决方案是跟踪加载队列条目的引用。在该情形中,存
储不需要监听加载队列。如果存储与访问掩码具有匹配,则获得自引用跟踪器的该加载队
列条目将使得该加载条目误预测。

在另一解决方案(其中不存在引用跟踪器)中,如果存储与访问掩码具有匹配,则
该存储地址将监视加载队列条目并且将使得匹配的加载条目误预测。

在两种解决方案中,一旦从高速缓存行读取加载,其设定相应的访问掩码位。当该
加载引退时,其重置该位。

图18示出根据本发明的一个实施例的在组成按顺序从存储器读取的加载的存储
器一致性模型中的具有乱序加载的信号标(semaphore)实现的示图。如本文中所使用的,术
语信号标指代为多个线程/核到公共资源提供访问控制的数据构造。

在图18实施例中,访问掩码用于控制多个线程/核对存储器资源的访问。访问掩码
通过跟踪高速缓存行的哪些字具有待决加载而起作用。当访问高速缓存行的字时乱序加载
设定掩码位,并且当该加载引退时清除掩码位。如果当掩码位被设定时来自另一线程/核的
存储写入该字,则其将通知对应于该加载(例如,经由跟踪器)的加载队列条目成为误预测
的/转储清除的或与其从属指令一起重试的。访问掩码还跟踪线程/核。

以此方式,访问掩码确保存储器一致性规则被正确地实现。存储器一致性规则规
定存储按顺序更新存储器以及加载按顺序从存储器读取以便于该信号标跨两个核/线程工
作。因此,核1和核2执行的代码将被正确地执行,其中它们都访问存储器位置“标志”和“数
据”。

图19示出根据本发明的一个实施例的通过JIT优化的重排序过程的示图。图19描
绘存储器一致性排序(例如,加载排序之前的加载)。加载不能在将要到相同地址的其他加
载之前分派。例如,加载将检查来自相同线程的后续加载的相同地址。

在一个实施例中,检查所有后续加载以找出地址匹配。为了使该解决方案起作用,
加载C检查在引退之后直到原始加载C位置的点停留在存储队列(例如,或其扩展)中的需
要。加载检查扩展尺寸可以由在被重排序的加载(例如,加载C)可以跳转到其之前的加载的
数量上设置限制来确定。应当注意,该解决方案只在部分存储排序存储器一致性模型(例
如,ARM一致性模型)下起作用。

图20示出根据本发明的一个实施例的通过JIT优化的重排序过程的示图。加载不
能在将要到相同地址的其他加载之前分派。例如,加载将检查来自相同线程的后续加载的
相同地址。图20示出其他线程存储怎样针对整个加载队列和监视器扩展进行检查。监视器
由原始加载设置,并且由跟随原始加载位置的后续指令清除。应当注意,该解决方案在全部
和部分存储排序存储器一致性模型(例如,X86和ARM一致性模型)下均起作用。

图21示出根据本发明的一个实施例的通过JIT优化的重排序过程的示图。加载不
能在将要到相同地址的其他加载之前分派。本发明的一个实施例实现加载引退扩展。在该
实施例中,其他线程存储针对整个加载/存储队列(例如,和扩展)进行检查。

在实现该解决方案中,在引退之后直到原始加载C位置的点,引退的所有加载需要
停留在加载队列(例如,或其扩展)中。当来自其他线程的存储到来时(线程0),其将CAM匹配
整个加载队列(例如,包括扩展)。扩展尺寸可以由在被重排序的加载(加载C)可以跳转到其
之前(例如,通过使用8个条目扩展)的加载的数量上设置限制来确定。应当注意,该解决方
案在全部和部分存储排序存储器一致性模型(例如,X86和ARM一致性模型)下均起作用。

图22示出根据本发明的一个实施例的示出通过JIT优化在存储之前被重排序的加
载的示图。图22利用相同线程内的存储到加载的转发排序(例如,从存储到加载的数据依赖
性)。

在存储之前不能通过JIT将到在相同线程内的该存储的相同地址的加载重排序。
在一个实施例中,在引退之后直到原始加载C位置的点,引退的所有加载需要停留在加载队
列(和/或其扩展)中。每个被重排序的加载将包括偏移,偏移将按机器顺序(例如,IP)指示
该加载相对于跟随的存储的初始位置。

一个示例实现方式将包括偏移指示符中的初始指令位置。当来自相同线程的存储
到来时,其将CAM匹配寻找指示该存储将转发到被匹配的加载的匹配的整个加载队列(包括
扩展)。应当注意,在存储在加载C之前被分派的情形中,该存储将保留存储队列中的条目,
并且当加载之后被分派时,加载将针对存储的地址CAM匹配,并且加载将使用其IP以确定结
束将数据从存储中的任意存储转发到该加载的机器顺序。扩展尺寸可以通过在被重排序的
加载(加载C)可以跳转到其之前(例如,通过使用8个条目扩展)的加载的数量上设置限制来
确定。

另一解决方案将在原始加载的位置中设置检查存储指令。当检查存储指令分派
时,其针对加载队列检查地址匹配。类似地,当加载分派时,它们针对存储指令占用的存储
队列条目来检查地址匹配。

图23示出根据本发明的一个实施例的加载和存储指令分割的第一示图。本发明的
一个特征是加载被分成两个宏指令的事实,第一宏指令进行地址计算并且取出到临时位置
(加载存储队列),并且第二宏指令是将存储器地址内容(数据)加载到寄存器或ALU目的地
中。应当注意,尽管在将加载和存储指令分成两个相应的宏指令并且将它们重新排序的上
下文中描述发明的实施例,可以通过在微代码上下文内将加载和存储指令分成两个相应的
微指令并且将它们重新排序来实现相同的方法和系统。

该功能对于存储是相同的。存储也被分成两个宏指令。第一指令是存储地址和取
出,第二指令是对在该地址的数据的存储。对存储和两个指令的分割遵循与下文所述的加
载相同的规则。

将加载分成两个指令允许运行时优化器在给定的指令序列内早得多地调度地址
计算和取出指令。这通过将数据预取到与高速缓存层级分开的临时缓冲器中而允许更容易
的从存储器未命中恢复。使用临时缓冲器以保证在LA/SA和LD/SD之间的一对一对应上的被
预取的数据的可用性。如果在加载地址和加载数据之间的窗口中的先前存储中存在重命名
(例如,如果从先前存储中检测到了转发情形),或者如果地址计算中存在任何错误问题(例
如,页面错误),则对应的加载数据指令可以重新发出。此外,将加载分成两个指令还可以包
括将太阳城集团复制到两个指令中。这种太阳城集团可以是地址太阳城集团、源太阳城集团、其他附加标识符等等。该
复制允许在LA/SA不存在的情况下对两个指令的LD/SD的独立的分派。

加载地址和取出指令可以从实际的机器引退窗口引退而无需在加载数据上等待
以返回,从而允许机器甚至在对该地址(例如,段落开头指示的加载地址)的高速缓存未命
中的情形下取得进展。例如,在对该地址(例如,地址X)的高速缓存未命中之后,机器可能可
以停止数百循环以等待数据从存储器层级中取出。通过从实际的机器引退窗口引退加载地
址和取出指令而无需在加载数据上等待以返回,机器仍然可以取得进展。

应当注意,对指令的分割实现本发明的实施例的关键优势为更早地重排序LA/SA
指令并且更远离LD/SD,指令序列实现对加载和存储的更早的分派和执行。

图24示出根据本发明的一个实施例的示出其中在存储器内存储CLB功能结合代码
高速缓存和访客指令到本机指令的映射的方式的示例性流程图。

如上所述,CLB用于存储具有存储在代码高速缓存存储器内的对应的被转换的本
机地址的访客地址的映射(例如,访客到本机地址的映射)。在一个实施例中,索引CLB的一
部分访客地址。访客地址被划分为索引、标签和偏移(例如,区块(chunk)尺寸)。该访客地址
包括用于标识对应于索引的CLB条目中的匹配的标签。如果在标签上存在命中,则对应的条
目将存储指示在代码高速缓存存储器806中的何处可以发现对应的被转换的本机指令区块
(例如,被转换的本机指令的对应的块)的指针。

应当注意,本文中所使用的术语“区块”指示被转换的本机指令块的对应的存储器
尺寸。例如,取决于被转换的本机指令块的不同尺寸,区块可以在尺寸上不同。

对于代码高速缓存存储器806,在一个实施例中,代码高速缓存被分配到一组固定
尺寸的区块中(例如,对每种区块类型具有不同的尺寸)。可以将代码高速缓存逻辑上划分
为系统存储器中的组和路以及所有较低级硬件高速缓存(例如,本机硬件高速缓存608、共
享硬件高速缓存607)。CLB可以使用访客地址来索引和作标签比较代码高速缓存区块的路
标签。

图24描绘CLB硬件高速缓存804将访客地址标签存储在2路中,描绘为路x和路y。应
当注意,在一个实施例中,可以通过将指针存储到结构化的路中的本机代码区块(例如,从
访客到本机地址的映射)来完成使用CLB结构的访客地址到本机地址的映射。每路与标签相
关联。CLB被访客地址802(包括标签)索引。在CLB中的命中上,返回对应于标签的指针。该指
针用于索引代码高速缓存存储器。这在图24中由行“代码区块的本机地址=片段的数量+F
(指针)”示出,其表示代码区块的本机地址是指针和片段数量的函数的事实。在本实施例
中,片段指示存储器中的点的基础,其中指针范围被虚拟地映射(例如,允许将指针数组映
射到物理存储器中的任意区域中)。

替代地,在一个实施例中,可以经由第二种方法索引代码高速缓存存储器,如图24
中行“代码区块的本机地址=片段的数量+索引*(区块尺寸)+路的数量*(区块尺寸)”所示。
在这种实施例中,代码高速缓存被组织为使得其路结构匹配CLB路结构,从而在CLB的路和
代码高速缓存区块的路之间存在1:1映射。当在特定的CLB路中存在命中时,然后代码高速
缓存的对应的路中的对应的代码区块具有本机代码。

仍然参考图24,如果CLB的索引未命中,可以为命中检查存储器的更高层级(例如,
L1高速缓存、L2高速缓存等等)。如果在这些更高的高速缓存级别中没有命中,则检查系统
存储器801中的地址。在一个实施例中,访客索引指向包括例如64个区块的条目。读出64个
区块中的每一个的标签并且将其与访客标签比较以确定是否有命中。在图24中由虚线框
805示出该过程。如果在与系统存储器中的标签比较后没有命中,则在存储器的任何层级级
别不存在转换,并且必须转换访客指令。

应当注意,本发明的实施例管理以类似高速缓存的方式存储访客到本机指令映射
的存储器的层级级别中的每一个。这内在地来自于基于高速缓存的存储器(例如,CLB硬件
高速缓存、本机高速缓存、L1和L2高速缓存等等)。然而,CLB还包括“代码高速缓存+CLB管理
位”,“代码高速缓存+CLB管理位”用于实现近期最少使用的(LRU)替换管理策略以用于系统
存储器801内的访客到本机指令映射。在一个实施例中,CLB管理位(例如,LRU位)是软件管
理的。以此方式,存储器的所有层级级别用于存储最近使用的、最频繁遇到的访客到本机指
令映射。相应地,这导致存储器的所有层级级别类似地存储最频繁遇到的被转换的本机指
令。

图24还示出存储在CLB中的动态分支偏移位和/或分支历史位。该动态分支位用于
跟踪在组装访客指令序列中使用的分支预测的行为。该位用于跟踪哪些分支预测是最常被
正确地预测的以及哪些分支预测是最常被错误地预测的。CLB还存储被转换的块范围的数
据。该数据使该过程能使代码高速缓存存储器中的其中对应的访客指令已经被修改(例如,
如在自身修改代码中)的被转换的块范围无效。

图25示出根据本发明的一个实施例的运行提前运行时访客指令转换/解码过程的
示图。图25示出显示了当需要对访客代码转换/解码时,目的是避免从主存储器携带访客代
码(例如,其将是成本高的行程)的示图。图25示出预取过程,其中从指令序列中的访客分支
的目标预取访客代码。例如,指令序列包括访客分支X、Y和Z。这引起在地址X、Y和Z处的访客
代码的预取指令的发出。

图26示出根据本发明的一个实施例的描绘了具有访客指令序列的转换表和具有
本机指令映射的本机映射表的示图。在一个实施例中,存储器结构/表可以实现为类似于低
级低等待太阳城集团高速缓存的高速缓存。

在一个实施例中,最频繁遇到的访客指令和它们的映射被存储在低级高速缓存结
构,低级高速缓存结构允许运行时快速地访问该结构以为访客指令获得等效的本机指令。
映射表将为查找到的访客指令格式提供等效的指令格式。并且使用一些在该映射表中的存
储为控制字段的控制值以快速地允许将访客指令中的某些字段替换为本机指令中的等效
的字段。此处的想法是在低级(例如,高速缓存)只存储最频繁遇到的访客指令以允许快速
的转换,而其他非频繁的访客指令可以花费更长的太阳城集团来转换。

现在讨论根据本发明的实施例的术语CLB/CLBV/CLT。在一个实施例中,CLB是被维
持为存储器结构的转换后备缓冲器,当遇到本机访客分支时其被查找,同时执行本机代码
以获得映射到访客分支的目的地的代码的地址。在一个实施例中,CLBV是CLB的受害高速缓
存镜像。随着条目被从CLB驱逐,它们被缓存到常规L1/L2高速缓存结构中。当CLB遇到未命
中时,其将通过硬件访问自动地查找L1/L2以搜索未命中的目标。在一个实施例中,当在CLB
或CLBV中未发现未命中的目标时使用CLT,触发软件处理程序以在主存储器中的CLT表中查
找条目。

现在讨论根据本发明的实施例的CLB计数器。在一个实施例中,CLB计数器是在转
换时刻设定的值,并且存储在太阳城集团被转换的指令序列/跟踪的元数据旁边。每次执行指令序
列/跟踪时,该计数器减1并且用作对热的触发器。该值存储在所有CLB级别(例如,CLB、
CLBV、CLT)。当其达到阈值,其触发JIT编译器以优化指令序列/跟踪。该值由硬件维持和管
理。在一个实施例中,指令序列/跟踪可以具有CLB计数器和软件计数器的混合。

现在讨论根据本发明的一个实施例的后台线程。在一个实施例中,一旦触发热,则
启动硬件后台线程,其用作对软件不可见的后台硬件任务并且具有其自己的硬件资源,通
常是最小资源(例如,小的寄存器组和系统状态)。其继续作为在低优先级上存储执行资源
的后台线程执行并且当执行资源可用时继续执行。其具有硬件线程ID,并且对于软件不可
见,但是由低级硬件管理系统管理。

现在讨论根据本发明的一个实施例的JIT分析和运行时模拟/动态检查。JIT可以
在太阳城集团间隔上开始分析/模拟/扫描指令序列/跟踪。其可以通过例如使用分支分析来维持
与优化相关的某些值。分支分析使用分支分析硬件指令和代码检测通过实现具有分支的语
义的指令来为指令序列/跟踪内的分支发现分支预测值/偏移,使得其开始从特定地址取出
指令并且将该指令传递通过机器前端和查找硬件分支预测器而不执行该指令。然后JIT累
积该硬件分支预测计数器的值以创建比硬件所提供的更大的计数器。这允许JIT分析分支
偏移。

恒定分析指代分析以检测不改变的值并且使用该太阳城集团来优化代码。

由于通过动态地检查加载和存储之间的地址重命名有时可能检查到该存储到加
载转发不发生,因此使用检查加载存储重命名。

在一个实施例中,JIT可以编制代码或使用特殊指令,例如分支分析指令、或检查
加载指令、或检查存储指令。

出于解释的目的,以上描述指示不旨在穷举或限制本发明的特定实施例。与以上
教导一致的许多修改和变型是可能的。选择和描述实施例以最好地解释发明的原理和其实
践应用,以使本领域其他技术人员能最好地利用该发明以及该发明的可能适于他们的特定
使用的具有各种修改的各种实施例。

关 键 词:
用于 指令 序列 排序 优化 实现 不可知 运行 架构 分配 发出
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:用于将微指令序列重排序为优化的微指令序列以实现指令集不可知的运行时架构的分配和发出级.pdf
链接地址:http://zh228.com/p-6059865.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');