Input and Output How things get into and out of the CPU - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Input and Output How things get into and out of the CPU

Description:

Idea is to place devices other than RAM chips at physical address locations. ... Polling I/O. The OS must check regularly (poll) for ready devices. Perhaps once ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 18
Provided by: CyrusB1
Category:
Tags: cpu | input | locator | out | output | place | polling | things

less

Transcript and Presenter's Notes

Title: Input and Output How things get into and out of the CPU


1
Input and OutputHow things get into and out of
the CPU
2
Computer System
3
I/O Devices
  • Keyboard
  • User presses A key -gt a
  • ASCII code is 0x61
  • Keyboard sends this on wires
  • 1 for start, 8-bits of data, 0 for stop
  • a is 1011000010
  • Buffer at computer catches these bits

4
I/O Devices
  • Displays
  • Character display works with the reverse process
    (sort of)
  • Most displays are bit mapped
  • Printers
  • Just like a display but now being printed to
    paper, not a screen.
  • Again, most printers are now bit mapped verses
    character.

5
I/O Devices
  • Hard Disk
  • A spinning disk (4600, 5200, 7200, 10000 RPM)
  • 2 240 GB and growing FAST
  • Magnetic and read/write (like tape)
  • Both sides
  • Usually a stack of platters
  • Disk access
  • Electronic speeds are in the nanoseconds (10-9
    sec)
  • Disk speeds are in the milliseconds (10-3 sec)
  • Why use a disk?

6
I/O Devices
  • Questions
  • How does CPU ask for a char to be printed?
  • Which printer?
  • Which display? Whos?
  • When is printer ready for the next char?
  • When does keyboard have the next char?
  • What about the million times slower?

7
MAL I/O
  • putc s0 is
  • address of char is in s0
  • lb 4, (s0) 4 char to be printed
  • addi 2, 0, 11 this syscall is like
  • syscall jal operating_system_function
  • getc s0 is
  • addi 2, 0, 12 this syscall is like
  • syscall jal operating_system_function
  • returns with char read in 2

8
MAL I/O
  • Dont use jal because
  • OS doesnt trust user to provide the correct
    address
  • Want to switch into OS mode, where more
    thingsare allowed
  • Allowed by what?
  • OS catches syscall and uses value in 2 to
    determine what to do
  • OS will not allow (or should not)
  • Users to read each others keyboards
  • Users to send infinite jobs to printers (well,
    actually)

9
MAL I/O
  • How does the OS do I/O?
  • What instructions cause an I/O?
  • Could have special instructions
  • Hard to anticipate all possibilities
  • Solutions
  • overload load and store
  • Memory-mapped I/O

10
Memory Mapped IO
  • Idea is to place devices other than RAM chips at
    physical address locations.
  • This way to access IO devices you use the same
    load and store instructions.

11
Memory Mapped I/O
Design hardware and software to recognize certain
addresses
0x00000000
Real Memory - RAM
0xffff0000
From keyboard
0xffff0008
To display
0xffff0010
  • Set some labels and use those to access devices
  • keyboardData equ 0xffff0008
  • displayData equ 0xffff0010

12
Memory Mapped I/O
CPU
MEM
System bus
Keyboard Buffer0xffff0008
Display Buffer0xffff0010
  • Devices on bus watch for their address
  • getc
  • operating_system_function_12 getc char and put
    it in 2
  • lw 2, KeyboardData
  • return from syscall
  • putc
  • operating_system_function_11 putc char, where
    char is in 4
  • sw 2, DisplayData
  • return from syscall
  • But is there a new char to read?
  • But is the display done with the last char?

13
Device Status
  • Need I/O device status to coordinate
  • Set up some more labels
  • KeyboardStatus equ 0xffff000c
  • DisplayStatus equ 0xffff0014
  • Assume Status is word where MSB1 means ready.

0x00000000
Real Memory - RAM
0xffff0000
DATA from keyboard
0xffff0008
STATUS from keyboard
0xffff000c
DATA to Display
0xffff0010
0xffff0014
STATUS from Display
14
Device Status
MAL OS calls
GETC
Operating_system_function_12 getc char and put
it in 2 WaitLoop12 lw 14, KeybaordStatus bgez
14, WaitLoop12 keep waiting if 14
non-negative lw 2, KeyboardData same as
before return from syscall
PUTC
Operating_system_function_11 putc char, where
char is in 4 WaitLoop12 lw 14,
DisplayStatus bgez 14, WaitLoop11 keep
waiting if 14 non-negative sw 4, DisplayData
same as before return from syscall
15
Device Status
HC11
Polling (non-interrupt) I/O
GETCHAR
GETCHAR LDAA SCSR status register ANDA 20
rdrf bit mask BEQ GETCHAR loop if rdrf
0 LDAA SCDR read data RTS
OUTCHAR
OUTCHAR LDAB SCSR load sci status
register BITB 80 tdre bit BEQ OUTCHAR
loop intil tdre 0 STAA SCDR write character
to port RTS
16
Device Status
  • How much time is spent spinning?
  • A putc or getc is less than 10 instructions, or
    10ns on a modern processor
  • Mechanical devices take milliseconds
  • Almost all time is spent spinning
  • Must do useful work while waiting
  • Periodically poll devices and send characters
    when ready

17
Polling I/O
  • The OS must check regularly (poll) for ready
    devices
  • Perhaps once a millisecond
  • If ready, then OS services device
  • Keyboard transfer character and put on queue
  • Display transmit character to the graphics HW
  • Problems
  • How often to poll?
  • How does the OS code get run?
  • What happens to the user program?
  • Is there a better solution?
Write a Comment
User Comments (0)
About PowerShow.com