Podstawy Itanium

Pierwsza generacja procesorów Itanium nie zadowalała ani użytkowników, ani samego Intela. Ale dzisiaj jest już trzecia, z rdzeniem Madison, budząca respekt innych producentów.

Pierwsza generacja procesorów Itanium nie zadowalała ani użytkowników, ani samego Intela. Ale dzisiaj jest już trzecia, z rdzeniem Madison, budząca respekt innych producentów.

Inne procesory 64-bitowe, jak choćby MIPS, Alpha czy UltraSparc, są już na rynku od blisko dziesięciu lat. Intel przedstawił pierwszy procesor 64-bitowy w roku 2001. Mimo wielu innowacyjnych cech, niedostatki projektu zadecydowały o jego ogólnej ocenie. Równie niedopracowane kompilatory powodowały, że pod względem wydajności wypadał nieraz gorzej od procesorów 32-bitowych.

W roku 2002 Intel usunął wiele niedociągnięć, projektując pewne elementy wręcz od nowa. Tak powstało Itanium 2 (nazwa robocza McKinley). Od połowy 2003 na rynku jest już trzecia wersja z rdzeniem Madison. Ponieważ jednak jest kompatybilna z wersją McKinley, Intel pozostawił starą nazwę Itanium 2.

Przejście na proces produkcyjny 0,13 µm umożliwiło usunięcie wielu początkowych wad, jak choćby za małą pamięć podręczną lub za niską częstotliwość taktowania. Oficjalne plany Intela mówią o produkcji co najmniej do roku 2005 coraz szybciej taktowanych modeli Itanium, docelowo z wieloma rdzeniami i pamięcią podręczną do 24 MB. Producent zapewnia też o całkowitej zgodności sprzętowej i programowej z obecnymi modelami Itanium 2. Trzeba pamiętać, że możliwość ochrony wcześniejszych inwestycji to bardzo ważne kryterium podejmowania decyzji o zakupie, szczególnie w segmencie serwerowym. Tak wyposażone Itanium może spokojnie wyruszyć na podbój rynku w charakterystyczny dla Intela sposób.

Parametry brzegowe

Schemat blokowy i przepływ danych procesora Itanium. Liczby przy magistralach wewnętrznych i zewnętrznych oznaczają ich szerokość w bitach. (źródło - Intel)

Schemat blokowy i przepływ danych procesora Itanium. Liczby przy magistralach wewnętrznych i zewnętrznych oznaczają ich szerokość w bitach. (źródło - Intel)

Itanium nie jest wyłącznym dziełem Intela. Już w maju 1994 firmy HP i Intel ogłosiły plany wspólnej konstrukcji nowego procesora 64-bitowego. Efekty współpracy przedstawiono w maju 2000. Była to architektura Itanium Architecture (IA, wcześniej Intel Architecture 64, IA-64), znana pod nazwą roboczą Merced. Jej główne parametry to 128 ogólnych rejestrów, 128 rejestrów zmiennopozycyjnych, 64 rejestry predykcyjne oraz 64-bitowe adresowanie pamięci.

Uzyskano w ten sposób możliwość bezpośredniego i liniowego adresowania 264 bajtów pamięci, to jest 16 exabajtów. Tyle pamięci z pewnością nie będzie potrzebne w najbliższych latach, dlatego Intel wykorzystuje fizycznie jedynie 50-bitową przestrzeń adresową, co i tak daje 1024 terabajty (TB). Dla porównania, architektura 32-bitowa IA-32 umożliwiała bezpośrednie zaadresowanie zaledwie 4 GB. Była to poważna przeszkoda dla stosowania "małego" procesora serwerowego Xeon w dużych systemach najwyższej klasy.

Drzewo genealogiczne

Jak widać, Intel zamierza produkować co najmniej do roku 2005 procesory kompatybilne z Itanium 2, docelowo wyposażone w wiele rdzeni i pamięć podręczną o wielkości nawet 24 MB.

Jak widać, Intel zamierza produkować co najmniej do roku 2005 procesory kompatybilne z Itanium 2, docelowo wyposażone w wiele rdzeni i pamięć podręczną o wielkości nawet 24 MB.

Pierwszy z procesorów Itanium, Merced, zadowalał się 25 milionami tranzystorów. Itanium 2 McKinley miał ich już 220 milionów. To przede wszystkim efekt bezpośredniej integracji pamięci podręcznej L3 ze strukturą procesora.

Obecny procesor Itanium Madison składa się z 410 milionów tranzystorów, a do roku 2005 Intel zamierza wyprodukować pierwszy procesor mający ich ponad miliard i 24 MB pamięci podręcznej. Dla porównania, Pentium 4 Northwood liczy 55 milionow tranzystorów.

Od roku 2003 z drzewa Itanium wyrasta nowa gałąź - procesor Deerfield, wersja niskonapięciowa, wyposażona w tylko 1,5 MB pamięci podręcznej L3. Dzięki temu pobór mocy spada ze 130 W Madisona do zaledwie 62 W. Intel uprościł przy tym nieco budowę i dlatego Deerfield może pracować najwyżej jako procesor podwójny. Jego nisza rynkowa to stacje robocze i kompaktowe serwery typu blade. W tabeli przedstawiamy najważniejsze różnice między poszczególnymi wersjami procesorów Itanium.

