Chapter 8 Input/Output An Hong 2016 Fall

Slides:



Advertisements
Similar presentations
Interrupts Chapter 8 – pp Chapter 10 – pp Appendix A – pp 537 &
Advertisements

Chapter 5 The LC-3.
CS4315A. Berrached:CMS:UHD1 Operating Systems and Computer Organization Chapter 4.
Chapter 4 - ISA 1.The Von Neumann Model. 4-2 The Stored Program Computer 1943: ENIAC Presper Eckert and John Mauchly -- first general electronic computer.
1 Input and Output Patt and Patel Ch Computer System.
CSS 372 Lecture 1 Course Overview: CSS 372 Web page Syllabus Lab Ettiquette Lab Report Format Review of CSS 371: Simple Computer Architecture Traps Interrupts.
LC-3 Instruction Set Architecture (Textbook’s Chapter 5)
Chapter 8 I/O. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 8-2 I/O: Connecting to Outside World So far,
CSS 372 Oct 2 nd - Lecture 1 Course Overview: CSS 372 Web page Syllabus Lab Ettiquette Lab Report Format Review of CSS 371: Simple Computer Architecture.
Chapter 8 I/O. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 8-2 I/O: Connecting to Outside World So far,
CSS 372 Oct 2 nd - Lecture 2 Review of CSS 371: Simple Computer Architecture Chapter 3 – Connecting Computer Components with Buses Typical Bus Structure.
S. Barua – CPSC 240 CHAPTER 8 I/O How are I/O devices identified? Memory-mapped vs. special instructions.
Overview Projects The Assembly Process Programmed I/O Interrupt Driven I/O.
Chapter 8 Overview Programmed I/O Introduction to Interrupt Driven I/O Project 3.
Chapter 8 I/O Programming Chapter 9 Trap Service Routines Programmed I/O Interrupts Interrupt Driven I/O Trap Service Routines.
Chapter 8 Overview Programmed I/O Interrupt Driven I/O.
Overview von Neumann Model Components of a Computer Some Computer Organization Models The Computer Bus An Example Organization: The LC-3.
The von Neumann Model – Chapter 4 COMP 2620 Dr. James Money COMP
Introduction to Computing Systems from bits & gates to C & beyond Chapter 8 Input/Output Basic organization Keyboard input Monitor output Interrupts DMA.
Chapter 8 Input/Output l I/O basics l Keyboard input l Monitor output l Interrupt driven I/O l DMA.
Introduction to Computer Engineering ECE/CS 252, Fall 2010 Prof. Mikko Lipasti Department of Electrical and Computer Engineering University of Wisconsin.
Chapter 8 I/O. Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 8-2 I/O: Connecting to Outside World So far,
Chapter 4 The Von Neumann Model
13-Nov-15 (1) CSC Computer Organization Lecture 7: Input/Output Organization.
Chapter 5 The LC Instruction Set Architecture ISA = All of the programmer-visible components and operations of the computer memory organization.
Introduction to Computer Engineering CS/ECE 252, Spring 2010 Prof. Guri Sohi Computer Sciences Department University of Wisconsin – Madison.
Processor Data Path and Control How they work together.
CS4315A. Berrached:CMS:UHD1 Operating Systems and Computer Organization Chapter 4.
Chapter 8 Input/Output An Hong 2015 Fall School of Computer Science and Technology Lecture on Introduction to.
LC-3 Datapath ECE/CS 252, Fall 2010 Prof. Mikko Lipasti Department of Electrical and Computer Engineering University of Wisconsin – Madison.
Computer Science 210 Computer Organization
Chapter 8 I/O.
HKN ECE 220: Fall 2017 Midterm 1 AJ Schroeder, Evan Lissoos, Utsav Kawrani 23rd September, 2017.
Operating Systems (CS 340 D)
Computer Architecture
COSC121: Computer Systems: Review
Introduction of microprocessor
Chapter 4 The Von Neumann Model
COSC121: Computer Systems: LC3 I/O (Intro)
Introduction to Computer Engineering
Computer Science 210 Computer Organization
Chapter 8 I/O.
Chapter 4 The Von Neumann Model
Chapter 8 Input/Output I/O basics Keyboard input Monitor output
The LC-3 Instruction Set Architecture Data Movement instructions
Chapter 4 The Von Neumann Model
Chapter 8 I/O.
Chapter 5 The LC-3 An Hong 2018 Fall
Computer System Overview
Chapter 5 The LC-3.
HKN ECE 220: Spring 2018 Midterm 1
Introduction to Computer Engineering
Introduction to Computer Engineering
Chapter 8 I/O.
Introduction to Computer Engineering
Computer Architecture
Chapter 4 The Von Neumann Model
TRAP Routines Privileged Instructions Subroutines
Chapter 8 I/O.
School of Computer Science and Technology
The Stored Program Computer
Introduction to Computer Engineering
Introduction to Computer Engineering
Introduction to Computer Engineering
Introduction to Computer Engineering
Chapter 4 The Von Neumann Model
Instruction Set Architecture
Chapter 5 The LC-3.
Presentation transcript:

