CSE 141L Project 3: Single-cycle CPU

Due Thursday, August 31st September 7th the beginning of class.

Introduction

In this project, you will finally design a single-cycle implementation of a processor to execute your 9-bit ISA. Using LogicWorks, you will construct a complete datapath using the CPU internals – ALU and internal storage – from Project 2, build control logic for your datapath, and demonstrate your processor executing the programs you wrote for your ISA in Project 1.

At a minimum, your design will have a program counter (PC), a PC incrementer, instruction memory, data memory, your ALU, control logic, and your internal storage. Your ALU and internal storage should not be significantly changed from Project 2.

Design Requirements

What To Turn In

Each group will turn in, on paper, a printed report with attachments:

Report Questions

As part of the above turn-in items, be sure to answer all of the following in your typewritten report.

Note that, this time around, we're asking you to reflect upon and critique your design, and consider how you might change it given different design goals. We're after insightful analysis here, not marketing material. For example, if you made a decision in your ISA design which made programming difficult, then detail that in the appropriate question; you won't lose credit for being honest about what you would have changed!

  1. Have you made any changes to your ISA from lab 1? What were they? Why did you make them?
  2. What are your dynamic instruction counts for program 1? program 2? program 3?
  3. What could you have done differently to better optimize for dynamic instruction count?
  4. How successful were you at optimizing for ease of design? Give examples.
  5. What could you have done differently to better optimize for ease of design? What, if any, impact would these changes have had on your dynamic instruction counts?
  6. How easy or difficult would it be to extend your design to a multi-cycle implementation? How about a pipelined implementation? Give examples.
  7. What might you have done differently if ease of programming was a design goal? Give examples.
  8. Which instruction takes the longest on your machine, thus dictating the cycle time? Use some kind of rough estimates here, perhaps assuming each device introduces a constant delay. (It's alright your answer is basically the same as the answer you gave to the corresponding question in Project 2.)
  9. What might you have done differently, if having a short cycle time was a design goal? (As above, use rough estimates.) Give examples.

Program Inputs

Your program will read inputs from pre-specified addresses in RAM; RAM will start out initialized with these values. You may actually use the same RAM image for all three programs, as long as no program writes to memory addresses used as inputs by any program.

(Within the following table, "address" indicates the byte address of the leftmost value, and addresses increase from left to right. For example, address 0 contains hex value FF, address 1 contains hex FE, etc.)

Address
(dec)
Values
(hex)
0 FF FE FD FC FB FA F9 F8
...
3220 21 22 23 24 25 26 27
4000 39 62 69 74 49 53 41
4800 00 00 0C 31 34 31 4C
5609 46 54 57 20 21 00 FF
...
12845 00 00 3C CE 2C 40 00
13640 06 F7 F6 84 EF 11 2E
14442 66 07 63 D2 FF E7 68
...

Watch the Web!

Finally, be sure to keep an eye on the course web page, and WebBoard. We'll likely end up posting updates, corrections, hints, etc.