Instruction set design refers to the process of defining a computer’s instructions, their format, size, the way they access their operands (i.e. addressing modes), resources utilization ...etc.

Before the computer can be designed, a special attention has to be paid to designing its instruction set

Instruction set design is the most important factor affecting the performance of a computer

Each instruction must specify the following:

  1. Which operation to perform (the op-code)

  2. Where to get the operands

  3. Where to put the result

  4. Where to find the next instruction

The following points illustrate the main issues and trade-offs involved in the instruction set design:
Fewer instructions means:
  1. Longer programs (in number of instructions) due to lack of complex instructions
  2. Simpler processor design which in turn makes it possible to execute more instructions in a given time
  3. This is the main philosophy of the RISC (Reduced Instruction Set Computers)

More instructions results in:
  1. More complex logic design of processor
  2. More complex control unit, whether hardwired or microprogrammed, with fewer instructions executed in a given time
  3. Shorter programs (due to the availability of more complex instructions) and (possibly) shorter execution times
  4. This is the main philosophy of the CISC (Complex Instruction Set Computers)

Computers instructions can be classified into three primary types:

  1. Data movement instructions

  2. Arithmetic and Logic (ALU) instructions

  3. Flow Control (branch) instructions