Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Распределение пространства памяти



Пространство памяти в PC-совместимых компьютерах используется для разме­щения собственно памяти (ОЗУ, ПЗУ), а также регистров (и областей локаль­ной памяти) периферийных устройств. Распределение пространства памяти PC обусловлено особенностями системы адресации процессоров семейства х86 и требованиями обратной совместимости PC с ПО всех предшествующих поко­лений. Адресуясь в пространстве памяти, центральный процессор и активные устройства (мастера шин) могут обращаться и к памяти периферии, отображен­ной на это пространство. Отметим, что в логическом распределении памяти фи­гурирует физическая память (оперативная и постоянная), а кэш является лишь «прозрачным» средством повышения ее производительности и не представляет отдельно адресуемых областей.

Процессоры 8086/88, применявшиеся в первых моделях PC, имели доступное адресное пространство 1 Мбайт (20 бит шины адреса). Эти процессоры исполь­зовали сегментную модель памяти, унаследованную и позднейшими моделями в реальном режиме. Согласно этой модели, исполнительный (линейный) адрес вычисляется по формуле Addr == Seg • 16 + Offset, где Seg и Offset — содержимое сегментного и адресного регистров (16-разрядных). Таким образом обеспечи­вался доступ к адресному пространству Addr = 00000 - FFFFFh при помо­щи пары 16-битных регистров. Заметим, что при Seg = FFFFh и Offset = FFFFh данная формула дает адрес lOFFEFh, но ввиду 20-битного ограничения на шину адреса эта комбинация в физической памяти указывает на адрес OFFEFh. Таким образом, адресное пространство как бы сворачивается в кольцо с неболь­шим «нахлестом». Начиная с процессора 80286, шина адреса была расширена до 24 бит, а впоследствии (386DX, 486 и выше) до 32 и даже 36 (у процессоров Р6). В реальном режиме процессора, используемом в DOS, применяется та же сегментная модель памяти и формально доступен лишь 1 Мбайт памяти, что является недостаточным для большинства современных приложений. Процес­соры 80286, с которых началась жизнь IBM PC/AT, эмулируют 8086 с ошибкой: та самая единица в бите А20, которая отбрасывалась в процессо­рах 8086/88, теперь попадает на шину адреса и в результате максимально доступный линейный адрес в реальном режиме достигает lOFFEFh. За эту ошибку с радостью ухватились разработчики PC, поскольку дополнительные (64 К - 16) байты оперативной памяти, адресуемой в реальном режиме, оказа­лись подарком, позволяющим освободить дефицитное пространство оператив­ной памяти для прикладных программ. В эту область (lOOOOOh - lOFFEFh), на­званную высокой памятью (High Memory Area, HMA), стали помещать часть операционной системы и небольшие резидентные программы. Однако для пол­ной совместимости с процессором 8086/88 в схему PC ввели вентиль линии А20 шины адреса — GateA20> который либо пропускает сигнал от процессора, либо принудительно обнуляет линию А20 системной шины адреса. Старшие биты такой «заботы» не требуют, поскольку переполнение при суммировании 16-битных компонентов адреса по данной схеме до них не распространяется. Управление этим вентилем подключили к свободному программно-управляе­мому выходному биту 1 контроллера клавиатуры 8042, ставшего стандартным элементом архитектуры PC, начиная с AT. Предполагалось, что этим вентилем часто пользоваться не придется. Однако жизнь внесла свои поправки, и оказа­лось, что переключение вентиля в многозадачных ОС, часто переключающих процессор между защищенным режимом, реальным режимом и режимом V86, контроллером клавиатуры выполняется слишком медленно. Так появились альтернативные методы быстрого переключения вентиля, специфичные для различных реализаций системных плат (например, через порт 92h). Кроме того, иногда использовали и аппаратную логику быстрого декодирования команды на переключение бита, поступающую к контроллеру клавиатуры. Для опреде­ления способа переключения в утилиту CMOS Setup ввели соответствующие параметры (см. 6.6), позволяющие выбрать между стандартным, но медленным способом и менее стандартизованным, но быстрым, в зависимости от исполь­зуемого ПО.

Поскольку ошибка эмуляции 8086 была радостно принята и широко использо­валась, ее повторили в 386 и в следующих моделях процессоров. А для упроще­ния внешних схем в процессоры, начиная с 486, ввели и вентиль GateA20 с со­ответствующим внешним управляющим выводом.

