Введение

Метод связи процессора с периферийными устройствами

Программированный ввод/вывод (также программируемый ввод/вывод, программированный ввод/вывод, программированный ввод/вывод, PIO) — это метод передачи данных через ввод/вывод (I/O) между центральным процессором (CPU) и периферийным устройством, таким как устройство хранения Parallel ATA. Каждая передача данных инициируется инструкцией в программе, с участием CPU в каждой транзакции. В отличие от этого, при операциях прямого доступа к памяти (DMA) CPU не участвует в передаче данных. Этот термин может относиться как к вводу/выводу с отображением в память (MMIO), так и к вводу/выводу с отображением портов (PMIO). PMIO относится к передачам, использующим специальное адресное пространство, отличное от обычной памяти, обычно доступное с помощью специальных инструкций, таких как IN и OUT в архитектурах x86. MMIO относится к передачам в I/O устройства, которые отображаются в обычное адресное пространство, доступное программе. PMIO был особенно полезен для ранних микропроцессоров с небольшим адресным пространством, поскольку не занимал ценные ресурсы, используемые устройствами ввода/вывода. Наиболее известным примером устройства ПК, использующего программированный ввод/вывод, является интерфейс Parallel AT Attachment (PATA); однако интерфейс AT Attachment также может работать в различных режимах DMA. Многие устаревшие устройства в ПК также используют PIO, включая устаревшие последовательные порты, устаревшие параллельные порты, когда они не работают в режиме ECP, порты PS/2 для клавиатуры и мыши, устаревшие порты MIDI и джойстиков, интервальный таймер и устаревшие сетевые интерфейсы.

Режим PIO в интерфейсе ATA

Интерфейс PIO сгруппирован в различные режимы, соответствующие разным скоростям передачи данных. Электрическая сигнализация между режимами схожа, изменяется лишь время цикла между операциями для достижения более высокой скорости передачи. Все устройства ATA поддерживают самый медленный режим – режим 0. Получая доступ к информационным регистрам (используя режим 0) на ATA-диске, процессор может определить максимальную скорость передачи данных для этого устройства и настроить контроллер ATA для оптимальной производительности. Режимы PIO требуют значительных вычислительных ресурсов процессора для настройки и передачи данных. Из-за этой неэффективности были разработаны интерфейсы DMA (и впоследствии Ultra Direct Memory Access (UDMA)) для повышения производительности. Простота цифровой логики, необходимой для реализации передачи PIO, делает этот метод по-прежнему полезным, особенно в случаях, когда не требуются высокие скорости передачи, например, во встраиваемых системах или с использованием программируемых логических интегральных схем (FPGA), где режим PIO можно использовать без существенной потери производительности. В спецификации CompactFlash 2.0 определены два дополнительных режима с расширенными настройками времени – PIO режимы 5 и 6. Они специфичны для CompactFlash. +PIO режимы Режим Максимальная скорость передачи (МБ/с) Минимальное время цикла Стандарт, где определена спецификация Mode 0 3.3 600 нс ATA 1 Mode 1 5.2 383 нс ATA 1 Mode 2 8.3 240 нс ATA 1 Mode 3 11.1 180 нс ATA 2 Mode 4 16.7 120 нс ATA 2 Mode 5 20 100 нс CompactFlash 2.0 Mode 6 25 80 нс CompactFlash 2.0

Режим PIO 5

Предложен был режим PIO 5 со скоростью работы 22 МБ/с, но он так и не был реализован на жестких дисках, поскольку процессоры того времени были бы значительно замедлены, ожидая жесткий диск при предложенных временных параметрах PIO 5, а в конечном итоге стандарт DMA сделал его ненужным. Хотя ни один жесткий диск не был выпущен с поддержкой этого режима, некоторые производители материнских плат заранее обеспечили поддержку BIOS для него. Режим PIO 5 может использоваться с картами CompactFlash, подключенными к ATA через адаптеры CF-ATA.