[发明专利]基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法在审
申请号: | 201810279057.8 | 申请日: | 2018-03-30 |
公开(公告)号: | CN108509202A | 公开(公告)日: | 2018-09-07 |
发明(设计)人: | 孙科;张铎;何明武;唐晓东;魏立峰;孔金珠;吴庆波 | 申请(专利权)人: | 天津麒麟信息技术有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 天津诺德知识产权代理事务所(特殊普通合伙) 12213 | 代理人: | 栾志超 |
地址: | 300457 天津市滨海新区*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 整数乘法 优化 引擎 火狐浏览器 代码生成 操作数 读取 代码生成过程 乘法操作 乘法指令 等效指令 数据分析 指令周期 浮点 推断 编译 替换 降级 | ||
本发明提供基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法,依次包括如下步骤:S110:开始优化JIT编译过程;S120:MIR生成;S130:执行优化趟;S140:MIR降级;S150:代码生成,包括:a.整数乘法代码生成;b.读取LMulI对象中右操作数,根据右操作数的类型执行对应的操作;S160:结束。本发明的有益效果是根据JS引擎收集的类型数据做类型推断和数据分析,在优化JIT代码生成过程中将之前的浮点乘法指令替换为其它等效指令,实现一个指令周期内完成乘法操作,从而达到优化整数乘法效率的目的。
技术领域
本发明属于通讯技术领域,尤其是涉及一种基于飞腾平台火狐浏览器JIT引擎的整数乘法优化方法。
背景技术
伴随着互联网的快速发展,浏览器成为了桌面终端用户主要的互联网入口。现在的网站内容越来越丰富,功能也越来越复杂,为了快速渲染页面提升用户体验,大部分的动态页面渲染和数据处理工作会在浏览器端进行。这对浏览器的性能,尤其是JS引擎的性能提出了更高的要求。
早期的JS引擎都是基于解释器实现,解释器具有代码加载执行延时短的优点,但是对于反复执行的代码每次需要重新解释,导致了运行效率的降低。为了提升JS引擎执行性能,浏览器厂商开发出了适用于JS等动态语言的JIT优化技术。
JIT:即时编译(Just-in-time compilation),动态编译的一种形式,是一种提高程序运行效率的方法。在火狐浏览器中,有两个JIT编译器:基线JIT编译器和优化JIT编译器。
Bailout:也叫“去优化”(Deoptimize),在高优化层级JIT做了很激进的优化(例如假设某个类不会有别的子类、某个引用一定不是null、某个引用所指向的对象一定是某个具体类型,等),而这个激进的假设假如失效了的话,就必须退回到没有做这些优化的“安全”的低优化层级JIT去继续执行。
JIT编译器根据解释器记录的代码运行信息,将热点代码通过编译优化手段编译成本地机器代码,下一次运行到相应代码时直接执行对应的JIT代码,从而可以大幅提升JS引擎性能。目前火狐浏览器内部有两个JIT编译器:基线编译器和优化编译器。基线编译器会将“热点“代码编译成本地机器代码,但是不会对代码结构做优化;基线编译器中执行过很多次”非常热“的代码会被送入优化JIT编译器,而优化JIT编译器内部会调用多种优化手段(常量折叠、死代码删除等),调整代码结构以生成最高效的本地机器代码。
目前火狐浏览器在飞腾平台不支持优化JIT功能,因为缺少针对飞腾平台的优化JIT代码生成后端。而基线JIT优化程度不足,导致JS引擎处理复杂网页时效率太低,从而引起页面响应迟缓。特别是JS代码在解释器和基线JIT编译器的乘法运算都需要先判断操作数的类型,然后再将操作数转换为浮点数,再通过浮点乘法指令计算结果。浮点乘法指令在飞腾平台需要五个时钟周期,而其它算数指令大都能在一个时钟周期的执行完成,尤其是在循环执行时性能问题更加突出。
现有基于火狐开发的浏览器技术中,没有一种能解决飞腾上火狐浏览器的JS引擎整数乘法的性能问题。当前基线JIT编译器中的乘法操作是通过浮点乘法指令完成,需要多个时钟周期,效率低下。
中国发明专利“简档导向的JIT代码生成”(申请号201210330925.3),该发明提出了一种简档导向的JIT代码生成方法,其具体实现是:首先,接收以动态语言编码的源代码经解析转换为字节码;然后,解释器来解释字节码,生成关于字节码的简档信息,存储简档信息;最后,当JIT编译器被配置成执行控制器时,JIT编译器基于简档信息执行编译字节码的功能。该方法通过生成简档信息提高了代码生成的效率,但是并没有基于特定类型的字节码做针对性的代码生成优化。
发明内容
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津麒麟信息技术有限公司,未经天津麒麟信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810279057.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种代码生成方法和装置
- 下一篇:软件跨云部署方法、计算机设备及存储介质