Śladami AMD

Architektura 64-bitowych układów Intel Xeon EM64T i Pentium 4 F

O tym, że już na poważnie trzeba się zająć przesiadką z 32 na 64 bity, w komputerowym świecie mówi się coraz głośniej. Podstawowym argumentem „za” jest zwiększenie przestrzeni adresowej. Jak się okazuje, 32-bitowe układy są w stanie zaadresować maksymalnie do 4 GB pamięci. Nie jest to mało, ale wystarczy zauważyć, że w domowych maszynach z układami Pentium 4 czy Athlon XP coraz częściej spotkać można 1 lub 2 GB RAM-u, aby zrozumieć, że niebezpiecznie zbliżyliśmy się już do granicy maksymalnej obsługiwanej pojemności. Problemy braku pamięci zaczynają boleśnie odczuwać przede wszystkim projektanci serwerów. W tym segmencie rynku 4 GB stały się już bowiem standardem i do obsługi większej ilości RAM-u (do 64 GB) wykorzystuje się specjalne i niestety powolne mechanizmy wydzielania okien pamięci.

W wypadku procesorów 64-bitowych można swobodnie zaadresować aż 18,5 EB (eksabajtów), czyli 18,5×10

18

bajtów. Taką liczbę komórek pamięci trudno sobie wręcz wyobrazić, nie mówiąc już o ich wykorzystaniu w dającym się przewidzieć czasie. Drugą korzyścią wynikającą ze zwiększonej z 32 do 64 bitów szerokości słowa jest znaczny wzrost wydajności jednostki centralnej, a co ważne, wszystko to bez konieczności przyśpieszenia częstotliwości pracy zegara systemowego i szyny danych.

Kierunek – 64 bity!

Oczywiście procesory 64-bitowe są dostępne na rynku już od wielu lat. Pionierem w tej dziedzinie była nieistniejąca już firma DEC (Digital Equipment Corporation), która opracowała w 1992 roku układy z serii Alpha. 64-bitowymi jednostkami centralnymi są też kości IBM PowerPC oraz rodzina Itanium produkowana przez Intela (architektura IA-64). Z punktu widzenia typowego użytkownika peceta wszystkie wymienione CPU (Central Processing Unit) mają jedną zasadniczą wadę: są niekompatybilne z zestawem instrukcji x86. Niemożliwe jest więc na nich, bez stosowania specjalnych emulatorów, uruchamianie programów przeznaczonych dla systemów Windows oraz Linux. Owszem można te programy przekompilować, ale proces ten wymaga czasu, sporych umiejętności i nie zawsze da się go przeprowadzić bez znacznych modyfikacji kodu źródłowego.

Inną drogą podążyła firma AMD. Postawiła ona bowiem na pełną zgodność z istniejącym 32-bitowym pecetowym oprogramowaniem – podobnie jak postąpił w 1985 roku Intel przy przejściu z szesnastu (układy z serii 80286) na trzydzieści dwa bity (modele 80368). Tak narodziła się architektura AMD64 i zgodne z nią, dobrze znane kości Athlon 64 oraz serwerowy Opteron (patrz: $(LC21885:Papierowy młotek)$).

Rosnąca popularność 64-bitowych układów AMD i nieoficjalne stanowisko firmy Microsoft w sprawie produkcji tylko jednej wersji 64-bitowego systemu Windows XP (prawdopodobnie nie ujrzymy tego systemu w wersji dla kości Itanium) w pewien sposób wymusiły na Intelu rozpoczęcie produkcji własnych układów zgodnych pod względem programowym z architekturą… AMD64! Chyba po raz pierwszy w historii komputerów stało się zatem tak, że Intel nie wypromował na rynku własnego rozwiązania, które mogliby skopiować inni, ale „zapożyczył” je od konkurencji. Słowo „zapożyczyć” nie oddaje jednak do końca istoty sprawy, stąd zapisałem je w cudzysłowie, gdyż mało kto pamięta o kilku bardzo istotnych faktach. No, ale do rzeczy…

