CS 14 -- Lab 6(A)


We begin the designing our own processors! Working in pairs, you will design your own instruction set and then a CPU to support it. This week, you will begin to lay the groundwork...


Designing an ISA

Notice that the MIPS instruction set dictates some aspects of how a datapath and control can be built to implement. Thus, it is really refered to as an instruction set architecture (ISA), defining the available operations, the machine code format for each instruction, the number of available registers, etc.

Your first task is to design your own ISA, knowing that later you will build a processor to implement it. In order to design your ISA, there are a number of important considerations:

Be sure, as you make choices for these (and likely other) issues that you keep in mind how your datapath will be constructed. With a carefully considered ISA design, you will find it easier to connect and control the CPU components.


Operations

So which operations should your CPU be able to perform? Below there are two lists: the first specifies the operations that your CPU must support, and the second specifies those that you may optionally add to your ISA.

Required operations

Optional operations


Other requirements and a few gotchas

When it comes time to build your processor, there are some requirements on how it must be done:

After you design your ISA and you begin then to design your datapath and control, you are likely to want to change aspects of your ISA. You are welcome to do that. Nobody can create a good abstract specification without some experience in trying to implement it, and so I expect your ISA to change.

Also note that there are some issues that we are currently ignoring. For example, if an arithmetic operation causes an overflow, what should your processor do? For the moment, ignore such issues -- we will address them in lecture and then determine how to incorporate them into your design.


This week's goals

This week, you have the following goals:

  1. Pick a partner. This project should be done in pairs.
  2. Design your ISA. Specifically, you should document your ISA and submit it at the beginning of the next lab.
  3. Design and create your register file. Any design will need one, and you should create one that corresponds to your ISA.
  4. Begin design of your ALU and main memory. Figure out how these parts will connect to the others (including what interface will be provided for controlling them).

Scott F. Kaplan
Last modified: Thu Mar 31 10:57:56 EST 2005