|
[In this Sponsored Feature, part of Intel's Visual Computing microsite, Shrout and Davies examine the 'shift in processor architecture
and design over the last few years' that has changed once simple rules regarding CPUs and computer chips in general into a 'much
more complicated scenario'.]
Introduction
No matter what platform you work on,
developing a game can be a lot like trying to build something on quicksand:
Somewhere between the time you start designing the game and the day it
launches, the landscape you thought you were developing for shifts.
This might
be a simple change to the game design, the inclusion of a new graphic technique
to a more drastic shift to a completely new hardware platform, while on the PC
the hardware installed based is constantly evolving. That is, while you were
busy writing game code for the current hardware in the studio, the hardware
industry has been aggressively increasing processor performance and adding new
features to your customers' PCs.
Until as recently as 2005 the main
processor advances were targeted at improving single threaded performance with
each generation offering higher operating frequencies and better instruction
level parallelism. Developers assumed that as newer processors were released
they would "just be faster," and the code and applications would scale
accordingly, frequently code was designed with the assumption the top end PC at
the time of release would be faster than the development system the original
code was written on.
However, a shift in processor architecture
and design over the last few years has changed this one-time rule into a much
more complicated scenario. With the introduction of the Intel Core i7
processor game developers can now up to eight times the number of computing
threads that were once available.
Processor speed and features are no longer increasing
in simply a linear fashion and new technologies such as turbo boost can have a
significant impact on the system's performance, making it critical that the code
written for any application be able to not only scale from processor generation
to generation but also reliably adapt to future architectures down the road.
Innovation
on a Timeline
This fundamental shift in processor
performance is a result of the many technical innovations in the world of
processor architecture. Even in the last three years we have seen at least two
cycles of the Intel "tick-tock" model of improvements: The "tick" introduces a
die shrink process technology
that allows designers to fit more
transistors in the same physical die space, while the "tock" introduces a new
microarchitecture with performance and feature enhancements.
During the "tick" years the process
technology has evolved from 65nm-generation products introduced in 2005 to 45nm
generation in 2007 and will become 32nm by the end of 2009. During the "tock"
years the original Intel Pentium processor microarchitecture evolved into the
Intel Core microarchitecture in 2006, leading to the introduction of the
Intel Core i7 processor and a new microarchitecture in 2008. Figure 1
illustrates this progression.
Figure 1.
Intel's "tick-tock" model of architecture progression.
The upcoming Sandy Bridge
microarchitecture will be introduced in 2010 and, in keeping with the other
architectures shown in Figure 1, will differ dramatically from
previous-generation processors. Although code written and optimized for one
architecture will run on succeeding architectures, developers can frequently
improve performance going forward and avoid potential performance pitfalls as
new processors are released by ensuring their code can enumerate the hardware it's
running on and adapt to it.
Programming
with Multiple-Threads in Mind
For many years the hardware and software
development cycles were mostly independent of each other. Programmers of
compilers and other low-level applications needed intricate knowledge of the
hardware underneath in order to extract the best performance from the platform,
while games relied on the compiler to optimize the game code for the hardware
while the coder concentrated on finding the best algorithm for the job . Today
the same level of hardware expertise is now required for more general computing
tasks, such as game development. And it's easy to understand why.
Average game development takes from about
one to three years, and any new core engine technology must be programmed to
last even longer on the market as it will likely span multiple shipping titles;
it is not unusual for a large-scale game engine to take up to five years total
development time from inception to shipping. Intel's rapid-development
tick-tock model means the average game engine will need to span many different
processor architectures.
The introduction of multi-core processors (rather than
simply higher clocked processors) means that developers need to write code that
scales to make use of that hardware. With the increasing emphasis on improving
processor power through larger core counts, the hardware can no longer speed up
existing code easily unless the designer has purposely built the software with
multi-threading in mind. Consider the Intel Core i7 processor in Figure 2, to
fully utilize this processor the game would need to use 8 threads communicating
through a hierarchical cache.
Programming decisions made today will
dramatically impact, the performance of a game on future architectures. So
although processors are continually getting faster and more powerful,
developers must make sure they are properly using the computing power at their
disposal.
|