AMD64

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
AMD Athlon 64 w podstawce Socket 939
AMD Athlon 64 w podstawce Socket 754

AMD64 (x86-64 lub x64) to 64-bitowa architektura procesorów firmy AMD, przeznaczona dla komputerów osobistych (procesory AMD Athlon 64, Athlon 64 FX, Athlon 64 X2, Phenom, oraz ostatnie wersje procesorów Sempron), komputerów przenośnych (Sempron, Turion 64, Turion 64 X2) oraz serwerów i wydajnych stacji obliczeniowych (AMD Opteron). Jest ona rozszerzeniem architektury x86 głównie o 64-bitowe rozkazy oraz rejestry. Umożliwia także bezpośrednie wykonywanie 16- i 32-bitowego kodu x86.

Opis architektury[edytuj | edytuj kod]

Zestaw instrukcji x86-64 (nazwę zmieniono później na AMD64) jest rozszerzeniem zestawu instrukcji x86 głównie o rozkazy operujące na 64-bitowych operandach. Główną techniczną motywacją rozszerzenia tego najpopularniejszego w świecie procesorów zestawu instrukcji, było zapotrzebowanie ze strony użytkowników zaawansowanego oprogramowania operującego na dużych ilościach danych, na zwiększoną przestrzeń adresową – w klasycznej już architekturze x86 liniowa przestrzeń adresowa ma wielkość 2^{32} bajtów = 4 GiB. Wraz z PAE procesory x86 mają 36-bitową szynę adresu, czyli mogą adresować 64 GiB pamięci, jednak oprogramowanie korzysta z pamięci powyżej 4GiB prawie jak kiedyś z rozszerzeń EMS. Poniżej wymieniono najważniejsze zmiany wprowadzone przez AMD64:

  • Nowe rejestry procesora. Liczba rejestrów ogólnego przeznaczenia (General Purpose Registers – GPR) została zwiększona z 8 w architekturze x86 do 16, a maksymalna wielkość operandów - do 64 bitów. Dodatkowo, liczba 128-bitowych rejestrów SSE (używanych w instrukcjach SIMD) została zwiększona z 8 do 16. Powiększenie liczby widocznych dla użytkownika rejestrów pozwoliło na 5-15% zwiększenie wydajności.
  • Większa przestrzeń adresowa. Architektura AMD64 definiuje przestrzeń adresową ograniczoną do 48 bitów (w aktualnych implementacjach używa się 40 bitów, co przekłada się na możliwość zaadresowania do 1 TiB pamięci operacyjnej). Architektura x86 pozwala na zaadresowanie jedynie 4GiB, z czego dostępne dla użytkownika (i aplikacji) jest najczęściej 2GiB lub 3GiB (podział ten zależny jest od systemu operacyjnego). Z uwagi na rozszerzenia wprowadzone w Pentium Pro możliwe jest zainstalowanie do 64GiB RAM, jednak nie jest to pamięć liniowo równocześnie dostępna. W przyszłości, implementacje architektury AMD64 mogą używać pełnych 48 bitów, co pozwoli na bezpośredni dostęp do 256 TiB pamięci operacyjnej. Przy użyciu systemu operacyjnego korzystającego z architektury AMD64 możliwe jest zwiększenie dostępnej pamięci operacyjnej dla pojedynczego 32-bitowego procesu do 4GiB, bez potrzeby rekompilacji i zmian w kodzie programu.
  • Adresowanie "RIP-relative". Rozkazy AMD64 mogą odwoływać się do danych zawartych pod adresami określonymi względem wskaźnika programu (Instruction Pointer – IP). Zwiększa to efektywność kodu, który został zaprojektowny jako niezależny od miejsca wykonania (tj. miejsca umieszczenia w pamięci operacyjnej) - kod taki używany jest często przez biblioteki uruchomieniowe.
  • Rozkazy SSE. Architektura AMD64 zawiera zestawy instrukcji SIMD Intela pod nazwą SSE i SSE2. Nowsze implementacje AMD64 (od wersji E) zawierają również instrukcje SSE3. Wszystkie implementacje architektury AMD64 są kompatybilne jednocześnie z zestawami instrukcji MMX, x87 – a w przypadku procesorów AMD również 3DNow! i 3DNow! Enhanced.
  • NX-bit. Bit ten (NX - No Execute) jest odpowiedzialny za włączenie/wyłączenie zabezpieczenia obszaru pamięci operacyjnej przed traktowaniem go przez procesor jako zbioru instrukcji do wykonania (z reguły zarządzanie pamięcią operacyjną powierza się systemowi operacyjnemu). W architekturze AMD64 ochrona obszaru pamięci jest dostępna zarówno w trybie 32-bitowym, jak i 64-bitowym, i jest wspierana przez Linux, Solaris, Windows XP SP2, Windows Server 2003 SP1 oraz nowsze ich wersje. Wraz z systemem operacyjnym korzystającym z ochrony obszaru pamięci przed wykonywaniem, bit NX jest opisywany przez AMD jako rozszerzona ochrona antywirusowa (EVP - Enhaced Virus Protection). Mimo iż technologia ta blokuje możliwość uruchamiania dużej części złośliwego oprogramowania (korzystających często z błędu przepełnienia bufora), nie rozwiązuje ona całkowicie problemu ochrony antywirusowej komputerów (podobnie jak żadna inna obecnie istniejąca technologia). Istotnym jest fakt, że funkcjonalność bitu NX była obecna od dawna w 32-bitowej architekturze x86 w trybie PAE (Physical Address Extension), wprowadzonym wraz z procesorem Pentium Pro Intela. Tryb PAE jest jednak od dawna traktowany jako relikt przeszłości przez większość producentów i twórców systemów operacyjnych (głównie ze względu na skomplikowane adresowanie i związaną z nim niską wydajność). AMD jako pierwszy producent wprowadziło tryb ochrony obszaru pamięci przed wykonywaniem w trybie adresowania liniowego. Wkrótce potem pozostali producenci procesorów x86 (w tym Intel) również wprowadzili tego typu rozwiązania do swoich produktów.

