Прямий доступ до пам'яті. СПК

Матеріал з Вікі ЦДУ
Версія від 15:21, 10 листопада 2014; Палій Вадим (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

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

Крім того, дані пересилаються відразу для багатьох слів, розташованих по поспіль йде адресами, що дозволяє використання т. Н. «Пакетного» (burst) режиму роботи шини - 1 цикл адреси і наступні за ним численні цикли даних. Аналогічна оптимізація роботи ЦП з пам'яттю вкрай утруднена.

В оригінальній архітектурі IBM PC (шина ISA) був можливий лише за наявності апаратного DMA-контролера (мікросхема Intel 8237).

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

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

Контролер може бути багатоканальним, здатним паралельно виконувати декілька операцій.