Сложность обращения к памяти в PC обусловлена свойствами процессоров х86 разных поколений и требованием обратной совместимости новых процессоров и компьютеров со старым ПО.
Все программы в IBM PC-совместимом компьютере исполняются центральным процессором, принадлежащим к семейству х86. Любое устройство для процессора представляет собой лишь набор регистров (ячеек), отображенных в пространство памяти и (или) ввода-вывода, и необязательно источник аппаратных прерываний. Современные процессоры х86, работающие в защищенном режиме, имеют довольно сложные механизмы виртуализации памяти, ввода-вывода и прерываний, из-за которых приходится различать физические и логические пространства (адреса памяти и ввода-вывода) и события (операции ввода-вывода, прерывания). Физический адрес ячейки памяти или порта ввода-вывода - это адрес, формируемый для обращения к данной ячейке на физических шинах компьютера (системной шине процессора, шине PCI, ISA). Логический адрес - это тот адрес, который формируется исполняемой программой (по замыслу программиста) для доступа к требуемой ячейке. Физическая операция ввода-вывода или обращения к памяти - это процесс (шинный цикл), во время которого генерируются электрические сигналы, обеспечивающие доступ к данной ячейке (порту). Логическая операция - это исполнение программной инструкции (команды) обращения к интересующей ячейке. Логическая операция не всегда порождает ожидаемую физическую операцию: при определенных условиях она может блокироваться средствами защиты процессора, вызывая даже принудительное завершение программы, или же эмулироваться, создавая иллюзию физического исполнения.
Безопасность в защищенном режиме базируется на 4-уровневой системе привилегий. В большинстве современных ОС ради упрощения и экономии процессорного времени используются только два крайних уровня - нулевой (supervisor), с неограниченными возможностями, и третий (user), с самыми жесткими ограничениями. Смена уровней привилегий при исполнении программы занимает много тактов процессора, но это вынужденная плата за реализацию защиты, без которой устойчивую ОС не построить. Более подробно механизмы защиты и виртуализации памяти, ввода-вывода и прерываний в процессорах х86 описаны в литературе [6, 7], здесь же изложены лишь некоторые прикладные аспекты их работы.
Микросхема 8237А, применявшаяся в PC вплоть до первых моделей AT, представляет собой четырехканальный контроллер прямого доступа к памяти, допускающий каскадирование.
Прямой доступ к памяти (Direct Memory Access, DMA) позволяет выполнять пересылку данных между регистрами устройств и памятью, минуя центральный процессор. Для устройств, использующих DMA, различают два типа доступа.
Линии запросов прерываний в компьютере, насыщенном дополнительными адаптерами, являются самым дефицитным ресурсом, поэтому возникает желание использовать эти линии совместно, то есть применять разделяемые прерывания между несколькими устройствами (shared interrupts).
Аппаратные прерывания обеспечивают реакцию процессора на события, происходящие асинхронно по отношению к исполняемому программному коду.
Пространство ввода-вывода в IBM PC, как и в процессорах х86, отделено от пространства памяти.
Основную часть физического адресного пространства PC занимает оперативная память (ОЗУ), начинающаяся с нулевого адреса. В нее вклинивается область адресов AOOOOh-FFFFFh - Upper Memory Area (UMA), 384 Кбайт - верхняя память, зарезервированная со времен IBM PC для системных нужд.
Рассмотренные выше интерфейсы - PC, SMBus, SMI, SPI и JTAG - имеют общее свойство: они управляются и синхронизируются контроллером и не требуют фиксированной частоты синхронизации. Это позволяет для многих применений программно реализовать их на любом компьютере или микроконтроллере.
Интерфейс JTAG (Joint Test Action Group) предназначен для тестирования сложных логических схем, установленных в целевое устройство.
применяется для связи микроконтроллеров с периферийными микросхемами и микросхемами памяти.
В спецификации IEEE 802.3u сетевой технологии Ethernet от 1995 г. появился интерфейс МП (Media Independent Interface - интерфейс, независимый от среды передачи), позволяющий отделять специфические устройства физического уровня (PHY) от вышестоящих уровней.
Как видно из вышеприведенных описаний, все эти три шины являются «близкими родственниками»; однако они имеют ряд электрических, конструктивных и протокольных отличий.
Шина SMBus (System Management Bus - шина системного управления) - двухпроводной интерфейс для обмена данными между микросхемами различных системных компонентов компьютера, а также связи их с самим компьютером.
Последовательная шина ACCESS.Bus (Accessory Bus) разрабатывалась фирмой DEC как унифицированный недорогой интерфейс взаимодействия компьютера с внешними устройствами - клавиатурой, координатными устройствами, текстовыми устройствами (принтеры, считыватели штрих-кодов), мониторами (в плане обмена управляющей и конфигурационной информацией по каналу VESA DDC).
Шина Inter 1C Bus (шина соединения микросхем), или, кратко, PC, - синхронная последовательная шина, обеспечивающая двустороннюю передачу данных между подключенными устройствами.