Using the Vector Units
Serial Connection
One option is to use VPU1 in a serial connection. In this case, the CPU/VPU0 team is used exclusively for game overhead including player AI and the physics of the virtual world. The processed information is then sent to the 16K of scratchpad RAM on the chip and then to the 32MB of RDRAM and finally to VPU1 for the transformation and lighting calculations before it is sent to the Graphics Synthesizer. Moving the data from one part of the PS2 the next is all software controlled. This is somewhat similar to traditional pipelines. You can imagine the CPU/VPU0 team as a traditional CPU and the VPU1 as the T&L unit on your GeForce.
Parallel Connection
If the game overhead is small enough, it is possible to use the vector units in a parallel configuration. Both the CPU/VPU0 team and VPU1 can do geometry calculations simultaneously. VPU1 gets priority to the Graphics Synthesizer, and VPU0 can store its answers in the scratchpad RAM or in the main RDRAM (again the data transfer is done by the programmer).
The results from each are then combined before the information reaches the Graphics Synthesizer. For example, in a first person shooter, it might possible to have the CPU/VPU0 do all the 3D calculations for displaying the weapons models and have VPU1 do all the calculations for the player models and walls of the level.
![PlayStation2 Technical Overview [ Vector Unit Flow Chart from Sony's paper @ 373 x 368 ] > View Full-Size in another window.](images/3b-s.gif) Vector Unit Flow Chart from Sony's paper
|
|
![PlayStation2 Technical Overview [ Example of parallel connection @ 412 x 726 ] > View Full-Size in another window.](images/4-s.gif) Example of parallel connection
|
|
Confused?
If this sounds confusing, it is. The inclusion of two vector units basically allows a developer to split up the work between different parts of the CPU. It's similar to having extra employees at a company. With more employees, splitting up the workload allows the company to take advantage of task specialization and be more productive. Unfortunately, more workers will make the manager's job more difficult. He needs to properly split up the work and ensure that things are running smoothly. Let's say that each worker can carry four boxes at one time. The manager must make sure that the employee is moving all four boxes in one trip to the storage room instead of making four trips carrying one box alone.
PS2 developers face a similar challenge in using these vector units efficiently by splitting up the work, ensuring that the workload on each unit is balanced, and managing the data transfer between the different parts of the Emotion Engine. It's like having many untrained workers who can follow instructions perfectly. There is a lot of potential productivity, but managing the units to achieve the full potential can be very difficult.