1. I/O Techniques
1.1. Programmed
1.1.1. CPU has direct control over I/O
1.1.2. CPU waits for I/O module to complete operation
1.1.3. Wastes CPU time
1.2. Interrupted Driven
1.2.1. Overcome CPU waiting
1.2.2. No repeated CPU checking of device
1.2.3. I/O module interrupts when ready
1.3. Direct Memory Access (DMA)
2. Evolution of I/O functions
2.1. CPU directly control peripheral device
2.2. Use controller or I/O modules
2.3. Implement interrupts
2.4. I/O module given direct access to memory via DMA
2.5. I/O module enhanced to become a processor
2.6. I/O module has a local memory
3. I/O Module
3.1. Interface to CPU and Memory
3.2. Interfce to one or more peripherals
3.3. Functions :
3.3.1. Control and Timing
3.3.1.1. CPU asks module to check status of attached devices
3.3.1.2. Module tells the status
3.3.1.3. CPU request for data transfer to module if device is ready
3.3.1.4. Module gathers the data and transfer to CPU
3.3.2. CPU Communication
3.3.2.1. Command decoding (read/write)
3.3.2.2. Data (exchange between CPU and module)
3.3.2.3. Status reporting (to CPU since peripherals is slow)
3.3.2.4. Address recognition for the devices connected to it
3.3.3. Device Communication
3.3.3.1. Involves command,status information and data transfer
3.3.4. Data Buffering
3.3.4.1. Essential function to overcome speed mismatch
3.3.5. Error Detection
3.3.5.1. Paper jam or bad data