Адресные пространства оперативной памяти. Часть 3.

Рассмотрим некоторые особенности реализации описанной схемы расширения памяти (рис. 1.7). Динамическая переадресация осуществляется аппаратным блоком — диспетчером памяти. В мини-ЭВМ «Электроника 100-25» и микроЭВМ «Электроника 60-1» объем логического буферного пространства 256 Кбайт, для адресации которых необходимо 18 адресных разрядов. Диспетчер памяти преобразует с помощью регистров переадресации (на которых размещается таблица переадресации выполняемого задания) 16-разрядный адрес программы из виртуального адресного пространства в 18-разрядный адрес Канала из логического буферного пространства (рис. 1.7,а). Физическая память (ОЗУ) — подключена к Каналу наряду с устройствами ввода-вывода (УБВ) и устройствами внешней памяти и не может превысить 248 Кбайт, так как старшие 8К адресов отведены под регистры всех устройств ЭВМ.

Схема расширения памяти

В мини-ЭВМ «Электроника 79» виртуальное адресное пространство расширено вдвое за счет логической интерпретации адресов, вырабатываемых процессором, и сортировки их на две категории: адреса из области команд и адреса из области операндов (рис. 1.7,6). Если процедура является «чистой» (не изменяет себя), то всегда можно однозначно ответить на вопрос, является ли адрес, выработанный процессором, адресом какой-нибудь команды или операнда. К командам процессор обращается по содержимому счетчика при обычной выборке команд и их составляющих или при обработке команд перехода и передач управления. К операндам процессор обращается при выполнении операций присваивания. Исключение составляют операции с непосредственными операндами, которые размещены в теле процедуры (внутри команд). Таким образом, процессор сопровождает каждый адрес памяти признаком «данные» или «команды», который, по сути, является 17-м разрядом адреса. Иными словами, область команд и область данных получают виртуальное пространство по 64 Кбайт и в целом виртуальное пространство программы вдвое больше, чем пространство, определяемое разрядностью слова и адреса. Это позволяет существенно уменьшить число внутренних наложений, перемещения окон по логическому пространству буфера. В этой модели увеличен также объем логического буферного пространства до 4 Мбайт. Адрес такого буфера кодируется 22 разрядами. Для сохранения совместимости с другими мини-ЭВМ по внешним устройствам в ЭВМ «Электроника 79» сохранен Канал с 18 адресными шинами. Поэтому оперативная память (ОЗУ), имеющая емкость до 4 Мбайт, подключена не к Каналу, а через сверхоперативную ассоциативную кэш-память непосредственно к диспетчеру памяти, который выполняет преобразование 16-разрядного адреса программы и признака данные/команды, вырабатываемого процессором, как в 18-разрядный адрес Канала, так и в 22-разрядный адрес логического буферного пространства (рис. 1.6,6). Если адрес памяти выставляется каким-либо устройством, подключенным к Каналу, он преобразуется отдельным блоком диспетчера — преобразователем адресов Канала.

Структура адресных пространств

Структура адресных пространств показана на рис. 1.8. Для упрощения переадресации виртуальное пространство разбито на крупные страницы по 8 Кбайт каждая. Такой размер страницы является причиной большой внутренней фрагментации окон. Это приводит к некоторому эквивалентному уменьшению виртуального пространства и увеличению частоты перепрописки окон. С другой стороны, уменьшается число страниц, следовательно, размер таблицы переадресации. Виртуальное пространство в ЭВМ «Электроника 100-25» и «Электроника 60-1» составляет 8 страниц, в ЭВМ «Электроника 79» их вдвое больше за счет выработки признака данные/команда. Окна начинаются со страницы и имеют размер, больший или меньший страницы, но кратный 64, для уменьшения поля длины окна. Размеры сегментов по той же причине кратны 64, так же как и адреса начала сегмента, поэтому внутренняя фрагментация сегментов незначительна — не более 64 байт. Окно может закрывать сегмент целиком (окно 4 и сегмент 3) либо его часть (во всех остальных случаях), но не может быть больше сегмента или располагаться вблизи границы, накрывая части двух сегментов одновременно. Части сегментов, накрытые окнами, являются «видимыми» для программы в данный момент.

Форматы регистров переадресации и преобразование адреса

В оперативной памяти ряд сегментов может отсутствовать (на рис. 1.8 сегменты 1, 2, 4, 5) и появление адреса, принадлежащего окнам 1, 2 или 3, вызовет прерывание «отсутствие сегмента» и подкачку сегмента из пространства внешней памяти (если это предусмотрено операционной системой). Переадресация поясняется на рис. 1.9. Таблица переадресации хранится в регистрах переадресации диспетчера памяти. Каждый регистр состоит из регистра адреса страницы (непосредственно для переадресации) и регистра признаков (для осуществления проверок). Число пар регистров в наборе соответствует числу страниц виртуального пространства (для «Электроники 100-25» равно 8). При смене задания меняется виртуальное пространство и, следовательно, все регистры необходимо перезагрузить из оперативной памяти. При обращении к операционной системе, имеющей собственное виртуальное пространство, такая перезагрузка приводила бы к существенным задержкам при переключениях, прерываниях и т. д. Для уменьшения перезагрузок «память — регистры» применен тот же метод, что и для уменьшения перезагрузок «внешняя память—память» — увеличено количество быстродействующих компонентов, в данном случае регистров.

Имеется два комплекта регистров, по 8 регистров в каждом в соответствии с числом страниц (в ЭВМ «Электроника 79» — три комплекта по 16 регистров), которые автоматически переключаются при смене режимов центрального процессора. Таким образом, каждый из режимов имеет готовое к использованию виртуальное пространство размером 128 Кбайт. Последовательность действий по переадресации следующая:

  1. Три старших разряда виртуального адреса (13 ... 15) и два разряда режима из РСП (14, 15) рассматриваются как номер пары регистров (в ЭВМ «Электроника 79» добавляется еще признак данные/команда).
  2. Осуществляется ряд проверок: находится ли данная страница в оперативной памяти; не выходит ли адрес за границы окна; не нарушены ли права доступа. Если страницы в оперативной памяти нет (признак 1), происходит прерывание по отсутствию сегмента. Для второй проверки используется 7-разрядное поле «Размер области окна», указывающее, какая часть страницы занята окном. Так как размеры окон кратны 64, занятую область полностью описывают 7 разрядов. Если окно меньше страницы, то страница не заполнена; если больше, то незаполненной оказывается одна из крайних страниц. Проверка зависит от того, к какому краю страницы — верхнему или нижнему — примыкает занятая часть; это определяется признаком 2. Считается, что стек, в отличие от массивов и процедур, растет в сторону уменьшения адресов, поэтому он примыкает к верхнему краю страницы. Если адрес выходит за границы окна, возникает прерывание «нарушение границы». Для третьей проверки сравнивается содержимое признака 1 с типом запроса к памяти: чтение или запись. При несанкционированном доступе возникает прерывание «нарушение защиты».
  3. Производится суммирование 13-разрядного поля из виртуального адреса с базовым адресом из регистра адреса страницы. Длина базового адреса ЭВМ «Электроника 100-25» 12 разрядов; при суммировании адрес смещается влево на 6 разрядов и дополняется нулями (это допустимо, так как адреса кратны 64); длина полученного физического адреса 18 разрядов. Длина базового и физического адреса ЭВМ «Электроника 79» 16 и 22 разряда соответственно. Чтобы обеспечить возможность выполнения на ЭВМ «Электроника 79» программ, разработанных для младших моделей, введены дополнительные режимы преобразования: 16- и 18-разрядное.

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

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