Организация регистровой памяти (регистровые окна, стек)

Регистровые окна. Компьютер поддерживает аппарат виртуальных регистров. Команды программы могут оперировать с регистрами общего назначения.

Одно из решений – регистровые окна. В компьютере есть фиксированный набор физических регистров с номерами 0, …, к-1. В программе доступна нумерация виртуальных регистров 0, …,k-1, где l<к.

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

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

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

Микропроцессоры SPARK используют такую архитектуру.

Два регистра: указатель текущего окна и указатель сохраненного окна. Возникает необходимость сохранения регистровых окон в память. Регистр SWP указывает на сохраненное окно.

Организация регистровой памяти (регистровые окна, стек) - student2.ru

Схема работы:

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

При выходе из функции: уменьшаем указатель текущего окна, сравниваем с указателем сохраненного окна.

Модель организации регистровой памяти в Intel Itanium.

Эта модель более совершенная. Регистры, доступные для программы, представляют собой множество из 128 регистров. Первые 32 из них – статические регистры (общие для всех случаев, они никак не меняются). После статических регистров располагаются динамические регистры, которые располагаются с 32 регистра до 127 (всего 96 регистров). Есть возможность при обращении к подпрограммам изменять регистровые окна.

Отличие от предыдущей модели: размер окна при переключении окон может варьироваться от 96 до 1 регистра.

БИЛЕТ 14Виртуальная оперативная память

Аппарат виртуальной памяти

Рассмотрим некоторые проблемы организации адресации в программах/процессах и связанные с ними проблемы использования ОЗУ в целом.

В общем случае схема получения исполняемого кода программы следующая:

Организация регистровой памяти (регистровые окна, стек) - student2.ru

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

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

Элементарное программно-аппаратное решение – использование возможности базирования адресов. Суть его состоит в следующем: пусть имеется исполняемый программный модуль. Виртуальное адресное пространство этого модуля лежит в диапазоне [0, Aкон]. В ЭВМ выделяется специальный регистр базирования Rбаз., который содержит физический адрес начала области памяти, в которой будет размещен код данного исполняемого модуля. При этом исполняемые адреса, используемые в модуле будут автоматически преобразовываться в адреса физического размещения данных путем их сложения с регистром Rбаз.. Таким образом код используемого модуля может перемещаться по пространству физического ОЗУ. Эта схема является элементарным решением организации простейшего аппарата виртуальной памяти. То есть аппарата, позволяющего автоматически преобразовывать виртуальные адреса программы в адреса физической памяти.

Рассмотрим более сложные механизмы организации виртуальной памяти.

Организация регистровой памяти (регистровые окна, стек) - student2.ru Организация регистровой памяти (регистровые окна, стек) - student2.ru

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

Наши рекомендации