Skip to content

A bare metal physical implementation of WebAssembly. That's right, a WebAssembly CPU.

License

Notifications You must be signed in to change notification settings

lastmjs/wasm-metal

Repository files navigation

WASM Metal

A bare metal physical implementation of WebAssembly. That's right, a WebAssembly CPU. Inspired in part by this amazing talk.

GUI Microarchitecture Simulator

View the live demo.

git clone https://github.com/lastmjs/wasm-metal.git
cd wasm-metal
npm install
npm start

Go to http:https://localhost:5000 in your web browser.

RTL Microarchitecture Simulator

Not implemented yet.

Loading Microarchitecture Implementation to FPGA

Not implemented yet.

Roadmap

  • Understand the WebAssembly ISA
  • Implement the mircoarchitecture in HTML/CSS/JavaScript
    • This will be a GUI simulator of the microarchitecture
    • This simulator will become the specification for the microarchitecture
    • It will allow us to quickly experiment with hardware configurations
    • It will allow us to iterate and learn how the microarchitecture should work
  • Implement the microarchitecture as an RTL design in an HDL
  • Simulate the RTL design
  • Test the implementation on an FPGA
  • Design the ASIC

Why is this a good idea?

  • Maybe it's not, but who cares
  • The world is moving to WebAssembly
  • Some of the biggest and potentially most world-changing projects are implementing their virtual machines as WebAssembly virtual machines (DFINITY, Ethereum)
  • The bytecode is being designed as a compilation target for low-level languages first
  • The bytecode is meant to execute at near-native speeds on a variety of underlying ISAs
  • Java processors already offer potential benefits, even being compilation targets for a high-level language
  • Cutting out the translation from WebAssembly to the underlying ISAs could provide efficiency benefits
  • We could get rid of WebAssembly virtual machines entirely, and replace them with WebAssembly physical machines
  • If all SIM cards are Java processors, imagine what WebAssembly processors could do. I'm betting that WebAssembly is a better bytecode than Java bytecode for what Java bytecode is doing with microcontrollers, so WebAssembly could take over all spaces that Java processors currently have

Prior art

About

A bare metal physical implementation of WebAssembly. That's right, a WebAssembly CPU.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages