<<
>>

Команды UltraSPARC III

Все целочисленные команды пользовательского режима UltraSPARC III перечислены в табл. 5.10, при этом используются следующие обозначения:

♦ SRC — регистр-источник;

♦ DST — регистр-приемник;

♦ R1 — регистр-источник;

♦ S2 — источник (регистр или непосредственно данные);

♦ ADDR — адрес памяти;

♦ TRAP# — номер системного прерывания;

♦ FCN — код функции;

♦ MASK — тип операции;

♦ CON — константа;

♦ V — обозначение регистра;

♦ СС — набор кодов условия;

4 R — регистр-приемник;

♦ сс — условие;

♦ г — LZ, LEZ, Z, NZ, GZ или GEZ.

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

Набор команд удивительно мал. Оно и понятно, ведь UltraSPARC III — это RISC-процессор.

Структура команд LOAD и STORE очень проста.

Эти команды имеют варианты для 1, 2, 4 и 8 байт. Если в 64-разрядный регистр загружается число размером меньше 64 бит, это число может быть либо расширено по знаку, либо дополнено нулями. Существуют команды для обоих вариантов.

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

Таблица 5.10.
Основные команды процессора UltraSPARC III Команда Описание
Команда Описание
ANDNCC R1, S2, DST OR R1, S2, DST ORCC R1, S2, DST ORN R1, S2, DST ORNCC R1, S2, DST Логическое НЕ-И с установкой кода условия Логическое ИЛИ

Логическое ИЛИ с установкой кода условия Логическое НЕ-ИЛИ

Логическое НЕ-ИЛИ с установкой кода условия

XOR R1, S2, DST XORCC R1, S2, DST Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ

Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ с установкой кода условия

XNOR R1, S2, DST XNORCC Логическое ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ

Логическое ИСКЛЮЧАЮЩЕЕ НЕ-ИЛИ с установкой кода условия

Команды передачи управления BPcc ADDR Переход с прогнозированием ветвлений
BPr SRC, ADDR CALL ADDR Переход в регистр Вызов процедуры
RETURN ADDR Выход из процедуры
JMPL ADDR, DST SAVE R1, S2, DST RESTORE R1, S2, DST Тсс CC, TRAP# Переход со связыванием Расширение регистровых окон Восстановление регистровых окон

Системное прерывание при определенном условии

PREFETCH FNC Выборка данных из памяти с упреждением
LDSTUB ADDR, R MEMBAR MASK Атомарная операция загрузки/сохранения Барьер в памяти
Прочие команды SETHI CON, DST MOVcc CC, S2, DST MOVr, R1, S2, DST Установка битов с 10-го по 13-й Перемещение при определенном условии

Перемещение в зависимости от значения регистра

NOP Пустая операция
POPC SI, DST RDCCR V, DST WRCCR, R1, S2, V RDPC V, DST Подсчет генеральной совокупности Чтение регистра кода условия Запись регистра кода условия Чтение счетчика команд

Если изначальный порядок следования команд А...

В ... С, где А устанавливает коды условий, а В их проверяет, то компилятор не сможет вставить команду С между А и В, если тоже С устанавливает коды условий. По этой причине многие команды имеют два варианта, а компилятор обычно использует ту команду, которая не устанавливает коды условий, если не планируется проверить их позже.

Поддерживаются также команды умножения, деления с учетом знака и деления без учета знака.

Кроме того, поддерживается специальный формат 30-разрядных чисел с автоматическим опознаванием типа данных за счет поля тега. Этот формат используется для таких языков, как Smalltalk и Prolog, в которых тип переменных может меняться во время выполнения программы. При наличии таких чисел компилятор вставляет, например, команду ADD, а во время выполнения программы машина определяет, какая именно команда ADD нужна в данном случае, целочисленная или с плавающей точкой.

