Реклама:

Прежде чем переходить к детальному рассмотрению архитектуры IA-62 и процессора Itanium 2, полезно разобраться в том, чем, собственно, плох процессор Pentium 4 и какие проблемы компания Intel намеревается решить путем разработки новой архитектуры. Основная проблема заключается в том, что IA-32 - это старая архитектура команд с совершенно неподходящими для современной техники свойствами. Это типичная CISC-архитектура с командами разной длины и огромным количеством различных форматов, которые трудно декодировать быстро и "на лету". Современная техника лучше всего работает с RISC-архитектурами, в которых команды одинаковы по размеру, а код операции имеет фиксированную длину, поэтому его легко декодировать. Хотя команды архитектуры IA-32 во время выполнения программы можно разделить на микрооперации наподобие RISC-команд, но для этого требуется дополнительное аппаратное обеспечение (пространство на микросхеме), к тому же это занимает время и усложняет разработку. Это первый недостаток.

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

Архитектура IA-32 содержит небольшой и нерегулярный набор регистров. Из-за малого числа регистров общего назначения (четыре или шесть, в зависимости от того, куда отнести регистры ESI и EDI) постоянно приходится записывать в память промежуточные результаты, что ведет к дополнительным обращениям к памяти, даже когда они по логике вещей не нужны. Это третий недостаток.

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

Чтобы скорость работы была высокой, система должна быть в значительной степени конвейеризирована. Однако это значит, что для выполнения любой команды требуется множество циклов. Следовательно, становится существенным точное предсказание переходов, поскольку в конвейер должны попадать только нужные команды. Однако даже если процент неправильных прогнозов невысок, существенно снижается производительность. Это пятый недостаток.

Чтобы избежать проблем с неправильным прогнозированием переходов, процессору приходится осуществлять спекулятивное выполнение команд со всеми вытекающими отсюда последствиями. Это шестой недостаток.

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

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

Компания Intel находится приблизительно в таком же положении. Множество транзисторов в процессоре Pentium 4 предназначено исключительно для переделки CISC-команд в RISC-команды, разрешения конфликтов, прогнозирования переходов, исправления неправильных предсказаний и решения многих других задач подобного рода, а для реальной работы, которая собственно и нужна пользователю, остается лишь незначительная часть этих транзисторов. Поэтому компания Intel пришла к следующему выводу: нужно выбросить IA-32 на помойку и начать все заново (IA-64). Архитектура ЕМТ-64 призвана лишь выиграть некоторое время, оставляя проблему нерешенной.

Решение задачи "Ханойская башня" на ассемблере UltraSPARC III || Оглавление || Модель IA-64 - вычисления с явным параллелизмом команд