zoukankan      html  css  js  c++  java
  • NoMap: Speeding-Up JavaScript Using Hardware Transactional Memory

    1. 概念
      1. JIT compilers  即时编译器,JIT讲解  编译器与解释器的区别和工作原理
      2. Stack Map Points (SMPs).这些潜在的跨层传输点称为堆栈映射点(SMPs)。是指遇到极端情况时,执行从高层转换到低层的转换。这要求转换的时候,高层和低层拥有着相同的状态。这限制了一些优化的发生。

    2. 观点
      1. 脚本语言滞后的一个主要原因是它们的动态特性。由于程序员不声明类型,编译器必须在运行时发现对象的类型和结构。这就是为什么高级脚本语言编译器是jit
      2. 先进的即时编译器的特性:
        1. 执行广泛的分析以检测常见的情况或程序的“热路径”(频繁执行)行为,以至于它们可以执行代码优化,从而提高常见情况下的性能。
        2. 它们被组织称多个层。每一层在生成代码的时间和生成代码的质量之间提供了不同的权衡。
        3. 由更高级的层生成的代码包含对极端情况的检查。这是因为这些层生成的专用代码只能处理常见情况。当代码检测到一个极端情况或“冷路径”时,它会跳转到优化程度较低的层。
    3. 论文发现的问题
      1. 由其最先进的层(FTL)生成的代码具有很高的smp频率。
      2. smp的优化限制效果和smp保护检查的开销导致脚本语言的性能低下。
    4. 文章的贡献
      1. 第一:发现了频繁的层间跳转点需要跨层的一致状态,从而限制了优化。
      2. 我们建议修改以减轻smp的影响,并扩展JavaScript JIT编译器来支持我们的修改
      3. 我们评估了使用轻量级和重量级TM硬件对NoMap的改进
    5. 方法
      1. 用终止指令取代SMPs
        1. 这样的话就不需要受需要保持跨层之间相同的状态限制优化的影响
      2. 合并数组边界检查
        1. 如果循环中的数组是单调访问的,只需要判断最后访问的下标是否溢出,如果溢出,就回滚,然后跨到低层重新执行
      3. 去掉溢出检查
        1. 设置一个SOF的标志,用于判断过程中是否出现了溢出。
    6. 评估
      1. 指令数的减少
      2. 执行时间的减少
  • 相关阅读:
    hiho47 : 拓扑排序·一
    Excel 曝Power Query安全漏洞
    分布式系统技术:存储之数据库
    队列应用
    20155239《Java程序设计》实验一(Java开发环境的熟悉)实验报告
    打印Java main方法执行的命令参数代码
    nothing to commit, working tree clean Remote "origin" does not support the LFS locking API. Consider disabling it with:
    异步
    字节跳动杨震原:A/B测试不是万能的,但不会一定不行
    集成显卡 独显
  • 原文地址:https://www.cnblogs.com/cyj1258/p/12343334.html
Copyright © 2011-2022 走看看