Характеристики ЭВМ Арифметические основы Законы алгебры логики Классификация элементов и узлов Виртуальная память Система прерываний Центральный процессор Прямой доступ к памяти системная шина Операционные системы Архитектура ПК Система команд

Расширение основной памяти IBM PC

Рабочая концепция фирмы IBM при создании IBM PC содержала гипотезу, что объем основной памяти ЭВМ, предназначенной для персонального использования в любой предметной области, не должен превышать 640 Кбайт. Поэтому в базовую модель IBM PC заложили 20-разрядную шину адреса системной магистрали. Наличие 20 линий в шине адреса позволяло адресовать память большего объема, чем было предусмотрено концепцией (220 = 1 Мбайт). “Излишек” адресного пространства в 384 Кбайт был поделен между видеопамятью (128 Кбайт) и ПЗУ (256 Кбайт).

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

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

В ЮМ PC XT фирма IВМ применила другой способ: 256 Кбайт было сначала оставлено для ПЗУ, в котором размещалась базовая система ввода-вывода (BIOS). Анализ программ BIOS показал, что в оставленном для ПЗУ адресном пространстве (UMB - Upper Memory Block) имеются “окна” - неиспользуемые участки. Четыре таких участка (paqe frames) по 16 Кбайт были выделены, и их адреса стали использоваться для адресации дополнительной памяти, подключенной к системной магистрали. Таким образом общий объем ОП удалось увеличить на 64 Кбайта. Специальная программа (драйвер дополнительной памяти) “перехватывала” обращение к “окнам” ПЗУ и вместо них “подставляла” дополнительный модуль памяти (Expended Memory).

Дополнительная память не обязательно должна была иметь объем 64 Кбайта. Ее объем мог быть и большим (фирма IBM выпускала модули дополнительной памяти объемом 8 и 32 Мбайта). При этом драйвер дополнительной памяти делил ее на блоки по 16 Кбайт и “отображал” каждое окно UMB на один из блоков Expended Memory. Из-за этого память такого вида получила название отоброжаемой.

Но развитие персональных ЭВМ привело к необходимости более серьезной корректировки рабочей концепции. Поэтому в IBM AT с микропроцессором i80286 разрядность шины адреса увеличили до 24, что позволило увеличить ее объем до 16 Мбайт. В МП i80386 разрядность шины адреса и адресных регистров микропроцессора увеличена до 32, в результате чего допустимый объем ОП увеличился до 4 Гбайт.

Наряду с этим изменился принцип формирования абсолютного адреса ОП, в результате чего утрачена совместимость с программным обеспечением, разработанным для IBM PC XT.

Чтобы обеспечить совместимость AT с XT, было решено реализовать два режима работы микропроцессоров, имеющих номер, больший 80286: реальный и защищенный.

В реальном режиме дополнительные разряды шины адреса заблокированы, что обеспечивает совместимость с микропроцессором 18086 и позволяет использовать операционную систему MS DOS и программное обеспечение, разработанное для XT. Но при этом остается неиспользованной вся дополнительная память, находящаяся за пределами 1 Мбайта. В защищенном режиме применяется другой принцип формирования абсолютного адреса ОП, благодаря чему возможно использование всей имеющейся в наличии дополнительной (расширенной) памяти, но возникают трудности с использованием программного обеспечения, разработанным для MS DOS.

В IBM PC XT 20-битный адрес формировался из двух машинных слов: базового адреса сегмента (16 бит) и смещения (16 бит). Это было связано с тем, что вся ОП делилась на сегменты емкостью 64 Кбайта. Адресация байтов внутри сегмента начиналась с 0 и заканчивалась адресом FFFF. Внутрисегментный адрес байта называется смещением (т.е. смещением относительно начала сегмента). Начало же сегмента (т.е. его базовый 20-битный адрес) однозначно определялось 16-битовым адресом, который преобразовывался в 20-битный адрес дописыванием справа четырех нулей. В машинных командах абсолютный (физический) адрес задавался либо прямым указанием базового адреса сегмента и смещения (которые разделялись двоеточием, например, OA12:F4B2, где ОА12 - 20-битовый адрес начала сегмента; F4B2 -16-битное смещение внутри сегмента), либо по умолчанию (базовые адреса сегментов программы, данных, стека запоминаются в специальных регистрах микропроцессора), либо указанием регистра, в котором содержится необходимый базовый адрес (например, если регистр называется CS, то абсолютный адрес в машинной команде может быть задан в виде: CS:F4B2).

