openEuler RISC-V 的 Firefox 性能大升级,最高 40 倍性能提升

news2024/10/6 22:34:06

RISC-V SIG 择日即将发布 openEuler RISC-V 22.03 V2 版本镜像。本次发版会提供带有 SpiderMonkey JIT 编译支持的 Firefox 最新版本和带有 LLVMpipe 优化的 Mesa 最新版本安装源供使用者选装测试,预期图形界面使用性能会获得可观优化。

新版本的 Firefox 开启 JIT 后,经过 Kraken benchmark 测试,JavaScript 程序的运行速度提升最高达到解释执行的 40 倍,是目前 “ RISC-V 领域最快的 Firefox ”。

Firefox RISC-V 开启 SpiderMonkey JIT 优化​

Mozilla Firefox 是自由软件领域非常重要的存在。在过去一年,RISC-V SIG 成功将 Firefox 适配在 openEuler RISC-V 上,在目前主要的 RISC-V 开发版和测试环境中,Firefox 可以成功打开图形界面,并且能完成网页浏览,验证登录,收发邮件,播放视频等基础功能,满足用户的基本使用需求。

但是旧版本适配的 Firefox 在打开带有 Javascript 脚本的网站上运行速度十分缓慢。这是由于其中的 Javascript 引擎 SpiderMonkey 是解释器执行。在 Firefox 中,SpiderMonkey 主要依靠 JIT 编译器加速 Javasrcipt 代码的执行速度, 缺少 JIT 的 Firefox 与 Chrome 浏览器 在 Javascript 执行性能上相比还存在着一个数量级的差距。

为了推动 Firefox RISC-V 的发展,软件所 PLCT 实验室于 2022 年下半年着手进行了 SipderMonkey 在 RISC-V 架构的 JIT 移植工作。目前,该补丁已经提交给 Mozilla 社区。

SpiderMonkey JIT 移植的工作如下:

  • Step1: RISCV64 基本框架搭建
  • 移植工作初始化,直接复制 none 文件夹下文件;
  • 在 macro-assembelr-riscv64.h/cc 文件中定义需要的 macro-assembler 函数;
  • Step2: 完成汇编器的移植
  • 完成汇编器移植,Javascript 成功编译 runtime function (js 运行时函数);SpiderMonkey 可以执行 Hello world 程序;
  • 完成 disassembler/Simulator (反汇编器和模拟器)的移植,可以方便在 x86 的机器上调试 ;
  • 逐一实现 macro-assembler 中定义的函数并通过全部 jittests 测试 ([17425| 0| 0| 0] 100% ===>| 240.6s) ;
  • Step3:提交至上游
  • 提交至上游 https://bugzilla.mozilla.org/show_bug.cgi?id=1800431

RISC-V SIG 提前将软件所 PLCT 实验室开发的 SpiderMonkey 的 JIT 补丁修复并合并在本次升级的 108.0.1 版本 Firefox 中,并且在 Qemu、Visionfive1 和 Unmatched 等设备上进行了 Kraken benchmark 测试工作:

经过测试,开启 JIT 之后,JavaScript 程序的运行速度提升最高达到解释执行的近 40 倍,其中以图片渲染模块提升最为显著, 高斯模糊算法的执行速率提升在 170%~270%之间。相对于其他发行版,openEuler RISC-V 率先拥有了 RISC-V 领域最快的 Firefox。

目前实现的 JIT 补丁基本包含了全部相关功能,并且开启 JIT 的 Firefox 在 openEuler RISC-V 运行流畅。

与此同时,RISC-V SIG 将持续跟进 PLCT 实验室对于实现 wasm 的 memory64 特性和调研 SpiderMonkey 是否需要支持 riscv32 等相关工作,并且进行性能观测。

Mesa 引入 LLVMpipe JIT 支持​

常用的 RISC-V 开发环境 QEMU 与市面上各种开发板自身很少具备图形设备或能力,经常需要依靠 LLVMpipe 进行软件渲染。缺失 JIT 加持的 LLVMpipe 性能乏善可陈,QEMU 上使用 glxgears 齿轮测试经常只有每秒 5 帧。桌面的整体流畅度也受图形性能掣肘停留在一个比较低的水准。

