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


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

Логический (виртуальный) адрес и его структура. Линейный и физический адреса. Объем логического, линейного и физического адресного пространства



Логический (виртуальный) адрес - адрес, используемый программой.

Логические адреса формируются программой и состоят из двух основных частей: сегмент и смещение (seg : offset). Первая часть адреса seg представляет собой содержимое соответствующего сегментного регистра. Вторая часть offset является внутрисегментным смещением. Фактически, это относительный адрес байта внутри сегмента (относительно начала сегмента или его базового адреса).

Сегментные регистры:

CS – Code Segment – сегмент кода;

DS – Data Segment – сегмент данных;

SS – Stack Segment – сегмент стека;

ES – Extra Segment – дополнительный сегмент данных.

Начиная с модели Intel 80386, появилось два дополнительных сегментных регистра данных: FS и GS.

При инициализации процессора он автоматически переводится в реальный режим, в котором не поддерживается виртуальная память. В R-режиме содержимое сегментного регистра трактуется как базовый адрессегмента, указывающий его местоположение в физической памяти. Точнее говоря, это 16 старших разрядов 20-разрядного физического адреса, задающие так называемую границу параграфа.

Для Р-режима содержимое сегментного регистра трактуется как селектор сегмента.

 

Селекторы сегментов размещаются в сегментных регистрах и являются 16 разрядными. Отметим, что последние два бита селектора сегмента связаны с защитой сегмента (RPL) и к адресации не относятся. В соответствии с этим, логический адрес является 46 разрядным, что позволяет работать в логическом пространстве адресов, емкостью 64 терабайта. Разрядность линейного адреса 32, т. е. объем линейного адресного пространства 4ГБ. Физический адрес 32 разрядный, а в старших моделях Pentium 36 разрядный, что соответствует объему физического адресного пространства 4Гб или 64Гб.

Организация виртуальной памяти на уровне сегментов. Селектор и дескриптор сегмента и их содержимое. Системные таблицы: GDT и LDT. Механизм преобразования логического адреса в линейный. Системные регистры, используемые в процессе преобразования: GDTR и LDTR – и их содержимое. Теневые регистры как средство ускорения преобразования.

Дескриптор сегмента представляет собой 8-байтную системную структуру данных, полностью описывающую соответствующий сегмент. Дескриптор может использоваться не только для описания сегментов, но и системных объектов, например, шлюзов (вентилей). Обобщенный формат дескриптора сегмента приведен на рис.3.

 

63 56 55 54 53 52 51 48 47 40 39 32

Base (31-24) G D U Limit (19-16) ARB Base (23-16)

 

31 16 15 0

Base (15-0) Limit (15-0)

 

Рис.3 Формат дескриптора сегмента

Преобразование логического адреса в линейный адрес во многом зависит от значения бита TI в селекторе сегмента.

Разделение дескрипторных таблиц, содержащих дескрипторы сегментов, на два вида (GDT и LDT) связано с поддержкой мультизадачного режима. В соответствии с этим в GDT находятся дескрипторы сегментов и системных объектов, используемых всеми задачами в мультизадачной среде. GDT является резидентной таблицей, то есть находится постоянно в основной памяти, и инициируется при переключении процессора в защищенный режим.

LDT ассоциируется с отдельными задачами, хотя возможен вариант совместного использования одной LDT несколькими задачами. По сути LDT представляет собой системный сегмент, который является перемещаемым. В соответствии с этим бит P в дескрипторе LDT является актуальным. Как правило, перезагрузка LDT осуществляется при переключении задач.

Все системные объекты и системные сегменты должны содержать свои дескрипторы только в GDT. Формирование дескрипторов и соответственно дескрипторных таблиц является привилегией операционной системы. Максимальное количество дескрипторов 213 = 8192 и объем дескрипторных таблиц 216 = 64 Кб.

 

При TI=0 дескриптор сегмента, к которому осуществляется обращение, находится в GDT. Соответствующая схема преобразования приведена на рис.7

Для определения местоположения дескриптора сегмента в GDT осуществляется сложение 32-разрядного базового адреса GDT (Base GDT), выбираемого из системного регистра GDTR, с 16-разрядным смещением внутри таблицы, которое образуется путем умножения на 8 значения поля индекса из селектора сегмента. Умножение на 8 связано с длиной дескриптора сегмента (64 бита = 8 байт) и реализуется дополнением 13-разрядного индекса тремя младшими нулями. Сумма компонент используется как адрес, по которому из GDT выбирается дескриптор сегмента. Содержащийся в выбранном дескрипторе базовый адрес сегмента (Base) складывается с 32-разрядным внутрисегментным смещением (Offset), образуя при этом линейный адрес.

