使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射的制作方法

文档序号:16068115发布日期:2018-11-24 12:52阅读:125来源:国知局

本申请要求对mohammada.abdallah于2011年1月27日提交的名称为“guestinstructiontonativeinstructionrangebasedmappingusingaconversionlookasidebufferofaprocessor”的共同未决、共同转让的第61/436962号美国临时专利申请的优先权,将该专利申请的全部并入于此。

本发明总体上涉及数字计算机系统、更具体地涉及一种用于转译包括指令序列的指令的系统和方法。

背景技术

许多类型的数字计算机系统利用代码变换/转译或者仿真以实现基于软件的功能。通常,转译和仿真均涉及到检查软件指令的程序并且执行软件指令规定的功能和动作,即使指令对计算机系统而言不是“本机”的。在转译的情况下,将非本机指令转译成被设计用于在计算机系统的硬件上执行的本机指令的形式。示例包括现有技术的转译软件和/或硬件与工业标准x86应用一起操作以使应用程序能够在非x86或者备选计算机架构上执行的转译软件和/或硬件。一般而言,转译过程利用大量处理器周期,因此带来大量开销。通过该开销带来的性能代偿可明显侵蚀由转译过程提供的任何好处。

对解决这一问题的一个尝试涉及到实时编译的使用。也称为动态转译的实时编译(just-in-time,jit)是一种用于提高计算机程序的运行期性能的方法。传统上,计算机程序具有解译模式或者jit(实时)编译/转译模式两个运行期变换。解译是涉及对逐个指令进行解码以用比jit编译更低的开销将来自客户的代码变换成本机,但是它产生更低性能的变换的代码。此外,解译用每个指令来调用。jit编译器或者转译器代表一种与解译形成对比的方式。就jit转换而言,它通常具有比解译器更高的开销,但是它产生更优化的转译的代码和具有更高执行性能的转译的代码。在多数仿真实现中,在第一次需要转译时,将它作为解译来完成以减少开销,在多次看见(执行)代码之后,调用jit转译以创建更优化的转译。

然而代码变换过程仍然存在许多问题。jit编译过程本身对处理器带来大量开销。这可能引起在应用程序的启动中的大延迟。此外,在系统存储器中管理变换的代码的存储引起往返系统存储器的多次行程并且包括存储器映射和分配管理开销,这带来明显延时惩罚。另外,对应用程序中的执行区域的变化涉及到在系统存储器和代码高速缓存中对变换的代码重定位并且从暂存区开始该过程。解译过程涉及到比jit转译更少的开销,但是它的开销对每个指令都被重复,因此仍然相对显著。代码即使不是完全未被优化也是优化不够的。



技术实现要素:

本发明的实施例实现一种使客户指令到本机指令转换过程的基于硬件的加速成为可能的算法和装置。

在一个实施例中,实现本发明为一种用于转译用于处理器的指令的方法。该方法包括访问包括多个客户分支指令的多个客户指令以及将多个客户指令汇编成客户指令块。将客户指令块转换成对应的本机转换块。在本机高速缓存中存储本机转换块。在转换后备缓冲器(lookasidebuffer)中存储客户指令块到对应的本机转换块的映射。响应于对于客户指令的后续请求,对转换后备缓冲器编索引以确定命中是否发生,其中映射指示客户指令是否在本机高速缓存中具有对应的转换的本机指令。响应于命中来转发转换的本机指令用于执行。

前文是发明内容并且因此必然地包含细节的简化、概括和省略;因而,本领域技术人员将理解,该发明内容仅为说明性而未旨在于以任何方式进行限制。如仅由权利要求限定的、本发明的其它方面、发明特征和优点将在以下阐述的非限制具体描述中变得显而易见。

附图说明

本发明在附图的示图中通过示例而不是限制来图示,并且在附图中,相似标号指代相似要素。

图1示出由本发明的一个实施例进行操作的示例指令序列。

图2示出描绘根据本发明的一个实施例的基于块的转译过程的图,其中将客户指令块转换成本机转换块。

图3示出图示根据本发明的一个实施例的将客户指令块的每个指令转换成本机转换块的对应的本机指令的方式的图。

图4示出图示根据本发明的一个实施例的与本机转换块的处置一起处理远分支的方式的图。

图5示出根据本发明的一个实施例的示例硬件加速转换系统的图,该图图示在高速缓存内存储客户指令块及其对应的本机转换块的方式。

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

图7示出根据本发明的一个实施例的具有辅助基于软件的加速转换流水线的硬件加速转换系统的示例。

图8示出图示根据本发明的一个实施例的clb与代码高速缓存和在存储器内存储的客户指令到本机指令映射结合工作的方式的示例流程图。

图9示出图示根据本发明的一个实施例的物理存储栈代码高速缓存实现方式和客户指令到本机指令映射的示例流程图。

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

图11a示出通过本发明的实施例实现的示例模式匹配过程的图。

图11b示出根据本发明的一个实施例的基于simd寄存器的模式匹配过程的图。

图12示出根据本发明的一个实施例的统一寄存器文件的图。

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

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

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