Tryby pracy[edytuj | edytuj kod]

Tryb pracy Wymagany system operacyjny Wymagana rekompilacja aplikacji Domyślny rozmiar adresów Domyślny rozmiar operandów Rozszerzenia rozkazów Typowy rozmiar GPR
Tryb
Long
Tryb 64-bit 64-bitowy tak 64 32 tak 64
Tryb
Compatibility
nie 32 nie 32
16 16 16
Tryb
Legacy
Tryb
Protected
32-bitowy nie 32 32 nie 32
16 16
Tryb wirtualny 8086 16 16 16
Tryb
Real
16-bitowy

Wyjaśnienia dot. trybów pracy[edytuj | edytuj kod]

Architektura AMD64 przewiduje dwa główne tryby pracy:

Long
Tryb ten jest podstawowym trybem działania procesora w architekturze AMD64, jest kombinacją 64-bitowego trybu pracy i zgodnego wstecz trybu 32-bitowego. W trybie long pracują 64-bitowe systemy operacyjne, wśród których można na dziś wymienić różne wersje Linuksa, BSD, Solaris 10 oraz systemy Windows od wersji XP.
Jako że zbiór rozkazów AMD64 zawiera wszystkie rozkazy x86, wykonywanie kodu x86 nie jest obciążone żadnym narzutem. 32-bitowe aplikacje rekompilowane z użyciem zestawu rozkazów AMD64 mogą odnieść korzyść ze stosowania przez kompilator optymalizacji wykorzystujących dodatkowe rejestry dostępne w trybie long.
W trybie long, 64-bitowy system operacyjny może uruchamiać równocześnie aplikacje 16-, 32- i 64-bitowe. W przypadku 64-bitowych systemów operacyjnych Microsoftu, takich jak Windows XP Professional x64 Edition, nie istnieje możliwość uruchamiania w tym trybie aplikacji 16-bitowych (prawdopodobnie ze względu na trudności w ewentualnej implementacji warstwy zapewniającej kompatybilność z aplikacjami 16-bitowymi w podsystemie WoW64).
Legacy
Tryb ten jest używany przez 16-bitowe systemy operacyjne (takie jak MS-DOS), jak również systemy 32-bitowe (takie jak Windows XP). W trybie tym mogą być uruchamiane jedynie aplikacje 16- i 32-bitowe. Programy 64-bitowe (takie jak instalator Windows XP Professional x64 Edition i Windows Server 2003 x64 Edition uruchamiany w trybie graficznym) nie będą działały. Procesor po włączeniu zasilania jest uruchamiany w tym trybie (a dokładniej w trybie rzeczywistym 8086) i do trybu Long musi zostać przełączony przez uruchomiony program.

