Оперативная память

         

Сегменты оперативной памяти



Сегменты оперативной памяти

Первые компьютеры IBM PC имели 16-разрядную шину данных, что соответствовало пространству адресов 64 Кбайт. У IBM PC/XT, собранного на базе процессора Intel 8086, адресная шина увеличилась на 4 разряда и появилась возможность работы с пространством адресов размером в 1 Мбайт. Однако основные регистры процессора остались 16-разрядными, поэтому 20-разрядные адреса в них просто не помещались. Для работы с пространством адресов в 1 Мбайт потребовалось создание специального механизма.

Разработчики выбрали не самое лучшее из возможных решений, ограничив предельный размер пространства адресов значением 1 Мбайт. Возможно, им казалось, что такой объем памяти удовлетворит нужды пользователей на многие годы. Так или иначе, но заведомо ограниченное решение стало стандартом и используется во всех без исключения компьютерах семейства IBM PC.

Режимы работы микропроцессора. Компьютеры IBM .PC/AT, собранные на базе процессора Intel 80286, уже обеспечивали доступ к пространству адресов размером в 16 Мбайт. Однако для реального использования такого пространства требовалось новое программное обеспечение. К этому времени было создано много системных и прикладных программ, ориентированных на возможности процессора Intel 8086, и изменять способ работы с адресами было слишком поздно. Разработчики пошли по другому пути. Начиная с модели 80286, все микропроцессоры Intel поддерживают два режима работы. Один из них называется реальным режимом (real-address mode), а другой защищенным режимом (protected-address mode).

Реальным режим назван потому, что используются физические адреса оперативной памяти и внешних устройств, значения которых не превышают 1 Мбайт. При включении ПК любой современный микропроцессор переключается в реальный режим. В нем он работает в точности как Intel 8086, только значительно быстрее.

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

У микропроцессора Intel 386 шины адреса и данных стали 32-разрядными, а размер пространства адресов увеличился до 4 Гбайт. Кроме того, был введен
еще один виртуальный режим (virtual-address mode), иногда его обозначают V86. Он позволяет при работе в защищенном режиме эмулировать процессор 8086. Отличие от реального режима в том, что адреса не являются физическими (реальными), а отображаются на конкретную часть 32-разрядного пространства. Это позволяет современным операционным системам "параллельно" выполнять несколько задач, рассчитанных на работу в реальном режиме, загружая их в свободные адреса ОЗУ.
Таким образом, работа любого современного IBM PC начинается в реальном режиме, затем его можно перевести в защищенный режим, а из последнего — в виртуальный. Изменение текущих режимов работы микропроцессора обычно выполняет операционная система. Прикладные задачи могут это делать только при работе в монопольном режиме, на практике такие случаи встречаются редко.



Сегменты оперативной памяти

В реальном режиме работы процессора пространство оперативной памяти делится на сегменты, размер которых не превышает 64 Кбайт, а адрес начала обязательно кратен 16.

При выборке команд и операндов микропроцессор вычисляет абсолютный адрес, исходя из значения (кода) сегмента и смещения (относительного адреса) в нем. Для этого он сдвигает значение сегмента на 4 разряда вправо и прибавляет смещение к результату сдвига. Табл. Б.1 иллюстрирует схему формирования 20-разрядного адреса.

Таблица Б. 1. Схема формирования 20-разрядного адреса



15 14 13 ... c м е щ е н и е ... 2 1 0
15 14 13 12 ... с е г м е н т ... 2 1 0  
19 18 17 ... п о л н ы й   а д р е с ... 2 1 0

При записи на бумаге или на экране монитора сегмент и смещение разделяет символ "двоеточие". Например, записи 1111:2222 соответствует адрес 11110 + 2222 = 13332. Такая форма записи адресов используется при работе с большинством отладчиков.
Один и тот же полный адрес может быть задан различными способами. Например, область данных BIOS расположена в оперативной памяти, начиная с абсолютного адреса 400h. Его можно записать в виде 0000:0400, 0040:0000, 0020:0200 И Т. П.

Оперативная память занимает не все пространство адресов, а только младшие 640 Кбайт. Ее можно разделить на 10 сегментов максимального размера (64 Кбайт), коды которых будут изменяться от оооо до эоооь. Обычно далеко не все сегменты имеют максимальный размер, поэтому их количество бывает больше 10, но в любом случае сегмент с кодом AOOOh уже не относится к оперативной памяти, обычно это код видеосегмента при работе в графических режимах. И вообще, пространство от 640 Кбайт до 1 Мбайт выделено для размещения BIOS, ее дополнений, расположенных на платах контроллеров внешних устройств, адресов, через которые происходит доступ к этим устройствам, и т. п.

Содержание раздела