Chapter 8 Input/Output An Hong han@ustc.edu.cn 2016 Fall Lecture on Introduction to Computing Systems Chapter 8 Input/Output An Hong han@ustc.edu.cn 2016 Fall School of Computer Science and Technology 2019/4/7

Review So far, we’ve learned how to: compute with values in registers load data from memory to registers store data from registers to memory 2019/4/7

Control Unit Memory Unit Review: LC-3 Data Path Control Unit 16 Processing Unit 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU Memory Unit GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

Need for I/O But where does data in memory come from? And how does data get out of the system so that humans can use it? Computer systems are useless unless they can process information from outside of the computer and output results outside of the computer I/O is effectively the communication with outside of the computer I/O device itself communicates with outside world E.g., keyboard takes input from user Computer needs to communicate with I/O device E.g., computer takes input from keyboard Communication through shared memory locations Processor and I/O can read/write those memory locations Sometimes, data in memory locations can be set/cleared automatically (by hardware) depending on a read/write 2019/4/7

I/O: Connecting to the Outside World Examples Keyboard/mouse input, video output on a standard computer Network input/output that enables web surfing Information from an engine of a car that a computer uses to determine how to tune the engine (output from computer tunes the engine) Requests for airline reservations and replies that service those requests Types of I/O devices characterized by: behavior: input, output, storage input: keyboard, motion detector, network interface output: display screen(monitor), printer, network interface storage: disk, CD-ROM data rate: how fast can data be transferred? keyboard: 100 bytes/sec disk: 30 MB/s network: 1 Mb/s - 1 Gb/s 2019/4/7

I/O Controller CPU Control/Status Registers Data Registers CPU tells device what to do -- write to control register CPU checks whether task is done -- read status register Data Registers CPU transfers data to/from device Device electronics performs actual operation pixels to screen, bits to/from disk, characters from keyboard Graphics Controller Control/Status CPU Electronics display Output Data 2019/4/7

Programming Interface How are device registers identified? Memory-mapped vs. special instructions How is timing of transfer managed? Asynchronous vs. synchronous Who controls transfer? CPU (polling) vs. device (interrupts) 2019/4/7

Memory-Mapped vs. I/O Instructions designate opcode(s) for I/O register and operation encoded in instruction Memory-mapped assign a memory address to each device register use data movement instructions (LD/ST) for control and data transfer 0x FE00 2019/4/7

Transfer Timing I/O events generally happen much slower than CPU cycles. If : CPU 300MHz, 10clocks/character,6characters/word Then: typing speed (1/(300x106))x10x6=5x106words/s Synchronous data supplied at a fixed, predictable rate CPU reads/writes every X cycles Asynchronous data rate less predictable CPU must synchronize with device, so that it doesn’t miss data or write too quickly 2019/4/7

Transfer Control Who determines when the next data transfer occurs? CPU vs. I/O device Polling is explicitly looking/examining CPU keeps checking status register until new data arrives OR device ready for next data “Are you there yet? Are you there yet? Are you there yet?” Interrupts is a nudge, knock on the door, loud noise, which forces you to pay attention Device sends a special signal to CPU when new data arrives OR device ready for next data CPU can be performing other tasks instead of polling device. “Wake me when you get there.” 2019/4/7

