Define Peripherals. Explain I/O Bus and Interface Modules
Define Peripherals. Explain I/O Bus and Interface Modules
A typical communication link between the processor and several peripherals is shown in
figure 8.1.
The I/O bus consists of data lines, address lines, and control lines.
The magnetic disk, printer, and terminal are employed in practically any general purpose
computer.
Each peripheral device has associated with it an interface unit.
Each interface decodes the address and control received from the I/O bus, interprets
them for the peripheral, and provides signals for the peripheral controller.
It also synchronizes the data flow and supervises the transfer between peripheral and
processor.
Each peripheral has its own controller that operates the particular electromechanical
device.
For example, the printer controller controls the paper motion, the print timing, and the
selection of printing characters.
The I/O bus from the processor is attached to all peripheral interfaces.
To communicate with a particular device, the processor places a device address on the
address lines.
Each interface attached to the I/O bus contains an address decoder that monitors the
address lines.
When the interface detects its own address, it activates the path between the bus lines
and the device that it controls.
All peripherals whose address does not correspond to the address in the bus are disabled
by their interface selected responds to the function code and proceeds to execute it.
If the interface is connected to a printer, it will only output data, and if it services a
character reader, it will only input data.
A magnetic disk unit transfers data in both directions but not at the same time, so the
interface can use bidirectional lines.
A command is passed to the I/O device by sending a word to the appropriate interface
register.
The control register receives control information from the CPU. By loading appropriate
bits into the control register, the interface and the I/O device attached to it can be
placed in a variety of operating modes.
For example, port A may be defined as an input port and port B as an output port.
A magnetic tape unit may be instructed to rewind the tape or to start the tape moving in
the forward direction.
The bits in the status register are used for status conditions and for recording errors that
may occur during the data transfer.
For example, a status bit may indicate that port A has received a new data item from the
I/O device.
Another bit in the status register may indicate that a parity error has occurred during the
transfer.
The interface registers communicate with the CPU through the bidirectional data bus.
The address bus selects the interface unit through the chip select and the two register
select inputs.
A circuit must be provided externally (usually, a decoder) to detect the address assigned
to the interface registers.
This circuit enables the chip select (CS) input when the interface is selected by the
address bus.
The two register select inputs RS1 and RS0 are usually connected to the two least
significant lines of the address bus.
These two inputs select one of the four registers in the interface as specified in the table
accompanying the diagram.
The content of the selected register is transfer into the CPU via the data bus when the
I/O read signal is enables.
The CPU transfers binary information into the selected register via the data bus when the
I/O write input is enabled.
Strobe Control
The Strobe control method of asynchronous data transfer employs a single control line to
time each transfer.
Figure 8.3: Source-initiated strobe for data transfer Figure 8.4: Destination-initiated strobe for data
transfer
The other control line is in the other direction from the destination to the source.
It is used by the destination unit to inform the source whether it can accept data.
The sequence of control during the transfer depends on the unit that initiates the
transfer.
Figure 8.5 shows the data transfer procedure initiated by the source.
The two handshaking lines the data valid, which is generated by the source unit, and
data accepted, generated by the destination unit, the timing diagram shows the
exchange of signals between the two units.
The sequence of events listed in figure 8.5 shows the four possible states that the system
can be at any given time.
The source unit initiates the transfer by placing the data on the bus and enabling its data
valid signal.
Swati Sharma , CE Department | 2140707 – Computer Organization 6
Unit 8 – Input-Output Organization
The data accepted signal is activated by the destination unit after it accepts the data
from the bus.
The source unit then disables its data valid signal, which invalidates the data on the bus.
The destination unit then disables its data accepted signal and the system goes into its
initial state.
The source does not send the next data item until after the destination unit shows its
readiness to accept new data by disabling its data accepted signal.
This scheme allows arbitrary delays from one state to the next and permits each unit to
respond at its own data transfer rate.
Destination-initiated transfer using handshaking
The destination-initiated transfer using handshaking lines is shown in figure 8.6.
Note that the name of the signal generated by the destination unit has been changed to
ready for data to reflect its new meaning.
The source unit in this case does not place data on the bus until after it receives the
ready for data signal from the destination unit.
From there on, the handshaking procedure follows the same pattern as in the source-
initiated case.
Note that the sequence of events in both cases would be identical if we consider the
ready for data signal as the complement of data accepted.
In fact, the only difference between the source-initiated and the destination-initiated
transfer is in their choice of initial state.
Programmed I/O:
In the programmed I/O method, the I/O device does not have direct access to memory.
An example of data transfer from an I/O device through an interface into the CPU is
shown in figure 8.7.
When a byte of data is available, the device places it in the I/O bus and enables its data
valid line.
The interface accepts the byte into its data register and enables the data accepted line.
The interface sets a bit in the status register that we will refer to as an F or "flag" bit.
The device can now disables the data valid line, but it will not transfer another byte until
the data accepted line is disables by the interface.
A program is written for the computer to check the flag in the status register to
determine if a byte has been placed in the data register by the I/O device.
This is done by reading the status register into a CPU register and checking the value of
the flag bit.
Once the flag is cleared, the interface disables the data accepted line and the device can
then transfer the next data byte.
Example of Programmed I/O:
A flowchart of the program that must be written for the CPU is shown in figure 8.8.
It is assumed that the device is sending a sequence of bytes that must be stored in
memory.
The transfer of each byte requires three instructions :
1. Read the status register.
2. Check the status of the flag bit and branch to step 1 if not set or to step 3 if set.
3. Read the data register.
Each byte is read into a CPU register and then transferred to memory with a store
instruction.
A common I/O programming task is to transfer a block of words from an I/O device and
store them in a memory buffer.
The way that the processor chooses the branch address of the service routine varies
from one unit to another.
In non-vectored interrupt, branch address is assigned to a fixed location in memory.
In a vectored interrupt, the source that interrupts supplies the branch information to
the computer. The information is called vector interrupt.
In some computers the interrupt vector is the first address of the I/O service routine.
In other computers the interrupt vector is an address that points to a location in memory
where the beginning address of the I/O service routine is stored.
It then proceeds to insert its own interrupt vector address (VAD) into the data bus for
the CPU to use during the interrupt cycle.
A device with a 0 in its Pl input generates a 0 in its PO output to inform the next-lower-
priority device that the acknowledge signal has been blocked.
A device that is requesting an interrupt and has a 1 in its Pl input will intercept the
acknowledge signal by placing a 0 in its PO output.
If the device does not have pending interrupts, it transmits the acknowledge signal to
the next device by placing a 1 in its PO output.
Thus the device with Pl = 1 and PO = 0 is the one with the highest priority that is
requesting an interrupt, and this device places its VAD on the data bus.
The daisy chain arrangement gives the highest priority to the device that receives the
interrupt acknowledge signal from the CPU.
The farther the device is from the first position; the lower is its priority.
DMA controller
DMA controller - Interface which allows I/O transfer directly between Memory and
Device, freeing CPU for other tasks
CPU initializes DMA Controller by sending memory address and the block size (number of
words).
The DMA controller needs the usual circuits of an interface to communicate with the
CPU and I/O device.
In addition, it needs an address register, a word count register, and a set of address lines.
The address register and address lines are used for direct communication with the
memory.
The word count register specifies the number of words that must be transferred.
The data transfer may be done directly between the device and memory under control
of the DMA.
Figure 8.11 shows the block diagram of a typical DMA controller.
The unit communicates with the CPU via the data bus and control lines.
The register in the DMA are selected by the CPU through the address bus by enabling the
DS (DMA select) and RS (register select) inputs.
The RD (read) and WR (write) inputs are bidirectional.
When the BG (bus grant) input is 0, the CPU can communicate with the DMA registers
through the data bus to read from or write to the DMA registers.
When BG= 1, the CPU has relinquished the buses and the DMA can communicate directly
with the memory by specifying an address in the address but and activating the RD or
WR control.
The DMA communicates with the external peripheral through the request and
acknowledge lines by using a prescribed handshaking procedure.
The DMA controller has three registers: an address register, a word count register, and a
control register.
The address register contains an address to specify the desired location in memory.
The word count register holds the number of words to be transferred.
This register is decremented by one after each word transfer and internally tested for
zero.
The control register specifies the mode of transfer.
All registers in the DMA appear to the CPU as I/O interface registers.
Thus the CPU can read from or write into the DMA register under program control via
the data bus.
The DMA is first initialized by the CPU.
After that, the DMA starts and continues to transfer data between memory and
peripheral unit until an entire block is transferred.
The CPU initializes the DMA by sending the following information through the data bus
1. The staring address of the memory block where data are available (for read) or
where data are to be stored (for write)
2. The word count, which is the number of words in the memory block.
3. Control to specify the mode of transfer such as read or write.
4. The starting address is stored in the address register.
IOP is similar to a CPU except that it is designed to handle the details of I/O processing.
Unlike the DMA controller that must be setup entirely by the CPU, the IOP can fetch and
execute its own instruction.
IOP instructions are specifically designed to facilitate I/O transfers.
In addition, IOP can perform other processing tasks, such as arithmetic, logic branching,
and code translation.
The block diagram of a computer with two processors is shown in figure 8.12.
The memory unit occupies central position and can communicate with each processor by
means of direct memory access.
The CPU is responsible for processing data needed in the solution of computational
tasks.
The IOP provides a path of for transfer of data between various peripheral devices and
memory unit.
Swati Sharma , CE Department | 2140707 – Computer Organization 13
Unit 8 – Input-Output Organization
The CPU is usually assigned the task of initiating the I/O program.
From then, IOP operates independent of the CPU and continues to transfer data from
external devices and memory.
The data formats of peripheral devices differ from memory and CPU data formats. The
IOP must structure data words from many different sources.
For example, it may be necessary to take four bytes from an input device and pack them
into one 32-bit word before the transfer to memory.
Data are gathered in the IOP at the device rate and bit capacity while the CPU is
executing its own program.
After the input data are assembled into a memory word, they are transferred from IOP
directly into memory by "stealing" one memory cycle from the CPU.
Similarly, an output word transferred from memory to the IOP is directed from the IOP
to the output word transferred from memory to the IOP.
In most computer systems, the CPU is the master while the IOP is a slave processor.
The CPU is assigned the task of initiating all operations, but I/O instructions are
executed in the IOP.
CPU instructions provide operations to start an I/O transfer and also to test I/O status
conditions needed for making decisions on various I/O activities.
The IOP, in turn, typically asks for CPU attention by means of an interrupt.
Instructions that are read from memory by an IOP are sometimes called commands, to
distinguish them from instructions that are read by the CPU.
The IOP responds by placing the contents of its status report into a specified memory
location.
The status word indicates whether the transfer has been completed or if any errors
occurred during the transfer.
From inspection of the bits in the status word, the CPU determines if the I/O operation
was completed satisfactorily without errors.
The IOP takes care of all data transfers between several I/O units and the memory while
the CPU is processing another program.
The IOP and CPU are competing for the use of memory, so the number of devices that
can be in operation is limited by the access time of the memory.