Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПСиС_КонспектЛекций.pdf
Скачиваний:
740
Добавлен:
05.06.2015
Размер:
7.93 Mб
Скачать

Лекция 3.5. Виртуальная память. Устройство управления памятью

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

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

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

Адреса виртуального пространства называют виртуальными, а адреса физического пространства — физическими. Программа использует виртуальные адреса, но поскольку для ее выполнения надо, чтобы обрабатываемые команды и данные находились в основной памяти, требуется, чтобы каждому виртуальному адресу соответствовал физический адрес. Таким образом, в процессе вычислений необходимо прежде всего переписать из ВЗУ в ОП ту часть информации, на которую указывает виртуальный адрес (отобразить виртуальное про-

161

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

 

 

 

 

 

 

 

 

 

 

 

Основная память

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Авирт

Устройство

Афиз

 

 

 

 

 

 

 

 

 

Операция с Авирт

 

 

 

 

управления

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

памятью

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операнд

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Операнд

 

 

Авирт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Физическое

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Виртуальное

 

 

 

 

 

 

пространство

 

 

 

 

 

 

 

 

 

пространство адресов

 

 

 

 

 

 

адресов

 

 

 

 

 

 

 

Рис. 3.5.1. Соответствие виртуального адреса физическому адресу

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

Страничная организация виртуальной памяти

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

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

162

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

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

На рис. 3.5.2 приведен пример страничной организации виртуальной памяти. Из рисунка видно, что виртуальная память является расширением физической памяти и предоставляет одно адресное пространство независимо от того, где находятся страницы в данный момент: в ОП или в ВЗУ.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Рис. 3.5.2. Страничная организация виртуальной памяти

Страничная таблица полностью описывает виртуальное пространство. Она определяет, какие виртуальные страницы находятся в ОП и в каких физических кадрах (рис. 3.5.3).

В общем случае число записей в СТ равно числу виртуальных страниц. Каждая запись содержит поле номера физической страницы и четыре признака:

163

 

 

Страничная таблица

 

Карта ВЗУ

Номер

 

 

 

 

Номер

 

Адрес ячейки

виртуальной

 

 

 

 

физической

 

во внешней

страницы

 

 

 

 

страницы

 

памяти

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

· · ·

 

 

 

 

 

 

 

 

 

 

· · ·

 

· · ·

− 1

 

 

 

 

 

 

 

Рис. 3.5.3. Структура страничной таблицы

1)признак присутствия ;

2)признак использования ;

3)признак модификации ;

4)признак прав доступа .

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

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

Поскольку в ОП находятся лишь копии страниц ВЗУ, то при изменении данных в ОП необходимо обеспечить идентичность подлинников и копий. За выполнением этой операции следит признак модификации . При удалении страницы из ОП проверяется состояние признака . Если = 1, то перед удалением страницы из ОП ее необходимо переписать в ВЗУ, а при = 0 этого можно не делать.

164

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

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

Способ реализации СТ очень важен для эффективности работы виртуальной памяти, поскольку каждое обращение к ней предполагает обращение к СТ. Наиболее быстрый способ — хранение таблицы в специально выделенных для этого регистрах, но от него приходится отказываться при большом объеме СТ. Можно выделять пространство для СТ непосредственно в основной памяти, но это приводит к двукратному увеличению времени доступа к информации, а следовательно, к замедлению всей микропроцессорной системы.

Чтобы этого избежать, в состав вычислительной системы вводят специальное быстродействующее запоминающее устройство, называемое буфером быстрого преобразования адресов (Translation Lookaside Buffer — TLB), или буфером опережающей выборки и представляющее собой кэш-память. При каждом преобразовании номера виртуальной страницы в номер физической страницы результат заносится в TLB: номер физической страницы — в память данных, а виртуальной — в память тегов. Таким образом, в TLB попадают результаты нескольких последних операций трансляции адресов. При каждом обращении к ОП преобразователь адресов сначала производит поиск в памяти тегов TLB номера требуемой виртуальной страницы. При попадании адрес соответствующей физической страницы берется из памяти данных TLB. Если в TLB зафиксирован промах, то процедура преобразования адресов производится с помощью СТ, после чего осуществляется запись новой пары «номер виртуальной страницы — номер физической страницы» в TLB. Структура TLB представлена на рис. 3.5.4.

