The main components in a typical computer system are the
processor, memory, input/output devices, and the communication channels that
connect them.
The processor is the workhorse of the system; it is
the component that executes a program by performing arithmetic and logical
operations on data. It is the only component that creates new information by
combining or modifying current information. In a typical system there will be
only one processor, known as the central processing unit, or CPU.
Modern high performance systems, for example vector processors and parallel
processors, often have more than one processor. Systems with only one processor
are serial processor, or, especially among computational scientists, scalar
processors.
Memory
is a passive component that simply stores information until it is requested by
another part of the system. During normal operations it feeds instructions and
data to the processor, and at other times it is the source or destination of
data transferred by I/O devices. Information in a memory is accessed by its address.
Input/output (I/O)
devices transfer information without altering it between the external world and
one or more internal components. I/O devices can be secondary memories, for
example disks and tapes, or devices used to communicate directly with users,
such as video displays, keyboards, and mice.
A bus is used to transfer information between several
different modules. Small and mid-range computer systems, such as the Macintosh
have a single bus connecting all major components. Supercomputers and other
high performance machines have more complex interconnections, but many
components will have internal buses.
Communication on a bus is broken into discrete transactions.
Each transaction has a sender and receiver. In order to initiate a transaction,
a module has to gain control of the bus and become (temporarily, at least) the
bus master. Often several devices have the ability to become the
master; for example, the processor controls transactions that transfer instructions
and data between memory and CPU, but a disk controller becomes the bus master
to transfer blocks between disk and memory. When two or more devices want to
transfer information at the same time, an arbitration protocol is used
to decide which will be given control first. A protocol is a set of signals
exchanged between devices in order to perform some task, in this case to agree
which device will become the bus master.
Once a device has control of the bus, it uses a communication
protocol to transfer the information. In an asynchronous
(unclocked) protocol the transfer can begin at any time, but there is some
overhead involved in notifying potential receivers that information needs to be
transferred. In a synchronous protocol transfers are controlled by a
global clock and begin only at well-known times.