Chapter 2
MIPS® Architecture For Programmers Volume I-A: Introduction to the MIPS64® Architecture, Revision 5.04 17
Copyright © 2001-2003,2005,2008-2013 MIPS Technologies Inc. All rights reserved.
The MIPS Architecture: An Introduction
2.1 MIPS Instruction Set Overview
2.1.1 Historical Perspective
The MIPS® Instruction Set Architecture (ISA) has evolved over time from the original MIPS I™ ISA, through the
MIPS V™ ISA, to the current MIPS32®, MIPS64® and microMIPS™ Architectures. As the ISA evolved, all exten-
sions have been backward compatible with previous versions of the ISA. In the MIPS III™ level of the ISA, 64-bit
integers and addresses were added to the instruction set. The MIPS IV™ and MIPS V™ levels of the ISA added
improved floating point operations, as well as a set of instructions intended to improve the efficiency of generated
code and of data movement. Because of the strict backward-compatible requirement of the ISA, such changes were
unavailable to 32-bit implementations of the ISA which were, by definition, MIPS I™ or MIPS II™ implementations.
While the user-mode ISA was always backward compatible, the privileged environment was allowed to change on a
per-implementation basis. As a result, the R3000® privileged environment was different from the R4000® privileged
environment, and subsequent implementations, while similar to the R4000 privileged environment, included subtle
differences. Because the privileged environment was never part of the MIPS ISA, an implementation had the flexibil-
ity to make changes to suit that particular implementation. Unfortunately, this required kernel software changes to
every operating system or kernel environment on which that implementation was intended to run.
Many of the original MIPS implementations were targeted at computer-like applications such as workstations and
servers. In recent years MIPS implementations have had significant success in embedded applications. Today, most of
the MIPS parts that are shipped go into some sort of embedded application. Such applications tend to have different
trade-offs than computer-like applications including a focus on cost of implementation, and performance as a func-
tion of cost and power.
The MIPS32 and MIPS64 Architectures are intended to address the need for a high-performance but cost-sensitive
MIPS instruction set. The MIPS32 Architecture is based on the MIPS II ISA, adding selected instructions from MIPS
III, MIPS IV, and MIPS V to improve the efficiency of generated code and of data movement. The MIPS64 Architec-
ture is based on the MIPS V ISA and is backward compatible with the MIPS32 Architecture. Both the MIPS32 and
MIPS64 Architectures bring the privileged environment into the Architecture definition to address the needs of oper-
ating systems and other kernel software. Both also include provision for adding optional components - Modules of the
base architecture, MIPS Application Specific Extensions (ASEs), User Defined Instructions (UDIs), and custom
coprocessors to address the specific needs of particular markets.
The MIPS32 and MIPS64 Architectures provide a substantial cost/performance advantage over microprocessor
implementations based on traditional architectures. This advantage is a result of improvements made in several con-
tiguous disciplines: VLSI process technology, CPU organization, system-level architecture, and operating system and
compiler design.
The microMIPS32 and microMIPS64 Architectures deliver the same functionality of MIPS32 and MIPS64 with the
additional benefit of smaller codesizes. The microMIPS architectures are supersets of MIPS32/MIPS64 architectures,
with almost the same sets of 32-bit sized instructions and additional 16-bit instructions to help with codesize. micro-
MIPS is especially compelling for systems in which the cost of memory dominate the entire bill of materials cost.