图16示出描绘根据本发明的一个实施例的指令序列中的异常是因为需要用于后续代码的转译的情况的图。

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

图18示出根据本发明的一个实施例的示例微处理器流水线的图。

具体实施方式

虽然已经与一个实施例结合描述本发明,但是本发明未旨在局限于这里阐述的具体形式。与之相反,它旨在覆盖诸如能够合理包含于如由所附权利要求限定的本发明的范围内的备选、修改和等同形式。

在以下具体描述中,已经阐述许多具体细节、诸如具体方法顺序、结构、单元和连接。然而将理解,无需利用这些和其它具体细节以实现本发明的实施例。在其它境况中,已经省略或者尚未具体描述公知结构、单元或者连接以免不必要地使本描述混淆。

在说明书内对“一个实施例”或者“实施例”的引用旨在于指示与该实施例结合描述的特定特征、结构或者特性包含于本发明的至少一个实施例中。在说明书内的各处出现的短语“在一个实施例中”未必都指代相同实施例,也并非是与其它实施例互斥的单独或者备选实施例。另外,描述可以被一些实施例而未被其它实施例表现的各种特征。类似地,描述可以是对于一些实施例、但是并非其它实施例的各种要求。

以过程、步骤、逻辑块、处理和对计算机存储器内的数据位的操作的其它符号表示形式呈现以下具体描述的一些部分。这些描述和表示形式是在数据处理领域中的技术人员用来最为有效地向本领域中的其他技术人员传达他们的工作的实质的手段。过程、计算机执行的步骤、逻辑块、处理等在这里以及总体上被理解为是导致所期望结果的步骤或者指令的自一致序列。步骤是需要对物理量进行物理操控的那些步骤。这些量尽管未必但是通常采用计算机可读存储介质的电信号或者磁信号的形式,并且能够在计算机系统中进行存储、传送、组合、比较和以其他方式进行操控。有时主要出于普遍使用的原因而将这些信号称为位、数值、单元、符号、字符、术语、数字等已经证实是便利的。

然而应当谨记,所有这些和相似术语将与适当物理量关联并且仅为应用于这些量的方便标签。除非被另外特别指出为从以下讨论是显而易见的,否则要意识到,贯穿本发明利用诸如“处理”或者“访问”或者“写入”或者“存储”或者“重复”等术语的讨论指代计算机系统或者相似电子计算设备的动作和处理,该电子计算设备对计算机系统的寄存器和存储器以及其它计算机可读介质内的表示为物理(电子)量的数据进行操控和变换成计算机系统存储器或者寄存器或者其它这样的信息存储、传输或者显示设备内的相似地表示为物理量的其它数据。

本发明的实施例通过大量加速将来自客户指令架构的客户指令变换成本机指令架构的本机指令用于在本机处理器上执行的过程来工作。本发明的实施例利用基于硬件的单元以实现用于转换过程的硬件加速。客户指令可以来自多个不同指令架构。示例架构包括java或者javascript、x86、mips、sparc等。将这些客户指令迅速转换成本机指令并且流水线地传到本机处理器硬件用于迅速执行。这与传统的由软件控制的转换过程比较提供高得多的性能水平。

在一个实施例中,本发明实现可以使用多个不同指令架构作为输入的灵活转换过程。在这样的实施例中,实现处理器的前端使得它可以由软件控制而又利用硬件加速的转换处理以提供高得多的性能水平。这样的实现提供多个方面的好处。可以处理和转换不同客户架构而又各自接收硬件加速的好处以享受高得多的性能水平。软件控制的前端可以针对在处理器上执行的应用程序提供大程度的灵活性。硬件加速可以达到接近本机硬件速度的目的用于执行客户应用程序的客户指令。在以下描述中,图1至图4示出本发明的实施例处置客户指令序列并且处置在那些客户指令序列内的近分支和远分支的方式。图5示出根据本发明的一个实施例的示例硬件加速转换处理系统的概况。

图1示出由本发明的一个实施例进行操作的示例指令序列。如图1中所描绘的,指令序列100包括从图1的顶部开始进行到底部的16个指令。如图1中可见,序列100包括四个分支指令101-104。

本发明的实施例的一个目标是将整组指令作为单个原子单位来处理。这一原子单位称为块。指令块可以跨越图1中所示16个指令良好延伸。在一个实施例中,块将包括足够指令以填充固定大小(例如64字节、128字节、256字节等)或者直至遇到退出条件。在一个实施例中,用于结束指令块的退出条件是遇到远分支指令。如这里在实施例的描述中所用,远分支是指目标地址驻留于当前指令块以外的分支指令。换言之,在给定的客户指令块内,远分支具有驻留在某一其它块中或者在给定的指令块以外的某一其它指令序列中的目标。类似地,近分支是指目标地址驻留于当前指令块以内的分支指令。此外,应当注意,本机指令块可以包含多个客户远分支。在以下讨论中进一步描述这些术语。

图2示出描绘根据本发明的一个实施例的基于块的转换过程的图,其中将客户指令块转换成本机转换块。如图2中所图示,示出将多个客户指令块201转换成对应的多个本机转换块202。

