Достоинства отображаемого на адресное пространство памяти ввода-вывода

1. обращения к устройствам ввода-вывода не требуются специальные команды процессора, такие как IN и OUT. В результате программу, общающуюся с таким устройством, можно написать целиком на языке С или C++, без вставок на ассемблере.

2. при отображении регистров ввода-вывода на память не требуется специального механизма защиты от пользовательских процессов, пытающихся обращаться к внешним устройствам. Все, что нужно сделать операционной системе, — это исключить ту часть адресного пространства, на которую отображаются управляющие регистры устройств ввода-вывода из адресного пространства пользователей.

3. при отображении регистров ввода-вывода на память каждая команда процессора, обращающаяся к памяти, может с тем же успехом обращаться к управляющим регистрам устройства.

Недостаткиотображаемого на адресное пространство памяти ввода-вывода.

1. в большинстве современных компьютеров применяется кэширование памяти. Например, программа, опрашивает в цикле порт PORT_4. При первом обращении к этому порту значение порта верное, но это значение сохранится в кэше. Все последующие обращения к порту PORT_4 на следующих итерациях цикла читают значение, сохраненное в кэше, и не обращаются к реальному устройству.

Таким образом, программа никогда не выйдет из цикла ожидания готовности, так как при кэшировании регистров устройств она не сможет узнать об изменении управляющего регистра.

Чтобы не допустить такой ситуации, необходима специальная аппаратура, способная выборочно запрещать кэширование.

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

2. при едином адресном пространстве все модули памяти и все устройства ввода-вывода должны изучать все обращения процессора к памяти, чтобы определить, на которые им следует реагировать. Если у компьютера одна общая шина, реализовать подобный просмотр всех обращений к памяти всеми устройствами несложно.

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

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

Такое решение работоспособно, но требует дополнительного увеличения сложности аппаратуры.

Второй способ решения проблемы. Установка на шину памяти специального следящего устройства, передающего все адреса потенциально заинтересованным устройствам ввода-вывода. Проблема в том, что устройства ввода-вывода могут не успеть обработать эти запросы с той же скоростью, что и память.

Третий способ решения проблемы. Фильтрация адресов микросхемой моста PCI. Эта микросхема содержит регистры диапазона, заполняемые во время загрузки компьютера. Например, диапазон адресов от 640К до 1М может быть помечен как не относящийся к памяти. Все адреса, попадающие в подобный диапазон, передаются не памяти, а на шину PCI. Недостаток этой схемы состоит в необходимости принятия во время загрузки решения о том, какие адреса не являются адресами памяти.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: