6. Прямой доступ к памяти. Прерывания. Драйверы. Спецификация P&P - Учебно-методический комплекс

6. Прямой доступ к памяти. Прерывания. Драйверы. Спецификация P&P

 

Прямой доступ к памяти. Прерывания. Драйверы. Спецификация P&P.

Термин прямой доступ к памяти (ПДП, DMA - DirectMemoryAccess) возник на заре развития процессорной техники. Этот термин фактически  означает прямой доступ к памяти со стороны периферийного устройства без участия процессора. Смысл такого доступа очевиден: освободить процессор от рутинных операций пересылки данных между внешним устройством и памятью, а также из памяти в память, и за счёт этого сэкономить ресурс процессора (процессорное время), чтобы повысить его производительность на операциях обработки данных. 

То устройство (функциональный узел), которое управляет пересылкой данных, называется контроллером ПДП. По мере развития процессорной техники, контроллеры ПДП стали многоканальными, что позволило поддерживать несколько каналов доступа к памяти от разных периферийных устройств, а также  и из памяти в память. Сами архитектуры процессорных систем сильно видоизменялись, контроллеры ПДП, периферия и память входили в разные части процессорных систем, но общая идея прямого доступа к памяти фактически не изменилась. Упомянем далее несколько конкретных реализаций DMA.

У сигнальных процессоров ADSP-2185M есть два варианта доступа к внутренней памяти процессора со стороны внешнего устройства: IDMA  и BDMA. Сигнальные процессоры Blackfin  ADSP-BF523 имеют канал доступа Host DMA к памяти процессора со стороны внешнего устройства.

Режим DMA поддерживается на интерфейсах компьютера: ISA, PCI, PCI Express. Но для осуществления пересылок по DMA необходимо, чтобы периферийное устройство (вставленная в слот плата) поддерживала DMA. 

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

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

В зависимости от источника возникновения сигнала прерывания делятся на:

·        асинхронные, или внешние (аппаратные) — события, которые исходят от внешних аппаратных устройств (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interruptrequest, IRQ) - устройства сообщают, что они требуют внимания со стороны ОС;

·        синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;

·        программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания, как правило, используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.

Дра́йвер (англ. driver, мн. ч. дра́йверы[1]) — компьютерное программное обеспечение, с помощью которого другое программное обеспечение (операционная система) получает доступ к аппаратному обеспечению некоторого устройства. Обычно с операционными системами поставляются драйверы для ключевых компонентов аппаратного обеспечения, без которых система не сможет работать. Однако для некоторых устройств (таких, как видеокарта или принтер) могут потребоваться специальные драйверы, обычно предоставляемые производителем устройства.

Для большинства устройств драйверы уже имеются в составе операционной системы.

Однако многие устройства неизвестны даже самым свежим версиям ОС. Ежедневно производители выпускают новые принтеры, более современные видеокарты. Даже привычные мышки «обрастают» огромным количеством необычных кнопок.

Если драйвер не устанавливается автоматически, то в таких случаях на экране появляется нелюбимая многими надпись: «Устройство установлено неправильно». Эта проблема легко решается — нужно установить необходимый драйвер. Вручную установить, ведь операционная система уже сообщила — в её коллекции нет подходящей программы-«переводчика» для работы с данным устройством.

Для ручной установки драйвера, прежде всего, посмотрите в коробку, в которой вам продали устройство. Как правило, вместе с устройствами поставляются компакт-диски с записанными на них программами. Вставив диск в привод, ответьте на несколько простых вопросов системы, которые появятся в мастере нового оборудования, и драйвер установлен!

Если устройство попало к вам без диска или он затерялся, то самую свежую версию драйвера всегда можно найти на сайте производителя и скачать её оттуда. Посмотрите на марку нового оборудования и поищите официальный сайт этой модели. Просто вводим впоисковик (Google или Яндекс) название фирмы и модели устройства.

PlugandPlay - это стандарт компьютерной индустрии для автоматизации процесса добавления новых возможностей к вашему компьютеру или изменения адаптеров PCMCIA в вашем портативном компьютере. Технология PlugandPlay возникла в связи с историческими проблемами, связанными с установками звуковых карт на компьютеры, работавших под управлением DOS или Windows3.1+; поддержка этой технологии гораздо важнее для тех, кто использует средства мультимедиа или играет в компьютерные игры, чем для любой другой категории пользователей.

Компьютеры, поддерживающие технологию PlugandPlay и оборудованные PlugandPlay-адаптерами, не требуют файлов config.sys и autoexec.bat. Каждый раз, когда вы запускаете Chicago, операционная система проверяет, какие адаптеры и периферийное оборудование, такое как принтеры, видеоадаптеры, инсталлированы на вашем компьютере. Далее она присваивает каждой карте свои собственные параметры: прерывания (IRQ), канал прямого доступа к памяти (DMA) и адреса портов. Наконец, стартовый процесс загружает только те драйверы, которые поддерживают установленные аппаратные средства. Если вы имеете портативный компьютер с одним или более слотов PCMCIA, то технология PlugandPlay предоставляет процесс, называемые горячей заменой. Если вы заменили сетевую карту PCMCIA на модем PCMCIA, то раздел PlugandPlay операционной системы заметит эту замену, выгрузит драйвер сети и установит драйвер модема. Конечно, Chicago поддерживает адаптеры и другие унаследованные драйверы, которые не являются PlugandPlay. Если такие устройства, как акустические карты с присоединенными дисководами CD ROM, требуют драйверы DOS и резидентные приложения DOS (terminate-and-resident - TSR) (например, mscdex.exe для CD ROM), то вам необходима соответствующая запись в config.w40 и autoexec.w40, заменителях config.sys и autoexec.bat. Когда вы устанавливаете Chicago, приложение Setup (установка) автоматически создаст эти записи. Если вы используете утилиты сжатия данных, такие как Stacker3.x, то Chicago добавляет необходимые записи в config.w40, и проблем с обработкой сжатых томов на диске возникать не должно.