Version L3.11 Proteus Changes

David M. Koppelman

Louisiana State University, Baton Rouge

3 August 1997

Node:Top, Next: Overview, Contents, Top Proteus Local

-- The Detailed Node Listing ---

Memory-Related Changes

Virtual Memory

Simulation of Shared Memory Access

Memory Access Modes

Cache Configurations

Networks, Messages, and Interrupt Timing


Statistics Collection and Collected Statistics

Stats Changes

Histogram Metrics

Mstats: A Mathematica Package for Viewing Traces

Collected Statistics

Initialization, Building, and Scripting

Run-Time Variable Initialization

Running Proteus Multiple Times

Test Script

Perl Functions for Generating Test Scripts

Node:Overview, Next: Memory, Prev: Top, Up: Top, Contents, Top

Proteus Overview

Proteus is an execution-driven parallel-computer simulator which can simulate message-passing parallel computers, shared-memory parallel computers, or systems using both communication paradigms. The simulated system can have physically or virtually addressed memory; in virtual memory systems pages can be moved between processors at any time. Stores can be nonblocking and loads can complete in or out of order with stores. (With in-order loads the memory model is sequentially consistent.) Several different networks and cache-coherence schemes can be simulated; others can be added through user-written code. C programs, written using Proteus' parallel programming constructs, run on the simulated machines. Execution speed (with respect to clock frequency) is adjustable. Proteus can collect and present many different statistics describing the simulated machine (running the C programs), for example, processor states, cache and TLB hit ratios, and procedure execution times. Proteus can be used for the study of network, memory system, and other aspects of parallel computer design.


The version of Proteus described here has been tested on Sun Microsystems SPARC machines running SunOS 4.1.3 and Solaris 2.5.


Proteus was written at MIT, primarily by Eric Brewer and Chrysanthaos Dellarocas. A distribution for that version of Proteus can be found via @hfill@break `'. A related web page can be found via `'. Eric Brewer is currently an Assistant Professor at the University of California, Berkeley and can be contacted at `brewer@hera.EECS.Berkeley.EDU'.

The Local Version of Proteus

The version of Proteus described here is a modified version of the MIT distribution. The changes include bug fixes and new features needed for research being conducted at LSU; the new features are documented here. When it is necessary to distinguish the versions the local version will be called Proteus L and the original version will be called Proteus 3.

The most significant changes are in the simulation of shared memory. Simulation of shared memory with the LSU version is more convenient, flexible, faster, and most importantly, accurate. Unlike Proteus 3, shared pointers can be dereferenced using the usual C operators (e.g., a = *b; c = d[e]; f = g->h;), easing porting. Shared memory can be dynamically allocated so that, while occupying a contiguous block of address space, is spread over several memory modules. (See section V2 Memory Allocation.) Less host memory is used for simulation and simulation is faster. Simulation is more accurate since shared memory access functions are inserted in user code at the assembler level, not the source-code level where they distort compiler output. (E.g., saving volatile registers around shared-memory function calls.)

Unsupported Features

No attempt has been made to support all configurations of Proteus 3. A set of configurations is used to test and debug Proteus, so these can be expected to work correctly. Other configurations, for example the Alewife networks and send/receive message passing, are not regularly tested, and so may not work. The test suite used in developing Proteus is part of the distribution; supported configurations can be found in the script file used for testing, `valid/TestScript'. (See section Running Proteus Multiple Times for background on the script files.) The following features are not yet supported:

Information Sources

The primary documentation for Proteus is the Proteus User Documentation, Version 0.5, a reference manual available in Postscript form; it can be found in the `doc' directory in files `'. Also in this directory is `News', containing new features listed by release. Features may be documented in `News' before being documented here. Other documentation can be found in the comments of some engine header files.