ОРГАНИЗАЦИЯ ОБМЕНА В РЕЖИМЕ ПДП
Использование любого варианта ПДП порождает ряд проблем, связанных с использованием общей магистрали несколькими устройствами. Даже при использовании простейшего варианта ПДП (slave DMA), который и рассматривается ниже, возникает проблема совместного использования магистрали двумя устройствами – процессором и контроллером ПДП. Для получения максимальной скорости обмена желательно, чтобы ПУ через контроллер ПДП имело непосредственную связь с ОП ЭВМ, т.е. имело бы специальную магистраль, как это и делается в ряде случаев. Однако такое решение существенно усложняет и удорожает ЭВМ, особенно при подключении нескольких ПУ, поэтому в большинстве простейших микроЭВМ для реализации обмена в режиме ПДП (организации каналов ПДП) используются шины системной магистрали. Именно этот вариант и рассматривается ниже. Кроме того, предполагается, что кэш-память отсутствует и данные (как и команды) поступают в процессор непосредственно из ОП. Последнее означает, что в течение всего периода обмена, т.е. пока магистралью управляет контроллер ПДП (master), процессор вынужден простаивать, поскольку не имеет доступа к ОП.
Несмотря на то что такой способ организации обмена в режиме ПДП характерен только для самых простейших микроЭВМ, на его примере можно достаточно наглядно проиллюстрировать основные принципы прямого управления магистралью со стороны ведущего устройства. Изучение механизма функционирования средств bas mastering более сложных вычислительных систем всегда требует достаточно детального рассмотрения сигналов конкретной системной магистрали, используемого процессора, особенностей архитектуры ведущих устройств и т.д.
Проблема совместного использования шин системного интерфейса процессором и контроллером ПДП в общем случае имеет два основных способа решения – ПДП с захватом цикла и ПДП с блокировкой процессора.
ПДП с захватом цикла
Этот способ ПДП предназначен для обмена короткими блоками информации в виде байта или слова и имеет два варианта.
Вариант 1. Для обмена используются те интервалы времени машинного цикла процессора, в которые он не обменивается данными с памятью или регистрами ПУ.
В этом варианте контроллер ПДП никак не мешает работе процессора. Однако возникает необходимость выделения таких интервалов для исключения временного перекрытия обмена контроллера ПДП и процессора. В некоторых случаях процессоры формируют специальные сигналы, указывающие такты, в которых процессор не ведет операций обмена. В других случаях применяют специальные схемы, внешние по отношению к процессору, которые идентифицируют такие "свободные" интервалы времени.
Применение подобного варианта организации ПДП не снижает производительность процессора, но передача данных происходит только в случайные моменты времени. Это понижает общую скорость обмена. Кроме того, для некоторых ПУ, такой режим обмена вообще неприемлем.
Вариант 2. На время, необходимое для обмена одним байтом или словом данных (что составляет несколько тактов), процессор принудительно отключается от шин системной магистрали. Такой способ организации ПДП с захватом цикла является наиболее распространенным.
Когда ПУ готово к обмену, оно формирует сигнал ЗПД, который поступает в контроллер ПДП. Он, в свою очередь, вырабатывает аналогичный управляющий сигнал (ОЗПД), который поступает в процессор. Сигнал ОЗПД формируется контроллером при появлении сигнала (сигналов) ЗПД на любой линии (линиях) ЛЗПД и заставляет процессор на несколько тактов отключиться от системной магистрали. Получив этот сигнал, процессор заканчивает операции обмена на магистрали. Затем, не дожидаясь завершения текущей команды (или машинного цикла), выдает в контроллер ПДП сигнал РПД и отключается от шин системной магистрали. При этом внутренние операции в процессоре по завершению текущей команды (или машинного цикла) продолжаются и могут быть совмещены по времени с операциями ПДП.
С этого момента времени всеми шинами системной магистрали управляет контроллер ПДП. Используя системную магистраль, он осуществляет обмен между ПУ и ОП одним байтом или словом, а затем, сняв сигнал ОЗПД, возвращает управление системной магистралью процессору.
Как только ПУ вновь будет готово к обмену, оно формирует сигнал ЗПД, контроллер ПДП захватывает магистраль, и цикл обмена повторяется. В промежутках между сигналами ЗПД процессор продолжает выполнять команды текущей программы.
Таким образом, в отличие от режима прерывания, который вводится только после завершения текущей команды, режим ПДП вводится, не дожидаясь ее завершения. Это связано с тем, что в режиме ПДП внутренние регистры процессора не используются, их содержимое не модифицируется, а следовательно, и не требует запоминания в стеке.
Естественно, что применение такого способа организации ПДП замедляет выполнение программы, но в меньшей степени, чем при обмене в режиме прерывания. Кроме того, в отличие от варианта 1 обмен происходит в те моменты времени, в которые это требует ПУ, что особенно важно при работе микроЭВМ в режиме реального времени.
Следует отметить, что такой вариант ПДП используется только тогда, когда интервалы времени между моментами готовности ПУ к обмену достаточно велики и позволяют выполнить процессору несколько операций.
ПДП с блокировкой процессора
Этот режим отличается от ПДП с "захватом цикла" тем, что управление системным интерфейсом передается контроллеру ПДП не на время обмена одним байтом или словом, а на все время обмена блоком данных. В этом случае все вопросы, связанные с синхронизацией работы ПУ и ОП, также решаются контроллером ПДП
(в режиме "захвата цикла" их фактически решал процессор). Такой режим ПДП особенно необходим в тех случаях, когда процессор не успевает выполнить хотя бы одну команду между очередными операциями обмена в режиме ПДП.
Режим ПДП с блокировкой процессора в современных ЭВМ является основным, поскольку современные ПУ, такие как жесткие и оптические диски, видеосистемы, принтеры, сканеры и т.д., всегда ведут обмен блоками информации существенного объема. Однако для их передачи контроллер ПДП должен удерживать магистраль достаточно продолжительное время, в течение которого процессор будет простаивать.Это существенно понизит производительность рассматриваемой простейшей микроЭВМ в целом.
Между тем, как уже отмечалось, процессоры большинства современных ЭВМ работают с ОП через кэш-память. При наличии кэш-памяти достаточного объема (особенно многоуровневой) процессор может продолжать некоторое время обработку команд текущей программы – до тех пор, пока необходимая информация присутствует в кэш и не требует обновления. Это время достаточно ограничено, поэтому арбитр должен следить за тем, чтобы время удержания магистрали контроллером ПДП не превышало некоторой, наперед заданной величины и простои процессора были сведены к минимуму.
Следует отметить, что реальные контроллеры ПДП, как правило, могут работать в различных режимах организации ПДП, зачастую комбинированных, поэтому рассмотренная выше классификация способов организации ПДП является весьма условной (особенно ПДП с блокировкой процессора и вариант 2 ПДП с захватом цикла).