55:132/22C:160 Spring 2010

High-Performance Computer Architecture

Sixth Homework Assignment

(Second Verilog Project)

REVISED—04/15/10

Due Date: Tuesday, April 27

Objective

Project Teams

Students will work in teams of two on this assignment. Each team should submit a single solution and report. Students may pick their own partners, if desired. The instructor will facilitate assignment of partners for any students who are unable to find a partner on their own. Any student desiring to be matched with a partner must send an e-mail request to the instructor at the address: kuhl@engineering.uiowa.edu no later than 8:00 a.m. on Thursday, April 15.  If, for some reason, you prefer to work alone on the project you may do so.  However, you must notify the instructor of this preference by the April 15 deadline. Otherwise you will be assigned to a team. If students wish to work in teams larger than two, this is possible. However, additional project scope must be negotiated in advance with the instructor.

Specification

You will be given a Verilog specification of the simple five-stage pipelined CPU shown shown in this figure. The Verilog model actually has its instruction fetch stage slightly optimized as shown here to permit it to operate with a two-cycle branch delay (with branch target address generation and branch condition evaluation in the EX stage). The CPU executes the instruction set shown here. The pipeline implements delayed branching. Hence, two non-branch-dependent instructions (or nops) must be placed in the shadow of each conditional branch instruction.  The Verilog model also includes a hazard detection module (dethazard.v). This hazard detection module identifies data hazards and introduces pipeline stalls as needed. The supplied Verilog model does not implement any forwarding paths for data hazards.

You are to extend this design in the following manner:

  1. Implement a simple dynamic branch prediction scheme as follows: 
  2. Run the provided matrix multiplication code on the original pipeline and after the addition of dynamic branch prediction mechanisms in step 2. Note the difference in performance due to the use of dynamic branch prediction.  Make sure that you compute BTB hit rate and the successful prediction rate.

To Run the Verilog Simulation

What to turn in:

Your submission should be in the form of a tarred directory, where the name of the directory is the concatenation of your login names (hawkIDs) in alphabetical order--i.e. if your hawkid is "smith" and your partner's is "jones", the name of your submission directory should be "jonessmith". Project documentation should be in a subdirectory called "Documentation". Instructions for packaging your submission into a tar file can be found here.

 
 
 
You should submit your tarred directory via e-mail to: hpca@engineering.uiowa.edu 
 
Make sure you DON'T include the work directory in the submission. (i.e. The directory created by the "vlib work" command). To avoid losing points, the submission must be mailed before 11:59 p.m. on Tuesday, April 27.

Due Date

Tuesday, April 27 by 11:59 p.m.

Source and Test Code