| ![]() |
Basic Software for Virtual Memory Emulation
on an Experimental Multiprocessor
Anders Svensson
Department of Computer Engineering, Lund University
P.O. Box 118, S-221 00 Lund, Sweden
Abstract
In order to evaluate design principles for MIMD multiprocessors with distributed shared memory, an experimental emulation facility has been developed. The hardware of the 38 processing elements was designed to support efficient emulation of mechanisms meant to be implemented in hardware in the real system. One microprocessor in each processing element executes the application while another one runs the emulation software.
The project reported here focused on developing a software environment and primitives to simplify efficient implementation of emulators. A flexible system call mechanism is provided for exchanging messages between the execution and the emulation processors. A separate bus communication mechanism is provided for implementation of interprocessor protocols. 'Software probes' are used for monitoring purposes.
An entire virtual memory system was implemented to provide one common address space for all processors. It uses a decentralized scheme for address decoding and translation to reduce the global traffic. Code and data are stored separately, and code pages are replicated throughout the system.
1 Introduction
An experimental system has been developed to evaluate design principles for MIMD multiprocessors with distributed shared memory [10, 9]. The hardware of the system was designed to support efficient emulation of mechanisms meant to be implemented in hardware in the real system.
Emulation is an alternative to the traditional approaches of either building a prototype of the real system or simulating it on a commercially available computer. Emulation is potentially much faster than simulation but still has much of the same flexibility as a simulator.
... P M
Processing element
Memory
Emulation processor
Execution processor
P M MP
Disk
Global bus
Figure 1: Physical structure of the experimental system.
A commercial multiprocessor can be instrumented to collect information at a logical level by Software monitors [3], which interfere with the measured system since extra code must be inserted. Hardware monitors [3] are external to the measured system, and are therefore more accurate, but have no knowledge of operating system activities. Hybrid monitors [6] try to combine the favorable properties of software and hardware tools.
One of the basic ideas behind the system was that there should be a close correspondence between the various parts of the target system and the emulated multiprocessors. Even if some of the hardware is emulated, the principles for interaction with other parts should be identical to that of the real system. This makes it possible to change one part without affecting any of the others and makes it easier to interpret the results of emulation in terms of the real system. The goal has been to make it possible to execute