Multithreaded Game Engine Architectures

A friend of mine has just published his first GamaSutra article called Multithreaded Game Engine Architectures. For future game technology development this resource might prove valuable.

Brief quote from the conclusions:

“The asynchronous function parallel model can be recommended for new game engines because of the high amount of possible parallelism and the fact that existing components need only few changes. This model is a good choice for game engines aimed at the generation of multicore processors that have a relatively small number of cores. The only drawback is the need to tune thread running times to minimize the impact of worst case thread timings. More research is needed to know how this timing fluctuation actually affects game play.

The data parallel model is definitely something to think about for the future. It will be needed when the amount of processor cores increases beyond the number of tasks available for a function parallel model. For current use the increased scalability doesn’t offer enough benefits compared to the trouble of coding custom components to support this type of data parallelism.”

Read the full story here.

3 thoughts on “Multithreaded Game Engine Architectures

  1. I forgot to mention…

    - Music synthesis used to be done on sound cards (using a DSP or special hardware). Now, only high end sound cards have hardware synthesis. Most PC music synthesis is done on the CPU.

    - Audio decompression, mixing, and 3D sound used to be done on sound cards. Now only high-end cards bother.

    - Video decompression used to be done on video cards. I think that most (maybe all) of it is done on the CPU now.

    When there are 16 cores, at least 12 of them will be taken up doing the rendering. You won’t need to worry about having so many spare cores that you don’t know how to divide up your game AI, physics, etc. Designing for a multi-core system is still a must though.

  2. You’re going to think I’m crazy, but…

    As the number of cores increases, sometime around 8 or 16, you’ll find that computers will stop shipping with special graphics processors. This will happen on low-end computers first.

    I could go into excruciating detail, but here’s my basic reasoning:

    1) I worked on speech recognition. In the early 1990′s SR required a DSP, which is more cost-effective at signal processing than using a generalized CPU. However, as soon as the P33 appeared, and the processing from the $20 DSP could be offloaded onto the $500(?) CPU (using near 100% of the CPU) DSP speech recognition boards disappeaered, almost over night.

    2) Graphics processors are vector processors. They’re great for scan-line rendering. More advanced graphics, such as ray tracing, radiosity, etc. can’t be “vectorized” terribly well. They need a general-purpose processor. Furthermore, they scale very well, which means a 16-core processor will ray-trace about 2x as fast as an 8-core processor. Conversely, applying 16-cores to a scan-line rendering algorithm will only make it marginally faster (1.5x?) than using only 8 cores.

  3. Thanks for the link Juuso! :D