NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1382字,纯文字阅读大概需要2分钟。
内容图文
![NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory](/upload/InfoBanner/zyjiaocheng/643/8c6d399d8321489f9a15f4a18fb4429e.jpg)
- 概念
- JIT compilers 即时编译器,JIT讲解 编译器与解释器的区别和工作原理
- Stack Map Points (SMPs).这些潜在的跨层传输点称为堆栈映射点(SMPs)。是指遇到极端情况时,执行从高层转换到低层的转换。这要求转换的时候,高层和低层拥有着相同的状态。这限制了一些优化的发生。
- 观点
- 脚本语言滞后的一个主要原因是它们的动态特性。由于程序员不声明类型,编译器必须在运行时发现对象的类型和结构。这就是为什么高级脚本语言编译器是jit
- 先进的即时编译器的特性:
- 执行广泛的分析以检测常见的情况或程序的“热路径”(频繁执行)行为,以至于它们可以执行代码优化,从而提高常见情况下的性能。
- 它们被组织称多个层。每一层在生成代码的时间和生成代码的质量之间提供了不同的权衡。
- 由更高级的层生成的代码包含对极端情况的检查。这是因为这些层生成的专用代码只能处理常见情况。当代码检测到一个极端情况或“冷路径”时,它会跳转到优化程度较低的层。
- 论文发现的问题
- 由其最先进的层(FTL)生成的代码具有很高的smp频率。
- smp的优化限制效果和smp保护检查的开销导致脚本语言的性能低下。
- 文章的贡献
- 第一:发现了频繁的层间跳转点需要跨层的一致状态,从而限制了优化。
- 我们建议修改以减轻smp的影响,并扩展JavaScript JIT编译器来支持我们的修改
- 我们评估了使用轻量级和重量级TM硬件对NoMap的改进
- 方法
- 用终止指令取代SMPs
- 这样的话就不需要受需要保持跨层之间相同的状态限制优化的影响
- 合并数组边界检查
- 如果循环中的数组是单调访问的,只需要判断最后访问的下标是否溢出,如果溢出,就回滚,然后跨到低层重新执行
- 去掉溢出检查
- 设置一个SOF的标志,用于判断过程中是否出现了溢出。
- 评估
- 指令数的减少
- 执行时间的减少
内容总结
以上是互联网集市为您收集整理的NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory全部内容,希望文章能够帮你解决NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。