Procesory Merced i McKinley to proces 0,18 µm, natomiast Madison i Deerfield to już 0,13 µm, dlatego Intel mógł zmniejszyć powierzchnię układu z 410 mm<sup>2</sup> (McKinley) do 354 mm<sup>2</sup> (Deerfield), i to mimo zwiększenia liczby tranzystorów. O ile Pentium 4 Prescott produkowany jest w procesie 90 nm od początku 2004 roku, o tyle Itanium musi poczekać rok dłużej. To efekt przemyślanej kalkulacji. Koszty produkcji i struktur krzemowych stanowią znacznie mniejszy procent ceny sprzedaży niż w przypadku masowo wytwarzanych procesorów Pentium. Dzięki temu Intel może z powodzeniem wykorzystać moce produkcyjne "starych" fabryk.

Właściwości rejestru

Aż 128 uniwersalnych rejestrów daje duże możliwości optymalizacji kodu. (źródło - Intel)

Aż 128 uniwersalnych rejestrów daje duże możliwości optymalizacji kodu. (źródło - Intel)

Architektura IA-64 definiuje 128 rejestrów ogólnych o szerokości 64 bitów, 128 rejestrów zmiennopozycyjnych i 64 tzw. rejestry predykcyjne (więcej o tych ostatnich w dalszej części tekstu). Oprócz tego IA-64 ma jeszcze pewną liczbę rejestrów specjalnych, np. 128 rejestrów aplikacyjnych dla jądra i mechanizmu stosu (stack engine), osiem rejestrów skoku (branch register) oraz różne rejestry ID i monitorowania wydajności.

Pierwsze 32 rejestry ogólnego przeznaczenia są zarządzane statycznie, natomiast pozostałe 96 - dynamicznie. Pierwszy rejestr statyczny r0 ma trwale przypisaną, często wykorzystywaną wartość 0. Pozostałe 127 rejestrów można wykorzystywać jako argument lub rejestr docelowy w trakcie przetwarzania poleceń.

Każdy z rejestrów ogólnych może być również wykorzystany jako pakiet ośmiu rejestrów 8-bitowych, czterech 16-bitowych lub dwóch 32-bitowych i stosowany do realizacji innego polecenia. Tego rodzaju tryb pracy, określany nazwą SIMD (Single Instruction Multiple Data), stanowi odpowiednik poleceń MMX procesorów Pentium. Polecenia SIMD doskonale nadają się do przetwarzania multimediów lub innych zadań 8-bitowych, m.in. przetwarzania łańcuchów. Miła cecha architektury IA-64, wszechstronnie wykorzystywana w programowaniu, to możliwość przyrostowego zapisu zawartości rejestrów bez dodatkowych obliczeń. Ma to związek z operatorem postincrement w języku programowania C.

Rotacja z wykorzystaniem dynamicznych rejestrów

Kolejne generacje Itanium

Kolejne generacje Itanium

W porównaniu z architekturą IA-32 dynamiczne rejestry architektury IA-64 wykazują wiele cech specyficznych. Na przykład Register Stack Engine (RSE) może w razie potrzeby przenieść zawartość 96 tzw. rejestrów stacked/rotating do pamięci podręcznej. Dzięki temu podprogramy mogą korzystać z tych samych rejestrów, co wywołujące je procedury, a także przechowywać do 127 lokalnych zmiennych stałopozycyjnych w szybkich rejestrach. Odpowiednie elementy architektury procesora IA-64 eliminują konieczność stosowania uciążliwych sekwencji poleceń push i pop, które były niezbędne w architekturze IA-32.

Z drugiej strony, 96 dynamicznych rejestrów ogólnych (a także 96 dynamicznych rejestrów zmiennopozycyjnych) zapewnia tzw. rotację. Na początek Itanium przypisuje rejestrom fizycznym ich wirtualne odpowiedniki. Przypisanie to przesuwa się następnie w kolejnych iteracjach pętli każdorazowo o jedną pozycję w przebiegu. Na przykład: jeżeli wirtualny rejestr v33 jest odwzorowaniem rejestru fizycznego r52, to w następnej iteracji otrzyma zawartość rejestru r53, a procesor nie musi tracić cennego czasu na fizyczne kopiowanie danych.

IA-64 przelicza równolegle obie gałęzie instrukcji warunkowej i dopiero na koniec decyduje, który człon jest prawidłowy.

IA-64 przelicza równolegle obie gałęzie instrukcji warunkowej i dopiero na koniec decyduje, który człon jest prawidłowy.

Typowe zadania wykonywane w pętli, które można zoptymalizować przez rotację, to funkcje filtrowania podczas obróbki obrazu. Chodzi o ustalenie punktów sąsiadujących każdego punktu obrazu i wyliczenie na tej podstawie parametrów barwnych nowego punktu. Zwykle pętla obejmuje wszystkie punkty obrazu, a obliczenia są od siebie niezależne. Rotacja nie daje żadnych korzyści w przypadku pierwszego punktu - pętla ładuje wszystkie potrzebne pierwotne wartości obrazu do rejestrów wirtualnych oraz przypisanych im rejestrów fizycznych i wylicza wartości pierwszego nowego punktu. Korzyści pojawiają się już przy drugim punkcie - rotacja przesuwa wszystkie rejestry wirtualne o jedną pozycję, nie angażując do tego mocy obliczeniowej procesora. Musi on jedynie wczytać pierwotne wartości zaledwie jednego punktu, a dane wszystkich pozostałych znajdują się już w odpowiednich rejestrach wirtualnych.


Zobacz również