为解决这个长期的性能短板,RISC-V SIG 为新升级的 22.3.2 版本 Mesa 引入了软件所基于 LLVM Orcjit 为 LLVMpipe 添加新的 JIT 引擎并支持 RISC-V 的优化补丁。

与每秒 5 帧的 glxgears 齿轮测试对比,添加补丁的 LLVMpipe 能够输出大致与测试机显示器同步的 60 帧左右。对于 QEMU 和没有 GPU 的开发板硬件,Firefox 网页浏览和视频播放更加流畅,可见性能得到明显改善。

目前带有 JIT 的 Firefox 和 Mesa 已经进入测试阶段,感兴趣的伙伴可以在最新的镜像中更新体验,欢迎大家提供测试评论,共同助力提升 RISC-V 桌面生态体验。

  • openEuler RISC-V 22.03 V2 版本镜像:https://mirror.iscas.ac.cn/openeuler-sig-riscv/openEuler-RISC-V/preview/openEuler-22.03-V2-riscv64/

RISC-V SIG 不断推动 RISC-V 桌面软件环境的完善和优化,如果你对 RISC-V 前景看好并且想贡献自己的一份力量,这里总会有你的位置,快点加入我们吧!

关于作者​

杨延玲,中科院软件所 PLCT 实验室实习生,欧拉开源社区 RISC-V SIG 成员,目前在温州大学读研二,负责协助 RISC-V SIG 和 ROS SIG 的日常运营。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.3、UDP 和 TCP 的对比

在使用 TCP/IP 体系结构的网络通信中,这两个协议的使用频率仅次于网际层的 IP 协议 TCP/IP 体系结构应用层中的某些协议需要使用运输层的 TCP 提供的服务 而另一些协议需要使用运输层的 UDP 提供的服务 1、UCP(无连接) & TCP(面向连接) 1.1、UDP 如下所示&am…

小程序:会议OA项目-其它页面

目录 一、tabs组件及会议管理布局 自定义tabs组件 跟着官网来感受一下 会议管理的布局 二、个人中心布局 一、tabs组件及会议管理布局 自定义tabs组件 文档参考:自定义组件 | 微信开放文档 跟着官网来感受一下 先建一个文件夹名为components,里面再建一个tabs的…

【C语言进阶(NEW)】六、文件操作(一)|文件|文件的打开和关闭|文件的顺序读写|文件读取结束的判定

目录 一、文件 1.1 什么是文件 1.1.1 程序文件 1.1.2 数据文件 1.2 为什么使用文件 1.3 文件名 二、文件的打开和关闭 2.1 文件指针 2.2 文件的打开和关闭 三、文件的顺序读写 3.1 fgetc 和 fputc(字符输入输出函数) 3.2 fgets 和 fputs&am…

20行原生JS代码手写ElementUI表格组件

又是许久没有写博客了,这几年的疫情,总是居家,时间久了,慢慢的总会想很多。现在越发觉得想做的事情一定要尽早去做,不然总说等下一次,很多时候,就没有下一次了。 今天给大家分享一下如何用原生…

从0到1完成一个Vue后台管理项目(十七、使用Echarts:柱状图、折线图)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

DB性能跟不上,加缓存就够了?

服务端软件开发时,通常会把数据存储在DB。而服务端系统遇到的第一个性能瓶颈,往往发生在访问DB时。 这时大部分开发会拿出“缓存”,通过使用Redis在DB前提供一层缓存数据,缓解DB压力,提升服务端性能。 在数据库前添加…

nohup后台运行,进程查看与终止(ubuntu)

1.nohup用途:不挂断地运行命令。语法:nohup Command [ Arg … ] [ & ]无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohu…

threejs 学习一

前提 threejs官网:https://threejs.org/ 由于官网访问慢,可以github下载压缩包解压后本地启动 github地址:https://github.com/mrdoob/three.js/ 下载好后解压 安装依赖 npm install 启动:npm start 目录介绍: …

语音识别技术简叙述

语音识别技术简述 语音识别的概念 语音识别技术都是让智能设备能够听懂人类语言,其实一门涉及数学信号处理、人工智能、语言学、数理统计学、声学、情感学及心理学等多学科交叉的学科。这项技术可以提供比如自动客服、自动语音翻译、命令控制,语音验证…

【vue】关于vue2和vue3响应式原理的区别

