Content deleted Content added
No edit summary |
Spiral6800 (talk | contribs) |
||
(23 intermediate revisions by 20 users not shown) | |||
Line 1:
{{Short description|Method of CPU communication with peripheral devices}}
{{Refimprove|date=June 2013}}
'''Programmed input–output''' (also '''programmable input/output''', '''programmed input/output''', '''programmed I/O''',
The term
The best known example of a PC device that uses programmed I/O is the
▲The term ''Programmed I/O'' can refer to either [[Memory-mapped I/O|Memory-mapped I/O (MMIO) or Port-mapped I/O (PMIO)]]. PMIO refers to transfers using a special [[address space]] outside of normal memory, usually accessed with dedicated instructions, such as IN and OUT in [[x86]] architectures. MMIO<ref>Computer Organization and Architecture 9th Edition. Stallings, William. Pearson, 2012</ref> refers to transfers to I/O devices that are mapped into the normal address space available to the program. PMIO was very useful for early microprocessors with small address spaces, since the valuable resource was not consumed by the I/O devices.
▲The best known example of a PC device that uses programmed I/O is the [[AT Attachment|ATA]] interface; however, this interface can also be operated in any of several [[Direct Memory Access|DMA]] modes. Many older devices in a PC also use PIO, including legacy serial ports, legacy parallel ports when not in ECP mode, the PS/2 keyboard and mouse ports, legacy MIDI and joystick ports, the interval timer, and older network interfaces.
== PIO mode in the ATA interface ==
The PIO interface is grouped into different modes that correspond to different [[transfer rate]]s.
The PIO modes require a great deal of CPU overhead to configure a data transaction and transfer the data.
Two additional
{| class="wikitable" style="text-align:center"
Line 55:
=== PIO Mode 5 ===
A PIO Mode 5 was proposed<ref name="ATA Timing Extension For ATA-3">
== See also ==
* [[WDMA (computer)
* [[AT Attachment
* [[Input/output]]
* [[Interrupt]]
Line 70:
{{DEFAULTSORT:Programmed input output}}
[[Category:Input/output]]
[[Category:AT Attachment]]
|