Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПСиС_КонспектЛекций.pdf
Скачиваний:
741
Добавлен:
05.06.2015
Размер:
7.93 Mб
Скачать

Лекция 3.4. Режим прямого доступа к памяти

Режим прямого доступа к памяти (ПДП, или DMA — Direct Memory Access) используется, если необходимо произвести пересылку значительного массива данных между ОЗУ и каким-либо внешним устройством. В этом режиме обмен данными между устройствами и основной памятью происходит без участия процессора. Реализация такой пересылки с помощью соответствующей программы обмена потребовала бы выполнения отдельной команды пересылки для передачи каждого байта или слова. При этом необходим определенный объем памяти для хранения программы, а также значительное время для ее выполнения.

Обменом информацией в режиме ПДП управляет не программа, выполняемая процессором, а электронные схемы, внешние по отношению к ядру процессора. Обычно схемы, управляющие обменом данными в режиме ПДП, размещаются или в специальном контроллере, который называется контроллером прямого доступа к памяти, или в контроллере самого внешнего устройства.

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

Для реализации режима ПДП необходимо обеспечить непосредственную связь контроллера ПДП и памяти микропроцессорного устройства. Для этой цели можно было бы использовать специально выделенные шины адреса и данных, связывающие контроллер ПДП с основной памятью, но такое решение приведет к значительному усложнению устройства в целом, особенно при подключении нескольких внешних запоминающих устройств. Для сокращения количества линий в шинах микропроцессорного устройства контроллер ПДП подключается к памяти посредством уже имеющегося системного интерфейса. При этом возникает проблема совместного использования шин

152

системного интерфейса процессором и контроллером ПДП. Можно выделить два основных способа ее решения: реализация обмена в режиме ПДП с захватом цикла и с блокировкой процессора.

Существуют две разновидности ПДП с захватом цикла:

1)применяющий шину данных в те моменты, когда процессор ее не использует;

2)применяющий дополнительные управляющие сигналы контроля обмена данными.

Первый способ организации ПДП состоит в том, что для обмена используются те машинные циклы процессора, в которых он не обменивается данными с памятью. В такие циклы контроллер ПДП может обмениваться данными с памятью, не мешая работе процессора. Однако возникает необходимость выделения таких циклов, чтобы не произошло временного перекрытия обмена ПДП с обменом, инициируемым процессором. В некоторых процессорах формируется специальный управляющий сигнал, указывающий циклы, в которых процессор не обращается к системному интерфейсу. При использовании других процессоров для выделения таких циклов необходимо применение в контроллерах ПДП специальных селектирующих схем, что усложняет их конструкцию.

Применение рассмотренного способа организации ПДП не снижает производительности микропроцессорной системы, но при этом обмен в режиме ПДП возможен только в случайные по отношению

кустройству, формирующему запрос, моменты времени одиночными байтами или словами.

Второй способ организации ПДП с захватом цикла — принудительное отключение процессора от шин системного интерфейса. В этом случае системный интерфейс микропроцессорной системы дополняется двумя линиями для передачи управляющих сигналов запроса прямого доступа к памяти (ЗПДП) и разрешения прямого доступа к памяти (РПДП).

Управляющий сигнал ЗПДП формируется контроллером ПДП

(см. рис. 3.4.1). Процессор, получив этот сигнал, приостанавливает выполнение очередной команды, выдает на системный интерфейс управляющий сигнал РПДП и отключается от шин системного интерфейса. Во время передачи информации по каналу ПДП процессор переводит схемы управления магистралями в высокоомное состояние и тем самым изолируется от остальной части системы. Состояния

153

внутренних регистров замораживаются, т. е. процессор в режиме ожидания сохраняет то информационное состояние, которое было в нем к моменту удовлетворения запроса канала ПДП. С этого момента все шины системного интерфейса управляются контроллером ПДП. Контроллер ПДП, используя шины системного интерфейса, осуществляет обмен одним байтом или словом данных с памятью микропроцессорной системы и затем, сняв сигнал ЗПДП, возвращает управление системным интерфейсом процессору. Как только контроллер ПДП готов к обмену следующим байтом, он вновь «захватывает» цикл процессора и т. д. В интервалах между сигналами ЗПДП процессор продолжает выполнять команды программы. Тем самым выполнение программы замедляется, но в меньшей степени, чем при обмене в режиме прерываний (см. лекцию 2.6).

Применение в микропроцессорной системе обмена данными с ВУ

врежиме ПДП всегда требует предварительной подготовки, а именно: для каждого ВУ необходимо выделить область памяти, используемую при обмене, и указать ее размер, т. е. количество записываемых в память или читаемых из памяти байтов (слов) информации. Следовательно, контроллер ПДП обязательно должен иметь в своем составе регистр адреса (РА) и счетчик байтов (слов). Перед началом обмена с ВУ в режиме ПДП процессор должен выполнить программу загрузки. Эта программа обеспечивает запись в указанные регистры контроллера ПДП начального адреса выделенной ВУ памяти и ее размера в байтах или словах в зависимости от того, какими порциями информации ведется обмен.

