Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
CSCI 2500 — Computer Organization
Group Project (document version 1.2)
How do computers actually compute?
This project is due by the midnight EST on the above date via a Submitty gradeable.
This project is a group assignment. You can have groups of up to five people.
This project is out of 100 points. All students in a group receive the same grade.
Start the project early. You can ask questions during office hours, in the Submitty forum,
and during your lab session.
1 Project Overview
For the group project, you will design a computer architecture, test it using a simple benchmark
consisting of two programs, and compare to another architecture.
Note that this project is meant to be exploratory. Your team will have a fair amount of freedom
in making certain choices but it also means that there is a number of decisions to make. Make
sure you document your entire thought process and justifications for any decisions that you will be
making.
When designing your computer architecture, please remember the Seven Great Ideas in Computer
Architecture from our textbook. In particular, make sure that your design is minimal, i.e., only
contains features that are necessary, and high-performance.
2 Design 1
First, you will need to design a simple computer with accumulator architecture similar to the one
we reviewed in class. We will call this Design 1. The main components of the architecture are
shown in Figure 1.
Figure 1: Main components of the accumulator architecture
Here is a brief description of the components:
AC or Accumulator: intermediate data is stored within the AC
PC or Program Counter: as the name suggests it counts the current position of the code,
each line has its own address; PC needs to be incremented after each instruction
MAR or Memory Access Register, stores or fetches the ’data’ at the given address
MBR or Memory Buffer Register, stores the data when being transferred
IR or Instruction Register, stores the instruction word of the currently executing instruction
ALU or Arithmetic and Logic Unit, performs arithmetic and Boolean operations
Main memory, stores data and instructions
To simplify your design, you may assume the following:
No need to support floating-point operations, only integer operations are supported.
All integers are assumed to be in 2’s complement notation.
All memory is byte-addressable.
No need to support any I/O, i.e., assume there are no peripheral devices (keyboard, screen,
etc.) or file storage.
No need to support dynamic memory allocation.
Instructions and data are loaded into instruction and data memory before program is exe-
cuted.
There is only one program that runs until it encounters a Halt instruction. Once program
halts, the CPU starts idling by fetching the same “Halt” instruction without advancing the
PC.
No need to support exceptions or interrupts.
Your ISA needs to support at least the operations (additional operations can be implemented for
extra credit) given in Table 1. Note that all instructions in our Design 1 have at most one operand.
While designing your first computer you will need to explicitly document each design decision that
you make. For example, you will need to specify which endianness your computer is using and
justify this decision.