LC-3 Memory-mapped I/O (Table A.1) xFE00 xFE02 xFE04 Asynchronous devices synchronized through status registers Polling and Interrupts the details of interrupts will be discussed in Chapter 10 Location I/O Register Function xFE00 Keyboard Status Reg (KBSR) Bit [15] is one when keyboard has received a new character. xFE02 Keyboard Data Reg (KBDR) Bits [7:0] contain the last character typed on keyboard. xFE04 Display Status Register (DSR) Bit [15] is one when device ready to display another char on screen. xFE06 Display Data Register (DDR) Character written to bits [7:0] will be displayed on screen. 2019/4/7

Interrupt Vector Table Memory map of the LC-3 0x0000 Trap Vector Table 0x00FF 0x0100 Interrupt Vector Table 0x01FF 0x0200 Operating System and Supervisor Stack 0x2FFF 0x3000 Program Text PC R4(Global pointer) Global data section R5 Function2 R6 Function3 Function1 Heap (for dynamically allocated memory) R6 (stack pointer) Run-time stack R5 (frame pointer) 0xFDFF 0xFE00 Device Register Addresses 0xFFFF 2019/4/7

Example: Processor Input from Keyboard When a character is typed: its ASCII code is placed in bits [7:0] of KBDR (bits [15:8] are always zero) the “ready bit” (KBSR[15]) is set to one keyboard is disabled -- any typed characters will be ignored When KBDR is read: KBSR[15] is set to zero, meaning no keyboard key is pending keyboard is enabled keyboard data 15 8 7 KBDR 15 14 ready bit KBSR 2019/4/7

Memory-mapped Operations How do we read ready bit? How do we test whether the bit is one? How do we read keyboard data? 2019/4/7

Basic Input Routine POLL LDI R0, KBSR BRzp POLL LDI R0, KBDR ... KBSR .FILL xFE00 KBDR .FILL xFE02 new char? NO Polling YES read character 2019/4/7

Memory-mapped I/O 2019/4/7 16 MAR 16 16 16 16 16 16 MDR INPUT OUTPUT GateMDR LD.MAR MAR 16 16 LD.MDR 16 16 16 16 MDR MEM.R,W MIO.EN INPUT OUTPUT MEMORY MIO.EN KBDR DDR ADDR.CTL LOGIC MUX LD.DDR 16 KBSR DSR 16 2 MEM.EN,READ/WRITE 16 16 16 INMUX 2 2019/4/7

LDI (Indirect) … + EA OP EX S F D ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 16 16 16 16 16 [10:0] SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

LDI (Indirect) … + EA OP EX S F D ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

LDI (Indirect) … + EA OP EX S F D ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B SEXT 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

LDI (Indirect) … + EA D F OP EX S ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B SEXT 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

LDI (Indirect) … + OP EX S D F EA ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

LDI (Indirect) … + EA EX S D F OP ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

Memory-mapped I/O: LDI R0, KBSR 16 GateMDR LD.MAR MAR 16 16 LD.MDR 16 16 16 16 MDR MEM.R,W MIO.EN INPUT OUTPUT MEMORY MIO.EN KBDR DDR ADDR.CTL LOGIC MUX LD.DDR 16 KBSR DSR 16 2 MEM.EN,READ/WRITE 16 16 16 INMUX 2 2019/4/7

Memory-mapped I/O: LDI R0, KBDR 16 GateMDR LD.MAR MAR 16 16 LD.MDR 16 16 16 16 MDR MEM.R,W MIO.EN INPUT OUTPUT MEMORY MIO.EN KBDR DDR ADDR.CTL LOGIC MUX LD.DDR 16 KBSR DSR 16 2 MEM.EN,READ/WRITE 16 16 16 INMUX 2 2019/4/7

LDI (Indirect) … + EA OP S D F EX ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 16 [10:0] 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

