What is µMPS?

µMPS is an educational computer system architecture and an accompanying emulator designed from the ground up to achieve the right tradeoff between simplicity and elegance on one side, and realism on the other. This makes µMPS ideally suited for use in education, such as hands-on operating systems or computer architecture university courses.

The µMPS processor implements the MIPS I instruction set, and can therefore be supported out of the box by existing MIPS compilers. The architecture details a complete set of I/O devices (terminals, disks, tape readers, printers, and network adapters) that feature a clean, consistent, programming interface. The latest revision of the µMPS architectire (µMPS2) brings multiprocessor support.

The emulator comes with built-in debugging features and an easy to use graphical user interface. Apart from the emulator itself, several support utilites are provided that can get you quickly stared in developing programs for µMPS.

µMPS is free software, licensed under the GNU General Public License, version 2.

Features

Architecture Features

Emulator Features

µMPS Versus Related Systems

µMPS versus simple MIPS processor simulators

We believe µMPS can be a replacement for the simple assembly source-level MIPS processor simulators, such as SPIM or MARS, that are widely used in introductory computer architecture or similar courses that include an assembly programming component. There are, nonetheless, striking differences between these and µMPS:

Note that, compared to simulators such as SPIM and MARS, programming for µMPS is somewhat more complex. The learning curve is not very steep, however, and there is plenty of documentation to guide you.

µMPS versus other full system emulators

Emulators such as QEMU emulate real computer systems, including their complexities. µMPS, on the other hand, was conceived primarily as a pedagogical tool and its architecture can be seen as an idealized and simplified version of existing ones. Also, because these emulators are meant to efficiently run real-world operating systems, they put first and foremost an emphasis on performance, at the cost of code complexity. The µMPS code base is, by comparison, significantly less complex and is approachable by less experienced programmers.

History, Credits, and Acknowledgments

The µMPS project has a long history. The direct predecessor of µMPS was MPS, developed at the Computer Science department of the University of Bologna by Mauro Morsiani, under the supervision of Renzo Davoli. MPS, like its descendants, is a full system emulator: it emulates a computer system comprising a single processor, a bus, and a set of peripheral devices. The emulated processor is a R2000/R3000, the original 32-bit MIPS (retrospectively MIPS I) CPU. The emulator featured a graphical user interface, implemented using the XForms toolkit, and built-in debugging functionality.

MPS was in turn inspired by CHIP (Cornell Hypothetical Instructional Processor) and the accompanying HOCA operating system project. CHIP/HOCA were used before the adoption of MPS/µMPS in the operating systems lab course at the University of Bologna, to which they were brought by Ozalp Babaoglu.

µMPS was an evolution of the original MPS project. Its design was based on experience with MPS in undergraduate operating systems courses taught by Renzo Davoli (University of Bologna) and Michael Goldweber (Xavier University). The architecture replaced the relatively complex virtual memory management subsytem of the R3000 processor with a streamlined one, easier to comprehend and program.

Tomislav Jonjic extended the µMPS architecture with multiprocessor support and took over the project maintainance; this revised architecture, referred to as µMPS2, is the one implemented by current versions of the emulator. The user interface has been completely redesigned and reimplemented using the Qt framework.

The authoritative reference on µMPS, µMPS(2) Principles of Operation, was written by Michael Goldweber and Renzo Davoli.

In addition to the implicit acknowledgments we have given above, the authors would also like to thank the numerous students who have assisted the project by testing it and by giving valuable suggestions.