LookItsRain :
gamerk316 :
LookItsRain :
I think the bigger reason is how the programs are optimized, most cant use more than 2 cores, and if you look at the g3258 review from tom's, the OC 3258 keeps up with an i5 4690k in optimal conditions. Companies dont want to spend the money and resources to optimize programs for multicore systems.
As I've tried to explain many, many times now, most of the work done by CPUs is serial code. The stuff that is parallel is typically done by the GPU, not the CPU. There's very little you can actually thread in a way that actually increases performance.
This is nothing new. There were tons of systems in the 70's that pushed massively parallel processors as the way to gain performance in the future. By the 80's, all were defunct. And the reason then is the same now: You can't make serial execution parallel.
That's why, in a game like BF4 that uses >10 threads, a 2 core i3 3220 can perform close to an 8 core FX-8350. Even though the extra cores should theoretically help, the 2 core chip is fast enough to get a similar amount of work done over the same time span. The fact you are doing more at once on the FX is offset by the longer period of time it takes to finish each individual thread.
That's why I laugh every time I hear people asking why AMD doesn't produce a 16-core desktop processor.
*Is a Software Engineer with 8+ years of practical coding experience.
Then explain why an 8350 destroys an i5 4690k in most desktop applications. Tthe coding exist in those applications, why not games.
Not really. They trade blows for the most part.
Some stuff you can make parallel really easily. Anything that has to do with file conversion or encoding, for instance. That's simply a matter of creating a bunch of threads to work on a small part of the file at a time. Simple. But these days, you see this stuff being GPU accelerated, because why limit yourself to 8 cores when GPUs have hundreds?
For games, it is near impossible to make things parallel. First of, you have the various parts of the engine that need to share a large amount of information while maintaining the same global state. And anytime you have multiple things that require access to the same physical memory, you can not thread well, because every time a thread needs to change the state of some of the contents in memory, you have to put a software lock in place, which stops the other threads from executing, defeating the purpose of threading in the first place.
That being said, you can thread individual parts of the engine very well. Rendering is almost always GPU accelerated, because the process of rendering is massively parallel. Same with Physics, which is much faster to compute on the GPU. AI? Not so much. Audio? Why bother? And what's left is mostly serial code that can't be made parallel under ANY circumstances.
Games have threaded about all they can. The only real enhancement that's obvious is, once graphical API's have a decent way to make multithreaded rendering work, you will not be forced to have one very large thread dedicated to rendering, but on stronger CPU's, that won't cause any performance increase.
Point being, games are already significantly threaded, as the entire rendering backend and the entire physics backend are GPU accelerated. The stuff that's left can't be made parallel. It's really that simple. When you look at games like BF4 or Cysis 3, and look at the extra threads they use, they're ALL threads dealing with DX processing. None of the other parts of the code have been made parallel, because the other parts of the code CAN'T be made parallel.