[SOLVED] What cores and threads really are for?

Sep 8, 2020
28
0
30
I just watched a video on youtube showing ryzen 5 3500x gives a better fps playing games than ryzen 7 2700 which has more cores and threads. What cores and threads really are for and which is a better cpu
 
Solution
I just watched a video on youtube showing ryzen 5 3500x gives a better fps playing games than ryzen 7 2700 which has more cores and threads. What cores and threads really are for and which is a better cpu
Generalizing it for software in general, software can spawn separate tasks, called threads, that can be worked on independently. These tasks can be assigned to CPU cores. If a CPU core has additional hardware support, it can take on another task to work on in parallel. A key point though, is that for these tasks to run in parallel, they have to actually be able to run. So if a program has a task to load data from storage and another task to process that data, the processing task can't run because it's waiting for the load data...
Sep 5, 2020
32
5
35
It all depends on the games, as generic as that answer is. It's much easier for games to benefit from single core speed as you can just freely assign any tasks to a single core without thinking about it. For multi-core management, you need to come up with clever ways to split up the workload, which is not always possible and definitely not easy as these tasks are not allowed to be reliant on each other etc.

So what are cores and threads for? To do more in the same time. Nowadays getting a push of 200mhz on a single core seems to be a huge task, having 2 more cores not so much. It's the way the hardware mostly scaled during the last years. However, games are struggling to really make use of it. I don't know how it is nowadays, but a few years ago 4 cores were basically all that was required, any addition barely benefited games.

Usually more cores lead to slightly lower rates, so the decision might be having an 8 core with 3.8 ghz base vs. a 6 core with a 4.0ghz base etc. The second one might currently perform better in games, but will be significantly worse for video editing and other non-game stuff that can use the cores better. Hence the typical recommendations nowadays are to go with Intel if you are strictly gaming (they have less cores and more ghz) and AMD if you are more into video editing and similar stuff or multi-purpose.
 
  • Like
Reactions: Marhrk
Depends on the game really.
Some games do utilize more threads than others. There aren't that many that do utilize a massive amount of threads, but in the future that might change.

Usually games benefit from higher single core performance. So higher frequency and/or better IPC(Instructions per Cycle - number of instructions executed per each clock cycle) will usually render in better performance for gaming loads, inspite having a lower thread count.

In that case, if the game only utilizes 4 threads then a CPU with higher IPC and frequency like the 3500X will be faster than a higher thread count one like the 2700.

Productivity stuff like rendering and what not are optimized to utilise more threads, so a higher thread count CPU will be preferable in these kinds of scenarios.
 
  • Like
Reactions: Marhrk
Think of it this way--single core performance is how fast the computer 'feels' when you're using it. Faster single core, faster it can go.

But threads and cores allow the system to do more than one thing at a time, so on most modern OSs that are constantly f ing around with stuff for no reason, you need at least 4 cores just to keep that happy. If you're using other applications at the same time, you need a core each for those to each run at full speed. And each core may not run as fast as a single core, or it might, which would give you a real advantage has being able to process x6 (on 6 cores) at the single thread speed would make any background stuff run easily since it would not have to interrupt the cpu that's busy for it's own work.
 

alexbirdie

Respectable
Little hint: The base is a core. Depending on the architecture, every core can handle 1 thread ( f.i.4c/4t-cpus) up to 4 threads per core ( f.i. newest IBM power-pcs).

Intel and AMD do have 2 threads per core. 1 core with 2 threads increases processor-throughput by about 25-30%, not more, because great parts of the core must be used by both threads, and only some additional registers are built into a core to provide 2 threads to run partially ( not completly) independent parallel working.

Although I did lot of multithreading programming for my own, it is diffcult to explain it.

But the analysis and design of the software ( does not matter if commercial software or games) is the most important part ( decide, what parts make sense to run parallel and which parts would only cause an additional overhead if multithreaded).
 
I just watched a video on youtube showing ryzen 5 3500x gives a better fps playing games than ryzen 7 2700 which has more cores and threads. What cores and threads really are for and which is a better cpu
Generalizing it for software in general, software can spawn separate tasks, called threads, that can be worked on independently. These tasks can be assigned to CPU cores. If a CPU core has additional hardware support, it can take on another task to work on in parallel. A key point though, is that for these tasks to run in parallel, they have to actually be able to run. So if a program has a task to load data from storage and another task to process that data, the processing task can't run because it's waiting for the load data task to be finished.

In addition, processors of different generations may be built with different implementations of how to run programs. Sometimes these implementations work better than others. In the case of the Ryzen 3500X and the Ryzen 2700, the 3500X was made with an implementation that clock-for-clock, performs better. This implementation affects the per-core performance (often referred to as single-thread performance)

Games are usually built such that their general tasks, like handling input, processing game logic, and compiling how to render the scene, run one after another. The tasks themselves may have many sub-tasks that can run in parallel, but overall, there's still an order of doing things. So games often don't scale as well as say a video encoder, which means that a processor with strong per-core performance often beats another processor with more cores when it comes to games.

EDIT: Would also like to point out that clock speed also can be a factor, but it has to be used in conjunction with per-core performance.
 
Solution