Emotion Engine

Download Report

Transcript Emotion Engine

Emotion Engine
A look at the microprocessor at
the center of the PlayStation2
gaming console
Charles Aldrich
The PlayStation2

Unlike many of the devices we have looked
at, the PS2 seeks to do a specific task very
well, namely 3D Gaming
 As a result the construction of the platform is
different from most computers
 The EmotionEngine is also quite different as
a result of this
The PlayStation2

EmotionEngine is specifically designed
to handle several tasks (in order of
importance)
– Geometry Calculations
– Behaviour/World Simulation
– System Functions
Creating Graphics
The EmotionEngine is not responsible
for creating and displaying graphics,
rather it is responsible for passing a list
of rendering commands to the graphics
synthesizer
 The graphics synthesizer, in the PS2 is
a souped up video accelerator

EmotionEngine basic architecture








MIPS III core
A Vector Unit (actually made up of 2, VU0 and
VU1)
Floating Point
Image Processing Unit (does mpg2)
Graphics Interface Unit
RDRAM interface
I/O interface
DMA Controller (10 channel)
*Image courtesy of arstechnica.com
Architecture, cont.

All components are connected via a 128-bit
internal bus
 Toshiba, who developed the EmotionEngine
(and licensed it to Sony) decided, early on,
that the EmotionEngine was not going to be a
general purpose microprocessor rather it was
only going to be designed to run 3D games
 This allowed the design team to determine
the roles of the various internal devices
during design
Architecture, cont.

The idea was to set up the various
components to work in groups to
accomplish set tasks
– CPU + FPU: basic program control, housekeeping, etc
– CPU + FPU + VU0: behavior, physics calculations, etc
– VU1: simple geometry calculations that produce display
lists which are sent directly to the Graphics Synthesizer
– IPU: image decompression

Next we’ll look at how each of these
groups work together
CPU/FPU/VU0 group

Both the FPU and the VU0 have a dedicated
128-bit bus, so they do not need to use the
shared system bus
 The dedicated bus allows the VU0 to function
as a MIPS III coprocessor
 The VU0 and the CPU share the
ScratchPadRam (16k of very fast RAM)
 The SPRAM functions as a workspace where
both the CPU and the VU0 work together on
a piece of data before sending it out over the
system bus
VU1/Graphics Synthesizer
Similar to the VU0 and the CPU, the
VU1 has a dedicated 128-bit bus
connection to the Graphics Interface
 Do not work as closely as the VU0 and
CPU, neither controls the other

MIPS III Core details

The EmotionEngine uses a specialized
version of the MIPS architecture
– 32 128-bit registers
– 2 64-bit integer ALUs
– 128-bit load/store unit
– Branch execution unit
– FPU Coprocessor
– Vector Coprocessor
MIPS III Core details, cont.

Cache
– 16k instruction
– 8k data

Capable of speculative execution
– 2 part branch-prediction mechanism
– Fairly simple
MIPS III Core details, cont.

Pipeline
– Relatively short, 6 stage pipeline
•
•
•
•
•
•

1. PC Select
2. Instruction fetch
3. Instruction decode and register read
4. Execute
5. Cache access
6. Write back
FPU coprocessor is fairly standard
SIMD

The emotion engine takes advantage of
SIMD (Single Instruction stream,
Multiple Data stream)
SIMD, cont.

As the picture shows, parallel streams of data
all have the same instructions done to it
 The EmotionEngine supports (using both
ALUs) 128-bit integer SIMD in several
configurations
– 16 8-bit ops/cycle
– 8 16-bit ops/cycle
– 4 32-bit ops/cycle
Visual Power

The EmotionEngine is best suited for
precision graphics, and the power of the
processor comes from the Vector Processing
units
 As we’ve discussed already, there are two
vector units
 The two are similar on an architectural level,
but very different on a functional level
VU0
128-bit SIMD/VLIW design
 Works as a coprocessor with the CPU
 Has its own set of 32 128-bit FPRs
(floating point registers)
 Also has 16 16-bit integer registers for
integer operations

VU1
Has all the architectural features of VU0
 Also has some additions which pertain
to geometry functions in coordination
with the Graphics Synthesizer
 This includes the addition of the EFU
(Elementary Functional Unit) which
does basic math essential to geometric
processing

Basic Stats
Clock Speed - 300 Mhz
 Transistors - 10.5 Million
 Memory - 32MB (Direct RDRAM)
 Memory Bandwidth - 3.5GB/sec

Performance Numbers





Floating Point - 6.2 Gigaflops
Perspective Transformation - 66 Million
Polygons/sec
Lighting - 38 Million Polygons/sec
Fog - 36 Million Polygons/sec
Curved Surface Generation (Bezier) - 16
Million Polygons/sec
Conclusion

The EmotionEngine is clearly a very
capable graphics processor, but its true
power is most evident when placed in
the context of the PS2 which was
designed to take advantage of the
processors specific architecture