Вышеизложенное не относится к начальной загрузке программ

впамять в режиме ПДП. В этом случае содержимое РА и счетчика байтов (слов) устанавливается переключателями или перемычками непосредственно на плате контроллера.

Блок-схема контроллера ПДП, обеспечивающего ввод данных

впамять микропроцессорной системы по инициативе ВУ в режиме ПДП с захватом цикла, приведена на рис. 3.4.1.

Перед началом очередного сеанса ввода данных из ВУ процессор загружает в регистры его контроллера следующую информацию: в счетчик байтов — количество принимаемых байтов данных; в РА — начальный адрес области памяти для вводимых данных. Тем самым контроллер подготавливается к выполнению операции ввода данных из ВУ в память микропроцессорной системы в режиме ПДП.

154

 

 

 

 

 

 

 

 

РД

 

 

 

 

 

 

 

 

 

0

 

 

 

 

Приемо-

 

 

 

 

 

1

 

От ВУ

 

 

передат-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чики

 

 

 

 

 

.

 

 

 

 

шины

 

 

 

 

 

.

 

 

 

 

данных

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

7

 

 

 

Запрос

 

 

 

 

 

Чтение

РД

 

Ввод

 

 

 

 

 

 

 

данных

 

ПДП

 

 

 

 

 

 

интерфейс

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

Счетчик байтов

 

 

 

 

 

 

 

 

 

–1

Разрешение

Логика

 

 

 

7

6 5

. . .

0

Системный

 

 

 

 

 

 

 

 

ПДП

управ-

&

 

 

 

 

 

 

 

 

ления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. . .

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

Чтение РА

 

 

 

 

 

 

 

 

 

 

Загрузка РА

7

6

5 . . .

0

+1

 

 

Шина

Прием-

 

 

 

 

 

 

 

 

 

 

 

 

адреса

ники

 

 

 

 

 

 

 

 

 

 

 

 

 

 

РА

 

 

 

 

шины

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адреса

 

 

 

 

 

 

 

 

Рис. 3.4.1. Контроллер ПДП для ввода данных из ВУ в режиме с захватом цикла и отключением процессора от шин системного интерфейса

Байты данных из ВУ поступают в регистр данных (РД) контроллера в постоянном темпе. При этом каждый байт сопровождается управляющим сигналом из ВУ «Ввод данных», который обеспечивает запись байта данных в РД контроллера. По этому же сигналу и при ненулевом состоянии счетчика байтов контроллер формирует сигнал ЗПДП. По ответному сигналу процессора РПДП контроллер выставляет на шины адреса и данных системного интерфейса содержимое своих РА и РД соответственно. Формируя управляющий сиг-

155

нал «Вывод», контроллер ПДП обеспечивает запись байта данных из своего РД в общую память. Сигнал РПДП используется в контроллере и для модификации счетчика байтов и РА. По каждому сигналу РПДП из содержимого счетчика байтов вычитается единица, и как только содержимое счетчика становится равным нулю, контроллер прекращает формирование сигналов ЗПДП.

На примере простого контроллера ПДП мы рассмотрели только процесс подготовки контроллера и непосредственно передачу данных в режиме ПДП. На практике любой сеанс обмена данными с ВУ в режиме ПДП всегда инициируется программой, выполняемой процессором, и включает два следующих этапа:

1)этап подготовки ВУ к очередному сеансу обмена, когда процессор опрашивает состояние ВУ (проверяет его готовность к обмену)

ипосылает в ВУ команды, обеспечивающие подготовку ВУ к обмену. Затем выполняется загрузка регистров контроллера ПДП. На этом подготовка к обмену в режиме ПДП завершается, и процессор переключается на выполнение другой программы;

2)этап обмена данными в режиме ПДП, который начинается после завершения подготовительных операций в ВУ по инициативе либо ВУ, как это было рассмотрено выше, либо процессора. В этом случае контроллер ПДП необходимо дополнить регистром состояния

иуправления, содержимое которого будет определять режим работы контроллера ПДП. Один из разрядов этого регистра будет инициировать обмен данными с ВУ. Загрузка информации в регистр состояния

иуправления контроллера ПДП производится программным путем. Наиболее распространенным является обмен в режиме ПДП с

блокировкой процессора. В этом случае управление системным интерфейсом передается контроллеру ПДП не на время обмена одним байтом, а на время обмена блоком данных. Такой режим ПДП применяется в тех случаях, когда время обмена одним байтом с ВУ сопоставимо с циклом системной шины.

В микропроцессорной системе можно использовать несколько ВУ, работающих в режиме ПДП. Предоставление таким ВУ шин системного интерфейса для обмена данными производится на приоритетной основе (рис. 3.4.2).

Что случается после получения контроллером ПДП контроля над шиной памяти, зависит от того, какой режим работы установлен для контроллера ПДП. Помимо вышеописанных, существует режим, ко-

156

 

Контроллер ПДП

 

 

….

 

 

