Статус
нашего
сайта:
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

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


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

Листинг 5,15- Оператор if

if(Rl — R2)

R3 = R4 + R5;

Else

R6 - R4 - R5

Листинг 5-16- Код на ассемблере для листинга 5.15

CMP R1.R2 BNE L1 MOV R3.R4 ADD R3.R5 BR L2 LI: MOV R6.R4 SUB R6.R5

L2:

Листинг 5-17- Предикатное выполнение

CMPEQ R1.R2.P4 <Р4> ADD R3.R4.R5 <Р5> SUB R6.R4.R5

В архитектуре IA-64 эта идея доведена до логического завершения — здесь с предикатными регистрами связаны и команды сравнения, и арифметические команды, и некоторые другие команды. Предикатные команды могут помещаться в конвейер последовательно без каких-либо проблем и простоев. Поэтому они очень полезны.

В архитектуре IA-64 предикация происходит следующим образом. Каждая команда действительно выполняется, и в самом конце конвейера, когда уже нужно сохранять результат в выходном регистре, производится проверка, истинно ли предсказание. Если да, то результаты просто записываются в выходной регистр. Если предсказание ложно, то записи в выходной регистр не происходит. Подробно о предикации вы можете прочитать в дополнительной литературе [60].

Спекулятивная загрузка

Еще одна особенность IA-64, повышающая быстродействие, — поддержка спекулятивной загрузки. Если команда LOAD спекулятивна и не срабатывает, то вместо того, чтобы вызвать исключение, она просто прекращает выполняться и сообщает, что регистр, в который она должна была загрузить значение, недействителен. Для этого используется тот самый бит отравления, о котором мы упоминали в главе 4. А исключение будет вызвано только в том случае, если затем попытаться использовать этот регистр.

Обычно при спекулятивной загрузке компилятор помещает команды LOAD перед другими командами. Поскольку выполнение этих команд начинается раньше, чем нужно, они могут завершиться еще до того, как потребуются результаты. В том месте, где ему нужно получить значение определенного регистра, компилятор вставляет команду CHECK. Если значение там уже есть, команда CHECK рабо тает так же, как NOP, и выполнение программы просто сразу продолжается дальше. Если значения в регистре еще нет, следующая команда вынуждена простаивать.

Суммируя, можно сказать, что в машинах с архитектурой IA-64 реализовано несколько механизмов повышения быстродействия. Во-первых, это современная конвейеризированная трехадресная RISC-машина, поддерживающая механизм загрузки/сохранения. Во-вторых, компилятор определяет, какие команды могут выполняться одновременно, и, не вступая в конфликт, группирует эти команды в пучки. Таким образом, процессор может просто планировать обработку пучков, не думая ни о каких проверках. В-третьих, предикация позволяет объединить команды обоих переходов в операторе i f, устраняя при этом как условный переход, так и необходимость прогнозирования этого перехода. Наконец, спекулятивная загрузка позволяет вызывать операнды заранее, и даже если позднее окажется, что эти операнды не нужны, ничего страшного не произойдет.

Дополнительные сведения о процессоре Itanium 2 и его микроархитектуре можно почерпнуть в дополнительной литературе [144, 178].

Краткое содержание главы


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

.