Ken said:
The number of transistors on a die depends on the resolution of the
process used - how small you can make the transistors. Being smaller
means there is a shorter path for the signal. The signal can only move
at the speed of light or less, so if you want more speed you need things
closer together. We are already down to a size where things get a
little wierd and there are unforseen effects discovered all the time, but
that is the simple explination.
Luck;
Ken
Having more transistors can, on its own, yield greater speed independent of
propagation time. The solution is using them to do more things at once, to
perform operations in a more efficient way, and to have more instructions
readily at hand in the form of high-speed cache. Of course having millions
of really big transistors is not practical, at least unless you want
room-filling mainframe-sized PCs pumping out enough heat to warm your house
at the South Pole. The solution is to make the transistors smaller. When
you make them smaller you place them closer together which is where the
propagation speed can come into play, at least as long as it is in your
power to keep everything synchronized. But along with the advantage of
lower power consumption you get, with certain design changes, much faster
switching speed. And of course, with the smaller transistors you are able
to pile even more of them on and apply them to doing more things at once,
and doing operations in a more efficient way, and to providing more cache.
When I wrote about using more transistors to do things more efficiently I
was referring to mathematical and logical operations which may be done in
more than one way. You _can_ multiply by repeated addition 11245 X 65456,
adding the number 11245 to a register 65456 times which would take an
inordinate amount of time. Or you can have a hardware multiplier which
performs the operation in a few dozen clock states. The first requires very
few transistors, the second requires many more. Another example is an
instruction which requires repeating the same operation on a large array of
data stored in memory. A program can loop over the memory addresses doing
the calculation in very many steps. Or you can have a built-in instruction
which can, after being told the memory range, perform all of the
calculations without intervention. As before one requires (relatively) few
transistors and the other many. When you get into the realm of the
calculations used for 3D graphics those transistors make modern games at
high frame rates possible instead of three frames an hour which might have
been available in old-style rendering farms. Of course in modern chips the
thing to do is to have multiple complete CPUs which can perform totally
unrelated tasks or which can be programmed to cooperate on separate parts
of the same task in order to finish it more quickly.
Sorry, I do tend to ramble on. It must have been the wine -- BTW a really
fine 2003 Chilean Carmen Reserve Merlot from Valle de Casablanca. Too bad
that was the last bottle... :-(