Структура контроллера пристрою

Контроллери пристроїв введення-виводу вельми різні як по своїй внутрішній будові, так і по виконання (від однієї мікросхеми до спеціалізованої обчислювальної системи зі своїм процесором, пам'яттю і т. д.), оскільки їм доводиться управляти абсолютно різними приладами. Не вдаючись до деталей цих відмінностей, ми виділимо деякі загальні риси контроллерів, необхідні їм для взаємодії з обчислювальною системою. Зазвичай кожен контроллер має принаймні чотири внутрішні регістри, званих регістрами стану, управління, вхідних даних і вихідних даних. Для доступу до вмісту цих регістрів обчислювальна система може використовувати один або декілька портів, що для нас не істотно. Для простоти викладу вважатимемо, що кожному регістру відповідає свій порт.

Регістр стану містить біти, значення яких визначається станом пристрою введення-виводу і які доступні тільки для читання обчислювальною системою. Ці біти відображають завершення виконання поточної команди на пристрої (біт зайнятості), наявність чергового даного в регістрі вихідних даних (біт готовності даних), виникнення помилки при виконанні команди (біт помилки) і так далі

Регістр управління отримує дані, які записуються обчислювальною системою для ініціалізації пристрою введення-виводу або виконання чергової команди, а також зміни режиму роботи пристрою. Частина бітів в цьому регістрі може бути відведена під код виконуваної команди, частина бітів кодуватиме режим роботи пристрою, біт готовності команди свідчить про те, що можна приступити до її виконання.

Регістр вихідних даних служить для приміщення в нього даних для читання обчислювальною системою, а регістр вхідних даних призначений для приміщення в нього інформації, яка має бути виведена на пристрій. Зазвичай ємкість цих регістрів не перевищує ширину лінії даних (а найчастіше менше її), хоча деякі контроллери можуть використовувати як регістри чергу FIFO для буферизації інформації, що поступає.

Зрозуміло, набір регістрів і складових їх бітів приблизний, він покликаний послужити нам моделлю для опису процесу передачі інформації від обчислювальної системи до зовнішнього пристрою і назад, але в тому або іншому вигляді він зазвичай присутній у всіх контроллерах пристроїв.