本发明的实施例通过将客户指令块的指令转换成本机转换块的对应的指令来工作。块201中的每个块由客户指令组成。如以上描述的那样,这些客户指令可以来自多个不同客户指令架构(例如java或者javascript、x86、mips、sparc等)。可以将多个客户指令块转换成一个或者多个对应的本机转换块。这一转换在每指令基础上发生。

图2也图示基于分支预测将客户指令块汇编成序列的方式。这一属性使本发明的实施例能够基于远分支的预测结果来汇编客户指令序列。基于远分支预测,从多个客户指令块汇编客户指令序列并且转换成对应的本机转换块。以下在图3和图4中进一步描述这一方面。

图3示出图示根据本发明的一个实施例的将客户指令块的每个指令转换成本机转换块的对应的本机指令的方式的图。如图3中所示,客户指令块驻留于客户指令缓冲器301内。类似地,本机转换块驻留于本机指令缓冲器302内。

图3示出本发明的实施例的属性,其中将客户分支指令的目标地址转换成本机分支指令的目标地址。例如客户指令分支各自包括标识特定分支的目标地址的偏移。在图3中示出这一偏移为客户偏移或者g_偏移。在转换客户指令时,这一偏移经常由于本机指令为了产生对应的客户指令的功能而需要的不同长度或者序列而不同。例如客户指令与它们的对应的本机指令比较可以是不同长度。因此,转换过程通过计算对应的本机偏移来补偿这一差异。在图3中示出这一偏移为本机偏移或者n_偏移。

应当注意,对称为近分支的、具有在客户指令块内的目标的分支不进行预测、因此对指令序列的流程不进行改变。

图4示出图示根据本发明的一个实施例的与本机转换块的处置一起处理远分支的方式的图。如图4中所图示,描绘客户指令为存储器401中的客户指令序列。类似地,描绘本机指令为存储器402中的本机指令序列。

在一个实施例中,客户指令块和本机指令块二者的每个指令块以远分支作为结束(即使本机块可以包含多个客户远分支)。如以上描述的那样,块将包括足够指令以填充固定大小(例如64字节、128字节、256字节等)或者直至退出条件(诸如例如遇到上个客户远分支指令)。如果已经处理多个客户指令以汇编客户指令块并且尚未遇到远分支,则插入客户远分支以结束块。这一远分支仅为向下一后续块的跳转。这保证指令块以如下分支作为结束,该分支通向另一本机指令块或者在存储器中的另一客户指令序列。此外,如图4中所示,块可以在它的指令序列内包括未驻留于块的末端的客户远分支。这由客户指令远分支411和对应的本机指令客户远分支412示出。

在图4的实施例中,预测远分支411为取得。因此,指令序列向远分支411的目标跳转,该目标是客户指令f。类似地,在对应的本机指令中,远分支412跟随有本机指令f。对近分支不预测。因此,它们不以与远分支相同的方式改变指令序列。

以这一方式,本发明的实施例生成转换块的踪迹,其中每个块包括多个(例如3-4个)远分支。这一踪迹基于客户远分支预测。

在一个实施例中,在本机转换块内的远分支包括客户地址,该客户地址是用于反向分支路径的相反地址。如以上描述的那样,基于远分支的预测来生成指令序列。直至执行对应的本机转换块才知道预测的真结果。因此,一旦检测到假预测,就检查假远分支以获得用于反向分支路径的相反客户地址。转换过程然后从相反客户地址继续,这现在是真分支路径。以这一方式,本发明的实施例将包括的相反客户地址用于反向分支路径以从远分支的预测结果为假的场合来恢复。因此,如果远分支预测结果为假,则过程知道去往何处以发现正确客户指令。类似地,如果远分支预测结果为真,则忽略相反客户地址。应当注意,如果正确地预测在本机指令块内的远分支,则无需用于它们的目标块的clb中的条目点。然而,一旦发生错失预测,就需要在clb中插入用于目标块的新条目。执行这一功能以保存clb容量为目标。

图5示出根据本发明的一个实施例的示例硬件加速转换系统500的图,该图图示在高速缓存内存储客户指令块及其对应的本机转换块的方式。如图5中图示,转换后备缓冲器506用来高速缓存在客户与本机块之间映射的地址;从而通过可用于处理器508的低延时访问最频繁遇到的本机转换块。

图5的图图示在转换后备缓冲器506这一高速低延时高速缓存内维持频繁遇到的本机转换块的方式。图5中所描述的部件实现硬件加速转换处理以提供高得多的性能水平。

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

随着这一过程继续,用客户块到本机块的地址映射填充转换后备缓冲器506。转换后备缓冲器506使用一个或者多个算法(例如最近最少使用等)以保证在缓冲器内保持更频繁遇到的块映射而又从缓冲器驱逐很少遇到的块映射。以这一方式,在转换后备缓冲器506内存储热门的本机转换块映射。此外,应当注意,在本机块内良好预测的远客户分支无需在clb中插入新映射,因为它们的目标块在单个映射的本机块内拼接、因此保存用于clb结构的小容量效率。另外,在一个实施例中,clb被构造用于仅存储末端客户到本机地址映射。这一方面也保存clb的小容量效率。

