9

It has been shown in other questions that due to the state of computer applications, multi-core processors suffer from diminishing returns. Is this still the case in today's world?

Do most new applications embrace multi-threading, and thus take advantage of having multiple cores? If not, do the newer 64-bit OS's help take advantage of the cores by assigning tasks/processes to different cores? Or do multi-core processors still continue to suffer from the same (or similar) diminishing returns?

Please back up any claims with references.

1
  • 2
    Being on a x64 operating system would not make any difference when you have a program with multiple threads. The compiler landscape differences between 2008 and 2012 is huge. Until there was an easy way to perform an action across multiple threads, having a CPU with the ability to perform multiple threads at once, is sort of pointless. Even today its still not easy enough to do that.
    – Ramhound
    Jul 26, 2012 at 10:49

4 Answers 4

7

It depends heavily on what you do.

For regular ol' Word and Excel and Minesweeper and whatever else your mom uses, one core is still enough and more than two is an overkill. These kinds of applications spend most of the time idling, waiting for user input.

For gaming you'll benefit from at least two. After that it depends on the game. Theoretically you could run each AI opponent on a separate thread, but the central game logic cannot be easily parallelized - you need one place where all the results are put together to form a coherent game state. So there is usually one "main" thread that everyone waits on.

For multimedia, real number crunching, and science every core counts. These are tasks that are either inherently multithreaded or can be easily made so, and the developers have strong incentive to take advantage of all available processing power.

Power users like to multitask. Torrent, VirtualBox, screen capture, video, minecraft, and web browsing all running at the same time. So you're going to benefit from each CPU-hungry app having its own core. Nowadays it's popular to livestream your game. So that's two cores for the game, at least one more for the encoder thread, and at least one more for the rest of the system. That's at least 4 cores.

5
  • 1
    In general, good game AI is far harder than reconciling multiple actions. That's just fancy addition. Secondly, you presume games which have a single central game state. That's not necessarily true either. Even if it did, that's not necessarily a barrier to threading either. E.g. physics calculations are typically done in parallel. And finally, games also have a large graphics rendering part, which leads itself to threading too.
    – MSalters
    Jul 26, 2012 at 12:01
  • I doubt a single core is ever the right choice (just put a really slow formula into Excel...) and I think you're over-simplifying a bit. What about, for example, the Turbo Core (AMD) / Turbo Boost (Intel) feature on newer processors? It allows my hex-core AMD to park half it's cores and run the other half at a faster clock rate - and Intel's version is even more finely grained, I believe - so the processor can re-optimise on the fly for the work required of it. Does that make them a better choice? The issue can only accurately be addressed by real-world measurements and benchmarks.
    – DMA57361
    Jul 26, 2012 at 12:03
  • I agree completely with @DMA57361 A few years ago my Uncle bought several single core AMD computers for his pre-teen children. Background processes (Windows Update being the most egregious offender) regularly rendered them virtually unusable for minutes at a time by maxing out the CPU. Jul 26, 2012 at 15:48
  • Don't forget hyperthreading. More advanced Intel processors can simulate extra processor core by providing an extra set of registers in each core and allowing threads to use different parts of each processor core at the same time to further increase multitasking performance.
    – bwDraco
    Jun 22, 2014 at 20:05
  • 3D rendering is another one that shows a big advantage. If you're an animator or graphic designer and do a lot of renders; all professional level software has the advantage to take advantage of every core your machine has to offer (and more in the case of networked clusters). Performance will scale linearly with number of cores.
    – Jason C
    Jun 22, 2014 at 20:59
5

I'm afraid the answer is still, as it always has been, "it depends on what you're doing".

Yes, there are diminishing returns from adding more and more cores, and there always will be if you only run a single application at a time.

Even in a well made multi-threaded application, many of the tasks that are threaded out are done so to wait for the slowest components in the machine - hard drive, networking - without impacting the apparent performance to the user. These cannot be improved by greater parallelisation so any theoretical speed up limit is unreachable for practical purposes.

It's worth noting that there are few "big" applications that are not multi-threaded (just check out your OS's Task Manager equivalent, it should be able to tell you how many belong to each process - my Firefox is currently using 31, for example).

Of course, running multiple non-interdependent applications is not as constrained by these limits. As you add more cores you can run more applications concurrently with little drop in processing performance (hard drive, networking, etc performance doesn't scale as nicely, however). In practice, even this too is subject to diminishing returns as there is an unavoidable overhead to managing the distribution of work between cores, communication pipelines, and so on.

For example, this Tom's Hardware post (from 2009) attempts to look at performance of a few multi-core processors under simultaneous applications - running a game along side a AVG scan (both of which are probably multi-threaded). The quad-, tri- and dual-core processors all perform similarly with the game only, but add the simultaneous AVG scan and the performance (measured by average FPS) drops by 22%, 40% and 59% respectively.

So, while a quad core offered no performance boost over a dual core when running one intensive application, as soon as another intensive task appeared it did end up being twice as performant. Unfortunately, I can't find much else that investigates how well this scales with more cores and more intensive tasks.


And then you have to take note of modern features of processors such as Intel's Turbo Boost / AMD's Turbo Core. These particular features allow a multi-core processor it park cores (put them in to a slower, low power, mode) and use the spare energy to overclock the cores that remain active - allowing the processor to optimise itself to provide as much processing power as possible for the number of tasks it is presented with.

2

For adding fuel to the fire, I read here that Android is actually slowed down by having more than one core:

The use of multi-core processors can actually make Android devices slower, said Mike Bell, general manager of Intel's mobile and communications group, who blames Android's multi-threading capability, or lack thereof, for the operating system's difficulty in effectively handling powerful CPUs.

The more cores a device has, the more power it requires - and, for the time being, that amount of power is simply too much for Android devices to balance.

2
  • Hmm, wouldn't editing this into your original question work better?
    – Journeyman Geek
    Jul 26, 2012 at 13:37
  • I'm thinking this whole thread will be converted to a community wiki/FAQ, and thought that it would be best to leave the question as is, and add this separately. @Moderators -- should this answer be merged with the question or left as is? Jul 26, 2012 at 13:41
0

Of course, it depends on what you're doing, but yes, there are diminishing returns.

Simple, everyday applications such as word processing or Web browsing benefit little from having more than two processor cores. Scientific computing and gaming applications tend to make better use of four (or more) cores and/or hyperthreading capability as they tend to be designed to make the most of modern hardware, but the benefit of more than four cores is limited.

In addition, not everything is compute-bound. Adding processor cores won't help if your workload is I/O bound. If you've ever installed an SSD to replace a mechanical hard drive, you'll probably know that everyday computing performance is limited more often than not by your computer's storage. In busy server environments where a large number of cores is used to enable the system to handle large numbers of users and requests simultaneously, specialized disk arrays, SSD, and other storage systems are used to ensure maximum performance under load.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .