Another way of communicating with peripherals (through their controllers, of course) is to use the system bus and pretend that the registers in the device controller are words in memory. This clever idea, called memory-mapped I/O, because I/O devices are mapped into fixed regions of the memory address space, gives a potentially unlimited supply of virtual ports. Today it is the commonest way to do I/O and even computers that have explicit IN and OUT instructions with real ports augment their capacity with memory-mapped I/O. Some chips, like the Motorola 68000 which was used to power the early SUNs and Macintoshes, had no explicit I/O instructions, relying totally on memory-mapped I/O. The term used by some authors to denote explicit I/O that uses IN and OUT instructions is isolated I/O, as opposed to memory-mapped I/O. |