Архітектура підсистеми вводу / виводу

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

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

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

У різних комп'ютерах використовується один із двох способів адресації регістрів пристроїв.

· Відображення регістрів пристроїв на пам'ять. При цьому способі для пристроїв відводиться певна частина адресного простору пам'яті, а для роботи з пристроями можна використовувати ті ж команди, що й для роботи з основною пам'яттю (наприклад, команду MOV).

· Адресація регістрів через порти введення / виводу. Для портів відводиться окремий адресний простір, і для роботи з ними є спеціальні команди (наприклад, IN і OUT).

Перший спосіб зручніше для програмування, оскільки дозволяє використовувати більш широкий набір команд.

Однак цей спосіб важче реалізувати на апаратному рівні, оскільки апаратура повинна визначати, чи належить конкретна адреса до пам'яті або до пристрою, і по-різному обробляти ці два випадки.

Серед різних можливих конфігурацій однопроцесорній обчислювальної системи прийнято виділяти два основних типи: системи з магістральної і з радіальної архітектурою (рис. 2-1).


 

 

Рис. 1‑1

 

· Магістральна архітектура заснована на підключенні всіх наявних пристроїв, включаючи процесор та пам'ять, до єдиної системної магістралі (шині), яка об'єднує в собі лінії передачі даних, адрес і керуючих сигналів. Спільне використання магістралі різними пристроями підпорядковується спеціальним правилам (протоколу), що забезпечує коректність роботи магістралі.

· Радіальна архітектура припускає, що кожен з пристроїв, включаючи пам'ять, підключається до процесора окремо, незалежно від інших пристроїв, і взаємодіє з процесором за власними правилами.

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

Основна особливість магістральної архітектури - однаковий спосіб підключення всіх пристроїв. Структура регістрів пристрою стандартизуется, при цьому визначається, якими сигналами будь-який пристрій може обмінюватися з процесором і яким розрядами регістра повинні відповідати ці сигнали. Звичайно, не всяке пристрій потребує використання всього набору стандартних сигналів. Деякі типи пристроїв можуть, наприклад, не генерувати переривань, не повідомляти про помилки. Але ті сигнали, які пристрій використовує, повинні відповідати стандарту даній магістралі.

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

Навпаки, для радіальної архітектури характерний індивідуальний вибір способу підключення, найбільш зручного для кожного типу пристроїв. При цьому в принципі можна досягти економії апаратних ресурсів і більш високої ефективності. Трапляється навіть, що в одному порту об'єднуються керуючі сигнали від декількох різних пристроїв. Очевидно, подібна архітектура зручна тільки в тому випадку, коли вона розрахована на постійний набір пристроїв. Розширення радіальної системи завжди викликає труднощі.

Виходячи їх цих визначень, не так вже й легко точно охарактеризувати сучасні IBM-сумісні ПК. Вихідна модель IBM PC мала досить чітко виражену радіальну архітектуру і невеликий набір стандартних пристроїв. В наступних моделях були зроблені значні кроки по стандартизації підключення нових пристроїв. Однак і сьогодні ці комп'ютери не тягнуть на магістральну архітектуру в повному розумінні слова: у них для цього занадто багато різних шин.

Важливою деталлю архітектури сучасних комп'ютерів є такий пристрій, як контролер прямого доступу до пам'яті (ПДП, англ. DMA - Direct Memory Access). Якщо зазвичай весь обмін даними йде через регістри процесора, то ПДП увазі прямий перенос даних з пристрою в пам'ять чи назад. Роль процесора в даному випадку тільки в тому, щоб ініціювати операцію введення / виводу блоку даних, пославши відповідні команди контролеру ПДП. Далі процесор не бере участь у виконанні обміну даними. Завершивши операцію, контролер ПДП посилає сигнал переривання, сповіщаючи про це процесор. Це дозволяє підвищити продуктивність системи за рахунок часткового розвантаження процесора і магістралі.