Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пос Орг ЭВМ для Вер.ЕС.doc
Скачиваний:
28
Добавлен:
19.09.2019
Размер:
2.93 Mб
Скачать
      1. Форматы команд и способы адресации в risc-процессорах

Рассмотрим форматы команд на примере процессоров архитектуры Power PC, разработанной корпорациями IBM, Apple и Motorola.

Все команды имеют длину 32 разряда и могут быть 3-х форматов:

  • 1 формат – КОП (6); RS (5); Rt (5); I (16),

где КОП(6) – поле кода операции, содержащее 6 разрядов; RS(5), Rt(5) – поля адресов регистров (по 5 разрядов); I(16) – 16-разрядный непосредственный операнд.

  • 2 формат – КОП (6); RS (5); Rt (5); Rk (5).

  • 3 формат – отличается от 2-го формата наличием дополнительного 32-разрядного командного слова, в котором для различных кодов операций могут находиться 32-разрядные непосредственный операнд, смещение или адрес перехода.

Архитектура Power PC определяет операции регистр – регистр для всех команд обработки. Источником данных являются встроенные регистры или непосредственные операнды. Трехрегистровый формат команд позволяет отличать регистр результатов от 2-х регистров – источников, позволяя использовать их в других командах. Данные пересылаются между памятью и регистрами только специальными командами загрузки/сохранения. Адреса памяти формируются с использованием базового регистра и смещения.

      1. Особенности системы команд ia-64

Шестидесятичетырех-разрядная интеловская архитектура (IA-64), как было сказано выше, реализует EPIC-концепцию, разработанную совместно фирмами Intel и HP. IA-64 не является 64-разрядным расширением 32-разрядной архитектуры х86 компании Intel или переработкой 64-разрядной архитектуры РА-RISC компании НР. IA-64 представляет собой нечто абсолютно новое – передовую архитектуру, использующую длинные слова команд, предикаты команд, устранение ветвлений, предварительную загрузку данных и другие ухищрения для того, чтобы «извлечь больше параллелизма» из кода программ.

Команды IA-64 можно подразделить: команды работы со стеком регистров (например, alloc); целочисленные команды; команды сравнения и работы с предикатами; команды доступа в память; команды перехода; мультимедийные команды; команды пересылок между регистрами; команды выполнения операций над строками и подсчет числа единиц в слове; команды работы с плавающей запятой.

Целочисленные команды IA-64 включают арифметические операции (add, sub и др.), операции над битами и сдвиги, а также 32-разрядные операции.

Отметим, что команда умножения целых чисел в регистрах общего назначения (GR) отсутствует; для перемножения необходима пересылка целых в регистры с плавающей запятой (FR) и применение операции умножения, выполняемой в функциональном исполнительном устройстве вещественного типа. Некоторые специалисты считают это «наименее удачной» чертой системы команд IA-64.

Команды сравнения и работы с предикатами – это одна из принципиально новых особенностей IA-64 по сравнению с RISC-архитектурой. Приведем несколько типичных примеров команд этой группы. Команда cmp сравнивает два регистра GR (или регистр GR и литерал) на одно из 10 возможных условий (больше, меньше или равно и т. п.). Команда tbit тестирует заданный бит GR. Команда fcmp сравнивает два числа с плавающей запятой. Однако результатом сравнения является не единственный код условия, что типично для обычных процессоров. Логический результат сравнения (1 – истина, 0 – ложь) записывается обычно в пару предикатных регистров (во второй пишется отрицание первого). Эти значения предикатных регистров (PR) используются затем не только в командах условного перехода, как в обычных микропроцессорах. Почти все команды IA-64 выполнимы «под предикатом», т. е. могут выполняться или нет в зависимости от значения указанного в команде PR-регистра. Это позволяет во многих случаях избежать применения условных переходов, которые, как известно, отрицательно сказываются на производительности процессоров. Вместо этого процессор с архитектурой IA-64, имеющий большое число ресурсов (в частности, регистров и функциональных исполнительных устройств), может исполнять обе ветви программы линейно.

Формат команд IA-64 содержит 41 разряд и имеет фиксированную длину (рис. 2.22). Поле КОП занимает 14 разрядов, под адрес 64 предикатных регистров (PR) отводится 6 разрядов, три 7-битных поля (GFR) используются для адресации 128 регистров общего назначения (GR) или регистров с плавающей точкой (FR).

Большинство целочисленных команд трехадресные, а их аргументы находятся в регистрах, однако встречается и литеральное (символьное) представление аргументов. Имеются также модификации команд add и sub, которые являются четырехадресными: в них к сумме/разности регистров прибавляется/вычитается 1.

40

27

26

21

20

13

12

7

6

0

КОП

PR

GFR

GFR

GFR

Рис. 2.22. Формат инструкций IA-64

Команды в формате IA-64 упакованы по три в 128-битный LIW (long instruction word) пакет (см. рис. 2.23).

127

122

40

0

Т

Инструкция 1

Инструкция 2

Инструкция 3

Рис.2.23. Пакет инструкций IA-64

В каждый пакет при трансляции компилятор помещает шаблон, который размещается в 5-битовом поле Т. Шаблон пакета указывает не только на то, какие команды в пакете могут выполняться независимо, но и какие команды из следующего пакета могут выполняться параллельно. Команды в пакетах не обязательно должны быть расположены в том же порядке, что и в машинном коде, и могут принадлежать к различным путям ветвления. Компилятор может также помещать в один пакет зависимые и независимые команды, поскольку возможность параллельного выполнения определяется шаблоном пакета. В отличие от некоторых ранее существовавших архитектур со сверх длинными словами команд (VLIW), IA-64 не добавляет команд «нет операции» (NOPS) для дополнения пакетов.