The Nintendo 64 game machine is made up of a variety of resources. These resources include the CPU, memory, memory bus bandwidth, IO devices, the RSP, the RDP, and peripheral devices. The software is designed to provide raw access to all of the resources. The software layer basically translates logical functions and arguments into exact hardware register settings.
Management of most resources is left up to the game developer. Resources such as processor access and memory usage are too precious to waste by using some general management algorithm that is not tailored to a particular game's requirements. The only management layers provided are the audio playback and I/O device access.
The audio playback mechanism is fairly consistent from game to game. Only the sounds themselves are different. Therefore, a general tool to stream audio playback is useful. The I/O devices can be managed to provide simultaneous multiple access contexts for different threads. For example, streaming audio data and paging in graphics database might require sharing access to the ROM.