# If the speed of electrical charge hasn't changed, how have computers become faster?

Everyone knows computing speed has drastically increased since their invention, and it looks set to continue. But one thing is puzzling me: if you ran an electrical current through a material today, it would travel at the same speed as if you did it with the same material 50 years ago.

With that in mind, how is it computers have become faster? What main area of processor design is it that has given these incredible speed increases?

I thought maybe it could be one or more of the following:

• Smaller processors (less distance for the current to travel, but it just seems to me like you'd only be able to make marginal gains here).
• Better materials
• That's a nice question. Of course, the material itself is not that important -- in the last 100 years, cars have become faster, but the gas is still the same gas (more or less), only the engine became more efficient. Initial answer can be found here, but I hope a more details answer will follow. – Ran G. Sep 10 '15 at 13:33
• Size is a big issue here. But afaik we have reached (or are close) to a physical barrier in chip design. (I am not an expert here, others will know more about this). Of course, the processor size is not the only parameter. – A.Schulz Sep 10 '15 at 14:27
• CPU tact frequency is limited by the speed of electrons in the used materials, but other factors have been dominating it. – Raphael Sep 10 '15 at 17:59
• Because they weren't optimally fast in the first place, and they still aren't. Speed of light isn't the rate-determining step. – user207421 Sep 10 '15 at 23:22
• Shameless plug: superuser.com/questions/543702/… – bwDraco Sep 11 '15 at 3:22

if you ran an electrical current through a material today, it would travel at the same speed as if you did it with the same material 50 years ago.

With that in mind, how is it computers have become faster? What main area of processor design is it that has given these incredible speed increases?

You get erroneous conclusions because your initial hypothesis is wrong: you think that CPU speed is equivalent to the speed of the electrons in the CPU.

In fact, the CPU is some synchronous digital logic. The limit for its speed is that the output of a logical equation shall be stable within one clock period. With the logic implemented with transistors, the limit is mainly linked to the time required to make transistors switch. By reducing their channel size, we are able to make them switch faster. This is the main reason for improvement in max frequency of CPUs for 50 years. Today, we also modify the shape of the transistors to increase their switching speed, but, as far as I know, only Intel, Global Foundries and TSMC are able to create FinFETs today.

Yet, there are some other ways to improve the maximum clock speed of a CPU: if you split your logical equation into several smaller ones, you can make each step faster, and have a higher clock speed. You also need more clock periods to perform the same action, but, using pipelining techniques, you can make the rate of instructions per second follow your clock rate.

Today, the speed of electrons has become a limit: at 10GHz, an electric signal can't be propagated on more than 3cm. This is roughly the size of current processors. To avoid this issue, you may have several independent synchronous domains in your chip, reducing the constraints on signal propagation. But this is only one limiting factor, amongst transistor switching speed, heat dissipation, EMC, and probably others (but I'm not in the silicon foundry industry).

• This is good info. I had never before considered there was an upper limit on clock speed. – nick Sep 11 '15 at 0:17
• That 3cm at 10GHz is optimistic. Electrons in wires tend to be quite a bit slower than photons in a vacuum. – 8bittree Sep 11 '15 at 18:25
• @8bittree: the speed of the electrons isn't relevant, is it? What matters is the speed of the signal, which is much faster. – Harry Johnston Sep 12 '15 at 3:38
• @HarryJohnston Hmm... seems you're correct according to Wikipedia. But the signals themselves are still slower than light. And 3cm at 10GHz is based on light in a vacuum – 8bittree Sep 12 '15 at 14:38
• In addition to smaller transistors being faster, you can add more on a chip. There's a time/space tradeoff for circuits, so more transistors means faster circuits. ie. you can make a 32-bit adder out of only a few dozen transistors, but it'd take many clock-ticks to compute a single addition. The latest Intel CPU's can do it in one clock tick, which I would guess requires 100,000's of transistors. – BlueRaja - Danny Pflughoeft Sep 12 '15 at 19:50

There are a lot of complex variables that affect overall CPU speed, but a main one is clock speed which increased into the mid 2000s and then flatlined due to physical limitations. Power consumption per chip also increased over that period to make up for chip losses/ leakage. CPU chips just got too hot and cooling technology became more important, and more wattage could not be applied (without literally melting them!).

Extremetech.com gives a nice survey that points out that Moore's law is thought to be actually mainly fueled by Dennard scaling. The latter collapsed in the mid 2000s. There are many other design factors/improvements involved in chip "speed" (where "speed" is measured as overall code execution time and not merely clock speed) that tended to mask the inflection point in hardware capability such as caches, CPU parallelism/multicore, branch prediction, etc., which were added with smaller gate widths (and therefore far more gates per chip for additional functionality). Gate widths have also tended to stop decreasing or at least decrease less quickly each generation.

Why are these limiting trends not very well known? Some of the entities that have the most knowledge of these trends "have the most to lose" and are actually the least likely to publicize them. E.g. Intel, worth billions of dollars, will not likely publish proprietary internal data pointing to limits or decreases in future performance.

