Для адресации операндов в физическом адресном пространстве программы используют логическую адресацию. Процессор автоматически транслирует логические адреса в физические, выдаваемые затем на системную шину.
В архитектуре современных
Таким образом, основой получения
При работе в реальном режиме возможности процессора ограничены: емкость адресуемой памяти составляет 1 Мбайт, отсутствует
Этот режим обычно используется на начальном этапе загрузки компьютера для перехода в защищенный режим.
В реальном режиме
(рис 3.1) Схема получения физического адресаНаиболее полно возможности
Общая схема формирования
Как уже отмечалось, основой формирования
Селектор содержится в
Сегменты
(рис 3.2) Формирование физического адреса при сегментно-страничной организации памятиспециальной 8-байтной структуре данных, называемой дескриптором, а за
Структура дескриптора сегмента представлена на рис. 3.3.
(рис 3.3) Структура дескриптора сегментаМы будем рассматривать именно структуру, а не формат дескриптора, так как при переходе от
32-разрядное поле базового адреса позволяет определить начальный адрес сегмента в любой точке адресного пространства в 232 байт (4 Гбайт).
Поле предела (limit) указывает длину сегмента (точнее, длину сегмента минус 1: если в этом поле записан 0, то это означает, что сегмент имеет длину 1) в адресуемых единицах, то есть максимальный размер сегмента равен 220 элементов.
Величина элемента определяется одним из атрибутов дескриптора битом G ( -
Таким образом, сегмент может иметь размер с точностью до 1 байта в диапазоне от 1 байта до 1 Мбайт (при G = 0 ). При объеме страницы в 212 = 4 Кбайт можно задать объем сегмента до 4 Гбайт (при G = l ):
Так как в архитектуре
Бит размерности ( Default size ) определяет длину адресов и операндов, используемых в команде по умолчанию:
Конечно, этот бит предназначен не для обычного пользователя, а для системного программиста, применяющего его, например, для отметки сегментов для сбора"мусора" или сегментов, базовые адреса которых нельзя модифицировать. Этот бит доступен только программам, работающим на высшем уровне привилегий.
Байт доступа определяет основные правила обращения с сегментом.
Бит присутствия P (Present) показывает возможность доступа к сегменту. Операционная система (ОС) отмечает сегмент, передаваемый из оперативной во P = 0. При P = 1 сегмент находится в физической памяти. Когда выбирается дескриптор с P = 0 (сегмент отсутствует в
Возникает особый случай неприсутствия сегмента. При этом операционная система копирует запрошенный сегмент с диска в память (при этом, возможно, удаляя другой сегмент), загружает в дескриптор базовый адрес сегмента, устанавливает P = 1 и осуществляет
Двухразрядное поле указывает один из четырех возможных (от 0 до 3) уровней привилегий дескриптора, определяющий возможность доступа к сегменту со стороны тех или иных программ (уровень 0 соответствует самому высокому уровню привилегий).
Бит обращения A (Accessed) устанавливается в"1" при любом обращении к сегменту. Используется операционной системой для того, чтобы отслеживать сегменты, к которым дольше всего не было обращений.
Пусть, например, 1 раз в секунду операционная система в дескрипторах всех сегментов сбрасывает бит А. Если по прошествии некоторого времени необходимо загрузить в оперативную память новый сегмент, места для которого недостаточно, операционная система определяет"кандидатов" на то, чтобы очистить часть оперативной памяти, среди тех сегментов, в дескрипторах которых бит А до этого момента не был установлен в"1", то есть к которым не было обращения за последнее время.
Поле типа в байте доступа определяет назначение и особенности использования сегмента. Если бит S ( System - бит 4 байта доступа) равен 1, то данный дескриптор описывает реальный сегмент памяти. Если S = 0, то этот дескриптор описывает специальный системный объект, который может и не быть сегментом памяти, например, шлюз вызова, используемый при переключении задач, или дескриптор локальной таблицы дескрипторов . Назначение битов <3...0> байта доступа определяется типом сегмента (рис. 3.4).
(рис 3.4) Формат поля типа байта доступаВ сегменте кода: бит подчинения, или согласования, C ( определяет дополнительные правила обращения, которые обеспечивают защиту сегментов программ. При C = 1 данный сегмент является подчиненным сегментом кода. В этом случае он намеренно лишается защиты по привилегиям. Такое средство удобно для организации, например, подпрограмм, которые должны быть доступны всем выполняющимся в системе задачам. При C = 0 - это обычный сегмент кода; бит считывания R ( устанавливает, можно ли обращаться к сегменту только на исполнение или на исполнение и считывание, например, констант как данных с помощью префикса замены сегмента. При R = 0 допускается только выборка из сегмента команд для их выполнения. При R = 1 разрешено также
Запись в сегмент кода запрещена. При любой попытке записи возникает
В сегменте данных:
ED (Expand Down) - бит направления расширения. При ED = 1 этот сегмент является сегментом стека и смещение в сегменте должно быть больше размера сегмента. При ED = 0 - это сегмент собственно данных (смещение должно быть меньше или равно размеру сегмента);W(Writeable). При W = 1 разрешено изменение сегмента. При W = 0 запись в сегмент запрещена, при попытке записи в сегмент возникает В случае обращения за операндом смещение в сегменте формируется .
Сумма извлеченного из дескриптора начального адреса сегмента и сформированного смещения в сегменте дает линейный адрес (ЛА).
Если в
Если помимо сегментного используется и страничный механизм
Рассмотрим теперь все этапы преобразования
Как отмечалось выше, смещение в сегменте кода команд извлекается из регистра
Механизм же формирования смещения в сегменте данных проводится на основе режима адресации операнда и требует отдельного изучения. Рассмотрим сначала структуру кода команды универсального 32-разрядного
(рис 3.5) Формат команды 32-разрядного микропроцессораКоманда может начинаться с нескольких необязательных байт (префиксов), которые определяют особенности выполнения команды. Префиксы размеров длины адреса и операндов позволяют изменить их значения, установленные по умолчанию битом размерности D в дескрипторе сегмента. Для операндов совместно с битом w, содержащимся в коде команды, префикс размера позволяет определить операнд длиной 8, 16 или 32 разряда. Префикс размера адреса определяет 16- или 32-разрядное смещение в сегменте (табл. 3.1).
| Бит размерности D в дескрипторе сегмента | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| Префикс размерности Операнда* | - | - | + | + | - | - | + | + |
| Префикс размерности адреса* | - | + | - | + | - | + | - | + |
| Разрядность операнда (бит) ** | 16/8 | 16/8 | 32/8 | 32/8 | 32/8 | 32/8 | 16/8 | 16/8 |
| Разрядность адреса (бит) | 16 | 32 | 16 | 32 | 32 | 16 | 32 | 16 |
Примечания:
* + - префикс присутствует;
- - префикс отсутствует.
** w = 1/0
В коде команды могут использоваться также дополнительные байты для префикса замены сегментного регистра, установленного по умолчанию, префикса повторения операции или префикса, предотвращающего прерывания операции перемещения данных.
Поле КОП содержит код выполняемой команды, а также бит w размерности используемых операндов. Для команд, применяющих непосредственный операнд,
и r/m Imm самой команды (непосредственный операнд).
(рис 3.6) Формат постбайтаБайт масштабируемого индекса базы ( служит для представления сложных структур памяти. На его наличие указывает код 100 в поле r/m
(рис 3.7) Формат SIB-байтаЗдесь SS - поле масштаба, Index задает номер одного из РОН, используемого в качестве индексного регистра (регистр не может быть регистром индекса). Поле Base в комбинации с полем mod
Применение
где [base] - значение базового регистра, [index] - значение индексного регистра, ss - величина масштабного множителя, disp - значение смещения, закодированного в самой команде. В качестве базы или индекса может быть использован любой регистр общего назначения
Смещение disp кодируется как величина со знаком в D в дескрипторе сегмента, битом w в первом байте команды и наличием или отсутствием префикса разрядности адреса согласно табл. 3.1.
Этот механизм отражает основные усовершенствования в
Главные особенности формата команд МП с архитектурой
В основе сегментной модели памяти лежит разделение ее на независимые адресные пространства переменной длины - сегменты. Для программы адресное пространство разделено на блоки смежных адресов, называемых сегментами, а программа может обращаться только к данным, находящимся в этих сегментах. Внутри сегментов применяется линейная адресация, то есть программа может обращаться к байту 0, байту 1 и т. д. Такая адресация осуществляется относительно начала сегмента, и
Дескрипторы хранятся либо в глобальной таблице дескрипторов (Global , либо в локальных таблицах дескрипторов (Local Descriptor Table - LDT). В GDT содержатся дескрипторы сегментов, которые доступны всем активным задачам, имеющимся в системе на данный момент.
Локальная таблица дескрипторов
С точки зрения расположения в памяти, локальные таблицы дескрипторов представляют собой обычные сегменты. Они могут накладываться друг на друга, частично пересекаться. Это приводит к тому, что отдельные сегменты, описанные дескрипторами в своих
(рис 3.8) Описание сегментов в таблицах дескрипторовДля нахождения дескриптора в таблице дескрипторов используется селектор, который содержится в одном из сегментных регистров. Селектор представляет собой 16-разрядое слово, которое разбито на 3 поля (рис. 3.9):
TI ( Table Indicator - индикатор таблицы ) показывает, к какой таблице идет обращение: TI = 0 - дескриптор находится в глобальной таблице дескрипторов TI = 1 - в локальной таблице Index: поле индекса - номер дескриптора в соответствующей таблице дескрипторов;RPL ( Request privilege level - уровень привилегий запроса ). При обращении сравнивается с полем DPL в байте доступа дескриптора.Обращение разрешается, если
(рис 3.9) Формат селектораМаксимальное количество дескрипторов, находящихся в таблице дескрипторов, определяется длиной поля Index селектора и равно 213. Так как каждый дескриптор имеет длину 8 байт, максимальный объем любой таблицы дескрипторов составляет 216 байт. Каждая из таблиц дескрипторов имеет регистр ( GDTR для глобальной таблицы и LDTR для локальной), определяющий ее положение в памяти. Регистр GDTR содержит 48 разрядов, из которых 32 задают базовый адрес глобальной таблицы дескрипторов, а 16 указывают ее объем в байтах (границу таблицы). Для определения положения дескриптора относительно начала таблицы его номер (поле Index селектора) умножается на 8, то есть реально сдвигается на три разряда влево, так как длина дескриптора составляет 8 байт. Если селектор обращается к дескриптору, содержащемуся в таблице (при TI = 0 в селекторе), то полученное смещение сравнивается с хранящейся в GDTR границей таблицы. Если нарушения границы нет, то смещение прибавляется к содержащемуся в GDTR базовому адресу, в результате чего образуется
Нулевой дескриптор в является пустым, не используемым. Селектор с нулевым значением разрядов 2….15 называется нуль-индикатором. Он обеспечивает обращение к нулевому дескриптору . Так как этот дескриптор не используется, то при обращении к нему происходит прерывание. Одно из возможных применений пустых селекторов заключается в следующем. Перед инициированием задачи операционная система может загрузить в регистры и ES пустые селекторы. Если в последующем не инициализировать эти регистры, то адресация памяти через них вызовет особый случай (прерывание). Загрузка в LDTR пустого селектора, для которого поле Index = 0, допустима. Такая операция сообщает процессору о том, что в задаче не будет использоваться локальная
Для обращения к локальной таблице дескрипторов предназначен 16-разрядный регистр LDTR. Он содержит селектор, определяющий размещениев
(рис 3.10) Получение дескриптора, находящегося в глобальной таблице дескрипторов GDT Такая структура упрощает работу с таблицами . Благодаря описанию с помощью селектора эти таблицы превращаются в обычные сегменты памяти и, в частности, могут размещаться в любых областях памяти, участвовать в LDTR ассоциируется так называемый "теневой регистр", в котором и хранится дескриптор текущей задачи. Это ускоряет в последующем обращение к локальной таблице дескрипторов текущей задачи. При переключении с одной задачи на другую для замены используемой
Если в селекторе индикатор таблицы TI = 1, то дескриптор сегмента выбирается из локальной таблицы дескрипторов. Процесс определения адреса сегмента в этом случае представлен на рис. 3.11.
Он более сложен по сравнению с получением дескриптора из глобальной таблицы дескрипторов и проходит следующие этапы:
TI = 1, то обращение идет к локальной таблице дескрипторов.
(рис 3.11) Получение дескриптора, находящегося в локальной таблице дескрипторов LDTLDT в "теневой" регистр регистра LDTR GDT , где вместо GDT R используются поля базового адреса и предела из дескриптора LDTR, находящегося в "теневом" регистре.Таким образом, при обращении к сегменту через таблицу
Поле адреса дескриптора, полученного из локальной или глобальной таблицы дескрипторов, определяет начало искомого сегмента. При суммировании полученного базового адреса сегмента и смещения в сегменте получается линейный адрес искомой ячейки памяти.
В случае если режим страничной адресации выключен (в регистре CR0 бит PG = 0), полученный линейный адрес равен
Рассмотрим подробнее процесс получения адреса операнда на примере команды
.
В этой команде нет специальных указаний об использовании сегмента, поэтому она обращается к текущему сегменту данных, селектор которого по умолчанию находится в . Пусть (.
Формирование
.
Index = 3 ) из GDT (TI = 0).Для этого:
GDTR ;EAX.При TI = 1 потребовалось бы еще одно обращение к памяти для счтывания дескриптора .
Чтобы сократить число обращений к памяти (а такой процесс должен проходить и при считывании кода каждой команды), в микропроцессорах с архитектурой LDTR и регистр задач TR ), ассоциируются "теневые", или кэш-регистры.
При первом считывании дескриптора, определяемого данным селектором, процессор автоматически считывает (кэширует) нужный дескриптор в соответствующий "теневой" регистр. Поскольку теперь дескриптор находится внутри МП, для получения линейного адреса памяти потребуется только сформировать
Так как программа обычно редко модифицирует регистры с селекторами, в защищенном режиме она будет выполняться примерно с такой же скоростью, как и в реальном режиме.
Помимо локальной и глобальной таблиц дескрипторов в ). Она содержит дескрипторы специальных
служит заменой , так как единственный бит индикатора таблицы в селекторе сегмента идентифицирует только или .
До перевода процессора в защищенный режим необходимо создать таблицы и и соответственно инициализировать регистры GDTR и R. Таблицы и определяются при загрузке в соответствующие регистры GDTR и R базового адреса и предела. Это действие осуществляется только один раз в ходе подготовки к переходу в защищенный режим, и в дальнейшем содержимое GDTR и IDTR не изменяется. Это значит, что местонахождение таблиц и в известном смысле фиксировано, и они не могут участвовать в
CR0 бит PG = 1.
Основное применение
Принцип виртуальной памяти предполагает, что пользователь при подготовке своей программы имеет дело не с физической ОП, действительно работающей в составе компьютера и имеющей некоторую фиксированную емкость, а с виртуальной (кажущейся) одноуровневой памятью, емкость которой равна всему адресному пространству, определяемому размером адресной шины (Lша) компьютера:
$$V_{вирт}>>V_{физ}\\ V_{вирт}=2^{Lша}$$Для 32-разрядного
Программист имеет в своем распоряжении адресное пространство, ограниченное лишь разрядностью адресной шины, независимо от реальной емкости оперативной памяти компьютера и объемов памяти, которые используются другими программами, параллельно обрабатываемыми в мультипрограммной ЭВМ.
Виртуальная память, обеспечивая возможность программисту обращаться к очень большому объему непрерывного адресного пространства, предоставляемого в его монопольное распоряжение, обладает обычными свойствами: побайтовая адресация, время доступа, сравнимое со временем доступа к оперативной памяти.
На всех этапах подготовки программ, включая загрузку в
Для преобразования виртуальных адресов в физические физическая и
Как отмечалось выше, при страничном представлении памяти виртуальный (
Правила перевода номеров виртуальных страниц в номера
Перевод виртуальных адресов в физические проиллюстрирован на рис. 3.12.
(рис 3.12) Принцип преобразования виртуального страничного адреса в физическийРассмотрим пример преобразования адреса Vстр = 1I, и имеет оперативную память VОЗУ = 3 страницы. Пусть на компьютере одновременно выполняются четыре программы, имеющие следующее количество страниц: VA = 2, VB = 1, VC = 3, VD = 2. Переключение между программами происходит через время кванта tk = 1. Время выполнения каждой страницы любой программы составляет t = 2tk. Полагаем, что страницы программ загружаются в оперативную память по мере необходимости и по возможности в свободные области
При таких условиях таблица загрузки оперативной памяти и таблицы
В таблице распределения оперативной памяти выделены номера активных в данном такте страниц. В таблицах
| Страница | Такты | |||||||||||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Динамическое распределение оперативной памяти | ||||||||||||||||
| АО | АО | АО | DO | DO | DO | CO | CO | CO | C1 | C1 | C1 | C1 | C1 | C1 | C1 | |
| 1 | B0 | B0 | B0 | A0 | A0 | A0 | D0 | D0 | D0 | D1 | D1 | D1 | D1 | D1 | D1 | |
| 2 | C0 | C0 | C0 | B0 | B0 | B0 | A1 | A1 | A1 | A1 | A1 | A1 | C2 | C2 | ||
| Таблица |
||||||||||||||||
| A 0 | 0 | 0 | - | - | 1 | 1 | 1 | - | - | - | - | - | - | - | - | - |
| 1 | - | - | - | - | - | - | - | - | 2 | 2 | 2 | 2 | 2 | 2 | - | - |
| Таблица |
||||||||||||||||
| B 0 | - | 1 | 1 | 1 | - | 2 | 2 | 2 | - | - | - | - | - | - | - | - |
| Таблица |
||||||||||||||||
| С 0 | - | - | 2 | 2 | 2 | - | 0 | 0 | 0 | - | - | - | - | - | - | - |
| 1 | - | - | - | - | - | - | - | - | - | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | - | - | - | - | - | - | - | - | - | - | - | - | - | - | 2 | 2 |
| Таблица |
||||||||||||||||
| D 0 | - | - | - | 0 | 0 | 0 | - | 1 | 1 | 1 | - | - | - | - | - | - |
| 1 | - | - | - | - | - | - | - | - | - | - | 1 | 1 | 1 | 1 | 1 | 1 |
Если каждая страница имеет объем 1000 адресуемых ячеек, то, например, в такте 9 обращение по
Рассмотрим теперь применение этих общих принципов
Основой PG = 1 в управляющем регистре CR0.
В этом случае старшие 20 разрядов линейного адреса фактически представляют собой номер
Вместо этого PDE page ). Каждый из них адресует подчиненную таблицу страниц (ТС), то есть всего допускается до 1024 PTE page ), каждый из которых и адресует физическую страницу. Таким образом, общее количество адресуемых
(рис 3.13) Страничное преобразование линейного адреса в физическийТаким образом, преобразование линейного адреса в физический имеет вид, представленный на рис. 3.13.
Старшие 20 разрядов линейного адреса разбиваются на два 10-разрядных поля: поле номера элемента каталога таблиц страниц и поле номера элемента таблицы страниц. Так как и каталог таблиц страниц, и каждая таблица страниц занимают ровно 1 страницу и выровнены по границе страницы, то младшие 12 разрядов их базового адреса равны нулю, и для определения их
Для каталога таблиц страниц его 20-разрядный адрес находится в
Старшие 20 разрядов
(рис 3.14) Структура элементов каталога таблиц страниц и таблицы страницСтаршие 20 разрядов элемента дают базовый адрес таблицы страниц (в ЭКТС) или P, A, R/W и U/S имеют определенное сходство с аналогичными атрибутами дескриптора сегмента, другие биты имеют специфическое назначение.
Бит присутствия P показывает, отображается ли адрес страничного кадра (P = 1 страница присутствует в P = 0 страницы в памяти нет, и обращение к этой странице вызывает прерывание типа "
Бит доступа А устанавливается А = 1 при обращении к данному страничному кадру для записи или чтения информации.
Бит модификации D ( Dirty - "грязный") устанавливается процессором равным 1 в элементе ЭТС при записи на данную страницу. Для элементов каталога
Бит чтения-записи R/W и бит U/S ( user/ - пользователь/супервизор) определяют права доступа к U/S = 0 ), соответствующий значению U/S = 1 ), соответствующий . Если к странице осуществляется запрос с уровнем привилегий 3 (программы пользователя), то при значении U/S = 0 ему запрещается доступ к соответствующей таблице или странице. Если U/S = 1, то при значении R/W = 0 разрешается только чтение таблицы или страницы, а при R/W = 1 - и чтение, и запись.
При запросах с большими привилегиями (системные программные уровни 0, 1, 2) допускается запись и чтение таблиц и страниц при любых значениях U/S, R/W (табл. 3.3).
| U/S | R/W | Допустимо для уровня 3 | Допустимо для уровней 0, 1, 2 |
|---|---|---|---|
| 0 | Х | Ничего | Чтение/запись |
| 1 | 0 | Чтение | Чтение/запись |
| 1 | 1 | Чтение/запись | Чтение/запись |
Биты PWT и используются для управления работой кэш-памяти при страничной адресации. Бит - запрещение кэширования страницы. При = 1 кэширование запрещено. Бит PWT - бит обратной записи страниц. Определяет метод обновления внешней кэш-памяти (кэш 2-го уровня). При PWT= 1 - обновление проводится методом сквозной записи (как для внутреннего кэша), при PWT = 0 - методом обратной записи.
Биты 9…11 в ЭКТС и ЭТС зарезервированы за операционной системой. Процессор никогда не использует и не изменяет эти биты. Разработчики ОС могут привлечь эти биты для хранения информации о "старении" страниц, чтобы определять страницы, подлежащие замене из внешней памяти, и для других целей.
Старшие 10 разрядов линейного адреса совместно с содержимым
Так как и ЭКТС, и ЭТС имеют длину 4 байта, для получения смещения начала элемента относительно начала соответствующей таблицы необходимо его номер умножить на 4.
Последние 12 разрядов линейного адреса содержат смещение в странице. Таким образом, сумма смещения в странице и базового адреса страницы, извлеченного из ЭТС, дает
Translation Lookaside Buffer - ).
Когда программа формирует линейный адрес, который отображен на находящийся в элемент PTE, преобразование выполняется без дополнительных обращений к памяти.
представляет собой память с ассоциативной выборкой, которая содержит 20-разрядные базовые адреса 32 страниц. Каждый из базовых
(рис 3.15) Структура буфера TLB ассоциативной трансляции страничного адресаадресов имеет свой признак (тег), в качестве которого используются старшие разряды линейного адреса.
Программы не могут управлять кэшированием элементов PTE. Диспетчер памяти кэширует каждый используемый элемент PTE до заполнения буфера. При заполненном процессор может найти страничную информацию для 128 Кбайт физической памяти (32 страницы по 4 Кбайт). При такой емкости доля кэш-попаданий составляет в среднем 98 %.
состоит из модуля основной памяти, блока , используемого при ее обновлении, и логики обслуживания (рис. 3.15).
Основной модуль памяти содержит 8 блоков, каждый из них содержит информацию о 4 страницах, для которых ранее производилось преобразование страничного адреса. Таким образом, основной модуль содержит 32 строки, позволяющие непосредственно, без обращения к КТС и .
Каждая строка содержит информацию, необходимую для ее выбора (тег, биты, определяющие доступ к странице), и информацию о выбираемой странице (базовый адрес, атрибуты). Ее структура представлена на рис. 3.16.
(рис 3.16) Формат строки модуля основной памяти TLBПоля базового адреса D, U/S, R/W, PWT, аналогичны соответствующим полям в ЭТС. Поле тега содержит старшие разряды линейного адреса, для которого номер V = 0 -незаполненная строка, V = 1 - достоверная информация).
После формирования линейного адреса 3 младших разряда поля номера . Старшие 17 разрядов (биты 31…15) ЛА сравниваются одновременно ассоциативным образом с 17 битами тегов, содержащихся в каждой из 4 строк выбранного блока, с учетом бита достоверности V каждой строки. Если для некоторой строки сравнение прошло успешно, значит, эта строка содержит информацию по искомой
Если совпадения не было, то базовый адрес нужной страницы отсутствует в , и преобразование страничного адреса проводится обычным путем с обращением к КТС и ТС. Полученная из , номер которого задается битами 14…12 линейного адреса. Выбор одной из 4 строк адресованного блока, в которую заносится новое содержимое (тег, базовый адрес и др.), определяется принятым механизмом замещения.
Для принят механизм замещения наиболее долго неиспользуемой строки ( least recently used - ). При этом выбор замещаемой строки в блоке определяется битами B0, B1, B2 (биты ), которые хранятся в дополнительном модуле памяти . Этот модуль содержит 8 строк по 3 разряда каждая. Строка модуля соответствует одному из блоков основной памяти . Логика обслуживания переопределяет биты строки .
В любой момент сочетание разрядов B0…B2 указывает, к какой из строк данного блока дольше всего не было обращения. Именно эта строка и замещается при необходимости записи новой строки, если все 4 строки блока уже заполнены. Заполненность строки определяется значением бита ее достоверности V.
При инициализации все биты B0, B1, B2 для всех блоков сбрасываются в "0". В ходе работы биты B0, B1, B2 принимают значения в соответствии с алгоритмом L0 или L1, устанавливается B0 = 1. Если же оно осуществлялось к L3 или L4, то B0 = 0. При проверке пары строк L0:L1 в случае последнего обращения к L0 устанавливается B1 = 1, в противном случае B1 = 0. При проверке пары строк L2:L3 в случае последнего обращения к L2 устанавливается B2 = 1, в противном случае B2 = 0 (табл. 3.4).
| Бит |
Последнее обращение |
|---|---|
B0 = 1 B0 = 0 |
L0 или L1 L2 или L3 |
B1 = 1 B1 = 0 |
L0 L1 |
B2 = 1 B2 = 0 |
L2 L3 |
При поиске подлежащей замене строки в блоке, если все 4 строки достоверны, вначале проверяется, к какой из пар строк L0:L1 или L2:L3 производилось последнее обращение. Затем производится анализ внутри пары, отобранной на предыдущем этапе. Таким образом, замена строки в блоке в случае, когда они все достоверны, проводится в соответствии с табл. 3.5.
| B0 | B1 | B2 | Заменяемая строка |
|---|---|---|---|
| 0 | 0 | X | L0 |
| 0 | 1 | X | L1 |
| 1 | X | 0 | L2 |
| 1 | X | 1 | L3 |
В принципе, для того чтобы задать номер одной из 4 строк, достаточно 2-разрядного кода. Но при этом механизм, определяющий строку, к которой дольше всего не было обращений, может оказаться достаточно сложным. Здесь же путем добавления всего лишь одного бита получаем прозрачный механизм как по установке этих разрядов, так и по определению строк, подлежащих замене. Хранение элементов таблиц страниц в таит в себе опасность, связанную с модификацией ЭТС "на лету", то есть в ходе выполнения программы. Предположим, что в программе предусматривается вносить изменения в каталог таблиц страниц или в таблицы страниц. После подготовки необходимых таблиц и разрешения до заполнения. Затем по мере необходимости процессор заменяет старые элементы новыми. Пусть теперь программа изменила некоторый ЭТС, хранящийся в памяти. Если измененный элемент уже находится в , процессор будет пользоваться его старым значением, так как он не может узнать о том, что этот элемент в памяти был модифицирован.
Для преодоления этой коллизии программисту необходимо после всей подготовки к изменению ЭТС сразу же перезагрузить регистр CR3, например, с помощью такой пары команд:
MOV EAX, CR3 MOV CR3, EAX
При любой перезагрузке регистра CR3 все биты достоверности в сбрасываются ( V = 0 ), и МП будет вынужден проводить новые преобразования страничного адреса для всех страниц, загружая при этом в и модифицированный ЭТС.
Аналогичные операции выполняются при отсутствии страницы в оперативной памяти ( P = 0 ), но уже операционной системой.
P = 1. При этом могут быть установлены и другие биты, например, R/W ;TLB может оставаться копия старого ЭКТС или ЭТС, операционная система очищает его;Расширение объемов обрабатываемой информации, особенно мультимедийной, вместе с увеличением функциональных возможностей
Краткие итоги. В лекции рассмотрено физическое и логическое представление памяти. Показан общий механизм формирования
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.