Assignment 3: Superscalar Processors

Table of Contents

Objective

The purpose of this assignment is to get insight on what superscalarity means, how instructions are issued and scheduled in the pipelines, how pipeline bubbles appear.

Time Allocation

4 hours (2 lab sessions) are allocated for this lab.

Theoretical Background

You should review one of the folowing resources before you start working on this lab:

Assignments

You will
  1. Choose a benchmark program p from the ˜TDTS55/spec95-big subdirectory.
  2. Trace the execution of approximately 30 instructions of p using sim-outorder with the initial superscalar architecture specified in src/superscalar.cfg file.
  3. Look into the trace file using pipeview.pl <trace_file>. Observe which stages are underused.
  4. Perform several successive architectural modifications of the superscalar processor with the goal to reduce the complexity of the architecture while still keeping approximately the same performance for your benchmark (e.g. the number of total simulation cycles should not increase more than 5%). See below which are the allowed architectural modifications. For each modification, retrace the same instructions and explain the trace differences, if any. Explain the rationale behind your modifications.

Details:

Run sim-outorder -h for an explanation of its command line switches and also read Section 4.4 from The SimpleScalar Tool Set, Version 2.0, D. Burger, T. M. Austin. SimpleScalar Hacker's Guide, T. Austin, could be helpful too.

In order to generate and view a trace, please read Section 5.1 from the same user's guide.

You may modify the following architectural characteristics:

What to hand-in

  1. Indicate the chosen program and the instructions you traced.
  2. A description of the modification you performed. Describe the rationale behind them. Indicate the impact of the modifications on the traces. Explain in detail why the traces changed ("because I modified the architecture" is not a good enough answer).

Resources