Skip to content

Portable ISAs versus Virtual Machines

AndyGlew edited this page May 13, 2020 · 1 revision

My term "Portable ISA" is associated with, and can mostly be considered a subset of, a software virtual machine.

Unlike a hardware virtual machine, a software virtual machine is not intended for hardware implementation, but comprises a definition of operations such that a program, written in a portable instruction set, in an appropriate software distribution format, can be implemented on top of actual hardware - typical multiple instances of actual hardware, with different instruction sets, and often on top of multiple operating systems.

Such a software virtual machine provides system services, such as system calls, privilege domains, threads/processes/processors, and (sometimes) exceptions and interrupts and other forms of communication, which are mapped to appropriate libraries and system calls, etc., on the target system.

Software virtual machines are typically implemented by interpretation or compilation (static and/or dynamic/JIT) to the target environment.

The software that is interpreted or translated may be coded in one or more Portable ISAs.

I.e. multiple ISAs, both portable and non-portable, may target the same virtual machine.
Conversely, the same Portable ISA may target multiple software virtual machines. (Just as any given hardware ISA may support multiple operating systems.)

I.e. virtual machine = Portable ISA + System Service Architecture. Distribution formats may be included.

Clone this wiki locally