Do multi-core CPUs still suffer from diminishing returns in today's world?
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.
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.
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.
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.