Сделай Сам Свою Работу на 5

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





Мы уже знаем, что в вычислительных системах используется два способа организации обмена данными между внешним устройством и памятью.
Первый способ - программируемый ввод-вывод (PIO). В этом режиме ввод и вывод данных осуществляет процессор, используя для пересылки свои внутренние регистры. Процессор читает данные из порта (регистра) внешнего устройства и записывает его в нужную область памяти, или наоборот, читает данные из памяти и передает их внешнему устройству (дисковый накопитель, например).
Режим PIO определяет, с какой скоростью данные передаются от диска к памяти и от памяти к диску. В самом медленном режиме - PIO mode 0 - время цикла передачи данных не превышает 600 наносекунд. За один цикл к диску и от диска передаются 16 бит (2 байта). Отсюда следует, что теоретическая скорость передачи данных в режиме PIO Mode 0 - 3.3 мегабайта в секунду.
Обмен между двумя устройствами может производиться по разным протоколам и с разными задержками на выдачу тех или иных сигналов. Существует 5 режимов PIO, управляемых процессором. Старший режим PIO4 позволяет работать со скоростью 16.6 Мбайт/c.
Второй способ обмена - прямой доступ памяти DMA - Direct Memory Access - режим обмена данными между памятью и устройством ввода/вывода, управляемый специальным устройством (контроллером DMA, в данной конфигурации компьютера) и выполняемый без участия центрального процессора. Использование этого режима значительно ускоряет пересылку данных, так как исключает пересылки данных между устройством ввода/вывода (например -это жесткий диск) и оперативной памятью через процессор. Обмен данными осуществляется по запросу внешнего устройства на прямой доступ к памяти. При этом процессор программирует контроллер DMA на передачу данных, (он задает адрес памяти, размер передаваемого блока данных, направление передачи (чтение или запись), после чего дает команду на выполнение), освобождает системную шину (адреса и данных) и передает управление контроллеру DMA, который и осуществляет обмен.
Пересылкой данных управляет контроллер DMA. Процессор, в это время, может продолжить выполнение прерванной программы, но доступа к памяти он не имеет и не может вмешаться в процесс обмена, пока контроллер не закончит передачу данных и не выдаст соответствующего сообщения.
Режимы контроллера DMA позволяют передавать данные как по одному слову (Single Word), так и по несколько сразу (Multi Word). Передача данных со скоростью до 16.6 Мбайт/c - обычный протокол, со скоростью 66 Мбайт/c (или 100) - протокол UltraDMA.
Упрощенная схема обмена внешнего устройства с памятью в режиме прямого доступа к памяти показана на рис.30.





Рис.30. Взаимодействие памяти и внешнего устройства в режиме DMA

Контроллер DMA имеет несколько каналов. Каждому периферийному устройству, работающему в режиме прямого доступа к памяти выделяется канал с определенным номером. Устройство может послать контроллеру запрос обмена — DRQx и получить разрешение обмена — DACKx#. На шине управления устанавливается сигнал записи или чтения данных при работе внешнего устройства с памятью. Для передачи данных используется шина данных (рис.31.). При операциях с прямым доступом к памяти по каналу DMA адрес порта указывать не требуется, посылаемые сигналы идентифицируются по номеру канала. Временная диаграмма цикла передачи данных из внешнего устройства в память будет выглядеть следующим образом:


Рис.31. Схема обмена сигналами управления для передачи данных в режиме DMA

Получив запрос DRQx ( х - номер канала DMA, выделенного устройству), контроллер DMA запрашивает управление шиной и ждет разрешения от процессора. Процессор прерывает выполнение текущей программы, программирует контроллер прямого доступа на определенный режим передачи данных и посылает сигнал разрешения прямого доступа к памяти. Контроллер выставляет адрес ячейки памяти и формирует сигналы DACKx# и WR#. Сигнал DACKx# указывает на то, что операция выполняется для канала х, WR# определяет режим записи данных, при чтении устанавливается сигнал чтения RD). Контроллер передавая данные модифицирует счетчик адреса и осуществляет передачу одного слова за другим. Контроллер повторяет эти шаги для каждого следующего сигнала DRQx, пока не будет исчерпан счетчик циклов. В последнем цикле обмена контроллер формирует общий сигнал окончания ТС (TerminateCount), который может быть использован для формирования сигнала аппаратного прерывания.
При работе в режиме прямого доступа к памяти контроллер DMA выполняет следующие функции:



