Необходимость организации канала прямого доступа к памяти
Информация, хранимая во внешних устройствах памяти большой емкости, таких, как накопители на магнитных дисках и лентах, организована в виде блоков размером единицы и более килобайт. Для обмена данными между указанными устройствами памяти и основной (оперативной) памятью микропроцессора не подходят ни программный способ обмена, ни прерывания. Это обусловлено тем, что обмен производится блоками фиксированного размера в строгой последовательности, соответствующей расположению информации на магнитном носителе. Время на обмен одного байта данных строго фиксировано, ограничено скоростью передвижения носителя относительно магнитных головок и составляет весьма малое значение (единицы микросекунд и меньше). При программно–управляемом обмене и обмене с использованием прерываний на передачу байта данных затрачивается большее время. Для обмена данными в указанных условиях организуется прямой доступ к памяти (ПДП), или Direct Memory Access ( DMA ).
Каналом прямого доступа к памяти называют средства, позволяющие осуществить быстрый обмен данными непосредственно между основной памятью и внешним устройством (ВУ) без участия процессора. При этом способе обмена процедура ввода/вывода полностью осуществляется аппаратными средствами и возлагается на контроллер ПДП.
Отметим, что обычный обмен между внешним устройством и памятью реализуются за два командных цикла: вначале данные поступают от источника в центральный процессор, а затем — из процессора в приемник. При ПДП данные не проходят через процессор, и передача слова производится за один цикл. Поэтому основное достоинство обмена по каналу ПДП — высокая скорость обмена, ограниченная только временем доступа к памяти.
Принципы организации ПДП. Структурная схема организации канала ПДП показана на рис. 3.10.1. Прямой доступ к памяти предоставляется по завершении текущего машинного цикла процессора. В отличие от прерывания обмен по каналу ПДП выполняется без участия программы, поэтому содержимое рабочих регистров процессора сохраняется и на вхождение в режим ПДП не требуется затрат времени (отсутствует необходимость хранения в стеке содержимого рабочих регистров процессора).
Центральный процессор выполняет программирование контроллера, настраивая его на требуемый режим работы, и следит за состоянием контроллера. Во время обмена данными по каналу ПДП процессор отключен, а контроллер вырабатывает сигналы управления обменом для памяти и внешнего устройства. Связь внешнего устройства памятью осуществляется по шинам адреса и данных системного интерфейса. Проблема совместного использования шин центрального процессора и внешнего устройства решается двумя способами: организацией режима обмена с «захватом цикла» и (пакетного, или непрерывного) режима с блокировкой центрального процессора.
В режиме с «захватом цикла» обмен ведется одиночными передачами, когда для прямого доступа к памяти выделяются отдельные циклы (такты), т. е. передача данных (слов) перемежается с выполнением программы.
Один из вариантов обмена с «захватом цикла» состоит в использовании тех тактов, в которых центральный процессор не обменивается данными с памятью. Такие такты должны быть известны контроллеру ПДП. Некоторые процессоры вырабатывают специальный сигнал, указывающий используется ли процессором в данном цикле память. Например, Такой сигнал VMA вырабатывает микропроцессор
Motorola 6800
Процессор Intel 8080 никогда не использует четвертый и пятый такты машинных циклов для доступа к внешней памяти. Кроме того, каждый командный цикл начинается с машинного цикла М1 — выборки команды. В такте декодирования принятой процессором команды этого машинного цикла системные шины не используются. На это время системные шины можно отдать для передачи одного слова по каналу ПДП. Применение рассмотренного способа организации обмена не снижает производительности процессоров, однако:
? требует дополнительных аппаратных затрат и позволяет реализовать только случайные, нерегулярные передачи;
? скорость обмена будет не быстрой, темп обмена нерегулярен, так как длительности циклов различных команд различны, и, кроме того, прямой доступ может все–таки замедлить выполнение программы, если цикл ПДП не превышает интервал, соответствующий такту процессора.
Более распространенным является вариант способа с «захватом цикла», при котором центральный процессор принудительно отключается от системных шин адреса и данных. Его реализация связана с введением двух линий для передачи сигналов запроса на захват шин (ЗЗхв) и подтверждения захвата (ПЗхв). Сигнал ЗЗхв формируется контроллером ПДП.
После получения сигнала ЗЗхв процессор:
? приостанавливает выполнение очередной команды, не дожидаясь ее завершения;
? выдает в системный интерфейс сигнал подтверждения захвата ПЗхв;
? отключается от шин адреса и данных, переводя в высокоомное состояние шинные формирователи.
После получения сигнала ПЗхв контроллер ПДП использует шины системного интерфейса для обмена байтом или словом между ВУ и памятью. Затем снимает сигнал запроса ЗЗхв и возвращает управление шинами центральному процессору. Подготовив очередной байт или слово данных, контроллер ПДП вновь посылает сигнал ЗЗхв процессору и т. д.
Как уже отмечалось, режим ПДП не требует сохранения состояния регистров процессора в стеке. Поэтому передача данных с «захватом цикла» происходит с большей скоростью, чем при обмене в режиме прерываний.
Способ ПДП с блокировкой процессора отличается от способа с «захватом цикла» тем, что управление шинами контроллеру передается на время обмена блоком данных, а не на время обмена байтом или словом. Его следует применять, когда время обмена байтом сопоставимо с циклом процессора. В этом случае между двумя операциями обмена процессор не успевает выполнить ни одной команды. При непрерывной передаче массива данных скорость обмена ограничивается длительностью циклов устройства памяти, быстродействием самого контроллера и скоростью выдачи/приема данных внешним устройством.
Обмен данными по каналу ПДП требует предварительной подготовки контроллера. Она заключается в том, что программа загрузки устанавливает необходимые параметры для передачи:
? количество байтов (слов) данных, которые должны быть переданы;
? начальный адрес передаваемых данных (адрес первого байта или слова);
? направление передачи (запись/чтение).
Для занесения этих параметров в контроллере предусмотрены регистр адреса и счетчик байтов (слов).
Реализация прямого доступа к памяти. В качестве примера рассмотрим особенности схемной реализации и работы канала ПДП при передаче из внешнего устройства в память блоков данных в режиме с «захватом цикла». Схема такого устройства ПДП приведена на рис. 3.10.2. В устройстве можно выделить три вида аппаратных средств.
Средства адресации и контроля переданных слов:
? суммирующий 16–разрядный счетчик текущего адреса, разделенный на две половины для младших (МР) и старших (СР) разрядов. Каждая половина имеет свой адрес, по которому происходит начальная загрузка счетчика. На выходе счетчиков включены управляемые буферы для передачи адреса в память;
? вычитающий 8–разрядный счетчик слов, контролирующий число оставшихся для передачи слов. На его выходе включен логический элемент ИЛИ–НЕ, формирующий для внешнего устройства Флаг = 1 по завершении передачи блока данных, когда на вход ИЛИ–НЕ (10) поступает код 000000002;
? дешифратор
DС с тремя логическими элементами ИЛИ–НЕ (1, 2, 3), включенными на его выходе. Дешифратор с логическими элементами инициирует загрузку счетчиков адреса и слов.
Средство хранения данных, в качестве которого используется восьмиразрядный буферный регистр. К выходу регистра подключен управляемый буфер, обеспечивающий побайтное считывание данных из регистра и запись их в память.
Средства управления
К ним относятся:
? двухразрядный двоичный счетчик, управляющий записью данных в память и состоянием счетчиков адреса и слов;
? триггер запроса ТЗ, предназначенный для формирования сигнала запроса на ПДП (ЗПДП) для центрального процессора по стробу, поступающему от внешнего устройства, и хранения сигнала ЗПДП до конца передачи блока данных;
? логические элементы 4–9, обеспечивающие требуемый алгоритм управления. Назначение используемых сигналов приведено в табл. 3.10.1.
Принцип работы устройства ПДП. Программа, выполняемая центральным процессором, задает необходимые параметры для передачи данных:
? 16–разрядный адрес ячейки памяти для хранения первого слова путем последовательной загрузки в счетчик адреса младшего (МБ) и старшего (СБ) байтов;
? количество передаваемых слов путем загрузки числа л в счетчик слов. Из внешнего устройства ВУ поступают байт данных и строб, по которому байт данных заносится в буферный регистр. Строб также устанавливает триггер запроса ТЗ в единичное состояние. С выхода триггера ТЗ снимается сигнал запроса ПДП (ЗПДП). Получив сигнал ЗПДП, процессор приостанавливает выполнение программы, отключается от шин, предоставляя их устройству ПДП, и посылает сигнал разрешения ПДП (РПДП).
Сигнал РПДП выполняет следующие функции:
? открывает буфер для передачи содержимого буферного регистра на ШД;
? открывает буферы для передачи содержимого счетчика адреса на 16–разрядную шину адреса ША;
? запускает двухразрядный счетчик подачей сигнала на вход «Сброс» через инвертор (5);
? открывает элемент И (4) для поступления тактовых импульсов на вход «Счет» счетчика.
При втором тактовом импульсе ТИ на выходе счетчика появляются сигналы
Q1 = 1,
Q0 = 0. При комбинации
Q1
Q0 =10 элемент 8 закрыт, элементы 7 и 9 — открыты. Сигнал «Запись в память» ЗпП, проходя через элемент И (9), инициирует запись в память байта данных из буферного регистра по адресу, выставленному на ША счетчиком адреса.
Третий ТИ переводит двухразрядный счетчик в состояние Q1
Q0 = 11, благодаря чему открывается элемент И (8). На его выходе формируется сигнал «Счет», который:
? увеличивает на 1 содержимое счетчика адреса;
? уменьшает на 1 содержимое счетчика слов;
? производит сброс триггера запроса ТЗ, снимая сигнал запроса ПДП.
В результате этих операций процессор возобновляет работу, а счетчики подготовлены к передаче следующего слова (байта данных). Процессор продолжает работать до тех пор, пока не будет загружен буферный регистр новым словом и не будет послан новый запрос на ПДП. Далее процесс передачи слов по каналу ПДП повторяется. После того, как содержимое счетчика слов станет равным нулю (000000002), включенный на его выходе элемент ИЛИ–НЕ (10) установит флаг в единичное состояние, свидетельствующее об окончании передачи блока данных.
Встречаются, предпочтительно на вашей или нейтральной территории, проститутки Набережные Челны, все натуральные. Уговаривать проститутку на что-то не будет нужды. Красивые проститутки Набережные Челны, восхитительные и горячие, они такие модельные и раскрепощённые, что любой захочет их. Это будет волшебно.