It seems we need to post an Amdahl's law graph yet again.
Game code is not embarrassingly parallel. The graphics portion of game code is embarrassingly parallel, but on the whole certain tasks will always have dependencies on other tasks because of the real-time nature of gaming. You can't go too far forward because the player can do something different, and future results depend on present actions. Ultimately a frame has to be assembled and presented to the player and there are many, many dependencies in this process which are time-consuming and difficult to unroll.
As you add more cores and parallelize more, you get less return for every thread added as you run into portions that cannot be parallelized. I don't know how many times it has to be said, not everything can be parallelized. It's literally computer science 101. At 2 thread engines, much of the low hanging fruit has been spawned off into the second thread. In 4 thread engines they have likely spawned off every easily divisible task. 6-8 thread engines must be designed to be parallel from its inception and the main game thread probably does very little actual work. At 8 threads you are quickly running into the law of diminishing returns in attempting to parallelize more tasks. Some tasks are more efficient to run in a serial manner but result in less throughput than a parallel implementation. At 8+ threads you likely have to design your actual game (gameplay) to utilize more threads; e.g. many AI actors in Assassin's Creed, 64-man Multiplayer in BF4.
It costs increasingly large amounts of money to get increasingly small amounts of performance gain as you add more cores. 8 cores is as close to a "sweet spot" as we'll see in the near future. The next-next-gen consoles ought to have 8 faster cores
Game code is not embarrassingly parallel. The graphics portion of game code is embarrassingly parallel, but on the whole certain tasks will always have dependencies on other tasks because of the real-time nature of gaming. You can't go too far forward because the player can do something different, and future results depend on present actions. Ultimately a frame has to be assembled and presented to the player and there are many, many dependencies in this process which are time-consuming and difficult to unroll.
As you add more cores and parallelize more, you get less return for every thread added as you run into portions that cannot be parallelized. I don't know how many times it has to be said, not everything can be parallelized. It's literally computer science 101. At 2 thread engines, much of the low hanging fruit has been spawned off into the second thread. In 4 thread engines they have likely spawned off every easily divisible task. 6-8 thread engines must be designed to be parallel from its inception and the main game thread probably does very little actual work. At 8 threads you are quickly running into the law of diminishing returns in attempting to parallelize more tasks. Some tasks are more efficient to run in a serial manner but result in less throughput than a parallel implementation. At 8+ threads you likely have to design your actual game (gameplay) to utilize more threads; e.g. many AI actors in Assassin's Creed, 64-man Multiplayer in BF4.
It costs increasingly large amounts of money to get increasingly small amounts of performance gain as you add more cores. 8 cores is as close to a "sweet spot" as we'll see in the near future. The next-next-gen consoles ought to have 8 faster cores
