The Merlin Engine - full speed ahead
Although the blog has been extremely quiet, we have been really busy at work. As mentioned in our last post, we were going to release the original Merlin Engine source code. However, as we had a requirement for a new Virtual Machine (VM) for another project, we took the key design learnings from Merlin and built a completely new VM, designed from the ground up to support processors with limited RAM and the emerging many-core processors such as the XMOS XCORE and the Adapteva Epiphany. These many-core processors have as little as 32KB of RAM for programs and data, meaning that the VM Instruction Set Architecture (ISA) and memory-map must be as compact as possible.
Once our tests are complete, it will be released on GitLab under the MIT Open Source license and will be free to use and modify for any application, whether personal, academic or commercial.
The Merlin Engine has benefited from our research and work on the Osiris VM over the last couple of years but the design has also been strongly influenced by the need to provide support for parallel many-core programming languages such as ePython. It has also been designed to be easily tailored - many-core processors, such as the 1024 core Epiphany V, require new programming paradigms, where different VMs could be deployed to run applications at scale e.g. some cores may run an integer only VM, some may run VMs that only perform I/O operations on behalf of the other core VMs.
Although the Merlin Engine is designed to support high-level programming languages, the bytecode instruction set is supported by an assembler for the development of new opcodes and for regression testing. For the brave, it could also be used for developing applications / libraries...
The Merlin Engine supports, and has been tested on, the following processors:
- x86 (16/32 & 64bit) - gcc, clang / LLVM, Watcom C, Borland C++
- ARM7TDMI (32bit), ARMv6Z (32bit), ARMv7-A (32bit), ARMv8-A (32/64bit) - gcc
- SPARC v9 (64bit) - gcc
- MIPS (32bit) - gcc
- Adapteva Epiphany III (32bit) - gcc / e-gcc
- NXP 68K/Coldfire (32bit) - CodeWarrior
- Zilog Z80 (8bit) - sdcc
Octane is currently focussing on Merlin Engine development and its integration with Osiris, with planned updates including:
- Vectored interrupt support
- Parallel collective operations - similar to those in ePython, MPI and MapReduce
We would like to thank Steven James at Perfect Consulting for his continued collaboration on the design and implementation of Osiris and the Merlin Engine.