Current open multi-threaded performance and productivity problems?

Hi all,

I’m curious as to the open problems in the field of game desing related to multi-threading. I often hear about games not fully utilizing all available cores on a machine.
I know the basic approach to multithreading a game is to have different threads execute different tasks, like rendering, AI, physics, sound decoding and whatnot.
Now I understand this may result in a very unbalanced load distribution as one task is bound to take much longer than the other so the granularity is not ideal. But is this actually the real problem limiting parallel performance? And what about creating smaller tasks and using a work-stealing task-managers? Is programmer productivity a big issue? How much time and money is spent on it?

All in all, I’d like to get a better idea about the state-of-the-art approached to expoting parallelism in video games and what the current chalenges and limitations are. I’m asking because I have several ideas about automated exploitation of functional parallelism for a dissertation project. Unfurtunately I can’t really find what the issues are in industrial settings (as opposed to scientific ones). The best I’ve found so far but it’s a bit old and the number of CPU cores on consumer hardware hasn’t scaled up as much as we expected (although that’s probably because we can’t exploit them all yet), so I don’t know how relevant those problems and proposals still are.
On the other hand most research I’ve found seems to focus on vectorization, something video games pretty much invented with the GPU, and spreading tasks over heterogeneous systems, which seems rather pointless for games that are already using the GPU anyway and don’t generally have access to less common hardware such as fpga’s.

I would appreciate any insight into this issue.

Cheers,