• Stars
    star
    358
  • Rank 118,855 (Top 3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

ANNOUNCEMENT June 17, 2021: As you may have noticed, this project has not been worked on for a while. That would be a correct assessment. There has been no progress for a number of reasons, mostly due to the authors having other priorities. That doesn't mean the idea has died or was tried and failed. The project may be revived at some point in the future.

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://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

More Repositories

1

zwitterion

A web dev server that lets you import anything*
TypeScript
557
star
2

enable-cryptocurrency-in-funding-yml

Star this repo and send an email to [email protected] if you'd like to see cryptocurrencies added as official options to the FUNDING.yml file for GitHub Sponsors
210
star
3

redux-store-element

A custom element allowing a more declarative use of Redux.
JavaScript
83
star
4

azle

TypeScript/JavaScript CDK for the Internet Computer
TypeScript
33
star
5

eth-total-supply

Information and some implementation for calculating the total supply of ETH
TypeScript
29
star
6

functional-element

Functional custom elements
JavaScript
28
star
7

sustainus

Automatically donate to your dependencies to help sustain us
TypeScript
13
star
8

extendable-token-typescript

TypeScript
11
star
9

graphql-icp

JavaScript
11
star
10

oc-governance-bot

Rust
10
star
11

es-no-build

Frictionless TypeScript/ES6/ES2015 and beyond.
TypeScript
7
star
12

security-audit

Web application security audit to be performed once per quarter.
5
star
13

javascript-practice

TypeScript
5
star
14

ethereum-archival-canister

TypeScript
4
star
15

proof-of-rank

TypeScript
4
star
16

data-bound

Standalone data binding for web components
JavaScript
4
star
17

simple-sns

Rust
3
star
18

zwitterion-example

An example application built with the help of Zwitterion.
HTML
3
star
19

guesswork

Framework for property-based testing in JavaScript, TypeScript, JSX, and TSX.
TypeScript
3
star
20

demergent-labs

3
star
21

podcrypt

TypeScript
3
star
22

reduxular

TypeScript
3
star
23

web-developer-training

Master the first principles of modern web application development, concept by concept.
3
star
24

ethereum-canister

2
star
25

intellectual-property-tokens

2
star
26

boa-azle

Rust
2
star
27

web-components-example

HTML
1
star
28

software-issues

1
star
29

base-jumpers-anonymous

JavaScript
1
star
30

quantum-cryptocurrency

1
star
31

general-application-architecture

Thoughts on a well-architected software application
1
star
32

demergence

A decentralized content platform exploring the emergent properties of decentralized networks.
TypeScript
1
star
33

mwaa-lesson-1

Modern Web Application Architectures Lesson 1 - No tools, no frameworks, no libraries
HTML
1
star
34

assess-elements

TypeScript
1
star
35

ic-http-server

Rust
1
star