Wzrost osiągów mikroprocesorów osiąga się poprzez zwiększanie częstotliwości zegara, oraz przez zwiększanie ilości wykonanej pracy w jednym cyklu zegarowym. Procesory IA-64 będą zwiększać ilość wykonanej pracy w jednym cyklu zegara poprzez możliwość zwiększenia korzyści z wewnętrznej równoległości wykonywania. Dzisiejsze mikroprocesory już czerpią korzyści z równoczesnego wykonywania instrukcji. Wiele typów procesorów dynamicznie planuje wykonanie równoległe obserwując zależności występujące w strumieniu instrukcji. Taki sposób grupowania instrukcji do równoległego wykonania wyraźnie podwyższa osiągi procesora, ale nie jest oczywiste czy wychodzenie ponad standardowe dzisiejsze cztero drożne wykonanie jest warte swojego nakładu pracy. Jeśli wierzyć zapewnieniom IA-64 będzie w stanie działać znakomicie powyżej czterokrotnym równoczesnym wykonywaniem. Będzie to możliwe oczywiście nie z istniejącymi binariami. Taka równoległość jest możliwa przy pomocy kompilatorów które będą w stanie bardziej dokładnie przeanalizować kod źródłowy pod kątem równoległego wykonania. Dodatkowo być może bardziej popularne staną się języki programowania które umożliwiają programiście najbardziej optymalne zaplanowanie równoległego wykonania. Dzisiejsze języki programowania odzwierciedlają naturę konwencjonalnych komputerów. Problemy które mają naturę równoległą (na przykład operacje na macierzach) są dzisiaj reprezentowane poprzez wielokrotnie zagnieżdżone pętle. Zaawansowane kompilatory dla maszyn z równoległym przetwarzaniem (na przykład dzisiejsze superkomputery) potrafią z powrotem przekształcić takie pętle na równoległa reprezentację problemu. Umożliwia to znaczne zyski na szybkości w komputerach równoległych lub wektorowych. Nic jednak nie da takich pożytku z równoległego wykonania jak generowanie binariów z kodu źródłowego w którym równoległość jest już jasno wyrażona. Nie powodowało by to niepożądanego zjawiska polegającego na linearyzowania problemów przez programistę, po czym te problemy zostają powtórnie (z tym, że już maszynowo) przekształcane do pierwotnej struktury. Taka prawidłowość oczywiście tyczy się również architektury IA-64. Co prawda Intel oraz HP będą prowadzić wspaniałe wsparcie dla istniejącego oprogramowania, poprzez sprzętową zgodność, ale nie ma co się spodziewać ze to oprogramowanie będzie czerpać większe korzyści z równoległości zaimplementowanej w IA-64 (co tyczy się nie tylko równoległości, ale również innych zaawansowanych mechanizmów zawartych w IA-64). Kod źródłowy zrekompilowany dla potrzeb IA-64 będzie zapewne działać dużo lepiej, jednakże można oczekiwać iż tylko wyraźne wyrażenie równoległości przez programistę będzie powodowało pełne wykorzystanie równoległości w IA-64.
Instruction Level Parallelism (ILP) czyli równoległość wykonywania instrukcji, to możliwość wykonywania wielu instrukcji w tym samym czasie. Architektura IA-64 pozwala na grupowanie niezależnych od siebie instrukcji w paczki (po 3 instrukcje). Dla zwielokrotnienia efektu równoległości można przygotować wiele paczek dla jednego cyklu zegarowego. O takie przygotowanie kodu do wykonania troszczy się kompilator. Wyposażony w dużą liczbę zasobów do równoległego wykonywania instrukcji, procesor IA-64 pozwala kompilatorowi zaplanować pracę w przód, oraz zaplanować równoczesne wątki do obliczeń. Kompilatory dla tradycyjnych architektur są często ograniczone w swoich możliwościach wykorzystania informacji o możliwym równoległym wykonywaniu kodu, ponieważ te informacje nie zawsze musiały być prawdziwe. IA-64 pozwala kompilatorowi na wykorzystanie tych informacji, bez obawy o poprawność wykonania programu. W tradycyjnych architekturach procedury ograniczają osiągi dopóki potrzebne rejestry nie zostaną zwolnione i zostaną tam załadowane potrzebne dane. Natomiast IA-64 pozwala kompilatorowi na takie przygotowanie kodu, że operacje na rejestrach można zaplanować wcześniej.
Copyright © 2008-2010 EPrace oraz autorzy prac.