由HHVM开始了解的编译器技术

由于本学期学了一门编译器技术,期中需要做一个顶会论文的报告工作,于是着实恶补了一通编译器的知识,在此分享。

我选择的论文是PLDI2018的HHVM JIT: A Profile-Guided, Region-Based Compiler for PHP and Hack.这是Facebook开发的PHP虚拟机。本着JIT(运行时)编译的原则,HHVM首先把PHP或者Hack代码转成HHBC bytecode(字节码),也称为IR;接下来,HHVM把HHBC字节码动态翻译成x86-64机器码,与此同时,会对字节码进行动态的分析,进行相应的优化,并且执行机器码。这一点与C#的CLR和Java的JVM很像。

首先我想不明白两个问题:(1)Profile是什么东西?(2)Region是什么?

经过一番查资料之后,我发现Profile就是runtime information,顾名思义,是一种运行时产生的信息,揭示了程序的哪一个部分被执行地更频繁。执行引擎自动在开始的时候生成收集profile的代码,然后在testing run的过程中自动收集profile,最后自动利用profile来做优化。不过,整体的优化性能非常依赖喂给testing run的输入数据的代表性。这比较好理解,就像机器学习中用来学习的数据也要有代表性一样。不然generalization就会非常的差。用profile进行优化的技术叫做PGO(profile-guided optimization)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值