210 likes | 308 Views
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
E N D
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)
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