There are new possibilities on the horizon which could lead to entirely new trends (but some involve almost completely different technology/manufacturing techniques) including photonic chips, 3-D chips where chips are laid down in multiple layers, quantum computing, nanotechnology such as nanotube transistors, etc.

• see also moores law & clock speed – vzn Sep 10 '15 at 15:58
• One thing I've long wished for would be the development of operating-system and language support for the concept of groups of cores, with each group having a uniform memory system, and all cores also having access to a common memory system. It should be possible for a piece of code to say "I want to spawn a thread that sees exactly the same memory as I do at all times" and have the system ensure that all threads which are supposed to see the same memory run on the same cores. Some algorithms can be made much more efficient when such guarantees are available, but on many systems the only... – supercat Sep 10 '15 at 18:37
• ...way to achieve that is to have an application pick a CPU core and don't allow threads to run on any other, an approach which is really pretty horrible. – supercat Sep 10 '15 at 18:41
• Clock speeds have not risen significantly in the last 10 years. Adding cores, doing sets of instructions in a single instruction, etc. reducing bottlenecks elsewhere eg. memory bandwidth have all been the major contributors to modern cpu 'speed'. – JamesRyan Sep 11 '15 at 11:04

Another consideration (in addition to the other great answers) is the delegation of tasks to other processors. In the early computing days, there was only one processors. For graphics, the computation was shared with other computation in the same CPU. Now, we have separate processors for graphics processing.

## Multiple Cores

Many of the modern processors have multiple cores, in the same piece of silicon. Because they share the same piece of silicon, they are not affect as much by the slowing of going off chip to another core / processor. Example: Graphics Processors.

The early 8 bit microprocessors had a smaller addressing range than today's 32-bit and 64-bit processors. The modern processors have an increased memory range, which means more computation can be performed in memory rather than having to access external storage.

This also applies to on-chip memory too. The larger address space allows for bigger memories closer to the central core, while still leaving a large address space outside the silicon.

## Pipelines and Caches

With memory becoming cheaper, modern computers are now implementing more sophisticated data and instruction pipelines as well as data and instruction caches. This speeds up execution by reducing the need to fetch from slower memory (outside the silicon) to internal cache. Some processors have the capability to contain for loops in their instruction caches.

## Summary

Today's computers are a lot faster, not only due to the advances in transistor and silicon technologies, but also due to the delegation of tasks to other processors / cores. Memory becoming faster and cheaper allows processors to have lots of memory close to the CPU. Addressing ranges allow for more memory which means less fetches to external storage. Larger register sizes allow for more data to fetched per cycle (4 bytes with a 32-bit system, 1 byte with an 8-bit system). Multiple cores allow for paralleling operations rather than serializing them.

Almost all advances in computer speed come from one of these areas:

## Smaller transistors

Two things result from making transistors smaller:

1. They are physically closer together, so the time it takes for an electrical signal to travel from source to destination is smaller. So although electrical signals don't travel any faster than 50 years ago, they often travel shorter distances now.
2. More transistors can be included on a chip, which means more "work" can be done at the same time. The more transistors are added, the harder it is to find useful work for them to do, but many clever tricks are used (see below).

## More "useful work" per instruction

For example, some processors lack instructions to multiply or divide integers; instead this task must be performed with slow software routines. Adding multiply and divide instructions speeds things up considerably. Adding floating-point instructions can speed up software that requires floating-point numbers.

An important way of doing more "useful work" per instruction is increasing the word size. CPUs that can perform operations on 32-bit numbers often require far fewer instructions to perform the same task as 16-bit or 8-bit CPUs.

Some processors support instructions that do several things at once, in particular instructions that do the same operation on multiple data items (SIMD).

## More instructions per cycle

The "clock cycle" is how the processor goes from its current state to the next state. In a sense it is the smallest unit of work the processor can do at a time. However, the number of clock cycles a particular instruction takes depends on the processor's design.

With the advent of pipelined processors, it became possible for separate instructions to "overlap", i.e. one would start before the previous one finished. However, certain instructions can invalidate the next instruction, which will not be known until the next instruction has partially executed, so things can get complicated. (Pipelined processors include logic to make sure everything works out OK—but performance characteristics are more complex.)

Superscalar processors take this to the next level, literally allowing two instructions to execute at the same time, and out-of-order execution takes it one step further, allowing instructions to be executed out of order. These features require analysis of the instruction stream, working out which instructions don't clash with each other.

Although there are other such tricks (e.g. branch prediction, speculative execution), what's more important is the overall picture:

• every instruction takes a certain number of clock cycles to complete (not necessarily constant)
• but multiple instructions can be in progress at once
• so there is a measurable "instructions per cycle" which is >1 for high-end processors
• but it depends very strongly on the workload

## More cycles per second

