В мини-ЭВМ «Электроника 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 Кбайт. Последовательность действий по переадресации следующая:
Признаки 3 и 4 связаны с поведением страницы во время выполнения программы и позволяют принять решение о ее удалении, если в оперативной памяти для подкачки необходимо освободить место. Признак обращения к странице (4) устанавливается в 1 при каждом обращении к ней; по нему судят об активности страницы. Если принять решение об удалении, проверяют признак изменения страницы (3), была ли она модифицирована и надо ли ее переписывать во внешнюю память, где есть исходная копия.
В целом описанное управление памятью весьма эффективно. Сохраняя короткий адрес (16 разрядов) и, следовательно, уменьшая емкость памяти процедуры, такое построение обеспечивает логическое буферное пространство программы значительного объема (до 4 Мбайт), что вполне достаточно для систем средней производительности.