Note that the designation of a device as either input or output depends on the perspective. Mouse and keyboards take as input physical
movement that the human user outputs and convert it into signals that a computer can understand. The output from these devices
is input for the computer. Similarly, printers and monitors take as input signals that a computer outputs. They then convert these
signals into representations that human users can see or read. For a human user the process of reading or seeing these representations
is receiving input. These interactions between computers and humans is studied in a field called human–computer interaction.In
computing,
input/output, or
I/O, refers to the communication between an
information processing system
(such as a
computer), and the outside world, possibly a human, or another information processing system.
Inputs are the signals or data received by the system, and
outputs are the signals or data sent from it.
The term can also be used as part of an action; to "perform I/O" is to perform an input or output operation.
I/O devices are used by a person (or other system) to communicate with a computer. For instance, a keyboard or a
mouse may be an input device for a computer, while monitors and printers are considered output devices for a
computer. Devices for communication between computers, such as modems and network cards, typically serve
for both input and output.
In computer architecture, the combination of the
CPU and
main memory (i.e. memory that
the CPU can read and write to directly, with individual
instructions) is considered the brain
of a computer, and from that point of view any transfer of information from or to that combination,
for example to or from a
disk drive, is considered I/O. The CPU and its supporting circuitry provide
memory-mapped I/O that is used in low-level
computer programming, such as the implementation
of
device drivers. An
I/O algorithm is one designed to exploit locality and perform efficiently when
data reside on secondary storage, such as a disk drive.
Interface
An I/O interface is required whenever the I/O device is driven by the processor. The interface must have necessary logic to interpret the device address generated by the processor.
Handshaking should be implemented by the interface using appropriate commands (like BUSY, READY, and WAIT), and the processor can communicate with an I/O device through the interface. If different data formats are being exchanged, the interface must be able to convert serial data to parallel form and vice-versa. There must be provision for generating
interruptsand the corresponding type numbers for further processing by the processor if required.
A computer that uses
memory-mapped I/O accesses hardware by reading and writing to specific memory locations, using the same assembly language instructions that computer would normally use to access memory.
Higher-level implementation
In the context of the
ALGOL 68 programming language, the
input and
output facilities are collectively referred to as
transput. The
ALGOL 68transput library recognizes the following standard files/devices:
stand in
,
stand out
,
stand errors
and
stand back
.
An alternative to special primitive functions is the I/O
monad, which permits programs to just describe I/O, and the actions are carried out outside the program. This is notable because the
I/O functions would introduce
side-effects to any programming language, but this allows
purely functional programming to be practical.
Addressing mode
There are many ways through which data can be read or stored in the memory. Each method is an addressing mode, and has its own advantages and limitations.
There are many type of addressing modes such as direct addressing, indirect addressing, immediate addressing, index addressing, based addressing, based-index addressing, implied addressing, etc.
Direct addressing
In this type of address of the data is a part of the instructions itself. When the processor interprets the instruction, it gets the memory address from where it can be read/written the required information. For example:
[1]
MOV register, [address] ; to read
MOV [address], register ; to write
; similarly
IN register, [address] ; to read as input
OUT [address], register ; to write as output
Here the
address operand points to a memory location which holds the data and copies it into/from the specified
register. A pair of brackets is a
dereference operator.
Indirect addressing
According to the above example, the address can be stored in another register. Therefore, the instructions will have the register representing the address. So to fetch the data, the instruction must be interpreted appropriate register selected. The value of the register will be used for addressing appropriate memory location and then data will be read/written. This addressing method has an advantage against the direct mode that the register value is changeable so the appropriate memory location can also be dynamically selected.
Port-mapped I/O
Port-mapped I/O usually requires the use of instructions which are specifically designed to perform I/O operations.
See also
References