Распределение памяти PC, физически адресуемой процессором, проиллюст­рировано рис. 4.2 и представляется следующим образом:

♦ Адреса 00000h-9FFFFh (640 Кбайт) — стандартная, или базовая, память
(conventional, или base, memory). Доступна DOS и программам реального
режима. В некоторых системах с видеоадаптером MDA верхняя граница
сдвигается к AFFFFh (704 Кбайт). Иногда верхние 128 Кбайт стандартной
памяти (область 80000h-9FFFFh) называют расширенной базовой памятью
(extended conventional memory).

♦ Адреса AOOOOh-FFFFFh (384 Кбайт) — верхняя память (Upper Memory
Area, UMA). Зарезервирована для системных нужд. В ней размещаются об­
ласти буферной памяти адаптеров, подключенных к шине ISA (например,
видеопамять), и постоянная память (BIOS с расширениями). Эта область, обычно используемая не в полном объеме, ставит архитектурный барьер на пути непрерывной (нефрагментированной) памяти, удобной для программ­ного применения.

Память выше lOOOOOh — дополнительная, или расширенная, память (exten­ded memory). Непосредственно доступна только в защищенном (и в «боль­шом реальном») режиме для компьютеров с процессорами 286 и выше. В ней выделяется область lOOOOOh-lOFFEFh — высокая память (НМА) — единственная область расширенной памяти, доступная 286+ в реальном ре­жиме при открытом вентиле Gate A20.

Область памяти выше первого мегабайта в различных источниках называется по-разному. Ее современное английское название — extended memory — пересе­кается с названием одной из спецификаций ее использования — extended me­mory specification. В то же время название другой спецификации — expanded memory specification — в прямом переводе на русский язык неотличимо от пере­вода предыдущего термина (оба термина, и «extended» и «expanded», перево­дятся как «расширенный»). Будем придерживаться терминологии, укрепившей­ся в литературе, выпущенной издательством «Питер», и область всей физиче­ской памяти, расположенной в адресном пространстве выше первого мегабайта, назывем дополнительной памятью. Ее объем указывалтся строкой Extended Memory xxxxx Kbyte в таблице, выводимой после прохождения теста POST, и в меню стандартной конфигурации CMOS Setup. В современных компьютерах указывается общий объем оперативной памяти

Верхняя граница адресуемой памяти определяется разрядностью шины адреса процессора и системной шины; эти разрядности могут и не совпадать (ограни­чение дает компонент с минимальной разрядностью). В старших адресах памя­ти находится образ ПЗУ BIOS: в нем располагается программа начального за­пуска компьютера (POST), стартующая с фиксированного адреса. Оперативная память начинается с младших адресов, что обусловлено фиксированным поло­жением таблицы векторов прерываний в реальном режиме (она начинается с нулевого адреса). Области пространства памяти, отводящиеся для отображе­ния периферии, находятся в местах, не занятых оперативной и постоянной па­мятью.

Для первых компьютеров на процессорах 8086/88 с 20-битной шиной адреса верхняя граница адресуемой памяти — OF FFFFh. Область ПЗУ BIOS располо­жена по адресам ОЕ OOOOh-OF FFFFh; для оперативной памяти доступны об­ласть стандартной памяти (640 К) и некоторые области UMA. Память перифе­рийных устройств может располагаться только в UMA.

Для компьютеров класса АТ-286 с 24-битной шиной адреса верхняя граница ад­ресуемой памяти — FF FFFFh. Область FE OOOOh-FF FFFFh содержит ПЗУ BIOS (ROM BIOS Area), обращение к этой области эквивалентно обращению к ROM BIOS по адресам ОЕ OOOOh-OF FFFFh. В этих компьютерах для опера­тивной памяти доступна и область дополнительной памяти, максимальный раз­мер ОЗУ может достигать 15,9 Мбайт. Однако последний мегабайт (кроме об­ласти BIOS) может быть отдан для областей памяти периферии (дополни­тельно к UMA), так что объем ОЗУ окажется меньше 15 Мбайт.

