logo
Кафедра “Системы автоматического управления”

8.2.1 Сегментация памяти мп i8086.

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

Основными причинами использования в МП сегментированной памяти являются следующие.

В мультизадачной среде, которая например обеспечивается МП 80286, 386, 486 в защищенном режиме, сегментация памяти позволяет физически изолировать друг от друга разные вычислительные процессы. Память разделяется на сегменты переменной длины и каждому процессу отводится один или более сегментов. Если один процесс пытается получить доступ к сегменту, относящемуся к другому процессу, то операционная система, как правило, завершает этот процесс с выдачей ошибки специального типа, названной ошибкой общей защиты.

В МП 8086, который не поддерживает мультизадачность, сегментация была введена по более простой причине. МП должен был иметь 16-битовые регистры для совмещения c более ранними МП фирмы Intel, при этом ему необходимо было генерировать 20-битный адрес с тем, чтобы он мог использовать все 20 адресных линий. Для формирования 20-разрядного адреса с помощью 16-ти разрядных регистров и был разработан специальный механизм сегментации памяти.

Сущность сегментации состоит в том, что память представляется в виде сегментов (областей) размером 64 кБ. В этом случае, для адресации ячейки памяти внутри сегмента можно задавать два адреса: адрес начала сегмента и относительный адрес ячейки - смещения.

Очевидно, что для адресации ячейки памяти внутри сегмента необходим 16-ти разрядный адрес. Адрес начала сегмента в общем случае является 20-ти разрядным. Физический адрес определяется суммированием:

Физический адрес = сегмент(20) + смещение(16)

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

Пара 16-ти разрядных адресов сегмент:смещения (seg:offset) называется логическим адресом.

Физический адрес памяти образуется суммированием смещения и сегментного адреса сдвинутого на 4 бита. Механизм формирования физического адреса представлен на рис.8.1.

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

Рис.8.1.