Сделай Сам Свою Работу на 5

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






Логическая структура памяти PC обусловлена особенностями системы адресации процессоров семейства х86. Процессоры 8086/88, применявшиеся в первых моделях PC, имели доступное адресное пространство 1 Мбайт (20 бит шины адреса). Эти процессоры использовали сегментную модель памяти, унаследованную и следующими моделями в реальном режиме. Согласно этой модели исполнительный (линейный) адрес вычислялся по формуле 4.1. Таким образом, обеспечивался доступ к адресному пространству Addr = 00000 – FFFFFh при помощи пары 16-битных регистров. Заметим, что при Seg = FFFFh и Offset = =FFFFh данная формула дает адрес 10FFEFh, но ввиду 20-битного ограничения на шину адреса эта комбинация в физической памяти указывает на 0FFEFh. Таким образом, адресное пространство как бы сворачивается в кольцо с небольшим «нахлестом».
Начиная с процессора 80286 шина адреса была расширена до 24 бит, а впоследствии (386DX, 486 и выше) до 32 и даже 36 (P6).
P6 – компьютеры, основанные на процессоре Pentium Pro и выше.
В реальном режиме процессора, используемом в DOS, применяется та же сегментная модель памяти и формально доступен лишь 1 Мбайт памяти, что является недостаточным для большинства современных приложений. Однако выяснилось, что процессоры 80286 в реальном режиме эмулируют 8086 с ошибкой: та самая единица в бите А20, которая отбрасывалась в процессорах 8086/88, теперь попадает на шину адреса, и в результате максимально доступный линейный адрес в реальном режиме достигает 10FFEFh. За эту ошибку с радостью ухватились разработчики PC, поскольку дополнительные (64К – 16) байты оперативной памяти, адресуемой в реальном режиме, оказались подарком, позволяющим освободить дефицитное пространство оперативной памяти для прикладных программ. В эту область (100000h – 10FFEFh), названную «высокой памятью»High Memory Area (HMA), стали помещать часть операционной системы и небольшие резидентные программы.
Однако для обеспечения полной совместимости спроцессором 8086/88 в схему PC ввели вентиль линии А20 шины адреса – GateA20, который либо пропускает сигнал от процессора, либо принудительно обнуляет линию А20 системной шины адреса. Более старшие биты такой «заботы» не требуют, поскольку переполнение при суммировании 16-битных компонентов адреса по данной схеме до них не распространяется.
Управление этим вентилем подключили к свободному программно-управляемому выходному биту 1 контроллера клавиатуры 8042, ставшего стандартным элементом архитектуры PC начиная с AT. Предполагалось, что этим вентилем часто пользоваться не придется. Однако жизнь внесла свои поправки, и оказалось, что переключение вентиля в многозадачных ОС, часто переключающих процессор между защищенным режимом, реальным режимом и режимом V86, контроллером клавиатуры выполняется слишком медленно. Так появились альтернативные методы быстрого переключения вентиля, специфичные для различных реализаций системных плат (например, через порт 92h). Кроме того, иногда использовали и аппаратную логику быстрого декодирования команды на переключение бита, поступающую к контроллеру клавиатуры. Для определения способа переключения в утилиту CMOS Setup ввели соответствующие параметры, позволяющие выбрать между стандартным, но медленным способом и менее стандартизованным, но быстрым, в зависимости от используемого ПО.
32-разрядные процессоры позволяют организовать режим, иногда называемый «нереальным» или «большим реальным», в котором инструкции выполняются как в реальном, но доступны все 4 Гбайт памяти. Этот режим часто используется в игровых программах, целиком захватывающих все ресурсы компьютера, не заботясь о «правилах хорошего тона» по отношению к другим исполняемым программам.
Основную часть адресного пространства занимает оперативная память. Объем установленной памяти определяется тестом POST при начальном включении (перезагрузке) компьютера, начиная с младших адресов. Натолкнувшись на отсутствие памяти (ошибку), тест останавливается на достигнутом и сообщает системе объем реально работающей памяти.
Распределение памяти PC, непосредственно адресуемой процессором, приведено на рис. 1 и представляется следующим образом.
00000h-9FFFFh – Conventional (Base) Memory, 640 Кбайт – стандартная (базовая) память, доступная DOS и программам реального режима. В некоторых системах с видеоадаптером MDA верхняя граница сдвигается к AFFFFh (704 Кбайт). Иногда верхние 128 Кбайт стандартной памяти (область 80000h-9FFFFh) называют Extended Conventional Memory.
A0000h-FFFFFh – Upper Memory Area (UMA), 384 Кбайт – верхняяпамять, зарезервированная для системных нужд. В ней размещаются области буферной памяти адаптеров (например, видеопамять) и постоянная память (BIOS с расширениями). Эта область, обычно используемая не в полном объеме, ставит непреодолимый архитектурный барьер на пути непрерывной (нефрагментированной) памяти, о которой мечтают программисты.








