【技术实现步骤摘要】
【国外来华专利技术】通过线程推测和硬件事务性存储器来降低编译器类型检查成本
[0001]实施例总体上涉及编译器技术。更具体地,实施例涉及通过线程推测和硬件事务性存储器来降低编译器类型检查成本。
技术介绍
[0002]计算机编程语言提供使用变量来检取数据、执行操作、输出数据等等。在以给定的编程语言编写的应用的编译期间,应用中使用的变量的类型可能影响由编译器作出的某些代码优化决策。以动态类型的语言(诸如JAVASCRIPT、PYTHON和RUBY)编写的应用典型地具有仅在运行时已知(例如,并且在编译时未知)的变量类型信息。在编译时缺少变量类型信息可能导致应用相比于以静态类型的语言编写的应用运行得更慢。例如,常规解决方案可能将动态类型的应用编译为被构造成用于在针对整数加法进行优化的代码路径可能更高效时(例如,但整数类型信息在编译时不是已知的)处置字符串、浮点数、双精度数和所有其他变量类型的通用代码路径。
[0003]尽管即时(JIT)编译技术可与类型推断和/或推测相组合来提高执行速度,但仍存在相当大的改善空间。例如,用于实现类型检查代码(例如 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种性能增强的计算系统,包括:网络控制器,用于获得包括动态类型的变量信息的输入代码;处理器,耦合至所述网络控制器;以及存储器,耦合至所述处理器,所述存储器包括一组指令,所述指令当由所述处理器执行时使所述计算系统用于:基于所述输入代码生成第一编译器输出,基于所述输入代码生成第二编译器输出,其中,所述第二编译器输出包括用于验证与所述第一编译器输出相关联的一个或多个类型推断的类型检查代码,以及经由不同的线程并行地执行所述第一编译器输出和所述第二编译器输出。2.如权利要求1所述的计算系统,其中,所述指令当被执行时进一步使得所述计算系统用于经由一个或多个共享存储器对象使所述第一编译器输出与所述第二编译器输出之间的通信同步。3.如权利要求2所述的计算系统,其中,为了使所述通信同步,所述指令当被执行时使所述计算系统用于:经由第一共享存储器对象向所述第一编译器输出中的事务性执行代码通知对所述一个或多个类型推断的验证是否已经通过所述第二编译器输出成功进行;以及经由第二共享存储器对象向所述第一编译器输出中的自旋锁代码通知对所述一个或多个类型推断的验证是否已经通过所述第二编译器输出成功进行。4.如权利要求1所述的计算系统,其中,所述第一编译器输出用于包括:事务性执行代码,所述事务性执行代码用于在对所述一个或多个类型推断的验证失败的情况下中止所述第一编译器输出的一个或多个任务;自旋锁代码,所述自旋锁代码用于将所述第一编译器输出置于等待状态直到对所述一个或多个类型推断的验证被所述第二编译器输出确认;以及存储器存储代码,所述存储器存储代码用于将所述事务性执行代码的一个或多个结果存储到所述存储器。5.如权利要求4所述的计算系统,其中,所述第一编译器输出进一步包括回退代码,所述回退代码用于在对所述一个或多个类型推断的验证失败的情况下将所述计算系统转变为与所述一个或多个类型推断无关的执行状态。6.如权利要求1至5中任一项所述的计算系统,进一步包括第一处理器核和第二处理器核,其中,为了并行地执行所述第一编译器输出和所述第二编译器输出,所述指令当被执行时使得所述计算系统用于:于在所述第一处理器核上运行的第一线程中执行所述第一编译器输出;以及于在所述第二处理器核上运行的第二线程中执行所述第二编译器输出。7.一种半导体设备,包括:一个或多个衬底;以及逻辑,耦合至所述一个或多个衬底,其中,所述逻辑至少部分地实现在可配置逻辑或固定功能硬件逻辑中的一者或多者中,耦合至所述一个或多个衬底的所述逻辑用于:基于包括动态类型的变量信息的输入代码生成第一编译器输出,基于所述输入代码生成第二编译器输出,其中,所述第二编译器输出包括用于验证与所述第一编译器输出相关联的一个或多个类型推断的类型检查代码,以及
经由不同的线程并行地执行所述第一编译器输出和所述第二编译器输出。8.如权利要求7所述半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑用于经由一个或多个共享存储器对象使所述第一编译器输出与所述第二编译器输出之间的通信同步。9.如权利要求8所述的半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑用于:经由第一共享存储器对象向所述第一编译器输出中的事务性执行代码通知对所述一个或多个类型推断的验证是否已经通过所述第二编译器输出成功进行;以及经由第二共享存储器对象向所述第一编译器输出中的自旋锁代码通知对所述一个或多个类型推断的验证是否已经通过所述第二编译器输出成功进行。10.如权利要求7所述的半导体设备,其中,所述第一编译器输出包括:事务性执行代码,所述事务性执行代码用于在对所述一个或多个类型推断的验证失败的情况下中止所述第一编译器输出的一个或多个任务;自旋锁代码,所述自旋锁代码用于将所述第一编译器输出置于等待状态直到对所述一个或多个类型推断的验证被所述第二编译器输出确认;以及存储器存储代码,所述存储器存储代码用于将所述事务性执行代码的一个或多个结果存储到所述存储器。11.如权利要求10所述的半导体设备,其中,所述第一编译器输出进一步包括回退代码,所述回退代码用于在对所述一个或多个类型推断的验证失败的情况下将所述计算系统转变为与所述一个或多个类型推断无关的执行状态。12.如权利要求7至11中任一项所述的半导体设备,其中,耦合至所述一个或多个衬底的所述逻辑用于:于在第一处理器核上...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。