客户提取逻辑502查看转换后备缓冲器506以确定是否已经将来自客户指令块的地址转换成本机转换块。如以上描述的那样,本发明的实施例对于转换处理提供硬件加速。因此,客户提取逻辑502将在从系统存储器501提取客户地址用于新转换之前查看转换后备缓冲器506寻找预先存在的本机转换块映射。

在一个实施例中,转换后备缓冲器由客户地址范围或者由个别客户地址来编索引。客户地址范围是已经转换成本机转换块的客户指令块的地址范围。转换后备缓冲器存储的本机转换块映射经由其对应的客户指令块的对应的客户地址范围来编索引。因此,客户提取逻辑可以将客户地址与转换的块(这些块的映射在转换后备缓冲器506中保持)的客户地址范围或者个别客户地址进行比较以确定预先存在的本机转换块是否驻留在本机高速缓存507中或者在图6的代码高速缓存中存储的内容内。如果预先存在的本机转换块在本机高速缓存中或者在代码高速缓存中,则从那些高速缓存向处理器直接转发对应的本机转换指令。

以这一方式,热门客户指令块(例如频繁执行的客户指令块)具有它们的在高速低延时转换后备缓冲器506内维持的对应的热门本机转换块映射。在触及块时,适当替换策略保证热门块映射保持于转换后备缓冲器内。因此,客户提取逻辑502可以快速标识先前是否已经转换请求的客户地址并且可以向本机高速缓存507直接转发先前转换的本机指令用于由处理器508执行。这些方面节省大量周期,因为去往系统存储器的行程可能需要40至50个周期或者更多个周期。这些属性(例如clb、客户分支序列预测、客户和本机分支缓冲器、先前的本机高速缓存)允许本发明的实施例的硬件加速功能达到客户应用程序的应用性能在可比较本机应用程序的应用性能的80%至100%内的目的。

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

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

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

在一个实施例中,图5的架构实现使用如下灵活转换过程的虚拟指令集处理器/计算机,该转换过程可以接收多个不同指令架构作为输入。在这样的虚拟指令集处理器中,实现处理器的前端使得它可以由软件控制而又利用硬件加速转换处理以提供高得多的性能水平。使用这样的实现方式,可以处理和转换不同客户架构而又各自接收硬件加速的好处以享受高得多的性能水平。示例客户架构包括java或者javascript、x86、mips、sparc等。在一个实施例中,“客户架构”可以是本机指令(例如来自本机应用程序/宏操作),并且转换过程产生优化的本机指令(例如优化的本机指令/微操作)。软件控制的前端可以针对在处理器上执行的应用程序提供大程度的灵活性。如以上描述的那样,硬件技术对于执行客户应用程序的客户指令可以达到接近本机硬件速度的目的。

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

系统存储器601包括如下数据结构,该数据结构包括客户代码602、转换后备缓冲器603、优化器代码604、转换器代码605和本机代码高速缓存606。系统600也示出共享硬件高速缓存607,其中可以交织和共享客户指令和本机指令。客户硬件高速缓存610对从共享硬件高速缓存607最频繁触及的那些客户指令进行高速缓存。

客户提取逻辑620从客户代码602预提取客户指令。客户提取逻辑620与作为将虚拟客户地址转译成对应的物理客户地址的转换后备缓冲器来工作的tlb609对接。tlb609可以向客户硬件高速缓存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实现转换过程。

图7示出根据本发明的一个实施例的具有辅助基于软件的加速转换流水线的硬件加速转换系统700的示例。

部件711-716包括在专门的高速存储器760内实例化的由软件实现的加载存储路径。如图7中所描述的,客户提取缓冲器711、转换表712-713和本机转换缓冲器716包括专门的高速存储器760的分配的部分。就许多方面而言,专门的高速存储器760作为很低级快速高速缓存(例如l0高速缓存)来工作。

箭头761图示如下属性,其中如与指令提取路径(例如来自提取的解码逻辑)相反的那样经由加载存储路径使转换加速。

在图7的实施例中,高速存储器760包括用于进行比较的特殊逻辑。因为如此,可以在软件中实现转换加速。例如在另一实施例中,存储部件711-716的标准存储器760由使用处理器执行流水线的软件来操控,其中它从所述部件711-716向一个或者多个simd寄存器中加载值并且实现在simd寄存器中的字段之间执行比较的比较指令,以及如需要的那样执行掩码操作和结果扫描操作。可以使用通用微处理器硬件、诸如例如使用比较一个与多个的比较指令来实现加载存储路径。

应当注意,存储器760由具有特殊属性或者地址范围的指令访问。例如在一个实施例中,客户提取缓冲器具有用于每个客户指令条目的id。该id对于每个客户指令而创建。这一id允许易于从客户缓冲器映射到本机转换缓冲器。该id允许易于将客户偏移计算成本机偏移而不考虑客户指令与对应的本机指令比较的不同长度。这一方面在以上在图3中图示。

