Input and Output Computer Organization and Assembly Language: Module 9
Motivation u Input and output devices (I/O devices) allow computers to perceive and effect their environment u Input devices are often much slower than the computer: the computer can process data faster than the device can provide data u Some output devices have are also slow relative to the speed of memory access or CPU computation; they cannot accept data at the rate provided
General Categories of I/O u User interface devices Input devices: mouse, keyboard Output devices: terminal display, printer u Mass storage devices Disks, tape drives u Gateways and networks
Hardware: I/O instructions u The hardware implements special instructions to read from/write to I/O devices. Perhaps lwio (load word I/O) and swio u The devices have a separate address space from memory lwio $s0, 16 and lw $s0, 16 access different data lwio $s0, 16 reads the next word from device 16 lw $s0, 16 reads the word stored in memory location 16. u MIPS does NOT use special I/O instructions
Hardware: Memory-Mapped I/O u The hardware can be designed in such a way that some memory addresses are not really memory at all but a collection of communication channels to I/O devices. u In memory-mapped I/O, load and store from/to the communication channels provide a means of performing I/O, i.e., load and store instructions with an I/O address are treated as I/O operations. lw $a0, KeyboardData sw $t0, DisplayData communication channels
Hardware: Memory-Mapped I/O u MIPS RISC architecture uses memory-mapped I/O. u I/O devices, unlike memory, may be unavailable. If a device is not ready to accept or transmit data then it is busy. The system must provide a mechanism for allowing a program to detect if a device is ready or busy u The processor communicates with an I/O device using two addresses: one for data exchange and the other to obtain the status of the I/O device.
Memory mapped addresses in SPIM keyboard_control = 0xffff0000display_control = 0xffff0008 keyboard_data = 0xffff0004display_data = 0xffff000c 1 0 Interrupt enable (1 = enabled) Device busy/ready (1 = ready) Control Data
Memory mapped addresses in SPIM u Define the memory mapped constants like this:.data 0xffff0000 keyboard_control:.space 4 keyboard_data:.space 4 display_control:.space 4 display_data:.space 4
Software: Managing I/O u Programmed I/O (Polling) u Interrupt driven I/O
Software: Programmed I/O wait: lw $s0,keyboard_control and $s0, $s0, 1 beq $s0, 0, wait lw $v0,keyboard_data wait: lw $s0,display_control and $s0, $s0, 1 beq $s0, 0, wait sw $v0,display_data 1 = ready 0 = busy least significant bit In programmed I/O, the CPU stays in a loop until the I/O unit indicates that is ready for data transfer or if the CPU has issued a command to the I/O module it must wait until the operation is complete.
Software: Interrupt Driven I/O u Instead of spin-waiting or doing a regular check whether an I/O device is ready, the I/O device can just inform the CPU that it is ready to receive or transmit data. The I/O device sends an interrupt signal to the system. u In this mechanism, control is transferred to the exception handler (part of the operating system) which saves the current state of the interrupted program. The requests are then serviced and control is given back to the interrupted program. This mechanism is called an exception.
u Exceptions come in two varieties Interrupts are generated by hardware I/O device Clock Power down Traps are generated by code execution Division by zero Illegal memory address System call Software: Interrupt Driven I/O
How interrupt driven I/O works.text. la $a0, A li $v0, 4 syscall..data A:.asciiz “cat” User code/data Output buffer Kernel dataDisplay
How interrupt driven I/O works.text. la $a0, A li $v0, 4 syscall..data A:.asciiz “cat” User code/data Output buffer Kernel dataDisplay c a t
How interrupt driven I/O works.text. la $a0, A li $v0, 4 syscall..data A:.asciiz “cat” User code/data Output buffer Kernel data c Display c a t
How interrupt driven I/O works.text. la $a0, A li $v0, 4 syscall..data A:.asciiz “cat” User code/data Output buffer Kernel data ca Display c a t
How interrupt driven I/O works.text. la $a0, A li $v0, 4 syscall..data A:.asciiz “cat” User code/data Output buffer Kernel data cat Display c a t
u The exception handler determines which event has caused the exception and decides what should be done based on it. u Since an exception handler can be invoked anytime, an exception handler can not have parameters nor it can return values. u It must also save register values being used by the interrupted program and restore them before returning control to the interrupted program. Exception Mechanism
Role of the Operating System u The operating system is a program that allocates and controls the use of all system resources: the processor, memory, and I/O devices. u Since there are many processes that can run concurrently, the operating system uses interrupt to allocate the processor to different processes periodically -- allowing processes to share processing time with each other. u The exception handler plus other codes used to decide what process should be executed next is called the kernel.