/V8-RVV

RISC-V Vector Support in V8

Primary LanguageC++

V8-RVV

RISC-V Vector Support in V8

本仓库用于OSPP 2023年度 V8 RVV项目的公开Repo,后续工作将在此repo展开

Chrome V8是用于Chrome浏览器中JavaScript和WebAssembly编译的开源引擎,是目前最先进的浏览器引擎之一。V8使用了即时编译(JIT)技术,包含了一个基线编译器和一个优化编译器,使得它在快速启动的同时,可以在后台优化代码质量。同时,V8后端支持多种指令集架构,包括x86, ARM, RISC-V等等。我们日常在Chrome浏览器中访问各类网站,比如Gmail, YouTube或者Twitter,只要需要JavaScript代码的地方,就会用到V8。此外,Node.js也是基于V8引擎开发的。V8的应用非常广泛,在Chrome浏览器中是不可缺少的一个引擎。 关于V8的更多信息,可参考https://v8.dev/ V8的源代码: https://github.com/v8/v8

RISC-V是一个全开源、模块化的精简指令集,由加州大学伯克利分校的并行计算实验室在2010年开发。关于RISC-V的更多信息,可参考https://riscv.org/about/ 。相比其他指令集架构来说,RISC-V更适合开源社区,其开源特性也有利于它更广泛地传播。此外,RISC-V的模块化特性使得它非常轻量灵活,可以通过各种指令集扩展的组合应用到各种不同的场景中,而向量扩展就是其中一个非常重要的模块。RISC-V向量指令集(RVV)提供可变长的向量宽度,可以用来实现向量处理器并加速并行计算。RVV在2021年有了1.0版本的spec,目前的应用越来越广泛,已经有一些paper基于RVV实现了定制化的向量处理器,并有着不同的应用场景。更多关于RVV指令的细节,

RISC-V Specification:https://github.com/riscv/riscv-v-spec

V8引擎目前尚没有支持自动向量化,仅通过引入WebAssembly的SIMD intrinsics来编译到处理器上的向量指令,只实现了到128bit。但与此同时,RISC-V向量指令扩展可以支持的向量宽度可以超过1K,因此目前的V8无法很好地利用基于RISC-V向量扩展的向量处理器。本项目从这一点出发,希望针对RISC-V向量指令进行V8引擎的优化,在其上支持自动向量化从而提高其并行度。在完成项目之后,我们的代码会被merge到V8的官方repo,为开源社区做出切实的贡献。

此外,在完成项目的过程中,除了积累工程经验,学生对编译器和RISC-V处理器设计的理解都会更加深入。在编译器领域,学生将会进一步理解比如即时编译和自动向量化之类的前沿技术;在处理器领域,学生将对RISC-V向量指令集如何加速并行计算有更切实的了解。