Учебное пособие: Адресное пространство. Подсистемы ввода-вывода
Когда мы даем команду «писать в регистр», данные оседают в кэш. Если после этого будет дана команда «читать кэш», прочитаны данные будут прочитаны из кэша! Что неверно!
КЭШ предназначен для устройств, обладающих только свойством хранения (например, ОП). А любое ВУ обладает еще какой-нибудь функцией (при этом совсем не обязательно ему обладать функцией хранения). Например, видеопамять – хранение и отображение.
Кэш не может отличить память ВУ от ОП. От нас потребуется соответствующее управление. Надо обращение к регистрам делать отличным от обращения к ОП.
- Шина адресов
- Шина ВУстройств
То есть, делаем логическую шину, отличную от адресной.
В Intel ввели специальные инструкции – in и out. ЦП четко различает (по коду) команда работы с памятью и с портами. Обращения к ВУ не кэшируются.
Есть еще одна проблема: в случае большой памяти ВУ.
По байтам брать нельзя, т.к. на каждый байт нужно прерывание, а это накладно (на весь пакет нужно одно прерывание).
1-е решение: сигнал кэшу сбросить всю свою память перед выполнением обмена с памятью. Но сбросятся все таблицы страниц ! В ЦП УПА управляет адресацией с помощью таблицы страничных преобразований.
2-е решение: для каждой страницы 2 бита: «запрет кэширования» и «кэширование только при чтении»
Способы подключения ВУ к ВС. Использование контроллера ввода/вывода
КВУ знает протокол СШ и подключается к ней. С другой стороны он подключается к ВУ, т.е. должен знать интерфейс ВУ.
Управляющими объектами (ВУ-ва) являются регистры и память. ВУ отображает их на виртуальное АП.
Если устройство быстрое и большие объемы передаваемых данных – используется резидентная память (существует два механизма – прямой доступ к памяти и отображение памяти).
Если медленное устройство и малые объемы передачи данных – используются регистры ВУ.
Как же КВУ интерпретирует адрес, выставленный на шину?..
Используются регистры:
К такому регистру (например, к RD) можно обращаться по одному адресу, но физически это два разных регистра. В один – отправляются данные, а из другого получаются.
КВУ дешевы и достаточно универсальны.
Недостаток: они реализованы в виде фиксированной логики. Логику работы изменить нельзя!
Если нужно подключать программируемые устройства, контроллеры не годятся, нужно применять механизм сопроцессора.
Механизм сопроцессора
Сопроцессор не обладает полной вычислительной самостоятельностью. Он не может самостоятельно обмениваться данными по шине, принимать решения об обмене.
Сопроцессор имеет собственную систему команд, ему требуется помощь ЦП для организации работы.
1) Сопроцессор должен отличать циклы шины ЦП от своих циклов шины.
2) ЦП также должен отличать циклы шины сопроцессора от своих.
Escape-признак – это префикс команды.