RISC-VSIG即将发布openEulerRISC-V22.03V2版本镜像。本次发布将提供最新版支持SpiderMonkeyJIT编译的Firefox和最新版带LLVMpipe优化的Mesa供用户选择和测试。预计图形界面的性能将得到显着优化。新版Firefox开启JIT后,经过Kraken基准测试,JavaScript程序的运行速度比解释执行速度提升了40倍,是目前“RISC-V领域最快的Firefox”.FirefoxRISC-V启用SpiderMonkeyJIT优化MozillaFirefox在自由软件领域是一个非常重要的存在。在过去的一年里,RISC-VSIG已经成功适配Firefox到openEulerRISC-V。在目前主要的RISC-V开发版本和测试环境中,Firefox可以顺利打开图形界面、完成网页浏览、验证登录、收发邮件、播放视频等基本功能,满足用户的基本需求。但是,旧版本的Firefox在使用Javascript脚本的网站上运行速度非常慢。这是由于SpiderMonkey中的Javascript引擎是解释的。在Firefox中,SpiderMonkey主要依靠JIT编译器来加快Javasrcipt代码的执行速度。缺乏JIT的Firefox和Chrome浏览器在Javascript执行性能上还是有数量级的差距。为推动FirefoxRISC-V的发展,软件院PLCT实验室将于2022年下半年启动SipderMonkey在RISC-V架构上的JIT移植,目前补丁已提交至Mozilla社区.SpiderMonkeyJIT移植工作如下:Step1:RISCV64基础框架搭建和初始化移植工作,直接拷贝none文件夹下的文件;在macro-assembelr-riscv64.h/cc文件中定义所需的宏汇编器函数;Step2:完成汇编器汇编器的移植完成,Javascript成功编译运行时函数(jsruntimefunction);SpiderMonkey可以执行Helloworld程序;完成disassembler/Simulator(反汇编器和模拟器)的移植,方便在x86机器上调试;将宏汇编器中定义的函数一一实现并通过所有jittests测试([17425|0|0|0]100%===>|240.6s);Step3:提交上游https://bugzilla.mozilla.org/...RISC-VSIG在108.0.1Firefox升级版中提前修复合并了软件院PLCT实验室开发的SpiderMonkey的JIT补丁,并在Qemu、Visionfive1和UnmatchedKraken等设备上进行了基准测试工作:经测试,开启JIT后,JavaScript程序的运行速度比解释执行速度提升了近40倍,其中图像渲染模块的改进最为显着,高斯模糊算法的执行速度提升了170%到270%。之间。与其他发行版相比,openEulerRISC-V率先拥有RISC-V领域最快的Firefox。目前实现的JIT补丁基本包含了所有相关功能,启用JIT的Firefox在openEulerRISC-V上运行流畅。同时,RISC-VSIG将继续跟进PLCTLab在实现wasm的memory64特性和SpiderMonkey是否需要支持riscv32方面的工作,并进行性能观察。Mesa引入了LLVMpipeJIT来支持常用的RISC-V开发环境QEMU,而市面上各种开发板很少有图形设备或能力,往往需要依赖LLVMpipe进行软件渲染。没有JIT支持的LLVMpipe性能乏善可陈,在QEMU上的glxgears齿轮测试往往只有5帧/秒。桌面的整体流畅度也受到图形性能的制约,处于比较低的水平。为了解决这一长期存在的性能短板,RISC-VSIG基于LLVMOrcjit引入了全新的LLVMpipeJIT引擎,并支持新升级的22.3.2Mesa版本的RISC-V优化补丁。与每秒5帧的glxgears齿轮测试相比,修补后的LLVMpipe能够输出大约60帧,与测试机的显示大致同步。对于没有GPU的QEMU和开发板硬件,Firefox网页浏览和视频播放更流畅,可见性能明显提升。目前Firefox和MesawithJIT已经进入测试阶段。感兴趣的小伙伴可以在最新的镜像中更新体验。欢迎大家提供测试意见,共同助力完善RISC-V桌面生态体验。openEulerRISC-V22.03V2版本镜像:https://mirror.iscas.ac.cn/op...RISC-VSIG持续推动RISC-V桌面软件环境的完善和优化,如果您看好RISC-V的未来而如果你想贡献自己的力量,这里永远有你的一席之地,赶快加入我们吧!作者简介杨艳玲,中科院软件所PLCT实验室实习生,欧拉开源社区RISC-VSIG成员,目前在温州大学攻读大二研究生院,负责协助RISC-VSIG和ROSSIG的日常运营。
