63
используется временное разделение (мультиплексирование) общей системной
шины между процессором и КПДП.
Разработано две разновидности ПДП: режим без пропусков тактов
микропроцессора и режим с пропуском тактов микропроцессора.
В первом режиме реализации прямой доступ осуществляется без участия
процессора (параллельно микропроцессору). Для этого используются те
интервалы машинных циклов, в течение которых микропроцессор не
обращается к основной памяти. Процессор (или дополнительная схема)
идентифицирует эти интервалы для КПДП специальным сигналом,
означающим доступность системной шины. Производительность процессора в
этом режиме не уменьшается, но для каждого типа процессора потребуется
свой контроллер ПДП. С другой стороны, сами передачи будут носить
нерегулярный характер ввиду отсутствия у некоторых команд этих
интервалов,
что приведет к уменьшению скорости передачи данных в режиме ПДП.
Во втором способе реализации КПДП полностью «захватывает»
системную шину на время передачи, при этом процессор отключается от
системной шины и переходит в режим холостого хода. Таким образом, передачи
ПДП осуществляются путем пропуска тактов процессора в выполняемой
программе. При выполнении передач
ПДП содержимое внутренних регистров
процессора не модифицируются, поэтому его не нужно запоминать в памяти, а
затем восстанавливать, как при обработке прерываний. Выполнение программы
осуществляется сразу после окончания ПДП. Тем не менее, в условиях
интенсивных передач ПДП эффективная производительность процессора
уменьшается.
Аппаратная реализация каналов ПДП определятся особенностями ЭВМ и
устройств внешней
памяти, но можно сформулировать общие принципы работы
каналов ПДП.
2.4.1 Общие принципы организации ПДП
Центральный процессор программирует контроллер DMA, устанавливая
его регистры. Затем процессор дает команду устройству (например, АЦП)
прочитать данные во внутренний буфер. DMA-контроллер начинает работу,
посылая устройству запрос чтения (при этом устройство даже не знает, пришёл
ли запрос от процессора
или от контроллера DMA). Адрес памяти уже
находится на адресной шине, так что устройство знает, куда следует переслать
следующее слово из своего внутреннего буфера. Когда запись закончена,
устройство посылает сигнал подтверждения контроллеру DMA. Затем
контроллер увеличивает используемый адрес памяти и уменьшает значение
своего счётчика байтов. После чего запрос чтения повторяется, пока значение
счётчика не станет равно нулю. По завершении цикла копирования устройство
инициирует прерывание процессора, означающее завершение переноса данных.
Контроллер может быть многоканальным, способным параллельно выполнять
несколько операций.