在一个实施例中,由硬件使用如下长度解码器来计算该id,该长度解码器计算提取的客户指令的长度。然而应当注意,可以在硬件或者软件中执行这一功能。

一旦已经指派id,就可以经由id访问本机指令缓冲器。id允许从客户偏移向本机偏移的偏移的转换。

图8示出图示根据本发明的一个实施例的clb与代码高速缓存和在存储器内存储的客户指令到本机指令映射结合工作的方式的示例流程图。

如以上描述的那样,clb用来存储具有在代码高速缓存存储器内存储的对应的转换的本机地址的客户地址的映射(例如客户到本机地址映射)。在一个实施例中,用客户地址的部分对clb编索引。将客户地址分割成索引、标签和偏移(例如组块大小)。这一客户地址包括用来标识在与索引对应的clb条目中的匹配的标签。如果在标签上有命中,则对应的条目将存储如下指针,该指针指示在代码高速缓存存储器806中何处可以发现对应的转换的本机指令组块(例如对应的转换的本机指令块)。

应当注意,如这里所用术语“组块”是指转换的本机指令块的对应的存储器大小。例如组块可以根据转换的本机指令块的不同大小而大小不同。

关于代码高速缓存存储器806,在一个实施例中,以固定大小的组块(例如对于每个组块类型用不同大小)的集合的方式分配代码高速缓存。可以在系统存储器和所有更低级hw高速缓存(例如本机硬件高速缓存608、共享硬件高速缓存607)中在逻辑上将代码高速缓存分割成集合和途径。clb针对代码高速缓存组块可以使用客户地址以编索引和标签比较途径标签。

图8描绘在描绘为途径x和途径y的2个途径中存储客户地址标签的clb硬件高速缓存804。应当注意,在一个实施例中,可以以结构化方式通过存储指向本机代码组块的指针(例如从客户到本机地址映射)来完成使用clb结构的客户地址到本机地址的映射。每个途径与标签关联。用客户地址802(包括标签)对clb编索引。在clb中命中时,返回与标签对应的指针。这一指针用来对代码高速缓存存储器编索引。这在图8中由行“代码组块的本机地址=段#+f(pt)”示出,这代表代码组块的本机地址是指针和段号的函数。在本实施例中,段是指用于存储器中的虚拟地映射(例如允许指针阵列映射到物理存储器中的任何区域)的指针范围的点的基址。

备选地,在一个实施例中,可以如在图8中由行“代码组块的本机地址=段#+索引*(组块大小)+途径#*(组块大小)”所示,经由第二方法对代码高速缓存存储器编索引。在这样的实施例中,组织代码高速缓存使得它的途径结构与clb途径构造匹配,从而1:1映射存在于clb的途径与代码高速缓存组块的途径之间。当在特定clb途径中有命中时,在代码高速缓存的对应途径中的对应代码组块然后具有本机代码。

仍然参照图8,如果clb的索引未命中,则可以检查存储器的更高分级寻找命中(例如l1高速缓存、l2高速缓存等)。如果在这些更高高速缓存级中无命中,则检查系统存储器801中的地址。在一个实施例中,客户索引指向例如包括64个组块的条目。读出64个组块中的每个组块的标签并且与客户标签比较以确定是否有命中。这一过程在图8中由虚线框805示出。如果在与标签比较之后在系统存储器中无命中,则在任何分级存储器级不存在转换并且必须转换客户指令。

应当注意,本发明的实施例以类似于高速缓存的方式管理存储客户到本机指令映射的分级存储器级中的每个分级存储器级。这固有地来自基于高速缓存的存储器(例如clb硬件高速缓存、本机高速缓存、l1和l2高速缓存等)。然而clb也包括“代码高速缓存+clb管理位”,其用来为系统存储器801内的客户到本机指令映射实现最近最少使用(lru)替换管理策略。在一个实施例中,clb管理位(例如lru位)由软件管理。以这一方式,所有分级存储器级用来存储最近最多使用、最频繁遇到的客户到本机指令映射。对应地,这导致所有分级存储器级相似地存储最频繁遇到的转换的本机指令。

图8也示出clb中存储的动态分支偏置位和/或分支历史位。这些动态分支位用来跟踪在汇编客户指令序列中使用的分支预测的行为。这些位用来跟踪哪些分支预测最经常被正确预测并且哪些分支预测最经常被不正确预测。clb也存储用于转换的块范围的数据。这一数据使过程能够无效代码高速缓存存储器中的其中(例如如在自修改代码中那样)已经修改的对应的客户指令的转换块范围。

图9示出图示根据本发明的一个实施例的物理存储栈高速缓存实现方式和客户地址到本机地址映射的示例流程图。如图9中所描述,高速缓存可以实现为物理存储栈901。

图9的实施例图示代码高速缓存可以实现为可变结构高速缓存的方式。根据不同实施例的要求,可变结构高速缓存可以是完全硬件实现和控制的、完全软件实现和控制的或者是软件支配和控制以及下层硬件实现的某些混合。

