Programmed input–output: Difference between revisions

Content deleted Content added
No edit summary
m Removing invisible Unicode character/ Replacing hard spaces See WP:CHECKWIKI error #16 fix + other fixes, replaced: → (2) using AWB (10326)
Line 1:
{{Refimprove|date=June 2013}}
'''Programmed input/output''' ('''PIO''') is a method of transferring data between the [[Central processing unit|CPU]] and a peripheral, such as a network adapter or an [[AT Attachment|ATA]] storage device.
 
In general, programmed I/O happens when software running on the CPU uses instructions that access I/O address space to perform data transfers to or from an I/O device.
This is in contrast to [[Direct Memory Access]] (DMA) transfers.
 
The best known example of a PC device that uses programmed I/O is the [[AT Attachment|ATA]] interface;
Line 17:
Until the introduction of [[Direct memory access|DMA]], PIO was the only available method.
 
The PIO interface is grouped into different modes that correspond to different [[transfer rate]]s. The [[electrical signal]]ing among the different modes is similar  — only the cycle time between transactions is reduced in order to achieve a higher transfer rate. All ATA devices support the slowest mode  — Mode 0. By accessing the information registers (using Mode 0) on an ATA drive, the CPU is able to determine the maximum transfer rate for the device and configure the ATA controller for optimal performance.
 
The PIO modes require a great deal of CPU overhead to configure a data transaction and transfer the data. Because of this inefficiency, the [[Direct memory access|DMA]] (and eventually [[AT Attachment|UDMA]]) interface was created to increase performance. The simple digital logic required to implement a PIO transfer still makes this transfer method useful today, especially if high transfer rates are not required like in embedded systems, or with [[Field-programmable gate array|FPGA]] chips where PIO mode can be used without significant performance loss.
Line 67:
 
=== Device compatibility ===
Not all devices are compatible with the official PIO timings. An example is the Sandisk SDDR-89 ImageMate 12-in-1 card reader which uses the GL819 chip from [[Genesys Logic, Inc.]] That chip has slightly different timings for most of its PIO Modes.
 
{| class="wikitable" style="text-align:center"