Рис. 1 - Распределение памяти ПК


Память выше 100000h – Extended Memoryдополнительная(расширенная) память, непосредственно доступная только в защищенном (и в «большом реальном») режиме для компьютеров с процессорами 286 и выше. В ней выделяется область 100000h-10FFEFh – высокаяпамять, НМА, – единственная область расширенной памяти, доступная 286+ в реальном режиме при открытом вентиле Gate A20.
Область памяти выше первого мегабайта в различных источниках называется по-разному. Ее современное английское название – Extended Memory – пересекается с названием одной из спецификаций ее использования – Extended MemorySpecification. Но название другой спецификации использования – Expanded Memory Specification – в прямом переводе на русский язык неотличимо от перевода предыдущего термина (и Extended и Expanded переводятся как «расширенный»). Будем придерживаться терминологии, укрепившейся в литературе, и область всей физической памяти, расположенной в адресном пространстве выше 1 Мбайта, будем называть дополнительной памятью. Ее объем у современных компьютеров указывается строкой Extended Memory xxxxx Kbyte в таблице, выводимой после прохождения теста POST, и в меню стандартной конфигурации CMOS Setup.
Вышеприведенное разделение памяти актуально только для приложений и операционных систем реального режима типа MS-DOS. Для ОС защищенного режима (в том числе Windows 9x/NT/2000) доступна вся оперативная память, причем без каких-либо ухищрений вроде EMS и XMS, описанных ниже. Однако область UMA, сохраняемая ради совместимости, остается барьером на пути к единой однородной памяти.
Для компьютеров класса АТ-286 с 24-битной шиной адреса верхняя граница оперативной памяти – FDFFFFh (максимальный размер 15,9 Мбайт). Область FE0000h-FFFFFFh содержит ПЗУ BIOS (ROM BIOS Area), обращение к этой области эквивалентно обращению к ROM BIOS по адресам 0E0000h-0FFFFFh. Для 386+ процессоров и 32-битной шины адреса теоретическая верхняя граница – 4 Гбайт, а для Р6 – 64 Гбайт (36-битная шина адреса). В компьютерах с 32-разрядной шиной адреса образ BIOS дополнительно проецируется в адреса FFFE0000h-FFFFFFFFh, хотя для процессоров Р6 это и необязательно. Однако иногда используется и проекция BIOS в область FE0000h-FFFFFFh, что не позволяет задействовать более 16 Мбайт ОЗУ, поскольку система воспринимает только найденную непрерывную область оперативной памяти. Если 32-разрядный компьютер имеет отображение области BIOS под границей 16 Мбайт, это отображение обычно можно запретить установкой соответствующего параметра CMOS Setup. Иногда для использования специфических адаптеров ISA, имеющих буфер с адресами в 16-м мегабайте памяти, предусматривают параметр Memory Hole At 15-16M. Его установка также не позволяет использовать оперативную память свыше 16 Мбайт.
Реально современные системные платы позволяют установить до 512-2048 Мбайт ОЗУ, для мощных серверных платформ и это не предел. Обращение по адресам, превышающим границу установленной оперативной памяти (или максимально возможного объема), транслируется на шину PCI, которая имеет 32-битную адресацию.
Компьютеры, использующие режим системного управления SMM (System Management Mode), имеющийся у большинства процессоров последних поколений, имеют еще одно адресное пространство памяти – SMRAM. Это адресное пространство «параллельно» пространству обычной памяти и при работе доступно процессору только в режиме обработки SMI. Память SMRAM может представлять собой часть физической оперативной памяти (DRAM), а может быть реализована и специальной микросхемой энергонезависимой памяти. Ее размер может варьироваться в диапазоне от 32 Кбайт (минимальные потребности SMM) до 4 Гбайт. SMRAM располагается, начиная с адреса SMIBASE (по умолчанию 30000h), и распределяется относительно адреса SMIBASE следующим образом.
SMI# (System Management Interrupt). В режим SMM процессор может войти только по сигналу на входе SMI#. Сигнал SMI# для процессора является немаскируемым прерыванием с наивысшим приоритетом.
FE00h-FFFFh (3FE00h-3FFFFh) – область сохранения контекста (распределяется, начиная со старших адресов по направлению к младшим). По прерыванию SMI сохраняются почти все регистры процессора, но сохранение регистров FPU не производится.
8000h (38000h) – точка входа в обработчик (SMI Handler).
0-7FFFh (30000h-37FFFh) – свободная область.
Память SMRAM должна быть схемотехнически защищена от доступа прикладных программ. Процессор генерирует специальный выходной сигнал SMIACT# во время обработки SMI, который и должен являться «ключом» доступа к этой памяти. Если SMRAM не является энергонезависимой, то системная логика должна обеспечить возможность ее инициализации (записи программного кода обработчика) процессором из обычного режима работы до разрешения появления сигнала SMI#.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.