Начиная с МП i80386, благодаря увеличению длины всех регистров для смещений до 32 бит, реализована возможность работы “с плоской памятью”, не разделяемой на сегменты. Это допускает адресацию 232 байта или 4 Гбайга ОП.

Кроме того, в защищенном режиме (начиная с МП i80286) можно использовать и сегментированную память, но сегментные регистры не суммируются со смещением, а предназначены в качестве указателя на управляющие таблицы, содержащие необходимую информацию о сегментах. Поскольку длина записей в этих таблицах может превышать 16 бит, появляется возможность увеличить количество и размеры сегментов, а следовательно, и максимальный объем виртуальной памяти (так как 32-битовая шина адреса СМ ограничивает допустимый объем физической памяти, виртуальная память реализуется за счет замены страниц в физической ОП слотами, т.е. образами страниц, из внешнего ЗУ).

Желание использовать в реальном режиме всю фактически имеющуюся в наличии дополнительную память привело к созданию двух виртуальных режимов, один из которых стандарт EMS (Expended Memory Specifications), реализующий принцип банкирования дополнительной памяти. Вся дополнительная память делится на страницы (банки) емкостью по 16 Кбайт; выбираются четыре страницы и объявляются активными. Выбранные активные страницы отображаются на четыре окна UMB, теперь при обращении к одному из окон UMB вместо него подставляется отображенная на него страница дополнительной памяти. Поскольку любое окно UMB можно отобразить на любую страницу дополнительной памяти (объявив ее активной), то, изменяя отображение в процессе работы, можно использовать всю дополнительную память любого объема.

Стандарт EMS реализуется программным путем - с помощью драйвера дополнительной памяти, который “перехватывает” каждое обращение к окну, имеющемуся в адресном пространстве ПЗУ, и “подставляет” вместо ПЗУ соответствующий участок дополнительной памяти.

В соответствии с этим стандартом работают драйверы XMA2EMS.SYS, EMM386.SYS и дp.

Стандарт EMS несколько снижает производительность системы, но не накладывает никаких ограничений на размещение в дополнительной памяти программ и данных.

Другой виртуальный режим основан на том, что за счет разблокирования на время дополнительных (по сравнению с XT) линий шины адреса системной магистрали удается увеличить доступное MS DOS адресное пространство еще почти на 64 Кбайта, начиная с'адреса FFFFF (т.е. за пределами адресного пространства 1 Мбайт). Эта область адресного пространства (64 Мбайта, начиная с 1 Мбайта) получила название НМА (Hiqh Memory Area) -пая область памяти. Ее также можно использовать, работая в MS DOS, хранения и программ, и данных.

Блоки памяти, расположенные выше границы НМА, называются ЕМВ Extended Memory Blocks) - расширенные блоки памяти, хотя часто расширенной памятью (ЕМ - Extended Memory) называют всю дополнительную память, расположенную в адресном пространстве выше 1 Мбайта, иногда !ляя в ней область НМА.

Кратковременное разблокирование дополнительных линий шины адреса емной магистрали позволяет реализовать стандарт XMS (eXtended Memory ification), при котором разделенная на страницы ЕМ отображается на , но в этом стандарте программные модули могут располагаться только ИА, а остальная память может использоваться лишь для хранения данных. Стандарт XMS реализуется драйвером HIMEM.SYS, который способен гать с шиной адреса, имеющей до 32 линий.


На главную