Emotion Engine
VPU0 and VPU1
The Emotion Engine is the main processor of the PS2 and performs all of the 3D geometry calculations. The major components to the Emotion Engine are the MIPS CPU core, the FPU, the MPEG-2 decoder, and two additional floating-point vector processors: VPU0 and VPU1. These are just different parts of the CPU, in the same way a GeForce has a 2D core and a 3D core. The vector units are the most unique components of the chip.
Vector units can be thought of as specialized FPUs that are extremely fast at evaluating the multiplication and addition of vector equations. An FMAC (Floating-Point Multiply-Adder Calculator) is the silicon inside of a FPU that actually does the math. They're used for doing vector dot products, for example.
The Pentium III FPU has one FMAC and the Hitachi SuperH-4 used in the Dreamast has four FMACs. The PS2's main FPU has one FMAC, VPU0 has four FMACs, and VPU1 has five FMACs for a total of ten FMACs. In other words, for every clock cycle the PS2 can calculate ten vector multiplication/addition equations such as x3=x0·x1 + x2.
T&L also requires calculating a lot of "1/sqrt(a)" equations. These type of calculations require multiple cycles of FDIVs (Floating-Point Dividers) rather than FMACs. The Emotion Engine has four FDIVs which means it can calculate four different 1/sqrt(a) equations every 13 clock cycles. It's possible to waste some memory and bandwidth and create a lookup table to speed up these calculations. As a blanket statement however, the Emotion Engine is faster than any T&L unit on today's consumer PC graphics card currently available.
![PlayStation2 Technical Overview [ The Emotion Engine Block Diagram - We highlighted the parts of the CPU with FMACs. @ 763 x 501 ] > View Full-Size in another window.](images/3a-s.gif) The Emotion Engine Block Diagram - We highlighted the parts of the CPU with FMACs.
|
VPU0 works as a coprocessor to the MIPS CPU through a dedicated 128-bit bus and so it's easier to imagine the VPU0 as being a second specialized FPU. We'll just call it the CPU/VPU0 team. On the other hand, VPU1 has a dedicated bus to the Graphics Synthesizer and can be seen as a completely separate processor. Where it gets really interesting is how VPU1 works with the CPU/VPU0 team.