7.3.4. Организация памяти 80286

 

Шина адреса разрядностью 24 бита позволяет адресовать 16 Мбайт физической памяти, но в реальном режиме доступен только 1 Мбайт, начинающийся с младших адресов. С программной точки зрения память так же, как и в 8086, организуется в виде сегментов, но управление сегментацией имеет существенные различия для реального и защищенного режимов.

В реальном режиме по адресации памяти декларируется полная совместимость с процессором 8086, который своей 16-битной адресной шиной охватывает пространство физической памяти в 1 Мбайт. На самом деле, на радость разработчикам программного обеспечения PC, 80286 имеет ошибку, «узаконенную» и в следующих поколениях процессоров. При вычислении физического адреса (см. рис. 4.1) возможно возникновение переполнения, которое с 20-битной шиной адреса просто игнорируется. Если, например, Seg=FFFFh и EA=FFFFh, физический адрес, вычисленный по формуле РА=16 х Seg + EA=10FFEF, процессором 8086 трактуется как OFFEF — адрес, принадлежащий первому мегабайту. Однако на выходе А20 процессора 80286 в этом случае установится единичное значение, что соответствует адресу ячейки из второго мегабайта физической памяти. Для обеспечения полной программной совместимости с 8086 в схему PC был введен специальный вентиль Gate A20, принудительно обнуляющий бит А20 системной шины адреса. Не оценив потенциальной выгоды от этой ошибки, управление вентилем узаконили через программно-управляемый бит контроллера клавиатуры 8042. Когда оперативная память подешевела, а «аппетит» программного обеспечения вырос, в эту небольшую область (64К-16 бит) стали помещать некоторые резидентные программы или даже часть операционной системы, а для ускорения управления вентилем появились более быстрые способы (Gate A20 Fast Control).

В отличие от 8086 процессор 80286 имеет средства контроля за переходом через границу сегмента, работающие и в реальном режиме. При попытке адресации к слову, имеющему смещение FFFFh (его старший байт выходит за границу сегмента), или выполнения инструкции, все байты которой не умещаются в данном сегменте, процессор вырабатывает прерывание — исключение типа 13 (0Dh) — Segment Overran Exception. При попытке выполнения инструкции ESCAPE с операндом памяти, не умещающемся в сегменте, вырабатывается исключение типа 9 — Processor Extension Segment Overrrun Interrupt.

В защищенном режиме работают все режимы адресации, допустимые для 8086 и реального режима 80286. Отличия касаются определения сегментов:

сегментные регистры CS, OS, SS и ES хранят не сами базовые адреса сегментов, а селекторы, по которым из таблицы, хранящейся в ОЗУ, извлекаются дескрипторы сегментов

дескриптор описывает базовый адрес, размер сегмента (1 — 64 Кбайт) и его атрибуты;

базовый адрес сегмента имеет разрядность 24 бита, что и обеспечивает адресацию 16 Мбайт физической памяти.

 

 

 

HotLog

Заказчику web дизайна и программирования - каталог сайтов, обзор дизайн студий