计算机系统和改编计算机系统以使其支持寄存器窗口架构的方法技术方案

技术编号:5451445 阅读:236 留言:0更新日期:2012-04-11 18:40
目标计算系统(10)被改编以支持寄存器窗口架构,特别用于将非本地对象代码(17)转换为由目标处理器(13)执行的目标代码(21)时。存储器中的对象寄存器堆栈数据结构(“SR堆栈”)(400)具有多个帧(410),每一帧包含与对象处理器(3)中的一个寄存器窗口(510)的对象寄存器子集(502)对应的一组条目(401)。在目标处理器(13)上执行的目标代码(21)访问SR(10)堆栈(400)。SR堆栈(400)存储大量这样的帧410,从而避免了诸如模拟从对象架构的窗口化的寄存器文件的自动溢出和载入操作的开销。在一个实施例中,具有16个通用工作寄存器的目标计算系统(10)被改编以支持依赖包含几十或几百个对象寄存器(502)的寄存器文件(15)的寄存器窗口架构。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术通常涉及计算机和计算机系统领域。更具体地讲,本专利技术涉及一 种被改编以支持寄存器窗口架构的计算机系统以及一种改编计算机系统以使 其支持寄存器窗口架构的方法。
技术介绍
中央处理单元(CPU)或处理器处于所有现代计算系统的心脏。处理器执行计算机程序的指令,从而使计算机能够执行有用的工作。不仅在诸如个人计算机、膝上型电脑和PDA的专用计算机器中,在现代生活中的所有形式 的数字装置中都普遍存在CPU。现代微处理器出现在从汽车到洗衣机到儿童 玩具的每一件物品中。产生这样的问题可由一种类型的处理器执行的程序代码经常不能由任 何其它类型的处理器执行。首先,每一种类型的处理器具有其自身的独特指硬件特点。因此,程序代码转换领域已经发展为将为一种类型的处理器撰写 的程序代码自动转换为可由另 一种类型的处理器执行的代码,或者针对同一 类型的处理器将旧的、效率低的一段代码优化为更新更快的版本。即,在嵌 入式和非嵌入式CPU中,有主导ISA(针对主导ISA,大部分软件已经存在), 这些主导ISA可以进行性能加速或者被翻译给体现出更好的成本/ 性能效益的其它处理器。还发现主导CPU架构,这些主导CPU架构被实时 地锁定于其ISA并且在性能或者市场占有方面无法发展。这一问题涉及所有 级别的电子产业,从独立袖珍式装置直到具有几十或几百个强大的计算机的 大规模网络。作为程序代码转换这一领域的背景信息,名称为Program Code Conversion的WO2000/22521号PCT公布、名称为Method and Apparatus for Performing Interpreter Optimizations during Program Code Conversion 的 WO2004/095264号PCT乂^布、名称为Improved Architecture for GeneratingIntermediate Representations for Program Code Conversion 的WO2004/097631 号PCT公布、名称为Method and Apparatus for Performing Adjustable Precision Exception Handling的WO2005/006106号PCT公布以及名称为Method and Apparatus for Precise Handling of Exceptions During Program Code Conversion 的WO2006/103395号PCT公布通过引用全部包含于此,这些PCT公布公开 了提高程序代码转换能力的方法和设备,这些方法和设备可在这里所讨论的 示例实施例中采用。大部分现代处理器包括一组寄存器作为快速存取存储器。处理器在执行 计算机程序中的指令序列时利用这些寄存器来保存临时值。处理器硬件包含 有限数量的这种寄存器,并且在使用中,程序的执行会很容易地使临时数据 值填满所有可用的寄存器。当处理器从一个代码段移动到另一代码段时,这 会导致对可用寄存器的竟争,因为每一代码段均将产生临时值并将需要使用 处理器中的寄存器来存储这些临时数据值。响应这一困难,已开发出具有寄存器窗口架构的处理器。例如,二十世 纪九十年代初的基于Berkeley RISC设计的寄存器窗口架构提供一个大的硬 件寄存器集(寄存器文件),并且仅允许这些寄存器中的一个小的子集(寄存 器窗口 )被当前代码段访问。寄存器文件中位于寄存器窗口的当前位置之外 的其它寄存器不能被当前的计算机程序段访问。例如,在总共64个寄存器的 寄存器文件中,任何时候都仅有8个寄存器是可见的。当处理器从一个代码 段移动到另一个代码段时,例如在执行进程调用时,寄存器窗口在寄存器文 件中移动位置并为新的代码段暴露不同的寄存器子集。这些移动大致分为两 类 一类引起SAVE (保存)类型的移动,其中,寄存器窗口移动到先前未 使用过的位置,从而为正在执行的对象代码呈现一组干净的硬件寄存器;另 一类是RESTORE (恢复)类型的移动,该移动将寄存器窗口往回向着先前暴 露过的位置移位,从而将一组先前使用过的寄存器展现给正在执行的代码, 从而恢复对这些寄存器中保存的数据值的访问。然而,取决于执行程序所调 用的进程调用级别的数量,寄存器文件中的有限数量的硬件寄存器最终将被 耗尽。这里,执行SPILL (溢出)操作,寄存器中的数据值藉此被移动到安 全位置,例如处理器之外的第二级存储器中。稍后,FILL(载入)操作将这 些数据值移回到硬件寄存器中以便处理器能够继续执行相关的代码段。这种寄存器窗口架构的目的在于通过为大部分计算机程序避免费时费力的寄存器溢出和载入操作来使计算系统更快地执行,特别是在处理器频繁地 从一个代码段移动到另一个代码段,然后返回到最初的代码段(即,执行进 程调用) 时。这种寄存器窗口架构已经-故诸如SPARC、 AMD2卯00和Intel i960的处 理器大规模地商业应用。因此,已经撰写了仅在这些架构上执行且不能由任 何其它类型的处理器执行的大部分代码。在这些商业处理器中,SPARC特别流行。在例如由佛罗里达州圣何塞市 SPARC国际公司公布的 SPARC架构指南(第八版)第4.1节寄存器 以及SPARC架构指南(第九版)第5.1节寄存器中可以找到关于SPARC 寄存器窗口架构的进一步的背景信息,所述内容通过引用包含于此。作为示例,图1示出在现有技术的第9版本的SPARC架构中的寄存器 窗口的使用。第9版本的SPARC架构提供多个控制/状态寄存器和大量通用 (r)寄存器。通用寄存器包括8个永久可见的全局寄存器(和另外8个备 用全局寄存器)以及可移动的24-寄存器窗口,该24-寄存器窗口被划分为8 个in寄存器、8个local (局部)寄存器和8个out寄存器。总寄存 器文件中的当前窗口由控制/状态寄存器之一 中保存的当前窗口指针 (CWP)给出。每次执行restore指令时,CWP增加;每次执行save 指令或者当发生陷阱(trap)时,CWP减小。在该示例中,24-寄存器窗口与 相邻窗口位置部分重叠,例如一个窗口位置的8个out寄存器与相邻窗口 位置的8个in寄存器重叠,同时对于每一窗口位置,局部寄存器是独有 的。也就是说,窗口位置CWP+1的out寄存器也可按照相邻窗口位置CWP 的in寄存器进行寻址。此外,当前窗口 CWP的out寄存器等同于下 一窗口 CWP-1的in寄存器。第9版本的SPARC架构支持最少3个到最 多32个的窗口位置,这取决于具体的硬件实现。因此,连同永久可见的全局 寄存器,第9版本的SPARC架构需要64至528个通用硬件寄存器(8个全 局寄存器、8个备用全局寄存器以及每一窗口位置所需的16个寄存器)。图2示出在示例第9版本的SPARC架构中的窗口化的寄存器文件的环 形特征。硬件寄存器的数量有限,并且在本示例中,存在与8个寄存器窗口 位置对应的128个窗口化的硬件寄存器。图2示出窗口位置W0作为当前窗 口 ( CWP=0 )。如果利用当前窗口位置WO的过程^丸行RESTORE,则窗口位 置W7将变为当前窗口 ( C本文档来自技高网...

【技术保护点】
一种计算系统,该计算系统被改编以支持寄存器窗口架构,以便使用可由基于寄存器窗口的对象计算架构的对象处理器执行的对象代码,在该基于寄存器窗口的对象计算架构中,寄存器窗口被定位为使从窗口化的寄存器文件中选择的对象处理器的对象寄存器的子集显露,所述对象代码包括基于窗口的指令和基于寄存器的指令,基于窗口的指令影响寄存器窗口,基于寄存器的指令包含对寄存器窗口中的对象寄存器的引用,该计算系统包括: 解码器单元,被布置为将对象代码解码,以从基于窗口的指令中获得寄存器窗口移动信息并从基 于寄存器的指令中获得一个或多个窗口化的对象寄存器引用; 具有堆栈数据结构的存储器,该堆栈数据结构被布置为存储多个条目; 编码器单元,被布置为从解码器单元所解码的对象代码产生目标代码;和 目标处理器,被布置为执行该目标代码, 以设置与存储器中的堆栈数据结构的头有关的堆栈指针,参考寄存器窗口移动信息调节该堆栈指针,参考该堆栈指针与关于各个窗口化的对象寄存器引用确定的位移的组合来访问堆栈数据结构中的条目。

【技术特征摘要】
【国外来华专利技术】GB 2006-10-2 0619380.9;US 2006-10-24 60/853,9241、一种计算系统,该计算系统被改编以支持寄存器窗口架构,以便使用可由基于寄存器窗口的对象计算架构的对象处理器执行的对象代码,在该基于寄存器窗口的对象计算架构中,寄存器窗口被定位为使从窗口化的寄存器文件中选择的对象处理器的对象寄存器的子集显露,所述对象代码包括基于窗口的指令和基于寄存器的指令,基于窗口的指令影响寄存器窗口,基于寄存器的指令包含对寄存器窗口中的对象寄存器的引用,该计算系统包括解码器单元,被布置为将对象代码解码,以从基于窗口的指令中获得寄存器窗口移动信息并从基于寄存器的指令中获得一个或多个窗口化的对象寄存器引用;具有堆栈数据结构的存储器,该堆栈数据结构被布置为存储多个条目;编码器单元,被布置为从解码器单元所解码的对象代码产生目标代码;和目标处理器,被布置为执行该目标代码,以设置与存储器中的堆栈数据结构的头有关的堆栈指针,参考寄存器窗口移动信息调节该堆栈指针,参考该堆栈指针与关于各个窗口化的对象寄存器引用确定的位移的组合来访问堆栈数据结构中的条目。2、 根据权利要求1所述的计算系统,其中,解码器单元被布置为识别对 象代码中导致寄存器窗口的至少SAVE和RESTORE类型移动的一个或多个 基于窗口的指令,并从其获得至少SAVE和RESTORE类型寄存器窗口移动 信息。3、 根据权利要求2所述的计算系统,其中,目标处理器被布置为响应于 每一条所述SAVE和RESTORE类型寄存器窗口移动信息调节堆栈指针。4、 根据权利要求3所述的计算系统,其中,目标处理器被布置为响应于 每一条所述SAVE和RESTORE类型寄存器窗口移动信息,将堆栈指针调节 预定的偏移。5、 根据权利要求4所述的计算系统,其中,目标处理器被布置为响应于 每一条所述SAVE类型寄存器窗口移动信息,使堆栈指针增加预定的偏移, 响应于每一条所述RESTORE类型寄存器窗口移动信息,使堆栈指针减小预 定的偏移;或者响应于每一条所述SAVE类型寄存器窗口移动信息,使堆栈指针减小预定的偏移,响应于每一条所述RESTORE类型寄存器窗口移动信 息,使堆栈指针增加预定的偏移。6、 根据权利要求5所述的计算系统,其中,所述预定的偏移与可寻址的 一组窗口化的对象寄存器引用的大小对应。7、 根据权利要求6所述的计算系统,其中,目标处理器被布置为关于各 个窗口化的对象寄存器引用在可寻址的一组窗口化的对象寄存器引用中的位 置,为每一窗口化的对象寄存器引用确定所述位移。8、 根据权利要求1所述的计算系统,其中,编码器单元被布置为发布至 少一个目标代码指令,所述目标代码指令使目标处理器通过结合调节的堆栈 指针和确定的位移来访问从堆栈数据结构中选择的条目。9、 根据权利要求1所述的计算系统,其中,目标处理器被布置为根据寄 存器窗口移动信息来确定帧偏移以便将堆栈指针调节预定数量的条目,并且 根据确定的帧偏移和确定的位移来调节堆栈指针以访问从堆栈数据结构中选 择的条目。10、 根据权利要求1所述的计算系统,其中,解码器单元被布置为根据 对象代码中的基于窗口的指令将对象代码划分为多个块,寄存器窗口移动信 息是从所述基于窗口的指令获得的。11、 根据权利要求1所述的计算系统,其中,所述对象代码包括执行调 用被调用者部分的功能的至少一个调用者部分,并且编码器单元被布置为产 生将被调用者部分内联入调用者部分中的单个目标代码块。12、 根据权利要求11所述的计算系统,其中,编码器单元被布置为产生 由目标处理器执行的目标代码指令,以便i) 根据在对象代码的调用者部分中识别出的窗口化的对象寄存器引用, 参考从窗口化的对象寄存器引用获得的位移以及堆栈指针来访问从堆栈数据 结构中选4奪的条目;ii) 根据从对象代码的调用者部分获得的寄存器窗口移动信息,增加与堆 栈数据结构的预定数量的条目相等的帧偏移;iii.)根据在对象代码的被调用者部分中识别出的窗口化的对象寄存器引 用,参考从窗口化的对象寄存器引用获得的位移以及根据帧偏移调节的堆栈 指针来访问从堆栈数据结构选择的条目;iv )根据从对象代码的被调用者部分获得的寄存器窗口移动信息减'J、帧偏移。13、 根据权利要求1所述的计算系统,其中所述存储器还包括仿真的部分,该仿真的部分被布置为对用于对象代码 的执行的执行堆栈进行仿真;解码器单元被布置为将对象代码解码以识别至少SAVE和SAVE类型寄 存器窗口移动信息;识别出的寄存器窗口移动更新计数器,所述更新包括针对每一 SAVE类型移 动使计数器增加并且针对每一 RESTORE类型移动使计数器减小,计数器藉 此计算帧的数量,每一所述帧包含存储在堆栈数据结构上的预定数量的条目;解码器单元被布置为识别对象代码中的SPILL类型指令,该SPILL类型 指令将需要从对象代码中的基于寄存器的指令获得的窗口化的对象寄存器引 用中所保存的数据值的溢出;编码器单元被布置为产生由目标处理器执行的目标代码,以便将数据值从堆栈数据结构中的条目复制到存储器中的仿真的执行堆栈上所分配的相应 条目,其中,所述条目位于由计数器确定的数量的帧中;编码器单元被布置为产生由目标处理器执行的目标代码,以便将计数器重设为默认值,该默认值指示在堆栈数据结构中不存在有效的条目的帧;编码器单元被布置为产生由目标处理器执行的目标代码,以便对存储器中的仿真的执行堆栈中的条目中所存储的数据值进行寻址。14、 根据权利要求13所述的计算系统,其中解码器单元还被布置为识别对象代码中的FILL类型指令,该FILL类型指令需要存储器中的仿真的执行堆栈中的条目中所存储的数据值的载入;编码器单元被布置为产生由目标处理器执行的目标代码,以便相对于默认值测试计数器,并且i) 当计数器的测试显示堆栈数据结构中存在一个或多个有效的条目的帧 时,根据识别出的FILL指令更新计数器,ii) 当计数器的测试显示堆栈数据结构上不存在较早的有效的条目的帧 时,将数据值从存储器中的仿真的执行堆栈的条目的帧复制到存储器中的堆 栈数据结构,作为堆栈数据结构中的当前的条目的帧。15、...

【专利技术属性】
技术研发人员:亚历山大巴拉克劳布朗
申请(专利权)人:特兰斯蒂有限公司
类型:发明
国别省市:GB[英国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1