Overview

The Input/Output (I/O) subsystem exists on most operating systems for three main reasons:

1. to hide device-specific details in device drivers through which the operating system transfers data and control

2. to provide a fair and safe access scheme to the devices, since most of them are shared resources

3. to provide a consistent, uniform, and flexible interface to all devices, allowing programs to reference devices by name and perform high-level operations without knowing the device configuration.

Usually, the I/O software is structured in layers:

- device-independent system interface
- device drivers
- interrupt handlers

The interrupt handler is mainly responsible for waking up a device driver after an I/O operation completes. The device driver performs device-specific operations, such as setting up registers for DMA and checking device status. The device-independent system interface provides a uniform interface to user-level software and common I/O functions (that is, protection, blocking, buffering) that can be performed across different devices.

For the RCP, there are two modes of I/O operations:

- DMA provides a minimum of 64-bit transfer between the RDRAM and any of the devices

- IO provides a 32-bit transfer between the CPU and any of the devices

The RCP consists of the following major devices and interfaces (see Figure 8.1.1 below):

- Reality Signal Processor (RSP)
  This internal processor supports both DMA and IO operations between RDRAM and I/Dmem addresses.

- Reality Display Processor (RDP)
  This internal processor supports only DMA from either RDRAM or Dmem addresses to its internal buffer.

- Video Interface (VI)
  This write-only interface connects to the video DAC. It supports only DMA from RDRAM to a specific video buffer address and allows you to change video modes and configurations.

- Audio Interface (AI)
  This write-only interface connects to the audio DAC. It supports only DMA from RDRAM to a specific audio buffer address and allows you to set the audio frequency.

- Peripheral Interface (PI)
  This read-write interface connects to the ROM cartridge and other mass storage devices. It supports DMA as well as IO Read/Write to ROM addresses.

- Serial Interface (SI)
  This read-write module interfaces to the PIF, which connects to the game controller and modem devices. It supports DMA as well as IO Read/Write to PIF RAM addresses.

  Figure 8.1.1 Logical View of RCP Internal Major Devices and Interface Modules

  Copyright © 1999 Nintendo of America Inc. All Rights Reserved Nintendo and N64 are registered trademarks of Nintendo Last Updated January, 1999