One-instruction set computer - Wikipedia
Jump to content
Search
Search
Donate
Create account
Log in
Personal tools
Donate
Create account
Log in
One-instruction set computer
10 languages
فارسی<br>Français<br>Italiano<br>日本語<br>한국어<br>Português<br>Русский<br>Simple English<br>Українська<br>中文
Edit links
From Wikipedia, the free encyclopedia
Abstract machine that uses only one instruction
Not to be confused with 1-bit computing.
A one-instruction set computer (OISC ), sometimes referred to as an ultimate reduced instruction set computer (URISC ), is an abstract machine that uses only one instruction – obviating the need for a machine language opcode.[1][2][3] With a judicious choice for the single instruction and given arbitrarily many resources, an OISC is capable of being a universal computer in the same manner as traditional computers that have multiple instructions.[2]: 55 OISCs have been recommended as aids in teaching computer architecture[1]: 327 [2]: 2 and have been used as computational models in structural computing research.[3] The first carbon nanotube computer is a 1-bit one-instruction set computer (and has only 178 transistors).[4]
Machine architecture<br>[edit]
In a Turing-complete model, each memory location can store an arbitrary integer, and – depending on the mode, there may be arbitrarily many locations. The instructions themselves reside in memory as a sequence of such integers.
There exists a class of universal computers with a single instruction based on bit manipulation such as bit copying or bit inversion. Since their memory model is finite, as is the memory structure used in real computers, those bit manipulation machines are equivalent to real computers rather than to Turing machines.[5]
Currently known OISCs can be roughly separated into three broad categories:
Bit-manipulating machines
Transport triggered architecture machines
Arithmetic-based Turing-complete machines
Bit-manipulating machines<br>[edit]
Bit-manipulating machines are the simplest class.
FlipJump<br>[edit]
The FlipJump machine has 1 instruction, a;b - flips the bit a, then jumps to b. This is the most primitive OISC, but it's still useful. It can successfully do math/logic calculations, branching, pointers, and calling functions with the help of its standard library.
BitBitJump<br>[edit]
A bit copying machine,[5] called BitBitJump, copies one bit in memory and passes the execution unconditionally to the address specified by one of the operands of the instruction. This process turns out to be capable of universal computation (i.e. being able to execute any algorithm and to interpret any other universal machine) because copying bits can conditionally modify the copying address that will be subsequently executed.
Toga computer<br>[edit]
Another machine, called the Toga Computer, inverts a bit and passes the execution conditionally depending on the result of inversion. The unique instruction is TOGA(a,b) which stands for TOG gle a A nd branch to b if the result of the toggle operation is true.
This section needs expansion . You can help by adding missing information. (December 2016)
Multi-bit copying machine<br>[edit]
Similar to BitBitJump, a multi-bit copying machine copies several bits at the same time. The problem of computational universality is solved in this case by keeping predefined jump tables in the memory.[clarification needed]
Transport triggered architecture<br>[edit]
Transport triggered architecture (TTA) is a design in which computation is a side effect of data transport. Usually, some memory registers (triggering ports) within common address space perform an assigned operation when the instruction references them. For example, in an OISC using a single memory-to-memory copy instruction, this is done by triggering ports that perform arithmetic and instruction pointer jumps when written to.
Arithmetic-based Turing-complete machines<br>[edit]
Arithmetic-based Turing-complete machines use an arithmetic operation and a conditional jump. Like the two previous universal computers, this class is also Turing-complete. The instruction operates on integers which may also be addresses in memory.
Currently there are several known OISCs of this class, based on different arithmetic operations:
addition (addleq, add and branch if less than or equal to zero)[6]
decrement (DJN, Decrement and branch (Jump) if Nonzero)[7]
increment (P1eq, Plus 1 and branch if equal to another value)[8]
subtraction (subleq, subtract and branch if less than or equal to zero)[9][10]
positive subtraction when possible, else branch (Arithmetic machine)[11]
Instruction types<br>[edit]
Common choices for the single instruction are:
Subtract and branch if less than or equal to zero
Subtract and branch if negative
Subtract if positive else branch
Reverse subtract and skip if borrow
Move (used as part of a transport triggered architecture)[12]
Subtract and branch if non zero (SBNZ a, b, c, destination)
Cryptoleq (heterogeneous encrypted and...