History
The MIPS processor was developed as part of a VLSI research program at Stanford University in the early 80s. Professor John Hennessy, now the University's President, started the development of MIPS with a brainstorming class for graduate students. The readings and idea sessions helped launch the development of the processor which became one of the first RISC processors, with IBM and Berkeley developing processors at around the same time.

MIPS Architecture
The Stanford research group had a strong background in compilers, which led them to develop a processor whose architecture would represent the lowering of the compiler to the hardware level, as opposed to the raising of hardware to the software level, which had been a long running design philosophy in the hardware industry.

Thus, the MIPS processor implemented a smaller, simpler instruction set. Each of the instructions included in the chip design ran in a single clock cycle. The processor used a technique called pipelining to more efficiently process instructions.

MIPS used 32 registers, each 32 bits wide (a bit pattern of this size is referred to as a word).

Instruction Set
The MIPS instruction set consists of about 111 total instructions, each represented in 32 bits. An example of a MIPS instruction is below:

Above is the assembly (left) and binary (right) representation of a MIPS addition instruction. The instruction tells the processor to compute the sum of the values in registers 7 and 8 and store the result in register 12. The dollar signs are used to indicate an operation on a register. The colored binary representation on the right illustrates the 6 fields of a MIPS instruction. The processor identifies the type of instruction by the binary digits in the first and last fields. In this case, the processor recogizes that this instruction is an addition from the zero in its first field and the 20 in its last field.

The operands are represented in the blue and yellow fields, and the desired result location is presented in the fourth (purple) field. The orange field represents the shift amount, something that is not used in an addition operation.

The instruction set consists of a variety of basic instructions, including:

• 21 arithmetic instructions (+, -, *, /, %)
• 8 logic instructions (&, |, ~)
• 8 bit manipulation instructions
• 12 comparison instructions (>, <, =, >=, <=, ¬)
• 25 branch/jump instructions