· принимает запрос на прямой доступ к памяти от внешнего устройства;

· формирует запрос процессору на захват системной шины;

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

· формирует сигнал, сообщающий внешнему устройству о начале выполнения циклов прямого доступа к памяти;

· выдает на шину адреса системной шины адрес ячейки оперативной памяти, предназначенной для обмена;

· вырабатывает сигналы, обеспечивающие управление обменом данными;

· по окончании цикла прямого доступа к памяти контроллер снимает сигнал запроса, процессор снова становится хозяином системной шины.

Каждый канал контроллера прямого доступа к памяти состоит из 5-ти регистров, четырех 16-разрядных регистров (рис.3) и одного 6-ти разрядного:

· регистра текущего адреса (CAR);

· регистра циклов прямого доступа к памяти (CWR);

· регистра хранения базового адреса блока памяти (BAR);

· регистра хранения базового числа циклов прямого доступа к памяти
(WCR);

· 6-разрядного регистра режима (MR).

Регистр текущего адреса хранит текущий адрес ячейки памяти при выполнении цикла прямого доступа к памяти. После выполнения каждого цикла передачи данных содержимое этого регистра уменьшается на единицу. То есть при выполнении циклов регистр работает в режиме вычитающего счетчика. В режиме инициализации содержимое регистра текущего адреса принимает базовый адрес из регистра хранения базового адреса, а в счетчик циклов загружается базовое число циклов передачи данных.
Для организации прямого доступа в память в компьютерах IBM PC/XT использовалась одна 4-канальная микросхема DMA 18237, канал 0 которой был предназначен для регенерации динамической памяти (сейчас регенерацию осуществляет внутреннее устройство управления микросхемы памяти). Каналы 2 и 3 служат для управления передачей данных между дисководами гибких дисков, а также винчестером и оперативной памятью соответственно. Свободным оставался только канал DMA 1. Канал DMA 1 обычно используется звуковыми картами. Один канал DMA может использоваться различными устройствами, но не одновременно.
IBM PC/AT -совместимые компьютеры имеют уже 7 каналов прямого доступа к памяти. Как и для контроллеров прерываний, увеличение числа каналов было достигнуто путем каскадного включения двух микросхем i8237, интегрированных в микросхему контроллера периферии (южный мост); канал 0 DMA2 используется для подключения каналов контроллера DMA1 (рис. 32) .

 

Рис.32. Каскадное включение контроллеров DMA

Каналы первого контроллера по-прежнему используются как 8-ми разрядные, каналы второго контроллера используются для передачи 16-ти разрядных данных в одном цикле обмена данными.
Рассмотрим устройство контроллера DMA (рис. 33).

Структура одного канала показана на примере канала 0. В каждом канале регистры BAR и WCR предназначены для хранения констант - базового адреса и базового числа циклов. Они загружаются в режиме программирования контроллера одновременно с регистрами CAR (базовый адрес памяти) и CWR(текущий адрес памяти).

Регистр режима MR определяет режим работы канала. Он содержит информацию о типе цикла прямого доступа (чтение (ОП <- ВУ), запись (ОП -> ВУ), проверка), режиме изменения регистра текущего адреса (CAR) - увеличение или уменьшение и режиме работы канала - передача по запросу, одиночная передача, блочная передача, каскадирование (работа каскадной схемы контроллера DMA). Блок управления режимом содержит регистр команд и регистр условий. Регистр команд блока управления режимом определяет основные параметры работы канала. Загружается при программировании контроллера микропроцессором. Регистр условий хранит разрешение на прямой доступ каждому каналу (устанавливается программно) и запоминает факт перехода через 0 в регистре хранения базового числа циклов каждого канала.

 