我们都知道,在Vue2中的数据响应式原理存在许多缺陷。 例如无法对新增和直接删除的数据做到响应式,无法直接操作数组进行响应式处理等等。 而在Vue3中,作者很好的解决了这些缺陷,让我们来对比一下Vue2与Vue3对数据响应式处理的具体…

前端如何保证设置的font-family成功生效?

背景 最近开发的一个新页面,在产品验收的时候跟我反馈说页面里的字体跟设计稿中的字体不一样; 问题的关键是我明明记得我有单独设置过 font-family属性,于是我通过Chorme浏览器的调试工具查看了一下DOM的生效样式; 明明是已经设…

IDEA、TortoiseSVN,TortoiseGit提交忽略文件或文件夹

使用IDEA 的SVN插件提交文件是总是会提交一些不需要提交的文件; 我们可以通过一些简单设置忽略这些文件&#xff1a; 1、IDEA 1、idea设置<<--File Types<<--ignore files and folders 原有的过滤条件&#xff1a;*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store…

yolov3-tiny的darknet权重转onnx

前言 之前一直鸽了yolov3-tiny的onnx模型修复&#xff0c;今天终于把最后一个bug解决了&#xff0c;如果想直接享受成果的&#xff0c;直接点我的github仓库下载&#xff0c;使用说明都写了&#xff0c;这篇文章呢主要是给大家分享一下思路和过程&#xff0c;希望能够启发更多…

初识Linux

文章目录初识Linux操作系统概述硬件和软件操作系统常见操作系统总结初识LinuxLinux的诞生Linux内核Linux发行版总结虚拟机介绍虚拟机总结远程连接Linux系统图形化、命令行使用命令行学习Linux系统远程连接工具总结初识Linux 操作系统概述 硬件和软件 我们所熟知的计算机是由…

领域驱动设计:微服务设计为什么要选择DDD?

我们知道&#xff0c;微服务设计过程中往往会面临边界如何划定的问题&#xff0c;我经常看到项目团队为微服务到底应该拆多小而争得面红耳赤。不同的人会根据自己对微服务的理解而拆分出不同的微服务&#xff0c;于是大家各执一词&#xff0c;谁也说服不了谁&#xff0c;都觉得…

Day855.生产者-消费者模式 -Java 并发编程实战

生产者-消费者模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于生产者-消费者模式的内容。 Worker Thread 模式类比的是工厂里车间工人的工作模式。 但其实在现实世界&#xff0c;工厂里还有一种流水线的工作模式&#xff0c;类比到编程领域&#xff0c;就是生…

RoboMaster EP 实用功能开发(三): 基于树莓派的ROS2机器人系统搭建

功能&#xff1a;在树莓派4b上安装ros2系统&#xff0c;引入robomaster sdk&#xff0c;搭建一个基于ROS2的机器人系统&#xff0c;用于ROS系统的学习、开发和实践。 硬件&#xff1a;RobotMaster EP、树莓派4b 系统平台&#xff1a;Ubuntu 20.04、ROS2&#xff08;Foxy&…

Selenium【Selenium环境搭建与Junit5】

Selenium【Selenium环境搭建与Junit5】&#x1f34e;一. 自行下载谷歌浏览器或者火狐浏览器&#x1f352;1.1 安装好之后需要去掉谷歌(火狐)浏览器自动更新(建议)&#x1f352;1.2下载谷歌(火狐)驱动&#x1f34e;二.Selenium下载与配置&#x1f352;2.1Selenium下载&#x1f3…

服务案例|SQL Server数据库监控反复重启问题

监控平台对主流数据库的监控&#xff0c;能够及时发现异常&#xff0c;快速响应&#xff0c;保障业务系统的稳定。平台通过对SQL Server数据库监控&#xff0c;帮助用户在数据库出现异常时事件处理。 SQL Server数据库监控内容如下 1 、数据库服务器基本性能监控。包括&#…

Hive/MaxCompute SQL性能优化(三):数据倾斜优化实战

SQL性能优化系列&#xff1a;Hive/MaxCompute SQL性能优化(一)&#xff1a;什么是数据倾斜Hive/MaxCompute SQL性能优化(二)&#xff1a;如何定位数据倾斜前面介绍了如何定位数据倾斜&#xff0c;本文介绍如果遇到各种数据倾斜的情况该怎样优化代码。Map长尾优化一、Map读取数据…