Czytałem historię komputera i natrafiłem na procesory IA-64 (Itanium). Brzmiały naprawdę interesująco i byłem zdezorientowany, dlaczego Intel zdecydował się je upuścić.
Możliwość jednoznacznego wyboru 2 instrukcji, które chcesz uruchomić w tym cyklu, to świetny pomysł, szczególnie podczas pisania programu w asemblerze, na przykład szybszego programu ładującego.
Do setki rejestrów powinny być przekonujące dla każdego programisty montażowej. Możesz zasadniczo przechowywać wszystkie zmienne funkcji w rejestrach, jeśli nie wywołuje innych.
Możliwość wykonania takich instrukcji:
(qp) xor r1 = r2, r3 ; r1 = r2 XOR r3
(qp) xor r1 = (imm8), r3 ; r1 = (imm8) XOR r3
w porównaniu z koniecznością:
; 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
Słyszałem, że było to spowodowane brakiem porównywalności wstecz x86, ale nie można tego naprawić, po prostu dodając do niego układ Pentium i po prostu dodając flagę procesora, która przestawiłaby go na tryb Itanium (jak przejście na tryb chroniony lub długi)
Wszystkie te wspaniałe rzeczy z pewnością przyniosłyby im olbrzymi skok przed AMD.
Jakieś pomysły?
Niestety oznacza to, że potrzebujesz do tego bardzo zaawansowanego kompilatora. Lub nawet jeden na konkretny model procesora. (Np. Nowsza wersja Itanium z dodatkową funkcją wymagałaby innego kompilatora).
Kiedy pracowałem nad projektem WinForm (docelowy miał tylko .NET 2.0) w Visual Studio 2010, miałem kompilowany cel IA-64. Oznacza to, że istnieje środowisko uruchomieniowe .NET, które można było skompilować dla IA-64, a środowisko uruchomieniowe .NET oznacza system Windows. Ponadto odpowiedź Hamiltona wspomina o systemie Windows NT. Posiadanie pełnego systemu operacyjnego, takiego jak Windows NT, oznacza, że istnieje kompilator zdolny do generowania kodu maszynowego IA-64.