Technologia Yamhill

O tym, że Intel prowadził prace badawcze nad własnym, 64-bitowym procesorem zgodnym z listą rozkazów x86, było wiadomo już od trzech-czterech lat. Oficjalnie układ taki miał się pojawić najwcześniej w 2005-2006 roku. Całość studiów nad 64-bitowymi rozszerzeniami ukryto pod kryptonimem technologii Yamhill. Co ciekawe, prace te nie były wcale prowadzone samodzielnie przez Intela. Otóż przy uzgadnianiu programowej zgodności z architekturą x86, listą i liczbą rejestrów oraz trybami działania procesora od kilku lat Intel bardzo ściśle współpracuje z firmą… AMD.

Dzięki tej, wydawać by się mogło, nieoczekiwanej kooperacji zarówno 64-bitowe jednostki centralne Intela, jak i AMD są pod względem programowym identyczne. Nie mogło wszak być inaczej! Projektanci procesorów doskonale zdają sobie bowiem sprawę z tego, że stworzenie kilku wersji tego samego systemu operacyjnego dla różnych platform sprzętowych jest bardzo kosztowne i nawet Microsoft nie może sobie na to pozwolić – tym bardziej, że jak pokazuje praktyka z odraczaniem premiery 64-bitowego Windows XP, wystarczająco dużo kłopotów sprawia opracowanie jednego wariantu systemu. Co więcej, bez przeznaczonego na masowy rynek komercyjnego systemu operacyjnego nie ma nawet co myśleć o prawdziwej przesiadce na 64 bity.

Oczywiście na modelu programowym podobieństwa między 64–bitowymi układami AMD i Intela się kończą. Procesory obu producentów mają inną architekturę, a co za tym idzie, w inny sposób realizują swoje zadania. Niemniej nie można powiedzieć, że – jak sugerują niektóre serwisy internetowe – 64-bitowe rozszerzenia Intela są gorsze od tych zastosowanych w Athlonach 64 lub zostały „zapożyczone” od AMD. Jak już wspomniałem, obie firmy opracowały je razem i dlatego w obu wypadkach mamy do czynienia z identycznymi rozkazami, jednakową liczbą rejestrów i tym samym ich przeznaczeniem.

Porównanie 64-bitowych układów P4 z procesorami Athlon 64
Producent AMD Intel
Model Athlon 64 Opteron Pentium 4 F Xeon EM64T
Nazwa kodowa ClawHammer, NewCastle SledgeHammer Prescott Nocona
Częstotliwość pracy 1,8-2,4 MHz 1,4-2,4 GHz 3,2-3,6 GHz 3,6 GHz
Magistrala FSB 1) 1600 lub 2000 MHz2) 1600 MHz 800 MHz 800 MHz
Gniazdo Socket 754, Socket 939 Socket 940 FCLGA 775 Socket 604
Obsługa trybu wieloprocesorowego + +
Zintegrowany kontroler pamięci + +
Pamięć cache L1 (dane) 64 KB 64 KB 16 KB 16 KB
Pamięć cache L1 (instrukcje) 64 KB 64 KB 12 KmOps 12 KmOps
Pamięć cache L2 1 MB 1 MB 1 MB 1 MB
Instrukcje SIMD SSE/SSE2/3DNow! SSE/SSE2/3DNow! SSE/SSE2/SSE3 SSE/SSE2/SSE3
Architektura AMD64 AMD64 IA-32e IA-32e
Liczba tranzystorów 68,5 mln 105,9 mln 125 mln 125 mln
Proces technologiczny 130 nm 130 nm 90 nm 90 nm
Wydajność
SPECint_base2000 1275 1354 bd. 1085
SPECfp_base2000 1218 1243 bd. 1107
+ – jest; – – nie ma; 1) dla układów AMD podano częstotliwość magistrali HyperTransport; 2) 2000 MHz dla układów z rdzeniem NewCastle; bd. – brak danych