NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory
-
摘要:
- 背景:
- 脚本语言的性能较差是由于编译器缺少足够的静态信息。为了解决这个问题,JIT编译器被组织成多个级别,更高的级别使用剖视信息来生成高性能的代码。
- 为了检测不正确的假设,会插入一些检查,如果检查出错,执行会过渡到更低的级别。
- 在层级之间潜在的转移点成为 栈映射点(stack map point)。SMP在两个层级之间需要一个一致的状态,导致较高层中SMP之间的代码优化会受到限制
- 问题:论文通过检查最新的javascript编译器生成的代码,发现该代码具有很高的SMP频率(SMP出现的很多),但是很少会引起过渡到底层级执行的发生,但是SMP会限制优化,同时带来由于SMP防护检查而导致的性能损失
- 论文工作:
- 扩展了编译器以围绕SMP生成硬件事务,并执行由事务启用的简单的事务内优化(within-transaction optimizations)
- 论文工作的目标是新兴的轻型HTM系统,论文的工作被成为NoMap
- 结果:在基准测试SunSpider和Kraken上,NoMap的指令数更少,执行时间也更少
- 背景:
-
介绍:
-
许多脚本语言实现中都添加了例如内联缓存(inlining caching),类型专门化(type specialization)和JIT(just-in-time)支持等计数,使得脚本语言的性能逐渐被不同领域所接受。但是性能相对于类似于C语言的语言,仍旧很低(图中的Python, PHT,Ruby的JIT实现比其参考解释器实现的快了5.7,2.3,1.9倍)
-
脚本语言滞后的主要原因是它们的动态特性(dynamic nature),程序员不需要声明类型,编译去需要在运行时发现对象的类型和结构,从
-