Input and output devices (I/O) are the parts of a computer system, such as the keyboard or the modem, that send or receive information to and from the computer's processors. In memory-mapped I/O systems, I/O devices use part of the computer's memory as the address for transmitting messages. In computers with isolated-memory systems, I/O and memory have different addresses.
Video of the Day
Computer systems can map I/O to an address in the memory banks because the process of messaging I/O devices is similar to exchanging data with computer memory. The same bus -- the electronic pathway for transmitting information to and from the processors -- serves to access both memory and input and output devices. One disadvantage to isolated memory is that memory-map systems are simpler for the bus, as it uses the same set of addresses for I/O and memory operations.
In a memory-mapped system, it becomes difficult for the computer to distinguish I/O operations from other software options accessing memory; isolated-memory systems don't have this problem. I/O operations in memory-mapped computers only use part of the full memory address, to make their location more distinctive. Isolated-memory systems are more complex because, unlike memory mapped computers, they can't use the same decoding and control systems for memory and I/O devices. In memory-mapped computers, any instruction that brings data out of memory also operates on input and output devices.
In an isolated-memory computer, programming is cleaner: I/O has its own separate address, so the computer can use the addresses to identify whether it's memory or I/O that a program should work with. With memory-mapping, however, any instruction that references memory can also be used as an instruction to the I/O system. With isolated-memory, programs need added "In" and "Out" instructions to extract or send data to memory or I/O addresses.
When a computer uses a memory-mapped I/O system, some of the space the computer uses for memory is devoted to input and output addresses, leaving less for actual memory storage. With memory mapping, I/O addresses have to be written so that they're distinct from the memory banks around them; assigning I/O addresses is simpler in isolated-memory systems. Because I/O devices take up less space than memory at a given address, it's possible some of the memory space at the I/O address will be unused and wasted.