Устройства ввода-вывода. Доступ к УВВ.
У каждого устройства ввода/вывода есть контроллер для общения с ЦП. Контроллер и процессор общаются через специальные регистры, располагающиеся на контроллере. При помощи управляющих регистров процессор управляет устройством вводы/вывода. Из регистров данных процессор может узнать состояние устройства, а так же выдаваемую информацию. Существует 2 альтернативных подхода для доступа к регистрам:
- в первом варианте каждому регистру назначается номер порта ввода/вывода и, при помощи специальных команд, происходит общение с этими регистрами. Специальные команды:
‡ in reg, port - считывает данные из порта в определенный регистр процессора;
‡ out port, reg - записывает данные из регистра процессора в определенный порт;
- второй подход состоит в отображении всех управляющих регистров на адресное пространство в памяти. Обычно для регистров отводятся адреса на вершине адресного пространства. Доступ к управляющим регистрам осуществляется с помощью обычных операций для работы с памятью.
|
|
Достоинства:
‡ для обращения к устройствам ввода/вывода не требуется специальных команд, например in и out;
‡ легко реализовывается защита от пользовательских процессов - достаточно исключить часть адресного пространства, на которую отображаются управляющие регистры из адресного пространства пользователей. Для доступа к определенному устройству, пользовательской программе будет дан доступ к странице памяти, на которую отображен соответствующий регистр;
‡ каждая команда процессора, которая обращается к памяти, может с тем же успехом обращаться к регистрам устройств ввода/вывода, например команда tsl.
Недостатки:
‡ в большинстве современных компьютеров используется кэширование памяти, поэтому необходима специальная аппаратура либо программные средства, которые позволяют запрещать кэширование для определенных страниц;
‡ при едином адресном пространстве все модули памяти и все устройства ввода/вывода должны изучать все обращения от процессора к памяти для того, чтобы определить, на какие обращения им реагировать.
Прямой доступ к памяти (DMA)
Общаясь с устройствами ввода/вывода, ЦП должен устанавливать управляющие регистры и читать регистры данных, а так же реагировать на все аппаратные прерывания. Это значительно уменьшает эффективность использования компьютера за счет частых переключений контекста. Чтобы избавиться от этих недостатков используется система, называемая прямым доступом к памяти (Direct Memory Access). В ее основе лежит аппаратный DMA контроллер. DMA контроллер может получать доступ к шине данных независимо от ЦП. Он так же имеет управляющие регистры и регистры данных. Через эти регистры ЦП программирует контроллер DMA на выполнение операций ввода/вывода, например номер порта, количество байт, направление переноса и т.д.
|
|
1 - ЦП программирует контроллер DMA;
2 - контроллер DMA дает команду контроллеру HDD прочитать данные во внутренний буфер и проверить контрольную сумму.
3 - контроллер DMA инициирует перенос данных из буфера в RAM. Контроллер HDD не отличает запросы ЦП и контроллера DMA;
4 - по завершении записи буфера контроллер HDD отправляет сигнал подтверждения контроллеру DMA (вместо прерывания ЦП). При необходимости шаги 2-4 повторяются;
5 - по завершении цикла копирования контроллер DMA вызывает прерывание процессора