Peripheral handling
Download
Report
Transcript Peripheral handling
7. Peripherals
7.2 Peripheral handling
Computer Studies (AL)
Reference
Silberschatz, Galvin, Gagne, “Operating System Concepts (sixth
edition)”, John Wiley and Sons, INC
Hisao Yazawa, “學電腦運作原理的第一本書”, 博碩文化
William stallings, “Operating Systems Internals and Design Principles
(fourth edition)”, Prentice Hall
Carl Hamacher, “Computer Organization”, McGraw Hill
Content
Port
Interrupts
Direct Memory Access
Polling
I/O interface
When you boot up a computer
System…
When Computer is booted up, an bootstrap
program runs, which is usually stored in
read-only memory(ROM)
It initializes all aspects of the system, from
CPU registers to devices controllers to
memory contents.
Computer-system Structure
Disk
Printer
Disk Controller
Printer Controller
CPU
System bus
Memory Controller
Memory
How can a a processor give
command?
The controller has one or more registers for
data and control signals.
The processor communicates with the
controller by reading and writing bit
patterns in these registers.
Port
Machine may connect to number of devices.
The connector between the computer and the device is an
IC called I/O controller.
There are several bytes of memory for temporary storage
in I/O controller called port.
Note that it is different from registers in CPU.
One port can only support one device.
Usual format:
IN <port name, port number>
OUT <port name, port number>
An I/O port typically consists 4
registers.
Status register contains bits indicated states such
as whether the current command has completed.
(read by host)
Control register can be written by the host to start
a command or change the mode of a device.
The data-in register is read by the host to get
input.
The data-out register is written by the host to
send output.
Memory-mapped I/O
CPU has its own registers, which may be
updated by the instruction operated.
If the device support this mechanism:
The device-control registers are mapped into
the address space of the processor.
The CPU executes I/O requests using the
standard data-transfer instructions to read and
write the device-control registers.
Basis of Interrupts (1)
System program used to test the device status.
During testing period, processor is not performing any
useful computation.
Tasks can be performed while waiting for an I/O device to
become ready.
We can arrange for a hardware signal called an interrupt
to the processor.
The signals is called Interrupt Request.
At least one of the bus control lines, called an interruptrequest line (INTR), is usually dedicated for this purpose.
Interrupt
Compute routine
1
2
Interrupt occurs
here
i
i+1
m
PRINT routine
Basis of Interrupt (2)
The routine executed in response to an
interrupt request is called the interruptservice routine (ISR).
The processor must inform the device that
its request has been recognized, a special
control signal, interrupt-acknowledge
signal, is sent by CPU to accomplish the
reorganization.
Basis of Interrupt (3)
Before starting execution of the ISR, any information that may be
altered during the execution of that routine must be saved.
The saving and restoring information can be done automatically by
the processor or program instructions.
The processors save only the minimum amount of information
because the process of saving and restoring registers involves
memory transfer which increase the total execution time.
The delay between the time an interrupt request is received and the
start of execution of ISR is called interrupt latency.
I/O Interrupts
To start an I/O operation, the CPU loads
the appropriate registers within the device
controller.
The controller examines the contents of
these registers to determine what action to
take.
I/O Interrupt –
Synchronous VS Asynchronous
Synchronous: the I/O is started, then at I/O
completion, control is returned to the user
process.
Asynchronous: it returns control to the use
program without waiting for the I/O to
complete. The I/O then can continue while
other system operation occur.
I/O Interrupt – 2 types
Requesting process
------waiting--------
Requesting process
Device driver
Device driver
Interrupt
handler
Interrupt
handler
Hardware data
transfer
time
Hardware data
transfer
time
Asynchronous
Synchronous
Comparison – if we wait until
complete, then
If the CPU always waits for I/O completion,
at most one I/O request is outstanding at a
time.
The system knows exactly what device is
running.
It excludes concurrent I/O operation to
several devices.
It may overlap useful computation with I/O
Comparison – if return to main
process, then
If the starts the I/O and then continues the
process of OS or user program code.
A system call is then needed to allow the user
program to wait for I/O completion.
We also need to be able to keep track of many
I/O requests at the same time.
OS uses a table containing an entry of each I/O
devices: the device-status table.
Interrupt hardware
I/O requests an interrupt by activating a bus
line called interrupt-request line. (INTR)
Most computers are likely to have several
I/O devices that can request an interrupt.
A single interrupt-request line may be used
to serve n devices.
INTR
Handling Multiple devices
1. How can processor recognize the device
requesting an interrupt?
2. Given that different devices are likely to
require different interrupt-service routine, how
can the processor obtain the starting address of
the appropriate routine in each case?
3. Should a device be allowed to interrupt the
processor while another interrupt is being
serviced?
4. How should two or more simultaneous
interrupt requests be handled?
1. Recognize the device
The information needed to determine whether a
device is requesting an interrupt is available in its
status register.
Device raises interrupt request, SR = 1 (called IRQ
bit)
The simplest way to identify the interrupt device is to
have the interrupt-service routine poll all the I/O
devices connected to the bus.
Polling is easy to implement, but the time spent
interrogating the IRQ buts of all the devices that may
not be requesting any service.
2. Vectored Interrupt
To reduce the time of the polling process, a
device requesting an interrupt may identify
itself directly to the processor.
Then, the processor can immediately start
executing the corresponding ISR.
This scheme called vectored interrupt.
2. Vectored Interrupt
A device requesting an interrupt can identify itself by
sending a special code to the processor over the data bus.
(also use bus control signals to ensure that devices do not
interfere with each other)
The code represents the starting address of the interruptservice routine for that device.
The processor reads this address, called the interrupt
vector and loads it into the Program Counter (PC). The
interrupt vector may also include a new value for the
processor status register.
2. Vectored Interrupt
Processor may not be ready to receive the interrupt-vector
code immediately.
E.g. finish current instruction
The interrupting device must wait to put data on the bus
only when the processor is ready to receive it.
When the processor is ready to receive the interrupt vector
code, it activates the interrupt-acknowledge line, INTA.
The I/O device responds by sending its interrupt vector
code and turn off the INTR signal.
3. Interrupt Nesting
The interrupts should be disabled during the
execution of ISR, to ensure that a request from
one device will not cause more than one
interruption
If there are several devices, once a ISR is started,
it always continues to completion before the
processor accepts an interrupt request from a
second device. It is acceptable to implement
when the device
with relatively short ISR
is simple.
3 Interrupt nesting
For some devices, however, a long delay in
responding to an interrupt request may lead
to erroneous operation. (e.g. clock, high
priority)
It may be necessary to accept an interrupt
request from the clock during the execution
of an ISR for another device.
3 Interrupt nesting
I/O devices should be organized in a priority
structure.
An interrupt request from a high-priority device
should be accepted while the processor is serving
another request from a lower-priority device.
A multiple-level priority organization means that
during execution of an ISR, interrupt requests
will be accepted from some devices but not from
others, depending upon the device’s priority.
3. Nested interrupt
4. Simultaneous Requests
Common scheme is daisy chain.
4. Simultaneous Requests
When several devices raise an interrupt
request and the INTR line is activated, the
processor responds by setting the INTA line
to 1.
Device 1 passes the signal on to device 2
only if it does not require any service.
The device that is electrically closest to the
processor has the highest priority.
4. Simultaneous Requests
Devices are organized in groups, each group is connected at
a different priority level.
Other cases of interrupt exceptions
Recovery from errors
Debugging
Privilege Exception
To protect the OS from user program, the
privileged instructions may be used by the
processor.
Details of ISR
What is ISR doing?
Interrupt Service Routine (ISR)
1. The device issues an interrupt signal to the
processor.
2. The processor finishes execution of the current
instruction before responding the interrupt.
3. The processor tests for an interrupt, determines
that there is one, and sends an acknowledgment
signal to the device that issued the interrupt.
Interrupt Service Routine (ISR)
4. The processor needs to prepare to transfer
control the interrupt routine.
To begin, it needs to save information needed
to resume the current program at the point of
interrupt. The minimum information required
is the program status word (PSW) and the
location of the next instruction to be
executed, which is contained in the program
counter.
Interrupt Service Routine (ISR)
5. The processor loads the program counter
(PC) with the entry location of the
interrupt-handling program that will
respond to this interrupt
Once the program counter has been loaded,
the processor proceeds to the next instruction
cycle, which begins with an instruction fetch.
Interrupt Service Routine (ISR)
6. The program counter and PSW relating to
the interrupted program have been saved
on the system stack.
7. The interrupt handler may now proceed to
process the interrupt. This will include an
examination of status information relating
to the I/O operation or other event that
caused an interrupt.
Interrupt Service Routine (ISR)
8. When interrupt processing is complete, the
saved register values are retrieved from the
stack and restored to the registers.
9. The final act is to restore the PSW and
program counter values from the stack. As
a result, the next instruction to be executed
will be from the previously interrupted
program.
Interrupt masking
Most CPU have two interrupt request lines.
One is nonmaskable interrupt, which is reserved
for events such as unrecoverable memory errors.
The second interrupt line is maskable. It can be
turned off by the CPU before the execution of
critical instruction sequences that must not be
interrupted.
The maskable interrupt is used by device
controllers to request service.
Polling
Instead of vectored interrupt, the task of identifying the device and determining the
starting address of the appropriate ISR may be implemented by software using polling.
The controller indicates its state through the status register. (Busy: write a bit; Ready:
clear the bit)
The host repeatedly reads the busy bit until that bit is clear.
The host sets the write but in the command register and writes a byte into the data-out
register.
The host sets the command-ready bit
When the controller notices that the command-ready is set, it sets the busy bits.
The controller reads the command register and sees the write command. It reads the
data-out register to get the byte, and does the I/O to the device.
The controller clears the command-ready bit, clears the error but in the status register
to indicate that the device I/O succeeded, and clears the busy bit to indicate that it is
finished.
Polling
Main program should check the IRQ from the
devices from time to time.
The status of checking the status of the devices is
called polling.
Polling is suitable to the system with less number
of interrupt.
Consider Mouse and keyboard has an IRQ at the
same time. (Not suitable)
Consider a printer has an IRQ for printing, since
output time is long, CPU may not need to check the
device frequently until an other IRQ is sent by the
device.
Direct Memory Access (DMA)
Devices with DMA can access the memory
of the computer system without involving
the CPU.
CPU
Device without DMA
Device with DMA
Memory
Advantages of using DMA
Reduce the workload of CPU
Reduce the time to write the data to the
memory.
Port, IRQ and DMA
Each device should have its own I/O
controller (port number), IRQ or DMA. It
is not a must for a device to have these
three controls at the same time.
Different devices with same control (port,
IRQ or DMA) may cause system failure.
Standard I/O interface
Peripheral Component Interconnect (PCI)
Bus
SCSI Bus
Universal Serial Bus (USB)
I/O interface for an input device
Address bus
Data bus
Control bus
Address
decoder
Control
circuits
Input device
Note: pay attention to the direction of the data flow
Data and
Status Registers
I/O
interface
Remark on I/O interface for an
input device
The address decoder enables the device to
recognize its address.
The data register holds the data being
transferred to or from the processor.
The control circuit coordinate I/O transfers.
Remarks: refer to p206-207 example
Buffer
A buffer is an area of memory for holding
data during I/O transfer.
Buffering is a method of overlapping the
I/O of a job with its own computation.
Double buffering technique
I/O device first put the data to buffer1, and
then call the processor to access the data.
During the processor access the data, I/O
device may send the rest data to buffer2.
Example of displaying image
Two important concepts used in many
games and multimedia applications are
double buffering and page flipping.
Programmers primarily use these
techniques for two purposes:
to keep the user from seeing objects being
drawn onto the screen
to eliminate flickering.
Example of displaying image
Instead of drawing directly to video
memory, the program draws everything to a
double buffer. When finished, the program
copies the double buffer to video memory
all at once. At that point the program clears
the double buffer (if necessary) and the
process starts over.