Computers like Colossus, while electrical, and stored data electrically, were programmed mechanically using wires and switches and if you wanted to change the program being run on the computer, it would have to be re-wired.
This was a major problem, as everytime we needed the computer to do something different it required a rebuild.
Von Neumann, a Hungarian engineer and scientist, proposed storing the program (instructions – what tells the computer what to do) electrically along with data.
His implementation of a “Stored Program Computer” is called Von Neumann Architecture, and is the basis of the architectures computers use to this day.
Von Neumann suggested the following architectrue, where instructions are stored in memory. On modern day computers this memory could be RAM or Secondary storage, however in this architecture refers to a memory store closer to the concept of RAM.
Term | Definition |
Arithmetic Logic Unit (ALU) | The ALU carries out two main tasks: Carries out Arithmetic (+,-,/,*) and Logic operations (AND, OR, NOT). |
Control Unit | Controls what the CPU is doing. Sends signals to control the flow of data inside the CPU. |
Registers | Tiny memory locations built into the CPU. They are VERY fast at moving data around and VERY expensive to make. They can only hold a tiny amount of data. |
Memory (Not a part of the CPU but heavily linked) | Stores data and instructions. The CPU must fetch both from the memory in order to use them. Memory is much larger than cache and registers, but it is much slower to read and write data to memory. |
Busses | Tiny wires built into the CPU. Data, instructions and signals can be passed across these between different parts of the CPU. |
Clock | The Clock determines “how fast” the CPU is. It ticks many times each seconds – this is measured in hz (hertz). A lot of computers can complete billions of ticks every second (1 billion ticks = 1Ghz). |
During the Fetch Decode Execute Cycle data and addresses need to move around parts of the CPU and between the CPU and memory, this is achieved using buses.
Buses are tiny wires built into the CPU and other components that allow data, instructions, and signals to move around.
There are 3 main buses:
Bus | Purpose | Directionality |
Address Bus | Carries addresses from the CPU to Memory. | Unidirectional |
Data Bus | Carries data to and from Memory and the CPU | Bidirectional |
Control Bus | Used by the control unit to send signals to different parts of the CPU. It uses the bus to control those parts and “tells them what to do” | Bidirectional |
Both the data bus and control bus are bidirectional, which means data can be sent and recieved over the bus in both directions. The address bus is unidirectional, meaning that addresses can be sent from the CPU to memory, but not back in the reverse direction.