Кіріспе
Процессордың шеткі құрылғылармен байланыс әдісі. Бағдарламаланған кіріс-шығыс (басқаша айтқанда, бағдарламаланатын кіріс/шығыс, бағдарламаланған кіріс/шығыс, бағдарламаланған I/O, PIO) – орталық процессор (CPU) мен шеткі құрылғы, мысалы, Параллельді ATA сақтау құрылғысы арасындағы кіріс/шығыс (I/O) арқылы деректерді беру әдісі. Әрбір дерек элементін беру бағдарламадағы нұсқау арқылы басталады, және әрбір транзакцияда CPU қатысады. Ал тікелей жадқа қол жеткізу (DMA) операцияларында CPU деректерді беруге қатыспайды. Бұл термин жадқа бейнеленген кіріс/шығыс (MMIO) немесе портқа бейнеленген кіріс/шығыс (PMIO) дегенді білдіруі мүмкін. PMIO – x86 архитектурасындағы IN және OUT сияқты арнайы нұсқаулармен қол жеткізілетін, әдетте қалыпты жадтан тыс, арнайы адрестік кеңістікті пайдаланатын деректерді беруді білдіреді. MMIO – бағдарламаға қолжетімді қалыпты адрестік кеңістікке бейнеленген I/O құрылғыларына деректерді беруді білдіреді. PMIO кішкентай адрестік кеңістігі бар алғашқы микропроцессорлар үшін өте пайдалы болды, себебі I/O құрылғылары құнды ресурсты пайдаланбады. Бағдарламаланған I/O пайдаланатын PC құрылғысының ең белгілі мысалы – Параллельді AT қосылымы (PATA) интерфейсі; алайда, AT қосылымы интерфейсі бірнеше DMA режимдерінің кез келгенінде де жұмыс істей алады. ПК-дегі көптеген ескі құрылғылар PIO-ны қолданады, соның ішінде, мұрагерлік тізбектік порттар, ECP режимінде болмаған кезде мұрагерлік параллель порттар, пернетақта және тышқан PS/2 порттары, мұрагерлік MIDI және джойстик порттары, интервалдық таймер және ескі желілік интерфейстер.
Programmed input–output (also programmable input/output, programmed input/output, programmed I/O, PIO) is a method of data transmission, via input/output (I/O), between a central processing unit (CPU) and a peripheral device, such as a Parallel ATA storage device. Each data item transfer is initiated by an instruction in the program, involving the CPU for every transaction. In contrast, in direct memory access (DMA) operations, the CPU is uninvolved in the data transfer. The term can refer to either 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 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 Parallel AT Attachment (PATA) interface; however, the AT Attachment interface can also be operated in any of several DMA modes. Many older devices in a PC also use PIO, including legacy serial ports, legacy parallel ports when not in ECP mode, keyboard and mouse PS/2 ports, legacy MIDI and joystick ports, the interval timer, and older network interfaces.
ATA интерфейсіндегі PIO режімі
PIO интерфейсі әртүрлі беріліс жылдамдықтарына сәйкес келетін әртүрлі режимдерге топтастырылған. Әртүрлі режимдер арасындағы электрлік сигналдар ұқсас – жоғары беріліс жылдамдығына қол жеткізу үшін транзакциялар арасындағы цикл уақыты ғана қысқартылады. Барлық ATA құрылғылары ең баяу режимді – Режим 0-ны қолдайды. ATA дискіндегі ақпараттық тіркелімдерге (Режим 0 арқылы) кіру арқылы, процессор (CPU) құрылғы үшін максималды беріліс жылдамдығын анықтай алады және ATA контроллерін оңтайлы жұмыс істеу үшін конфигурациялай алады. PIO режимдері деректер транзакциясын конфигурациялау және деректерді беру үшін көп процессорлық жүктеме (CPU overhead) қажет етеді. Осы тиімсіздікке байланысты, өнімділікті арттыру үшін DMA (және ақырында Ultra Direct Memory Access (UDMA)) интерфейсі құрылды. PIO беруді іске асыру үшін қажетті қарапайым цифрлық логика әлі күнге дейін бұл беру әдісін пайдалы етеді, әсіресе жоғары беріліс жылдамдықтары қажет болмаған жағдайларда, мысалы, кіріктірілген жүйелерде немесе PIO режимін айтарлықтай өнімділік жоғалтусыз қолдануға болатын FPGA (Field Programmable Gate Array) чиптерінде. CompactFlash 2.0 нұсқасында екі қосымша жетілдірілген уақыт режимі анықталды – 5 және 6 ПИО режимдері. Олар CompactFlash-қа ғана тән. +PIO режимдері
Режим | Максималды беріліс жылдамдығы (МБ/с) | Минималды цикл уақыты | Спецификация анықталған стандарт
------- | -------- | -------- | --------
Режим 0 | 3.3 | 600 нс | ATA 1
Режим 1 | 5.2 | 383 нс | ATA 1
Режим 2 | 8.3 | 240 нс | ATA 1
Режим 3 | 11.1 | 180 нс | ATA 2
Режим 4 | 16.7 | 120 нс | ATA 2
Режим 5 | 20 | 100 нс | CompactFlash 2.0
Режим 6 | 25 | 80 нс | CompactFlash 2.0
PIO режімі 5
PIO Mode 5 22 МБ/с жылдамдығымен жұмыс істеуге ұсынылды, бірақ ол қатты дискілерде ешқашан іске асырылмады, себебі сол кездегі процессорлар (CPU) ұсынылған PIO 5 уақытында қатты дискіні күтіп, тиімсіз жұмыс істеуі мүмкін еді, ал DMA стандарты оның қажеттілігін жойды. Бұл режимді қолдайтын қатты дискілер өндірілмесе де, кейбір аналық плата өндірушілері оған алдын ала BIOS қолдауын қосты. PIO Mode 5 CF-ATA адаптерлері арқылы ATA-ға қосылған CompactFlash карталарымен қолданылуы мүмкін.