---
# System prepended metadata

title: Open Hardware Architecture

---

# Open Hardware Architecture

## STORY wasm vs. risc-v
* https://wilkie.how/posts/kernels_without_abstractions_general

we are seeing a world where there are only three major system designs
in use altogether: Windows, iOS, and Linux.

REASON:
* app developers want to write cross platform programs
* => this needs stability per OS/architecture


WAY OUT:
* design a high level system that works cross platform
* => make it work on newer awesome kernels
* => so write thsoe high level systems shimming/anticipating the better kernel
* => thx to meltdown/spectre it's gonna be RISC-V



ROADMAP ASSUMPTION:

WASM:
* JIT abstract resource independent machine

RISC:
* Newest/Best meltdown/spectre free minimal process architecture

Having "WASM", hardware can start competing
=> linux/macOS/windows get's replaced by WASM
Enough convergent iterations on cpu architecture to support wasm
=> until WASM ISA or X ISA with wasm X machine to emulate X on other architectures
==> wins and we can maybe move on.

WASM for now tries to cover all needs by all languages and software
=> without fixing oneself to a hardware, but explicitly not fixing oneself to one

WASM allows to "share code" between libraries
=> have a host system compose wasm blobs
=> wasm is a machine
==> so wasm machines can be paused and receive inputs
=> whether co-located on same hardware system or not

WASI defines interface of wasm blobs to give it access to host sytem features


developer working on a Mac, Windows, or RHEL workstation or laptop
will be able to compile an application for an edge, IoT, cloud,
or automotive platform, and they will do it using Wasm. Today,
that workflow requires cross-compiling or emulation,
which is inconvenient and/or has lower performance.

WASM GOAL:
safe, fast, portable low-level code on the web


https://medium.com/@losfair/a-comparison-between-webassembly-and-risc-v-e8fb9d37e6cc
https://www.infoworld.com/article/3674124/the-ever-widening-world-of-wasm.html
Architecture Competition:
old:
* Intel (x86)
new:
* intel
* RISC-V
* Apple M1/M2
* AWS Graviton
* Ampere
* Fujitsu
* ...










Memory Architecture:
-> load/store

* floating point
* SIMD
* seperated code + data in wasm
==> but wasm blobs get orchestrated by JS
* pointer 32/64
* max data with 32/64
* RISC-V no typing !!!!
* control flow => arbitrary
machine model: register
* memory layout "paged"
* memory protecion RWX
* load-linked/store-conditional
  * multithreading
  * LL:
    1. read word from memory
    2. stores address in special LL register
    3. LL register is cleared if anything happens that may break atomicity
      * a context switch occurs
      * block containing address in LL register is invalidated
  * SC:
    * tests whether address in LL matches store address
      * store succeeds => store goes to cache/memory
      * failes: store is canceled, 0 is returend

* instruction encoding: fixed length 2/4 bytes
* interaction environment
  * imported functions
  * vs. syscalls


webassembly (cant even access itself)
* simplicity (so JIT compiler doesnt need to detect modification to update machine code)
* linking will be done by HOST and program doesnt need to care about bringing itself up
* security - generating code at runtime is dangerous


RISC-V perf
WebAssembly security



NEUMANN
* input device
- outputdevice
- cpu
  - control unit
  - arithmetic/logic unit
- memory


HARVARD
- code storage
- data storage
- input/output devices
- control unit
- ALU