При выключении страничного механизма (бит PG сброшен) линейный адрес, являясь физическим, используется для обращения к памяти. При включенном страничном механизме (бит PG установлен) линейный адрес подвергается дальнейшему преобразованию.

Приведенная схема предполагает присутствие сегмента, к которому осуществляется обращение в ОП (бит присутствия Р установлен). В противном случае (бит Р сброшен) преобразование адреса сопровождается выходом на стандартное прерывание «неприсутствие сегмента».

Если индикатор таблицы (бит TI) в селекторе сегмента установлен, то дескриптор сегмента находится в LDT. В свою очередь дескриптор LTD как системного сегмента находится в GDT. Таким образом, для преобразования логического адреса в линейный необходимо сначала обратиться в GDT за дескриптором LDT, а затем в LDT за дескриптором сегмента. Схема этого преобразования приведена на рис.8

В отличие от предыдущей схемы базовый адрес GDT из регистра GDTR складывается с 16-разрядным смещением, получаемым умножением на 8 индекса LDT, выбираемого из регистра LDTR. Сумма компонент определяет адрес дескриптора LDT в GDT. Для определения адреса дескриптора сегмента в LDT производится суммирование его компонент: базового адреса LDT (Base) и смещения в LDT, получаемого умножением на 8 значения индекса (Index) из селектора сегмента. И, наконец, путем сложения базового адреса сегмента (Base) и внутрисегментного смещения (Offset) получается линейный адрес.

Также как и в предыдущей схеме предполагается, что дескрипторная таблица LDT как системный сегмент, а также сам программный сегмент (кода, данных или стека), к которому осуществляется обращение, находятся в ОП (биты присутствия в дескрипторах LDT и сегмента установлены).

 

Теневые регистры представляют собой аппаратное расширение всех сегментных регистров. Каждый из них снабжается программно-недоступным 64-разрядным расширением, содержащим дескриптор соответствующего сегмента. Аналогичными расширениями снабжаются системные регистры LDTR и TR, содержащие селекторы системных сегментов LDTR и TSS соответственно.

С использованием теневых регистров любое обращение к сегменту предполагает быстрый доступ к его дескриптору, предварительно загруженному в этот регистр. Обновление содержимого теневых регистров происходит при изменении соответствующего ему сегментного регистра или регистра системного сегмента. При этом выборка дескриптора сегмента из GDT и LDT реализуется по приведенным выше схемам (рис.7, 8).

Из схем преобразования адреса следует, что с помощью GDT и LDT можно адресовать два логических адресных пространства емкостью 245 байт. Совместный объем логического адресного пространства составляет 246 байт = 64 Тбайт.

 

26. Организация виртуальной памяти на уровне страниц. Системные таблицы: каталог таблиц страниц и и собственно таблица страниц. Элементы каталога (PDE) и таблицы страниц (PTE) и их содержимое. Механизм преобразования линейного адреса в физический. Системные регистры, используемые в процессе преобразования: CR2 и CR3 – и их содержимое. TLB как средство ускорения преобразования.

1. В отличие от сегментной организации, при которой отдельные блоки (сегменты) имеют переменную длину, страничная организация базируется на использовании блоков (страниц) фиксированной длины. Объем страницы составляет 212 байт = 4 Кбайта.

2. Как линейное, так и физическое адресные пространства разделяются на отдельные страницы, которые выравниваются на 4-килобайтную границу. Это означает, что базовые адреса страниц как в линейном, так и в физическом адресных пространствах должны содержать 12 младших нулей. В связи с этим для задания базового адреса страницы достаточно использовать 20 бит.

3. Линейное адресное пространство отображается на физическую двухуровневую память, в которой часть страниц размещается на 1-ом уровне (в основной памяти), и все страницы, а точнее их копии, присутствуют в памяти 2-го уровня (на жестком магнитном диске).

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

5. По аналогии с сегментным преобразованием логического адреса в линейный, страничное преобразование требует использования специальных таблиц, отображающих соответствие между страницами линейного адресного пространства и страницами физического адресного пространства.

С учетом того, что в линейном адресном пространстве емкостью 4 Гбайта может размещаться 220 страниц = 1 Мстраниц, использование одноступенчатой схемы преобразования линейного адреса в физический потребовало бы таблицы соответствия очень большого объема (при использовании 4-байтных элементов, занимаемый ею объем – 4 Мбайта). В связи с этим используется иерархический подход с двухступенчатым преобразованием. На первой ступени используется каталог таблиц страниц, на второй ступени – таблицы страниц.

6. Совместное использование сегментации и страничной организации предполагает отображение сегментов, как некоторых программных единиц на страничную память. При этом в принципе не налагается ограничений на размещение начала сегмента внутри страницы. Однако в целях сокращения издержек, связанных со страничным преобразованием, рекомендуется начальные адреса сегментов выравнивать на границу страниц.

