This is a problem set. Some of these are easy, others are far more difficult. The purpose of these problems sets are:
- to build your skill applying computational thinking to a problem
- to assess your knowledge and skills of different programming practices
What is this problem set trying to do
You must demonstrate your understanding of the function and architecture of a CPU by creating a simulation of the CPU. Please look at this for an example of ABOUT what I'm looking for. Please also visit our page on Computer organization. Please read this problem set very carefully.
Construct a simulation of a CPU. Your simulation must have:
- a data structure representing the ALU - The arithmetic logic unit executes all calculations within the CPU
- a data structure representing the CU - control unit, coordinates how data moves around
- a data structure representing the PC - program counter - stores address of the -> next <- instruction in RAM
- a data structure representing the MAR - memory address register - stores the address of the current instruction being executed
- a data structure representing the MDR - memory data register - stores the data that is to be sent to or fetched from memory
- a data structure representing the CIR - current instruction register - stores actual instruction that is being decoded and executed
- a data structure representing the ACC - accumulator - stores result of calculations
- a data structure representing the address bus - carries the ADDRESS of the instruction or data
- a data structure representing the data bus - carries data between processor and the memory
- a data structure representing the control bus - sends control signals such as: memory read, memory write
- a data structure representing primary memory. You need to represent address and data/instruction space
- a clear representation and visible functioning of the machine instruction cycle
- you should represent clock cycles
- you should represent a simple set of instructions being fully executed (fetched, execute store)
How you will be assessed
Your solution will be graded using the following axis:
- To what extent does your code implement the features required by our specification?
- To what extent is there evidence of effort?
- To what extent did your code meet specifications?
- To what extent is your code free of bugs?
- To what extent is your code written well (i.e. clearly, efficiently, elegantly, and/or logically)?
- To what extent is your code eliminating repetition?
- To what extent is your code using functions appropriately?
- To what extent is your code readable?
- To what extent is your code commented?
- To what extent are your variables well named?
A possible solution
Click the expand link to see one possible solution, but NOT before you have tried and failed!