Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Канальні процесори і прямий доступ до пам'яті

Одне з рішень полягає в тому, щоб завести окремий процесор і доручити йому всю роботу по опиту. Процесор, що займається лише організацією введення-виводу, називають периферійним або канальним (channel).
Зрозуміло, втім, що це підвищує вартість системи і не вирішує проблеми радикально — тепер замість прапорів, що безпосередньо сигналізують про зовнішні події, центральний процесор вимушений опитувати прапори, що виставляються канальним процесором. Залежно від характеру подій і необхідної обробки це рішення може опинитися і зовсім неприйнятним, наприклад, якщо на кожну подію потрібна негайна реакція саме центрального процесора.
Інакше, якщо негайно після події потрібна лише проста обробка, а складні обчислення можна відкласти на потім, канальний процесор можна спростити і зробити істотно дешевше центрального.
Так, при роботі з контроллерами дисків, стрічок і інших пристроїв масової пам'яті виникає завдання копіювання окремих байтів (або, залежно від розрядності шини контроллера, півслів або слів) з контроллера в пам'ять і назад. Передача одного блоку (512 байт у більшості сучасних контроллерів) складається з 128 операцій передачі слова, що йдуть один за одним з невеликими інтервалами. Темп передачі даних визначається швидкістю обертання диска або руху стрічки. Цей темп зазвичай нижче за швидкість системної шини, тому передача даних повинна включати опит ознаки готовності контроллера прийняти або надати наступне слово. Інтервал між словами зазвичай вимірюється декількома циклами шини. Нерідко буває і так, що частоти шини і контроллера не кратні, тому послідовні слова треба передавати через різне число циклів.
Додаткова складність полягає в тому, що, не надавши вчасно наступне слово для запису, ми зіпсуємо весь процес — ця проблема особливо серйозна на пристроях однократного запису, наприклад марнотратниках компакт-дисків. Аналогічно, не встигнувши прочитати чергове слово, ми втратимо його і вимушені будемо відмотувати стрічку назад плі чекати наступного звороту диска.
Видно, що це саме та ситуація, яку ми раніше описували як свідчення до використання режиму опиту: потік наступних один за одним з невеликим інтервалом подій, кожне з яких не можна втратити, а потрібно обов'язково обробити.
Обробка події, яка потрібна, щоб уникнути такої неприємності, украй проста, так що пристрій, здатний з нею впоратися, не зобов'язаний навіть бути повністю програмованим процесором.
При передачі треба всього лише переконатися, що блок даних не кінчився, узяти наступне слово з пам'яті, діждатися готовності пристрою, скопіювати слово і повернутися на початок алгоритму. Якщо блок даних кінчився або контроллер видав помилку, необхідно повідомити про це центральному процесору.
Для реалізації цього алгоритму вистачає трьох регістрів (покажчика в пам'яті, значення поточного слова і лічильника переданих слів). Що реалізовує цей алгоритм пристрій називають контроллером прямого доступу до пам'яті (Direct Memory Access controller, DMA controller) (мал. 6.1). Такі контроллери часто розраховані на одночасну роботу з декількома пристроями — мають декілька каналів — і, відповідно, більше регістрів. Опис реальної мікросхеми контроллера ПДП можна найтів [Паппас/маррі 1993].
Зазвичай контроллери ПДП не вважають процесорами, проте без великої натяжки можна сказати, що це все-таки канальний процесор, хоча і дуже примітивний. Контроллери ПДП, розраховані на спільну роботу з процесором, що володіє віртуальною пам'яттю, часто мають якийсь аналог диспетчера пам'яті ЦП, для того, щоб дозволити операційній системі надавати покажчик для ПДП у віртуальному адресному просторі, або, в усякому разі, спростити роботу по перетворенню віртуальної адреси у фізичний.
Розрізняють двох типів реалізацій ПДП:

  • майстер шини (bus master) (у старій російськомовній літературі зустрічалася також словосполука задатчик шини), коли пристрій має свій власний контроллер ПДП
  • централізований контроллер, що встановлюється на системній платі і здатний працювати з декількома різними пристроями.

Мал. 6.1. Структура контроллера ПДП

Як альтернатива ПДП можна запропонувати постачання пристрою буфером, який працює з частотою системної шини. Центральний процесор передає дані в буфер, і лише коли закінчує передачу, ініціює операцію пристрою. Логіка роботи самого пристрою з цим буфером, втім, нічим не відрізняється від ПДП, з тією лише різницею, що використовується не загальносистемна, а вбудована пам'ять. На практиці, обидва підходи часто використовуються спільно: ПДП дозволяє мінімізувати завантаження центрального процесора, а буфер — уникнути втрати даних, якщо системна шина зайнята іншим пристроєм.
Типовий сучасний дисковий контроллер має і засоби ПДП, і внутрішній буфер. В кеширующих (що мають кеш-пам'ять) і RAID-контроллеров об'єм буфера може вимірюватися багатьма мегабайтами. Крім того, сучасні жорсткі диски також мають власні буфери.
Периферійні процесори знаходять широке вживання в сучасних обчислювальних системах. Так, типовий сучасний персональний комп'ютер, окрім центрального процесора, зазвичай має і спеціалізований відеопроцесор, так званий графічний прискорювач. В кеширующих дискових контроллерів і апаратних реалізацій RAID (див. разд. Дискові масиви) зазвичай також є власний процесор, в даному випадку, як правило, використовуються повністю програмовані процесори. Лазерні і струминні друкуючі пристрої мають процесор, який інтерпретує команди мови управління принтером (PCL або Postscript), є процесори модемах і в багатьох інших периферійних пристроях. Втім, нерідко зустрічаються і спроби обернути процес децентралізації обчислень -так звані "софтовиє" або Win-модемы (звані так тому, що програмне забезпечення, здатне працювати з таким модемом, часто поставляється лише під Windows), багато побутових принтерів і так далі
На відміну від перерахованих пристроїв, класичний повністю програмований канальний процесор підключений безпосередньо до системної шини і може оперувати декількома пристроями, залежно від завантаженої в нього канальної програми. Канатьниє процесори довгий час вважалися відмітною особливістю великих ЕОМ. У міні-і мікрокомп'ютерах використання спеціалізованих канальних процесорів, складніших, ніж контроллер ПДП, вважалося неприйнятним за вартісними показниками. Дивно, що навіть сучасне радикальне здешевлення устаткування не змінило положення: пропозиція консорціуму I2O (Intelligent Input/output) забезпечувати комп'ютери на основі процесорів х86 канальним процесором Intel 960, з ентузіазмом підтримане практично всіма постачальниками операційних систем, чомусь не було настільки ж гаряче підтримано споживачами.
Споживачі міні- і мікросистем, що потребують високої продуктивності, вважають за краще використовувати як додаткові процесори пристрої з тією ж архітектурою, що і центральний процесор. Це називається симетричною многопроцессорностью (SMP) і дозволяє перерозподіляти між процесорами не лише обробку подій, але і власне обчислювальну діяльність. Зрозуміло, що обробляти всі події за принципом опиту в такій архітектурі — безглузда, а частенько і нетерпиме марнотратство.
На щастя, ще з 60-х років, практично всі процесори як центральні, так і канальні, використовують стратегію роботи з подіями, у багатьох відношеннях набагато більш здійснену, ніж опит.

 

:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017