# Input / Output Subsystem Handles devices that allow the computer system to: * Communicate and interact with the outside world - Screen, keyboard, printer * Store information ![[io-subsystem.png]] # The Control unit Program stored in memory. (machine language in binary) Task of control unit is to execute programs by: * Fetch: from memory the next instruction * Decode: instruction to determine what to do * Execute: issuing signals to ALU, memory and IO systems. Repeats until HALT instruction. # Typical Machine Instructions MOV: move data from a to b ADD: add numbers SUB: subtract numbers JMP: transfers program control flow to the indicated instruction ![[example-machine-lang.png]] # CPU Time vs IO Time Total time required to run program is: CPU Time + IO Time Typical time to read from IO: 20ms Typical time to run instruction: 20ns CPU can execute up to 200 million instructions while a block is read from a hard disk. Conclusion: While I/O is executed, CPU is idling. ![[cpu-vs-io.png]]