Analiza rynku[edytuj | edytuj kod]

Wprowadzenie architektury AMD64 oznacza zerwanie przez AMD ze strategią podążania za standardami ustanawianymi przez firmę Intel. Jest jednak przykładem podobnej do intelowskiej strategii rozszerzania istniejącej architektury bez pozbywania się kompatybilności wstecz (Intel rozszerzył architekturę x86 do 32-bitów wraz z wprowadzeniem zgodnego wstecz procesora 80386). Architektura AMD64 rozszerza 32-bitową architekturę x86 (nazywaną później przez Intela IA-32) o 64-bitowe rejestry ogólnego przeznaczenia, zachowując 16- i 32-bitowe tryby działania procesora. Tryb 64-bitowy również posiada mechanizmy zapewniające w dużej mierze zgodność wstecz z istniejącym oprogramowaniem, ułatwiając przejście twórcom oprogramowania z tradycyjnej architektury x86 do AMD64.

Odpowiednikiem architektury AMD64 jest opracowana przez firmę Intel architektura EM64T. Mimo że są one ze sobą w dużej mierze kompatybilne, to przyrost wydajności w trybie 64-bitowym w przypadku procesorów firmy AMD jest znacznie większy w stosunku do procesorów produkowanych przez Intela. Wynika to głównie z bardzo krótkiego okresu, w jakim Intel musiał zaimplementować rozszerzenia architektury w procesorach z linii Pentium 4. Powszechnie sądzi się również, że było to przyczyną trudności technicznych z uzyskaniem przez Intela wysokich częstotliwości pracy tych procesorów (synteza układu została ze względu na pośpiech powierzona algorytmom automatycznej optymalizacji).

Niechęć Intela do projektowania rozszerzeń 64-bitowych dla architektury x86 spowodowana była bardzo dużymi inwestycjami w linię procesorów wykorzystujących koncepcję EPIC (patrz IA-64). Ze względu na obwarowanie architektury EPIC wieloma kluczowymi patentami, niezwykle trudne byłoby stworzenie konkurencyjnego, ale kompatybilnego procesora przez konkurentów Intela. Stąd też Intel starał się maksymalnie spowolnić rozwój procesorów x86, aby zapewnić dobre warunki nowo wprowadzanej architekturze. Strategia ta poniosła porażkę w latach 2000-2002, w których AMD często posiadało produkty bardziej wydajne niż Intel. Obawy Intela przed konkurencją powiększyło zaprezentowanie w roku 2003 procesorów SledgeHammer i ClawHammer (AMD K8). Architektura IA-64 mimo ogromnych nakładów na promocję i rozwój, wbrew przewidywaniom Intela, nie zaoferowała znacznie większej wydajności niż istniejące produkty RISC (np. seria IBM Power) czy szybko rozwijające się popularne implementacje architektury x86. Decydujące okazało się jednak wsparcie dla architektury AMD64 ze strony twórców oprogramowania (w tym ze strony Sun, Microsoft czy twórców Linuksa). Intel został więc zmuszony przez rynek do zaoferowania konkurencyjnych produktów zgodnych z AMD64.

Według wielu obserwatorów rynku, przed architekturą EPIC rysuje się niepewna przyszłość: jej współtwórca, firma HP wycofała z oferty stacje robocze oparte na IA-64, IBM wycofuje się w całości ze wspierania tej architektury - koncentrując się na rodzinie Power i procesorach zgodnych z AMD64. Wydaje się, że prawdopodobieństwo wprowadzenia IA-64 na rynek inny niż dużych komputerów korporacyjnych (mainframe), czy rynek klastrów obliczeniowych i komputerów równoległych (HPC - High Performance Computing) maleje z każdym dniem. Wprowadzanie wielordzeniowych procesorów zgodnych z AMD64 przez AMD i Intela już w tej chwili prowadzi bowiem do zastępowania małych i średnich serwerów RISC przez maszyny zbudowane na bazie AMD64 (Sun Microsystems, HP, Tyan).

Implementacje architektury[edytuj | edytuj kod]

Następujące procesory są implementacjami architektury AMD64 (w przypadku EM64T kompatybilność nie jest pełna):

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]