КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Страничное управление памятью.В микропроцессорах I80386 и более старших моделях дополнительно к перечисленным выше схемам добавилась еще одна – схема страничной адресации. Страничное управление является средством организации виртуальной памяти с подкачкой страниц по запросу. Страничная организация оперирует с памятью, как с набором страниц одинакового размера. В момент обращения страница может присутствовать в физической оперативной памяти, а может быть выгруженной на внешнюю (дисковую) память. При обращении к выгруженной странице памяти процессор вырабатывает исключение — отказ страницы, а программный обработчик исключения (часть ОС) получит необходимую информацию для «подкачки» отсутствующей страницы с диска. Страницы не имеют прямой связи с логической структурой данных или программ. В то время как селекторы можно рассматривать как логические имена модулей кодов и данных, страницы представляют части этих модулей. Учитывая обычное свойство локальности (близкого расположения требуемых ячеек памяти) кода и ссылок на данные, в оперативной памяти в каждый момент времени следует хранить только небольшие области сегментов, необходимые активным задачам. Эту возможность (а, следовательно, и увеличение допустимого числа одновременно выполняемых задач при ограниченном объеме оперативной памяти) как раз и обеспечивает страничное управление памятью. В первых 32-разрядных процессорах (начиная с 80386) размер страницы составлял 4 Кбайт. Начиная с Pentium, появилась возможность увеличения размера страницы до 4 Мбайт, одновременно с использованием страниц размером 4 Кбайт. В процессорах 6-го поколения имеется возможность расширения физического адреса до 36 бит (64 Гбайт), при котором могут использоваться страницы размером 4 Кбайт и 2 Мбайт.
Рис. 6. Страничная адресация.
Вычисление физического адреса происходит в два этапа. Первый этап аналогичен вычислению физического адреса схемы селекторной адресации. Однако в этом случае, как смещение, так и базовый адрес дескриптора 32-разрядные, что и позволяет формировать 32-разрядный адрес. Этот вычисленный адрес получил название линейного адреса и использовался в качестве исходного для второго этапа. На втором этапе линейный адрес позволял вычислить физический адрес по следующей схеме (Рис. 6). Элемент каталога таблиц и таблицы страниц имеет следующий формат:
Как уже было показано, процессоры Pentium и старше кроме стандартных страниц 4 Кбайт могут оперировать и страницами размером 4 Мбайт, что позволяет уменьшить накладные расходы на обслуживание страничного режима при возросших потребностях программ в памяти. Расширение размера страницы (Page Size Extension) разрешается установкой бита PSE в регистре CR4. При CR4.PSE=0 страничное преобразование работает по базовой схеме. При CR4.PSE=1 процессор анализирует бит 7, определенный теперь как PS (Page Size — размер страницы) строки каталога страниц (РDЕ). Если PDE.PS=0, эта строка ссылается на таблицу 4-килобайтных страниц, и обработка идет по схеме, показанной на Рис. 7.
Рис. 7. Страничная адресация для микропроцессоров Pentium.
Если PDE.PS=1, то биты 31:12 этой строки являются базовым физическим адресом страницы размером 4 Мбайт — здесь ступень таблицы страниц исключена. Формат строки каталога (PDE) для страницы с расширенным размером имеет вид:
Процессоры 6-го поколения также поддерживают расширение физического адреса (Physical Address Extensions) до 64 Гбайт. Это расширение включается установкой бита РАЕ в регистре CR4, при этом расширение PSE становится недоступным (бит PSE игнорируется). У процессоров Р6 разрядность внешней шины адреса составляет 36 бит. Расширенная разрядность адреса возможна лишь в режиме РАЕ, при РАЕ=0 биты внешней шины адреса А[35:32] принудительно обнуляются. Поскольку архитектура предполагает разрядность линейного адреса только 32 бит, старшие 4 бита могут появиться только в результате работы блока страничной переадресации. Здесь блок страничной переадресации оперирует уже 64-битными элементами. 32-битный регистр СR3 хранит указатель (Page Directory Base Pointer) на маленькую табличку 64-битных указателей, находящуюся в первых 4 Гбайт памяти. Два старших бита [31:30] линейного адреса выбирают из этой таблицы указатель на одну из 4 таблиц каталогов. Следующие 9 бит [29:21] линейного адреса выбирают элемент из этой таблицы, который, в зависимости от бита PS, может быть как ссылкой на таблицу страниц (PS=0), так и базовым адресом страницы памяти (PS=1). При PS=0 биты [20:12] линейного адреса выбирают страницу размером 4 Кбайт из таблицы, а биты [11:0] являются смещением в этой странице. При PS=1 биты [20:0] линейного адреса являются смещением внутри страницы размером 2 Мбайт. Ниже приведены схемы страничного преобразования для режима РАЕ (Рис. 8 и Рис. 9) и структура элементов.
Рис. 8. Страничная переадресация в режиме РАЕ для страниц размером 4 Кбайт.
Рис. 9. Страничная переадресация в режиме РАЕ для страниц размером 2 Мбайт
64-битные элементы страничного преобразования:
Cтрока таблицы указателей на каталоги:
Cтрока каталога для страницы размером 4 Кбайт:
Строка таблицы для страниц размером 4 Кбайт:
Строка каталога для страниц размером 2 Мбайт:
|