Spartan universal computer-constructor
Spartan universal computer-constructor is an implementation of a universal computer in Conway's Game of Life that was designed and built in 2009 by Adam P. Goucher.
Spartan universal computer-constructor | |||||||||
View static image | |||||||||
Pattern type | Miscellaneous | ||||||||
---|---|---|---|---|---|---|---|---|---|
Number of cells | 481672 | ||||||||
Bounding box | 84625×72374 | ||||||||
Discovered by | Adam P. Goucher | ||||||||
Year of discovery | 2009 | ||||||||
| |||||||||
|
Architecture
The computer contains 11 sliding block memory registers capable of storing any positive integer (including zero). Three of these are directly used by the microcode; the other eight are freely accessible to the program.
In addition to this, eight gates (simple, two-state switches) are provided for fast boolean storage.
Finally, the computer has three tapes (program tape, data tape and marker tape). The program tape consists of eater 1s and is read-only, whereas the other two tapes consist of blocks and can be altered during run-time.
The machine also has a construction arm (by Paul Chapman and Dave Greene) capable of synthesising anything with a slow-salvo glider synthesis. Because the machine itself consists exclusively of still lifes with seven or fewer cells, a sufficient program tape would allow the machine to self-replicate forever. This could emulate (in increasing difficulty) a puffer, a rake or a spaceship. Goucher himself estimates that it would take up to 1018 generations to completely reproduce.
Comparison with other universal computers
Because of the architecture of the machine, it has several advantages over other universal computers:
- It is relatively easy to program, since the instruction set allows basic arithmetic operations, bitwise shifts and logical operations to be performed using a string of a few instructions.
- The main storage is in binary, meaning that it stores data exponentially more compact than an equivalent register machine.
- Conditional jumps are relative, rather than absolute, so a subroutine can be copied into a program without having to alter the pointers.