Форма входа

Поиск



Счетчик посетителей

Рейтинг@Mail.ru

Разработано jtemplate модули Joomla

Прямой доступ к памяти

В этой статье рассматривается назначение и принцип работы системы прямого доступа к памяти микропроцессорных систем.

Как мы уже знаем из статьи Архитектура микропроцессорной системы, в основном режиме работы всеми узлами микропроцессорной системы управляет главный процессор. Именно он устанавливает на шине адреса адрес ячейки памяти или порта ввода-вывода, затем выдает на шину управления сигналы чтения, записи (RD, WR), а так же сигналы, которые определяют, что же именно нужно адресовать: пространство памяти или пространство портов ввода-вывода (MREQ и IORQ). В режиме прямого доступа к памяти все по другому. Это как раз тот случай, когда процессор отключается и не берет участия в управлении. Режим прямого доступа применяется в тех случаях, когда требуется быстро перенести большой массив информации. В этом режиме обычно происходит перенос блока информации из одной области памяти в другую, либо блок информации байт за байтом выдается в один из портов вывода, либо блок информации побайтно получается из какого либо порта и записывается в внекую область памяти. Под блоком информации естественно подразумевается некая последовательность байтов, хранящаяся в памяти в смежных ячейках (например, с адреса ADDR1 по адрес ADDR2).

Хороший пример такой задачи - вывод текста на печать. Текстовая информация хранится в памяти компьютера следующим образом: Каждая буква, знак препинания, арифметические значки и другие символы закодированы каждый своим кодом. Текст, предназначенный для печати, как и любая другая информация хранится в памяти компьютера. При этом в памяти просто последовательно располагаются коды букв этого текста, буква за буквой, так как они пишутся на экране. Пробелы, команды переноса строки и переноса страницы - это тоже специальные символы. Они так-же имеют свои коды и так же располагаются в памяти там, где они встречаются в тексте. Здесь нужно заметить, что описанный способ хранения текста в памяти используется только в простейших редекторах текста. Но для иллюстрации метода прямого доступа в память именно он подходит больше всего. И принтер, для упрощения мы возмем простейший - матричный. Такому принтеру нужно просто подавать последовательно коды букв через параллельный интерфейс компьютера а программное обеспечение принтера само формироует изображение букв и переносит его на бумагу. Получив код перевода строки, принтер прокрутит бумагу на одну строку. Получив код перевода страницы, принтер прокрутит бумагу до конца листа и произведет загрузку нового. Естественно с такой задачей прекрасно может справиться и главный процессор. Но если принтер скоростной, а процессор медленный, то прямой доступ может существенно ускорить процесс печати. При передаче данных в порт принтера программным путем, на передачу одного байта нужно использовать несколько команд процессора. Сначала байт из памяти нужно прочитать во внутренний регистр процессора, затем записать в порт, потом нужно увеличить значение указателя адреса в регистре процессора, где хранится его значение). И лишь потом повторить эти все операции для следующего знака (буквы).

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

Сразу после включения питания микросхема переходит в пассивный режим работы. В этом режиме микросхема представляет собой пассивное устройство управляемое центральным процессором. Оно имеет свои встроенные порты ввода-вывода посредством которых центральный процессор может менять ее режимы работы. При этом можно выбрать один из нескольких способов прямого доступа, начальный адрес блока информации предназначенного для переноса, длинну блока и начальный адрес нового места, куда этот блок нужно перенести. Либо адрес порта вводв вывода, если вывод будет производиться в порт. Запрограммировав таким образом контроллер ПДП, процессор переходит к выполнению своей основной програм-мы. А контроллер в это время переходит в режим ожидания. Он ждет специального сигнала: Запроса на ПДП от одного из внешних устройств. Такие запросы должны поступать на один из его входов DRQ0…DRQ4. В нашем случае сигнал запроса ПДП поступит от схемы параллельного интерфейса (LPT), который вырабатывает его при получении сигнала готовности от принтера. При получении сигнала запроса на ПДП, микросхема контроллера формирует сигнал запроса на захват (HOLD), который поступает на центральный процессор. Получив этот сигнал, процессор сначала заканчивает текущую операцию, затем переходит в специальный режим, который называется "режим прямого доступа к памяти" и сообщает об этом контроллеру ПДП при помощи сигнала подтверждения захвата (HLDA). В режиме прямого доступа процессор отключается от системной шины, и управление полностью берет на себя контроллер ПДП. Он сам вырабатывает сигналы адреса, сигналы управления (RD, WR, MREQ, IORQ). Таким образом, данные с максимальной скоростью передаются на принтер. По окончании процесса, контроллер ПДП отключается от системной шины и снимает с процессора сигнал HOLD. Как только сигнал будет снят, процессор возобновляет свою работу в обычном режиме.

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

Программа загрузки весов