ABSTRACT

With the arrival of the Xbox 360 and PlayStation3, developers were given up to three CPU cores to work with. The PC platform was also quickly moving to multiple CPU cores. Writing straightforward code that utilized the whole machine was manageable. There were multiple systems in a game engine. The systems were executed sequentially and could be run on separate threads as long as their inputs and outputs were pipelined. I call this the thread-per-system paradigm. For example, thread0 would submit frame(N), while thread1 animated frame(N + 1) and thread2 processed user input for frame(N + 2). Frame latency increased, but the game also ran faster and with richer content so the trade-off was reasonable. Once the systems were broken out, the traditional CPU optimization opportunities remained. Using mature profiling tools, the CPU’s potential was there to be had just as it was in the single-core days.