Module 8 - Input output
Module 8 - Input output
ng
3
I/O Ports
• I/O devices are connected to the computer
through I/O circuits. Each of these circuits
contains several register called I/O Ports. Some
are used for data while others are used control
commands. Like memory locations, the I/O ports
have address and they are connected to the bus
system. These addresses are known as I/O
address and can only be use in input (IN) or
output (OUT) instructions.
4
Input/Output Problems
• Wide variety of peripherals
– Delivering different amounts of data
– At different speeds
– In different formats
• All slower than CPU and RAM
• Need I/O modules
5
Input/Output Module
• Interface to CPU and Memory
• Interface to one or more peripherals
6
Generic Model of I/O Module
7
External Devices
• Human readable
– Screen, printer, keyboard
• Machine readable
– Monitoring and control
• Communication
– Modem
– Network Interface Card (NIC)
8
External Device Block
Diagram
9
I/O Module Function
• Control & Timing
• CPU Communication
• Device Communication
• Data Buffering
• Error Detection
10
I/O Steps
• CPU checks I/O module device status
• I/O module returns status
• If ready, CPU requests data transfer
• I/O module gets data from device
• I/O module transfers data to CPU
• Variations for output, DMA, etc.
11
I/O Module Diagram
12
I/O Module Decisions
• Hide or reveal device properties to CPU
• Support multiple or single device
• Control device functions or leave for CPU
• Also O/S decisions
– e.g. Unix treats everything it can as a file
13
Input Output Techniques
• Programmed
• Interrupt driven
• Direct Memory Access (DMA)
14
Three Techniques for
Input of a Block of Data
15
Programmed I/O
• CPU has direct control over I/O
– Sensing status
– Read/write commands
– Transferring data
• CPU waits for I/O module to complete operation
• Wastes CPU time
16
Programmed I/O - detail
• CPU requests I/O operation
• I/O module performs operation
• I/O module sets status bits
• CPU checks status bits periodically
• I/O module does not inform CPU directly
• I/O module does not interrupt CPU
• CPU may wait or come back later
17
I/O Commands
• CPU issues address
– Identifies module (& device if >1 per module)
• CPU issues command
– Control - telling module what to do
• e.g. spin up disk
– Test - check status
• e.g. power? Error?
– Read/Write
• Module transfers data via buffer from/to device
18
Addressing I/O Devices
• Under programmed I/O data transfer is very like memory
access
• Each device given unique identifier
• CPU commands contain identifier (address)
19
I/O Mapping
• Memory mapped I/O
– Devices and memory share an address space
– I/O looks just like memory read/write
– No special commands for I/O
• Large selection of memory access commands available
• Isolated I/O
– Separate address spaces
– Need I/O or memory select lines
– Special commands for I/O
• Limited set
20
Memory Mapped and Isolated
I/O
21
Interrupt Driven I/O
• Overcomes CPU waiting
• No repeated CPU checking of device
• I/O module interrupts when ready
22
Interrupt Driven I/O
Basic Operation
• CPU issues read command
• I/O module gets data from peripheral whilst CPU does other
work
• I/O module interrupts CPU
• CPU requests data
• I/O module transfers data
23
Simple Interrupt
Processing
24
CPU Viewpoint
• Issue read command
• Do other work
• Check for interrupt at end of each instruction cycle
• If interrupted:-
– Save context (registers)
– Process interrupt
• Fetch data & store
25
Changes in Memory and Registers
for an Interrupt
26
Design Issues
• How do you identify the module issuing the interrupt?
• How do you deal with multiple interrupts?
– i.e. an interrupt handler being interrupted
27
Identifying Interrupting
Module (1)
• Different line for each module
– PC
– Limits number of devices
• Software poll
– CPU asks each module in turn
– Slow
28
Identifying Interrupting
Module (2)
• Daisy Chain or Hardware poll
– Interrupt Acknowledge sent down a chain
– Module responsible places vector on bus
– CPU uses vector to identify handler routine
• Bus Master
– Module must claim the bus before it can raise interrupt
– e.g. PCI & SCSI
29
Multiple Interrupts
• Each interrupt line has a priority
• Higher priority lines can interrupt lower priority lines
• If bus mastering only current master can interrupt
30
Example - PC Bus
• 80x86 has one interrupt line
• 8086 based systems use one 8259A interrupt controller
• 8259A has 8 interrupt lines
31
Sequence of Events
• 8259A accepts interrupts
• 8259A determines priority
• 8259A signals 8086 (raises INTR line)
• CPU Acknowledges
• 8259A puts correct vector on data bus
• CPU processes interrupt
32
ISA Bus Interrupt System
• ISA bus chains two 8259As together
• Link is via interrupt 2
• Gives 15 lines
– 16 lines less one for link
• IRQ 9 is used to re-route anything trying to use IRQ 2
– Backwards compatibility
• Incorporated in chip set
33
82C59A Interrupt
Controller
34
Intel 82C55A
Programmable Peripheral Interface
35
Keyboard/Display Interfaces
to 82C55A
36
Direct Memory Access
• Interrupt driven and programmed I/O require active CPU
intervention
– Transfer rate is limited
– CPU is tied up
• DMA is the answer
37
DMA Function
• Additional Module (hardware) on bus
• DMA controller takes over from CPU for I/O
38
Typical DMA Module Diagram
39
DMA Operation
• CPU tells DMA controller:-
– Read/Write
– Device address
– Starting address of memory block for data
– Amount of data to be transferred
• CPU carries on with other work
• DMA controller deals with transfer
• DMA controller sends interrupt when finished
40
DMA Transfer Cycle Stealing
• DMA controller takes over bus for a cycle
• Transfer of one word of data
• Not an interrupt
– CPU does not switch context
• CPU suspended just before it accesses bus
– i.e. before an operand or data fetch or a data write
• Slows down CPU but not as much as CPU doing transfer
41
DMA and Interrupt Breakpoints During an
Instruction Cycle
42
Aside
• What effect does caching memory have on DMA?
• What about on board cache?
• Hint: how much are the system buses available?
43
DMA Configurations (1)
44
DMA Configurations (2)
47
8237 DMA Usage of Systems
Bus
48
Fly-By
• While DMA using buses processor idle
• Processor using bus, DMA idle
– Known as fly-by DMA controller
• Data does not pass through and is not stored in DMA chip
– DMA only between I/O port and memory
– Not between two I/O ports or two memory locations
• Can do memory to memory via register
• 8237 contains four DMA channels
– Programmed independently
– Any one active
– Numbered 0, 1, 2, and 3
49
I/O Channels
• I/O devices getting more sophisticated
• e.g. 3D graphics cards
• CPU instructs I/O controller to do transfer
• I/O controller does entire transfer
• Improves speed
– Takes load off CPU
– Dedicated processor is faster
50
I/O Channel Architecture
51
Interfacing
• Connecting devices together
• Bit of wire?
• Dedicated processor/memory/buses?
• E.g. FireWire, InfiniBand
52
Conclusion
• Thank you.
• References
• Apeh, S. Lecture notes on Advanced
Microcomputer systems, 2015
53