图9的实施例涉及达到用于在实际物理存储装置中管理客户到本机地址映射的分配和替换及其对应的转译的任务的最优平衡。在本实施例中,这通过使用将指针与可变大小的组块进行组合的结构来实现。

多途径标签阵列用来存储用于不同大小的物理存储装置组的指针。每当需要分配特定存储装置大小(例如其中对应于地址的存储装置大小)时,然后相应地,分配各自与该大小对应的一组存储块。这允许本发明的一个实施例精确地分配存储装置以存储可变大小的指令踪迹。图9示出组如何可以是不同大小。示出“用于组大小4的替换候选”和“用于组大小2的替换候选”这两个示例组大小。(除了与地址对应的标签之外还)在将地址映射到物理存储地址的tag阵列中存储指针。标签可以包括两个或者更多子标签。例如在标签结构902中的上3个标签包括子标签分别如图所示的a1b1、a2b2c2d2和a3b3。因此,标签a2b2c2d2包括组大小4,而标签a1b1包括组大小2。组大小掩码也指示组大小。

然后可以如同栈一样管理物理存储装置,从而每当有分配的新组时,可以在物理存储栈顶部放置它。条目通过改写它们的标签来无效,由此恢复分配的空间。

图9也示出扩展的途径标签结构903。在一些境况中,在标签结构902中的条目将在扩展的途径标签结构903中具有对应条目。这依赖于条目和标签结构是否具有扩展的途径位设置(例如设置成一)。例如,设置成一的扩展的途径位指示在扩展的途径标签结构中有对应条目。扩展的途径标签结构允许处理器以与标准标签结构不同的方式来扩展引用的局部性。因此,虽然以一种方式(例如索引(j))对标签结构902编索引,但是以不同方式(例如索引(k))对扩展的途径标签结构编索引。

在典型实现方式中,索引(j)可以有数目比索引(k)内大得多的条目。这是因为在多数限制中,主标签结构902比扩展的途径标签结构903大得多,其中例如(j)可以覆盖1024个条目(例如10位)而(k)可以覆盖256个(例如8位)。

这使本发明的实施例能够对于已经变成非常热门(例如很频繁遇到)的踪迹匹配并入附加途径。例如,如果在标签结构902内没有发现热门集合内的匹配,则通过设置扩展的途径位,扩展的途径标签结构可以用来存储用于热门踪迹的附加途径。应当注意,这一可变高速缓存结构仅使用如我们在栈上存储的高速缓存的代码/数据所需要的存储装置,例如如果在程序的特定阶段期间从未访问高速缓存集合中的任何(索引位指示的条目),则将在栈上没有用于该集合的存储装置分配。这与对于每一个集合具有固定物理数据存储装置于其中的集合的典型高速缓存比较而提供高效的有效存储容量增加。

也可以有用于指示集合或者集合组为冷门(例如意味着已经长时间未访问它们)的位。在这一情况下,用于那些集合的栈存储装置看似在分配的栈存储装置内的冒泡。这时,可以索取它们的分配指针用于其它热门集合。这一过程是存储装置收回过程,其中在已经在栈内分配组块之后,该组块属于的整个集合然后变成冷门。可以有助于这一收回的所需机制和结构(在图9中未示出以免混淆或者模糊所示方面)是:用于每个集合(条目索引)的冷门集合指示符和回收过程,其中将用于那些冷门集合的途径的指针重用于其它热门集合的途径。这允许回收那些栈存储冒泡(组块)。在未在回收模式中时,在栈顶部分配新组块,在栈具有冷门集合(例如长时间未访问集合途径/组块)时,回收动作允许需要在另一集合中分配的新组块以重用回收的指针和在栈内的(属于冷门集合)它的关联组块存储装置。

应当注意,如与专门的高速缓存存储器相反的那样,图9的实施例良好地适用于在它的实现方式中使用标准存储器。这一属性归因于通过读取指针、读取索引和分配地址范围来管理物理存储栈的事实。在这样的实现方式中无需专门的基于高速缓存的电路结构。

应当注意,在一个实施例中,图9的架构可以用来实现未涉及到转换或者代码变换的数据高速缓存和高速缓存方案。因而,图9的架构可以用来实现更标准化的高速缓存(例如l2数据高速缓存等)。这样做与常规固定结构高速缓存等比较将提供更大有效容量。

图10示出描绘根据本发明的一个实施例的硬件加速转换系统1000的附加示例细节的图。行1001图示将传入客户指令与多个组掩码和标签进行比较的方式。目的是快速标识客户指令的类型并且向对应组指派它。组掩码和标签通过匹配客户指令的子字段以便标识客户指令属于的特定组来工作。掩码遮蔽客户指令模式的无关位以具体关注相关位。如例如表1002的表以优先化方式存储掩码-标签对。

通过在优先级方向中向表中读取模式来匹配模式,该优先级方向在这一情况下描绘为从上至下。以这一方式,通过在掩码-标签存储装置的优先级方向中读取模式来匹配模式。以不同掩码的优先级为顺序来检查它们,并且对应地以它们的优先级为顺序应用模式匹配功能。在发现命中时,然后从存储映射的对应表(例如表1003)读取模式的对应映射。第2级表1004图示可以用级联依次方式访问多个转换表直至达到客户指令的全转换的目的的分级方式。如以上描述的那样,转换表包括替代字段和控制字段并且作为用于将从客户提取缓冲器接收的客户指令转译成本机指令的多级转换表来工作。

