WebAssembly 与 RISC-V 都是近十年内新出现的指令集架构。摘录一段 WebAssembly 官方网站的介绍:
WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.
WebAssembly (简写为 Wasm)是一种栈虚拟机的二进制指令格式。Wasm 被设计为 C/C++/Rust 等高级语言的可移植编译目标,从而允许客户端和服务器应用程序部署在 Web 上。
和 RISC-V 的官方介绍:
RISC-V is a free and open ISA enabling a new era of processor innovation through open standard collaboration. Born in academia and research, RISC-V ISA delivers a new level of free, extensible software and hardware freedom on architecture, paving the way for the next 50 years of computing design and innovation.
RISC-V 是一种自由、开放的指令集架构,通过开放标准协作使新的处理器创新成为可能。RISC-V 来自学术研究,提供了更加自由、可扩展的软硬件架构,为未来 50 年的计算技术设计与创新铺平道路。
这两种指令集架构看起来很不一样。WebAssembly 的目标平台主要是 JIT 编译器(以及浏览器);而 RISC-V 则专为硬件设计,其目标之一即是在 FPGA 和电路上的高效实现。WebAssembly 与 RISC-V 的关系似乎类似于早期的 Java 与 x86:一种字节码格式,和一个硬件指令集。它们有什么关系呢?
其实字节码格式与硬件指令集的分界线并不是非常清晰。例如在 x86 指令集的早期实现中,指令经过一层解码直接被分发到执行电路去执行。但近年的 Intel/AMD CPU 采用了不同的执行策略:每条 x86 指令首先被翻译为某种内部 RISC 指令,执行组件收到的指令其实已经是翻译后的 RISC 编码格式。这实际上相当于从 x86 到内部 RISC 指令集的某种“硬件实时编译”过程。同时,Java 与 WebAssembly 也有实验性的硬件实现,虽然它们还不能赶上 JIT 编译器在现代 CPU 上所能达到的效率。
我们已经可以看到 RISC-V 指令集被用于区块链的智能合约,而 WebAssembly 此前几乎是原生语言智能合约的唯一选择。
在这里我们对 WebAssembly 与 RISC-V 做一个比较。
WebAssembly 与 RISC-V 都是近十年内新出现的指令集架构。摘录一段 WebAssembly 官方网站的介绍:WebAssembly (abbreviatedWasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable targe...