i
i
i
i
i
i
i
i
26.2. Limited Resources 657
In most cases, CPU cores are a homogeneous resource; all cores are the same,
and any of them are equally well suited to a given workload (there are some
exceptions, such as the Cell processor used in Sony’s PLAYSTATION 3 console).
In contrast, GPUs contain a heterogeneous mix of resources, each special-
ized to a certain set of tasks. Some of these resources consist of fixed-function
hardware (for triangle rasterization, alpha blending, and texture sampling), and
some are programmable cores. On older GPUs, programmable cores were further
differentiated into vertex and pixel processing cores; newer GPU designs have
unified shader cores which can execute any of the programmable shader types.
Such heterogeneousresources are budgeted separately. Typically, at any point,
only one resource type will be the bottleneck, and the others will have excess ca-
pacity. On the one hand, this is good, since this capacity can be leveraged to
improve visual quality without decreasing performance. On the other hand, it
makes it harder to improve performance, since decreasing usage of any of the
non-bottleneck resources will have no effect. Even decreasing usage of the bot-
tleneck resource may only improve performanceslightly, depending on the degree
of utilization of the “next bottleneck.”
26.2.2 Storage
Game platforms, like any modern computing system, possess multi-stage stor-
age hierarchies, with smaller, faster memory types at the top and larger, slower
storage at the bottom. This arrangement is borne of engineering necessity, al-
though it does complicate life for the developer. Most platforms include optical
disc storage, which is extremely slow and is used mostly for delivery. On plat-
forms such as Windows, a lengthy installation process is performed once to move
all data from the optical disc onto the hard drive, which is significantly faster.
The optical disc is never used again (except as an anti-piracy measure). On con-
sole platforms, this is less common, although it does sometimes happen when a
hard drive is guaranteed to be present, as on Sony’s PLAYSTATION 3 console.
More often, the hard drive (if present) is only used as a cache for the optical
disc.
The next step up the memory hierarchy is RAM, which on many platforms is
divided into general system RAM and VRAM (video RAM) which benefits from
a high-speed interface to the graphics hardware. A game level may be too large to
fit in RAM, in which case the game developer needs to manage moving the data
in and out of RAM as needed. On platforms such as Windows, virtual memory
is often used for this. On console platforms, custom data streaming and caching
systems are typically employed.