Any computer system incorporates both hardware and software in order to take a set of inputs and process them into useful outputs allowing it to fulfill its designed function. Fundamental hardware for this process is the central processing unit (CPU). This specifically contains the processor, cache memory, Input/output (I/O) controllers and connecting wires known as buses.
I/O controllers are specifically responsible for interfacing between peripheral devices such as printers or microphones and the computer itself. I/O controllers do this by interacting with software called device drivers that allows the CPU to correctly format signals received from peripheral devices in a way which can be interpreted and vice versa.
The role of I/O controllers can be seen in relation to the overall architecture of the CPU is illustrated in the diagram below:
Buses & Words
In the context of the CPU buses are a series of wires that transfer data signals between components, they typically consist of 8, 16, 32, 64 etc lines. This is significant because memory is divided up into equal units called words, making the word length or bus width a fixed characteristic of the processor’s architecture. This is significant because the word length dictates the largest amount of data which can be transferred in one operation.
In terms of buses there are three types:
The data bus is unique because it is a bi-directional meaning that data can be sent along it in both directions, this is because data will both be read and written to memory. If the data is the same size as the word length then all of the data can be transferred in a single read or write operation. For this reason, bus width can affect overall system performance because it is a limited factor is read and write speed.
The address bus is unidirectional meaning that it carries the address of a memory location in one direction from the processor to the I/O controllers and memory. It could be for example, the address of the next instruction to be processed or some data which requires processing. This is significant because the width of the address bus determines the maximum possible memory address in the system.
The control bus is also unidirectional and is used to send control signals between the I/O controller, memory and the processor. The kind of control signals sent include
–Read: Causing data from a specific memory address to be placed on the data bus.
–Write: Causing data on the data bus to be written to a specific address in memory.
–Clock: Signal used to synchronise processor operations.
Architecture and Multipurpose Machines
The very first computers calculated an output using a fixed instruction set, meaning they could only perform a limited and specific function. The majority of modern computers with which we are familiar are general purpose and can perform many different tasks. This is because their programming is not fixed with machine code being loaded into memory and then executed by the processor. These are fetched one at a time and executed by the processor in a sequential order. This is often described as the stored program concept and is most commonly realised using a Von Neumann architecture.
Von Neumann Architecture:
This differs greatly from alternative architecture models such as the Harvard system that is more commonly used in single purpose embedded systems. The key difference here is that the program and data is separated into different memory storage each of which using their own buses.
Primarily because of cost and programming complexity virtually all general-purpose computers are based on the Von Neumann architecture. Whilst the Harvard architecture is typically reserved for embedded systems where processing speed takes precedent over the complexity of design.