Я читал историю компьютера и пришел на процессоры IA-64 (Itanium). Они звучали очень интересно, и я был озадачен тем, почему Intel решит отказаться от них.
Возможность явно выбирать, какие 2 инструкции вы хотите выполнить в этом цикле, является отличной идеей, особенно при написании вашей программы в сборке, например, более быстрого загрузчика.
Сотни регистров должны быть убедительными для любого программиста на ассемблере. По сути, вы можете хранить все переменные функций в регистрах, если они не вызывают никаких других.
Возможность делать такие инструкции:
(qp) xor r1 = r2, r3 ; r1 = r2 XOR r3
(qp) xor r1 = (imm8), r3 ; r1 = (imm8) XOR r3
по сравнению с необходимостью сделать:
; eax = r1
; ebx = r2
; ecx = r3
mov eax, ebx ; first put r2 into r1
xor eax, ecx ; then set r1 equivalent to r2 XOR r3
mov eax, (imm32) ; first put (imm32) into r1
xor eax, ecx ; then set r1 equivalent to (imm32) XOR r3
Я слышал, что это из-за отсутствия обратной совместимости с x86, но это невозможно исправить, просто добавив к нему схему Pentium и просто добавив флаг процессора, который переключил бы его в режим Itanium (например, переключение в защищенный или длинный режим).
Все эти замечательные вещи могли бы сделать гигантский скачок впереди AMD.
Есть идеи?
К сожалению, это означает, что для этого вам понадобится очень продвинутый компилятор. Или даже по одной на конкретную модель процессора. (Например, более новая версия Itanium с дополнительной функцией потребует другого компилятора).
Когда я работал над проектом WinForms (цель имела только .NET 2.0) в Visual Studio 2010, у меня была цель компиляции IA-64. Это означает, что существует среда выполнения .NET, которую можно было скомпилировать для IA-64, а среда выполнения .NET означает Windows. Кроме того, в ответе Гамильтона упоминается Windows NT. Наличие полноценной ОС, такой как Windows NT, означает, что есть компилятор, способный генерировать машинный код IA-64.