Due to the parallel nature of the Playstation 2's many processors, communication between components is quite a complicated process. The system must guarantee a certain order of transmission from one part of the system to the other as well as provide a means to decide which transfer is most important. Like the rest of the system, the mechanism for arbitrating what data goes where is well designed and encapsulated in each of the bus interfaces.
The System Interface (SIF) and System Bus (SBUS) controllers connect the IOP to the main bus and control all data going to and coming from the IOP.
The SIF is comprised of a 8 quad-word FIFO and is used to transfer data to/from the IOP.
The SBUS is the bus between the SIF and the IOP. (THIS SECTION NEEDS MORE DOCUMENTATION - msporny)
The Vector Processor Interface (VIF) handles communication between each VU and main memory. Its main purpose is to decompress incoming data to each VPU (such as vertex data).
The Graphics Interface (GIF) unpacks and formats incoming data from main memory into a form that the GS can understand. An example would be packed vertex and color data that is unpacked into draw commands that will display a triangle on the screen of a specified color.
The DMA controller for the PS2 is an integral part of the system. All the system processors depend on the DMA controller to handle transferring data around the system. Once one of the main processors such as the EE or VPUs format data in a format that another processor can understand it, the DMA controller handles the monotonous task of physically feeding the data to the targeted processor.
An example of this would be the Emotion Engine creating a list of polygons to be rendered to the screen. The display data is then DMA'ed to the GIF via the DMA Controller, which then sends it to the Graphics Synthesizer to become displayed to the screen.