以这一方式,向转换表发送缓冲器中的每个字节流,其中每级转换表串行地检测位字段。在检测到相关位字段时,该表替代场的本机等价。

该表也产生如下控制字段,该控制字段有助于用于这一级以及下一级表(例如第2级表1004)的替代过程。下一个表使用先前表控制字段以标识用本机等价替代的下一相关位字段。第二级表然后可以产生用于帮助第一级表的控制字段,以此类推。一旦用本机位字段替代所有客户位字段,该指令就完全被转译并且向本机转换缓冲器进行传输。如以上描述的那样,然后向代码高速缓存中写入本机转换缓冲器,并且在clb中记录它的客户到本机地址映射。

图11a示出通过本发明的实施例实现的示例模式匹配过程的图。如图11a中描述的,由标签、模式和掩码确定目的地。模式解码的功能包括执行位比较(例如按位xor)、执行位and(例如按位and)以及随后检查所有零位(nor所有位)。

图11b示出根据本发明的一个实施例的基于simd寄存器的模式匹配过程的图1100。如图1100中所描述,示出四个simd寄存器1102-1105。这些寄存器如图所示实现模式解码过程的功能。传入模式1101用来对标签中的每个标签执行并行位比较(例如按位xor),并且该结果用掩码执行位and(例如按位and)。匹配指示符结果如图所示各自存储于它们的相应simd位置。然后如图所示执行扫描,并且在扫描遇到的simd元素之中的第一个真是如下元素,其中用于所有i位的等式(pixorti)andmi=0为真,其中pi是相应模式,ti是相应标签,并且mi是相应掩码。

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

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

用于x和y位的值如下:

00:r无效;r’提交(在读取请求时读取r’)

01:r推测;r’提交(在读取请求时读取r)

10:r提交;r’推测(在读取请求时读取r’)

11:r提交;r’无效(在读取请求时读取r)

以下是每个指令/事件的影响。在指令回写时,00变成01并且11变成10。在指令提交时,01变成11并且10变成00。在发生回退事件时,01变成00并且10变成11。

这些改变主要是对在寄存器文件条目选择器1205中存储的状态的改变并且基于在它们发生时的事件而发生。应当注意,提交指令和回退事件需要达到提交阶段以便引起条目选择器1205中的位转变。

以这一方式,指令能够在阴影寄存器状态内继续而未破坏提交的寄存器状态。在阴影寄存器状态准备用于提交时,更新寄存器文件条目选择器,从而用以上描述的方式从哪个部分读取有效结果。以这一方式,通过如需要的那样简单地更新寄存器文件条目,推测执行结果可以在异常的情况下回退到最近提交点。类似地,提交点可以通过简单地更新寄存器文件条目选择来提前、由此提交推测执行结果。提供这一功能而无需在寄存器存储器之间的任何交叉复制。

以这一方式,统一寄存器文件可以经由寄存器文件条目选择器1205实现多个推测暂存区阴影寄存器(sssr)和多个提交的寄存器(cr)。例如在提交时,sssr寄存器变成cr寄存器。在回退时,sssr状态回退到cr寄存器。

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

图13的实施例描绘组成架构1300的部件,该架构支持包括架构推测状态的指令和结果并且支持包括瞬态状态的指令和结果。如这里所用,提交的架构状态包括可以由在处理器上执行的程序访问(例如读取和写入)的可见寄存器和可见存储器。对照而言,推测架构状态包括未提交、因此未全局可见的寄存器和/或存储器。

在一个实施例中,有架构1300启用的四个使用模型。第一使用模型包括如以上在图12的讨论中描述的用于硬件状态更新的架构推测。

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

第三使用模型包括从一个形式到另一形式的jit(实时)指令转译或者编译。在这一使用模型中,经由软件、例如jit实现架构状态重排序。第三使用模型可以例如适用于客户到本机指令转译、虚拟机到本机指令转译或者将本机微指令重映射/转译成更优化的本机微指令。

第四使用模型包括瞬态上下文切换而无需在从瞬态上下文返回时保存和恢复先前上下文。这一使用模型适用于可以出于许多原因而发生的上下文切换。一个这样的原因可以例如是经由异常处置上下文而精确处置异常。以下在图14-17的讨论中进一步描述第二、第三和第四使用模型。

再次参照图13,架构1300包括用于实现以上描述的4个使用模型的多个部件。统一阴影寄存器文件1301包括第一部分(提交的寄存器文件1302)、第二部分(阴影寄存器文件1303)和第三部分(最新指示符阵列1304)。包括推测引退存储器缓冲器1342和最新指示符阵列1340。架构1300包括无序架构,因此架构1300还包括重排序缓冲器和引退窗口1332。重排序和引退窗口1332还包括机器引退指针1331、就绪位阵列1334和每指令最新指示符、诸如指示符1333。