Регистр статуса

 

 

….

 

/ВклВыкл

Регистр маски

 

Канал X ПДП

 

 

 

 

Основной

 

 

счетчик

 

 

Текущий

МП

 

счетчик

TC

 

 

 

Основной

 

 

адрес

 

 

Текущий

 

 

адрес

 

 

 

Шина требования

 

Арбитр ПДП

 

 

 

Шина

 

 

предоставления

 

 

PC шина

Рис. 3.4.2. Организация многоканального ПДП

157

торый называется взрывным (burst). Когда контроллер ПДП работает в этом режиме, он сохраняет контроль над шиной памяти в течение всего процесса передачи данных. Недостатком такого режима является то, что МП не может работать с шиной памяти, пока контроллер ПДП не завершит передачу данных. Другими словами, процессор может работать только со своей кэш-памятью первого и второго уровней. Это ограничивает возможности МП на время ожидания процессором завершения операции и возвращения контроля над шиной памяти контроллером ПДП.

Режим ПДП с блокировкой процессора используется наиболее часто, хотя большинство контроллеров ПДП могут работать в различных режимах.

Каков оптимальный размер блока, который будет передаваться перед возвращением контроля над шиной памяти и повторением запроса, — вопрос довольно сложный. Огромное значение в этом случае имеет наблюдаемая частота ошибок. Когда обнаруживаются ошибки при передаче данных, необходимо повторить передачу данных. Поэтому, если ошибки случаются часто, оптимальными являются блоки небольшой длины. Однако если ошибок немного, малый размер блоков приведет к увеличению количества циклов запросов и ответов между контроллером ПДП и МП, что увеличит общее время передачи данных. Как именно реализуются эти решения, зависит от конкретного производителя контроллеров ПДП.

Один из важных режимов ПДП — цепочечный режим, обеспечивающий, в частности, реализацию циклических буферов на основе ОЗУ. В этом режиме инициализация заключается в подготовке последовательности конфигурационных слов, связанных между собой ссылками. По завершению очередного цикла контроллер ПДП автоматически инициализируется конфигурационным словом из подготовленной последовательности. При этом каждое такое слово является уникальным и может определять различные источники, приемники и объемы передаваемой информации (рис. 3.4.3).

Поле «Режим» предназначено для установки различных параметров цикла ПДП, например, формируется или нет сигнал прерывания по завершению обмена и т. п.

Когда контроллер ПДП завершает передачу блока и возвращает контроль над шиной памяти МП, процессор может использовать шину для своих целей. Это дает процессору возможность обновлять

158

Ссылка

Адрес

Адрес

Количество

Режим

источника

получателя

слов

 

 

 

 

 

 

 

Ссылка

Адрес

Адрес

Количество

Режим

источника

получателя

слов

 

 

.

 

 

 

 

.

 

 

 

 

.

 

 

 

 

.

 

 

 

 

Ссылка

Адрес

Адрес

Количество

Режим

источника

получателя

слов

 

 

Рис. 3.4.3. Последовательность конфигурационных слов цепочечного режима ПДП

индикаторы прогресса, а также файловую систему информацией, относящейся к осуществляемым операциям ПДП.

Использование контроллера ПДП может привести к проблеме, возникающей при операциях ПДП, связанных с когерентностью кэшпамяти. Когда процессор обращается к некоторому месту в памяти, содержимое этого места записывается в кэш-память процессора. Если реализуются операции ПДП, содержимое кэш-памяти процессора может отличаться от содержимого памяти.

У этой проблемы существует решение. Например, системы с полной когерентностью кэш-памяти реализуют аппаратное решение, в котором контроллер ПДП отправляет сигнал контроллеру кэш-памяти, сообщающий о месте в памяти, с которым он работает. Если при прямом доступе требуется произвести запись в это место, контроллер кэш-памяти аннулирует содержимое кэш-памяти процессора. Если производится чтение, контроллер кэш-памяти обновит содержимое кэш-памяти процессора, чтобы оно содержало текущее значение (которое и должно храниться в кэш-памяти МП).

Такой метод работы требует некоторых накладных расходов, но при этом гарантирует когерентность кэш-памяти процессора.

159

Контрольные вопросы

1.Каково функциональное назначение устройства ПДП?

2.Какие существуют режимы ПДП?

3.Расскажите о ПДП с захватом шины.

4.Что происходит, если контроллер ПДП занял шину памяти, а процессор начал к ней обращаться?

5.Расскажите о ПДП с блокировкой процессора.

Литература

1.Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем: учебник для вузов. — СПб.: Питер, 2004. — 654 с.

2.Микропроцессорные системы: учеб. пособие для вузов /

Е.К. Александров, Р.И. Грушвицкий, М.С. Куприянов и др.; под ред. Д.В. Пузанкова. — СПб.: Политехника, 2002. — 935 с.

3.Антошина И.В., Котов Ю.Т. Микропроцессоры и микропроцессорные системы (аналитический обзор): учеб. пособие. — М.: МГУЛ, 2005. — 432 с.

160