The CPU
To
greatly simplify, a computer consists of a central processing unit (CPU)
attached to memory. The figure above illustrates the general principle behind
all computer operations.
The CPU
executes instructions read from memory. There are two categories of
instructions
1. Those that load values from memory into registers and store values from registers to memory.
2. Those that operate on values stored in
registers. For example adding, subtracting multiplying or dividing the values
in two registers, performing bitwise operations (and, or, xor, etc) or
performing other mathematical operations (square root, sin, cos, tan, etc).
So in
the example we are simply adding 100 to a value stored in memory, and storing
this new result back into memory.
Branching
Apart
from loading or storing, the other important operation of a CPU is branching. Internally, the CPU keeps a record of
the next instruction to be executed in the instruction
pointer. Usually,
the instruction pointer is incremented to point to the next instruction
sequentially; the branch instruction will usually check if a specific register
is zero or if a flag is set and, if so, will modify the pointer to a different
address. Thus the next instruction to execute will be from a different part of
program; this is how loops and decision statements work.
For
example, a statement like if (x==0) might be implemented by finding the or of two registers, one holding x and the other zero; if the result is zero
the comparison is true (i.e. all bits of x were zero) and the body of the statement
should be taken, otherwise branch past the body code.
Cycles
We are
all familiar with the speed of the computer, given in Megahertz or Gigahertz
(millions or thousands of millions cycles per second). This is called the clock speed since it is the speed that an internal
clock within the computer pulses.
The
pulses are used within the processor to keep it internally synchronised. On
each tick or pulse another operation can be started; think of the clock like
the person beating the drum to keep the rower's oars in sync.
Fetch,
Decode, Execute, Store
Executing
a single instruction consists of a particular cycle of events; fetching,
decoding, executing and storing.
For
example, to do the add instruction above the CPU must
1. Fetch : get the instruction from memory
into the processor.
2. Decode : internally decode what it has to
do (in this case add).
3. Execute : take the values from the
registers, actually add them together
4. Store : store the result back into another
register. You might also see the term retiring the instruction.
Looking inside a CPU
Internally
the CPU has many different sub components that perform each of the above steps,
and generally they can all happen independently of each other. This is
analogous to a physical production line, where there are many stations where
each step has a particular task to perform. Once done it can pass the results
to the next station and take a new input to work on.
Above we
have a very simple block diagram illustrating some of the main parts of a
modern CPU.
You can
see the instructions come in and are decoded by the processor. The CPU has two
main types of registers, those for integercalculations and those for floating point calculations. Floating point is a way of
representing numbers with a decimal place in binary form, and is handled
differently within the CPU. MMX (multimedia extension) and SSE (Streaming Single Instruction Multiple
Data) orAltivec registers are similar to floating point
registers.
A register file is the collective name for the registers
inside the CPU. Below that we have the parts of the CPU which really do all the
work.
We said
that processors are either loading or storing a value into a register or from a
register into memory, or doing some operation on values in registers.
The Arithmetic Logic
Unit (ALU)
is the heart of the CPU operation. It takes values in registers and performs
any of the multitude of operations the CPU is capable of. All modern processors
have a number of ALUs so each can be working independently. In fact, processors
such as the Pentium have both fast and slow ALUs; the fast ones are smaller (so you
can fit more on the CPU) but can do only the most common operations, slow ALUs
can do all operations but are bigger.
The Address Generation
Unit (AGU)
handles talking to cache and main memory to get values into the registers for
the ALU to operate on and get values out of registers back into main memory.
Floating
point registers have the same concepts, but use slightly different terminology
for their components.
No comments:
Post a Comment