Microprocessor Logic
To understand how a microprocessor works, it is helpful to look
inside and learn about the logic used to create one. A microprocessor
executes a collection of machine instructions that tell the processor
what to do. Based on the instructions, a microprocessor does three
basic things:
- Using its ALU (Arithmetic/Logic Unit), a microprocessor can
perform mathematical operations like addition, subtraction, multiplication
and division. Modern microprocessors contain complete floating
point processors that can perform extremely sophisticated operations
on large floating point numbers.
- A microprocessor can move data from one memory location to
another.
- A microprocessor can make decisions and jump to a new set of
instructions based on those decisions.
There may be very sophisticated things that a microprocessor does,
but those are its three basic activities. The following diagram
shows an extremely simple microprocessor capable of doing those
three things:

This is about as simple as a microprocessor gets. Let's assume
that both the address and data buses are 8 bits wide in this example.
This microprocessor has
- An address bus (that may be 8, 16 or 32 bits
wide) that sends an address to memory
- A data bus (that may be 8, 16 or 32 bits wide)
that can send data to memory or receive data from memory
- An RD (read) and WR (write)
line to tell the memory whether it wants to set or get the addressed
location
- A clock line that lets a clock pulse sequence
the processor
- A reset line that resets the program counter
to zero (or whatever) and restarts execution
- Registers A, B and C are simply latches made
out of flip-flops. (See the section on "edge-triggered latches"
in How Boolean Logic Works for details.)
- The address latch is just like registers A,
B and C.
- The program counter is a latch with the extra
ability to increment by 1 when told to do so, and also to reset
to zero when told to do so.
- The ALU could be as simple as an 8-bit adder
(see the section on adders in How Boolean Logic Works for details),
or it might be able to add, subtract, multiply and divide 8-bit
values. Let's assume the latter here.
- The test register is a special latch that can
hold values from comparisons performed in the ALU. An ALU can
normally compare two numbers and determine if they are equal,
if one is greater than the other, etc. The test register can also
normally hold a carry bit from the last stage of the adder. It
stores these values in flip-flops and then the instruction decoder
can use the values to make decisions.
- There are six boxes marked "3-State"
in the diagram. These are tri-state buffers. A tri-state buffer
can pass a 1, a 0 or it can essentially disconnect its output
(imagine a switch that totally disconnects the output line from
the wire that the output is heading toward). A tri-state buffer
allows multiple outputs to connect to a wire, but only one of
them to actually drive a 1 or a 0 onto the line.
- The instruction register and instruction
decoder are responsible for controlling all of the other
components.
Multicore Processors
A multi-core processor (or chip-level multiprocessor, CMP) combines
two or more independent cores (normally a CPU) into a single package
composed of a single integrated circuit (IC), called a die, or more
dies packaged together. A dual-core processor contains two cores,
and a quad-core processor contains four cores. A multi-core microprocessor
implements multiprocessing in a single physical package. A processor
with all cores on a single die is called a monolithic processor.
Cores in a multicore device may share a single coherent cache at
the highest on-device cache level (e.g. L2 for the Intel Core 2)
or may have separate caches (e.g. current AMD dual-core processors).
The processors also share the same interconnect to the rest of the
system. Each "core" independently implements optimizations
such as superscalar execution, pipelining, and multithreading. A
system with n cores is effective when it is presented with n or
more threads concurrently. The most commercially significant (or
at least the most 'obvious') multi-core processors are those used
in personal computers (primarily from Intel and AMD) and game consoles
(e.g., the eight-core Cell processor in the PS3 and the three-core
Xenon processor in the Xbox 360). In this context, "multi"
typically means a relatively small number of cores. However, the
technology is widely used in other technology areas, especially
those of embedded processors, such as network processors and digital
signal processors, and in GPUs.
The amount of performance gained by the use of a multicore processor
depends on the problem being solved and the algorithms used, as
well as their implementation in software (Amdahl's law). For so-called
"embarrassingly parallel" problems, a dual-core processor
with two cores at 2GHz may perform very nearly as fast as a single
core of 4GHz.[1] Other problems though may not yield so much speedup.
This all assumes however that the software has been designed to
take advantage of available parallelism. If it hasn't, there will
not be any speedup at all. However, the processor will multitask
better since it can run two programs at once, one on each core.
For more on Multicore Processors visit Wikipedia
Multi-Core Computing.
|