Группа команд сдвига включает одну команду сдвига влево и две команды сдвига вправо. Каждая из них имеет два варианта: 32- и 64-разрядный. Команды сдвига в основном используются для манипулирования битами. Большинство CISC-машин имеют довольно много разнообразных команд обычного и циклического сдвига, но практически все они совершенно бесполезны.

Логические команды аналогичны арифметическим. Эта группа включает команды AND (И), OR (ИЛИ), X0R (ИСКЛЮЧАЮЩЕЕ ИЛИ), ANDN (НЕ-И), 0RN (HE-ИЛИ) и XN0R (ИСКЛЮЧАЮЩЕЕ HE-ИЛИ). Полезность последних трех команд сомнительна, но они могут выполняться за один цикл и не требуют практически никакого дополнительного аппаратного обеспечения, а потому часто включаются в набор команд. Даже разработчики RISC-машин порой поддаются искушению.

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

Предусмотрено два способа вызова процедур.

Для команды CALL используется вариант 4 формата с 30-разрядным смещением (см. рис. 5.11). Этого значения достаточно для того, чтобы добраться до любой команды в пределах 2 Гбайт от вызывающего оператора в любом направлении. Команда CALL копирует адрес возврата в регистр R15, который после вызова превращается в регистр R31.

Второй способ вызова процедуры — использование команды JMPL в варианте 1а или lb формата (см. рис. 5.11). Эта команда позволяет помещать адрес возврата в любой регистр. Такая форма может быть полезной в том случае, если целевой адрес вычисляется в ходе выполнения программы.

Команды SAVE и RESTORE манипулируют регистровым окном и указателем стека. Обе команды совершают прерывание, если следующее (предыдущее) окно недоступно.

В последней группе содержатся команды, не попавшие ни в одну из других групп. Команда SETHI введена из-за невозможности поместить 32-разрядный непосредственный операнд в регистр. Команда SETHI устанавливает биты с 10-го по 31-й, а затем следующая команда передает оставшиеся биты, используя непосредственный формат.

Команда РОРС подсчитывает число установленных (единичных) битов в слове. Последние три команды предназначены для чтения и записи специальных регистров.

Ряд широко распространенных CISC-команд, не представленных в табл. 5.10, можно легко смоделировать, использовав либо регистр G0, либо операнд-константу (см. вариант Ib формата на рис. рис. 5.11). Некоторые из них перечислены в табл. 5.11. Эти команды распознаются ассемблером UltraSPARC III и часто вставляются в код компиляторами. При моделировании многих из них используется тот факт, что регистр G0 связан с аппаратным нулем и запись в этот регистр не дает никакого эффекта.

Таблица 5.11. Некоторые моделируемые команды UltraSPARC III

Описание______________________________________________________

Выполнение команды OR с операндами SRC и G0 и сохранение результата в DST

Вычитание SRC2 из SRC1 (команда SUBCC) и сохранение результата в G0

Выполнение команды ORCC с операндами SRC и G0 и сохранение результата в G0

Выполнение команды XNOR с операндами DST и G0 Вычитание SRC2 из SRC1 (команда SUBCC) и сохранение результата в G0 Прибавление 1 к DST (непосредственный операнд) — команда ADD Вычитание 1 из DST (непосредственный операнд) — команда SUB

Выполнение команды OR с операндами G0 и G0 и сохранение результата в DST

Выполнение команды SETHI с операндами G0 и О Выполнение команды JMPL % I7 + 8, %G0

<< | >>
Источник: Таненбаум Э.. Архитектура компьютера. 5-е изд. 2007

Еще по теме Команды UltraSPARC III:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  8. Кто становится лидером команды
  9. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  10. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
  11. Часть III. Человек
  12. Часть III Истоки
  13. III ЗЕРКАЛА В ЗАЗЕРКАЛЬЕ
  14. III. ВЕРБАЛЬНЫЕ ОПИСАНИЯ
  15. Диалог Голосов I, II, III
  16. Психологический практикум (к части III)
  17. Глава III О РОЛИ БИОТОКОВ