Don't be fooled by core count - An over-simplified guide to understanding CPU performance

in #technology3 years ago

cpu.jpg
With the recent launch of AMD's Ryzen platform, as well as the upcoming Intel core i9 line up, the CPU world seems to be in an arms race based almost exclusively on core count. The latest offerings from both major companies boast single chips with over a dozen cores and twice as many threads. It is general knowledge that the vast majority of the population is easily influence by these numbers, thinking that higher is always better...But don't be fooled, these numbers can be very misleading. I have created this guide to try and help you better understand how the overly cryptic specs that manufacturers provide truly relate to overall CPU performance. In order to explain all of this in a way that hopefully everyone will understand, i will use a simple analogy.

Core Count:

One of the first things everyone thinks of when it comes to CPUs is the core count. "Dual-Core", "Quad-Core" etc.
For the purpose of our analogy think of a core as a person, to be specific, a baseball player.
Each core can be seen as a single player, thus "dual-core" would mean 2 players, and "quad-core" would mean 4 players.

Frequency:

The second spec you have likely seen is the frequency (or clock speed). The frequency is measured in Hz (Hertz), which is a fancy scientific way of saying "things per second". Most modern day processors will have the frequency listed in GHz (Gigahertz) which simply means 1 billion things per second.
Back to our analogy, the frequency will be the number of baseballs each player can throw in 1 second.

I understand some of you may be thinking this sounds dumb, but with only these two definitions we already have enough information to start breaking apart the myth that more cores means better performance.

For example:

Let's say we invite a single MLB player to throw some baseballs, and he manages to throw 100 balls in 1 second (impossible I know, but stick with me here).

Next we invite two players from the local high school team to give it a shot, They manage to throw 20 balls per second each.

Finally we invite a classroom full of 25 toddlers to try, each toddler manages to trow 1 ball per second.

We can conclude that in one second:

MLB player: 100 balls thrown

High school Players: 40 balls thrown

Toddlers: 25 balls thrown

from the above results it is clear that the best performer was the MLB player, but what would these specs look like for a CPU?

MLB Player: Single-Core, 100Hz

Highschool Players: Dual-Core, 20Hz

Toddlers: 25-Core, 1Hz

I believe we can all start to see that the core count isn't the most important thing to consider.

While core count and frequency are very important, they are not the only aspect that will influence CPU performance. However, If the above information is all you take from this article, I hope that you are now more confident when it comes to choosing a CPU. For any of you who want to dig a bit deeper, I will continue this analogy for some other very important specs below.

Architecture:

CPU architecture is simply the way in which instructions are carried out. Using the baseball analogy, architecture can be seen as the style of pitching. Some players may throw overhand, some may throw underhand. Assume that a player can throw the same number of balls both overhand and underhand. However, when throwing overhand, this player is more likely to throw the ball sideways by accident. In most cases, a ball thrown sideways is not very useful. So if out of every 100 balls thrown underhand the ball is thrown sideways 10 times, and for every 100 balls thrown overhand the ball is thrown sideways 40 times we can see that more useful work can be done throwing underhand than overhand for this specific player. The same is true for CPU architectures. Some architectures may allow for more useful work to be done by each individual core, thus improving performance.

Bandwidth:

Bandwidth is the amount of data that can be processed at once. Assume our MLB baseball player has 5 friends that he can throw the ball to. However, he is only allowed to throw each friend one ball per second. Although our player may be able to throw 100 balls per second, once he has thrown a ball to all 5 friends, he will have to wait until he is allowed to throw any more. So we can see that if we increased the number of friends to 100 our player would no longer need to wait in order to throw another ball. however if we increase the number of friends to 200 it would make no difference vs the 100 friends, our player is throwing at his max speed in both cases. The same is true for CPU bandwidth in which increasing the bandwidth will only increase performance up to a point and then will have no further positive effects.

FSB (Front Side Bus):

The FSB affects the performance in much the same way as bandwidth, but rather than limiting the amount of friends the player can throw to, we can think of the FSB as the person handing balls to our player. The player can only throw balls once they have been given to him, thus our player is limited by the person giving him new balls to throw, unless this person can do so at a rate faster than the player can throw.

Cache:

Cache is extremely fast memory located on the CPU itself. It can be seen as a bucket of extra balls in our analogy. This bucket of balls can be filled up before hand, thus allowing our player to use these balls if the FSB is not fast enough to keep up with his demand. The larger the cache, the larger the bucket.

Multi-Threading (Hyper-threading):

From our earlier analogy, we have CPU cores being seen as a single player. In this case multi-threading can be seen as teaching this player to throw with both hands at the same time. This allows one physical player (or thread) to throw twice as many balls at the same time...This may seem difficult for one person to accomplish, and the technology behind multi-threading is just as complicated. But with practice, the player can in theory double the amount of balls thrown.

I hope this article has been helpful, I know it may be an over-simplification in many respects, but sometimes the simple answers are the best.

Did I miss anything? Disagree? Let me know what you think in the comments below!

Don't forget to follow us on Instagram for the latest news @kavemantech

Sort:  

Agreed and a very good and timeconsuming explanation thanks for that. Most of the time i would just check sites like cpuboss.com. But its interesting to really understand rather than to just get and trust results.