Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
55
Добавлен:
21.05.2015
Размер:
84.48 Кб
Скачать

5.1.3.2. Особенности уровня команд UltraSparc II

Изначально система SPARC имела 32-разрядную архитектуру, но UltraSPARC - 64-разрядные машины. Структура памяти UltraSPARC II представляет собой линейный массив байтов. Это настолько большое число, что в настоящее время реализовать такой объем памяти невозможно. Современные реализации имеют ограничения на объем памяти, к которой они могут обращаться ( байтов у UltraSPARC II). Байты в слове нумеруются слева направо, но этот порядок можно изменить на противоположный, установив соответствующий бит в регистре флагов.

В системе UltraSPARC II имеется две группы 64-битных регистров по 32 в каждой: регистры общего назначения и регистры с плавающей точкой. Регистры общего назначения называются R0-R31, но в некоторых контекстах имеют другие названия. Все они, кроме R0, могут считываться и записываться с помощью различных команд. Их использование частично оговаривается соглашениями, частично основано на их обработке аппаратурой. Отклоняться от этих функций без необходимости не рекомендуется:

R0 (другое название - G0) всегда содержит значение 0;

R1-R7 (G1-G7) содержат глобальные переменные;

R8-R13 (O0-O5) содержат выходные параметры вызываемой процедуры;

R14 (SP) - указатель стека;

R15 (O7) - временный регистр;

R16-R23 (L0-L7) содержат локальные переменные текущей процедуры;

R24-R29 (I0-I5) содержат входные параметры процедуры;

R30 (FP) - указатель текущего стекового фрейма;

R31 (I7) содержит адрес возврата из текущей процедуры.

В действительности процессор UltraSPARC II имеет более чем 32 РОН, но в каждый момент времени программе видны только 32 из них. Эта система регистровых окон предназначена для повышения эффективности вызова процедур. Основная ее идея - имитировать работу стека с помощью регистров. Существует несколько наборов регистров подобно нескольким фреймам в стеке. Специальный регистр CWP (Current Window Pointer) указывает на текущий набор РОН. Команда вызова процедуры скрывает старый набор регистров и путем изменения CWP предоставляет новый набор, который может использовать вызываемая процедура. Некоторые регистры переносятся из старого набора, меняя свои имена. Например, регистры R8-R15 старого набора становятся регистрами R24-R31 нового набора. Восемь глобальных регистров не меняются.

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

Имеющиеся в системе UltraSPARC II регистры с плавающей точкой могут содержать 32-битные (одинарная точность) или 64-битные (двойная точность) значения. Возможно также использование пар этих регистров для поддержки 128-битных значений.

Архитектура UltraSPARC II - архитектура загрузки/сохранения. Единственные операции непосредственного обращения к памяти в ней - это команды LOAD (загрузка) и STORE (сохранение). Все операнды арифметических и ло­гических команд берутся из регистров или предоставляются самой ко­мандой, и все результаты сохраняются в регистрах.

Соседние файлы в папке Архитектура ЭВМ