Example: Processor Output to Screen When Display device is ready to display another character: the “ready bit” (DSR[15]) is set to one, indicating that processor can write a character for display When data is written to the Display data register: DSR[15] automatically set to 0 character in DDR[7:0] is displayed any other character data written to DDR is ignored (while DSR[15] is zero) DSR DDR 15 8 7 14 output data ready bit 2019/4/7

Basic Output Routine POLL LDI R1, DSR BRzp POLL STI R0, DDR ... DSR .FILL xFE04 DDR .FILL xFE06 screen ready? NO Polling YES write character 2019/4/7

STI (Indirect) … + EA OP EX S F D ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 16 16 16 16 16 [10:0] SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

STI (Indirect) … + EA OP EX S F D ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

STI (Indirect) … + EA OP EX S F D ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B SEXT 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

STI (Indirect) … + EA D F OP EX S ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B SEXT 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

STI (Indirect) … + EA OP EX S D F ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 16 [10:0] 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

STI (Indirect) … + EA EX S D F OP ALU 16 16 3 REG FILE 2 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 16 16 16 16 16 [10:0] SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

STI (Indirect) … + F EA OP D EX ALU 16 16 3 REG FILE 2 16 16 16 16 16 GatePC GateMARMUX LD.PC PC DR 3 REG FILE MARMUX +1 2 PCMUX 16 LD.REG 16 16 16 16 16 [7:0] SR2 OUT SR1 OUT SR2 SR1 SEXT + 3 3 ADDR2MUX MUX MUX ADDR1MUX 16 16 [10:0] 16 16 16 16 16 SEXT [8:0] SEXT LD.CC 16 SEXT FINITE STATE MACHINE SR2MUX [5:0] 16 SEXT N Z P [4:0] ALUK ALU A B 2 LD.IR IR LOGIC … 16 RUN 16 16 GateALU GateMDR 16 16 LD.MDR MDR MEMORY MAR LD.MAR 16 INPUT OUTPUT MIO.EN MUX 16 MEM.EN,R,W

Memory-mapped I/O: STI R0, DDR ? 16 GateMDR LD.MAR MAR 16 16 LD.MDR 16 16 16 16 MDR MEM.R,W MIO.EN INPUT OUTPUT MEMORY MIO.EN KBDR DDR ADDR.CTL LOGIC MUX LD.DDR 16 KBSR DSR 16 2 MEM.EN,READ/WRITE 16 16 16 INMUX 2 2019/4/7

Keyboard Echo Routine Usually, input character is also printed to screen. User gets feedback on character typed and knows its ok to type the next character. new char? POLL1 LDI R0, KBSR BRzp POLL1 LDI R0, KBDR POLL2 LDI R1, DSR BRzp POLL2 STI R0, DDR ... KBSR .FILL xFE00 KBDR .FILL xFE02 DSR .FILL xFE04 DDR .FILL xFE06 NO YES read character screen ready? NO YES write character 2019/4/7

Interrupt-Driven I/O To implement an interrupt mechanism, we need: A way for the I/O device to signal the CPU that an interesting event has occurred. A way for the CPU to test whether the interrupt signal is set. Generating Signal Software sets "interrupt enable(IE)" bit in device register. When ready bit is set and IE bit is set, interrupt is signaled. interrupt enable bit 15 14 13 ready bit KBSR interrupt signal to processor 2019/4/7

More details in Chapter 10. Interrupt-Driven I/O Testing for Interrupt Signal CPU looks at signal between STORE and FETCH phases If not set, continues with next instruction If set, transfers control to Interrupt Service Routine(ISR) F NO D interrupt signal? Transfer to ISR YES EA OP EX More details in Chapter 10. S 2019/4/7

Review Questions What is the danger of not testing the DSR before writing data to the Display screen? What is the danger of not testing the KBSR before reading data from the keyboard? What if the Display were a synchronous device, e.g., we know that it will be ready 1 microsecond after character is written. Can we avoid polling? How? What are advantages and disadvantages? 2019/4/7

Review Questions Do you think polling is a good approach for other devices, such as a disk or a network interface? What is advantage of using LDI/STI for accessing device registers? 2019/4/7