3.2. Механизм преобразования линейного адреса в физический

 

Cхема преобразования линейного адреса в физический приведена на рис. 9.

 

 

 

Рис. 9. Схема преобразования линейного адреса в физический

 

В верхней части рисунка представлена структура 32-разрядного линейного адреса. Линейный адрес состоит из следующих полей:

- DIR (10 бит), определяет номер (индекс) элемента каталога страниц PDE (Page Directory Entry) в каталоге таблиц страниц;

- PAGE (10 бит), определяет номер (индекс) элемента таблицы страниц РТЕ (Page Table Entry) в самой таблице страниц;

- BYTE (12 бит), определяет смещение адресуемого байта в выделенной странице.

Для выбора элемента PDE на первой ступени страничного преобразования используется системный регистр CR3, 20 старших разрядов которого содержат базовый адрес каталога таблиц страниц – PDB (Page Directory Base). В связи с этим управляющий регистр CR3 имеет и другое наименование – PDBR (Page Directory Base Register).

Адрес PDB является физическим, и тем самым регистр CR3 является единственным регистром процессора, содержащим именно физический адрес (в остальных регистрах содержатся логические или линейные адреса).

Так как каталог таблиц страниц сам является системной страницей, выровненной на 4-Кбайтную границу, то его базовый адрес является 20-разрядным.

В связи с тем, что элементы PDE являются 4-байтными, для определения адреса элемента его индекс DIR умножается на 4 путем сдвига влево на два двоичных разряда. 32-разрядный адрес PDE в каталоге таблиц страниц формируется путем составления (конкатенации) 20-разрядного поля PDB в качестве старших разрядов и 12-разрядного смещения как младших разрядов.

Старшие 20 разрядов элементов PDE представляют собой базовый адрес таблицы страниц – Page Table Base Address (PTBA), используемый на второй ступени страничного преобразования. Для выбора элемента РТЕ из таблицы страниц производится формирование его 32-разрядого адреса путем составления 20-разрядного базового адреса PTBA как старших разрядов и 12-разрядного смещения, получаемого путем умножения на 4 индекса PAGE, как младших разрядов.

По полученному адресу из таблицы страниц выбирается элемент РТЕ, 20 старших разрядов которого представляют собой базовый адрес страницы Page Base Address (РВА), который составляется с 12-разрядным смещением в странице (поле BYTE линейного адреса), тем самым образуя физический адрес, который выставляется на шину адреса.

 

3.3. Формат элементов каталога таблиц страниц (PDE) и

собственно таблиц страниц (PTE)

 

Основным полем PDE и РТЕ (рис.10) является базовый адрес (BASE) таблицы страниц (для PDE) или собственно страницы (для РТЕ). Остальные поименованные биты имеют следующее назначение.

 

BASE AVL D A PCD PWT U/S R/W P

31 12 11 9 8 7 6 5 4 3 2 1 0

 

Рис.10. Формат элементов каталога таблиц страниц (PDE)

и собственно таблиц страниц (РТЕ)

 

Бит P (Present – бит присутствия) является своеобразной аппаратной поддержкой организации виртуальной памяти на уровне страниц. При обращении к странице со сброшенным битом P генерируется прерывание типа 14 (ошибка страницы). Обработчик этого прерывания, включаемый в состав так называемого супервизора страниц, определяет местоположение копии затребованной страницы во внешней дисковой памяти и организует ее пересылку в основную память, возможно освобождая в ней место путем выбора страницы - кандидата на удаление. Все биты элемента PDE/PTE со сброшенным битом P являются программно доступными и, как правило, используются для адресации страницы в дисковом пространстве.

Бит R/W (Read / Write – бит разрешения записи) определяет доступные режимы обращения к странице. При сброшенном бите страница доступна только для чтения, при установленном – для чтения и для записи. Попытка записи в страницу со сброшенным битом R/W пресекается аппаратными средствами путем выхода на прерывание типа 13 (нарушение общей защиты).

Бит U/S (User / Supervisor – пользователь / супервизор) по своему назначению подобен полю DPL в дескрипторе сегментов и определяет возможность использования страницы на пользовательском (низшем) уровне привилегий (U/S=1) или на высших уровнях (U/S=0), относящихся к операционной системе (супервизору). Попытка обращения к супервизорной странице с пользовательского уровня пресекается аппаратными средствами путем выхода на прерывание типа 13. Защита по привилегиям для страниц реализуется только на двух уровнях, в то время как на уровне сегментов допускается четыре уровня привилегий.

