Статус
нашего
сайта:
ICQ Secrets Center is Online  ICQ Information Center


ICQ SHOP
     5-значные
     6-значные
     7-значные
     8-значные
     9-значные
     Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
     Mail Checkers
     Bruteforces
     ICQTeam Soft
     8thWonder Soft
     Other Progs
     ICQ Patches
     Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal

Реклама

Наш канал:

irc.icqinfo.ru

Таненбаум Э.- Архитектура компьютера. стр.326


Таненбаум Э.- Архитектура компьютера. стр.326

Команды объединяются в 128-разрядные пучки (bundles), подобные изображенному в верхней части рис. 5.30. В каждом пучке содержится три 41-разрядных команды и 5-разрядный шаблон. Количество пучков в группе команд не всегда выражается целым числом — в некоторых случаях группы начинаются и заканчиваются посередине пучков.

Таненбаум Э.- Архитектура компьютера.

Рис. 5.30. Пучок в архитектуре 1А-64 состоит из трех команд

Существует более 100 форматов команд. На рис. 5.30 представлен наиболее распространенный формат. В данном случае он применяется для выполнения при помощи АЛУ операции ADD, которая размещает сумму двух регистров в третьем. Поле группы операций определяет общий класс команды (например, целочисленная операция АЛУ). В поле типа операции указывается конкретная операция (например, ADD или SUB). Далее следуют три поля регистра. Последнее поле данного формата — поле предикатного регистра — мы обсудим чуть позже.

Шаблон пучка указывает, какие функциональные блоки нужны для его обработки, а также определяет положение границы группы команд (если таковая предусмотрена). Основными функциональными блоками считаются целочисленные и нецелочисленные команды АЛУ, обращения к памяти, операции с плавающей точкой, ветвление и т. д. Очевидно, что при наличии 6 блоков и 3 команд для полной ортогональности требуются 216 базовых комбинаций плюс 3 х 216 дополнительных комбинаций для определения маркеров группы после команд 0, 1 и 2. Поскольку доступно всего 5 бит, из всего разнообразия комбинаций допускаются лишь некоторые. С другой стороны, если бы в состав пучка можно было включить сразу три команды с плавающей точкой, процессор просто не смог бы

их одновременно запустить. Таким образом, допустимыми считаются фактически осуществимые комбинации.

Сокращение числа условных переходов — предикация

Еще одна особенность архитектуры IA-64 — новый способ обработки условных переходов. Если бы была возможность избавиться от большинства из них, центральный процессор стал бы гораздо проще и работал бы гораздо быстрее. На первый взгляд может показаться, что устранить условные переходы невозможно, поскольку в программах всегда полно операторов if. Однако в архитектуре IA-64 используется специальная технология, названная предикацией (predication), которая позволяет сильно сократить их число [14, 98]. Кратко опишем эту технологию.

В нынешних машинах все команды являются безусловными в том смысле, что когда центральный процессор встречает команду, он просто ее выполняет. Здесь никогда не решается вопрос: «Выполнять или не выполнять?» И напротив, в предикатной архитектуре команды содержат условия, которые сообщают, в каком случае нужно выполнять команду, а в каком — нет. Именно этот переход от безусловных команд к предикатным позволяет избавиться от многих условных переходов. Вместо того чтобы выбирать ту или иную последовательность безусловных команд, все команды сливаются в одну последовательность предикатных команд, в которой у разных команд разные предикаты.

Чтобы понять, как работает предикация, рассмотрим простой пример (листинги 5.9-5.11), в котором показано условное выполнение команд (условное выполнение — предтеча предикации). В листинге 5.9 мы видим оператор if. В листинге 5.10 после его трансляции получилось три команды: сравнения, условного перехода и перемещения. В листинге 5.11 мы избавились от условного перехода, используя новую команду CM0VZ, которая является командой условного перемещения. Эта команда проверяет, равен ли третий регистр R1 нулю. Если да, то команда копирует R3 в R2. Если нет, то команда не выполняет никаких действий.


⇐ Предыдущая страница| |Следующая страница ⇒

.