Як працює контролер DMA?


14

З розділу 5.1.4 Прямий доступ до пам'яті в сучасних операційних системах Ендрю С. Таненбаума, Герберт Бос, 2014 р. ,

Для спрощення пояснення ми припускаємо, що процесор здійснює доступ до всіх пристроїв та пам'яті за допомогою єдиної системної шини, яка з'єднує процесор, пам'ять та пристрої вводу / виводу, як показано на рис. 5-4.

введіть тут опис зображення

  1. Щоб пояснити, як працює DMA, давайте спочатку розглянемо, як відбувається зчитування диска, коли DMA не використовується.

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

    Q: на другому кроці,

    • чи не передані дані " з буфера контролера " в основну пам'ять? Чому це говорить як " з буфера контролера ", так і " з регістра пристрою контролера "?

    • на другому кроці чи може контролер передавати дані зі свого буфера в основну пам'ять, не перебиваючи на процесор і не залучаючи знову ОС?

  2. Якщо використовується DMA, процедура відрізняється.

    • Спочатку процесор програмує контролер DMA, встановлюючи його регістри, щоб він знав, куди передавати (крок 1 на рис. 5-4).
      Він також видає команду дисковому контролеру, вказуючи йому зчитувати дані з диска у його внутрішній буфер і перевіряти контрольну суму.
    • Коли дійсні дані знаходяться в буфері дискового контролера, DMA може починатися. Контролер DMA ініціює передачу, видаючи запит читання по шині на контролер диска (крок 2). Цей запит на читання виглядає як будь-який інший запит на читання, і дисковий контролер не знає (чи не цікаво), чи надходив він з процесора чи з DMA-контролера. Зазвичай адреса пам'яті, в яку потрібно записати, знаходиться в адресних рядках шини, тому коли дисковий контролер виводить наступне слово з внутрішнього буфера, він знає, куди його записати. Запис у пам'ять - це ще один стандартний цикл шини (крок 3).
    • Коли запис завершений, контролер диска посилає сигнал підтвердження на DMA-контролер, також через шину (крок 4). Потім контролер DMA збільшує адресу пам'яті для використання та зменшує кількість байтів. Якщо кількість байтів все ж перевищує 0, кроки 2 - 4 повторюються, поки кількість не досягне 0.
    • У той час контролер DMA перериває процесор, щоб повідомити, що передача зараз завершена. Коли операційна система запускається, вона не повинна копіювати диск диска в пам'ять; воно вже є.

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

  3. Контролер пристрою керує пристроєм та виконує операції над пристроєм. На якому пристрої контролер DMA керує та виконує операції?

Спасибі!


Схоже, ваше розуміння базується на автобусному опануванні, яке, напевно, є більш сучасним, ніж концепція DMA, описана в цьому підручнику. Концепція DMA в підручнику більш примітивна.
rwong

Я додав схему для спрощеної моделі, яку використовує книга.
Тім

Стрілка 3 на діаграмі не відповідає текстовому опису ... вітаємо. Щоб визначити, який з них правильний, знадобиться схема синхронізації шини для кроку 3. Що ще важливіше, потрібно з’ясувати, який пристрій відповідає за утримання сигналу даних на кроці 3. Чи дисковий контролер спочатку надсилає дані до DMA-контролера, а потім контролер DMA повторює дані (підводячи власну напругу на шину ) на пам'ять?
rwong

"Ак" на кроці 4 також є підозрілим. Хіба DMA вже не знає кількість байтів, які потрібно скопіювати?
rwong

Не знаєте, як уточнити. Які книги про ОС та архітектуру ви вивчали чи вважаєте їх найкращими?
Тім

Відповіді:


7

Q1

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

Буфер в цьому випадку є частиною пам'яті на самому жорсткому диску (контролері), а пристрій контролера реєструє регістр управління самого жорсткого диска (контролера).

Якщо не задіяно ОС (або якесь інше програмне забезпечення), це вимагатиме певної операції з DMA, і розділ тексту, який ви обговорюєте в цій частині свого питання, НЕ використовує DMA. Отже, ні, у цьому випадку це не станеться.

