Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗА, 8 сем / Вычислительные машины, системы и сети ЗА, 8 сем / Лекции ВМ системы и сети / Лекция5_Оперативная память / Адресация физической памяти в процессорах Intel 80х86 и совместимых.doc
Скачиваний:
47
Добавлен:
30.03.2015
Размер:
175.1 Кб
Скачать

Адресация физической памяти в процессорах Intel 80х86 и совместимых.

В статье "Простые типы данных"мы разобрались, как, и какие, операции выполняются процессором, какие типы машинных данных существуют. Это была первая ступенька в сложный и запутаный, но захватывающе интересный мир системного программирования. Теперь сделаем второй шаг, разберемся, как процессор получает доступ к данным. Мы будем рассматриватьтолькопроцессоры Intel 80х86 и совместимые с ними. Все числа будут представлены в шестнадцатиричной системе счисления.

Прежде, чем вплотную заняться вопросами адресации, надо разобраться с режимами работы процессоров Intel 80x86. Самый старый процессор семейства, 8086, мог работать только в одном режиме. Следующая модель, процессор 80286, сохранил режим совместимости с 8086. Этот режим получил название реального режима, или R-режима. Дополнительный режим, обеспечивающий защиту памяти, многозадачность, более гибкое управление ресурсами, получил название виртуального режима. Однако этот режим не позволял скрыть от программ факт выполнения на процессоре, отличном от 8086, и заставлял писать все программы с учетом своих новых особенностей. Процессор 80386 стал первым 32 разрядным процессором семейства. Кроме увеличения разрядности этот процессор получил возможность работать еще в одном режиме, режиме эмуляции 8086. Правда с названиями режимов произошла небольшая путаница. Режим совместимости по прежнему называли R-режимом, однако виртуальным режимом, или V-режимом, стали называть режим эмуляции 8086. Режим расширенных возможностей, называющийся ранее виртуальным, стали называть защищенным режимом, или P-режимом. V-режим позволил решить проблему написания программ, не интересующихся новыми возможностями. Однако операционная система получила возможность полного контроля над такими программами. То есть концепция виртуальной машины стала поддерживаться на уровне процессора. Например, стал реальностью одновременный запуск двух различных версий MS-DOS, причем обе будут считать, что выполняются в полном одиночестве. Процессоры последующих моделей ничего существенно нового не привнесли. Повышение скорости работы, изменение на аппаратном уровне, и даже добавление набора команд ММХ практически не отразилось на программной модели процессора. Это даже дало повод для заявлений о тупиковой ветви семейства 80х86. Впрочем это уже из другой оперы. Названия режимов работы процессоров, которые мы будем использовать, соответсвуют названиям режимов работы процессора 80386.

Структура оперативной памяти

Оперативная память состоит из байт, причем каждому байту назначен уникальный адрес (беззнаковое число). Адреса начинаются с 0, а последний доступный адрес определяется моделью используемого процессора и режимом его работы. Например, для процессора 8086, последним доступным адресом будет FFFFF. Любые два смежных байта образуют слово. За адрес слова принимается адрес его младшего байта. Для 32 разрядных моделей, любые четыре смежных байта образуют двойное слово. За адрес двойного слова принимается адрес его младшего слова, а следовательно, адрес его младшего байта. Байты, слова и двойные слова могут располагаться с любого адреса. Однако для слов и двойных слов существует понятие выравнивания. Операции со словами, например, будут выполняться быстрее, если слово начинается с адреса, кратного 2, или, по другому, с четного адреса. В некоторых случаях выравнивание обязательно. Иногда требуется выравнивание по адресу кратному 4, 8, 16, или даже 4096.

Кроме того, с точки зрения программиста, память разделена на сегменты.Это вызвано тем, что процессор 8086 оперирует 16 разрядными числами, следовательно, адресуемая память составляет 216=65536 байт (с 0 до 65535), чего явно не достаточно. Поэтому адресная шина процессора состоит из 20 разрядов (для 8086), что позволяет адресовать 1М байт. Сегментная организация и позволяет отобразить 16 разрядный адрес процессора в 20 разрядный (для 8086) адрес памяти. Более того, такая организация позволяет легко писать программы, которые можно перемещать по памяти. При этом требуется только поменять содержимое сегментного регистра, а саму программу можно оставить не измененной. Это называется позиционная независимость. Современные модели процессоров работают с 32 разрядными, или даже 64 разрядными, адресами. Но для совместимости сверху вниз, с процессором 8086, сегментная схема адресации в них сохранена.