用于结构仿真的系统技术方案

技术编号:2886153 阅读:194 留言:0更新日期:2012-04-11 18:40
一种优化目标码翻译系统和方法,完成编译和翻译源操作系统上的标的目标码,并同时完成优化。对目标码的编译和优化是实时动态执行的。编译器完成分析和优化,与基于模板的翻译和解释相比使仿真得到改善,从而使处理较大量级指令(如32位指令)的处理器可以仿真处理较小量指令(如16位或8位指令)的目标处理器。优化目标码翻译器不需要在运行时之前知道静态程序流程图或目标指令存储器位置。(*该技术在2019年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及在一主处理系统中运行以仿真第二操作系统的目标码翻译器技术。更具体而言,本专利技术涉及动态目标码翻译器技术,这种翻译器在一个具有主处理器目标码指令集的主处理器上执行过程中实时地完成对原始目标码指令集的分析和计算。在目标码翻译器领域中,有必要把已在一个计算机上开发的目标码转换到具有不同计算机结构的另一个计算机上。这种目标码的转换方法包括一种名为“静态目标码转换方法”的转换方法,用这种方法时指令语句要首先转换成第二种结构的目标码,然后再执行。第二种转换方法是“动态目标码转换方法”,使用这种方法时第一目标码被转换成第二种目标码而同时执行指令。在静态目标码转换方法技术中,执行时间不受转换所需时间的影响。然而,在执行静态目标码转换时,被转换成的目标码的实际大小变大了。换句话说,使用静态目标码转换方法时,被转换成的目标码中许多操作步骤不可避免地增大了。结果,出现了被转换成的目标码性能下降和效率不高的问题。另一方面,使用动态目标码转换方法时,与静态转换成的目标码相比,其转换成的目标码的大小变得比较小。然而,传统的动态目标码转换方法有一个问题,即全部目标,包括很少使用的目标,都被转换。换句话说,传统的动态目标码转换方法不能够识别出那些被多次执行的目标,从而增加了转换目标码所需时间而牺牲了效率。因此,本专利技术的一个目的是提供一种目标码翻译器,它解决这项技术中的问题同时提供对翻译成的目标码的动态优化。本专利技术的又一目的是给出主程序的“概要分析(profile)”,直至编译器完成编译为止,该概要分析结果被编译器用于编译和优化该程序。本专利技术的又一目的是在动态优化和编译过程中从未被翻译的代码跳到被翻译后的代码。本专利技术的又一目的是提供一种带有软件反馈的动态优化目标码翻译器,它计算发送给编译器的翻译请求数与已完成的翻译数之差。本专利技术的又一目的是提供从一种机器语言的计算机程序到另一种计算机语言的动态翻译而该程序同时在运行过程中。再有,本专利技术的一个目的是提供一种动态目标码翻译器,它从对应于源目标码中多个分支的多个种子中确定要翻译的段。本专利技术的这些目的是由一个计算机结构仿真系统实现的,它在一个目的计算机上仿真一个源计算机,该系统包括一个解释器用于把源目标码单个地翻译成相应的翻译后的目标码,并计算源目标码中分支指令的执行次数;还包括一个编译器,用于当相应的分支指令执行次数超过一阈值时把源目标码指令组合成段,并用于动态编译该段。本专利技术的这些目的还由一个计算机结构仿真系统实现,它在一个目的计算机上仿真一个源计算机,该系统包括多个解释器用于把源目标码单个地翻译成相应的翻译后的目标码,这里这多个解释器的每一个都在执行翻译后的目标码指令的同时实时地概要分析源目标码分支信息;还包括一个编译器,用于根据源目标码中相应的分支指令把来自这多个解释器中任何一个的源目标码指令组合成段,并当相应的分支指令大于一阈值时动态编译这些源目标码段。本专利技术的又一些目的由一个计算机结构仿真系统实现,它在一个目的计算机上仿真一个源计算机,该系统包括一个解释器用于把源目标码单个地翻译成相应的翻译后的目标码,这里该解释器通过存储每个分支指令的执行次数来记录源目标码的分支指令,从而使超过阈值的分支指令成为种子;还包括一个编译器用于根据这些种子把源目标码指令组合成段并在由解释器进行翻译和记录的过程中动态编译这些源目标码段。本专利技术的另一些目的由一个多任务计算机结构仿真系统实现,它在一个多任务目的计算机结构上仿真一源计算机结构,该系统包括一个解释器任务用于把源目标码单个地翻译成相应的翻译后的目标码和用于确定源目标码中分支指令的执行次数;还包括一个编译器任务,它在多任务目的计算机结构上与解释器一起运行,用于在相应的分支指令执行次数超过一阈值次数时把源目标码组合成段,并用于动态编译该段。由下文中结合附图对最佳实施例的描述,本专利技术的这些和其他目的和优点将变得更加明显和易于理解。这些图件是附图说明图1是根据本专利技术的一个最佳实施例,一个OOCT系统的高级结构的框图。图2是一个流程图,说明优化目标码翻译的组成部分以及用于编译一段源代码的控制流。图3是一个流程图,说明在正常执行过程中优化目标码翻译的控制流。图4是一示意图,说明用于一组变量的OOCT缓冲器。图5a、5b和5c是说明一翻译表结构的示意图。图6是用于进入和退出一段的解释器方框图。图7是用于创建一段、使该段可被解释器达到、使老的段不可被达到以及删除老段的编译方法方框图。图8是说明BRANCH-RECORD(分支记录)结构的方框图。图9是一示意图,说明一个分支记录的结构,该记录是存储BRANCH-RECORD的大散列表的一部分。图10是一示意图,说明一个L1高速缓存的结构,它是若干BRANCH-RECORD的2维阵列。图11是一示意图,说明由一解释器对L1高速缓存执行操作的方法。图12是一示意图,说明根据本专利技术一个实施例的编译器的总体结构。图13是一示意图,说明根据本专利技术一个实施例的块检出器的举例。图14是一代码轮廓的方框图,该代码轮廓带有两个外部入口点,这里在ENTRY(入口)指令和GOTO(转向)指令之间插入了填充指令。图15是说明一个OASSIGN(赋值)插入举例的方框图。图16是一方框图,说明死代码删除和地址检验删除的举例。图17是地址检验删除举例的方框图。图18是公共子表达式删除(“CSE”)举例的方框图。图19是复制传播举例的方框图。图20具体说明一常数合并的举例。图21具体说明上述过程的举例,它有一个根据本专利技术一实施例的比较基础结构。图22具体说明对于有不同相邻指令的同一指令产生代码的举例。图23说明根据本专利技术第二实施例用于动态优化目标码翻译的系统配置。图24说明根据本专利技术第三实施例用于并发动态翻译的系统配置。图25说明根据本专利技术第三实施例把解释器和编译器组合(例如在执行过程中组合成一个任务)和把它们分开(例如分成不同的任务)二者之间的差别。图26说明根据本专利技术第四实施例的翻译表用于记录哪些指令是可翻译的而哪些指令是不可翻译的。图27说明根据本专利技术第四实施例该方法如何减小仿真器上进行概要分析的负担。图28说明根据本专利技术第五实施例具有单独解释器和编译器的动态翻译系统的总体结构图。图29说明根据本专利技术第五实施例的软件反馈机制的组成部分。图30说明根据本专利技术第六实施例在翻译任务忙时如何使用一队列来保持翻译请求。图31说明根据本专利技术第六实施例如何由OOCT请求队列把便宜的共享存储器请求与系统调用请求组合在一起。图32显示根据本专利技术第七实施例一个动态翻译器如何会容易引起页面错误,而这种错误在源指令的正常执行过程中是不会发生的。图33显示根据本专利技术第七实施例用于从页面错误中恢复和继续进行翻译的算法。图34说明根据本专利技术第八实施例在常有分支概要分析器(profiler)的动态翻译系统中的控制流图象。图35说明根据本专利技术第九实施例该动态翻译器如何使用分支概要分析信息去计算一个基本块的执行概率。现在将详细参考本专利技术的最佳实施例,在附图中说明了它们的举例,这里相似的参考数字始终代表相似的部件。本专利技术第一实施例I.系统概述一般而言,本专利技术涉及一种优化目标码翻译器(下文中称作“OOCT”),它作为一个计算机结构仿真系统的一部分,完本文档来自技高网...

【技术保护点】
在目的计算机结构上仿真源计算机结构的一个计算机结构仿真系统,包括:解释器,用于把源目标码单个地翻译成相应的翻译后目标码并确定在源目标码中分支指令的执行次数;以及编译器,用于当一相应的分支指令执行次数超过一阈值数时把源目标码指令组合成 段并动态地编译该段。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:理查德A勒辛约瑟夫A班克查尔斯D噶勒特和田美加代樱井三男
申请(专利权)人:富士通株式会社
类型:发明
国别省市:JP[日本]

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

1