Q2

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

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

Q3 (вид)

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

Анекдотичні докази: Коли я вперше дізнався про перенесення DMA з диска в пам'ять, було близько 1997 року, коли контролери IDE почали використовувати DMA, і вам потрібно було отримати драйвер "контролера IDE материнської плати", щоб дозволити IDE робити DMA, і в цей час , зчитування з жорсткого диска займе близько 6-10% часу процесора, де DMA в тій же установці використовує близько 1% часу процесора. До цього часу DMA використовували б лише модні системи з дисковими контролерами SCSI.


5

Це не відповідь; це запит на роз'яснення, який занадто довгий, щоб вписатись у коментарі.

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

  • Які шинні системи беруть участь у цьому описі?

    • Більшість комп'ютерних систем мають шину пам'яті.
    • Більшість комп'ютерів також мають інші види систем шин.
  • Чи проходить IO диск також через шину пам'яті?

    • Іншими словами, чи використовує диск лінії адресної шини для адрес, а лінії шини даних для даних?
  • Чи дисковий контролер сприймає шину пам'яті як ...

    • Шина пам'яті? Тобто він вважає, що це розмова з мікросхемою пам'яті; тобто RAS (штрих доступу до рядків), CAS (стробоскоп доступу для стовпців), ...
    • Дуже малоймовірно - розмова з мікросхемою пам'яті вимагає бути надто точним щодо видачі команд відповідно до термінів DRAM (затримки) - через кілька циклів тактових годин занадто рано або занадто пізно, втрата даних відбудеться.
  • Отже ... що дисковий контролер вважає, що шина "насправді є"?

  • У більшості комп'ютерних систем існує такий тип IO, який називається "Порт вводу / виводу".

    • Порт введення / виводу може або підключити накопичувач до шини пам'яті, або у них може бути інша спеціальна шина.
    • Відмінна особливість порту вводу / виводу полягає в тому, що можна закінчити речі за один (або заздалегідь задану постійну кількість) циклу шин - не потрібно турбуватися про небезпеку синхронізації DRAM.
  • У більш просунутих (ну ще два десятиліття тому) системи є новіші типи шин. Наприклад, ISA, PCI, AGP, PCMCIA ... SCSI, ATA, SAS, SATA, FC-AL ...


Тепер, коли виникає стільки невизначеностей щодо "комп'ютерної системи, про яку йдеться", ви можете зрозуміти, чому ви не отримаєте чіткої відповіді на своє запитання.

Так, я знаю, що це походить з підручника. У вас є копія. Я не. (Не вдома - хоча в офісі є одна.) Тому, якщо вам потрібна відповідь, вам потрібно буде показати деякі схеми та пояснити, як виглядає система шин вашого комп’ютера.


Однак у самій нижній лінії:

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

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

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

  • Якщо передача даних передбачає дві різні шини, DMA, можливо, доведеться зробити це на іншій шині.

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

  • Для того, щоб мати змогу записувати в основну пам'ять, DMA містить регістр адрес пам'яті, який програмується процесором, щоб процесор міг повідомити DMA, куди слід записувати дані.

  • Залежно від конструкції шини системи, DMA може мати або не мати справу з жахливою деталізацією синхронізуючих циклів DRAM.

  • Колись, через деякий час після винайдення DMA, деякі периферійні пристрої починають попередньо пакувати DMA на свої контролери - це називається Bus Mastering . Все-таки, чи сидить DMA на пакеті процесора, на материнській платі або на картці вводу / виводу, він повинен бути в кінцевому підсумку під контролем (програмуванням) процесора, тому що вони повинні якось узгоджувати доступ до системної шини (множини), і основна пам'ять.

  • Сучасні комп'ютерні системи мають виділену підсистему під назвою DRAM Controller. Якщо така є, майже впевненість, що цей контролер DRAM також буде виконувати функціональність DMA, тобто виглядає, що це програмований "цикл копіювання байтів", і вся вищезазначена складність прихована всередині кремнію DRAM Контролер.


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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.