Input/Output 

All data manipulation not directly performed in the CPU or between CPU and
primary memory is I/O.

Resources needed in the system for I/O
  Protocol - set of standardized rules for consistent interaction between 
    system and i/o devices, including 
      physical properties
        of media
        of interface
      access methods
      timing methods
      timing standard
      data encoding
      data formats
      error detection and recovery
 
  Interface between I/O and CPU.
    Memory mapped vs. port mapped vs. channel (including DMA).
    Wikipedia :  Memory-mapped_I/O and Channel_I/O

  Buses, cables, and interfaces.

  Control modules in both host(system) and peripheral devices.
    Provides signal translation, timing support, physical control, etc.

    (Early CD-ROMs often coupled to audio card).

I/O control methods - 
  CPU controlled 

    Memory mapped : 
      Interface to the I/O is treated as a set of primary memory locations. 
        Software drivers determine meaning of data stored or retrieved. 

      - Loss of some memory space (8086 - 300K) because it is reserved for
        I/O interfaces. Less important with 4GiB address space.
 
      + All instruction modes available 

      - May slow overall memory bus access down.
        * Cache architecture alleviates this.

      - Can limit or complicate contiguous memory range. 
        Original x86 architecture had a 1MiB boundary because I/O was mapped
          above 640K.
        * Virtual memory on modern systems solve this issue.

    Port mapped : 
      CPU has separate set of instructions that access specific pins
        on CPU that act as ports or that cause a demux to connect portions
        of the address and data pin-outs to a different set of lines tied 
        to i/o devices.
  
      + Separate bus tied to I/O devices. CPU can go back to using memory
        bus while I/O devices prepares response on separate lines.
          Run out of order instructions 
            and/or
          Cached instructions. 
 
      - Adds complexity to CPU design and motherboard.

      - Often limited set of instructions using specific CPU registers. 
          May need to write to memory before other actions can be taken. 

   Channel I/O : 
     CPU passes I/O chores off to secondary controller.
  
     Devices interface with controller rather than system bus.

     Controller reads/write directly to/from memory.

     Interrupts CPU when task is done or problem encountered.

 next