Для процессоров 386+ и 32-битной шины адреса верхняя граница адресуемой памяти — FFFF FFFFh (4 Гбайт). Здесь образ BIOS находится в адресах FFFE OOOOh-FFFF FFFFh, для ОЗУ и памяти периферии остается почти 4 Гбайт. Для обеспечения совместимости BIOS дополнительно проецируется и в адреса Е OOOOh-F FFFFh (для программ, вызывающих сервисы BIOS по фиксированным адресам). Для периферии доступна область UMA, не занятая BIOS, и область, находящаяся выше границы ОЗУ (но ниже границы 4 Гбайт). Периферия, расположенная на шине PCI и ее «родственниках», может быть приписана к любым адресам (на PCI доступно все адресное пространство). Пе­риферия на шине ISA с ее 20-разрядным адресом может располагаться только в пределах первых 16 Мбайт: в UMA или в 16-м мегабайте памяти. Для адапте­ров ISA в CMOS Setup предусмотрен параметр Memory Hole At 15-16M, его уста­новка запрещает отображение на эти адреса оперативной памяти. В современ­ных версиях BIOS эта «дырка» не мешает использованию ОЗУ объемом свыше 15 Мбайт.

Современные процессоры с 64-битным расширением, как и 32-разрядные про­цессоры с 36-битной шиной адреса, позволяют адресовать память и выше 4-ги­габайтной границы. Объем установленного ОЗУ также может превышать 4 Гбайт, но для периферийных устройств предусмотрено «окно» под границей 4 Гбайт. В процессорах с 64-битным расширением есть пара специальных реги­стров, определяющих нижние границы адресов для устройств ввода-вывода, отображенных на память, для двух областей: под границей 4 Гбайт и под грани­цей физически адресуемой памяти (зависящей от модели процессора).

Иногда (в некоторых версиях BIOS для 32-разрядных процессоров) в CMOS Setup можно включить проекцию BIOS на область FE OOOOh-FF FFFFh (как в АТ-286). Особого смысла в этом нет (программы реального режима задейст­вуют образ в Е OOOOh-F FFFFh), однако включение этого параметра может соз­дать трудности для использования более 16 Мбайт ОЗУ (система воспринима­ет только найденную непрерывную область оперативной памяти).

Объем установленной оперативной памяти определяется тестом POST при на­чальном включении (перезагрузке) компьютера, начиная с младших адресов. Натолкнувшись на отсутствие памяти (ошибку), тест останавливается и сооб­щает системе объем реально работающей памяти. Установленные в Setup «дырки» под 16-м мегабайтом современные версии BIOS успешно обходят. Со­временные системные платы позволяют установить ОЗУ, объем которого ис­числяется уже гигабайтами. Возможность использования тех или иных облас­тей оперативной памяти определяется типом операционной системы: ОС ре­ального (MS-DOS и аналогичные) или защищенного режима (Windows, Unix, Linux).

Физическое распределение адресного пространства выполняется программиро­ванием регистров чипсета системной платы и мостов шин расширения. Север­ный хаб (или мост) чипсета определяет диапазоны адресов, которые обслужи­вает контроллер памяти (с «вырезами» в области UMA и другими «дырками»). Распределением оставшейся части занимаются мосты иерархии шин PCI (в эту иерархию входят мосты AGP, PCI-X и PCI-E), к которым могут подключаться и мосты старых шин (ISA).

Память для режима SMM

Компьютеры, использующие режим системного управления (System Manage­ment Mode, SMM), поддерживаемый большинством процессоров последних по­колений, имеют еще одно адресное пространство памяти — SMRAM (System Management RAM). Это адресное пространство «параллельно» пространству обычной памяти и при работе доступно процессору только в режиме SMI. Па­мять SMRAM может представлять собой часть физической оперативной памяти, хотя может быть реализована и отдельной микросхемой памяти. Объем памяти для режима SMM может варьироваться в диапазоне от 32 Кбайт (минимальные потребности SMM) до 4 Гбайт. SMRAM располагается, начиная с адреса SMIBASE, и распределяется следующим образом:

♦ SMIBASE+(FEOOh-FFFFh) — область сохранения контекста процессора (рас­
пределяется, начиная со старших адресов по направлению к младшим). По пре­
рывании SMI здесь сохраняются почти все регистры процессора, но сохране­
ние регистров FPU/MMX не производится.

♦ SMIBASE+8000h — точка входа в обработчик (SMI handler).

SMIBASE+(0-7FFFh) - свободная область.

