Hello, everyone! I’ve been doing some research into computer hardware lately, and one thing that I keep coming across is this idea that the speed of a processor, while important, isn’t the only thing that affects a computer’s overall performance. I’m having a bit of a hard time wrapping my head around this because I always thought that a faster processor meant a faster computer. Can anyone explain why this isn’t necessarily the case? I’m really interested to learn more about this!
In: 97
The processor often has to wait for other devices to do things before it can complete tasks. For example, it might have to retrieve information from (or write information to) a hard disk, a network connection, or the RAM – it might even have to store information in the RAM temporarily during its calculations, since the amount of data the processor can store internally is quite small. Many computers have a graphics card (aka GPU), which is essentially a separate CPU that is specialized for processing graphics. If so, the CPU essentially delegates various types of processing to the graphics card. There may be some other specialized devices that the CPU defers to sometimes too, such as a sound card or security devices.
The motherboard manages the flow of information between many of these devices, so it can also have an impact (though in many cases, motherboards are simply incompatible with newer components instead of being too slow for them).
Nowadays, CPUs are very complicated and the quoted speed (3 GHz or whatever) doesn’t tell you everything about their performance. They have different numbers of cores and different cache sizes, and they are often designed to step their speed up and down, maintaining the maximum speed only for short bursts. The computer’s ability to cool itself (depending on fans, air holes, how cluttered/dusty the inside is, the external temperature, etc.) can have a big impact on this.
The processor is one of the most important parts of a computer, but there are a number of other components that also make up a complete computer. Depending upon what you are trying to do, the speed of these other components can also be important to a computer’s overall performance.
If the program you are using loads or handles a lot of data, or needs to constantly load and write data, the performance of the drive(s) that the data is loaded from or written to is very important. If your program is very graphics-oriented (such as a game,) a faster video card may be a bigger boost. If the program requires a lot of memory to operate (to keep large amounts of data in memory while manipulating it, etc.) more RAM may be needed.
It is not unusual for your CPU to be idle a lot of the time while it is waiting for other components to complete their task. A faster CPU will not help if the bottleneck is that the computer is loading data from a low-speed platter drive or if it does not have enough memory to keep everything in the main memory while running a very large program.
Think of your processor like the engine in your car. Turn the engine faster and the car moves faster – simple, right?
But what engine is it? What are the gear ratios? You could probably make a lawnmower engine move a car if you gear it low enough and the engine will certainly be spinning really fast, probably faster than a V8 in the same car but the V8 will certainly be faster than the lawnmower engine.
Even if you have the best car with the best engine, you can still get stuck in traffic and slowed to a crawl
For your computer, the processor is one of the critical parts of the computer but it can only do so much on its own. It needs memory to store information and the memory can only read and write so quickly. It also needs to access information from long term storage or other computers which takes time and it may have a separate specialist processor like a GPU for some tasks. All these separate parts are joined together by other components called buses and they can only communicate so fast.
Even if you make the processor (CPU), GPU and RAM as fast as possible and load everything into RAM to eliminate network and disk access, the GPU, RAM and CPU can only work together as quickly as the bus allows. Putting the best parts on the cheapest motherboard that will hold them is like having a massive city with no major roads between residential, commercial and industrial areas and constant traffic problems – it no-longer matters what each part can do alone because they can’t share information fast enough so they keep waiting for the message to get through from the other parts
Your computer crunches a lot of data. Picture data like a highway, or road system. Sure, you may have a 6-lane highway but if it turns off into a 2 lane back road, traffic’s gonna back up.
Hz means a processor can do **something** a number of times per second. GHz means it can do **something** billions of times per second which is amazing but we still don’t know what it’s accomplishing unless you look closer.
A typical operation might be “look up this number from memory and do some math with it” and you can imagine the speed of the memory is very important there. Also if you need to, for example, multiply 2 numbers together, an operation like that requires multiple steps to move the data to the correct part of the CPU and actually do the multiplication operation, which uses more than 1 cycle (Hz) to accomplish. Some CPUs may do it more efficiently than others. If you can finish multiplication in only 4 steps instead of 5 steps but your multiplier design takes up more space on your chip and limits the attention you can pay to other parts of your design like the speed that you can do addition… what do you prioritize?
Modern processors also use tricks to guess what they’re going to do next so they can get a head start on it. This can be extremely useful but also complicated, works differently depending on the exact task, and of course if it is done wrong it’s a lot of wasted effort. The Pentium 4 processor is an infamous example of a processor that did this differently from other designs and did a very bad job *in certain tasks* because its predictive execution (guessing the next step) was frequently wrong.