PIO
PIO — Программный ввод-вывод (англ. Programmed input/output, PIO), метод передачи данных между двумя устройствами, использующий процессор как часть маршрута данных (процессор выполняет команду чтения порта, считывает байт или слово данных в свой регистр, после чего переписывает его в память, затем повторяет эту процедуру до тех пор, пока вся необходимая информация не будет считана из устройства в память).
Как правило, этот термин применяется к классическому PC/AT контроллеру IDE/ATA/SATA. В этом режиме контроллер требовал исполнения драйвером или же BIOSом команды процессора REP INSW/OUTSW для передачи всех данных, обычно команда исполняется в обработчике прерывания контроллера в статусе «готов к передаче данных».
Режим имеет существенные недостатки — загрузку процессора вводом-выводом и крайне невысокую скорость передачи из-за невозможности использования «взрывного» (burst) режима шины PCI, и устарел с появлением в середине 1990-х годов поддержки DMA в IDE контроллере. Но, во-первых, если режим PIO работает одинаково во всех PC-совместимых компьютерах, то реализация DMA зависит от производителя контроллера (обычно Intel, VIA или nVidia) и требует установки драйверов/сборки ядра с поддержкой данных драйверов. Более или менее современные версии Windows автоматически установят DMA-драйвера к любому распространенному IDE контроллеру.
Контроллеры IDE/SATA, не совместимые со стандартным PC/AT (HighPoint, Promise, Silicon Image, AHCI и другими), не имеют и устаревшего режима PIO как метода передачи данных между процессором и контроллером. Они всегда требуют установки драйвера (драйвер обычно реализован как драйвер SCSI-контроллера) и всегда используют проприетарную реализацию DMA для общения с процессором/памятью, как и контроллеры SCSI.
Во-вторых, включение режима DMA затрагивает не только интерфейс между контроллером и процессором, но и интерфейс между контроллером и диском. Таким образом, для включения этого режима необходима поддержка DMA ещё и в жёстком диске или CD/DVD приводе. Также режимы PIO и DMA для IDE подразделяются на несколько обозначенных цифрами подрежимов, задающих скорость передачи данных по кабелю. Высокие режимы DMA называются Ultra DMA и требуют иного параллельного ATA-кабеля — имеющего 80 проводников вместо 40. Поддерживаются с начала 2000-х годов.
По некоторым сведениям, SATA отменяет реализацию этих подрежимов, всегда используя только одну (высокую) скорость передачи по кабелю. На практике при использовании SATA жёстких дисков, подключенных к не PC/AT-совместимому контроллеру Silicon Image с проприетарным драйвером, выбранный PIO/DMA-режим не влияет ни на что и является не более, чем украшением пользовательского интерфейса утилиты управления контроллером и реликтом старых времен.
Бывают режимы PIO Mode 0, 1, 2, 3, 4. Чем больше номер режима, тем быстрее. IDE ZIP100 приводы от Iomega, например, могут обеспечить только PIO mode 0. Старые CD-ROM приводы, как правило, используют PIO mode 4, если не могут работать в режиме DMA.
- PIO Mode 0 = 3,3 MB/s
- PIO Mode 1 = 5,2 MB/s
- PIO Mode 2 = 8,3 MB/s
- PIO Mode 3 = 11,1 MB/s
- PIO Mode 4 = 16,7 MB/s
Специфические проблемы
На некоторых компьютерах при автоматическом определении подобающего PIO Mode система не может загрузиться с CD-ROM, хотя CD-ROM прекрасно определяется. При этом CD-ROM прекрасно работает в уже установленной операционной системе, т.к. в тот момент используется не вшитый в BIOS драйвер реального режима процессора, а драйвер операционной системы, загруженный с жёсткого диска и работающий в защищённом режиме.
Решением проблемы является принудительное выставление PIO Mode 0. (Вероятно, можно было бы попробовать подобрать более быстрый PIO Mode; однако, результат обычно не оправдывает трудозатрат.)
При обнаружении неполадок DVD/CD привода, ошибок интерфейса (как правило при плохом контакте кабелей) операционная система Windows переводит диск в режим PIO. При этом характерны значительные задержки в работе системы, зависания и пропадания доступа к диску.
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.