Контролери прямого доступу до пам’яті

Режим безпосереднього обміну даними між пам’яттю і ВУ здійснюється під управлінням контролерів ПДП. ПДП особливо зручний при передачах блоків даних у високому темпі, наприклад, між зовнішньою пам’яттю і ОЗУ.

Для реалізації цього виду обміну розроблені спеціальні БІС. Однією з таких БІС є Intel 8237А (російський аналог К580 ВТ57). Взаємодія блоків мікропроцесорної системи при ПДП показано на рис. 4.25. МП може виконувати програмування контролера, налаштовуючи його на певний режим роботи, і читання його стану. При ПДП контролер вирабати-кість сигнали управління обміном даними між ОЗУ і ВУ. Цей обмін здійснюється безпосередньо через системні ША і ШД, при цьому МП від них відключається, переводячи свої буферні регістри в третій стан.

Контролер містить чотири канали, до яких підключаються ВУ. Кожен канал забезпечує роботу ВУ в режимі ПДП за його запитом. При надходженні запиту контролер звертається до МП з сигналом HOLD (запит захоплення шин). Якщо МП відповідає сигналом HLDA (підтвердження захоплення), контролер приступає до управління обміном. На початку роботи МП здійснює програмування контролера. При цьому для кожного каналу заноситься наступна інформація:

  1. • початкова адреса області пам’яті, з якої почнеться обмін;
  2. • загальне число пересилаються байтів;
  3. • напрямок обміну (з ВУ в ОЗУ або навпаки).

Пересилання даних здійснюється побайтно, причому

дані розташовуються в пам’яті послідовно. Тому для формування адрес комірок пам’яті достатньо регістра адреси пам’яті і лічильника. У регістр адреси пам’яті заноситься початкова адреса, а в лічильник – загальне число пересилаються байтів. При кожній передачі байта вміст регістра пам’яті збільшується або зменшується на одиницю (це визначається при програмуванні каналу), тому до моменту закінчення пересилки чергового байта вже готовий адреса для наступного. Якщо запрограмований декремент лічильника, то як тільки лічильник обнуляється, обмін закінчується. Лічильник кількості пересилаються байтів 16-розрядний, тому максимальний обсяг блоку даних, переданих за один запит ПДП, становить 64 Кбайт.

Так само як і при обслуговуванні переривань, при обслуговуванні ПДП існує система пріоритетів і маскування запитів. Під час роботи МП може заборонити обслуговування якого-небудь ВУ, видавши відповідну маску. Система пріоритетів в контролері може бути фіксованою і циклічної. При фіксованій

системі найвищий пріоритет у каналу з номером «0», а найнижчий – з номером «З». В циклічній системі пріоритети динамічно змінюються за пріоритетним кільцю. Найнижчий пріоритет присвоюється останньому обслужених каналу, наступний за ним канал отримує найвищий пріоритет, а що залишилися два канали – більш низькі.

Посилання на основну публікацію