MIPS
MIPS
MIPS
Introduction
MIPS (Microprocessor without Interlocked Pipe Stages) is a new
general purpose microprocessor architecture designed to be
implemented on a single VLSI chip. The main goal of the design
is high performance in the execution of comPiled code. The
architecture is experimental since it is a radical break with the
trend of modern computer architectures. The basic philosophy of
MIPS is to present an instruction set that is a co~!apiler-driven
encoding of the microengine. Thus, little or no decoding is
needed and the instructions correspond closely to microeode
instructions. The processor is pipelined but provides no pipeline
interlock hardware; this function must be provided by software.
The MIPS architecture presents the user with a fast machine with
a simple instruction set. This approach has been used by the IBM
8071_project I and is currently being explored by the RISC project
at Berkeley2; it is directly 'opposed to the approach taken by
architectures such as the VAX. However, there are significant
differences between the RISC approach and the approach used in
MIPS:
1. The RISC architecture is simple both in the instruction set
and the hardware needed to implement that instruction set.
Although the MIPS instruction set has a simple hardware
implementation (i.e. it requires a minimal amount of
hardware control), the user level instruction set is not as
straightforward, and the simplicity of the user level
instruction set is secondary to the performance goals.
0194-1895/82/0000/0017500.75
1982 I E E E
17
Design
Hnemonic Task
IF
Send out the PC,
increment i t
Instruction Decode
ID
Decode instruction
Operand Decode
OD
Compute effectivo
address and send tO
memory i f load or
store, use ALU
Operand Store/
Execution
OS/
EX
Store: w r i t e operand/
"Execution: use ALU
Operand Fetch
OF
microarchitecture
philosophy
18
MIPS has one instruction size, and all instructions execute in the
.,ame amount of time (one data memory cycle). This choice
simplifies the construction of code generators for the architecture
(by eliminating many nonobvious code sequences for different
functions) and makes the construction of a synchronous regular
pipeline much easier. Additionally, the fact'that each maeromstruction is a single microinstruction of fixed length and execution
time means that a minimum amount of internal state is needed in
the processor. The absence of this internal state leads to a faster
processor and minimizes the difficulty of supporting interrupts
and page faults.
fi
IF
R e s o u r c e s of t h e m i c r o e n g i n e
7
10
OF
oo
F
Instruction
Memor.,
ALU
IO
.Dora
, icmor'
OF
Of) EX
~:)en I
IF
ID
OS
To achieve 100% utilization primitive operations in the microengine (e.g., load/store, AI.U operations) must be completely
packed into maeroinstructions. This is not possible for three
reasolls:
1. Dependencies can prevent full usage of the microengine,
for example when a sequence of register loads must be done
before an ALU operation or when no-ops must be inserted.
3. The encoding of the microcngine presented in the instruction set ~acrifiees some functional specification for immediate data. In the worst case, space in the instrxlcti.on word
used for loading large immediate values takes up the space
norumlly used for a b;Lse register, displacement, and ALU
operation specification. In this case the memory interface
and AI,U can nut be used during the pipe stage for which
they are dedicated.
Nevertheless, first results on micrucngine utilization am
e,~eouraging. Many instructions fully utilize the major resources
ofthe machine. Other instructions, s~Jch~ Io;id immediate which
use few of the resources of the m:lchine, would mandate greatly
increased control complexity if ovett~tp with surrounding instruc-
19
Systems issues
The key systems issues are the memory system, and internal traps
and external interrupt support.
Software issues
20
In the software area. code generators have been written for boll:
C and PascaL These code generators produce simple instructions,
relying on a pipeline reorganizer. A complete version of the
pipeline reorganizer is running. An instruction level simulator is
being used to obtain performance estimates.
I-7
o.o.
r.~
4
C
o
II I
21
T r a n s i s t o r Count
Clock speed
Data path w i d t h
Static Instruction
Count
S t a t i c I n s t r u c t i o n Bytes
Execution Time (sec)
MIPS
25,00~
8 MHz=
32 b i t s 2
647
2588
0.6
Acknowledgments
The MIPS project has been supported by the Defense Advanced
Research Projects Agency under contract # MDA903-79-C-0680.
Thomas Gross is supported by an IBM Graduate Fellowship.
Many other people have contributed to the success of the MIPS
project; these include Judson Leonard, A l e x Strong,
K. Gopinath, and John Burnett.
An earlier version of this report appears in th,.~Proceedings of the
CMU Conference on VLSI Systems and Computations, 1981.
References
Radin,
G.,
"The
801 Minicomputer,"
Proc
SIGARCIt/SIGPLAN Symposium on Architectural.
Support for Programming Languages and Operating
Systems,, ACM, Palo Alto, March 1982, pp. 39 - 47.
Patterson, D.A. and Sequin C.H., "RISC-I: A Reduced
Instruction Set VLSI Computer," Proc. of the I~Tghth
.4nnual
Symposium
on
Computer Architecture
i98.t.
4.
5.
6.
7.
Baskett, F., "Puzzle: an informal coalpute bound benchmark", Widely circulated and nln.
LI'he 68(X)0 IC-techr.ology is much better, and the 68000 perfolms across a wide
range of environmental situations. We do not expect to achieve this clock speed across
the same range of environmental factors.
2This advantage is n o t used in the benchrnat'.',:~ i.e. the 68iX.~) version deals with 16 l:i~
objects while MIPS uses 32 bit objects
22