Буфер быстрого преобразования адресов обычно реализуется в виде полностью ассоциативной или множественно-ассоциативной кэш-памяти с высокой степенью ассоциативности и временем доступа, сопоставимым с аналогичным показателем для кэш-памяти первого уровня.

165

Номер виртуальной

 

 

 

 

Номер физической

страницы

страницы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

· · ·

 

 

 

 

· · ·

 

 

 

 

 

 

Память тегов

 

 

 

 

Память данных

Рис. 3.5.4. Структура буфера быстрого преобразования адресов

На рис. 3.5.5 приведен алгоритм преобразования виртуального адреса в физический с помощью буфера быстрого преобразования адресов.

Запрос

преобразования

Преобразование

 

Да

Выполнение

 

 

Результат

в TLB?

 

 

 

преобразования

 

 

преобразования

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обновление TLB

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табличный обход

 

Да

Получение

 

 

 

 

 

 

преобразования

 

 

 

включен?

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отказ

 

 

 

 

 

 

 

 

преобразования

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.5.5. Алгоритм преобразования виртуального адреса в физический с помощью буфера быстрого преобразования адресов

166

Серьезной проблемой, возникающей при реализации системы с виртуальной памятью, является большой объем СТ, который пропорционален числу виртуальных страниц — таблица занимает значительную часть ОП.

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

Сегментно-страничная организация виртуальной памяти

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

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

167

При многократном повторе подобных действий в ОП остается множество свободных участков, недостаточных по размеру для загрузки полного сегмента. Решением проблемы служит сегментно-страничная организация памяти. В ней размер сегмента выбирается не произвольно, а задается кратным размеру страницы. Сегмент может содержать то или иное, но обязательно целое число страниц, даже если одна из страниц заполнена частично. Возникает определенная иерархия в организации доступа к данным, состоящая из трех ступеней: сегмент → страница → слово. Этой структуре соответствует иерархия таблиц, служащих для перевода виртуальных адресов в физические. В сегментной таблице перечисляются все сегменты данной программы с указанием начальных адресов CT, относящихся к каждому сегменту. Число СТ равно числу сегментов, и любая из них определяет расположение каждой из страниц сегмента в памяти, которые могут располагаться не подряд — часть страниц может находиться в ОП, остальные — во внешней памяти.

Процесс преобразования виртуального адреса в физический адрес представлен на рис. 3.5.6. Для получения физического адреса

Виртуальный адрес

 

Сегмент

Страница

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегментная страница

Страничная таблица i-го сегмента

Адрес i-й СТ

Адрес j-й страницы

Страница Смещение

Физический адрес

Рис. 3.5.6. Преобразование виртуального адреса в физический с помощью сегментно-страничной организации памяти

168

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

Контрольные вопросы

1.Каково назначение виртуальной памяти?

2.Каково назначение устройства управления памятью?

3.Как достигается увеличение скорости преобразования адре-

сов?

4.Какие способы организации виртуальной памяти вы знаете?

5.В чем суть сегментно-страничной организации виртуальной памяти?

Литература

1.Микропроцессорные системы: учеб. пособие для вузов /

Е.К. Александров, Р.И. Грушвицкий, М.С. Куприянов и др.; под ред. Д.В. Пузанкова. — СПб.: Политехника, 2002. — 935 с.

2.Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем: учебник для вузов. — СПб.: Питер, 2004. — 654 с.

3.Антошина И.В., Котов Ю.Т. Микропроцессоры и микропроцессорные системы (аналитический обзор): учеб. пособие. — М.: МГУЛ, 2005. — 432 с.

169