Из раздела 5.1.4 Прямой доступ к памяти в современных операционных системах Эндрю С. Таненбаум, Герберт Бос, 2014 ,
Чтобы упростить объяснение, мы предполагаем, что ЦП обращается ко всем устройствам и памяти через единую системную шину, которая соединяет ЦП, память и устройства ввода-вывода, как показано на рис. 5-4.
Чтобы объяснить, как работает DMA, давайте сначала посмотрим, как происходит чтение с диска, когда DMA не используется.
- Сначала контроллер диска последовательно считывает блок (один или несколько секторов) с накопителя, пока весь блок не окажется во внутреннем буфере контроллера.
- Затем он вычисляет контрольную сумму, чтобы убедиться в отсутствии ошибок чтения. Затем контроллер вызывает прерывание. Когда операционная система начинает работать, она может считывать блок диска из буфера контроллера по байту или слову за раз, выполняя цикл, при этом каждая итерация считывает один байт или слово из регистра устройства контроллера и сохраняет его в основной памяти.
Q: на втором этапе,
данные не передаются " из буфера контроллера " в основную память? Почему он говорит « из буфера контроллера » и « из регистра устройства контроллера »?
на втором шаге может ли контроллер передавать данные из буфера в основную память, не прерывая работу процессора и не вовлекая операционную систему снова?
Когда используется DMA, процедура отличается.
- Сначала ЦПУ программирует контроллер DMA, устанавливая его регистры, чтобы он знал, что куда передавать (шаг 1 на рис. 5-4).
Он также выдает команду контроллеру диска, чтобы он прочитал данные с диска во внутренний буфер и проверил контрольную сумму. - Когда действительные данные находятся в буфере контроллера диска, может начаться DMA. Контроллер DMA инициирует передачу, отправляя запрос чтения по шине на контроллер диска (шаг 2). Этот запрос на чтение похож на любой другой запрос на чтение, и контроллер диска не знает (или не заботится), поступил ли он от ЦП или от контроллера DMA. Как правило, адрес памяти для записи находится в адресных строках шины, поэтому, когда контроллер диска выбирает следующее слово из своего внутреннего буфера, он знает, куда его записать. Запись в память - это еще один стандартный цикл шины (шаг 3).
- Когда запись завершена, контроллер диска отправляет сигнал подтверждения на контроллер DMA также по шине (шаг 4). Затем контроллер DMA увеличивает используемый адрес памяти и уменьшает количество байтов. Если количество байтов все еще больше 0, шаги 2-4 повторяются до тех пор, пока счет не достигнет 0.
- В это время контроллер DMA прерывает процессор, чтобы сообщить ему, что передача теперь завершена. Когда операционная система запускается, ей не нужно копировать блок диска в память; это уже там.
Q: на втором этапе контроллер DMA запрашивает контроллер диска для передачи данных из буфера контроллера диска в основную память. На первом шаге ЦП выдает команду контроллеру диска, в которой говорится, что он должен прочитать данные с диска во внутренний буфер. В то же время, может ли ЦП также сообщать контроллеру диска о передаче данных из буфера контроллера диска в основную память, когда контроллер диска заканчивает передачу данных с диска в буфер контроллера диска, так что нет необходимости в Контроллер DMA, чтобы сказать контроллеру диска для передачи данных из буфера контроллера диска в основную память? (Я не могу понять, зачем нам нужен контроллер DMA для передачи данных между диском и основной памятью, поэтому думаю, что я упустил что-то важное, чтобы понять цитату).
- Сначала ЦПУ программирует контроллер DMA, устанавливая его регистры, чтобы он знал, что куда передавать (шаг 1 на рис. 5-4).
Контроллер устройства управляет устройством и выполняет операции на устройстве. На каком устройстве контроллер DMA контролирует и выполняет операции?
Благодарность!
Ответы:
Q1
На первом этапе мы НЕ используем DMA, поэтому процессор обрабатывает содержимое диска по частям. Процессор, конечно, (при условии, что данные действительно будут использоваться для чего-то, а не просто выброшен) сохранит их в памяти системы.
Буфер в этом случае представляет собой часть памяти на самом жестком диске (контроллере), и устройство контроллера регистрирует управляющий регистр самого жесткого диска (контроллера).
Для того, чтобы не задействовать ОС (или другое программное обеспечение), потребовалась бы какая-то операция DMA, а раздел текста, который вы обсуждаете в этой части вашего вопроса, НЕ использует DMA. Так что нет, в этом случае так не будет.
Q2
Таким образом, весь смысл контроллера DMA заключается в том, чтобы «выполнить утомительную задачу по сохранению содержимого из внутреннего буфера устройства в основную память». Процессор будет работать как с контроллером DMA, так и с дисковым устройством. Если бы диск мог сделать это сам, не было бы необходимости в контроллере DMA.
И действительно, в современных системах, возможность DMA , как правило , встроена в сам жестком диске контроллер, в том смысле , что контроллер имеет «шину» возможность, а это значит , что сам контроллер IS контроллер DMA для устройства. Однако рассмотрение их как двух отдельных устройств делает концепцию прямого доступа к памяти немного менее сложной для понимания.
Q3 (вид)
Если вы думаете о жестком диске как о стеке кирпичей, только что доставленном на стройплощадку, а процессор - это каменщик, который закладывает кирпичи, чтобы построить дом. Контроллер DMA - это рабочий, который переносит кирпичи из стопки кирпичей туда, где они нужны для каменщика, а это означает, что каменщик может сосредоточиться на выполнении фактической работы по укладке кирпичей (это квалифицированная работа, если вы когда-либо пробовали ее сами), и простая работа «возьми и неси» может быть выполнена менее квалифицированным работником.
Неподтвержденное свидетельство: когда я впервые узнал о передаче DMA с диска в память, было около 1997 года или около того, когда контроллеры IDE начали использовать DMA, и вам нужно было получить драйвер «IDE контроллера материнской платы», чтобы позволить IDE выполнять DMA, и в то время чтение с жесткого диска заняло бы около 6-10% процессорного времени, в то время как DMA в той же настройке использовало бы около 1% процессорного времени. До этого времени DMA могли использовать только модные системы с дисковыми контроллерами SCSI.
источник
Это не ответ; это просьба о разъяснении, которая слишком длинна, чтобы уместиться в комментариях.
Прежде чем кто-либо сможет ответить на этот вопрос, необходимо четко объяснить архитектуру компьютерной системы, которая обсуждается. А именно:
Какие шинные системы используются в этом описании?
Проходит ли дисковый ввод-вывод через шину памяти?
Видит ли контроллер диска шину памяти как ...
Итак ... что контроллер диска думает, что шина "на самом деле"?
В большинстве компьютерных систем существует разновидность ввода-вывода, называемая «Порт ввода-вывода».
В более совершенных (ну, с тех пор, как два десятилетия назад) системах, есть более новые типы шинных систем. Например, 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. Если он есть, то почти наверняка этот контроллер DRAM также будет выполнять функциональные возможности DMA, то есть он выглядит как программируемый «цикл копирования байтов», и вся вышеупомянутая сложность скрыта в кремнии DRAM. контроллер.
Если вы находите это очень запутанным - я нахожу это также запутанным - вам понадобятся диаграммы. Много диаграмм. Системные диаграммы. Схемы автобусов. Временные диаграммы. Диаграммы переходов между состояниями. и т.п.
источник