In other words, higher clock speed. Increasing clock speed not only increases heat generated, but also requires much more disciplined chip design, because there is a smaller time limit for the circuit to stabilise. We got a lot of mileage out of this one until the 2000s when we hit some practical limits.

## Data in the right place at the right time

Although the components within the CPU have been getting closer and closer together due to shrinking transistors, the CPU and RAM are still a good 5-10cm apart. If an instruction needs something from RAM, that instruction won't take 5 or 6 cycles to complete, it'll take around 200. This is the von Neumann bottleneck problem.

Our main weapon against this is the cache. Recently-accessed data is more likely to be accessed again, so it is kept in special memory (called cache) that is within the CPU chip, making it much faster to access.

However, other techniques (such as pipelining and branch prediction) help by allowing the processor to do useful work while waiting for data to arrive, and also predicting which data might soon be needed.

## Multiple and/or specialised processors

It's a lot easier to write software for a single processor than for multiple processors. However, sometimes the performance/cost/power consumption benefits make it worthwhile.

Also, certain processors are particularly well suited to certain tasks. For instance, GPUs are specifically designed for the calculations required for rendering 2D and 3D graphics and effects.

Multi-core processors are essentially multiple processors on a single chip.

When computers can do more computations per unit of time, they are seen as being faster. Each computation may not be done any faster than before, but there are more computations being done. A good analogy would be the number of steps that a runner takes. If a runner behaved according to Moore's law, the runner would be able to take twice as many steps every two years. In essence, the runner would be covering twice the distance in the same amount of time the runner did two years ago. Distance divided by time equals speed. 2 X Distance equals 2 X Speed.

The processing power of a computer/CPU it's really how fast electricity travels but rather how fast it can be turned on and off. The faster you can switch between current flowing and not flowing, the more information you can process within a cpu or transmit down the line.

For typical processors used in PCs, heat dissipation has been a limiting factor for over a decade, where air cooled processors in PC's have been limited to about 4 ghz. Water cooling raises this to about 5 ghz, and nitrogen cooling has been used to push clock rates to around 6 ghz to 6.5 ghz.

The clock rate is basically a function of voltage versus circuit logic size (how long it takes a switch to change states). The higher the voltage or the smaller the circuit logic, the faster the rate, but this presents a heat dissipation problem as densities typically increase along with reduction in circuit logic size. With the high density, there's not a lot of room left for heat conducting material to dissipate the heat. Reducing density increases cost, and also increases propagation delays due to longer lengths of the circuitry.

CPU's haven't gotten that much faster in the last few years, the current Intel i7 4790K (4.0 ghz, 4.4 ghz turbo) isn't that much faster than the second generation Intel i7 2700K (3.5 ghz, 3.9 ghz turbo), other than it's faster clock rate (about 14.3% faster). On the other hand, since 3d graphics can take advantage of parallel operations, video cards have increased in performance by a factor around 3 in the last 4 or 5 years, some have the equivalent of 3,000+ sub-cores.

Although the already given answers are good, they all seem very complicated!

The quick "TLDR" answer is "number of logic gates", and "how quickly can those logic gates fire". Think of the logic gates like 1s and 0s. This is just a transistor/vaccum tube/whatever turning on or off. 1 is on 0 is off.

Electricity doesn't move any faster or slower, but you can cram more ones and zeroes onto your chip because the ones and zeroes themselves are smaller. And you can make them flip faster over time. Does that make a little simpler answer?

The two biggest factors by far are the fact that transistors have shrunk by a ridiculous degree and therefore we have now smartphones with far over a billion transistors, and the fact that switching a transistor from one state to another has become a lot faster. The faster switching translates directly into more speed. The higher number of transistors increases speed indirectly because it is an enabler of many other improvements being mentioned: We have caches because we have more transistors. We have more and bigger registers because we have more transistors. We have vector instructions because we have more transistors. We have dual, quad core, or ten core processors because we have more transistors.

To a much smaller degree we have speed improvements because of better design. For example, a multiplier isn't just faster because we have more transistors, but because we use better methods. Branch prediction has improved beyond just having more transistors available. But all in all, this is a small effect compared to the brute power of a billion transistor.

(The processor in the first Mac was called a Motorola 68000 processor because it had 68000 transistors. A new iPad has about 20,000 times more).

I am a mechanical engineer, so I am not familiar with how much this affects the speed of a processor or whether it has become a limiting factor or not, but the physics behind it are sound. The inductance and capacitance of the circuit will affect how fast the digital voltage signals can rise and fall -- thus affecting the switching speed. Ideally, the switching signals would be nice square waves. In reality they are slightly deformed and sloped at the edges. The signals have to go high and be high long enough to be read before the next clock cycle. Essentially, the signal wave needs a "flat spot" at the top. If you switch too fast, you will get more of a pointy wave signal. Those of you who are more familiar with digital signals can clarify if needed, but the idea is right.

• Welcome! As far as I'm aware, everything you say is true. But I don't see how it answers the quesstion of how computers have been able to get faster over the years. – David Richerby Dec 15 '15 at 22:36