A general purpose computer has four main sections: the arithmetic and
logic unit (ALU), the control unit, the memory, and the input and output
devices (collectively termed I/O). These parts are interconnected by busses,
often made of groups of wires.
The control unit, ALU, registers, and basic I/O (and often other hardware
closely linked with these) are collectively known as a central processing
unit (CPU). Early CPUs were composed of many separate components but since
the mid-1970s CPUs have typically been constructed on a single integrated
circuit called a microprocessor.
Control unit
The control unit (often called a control system or central controller)
directs the various components of a computer. It reads and interprets
(decodes) instructions in the program one by one. The control system decodes
each instruction and turns it into a series of control signals that operate
the other parts of the computer. Control systems in advanced computers may
change the order of some instructions so as to improve performance.
A key component common to all CPUs is the program counter, a special memory
cell (a register) that keeps track of which location in memory the next
instruction is to be read from.
Diagram showing how a particular MIPS architecture instruction would be
decoded by the control system.
Diagram showing how a particular MIPS architecture instruction would be
decoded by the control system.
The control system's function is as follows—note that this is a simplified
description, and some of these steps may be performed concurrently or in a
different order depending on the type of CPU:
1. Read the code for the next instruction from the cell indicated by the
program counter.
2. Decode the numerical code for the instruction into a set of commands or
signals for each of the other systems.
3. Increment the program counter so it points to the next instruction.
4. Read whatever data the instruction requires from cells in memory (or
perhaps from an input device). The location of this required data is
typically stored within the instruction code.
5. Provide the necessary data to an ALU or register.
6. If the instruction requires an ALU or specialized hardware to complete,
instruct the hardware to perform the requested operation.
7. Write the result from the ALU back to a memory location or to a register
or perhaps an output device.
8. Jump back to step (1).
Since the program counter is (conceptually) just another set of memory
cells, it can be changed by calculations done in the ALU. Adding 100 to the
program counter would cause the next instruction to be read from a place 100
locations further down the program. Instructions that modify the program
counter are often known as "jumps" and allow for loops (instructions that
are repeated by the computer) and often conditional instruction execution
(both examples of control flow).
It is noticeable that the sequence of operations that the control unit goes
through to process an instruction is in itself like a short computer program
- and indeed, in some more complex CPU designs, there is another yet smaller
computer called a microsequencer that runs a microcode program that causes
all of these events to happen.
Arithmetic/logic unit (ALU)
The ALU is capable of performing two classes of operations: arithmetic and
logic.
The set of arithmetic operations that a particular ALU supports may be
limited to adding and subtracting or might include multiplying or dividing,
trigonometry functions (sine, cosine, etc) and square roots. Some can only
operate on whole numbers (integers) whilst others use floating point to
represent real numbers—albeit with limited precision. However, any computer
that is capable of performing just the simplest operations can be programmed
to break down the more complex operations into simple steps that it can
perform. Therefore, any computer can be programmed to perform any arithmetic
operation—although it will take more time to do so if its ALU does not
directly support the operation. An ALU may also compare numbers and return
boolean truth values (true or false) depending on whether one is equal to,
greater than or less than the other ("is 64 greater than 65?").
Logic operations involve Boolean logic: AND, OR, XOR and NOT. These can be
useful both for creating complicated conditional statements and processing
boolean logic.
Superscalar computers contain multiple ALUs so that they can process several
instructions at the same time. Graphics processors and computers with SIMD
and MIMD features often provide ALUs that can perform arithmetic on vectors
and matrices.
Memory
Magnetic core memory was popular main memory for computers through the 1960s
until it was completely replaced by semiconductor memory.
Magnetic core memory was popular main memory for computers through the 1960s
until it was completely replaced by semiconductor memory.
A computer's memory can be viewed as a list of cells into which numbers can
be placed or read. Each cell has a numbered "address" and can store a single
number. The computer can be instructed to "put the number 123 into the cell
numbered 1357" or to "add the number that is in cell 1357 to the number that
is in cell 2468 and put the answer into cell 1595". The information stored
in memory may represent practically anything. Letters, numbers, even
computer instructions can be placed into memory with equal ease. Since the
CPU does not differentiate between different types of information, it is up
to the software to give significance to what the memory sees as nothing but
a series of numbers.
In almost all modern computers, each memory cell is set up to store binary
numbers in groups of eight bits (called a byte). Each byte is able to
represent 256 different numbers; either from 0 to 255 or -128 to +127. To
store larger numbers, several consecutive bytes may be used (typically, two,
four or eight). When negative numbers are required, they are usually stored
in two's complement notation. Other arrangements are possible, but are
usually not seen outside of specialized applications or historical contexts.
A computer can store any kind of information in memory as long as it can be
somehow represented in numerical form. Modern computers have billions or
even trillions of bytes of memory.
The CPU contains a special set of memory cells called registers that can be
read and written to much more rapidly than the main memory area. There are
typically between two and one hundred registers depending on the type of
CPU. Registers are used for the most frequently needed data items to avoid
having to access main memory every time data is needed. Since data is
constantly being worked on, reducing the need to access main memory (which
is often slow compared to the ALU and control units) greatly increases the
computer's speed.
Computer main memory comes in two principal varieties: random access memory or
RAM and read-only memory or ROM. RAM can be read and written to anytime the CPU
commands it, but ROM is pre-loaded with data and software that never changes, so
the CPU can only read from it. ROM is typically used to store the computer's
initial start-up instructions. In general, the contents of RAM is erased when
the power to the computer is turned off while ROM retains its data indefinitely.
In a PC, the ROM contains a specialized program called the BIOS that
orchestrates loading the computer's operating system from the hard disk drive
into RAM whenever the computer is turned on or reset. In embedded computers,
which frequently do not have disk drives, all of the software required to
perform the task may be stored in ROM. Software that is stored in ROM is often
called firmware because it is notionally more like hardware than software. Flash
memory blurs the distinction between ROM and RAM by retaining data when turned
off but being rewritable like RAM. However, flash memory is typically much
slower than conventional ROM and RAM so its use is restricted to applications
where high speeds are not required.
In more sophisticated computers there may be one or more RAM cache memories
which are slower than registers but faster than main memory. Generally
computers with this sort of cache are designed to move frequently needed
data into the cache automatically, often without the need for any
intervention on the programmer's part.
Input/output (I/O)
Hard disks are common I/O devices used with computers.
Hard disks are common I/O devices used with computers.
I/O is the means by which a computer receives information from the outside
world and sends results back. Devices that provide input or output to the
computer are called peripherals. On a typical personal computer, peripherals
include input devices like the keyboard and mouse, and output devices such
as the display and printer. Hard disk drives, floppy disk drives and optical
disc drives serve as both input and output devices. Computer networking is
another form of I/O.
Often, I/O devices are complex computers in their own right with their own
CPU and memory. A graphics processing unit might contain fifty or more tiny
computers that perform the calculations necessary to display 3D graphics
[citation needed]. Modern desktop computers contain many smaller computers
that assist the main CPU in performing I/O.