Бит PWT (Page Write Through - разрешение сквозной записи). Используется для управления внешней кэш-памятью, определяя при единичном значении стратегию сквозной записи. При PWT=0 во внешней кэш-памяти используется стратегия обратной записи (WB – Write Back). В свою очередь во внутренней кэш-памяти по умолчанию используется стратегия WT.

Бит PCD (Page Cache Disable - запрет кэширования страницы). При PCD=1 запрещается копирование блоков из этой страницы в кэш-память.

Бит A (Accessed - бит обращения) аналогичен биту обращения в дескрипторе сегмента.

Бит D (Dirty - бит модификации), устанавливается при обращении к странице по записи. Значение этого бита используется супервизором страниц для определения необходимости перезаписи ее копии во внешнюю дисковую память при удалении страницы из основной памяти. Бит D в элементах PDE каталога таблиц страниц не определен.

Поле AVL (AVaiLable – доступный) не используется аппаратными средствами и является доступным для системных программ.

Для ускорения страничного преобразования адресов используется специальное аппаратное средство в виде TLB (Translation Lookaside Buffer - буфер ассоциативного преобразования). Упрощенная схема TLB приведена на рис.11.

По своей организации TLB во многом напоминает внутреннюю кэш-память, но только гораздо меньшего объема. В этом буфере хранится информация о тридцати двух страницах, использовавшихся процессором в ближайшем прошлом. Для поиска в TLB используются двадцать старших разрядов линейного адреса, разделяемые на два поля: SET (младшие 3 бита), с помощью которого осуществляется выбор множества по принципу прямого отображения, и TАG (17 старших битов), с помощью которого производится выбор одного из четырех элементов множества по принципу ассоциативного отображения. При нахождении информации о данной странице в TLB (такая ситуация в кэш-памяти называется кэш-попаданием), из него выбираются двадцать старших разрядов физического адреса. Двенадцать младших разрядов как линейного, так и физического адресов, представляющие собой относительный адрес байта в странице, совпадают.

 

 

 

 

С использованием TLB осуществляется быстрое преобразование адреса в пределах физического адресного пространства емкостью

212 (размер страницы) *25 (емкость TLB) = 217 байт = 128 Кбайт. Статистика использования TLB показывает, что порядка 98-99% обращений к памяти реализуется через этот буфер.

TLB реализован как ассоциативная по множеству кэш-память с организацией 4WSA (4 Way Set Associative) и разделяется на следующие блоки:

- блок LRU / достоверности;

- блок тегов;

- блок данных.

Каждый из блоков разделяется на восемь множеств, при этом блоки тегов и данных содержат по четыре элемента в каждом множестве. Выбор одного из множеств осуществляется по адресному принципу, причем адресом множества является поле SET. Выбор блока внутри множества осуществляется по ассоциативному принципу, для поиска блока используется 17-разрядный тег. В приведенной на рис. 11 схеме опущены компараторы, с помощью которых осуществляется сравнение исходного тега из линейного адреса с внутренними тегами в рамках выбранного множества. Сигнал совпадения на выходе одного из четырех компараторов свидетельствует о нахождении информации о текущей странице в TLB, при этом из блока данных осуществляется выборка старших разрядов физического адреса. При отсутствии информации о текущей странице в TLB (на выходах всех компараторов для данного множества отсутствует сигнал совпадения) реализуется преобразование адреса по рассмотренной выше схеме. После этого корректируется содержимое TLB путем включения информации о новой странице. Таким образом, только первое обращение к странице реализуется по полной схеме преобразования, а все последующие (то есть до тех пор, пока страница является достаточно активной) реализуются через TLB.

При обновлении информации в TLB возникает проблема выбора кандидата на удаление. Для этой цели используется блок LRU /достоверности, названный по наименованию стратегии удаления (Least Recently Used). В соответствии со стратегией LRU в качестве кандидата на удаление выбирается блок, к которому дольше других не было обращения.

Выбор кандидата на удаление осуществляется в пределах выбранного множества. В блоке LRU / достоверности каждому множеству соответствуют три бита В0, В1, В2, состояния которых отображают предысторию обращений к блокам данного множества. По значению этих трех битов выбирается блок, к которому наиболее долго не производилось обращений.

Кроме битов LRU в блоке содержатся биты достоверности V0, V1, V2, V3 для каждого элемента PTE блока данных, с помощью которых определяется достоверность (Vi = 1) или недостоверность (Vi = 0) элемента PTE. Обращение к элементу разрешается только при установленном бите достоверности. Эти биты являются актуальными при переключении задач, так как обычно предполагается, что каждая задача работает с собственным каталогом таблиц страниц. При переключении на новую задачу производится перезагрузка управляющего регистра CR3, содержащего базовый адрес каталога страниц, и в соответствии с этим осуществляется сброс битов достоверности для всех блоков TLB (содержимое TLB объявляется недействительным).

 




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

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