После сброса процессора устанавливается SMIBASE = 0003 OOOOh, и первое же прерывание SMI вызовет сохранение контекста в область 0003 FEOOh - 0003 FFFFh и запуск обработчика по адресу 0003 8000h. При этом процессор генери­рует специальный выходной сигнал SMIACT#, означающий доступ к памяти SMRAM. Код обработчика, естественно, должен быть помещен в эту область до вызова SMI. Если для SMRAM используется системное ОЗУ, то область SMRAM перемещают в старшие адреса. Это можно сделать только обработчи­ком прерывания SMI, заменив образ регистра SMIBASE в сохраненной области контекста. После выхода из прерывания SMI это назначение вступит в силу, и следующий вход в SMM уже будет производиться по новым адресам. Область SMRAM должна исключаться из области ОЗУ, доступной операционной систе­ме (обработчик SMI является более низкоуровневой процедурой, чем драйверы ОС).

Верхняя память — UMA

Верхняя память имеет области различного назначения, которые могут быть за­полнены буферной памятью адаптеров, постоянной памятью или оставаться не­заполненными. В первое время эти «дыры» не использовали из-за сложности «фигурного выпиливания» адресуемого пространства. С появлением механиз­ма страничной переадресации (у процессоров 386 и выше) их стали по возмож­ности заполнять «островками» оперативной памяти, названными блоками верхней памяти (Upper Memory Block, UMB). Эти области доступны DOS для размещения резидентных программ и драйверов через драйвер EMM386, кото­рый отображает в них доступную дополнительную память.

Стандартное распределение верхней памяти выглядит следующим образом (рис. 4.3):

♦ Адреса AOOOOh-BFFFFh (128 Кбайт) - видеопамять (Video RAM, VRAM).
Обычно используется не полностью.

♦ Адреса COOOOh-DFFFFh (128 Кбайт) — резерв для адаптеров (adapter ROM
и adapter RAM), использующих собственные модули ROM BIOS или/и спе­
циальное ОЗУ, разделяемое с системной шиной.

♦ Адреса EOOOOh-EFFFFh (64 Кбайт) — свободная область, иногда занятая под
системные модули BIOS (system BIOS).

♦ Адреса FOOOOh-FFFFFh (64 Кбайт) - системные модули BIOS.

♦ Адреса FDOOOh-FDFFFh - ESCD (Extended System Configuration Data) -
область энергонезависимой памяти, используемая для конфигурирования
устройств Plug and Play. Эта область имеется только при наличии РпР
BIOS, ее положение и размер жестко не заданы.

В области UMА практически всегда присутствует графический адаптер. В зави­симости от модели он занимает следующие области:

♦ MDA RAM - BOOOOh-BOFFFh.

♦ CGA RAM - B8000h-BBFFFh.

♦ EGA ROM - C0000h-C3FFFh/C7FFFh.

♦ VGA ROM - C0000h-C7FFFh.

♦ EGA, VGA RAM — AOOOOh-BFFFFh, в зависимости от видеорежима исполь­
зуются следующие области:

 

• Graphics - AOOOOh-AFFFFh;

• Color Text - B8000h-BFFFFh;

• Mono Text - B0000h-B7FFFh.

Также распространенным потребителем UMA являются расширения ROM BIOS, расположенные на платах дисковых контроллеров, а еще микросхемы удален­ной загрузки (boot ROM) на платах адаптеров ЛВС. Обычно они занимают об­ласть C8000h — CBFFFh/C9FFFh/C8FFFh (для дисковых контроллеров), но могут и перемещаться при конфигурировании адаптеров.

Размер области, занимаемой системными модулями ROM BIOS, колеблется от 8 Кбайт у PC/XT до 128 Кбайт, однако разумное значение — 64 Кбайт. Боль­шая область использовалась «на радостях» от появления микросхем ROM и флэш-памяти объемом 1 Мбит (128К х 8), но при этом размер доступной па­мяти UMA сократился. Тогда стали микросхемы того же (и большего) объема отображать только на область FOOOOh-FFFFFh (64 Кбайт), а иногда и мень­шую. Это оказалось возможным, поскольку не все содержимое микросхемы ROM BIOS должно быть доступно одновременно. Таким образом удалось при­мирить интересы пользователей UMB с необходимостью расширения объема BIOS, связанной с усложнением технических средств.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.