Рис.33. Структурная схема контроллера DMA

Контроллер DMA может работать в двух основных режимах: в режиме программирования и режиме выполнения циклов прямого доступа к памяти.
В режиме программирования процессор работает с контроллером прямого доступа к памяти, как с внешним устройством. После загрузки в контроллер DMA управляющих слов контроллер переходит в пассивное состояние. В этом состоянии контроллер находится до тех пор, пока не поступит запрос на прямой доступ к памяти от внешнего устройства или от процессора. Обнаружив запрос на прямой доступ к памяти, контроллер выставляет процессору запрос на захват системной магистрали и ожидает от него подтверждения захвата шины, т.е. отключения процессора от системной шины и перехода его выходов в состояние высокого сопротивления (Z-состояние). При получении сигнала подтверждения захвата (HLDA) контроллер начинает выполнять циклы передачи данных в режиме прямого доступа к памяти. Необходимые для управления шиной сигналы вырабатываются самим контроллером DMA. Контроллер DMA можно рассматривать как устройство, являющееся главным абонентом системной шины.

С введением шины PCI изменился принцип организации работы внешних устройств с памятью в режиме DMA. На шине PCI отсутствуют сигналы DREQx и DACKx, здесь применяется технология захвата управления шиной внешним устройством (Bus Mastering - BM).
Технология захвата управления шиной (busmastering) совместима с протоколом режима UDMA и реализует работу в режиме DMA (передачу данных из памяти в устройство напрямую или наоборот, минуя процессор) для каждого устройства, которое может быть главным абонентом системной шины. Концепция главного абонента шины делает прямой доступ к памяти излишним. Дополнительно установленная схема главного абонента шины на адаптере внешнего устройства позволяет осуществлять прямой доступ к памяти каждому такому устройству. Адаптер главного абонента шины может вырабатывать все сигналы управления шиной сам и, следовательно, имеет возможность обращаться к области адресов памяти и ввода-вывода любым необходимым способом. Использование внешнего главного абонента шины обеспечивает большую гибкость и эффективность, чем работа с контроллером DMA, но требует более сложных арбитражных операций. Это ведет к существенному увеличению сложности и стоимости устройства, работающего в режиме управления шиной. Можно, конечно, рассматривать устройство управления шиной, расположенное на адаптере внешнего устройства, как форму контроллера DMA, который организует быстрый обмен данными между основной памятью и адаптером. Однако прямой доступ к памяти - это только часть концепции главного абонента шины.

На системной плате когда-то был расположен контроллер прямого доступа к памяти, в современном компьютере прямой доступ осуществляется не совсем так, как описывается здесь, но об этом мы поговорим несколько позже, а сейчас постараемся понять сам принцип организации прямого доступа к памяти. DMA - Direct Memory Access - прямой доступ к памяти - режим обмена данными между памятью и устройством ввода/вывода, управляемый специальным устройством (контроллером DMA, в данной конфигурации компьютера) и выполняемый без участия центрального процессора. Использование этого режима значительно ускоряет пересылку данных, так как исключает пересылки данных между устройством ввода/вывода (например -это жесткий диск) и оперативной памятью через процессор. Обмен данными осуществляется по запросу внешнего устройства на прямой доступ к памяти. При этом процессор программирует контроллер DMA на передачу данных, освобождает системную шину (адреса и данных) и передает управление контроллеру DMA, который и осуществляет обмен.
Чем в современном компьютере отличается организация прямого доступа к памяти от описанного?
Только тем, что функции контроллера теперь распределены между устройствами. Каждое устройство, которое имеет возможность прямого доступа к памяти, является устройством мастером (master). Устройство мастер может посылать запрос на прямой доступ к памяти системному контроллеру. Теперь процессор программирует не контроллер DMA, а это периферийное устройство и разрешает ему захват шины адреса и данных. После передачи данных устройство освобождает шины и процессор вновь имеет возможность работать с оперативной памятью.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.