Efficient memory simulation in SimICS

We describe novel techniques used for efficient simulation of memory in SimICS; an instruction level simulator developed at SICS. The design has focused on efficiently supporting the simulation of multiprocessors, analyzing complex memory hierarchies and running large binaries with a mixture of system level and user level code. A software caching mechanism (the Simulator Translation Cache, STC) improves the performance of interpreted memory operations by reducing the number of calls to complex memory simulation code. Major data structures are allocated lazily to reduce the size of the simulator process. A well defined internal interface to generic memory simulation simplifies user extensions. Leveraging on a flexible interpreter based on threaded code allows runtime selection of statistics gathering, memory profiling, and cache simulation with low overhead. The result is a memory simulation scheme that supports a range of features for use in computer architecture research, program profiling, and debugging.<<ETX>>

[1]  David Samuelsson System Level Interpretation of the SPARC V8 Instruction Set Architecture , 1994 .

[2]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[3]  Brian N. Bershad,et al.  The impact of operating system structure on memory system performance , 1994, SOSP '93.

[4]  Richard L. Sites,et al.  Binary translation , 1993, CACM.

[5]  Peter Magnusson Partial Translation , 1993 .

[6]  Peter S. Magnusson A Design for Efficient Simulation of a Multiprocessor , 1993, MASCOTS.

[7]  Robert O. Hastings,et al.  Fast detection of memory leaks and access errors , 1991 .

[8]  Randall R. Heisch Trace-directed program restructuring for AIX executables , 1994, IBM J. Res. Dev..

[9]  James H. Patterson,et al.  Portable Programs for Parallel Processors , 1987 .

[10]  Trevor N. Mudge,et al.  Trap-driven simulation with Tapeworm II , 1994, ASPLOS VI.

[11]  James R. Larus,et al.  Abstract execution: A technique for efficiently tracing programs , 1990, Softw. Pract. Exp..

[12]  Ann Marie Grizzaffi Maynard,et al.  Contrasting characteristics and cache performance of technical and multi-user commercial workloads , 1994, ASPLOS VI.

[13]  Anoop Gupta,et al.  SPLASH: Stanford parallel applications for shared-memory , 1992, CARN.

[14]  Robert C. Bedichek,et al.  The Meerkat multicomputer: tradeoffs in multicomputer architecture , 1995 .

[15]  Douglas W. Clark,et al.  Cache Performance in the VAX-11/780 , 1983, TOCS.

[16]  Rajeev Bharadhwaj,et al.  HALSIM-a very fast SPARC-V9 behavioral model , 1995, MASCOTS '95. Proceedings of the Third International Workshop on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems.

[17]  Scott McFarling,et al.  Program optimization for instruction caches , 1989, ASPLOS III.

[18]  Mark Horowitz,et al.  ATUM: a new technique for capturing address traces using microcode , 1986, ISCA '86.

[19]  J. Robert Jump,et al.  The rice parallel processing testbed , 1988, SIGMETRICS '88.

[20]  Robert C. Bedichek Talisman: fast and accurate multicomputer simulation , 1995, SIGMETRICS '95/PERFORMANCE '95.

[21]  Eric A. Brewer,et al.  PROTEUS: a high-performance parallel-architecture simulator , 1992, SIGMETRICS '92/PERFORMANCE '92.

[22]  Josep Torrellas,et al.  Characterizing the caching and synchronization performance of a multiprocessor operating system , 1992, ASPLOS V.

[23]  Trevor Mudge,et al.  Monster : a tool for analyzing the interaction between operating systems and computer architectures , 1992 .

[24]  Barry J. Epstein,et al.  The Sparc Architecture Manual/Version 8 , 1992 .

[25]  Robert J. Fowler,et al.  MINT: a front end for efficient simulation of shared-memory multiprocessors , 1994, Proceedings of International Workshop on Modeling, Analysis and Simulation of Computer and Telecommunication Systems.

[26]  Helen Davis,et al.  Tango: A Multiprocessor Simulation and Tracing System , 1990 .

[27]  Per Stenström,et al.  The Cachemire Test Bench A Flexible And Effective Approach For Simulation Of Multiprocessors , 1993, [1993] Proceedings 26th Annual Simulation Symposium.

[28]  David Keppel,et al.  Shade: a fast instruction-set simulator for execution profiling , 1994, SIGMETRICS.

[29]  Peter S. Magnusson,et al.  A Compact Intermediate Format for SimICS , 1994 .

[30]  C. May Mimic: a fast system/370 simulator , 1987, PLDI 1987.

[31]  James E. Smith,et al.  PowerPC 601 and Alpha 21064: a tale of two RISCs , 1994, Computer.

[32]  James R. Larus,et al.  The Wisconsin Wind Tunnel: virtual prototyping of parallel computers , 1993, SIGMETRICS '93.

[33]  Peter S. Magnusson Efficient simulation of parallel hardware , 1992 .

[34]  James R. Bell,et al.  Threaded code , 1973, CACM.

[35]  Reinhold Weicker,et al.  Dhrystone: a synthetic systems programming benchmark , 1984, CACM.