Whether a system uses programmed or interrupt driven I/O, it must still periodically send instructions to the I/O modules. Two methods are used for to implement this: memory-mapped I/O and isolated I/O.
With memory-mapped I/O, the I/O modules appear to the CPU as though they occupy locations in main memory. To send instructions or transfer data to an I/O module, the CPU reads or writes data to these memory locations. This will reduce the available address space for main memory, but as most modern systems use a wide address bus this is not normally a problem.
With isolated I/O, the I/O modules appear to occupy their own address space, and special instructions are used to communicate with them. This gives more address space for both memory and I/O modules, but will increase the total number of different instructions. It may also reduce the flexibility with which the CPU may address the I/O modules if less addressing modes are available for the special I/O instructions.
NEXT STOP: I/O: Direct Memory Access