The 38th Annual IEEE/ACM International Symposium on Microarchitecture, 2005

MICRO-38

November 12-16, 2005
New Hilton Diagonal Mar Hotel
Barcelona, Spain

SimFlex: Fast, Accurate and Flexible Simulation of Computer Systems

  • Babak Falsafi
  • James Hoe
  • Thomas Wenisch
  • Roland Wunderlich

Publications and software downloads

http://www.ece.cmu.edu/~simflex

Abstract

Computer architects have long relied on software simulation to evaluate the functionality and performance of architectural innovations. Unfortunately, there a number of hurdles in sight that make simulation a design bottleneck. First, modern cycle-accurate simulators are several orders of magnitude slower than real hardware. Second, the growing levels of integration continue to result in commensurate increases in computer system size and complexity. Third, benchmarking commercial server software requires full-system simulation including the simulation of peripheral devices and OS code. Finally, because conventional simulators are optimized for speed, they are often not component-based and as such are inflexible and difficult to modify.

In this tutorial, we present the SimFlex family of simulation tools for fast, accurate and flexible simulation of uniprocessor, chip multiprocessor, and distributed shared-memory systems. SimFlex leverages the SMARTS simulation sampling framework to achieve fast simulation turnaround while ensuring representative results. SimFlex builds on Virtutech Simics to provide a full-system execution environment capable of running unmodified commercial operating systems and applications.

First, we introduce attendees to the SMARTS simulation sampling approach. We present relevant background from statistics, and compare and contrast statistical sampling with other sampling proposals. We give attendees hands-on experience with TurboSMARTSim, a SMARTS-enhanced version of SimpleScalar 3.0. TurboSMARTSim combines SMARTS sampling with "live-points" -- a per-benchmark library of minimal reusable machine state -- to enable microarchitectural performance evaluation of entire benchmarks in tens of seconds. We then discuss the implications and constraints of simulation using TurboSMARTSim.

Second, we present the Flexus simulator suite. Flexus is a a family of component-based C++ architecture simulators that augment Virtutech Simics with timing accurate models of uni- and multiprocessor systems. Flexus' component-based design allows easy composition of simple in-order and complex out-of-order system models. Flexus takes advantage of Simics' Micro-Architecture Interface (MAI) to enable out-of-order simulation of multiprocessor systems with relaxed memory consistency models. In our tutorial, we present the design and implementation of Flexus and walk attendees through a simple architectural experiment using CMPFlex/OoO, our out-of-order chip multiprocessor simulation model.

Both TurboSMARTSim and the Flexus suite are publicly available at http://www.ece.cmu.edu/~simflex as of June 3rd, 2005.

Designed and coded by Alex Ramirez, (c)2005