Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

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

Таненбаун Э. Архитектура компьютера — Спб.: Питер, 2007. — 844 c.
ISBN 5-469-01274-3
Скачать (прямая ссылка): arhkomputera2007.DjVu
Предыдущая << 1 .. 228 229 230 231 232 233 < 234 > 235 236 237 238 239 240 .. 422 >> Следующая

Листинг 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 <P4> ADD R3.R4.R5 <P5> SUB R6.R4.R5
В архитектуре IA-64 эта идея доведена до логического завершения - здесь с
предикатными регистрами связаны и команды сравнения, и арифметические
команды, и некоторые другие команды. Предикатные команды могут помещаться
в конвейер последовательно без каких-либо проблем и простоев. Поэтому они
очень полезны.
В архитектуре IA-64 предикация происходит следующим образом. Каждая
команда действительно выполняется, и в самом конце конвейера, когда уже
нужно сохранять результат в выходном регистре, производится проверка,
истинно ли предсказание. Если да, то результаты просто записываются в
выходной регистр. Если предсказание ложно, то записи в выходной регистр
не происходит. Подробно о предикации вы можете прочитать в дополнительной
литературе [60].
Спекулятивная загрузка
Еще одна особенность IA-64, повышающая быстродействие, - поддержка
спекулятивной загрузки. Если команда LOAD спекулятивна и не срабатывает,
то вместо того, чтобы вызвать исключение, она просто прекращает
выполняться и сообщает, что регистр, в который она должна была загрузить
значение, недействителен. Для этого используется тот самый бит
отравления, о котором мы упоминали в главе 4. А исключение будет вызвано
только в том случае, если затем попытаться использовать этот регистр.
Обычно при спекулятивной загрузке компилятор помещает команды LOAD перед
другими командами. Поскольку выполнение этих команд начинается раньше,
чем нужно, они могут завершиться еще до того, как потребуются результаты.
В том месте, где ему нужно получить значение определенного регистра,
компилятор вставляет команду CHECK. Если значение там уже есть, команда
CHECK рабо-
Краткое содержание главы 469
тает так же, как N0P, и выполнение программы просто сразу продолжается
дальше. Если значения в регистре еще нет, следующая команда вынуждена
простаивать.
Суммируя, можно сказать, что в машинах с архитектурой IA-64 реализовано
несколько механизмов повышения быстродействия. Во-первых, это современная
конвейеризированная трехадресная RISC-машина, поддерживающая механизм
загрузки/сохранения. Во-вторых, компилятор определяет, какие команды
могут выполняться одновременно, и, не вступая в конфликт, группирует эти
команды в пучки. Таким образом, процессор может просто планировать
обработку пучков, не думая ни о каких проверках. В-третьих, предикация
позволяет объединить команды обоих переходов в операторе i f, устраняя
при этом как условный переход, так и необходимость прогнозирования этого
перехода. Наконец, спекулятивная загрузка позволяет вызывать операнды
заранее, и даже если позднее окажется, что эти операнды не нужны, ничего
страшного не произойдет.
Дополнительные сведения о процессоре Itanium 2 и его микроархитектуре
можно почерпнуть в дополнительной литературе [144, 178].
Краткое содержание главы
Для большинства людей уровень архитектуры набора команд - это "машинный
язык". На этом уровне машина имеет память с байтовой или пословной
организацией, состоящую из нескольких десятков мегабайтов и содержащую
команды наподобие MOVE, ADD и BEQ.
В большинстве современных компьютеров память организована в виде
последовательности байтов, при этом 4 или 8 байт группируются в слова.
Обычно в машине есть от 8 до 32 регистров, каждый из которых содержит
одно слово. В некоторых машинах (например, в Pentium 4) при обращении к
словам памяти выравнивание по естественным границам ячеек не требуется, в
других (например, в UltraSPARC III) это - обязательное условие.
Команды обычно имеют 1, 2 или 3 операнда, обращение к которым происходит
с помощью различных режимов адресации: непосредственной, прямой,
регистровой, индексной и т. д. Команды обычно могут перемещать данные,
выполнять унарные и бинарные операции (в том числе арифметические и
логические), совершать переходы, вызывать процедуры, выполнять циклы, а
иногда и некоторые операции ввода-вывода. Типичные команды перемещают
слово из памяти в регистр или наоборот, складывают, вычитают, умножают
или делят два регистра или регистр и слово из памяти, или сравнивают два
значения в регистрах или памяти. Довольно часто количество команд в
компьютерах превышает 200. В CISC-процессорах их и того больше.
Для передачи управления на уровне архитектуры команд используются
различные примитивы: перехода, вызовов процедур и сопрограмм, перехвата
исключений и обработки прерываний. Переходы нужны для того, чтобы
остановить одну последовательность команд и начать новую. Процедуры
позволяют выделить какой-то фрагмент программы, который можно затем
вызывать из различных мест этой же программы. Сопрограммы позволяют двум
потокам управления работать параллельно. Перехват исключений используется
Предыдущая << 1 .. 228 229 230 231 232 233 < 234 > 235 236 237 238 239 240 .. 422 >> Следующая