Machine using just One Instruction
You must have heard about RISC(Reduced Instruction Set Computing) and CISC(Complex Instruction Set Computing). But what is this OISC ?
OISC is One Instruction Set Computing, where means a whole machine works on only one instruction. (technically, only one OpCode).
Okay, if you feel totally lost here [totally new to Micro-processors], then here I try to explain concepts about instruction sets:
Reduced instruction set computing, or RISC is a CPU design strategy based on the insight that simplified (as opposed to complex) instructions can provide higher performance if this simplicity enables much faster execution of each instruction. A computer based on this strategy is a reduced instruction set computer (also RISC).
Example : ARM architecture (this is used in Apple iPads) , AMD x29 (this was what AMD developed previously, now discontinued)
A complex instruction set computer (CISC) is a computer where single instructions can execute several low-level operations (such as a load from memory, an arithmetic operation, and a memory store) and/or are capable of multi-step operations or addressing modes within single instructions. The term was retroactively coined in contrast to reduced instruction set computer (RISC).
Example : x86 architecture. (Intel processors like Pentium are based on this architecture)
So, what actually are these instructions? These are the only things that a microprocessor can understand. Based on the instruction the execution is done.
Coming back to the OISC :
Common choices for the single instruction are:
- Subtract and branch if less than or equal to zero
- Subtract and branch if negative
- Reverse subtract and skip if borrow
- Move (used as part of a transport triggered architecture)
The subleq instruction ("SUbtract and Branch if Less than or EQual to zero") subtracts the contents at address a from the contents at address b, stores the result at address b, and then, if the result is not positive, transfers control to address c (if the result is positive, execution proceeds to the next instruction in sequence)
subleq a, b, c
The above instruction means
Mem[b] = Mem[b] - Mem[a]
; if (Mem[b] ≤ 0) goto c
I could understand the use of this single instruction only after going through an addition example.
For example, take a look at the following pseudo code – addition of two numbers using the one instruction:
Addition is done by repeated subtraction, without any conditional branching; e.g., the following instructions result in the content at location a being added to the content at location b:
ADD a, b == subleq a, Z
subleq Z, b
subleq Z, Z
The first instruction:
1st instruction: Z= Z – a => Z becomes (-a).
2nd instruction: b = b – Z = b – (-a) = b+a.
The addition is over.
3rd instruction: Z = Z – Z
The 3rd instruction is to restore the zero value to Z.
Interested in even more? Yes there is a lot more which even I am going through. Infact there are even Zero instruction set computer (ZISC) and No instruction set computer (NISC) which, frankly, I never knew! Anyways more examples and info about OISC here.
I felt the topic interesting and more over easy to learn (also it helped me getting a quick revision of my microprocessor concepts) and so shared it here.