logo
мой курсач

1.2 Адресация основной памяти

В процессоре 80386 возможны несколько режимов адресации основной памяти (смотри рисунок 1.2). Из них нам наиболее интересен реальный режим, в котором используется сегментная организация памяти

Сегментация – механизм адресации, обеспечивающий существование нескольких независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты от взаимного влияния. В основе механизма сегментации лежит понятие сегмента, который представляет собой независимый поддерживаемый на аппаратном уровне блок памяти.

Каждая программа в общем случае может состоять из любого количества сегментов, но непосредственный доступ она имеет только к трем основным сегментам (кода, данных и стека), а также дополнительному сегменту данных. Программа никогда не знает, по каким физическим адресам будут размещены её сегменты. Этим занимается операционная система. Операционная система размещает сегменты программы в оперативной памяти по определенным физическим адресам, после чего помещает значения этих адресов в определенные места. Куда именно, зависит от режима работы процессора. Так, в реальном режиме эти адреса помещаются непосредственно в соответствующие сегментные регистры, а в защищенном режиме они размещаются в элементы специальной дескрипторной таблицы. Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, то есть, начиная с нуля и заканчивая адресом, равным размеру сегмента. Этот относительный адрес, или смещение, который процессор использует для доступа к данным внутри сегмента, называется эффективным.

ПЭВМ 80386

реальный режим (как 16-ти раз. 8086)

защищенный режим

виртуальный режим (как 8086, но подчиняемый защищенному режиму )

16-ти разрядный (80286)

32-ух разрядный

Рисунок 1.2 – Режимы работы процессора 80386.

В режиме реальной адресации микропроцессор реализует сегментную организацию памяти, при которой физический адрес ячейки памяти формируется путем сложения базового адреса сегмента и относительного адреса ячейки внутри сегмента.

Так как микропроцессор оперирует логическими адресами, состоящими из сегмента и смещения, а оперативная память работает с линейными адресами, возникает необходимость преобразования логического адреса в линейный физический. Этой работой занимается СФА. Для получения физического адреса СФА сдвигает 16-ти битный сегмент влево на 4 разряда (тем самым, умножая его на 16) и прибавляет к этому числу 16-ти битное смещение. В результате получается 20-ти битный линейный физический адрес, необходимый для работы с оперативной памятью. На рисунке 1.3 показан пример вычисления 20-ти битного линейного физического адреса.

Таким образом, базовый адрес определяется содержимым 16-разрядного сегментного регистра. 20-разрядный базовый адрес формируется путем сдвига содержимого сегментного регистра на четыре разряда влево, младшие четыре разряда базового адреса заполняются нулями.

Линейный адрес образуется посредством сложения 20-разрядного базового адреса и 16-разрядного относительного адреса. Полученный 20-разрядный линейный адрес выдается процессором на магистраль как физический адрес для выборки соответствующего байта.

ФИЗИЧЕСКИЙ АДРЕС = СЕГМЕНТ*16 + СМЕЩЕНИЕ:

С ЕГМЕНТ = AFD1;

СМЕЩЕНИЕ = 11EE

A

F

D

1

0

0

+

1

1

E

E

A

F

E

2

E

E


Рисунок 1.3 – Пример формирования физического адреса