根据本发明的一个实施例进一步具体描述用于硬件状态更新的架构推测这一第一使用模型。如以上描述的那样,架构1300包括无序架构。架构1300的硬件能够提交无序指令结果(即无需加载和无序存储以及无序寄存器更新)。架构1300用以上在图12的讨论中描述的方式利用统一阴影寄存器文件以支持在提交的寄存器与阴影寄存器之间的推测执行。此外,架构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。

图14示出根据本发明的一个实施例的包括双范围使用的第二使用模型的图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中,在“向cr提交sssr”时,直至这一点的寄存器和存储器在cr模式中,而代码在cr/cm模式中执行。在范围1402中,代码在sr和sm模式中执行并且如果异常发生则回退。以这一方式,两个范围在机器中同时执行,但是各自在不同模式中执行并且相应地读取和写入寄存器。

图15示出根据本发明的一个实施例的第三使用模型的图1500,该第三使用模型包括瞬态上下文切换而无需在从瞬态上下文返回时保存和恢复先前上下文。如以上描述的那样,这一使用模型适用于可以出于许多原因而发生的上下文切换。一个这样的原因例如是经由异常处置上下文来精确处置异常。

第3使用模型发生于机器正在执行转译的代码并且它遇到上下文切换(例如在转译的代码以内的异常或者如果需要用于后续代码的转译)时。在当前范围中(例如在异常之前时),sssr和smb尚未向客户架构状态提交它们的推测状态。当前状态正在sr/sm中运行。在异常发生时,机器向异常处置器(例如转换器)切换以精确处理异常。插入回退,这使注册器状态回退到cr并且刷新smb。转换器代码将在sr/cm模式中运行。在转换器代码的执行期间,smb将它的内容引退到存储器而未等待提交事件。向sssr写入寄存器而未更新cr。随后,在完成转换器时并且在切换回到执行转换的代码之前,它使sssr回退(例如sssr回退到cr)。在这一过程期间,最后提交的寄存器状态在cr中。

在图15中示出这一点,其中先前范围/踪迹1501已经从sssr向cr中提交。当前范围/踪迹1502为推测。寄存器和存储器以及这一范围为推测,并且执行在sr/sm模式下发生。在这一示例中,在范围1502中发生异常,并且需要按照在转译之前的原有顺序重新执行代码。在这一点,sssr回退并且刷新smb。然后jit代码1503执行。jit代码使sssr回退到范围1501的末端并且刷新smb。jit的执行是在sc/cm模式之下。在完成jit时,sssr回退到cr,并且当前范围/踪迹1504然后在cr/cm模式中按照原有转译顺序重新执行。以这一方式,在准确当前顺序精确处置异常。

图16示出描绘根据本发明的一个实施例的指令序列中的异常是因为需要用于后续代码的转译的情况的图16。如图16中所示,先前范围/踪迹1601以向未转译的目的地的远跳转作为结束。在向远跳转目的地跳转之前,向cr提交sssr。jit代码1602然后执行以转译在远跳转目的地的猜测指令(例如构建新本机指令踪迹)。jit的执行是在sr/cm模式之下。在jit执行结束时,寄存器状态从sssr回退到cr,并且由jit转译的新范围/踪迹1603开始执行。新范围/踪迹在sr/sm模式中从先前范围/踪迹1601的上个提交点执行。

图17示出根据本发明的一个实施例的第四使用模型1700的图,该第四使用模型包括瞬态上下文切换而无需在从瞬态上下文返回时保存和恢复先前上下文。如以上描述的那样,这一使用模型适用于可以出于许多原因而发生的上下文切换。一个这样的原因可以例如是经由异常处置上下文的处理输入或者输出。

图17示出在cr/cm模式之下执行的先前范围/踪迹1701以调用函数f1作为结束的情况。上至该点的寄存器状态从sssr提交到cr。函数f1范围/踪迹1702然后开始在sr/cm模式之下推测地执行。函数f1然后以返回到主范围/踪迹1703作为结束。在这一点,寄存器状态从sssr回退到cr。主范围/踪迹1703恢复在cr/cm模式中执行。

图18示出根据本发明的一个实施例的示例微处理器流水线1800的图。微处理器流水线1800包括实现如以上描述的硬件加速转换过程的功能的硬件转换加速器1810。在图18的实施例中,硬件转换计数器1810耦合到提取模块1801,该提取模块跟随有解码模块1802、分配模块1803、调度模块1804、执行模块1805和引退模块1806。应当注意,微处理器流水线1800仅为实现以上描述的本发明的实施例的功能的流水线的一个示例。本领域技术人员将认识到可以实现包括以上描述的解码模块的功能的其它微处理器流水线。

已经出于说明的目的参照具体实施例对前文描述进行了描述。然而以上文所示讨论并非意在是详尽的或者使本发明限于公开的精确形式。鉴于上述教导的许多修改和变化是可能的。选择和描述实施例以便最好地说明本发明的原理及其实际应用,以由此使本领域其他技术人员能够借助如可以与设想的特定使用相适的各种修改最好地利用本发明和各种实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1