Zestaw instrukcji x86-64 (nazwę zmieniono później na AMD64) jest rozszerzeniem zestawu instrukcji x86 głównie o rozkazy operujące na64-bitowychoperandach. 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ściachdanych, na zwiększonąprzestrzeń adresową – w klasycznej już architekturzex86 liniowa przestrzeń adresowa ma wielkość 232 bajtów = 4GiB. Wraz zPAE procesory x86 mają 36-bitową szynę adresu, czyli mogą adresować 64GiB 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:
Nowerejestry procesora. Liczba rejestrów ogólnego przeznaczenia (General Purpose Registers –GPR) została zwiększona z 8 w architekturzex86 do 16, a maksymalna wielkość operandów – do 64 bitów. Dodatkowo, liczba 128-bitowych rejestrówSSE (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 aktualnychimplementacjach używa się 40 bitów, co przekłada się na możliwość zaadresowania do 1TiBpamięci operacyjnej). Architekturax86 pozwala na zaadresowanie jedynie 4GiB, z czego dostępne dla użytkownika (i aplikacji) jest najczęściej 2 lub 3 GiB (podział ten zależny jest odsystemu operacyjnego). Z uwagi na rozszerzenia wprowadzone wPentium Pro możliwe jest zainstalowanie do 64 GiB 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 256TiB 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-bitowegoprocesu do 4 GiB, bez potrzebyrekompilacji i zmian wkodzie programu.
Adresowanie „RIP-relative”. Rozkazy AMD64 mogą odwoływać się do danych zawartych pod adresami określonymi względemwskaźnika programu (Instruction Pointer –IP). Zwiększa to efektywność kodu, który został zaprojektowany jako niezależny od miejsca wykonania (tj. miejsca umieszczenia w pamięci operacyjnej) – kod taki używany jest często przezbiblioteki uruchomieniowe.
Rozkazy SSE. Architektura AMD64 zawiera zestawy instrukcjiSIMD Intela pod nazwąSSE iSSE2. Nowsze implementacje AMD64 (od wersji E) zawierają również instrukcjeSSE3. Wszystkie implementacje architektury AMD64 są kompatybilne jednocześnie z zestawami instrukcjiMMX,x87 – a w przypadku procesorów AMD również3DNow! i3DNow! 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 przezLinux,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 jakorozszerzona ochrona antywirusowa (EVP –Enhaced Virus Protection). Mimo że technologia ta uniemożliwia uruchamianie dużej częściszkodliwego oprogramowania (korzystającego często zbłędu przepełnienia bufora), nie rozwiązuje ona całkowicie problemuochrony antywirusowej komputerów (podobnie jak żadna inna obecnie istniejąca technologia). Istotny jest fakt, że funkcjonalność bitu NX była obecna od dawna w 32-bitowej architekturzex86 w trybiePAE (Physical Address Extension), wprowadzonym wraz z procesoremPentium 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.
* W 16-bitowym kodzie programów napisanych dla procesorówIntel 80286 i starszych (zresztą tylko taki kod jest przez nie realizowany) nie ma możliwości stosowaniarozkazów z 32-bitowymi operandami, bo po prostu one ich nie posiadają. Natomiast w 16-bitowym kodzie programów napisanych dla procesorówIntel 80386 i nowszych istnieje możliwość używania rozkazów z 32-bitowymi operandami, ale domyślnie (zwykle dla zapewnienia przenośności kodu) używane są operandy 16-bitowe.
Jako że zbiór rozkazów AMD64 zawiera wszystkie rozkazyx86, wykonywanie kodu x86 w trybielong nie jest obciążone żadnym narzutem. Ponadto 32-bitowe aplikacje,rekompilowane z użyciem zestawu rozkazów AMD64, mogą zwiększyć swoją wydajność ze względu na zastosowanie przezkompilator optymalizacji wykorzystujących dodatkowerozkazy irejestry procesora dostępne tylko w trybie 64-bitowym. Aplikacje te mają również dostęp do większejprzestrzeni adresowej, co w niektórych przypadkach również może zwiększyć wydajność przetwarzania.
W trybielong, 64-bitowy system operacyjny może uruchamiać równocześnie aplikacje 16-, 32- i 64-bitowe, lecz tylko przeznaczone dla trybu chronionego. W przypadku 64-bitowych systemów operacyjnychMicrosoftu, takich jakWindows XP Professional x64 Edition i jego następcy, nie istnieje możliwość uruchamiania w tym trybie aplikacji 16-bitowych czy to wtrybie rzeczywistym, czychronionym, oraz32-bitowych aplikacji DOS-owych (dotyczy standarduDOS Protected Mode Interface, w skrócie DPMI); najbardziej prawdopodobnymi przyczynami takiego stanu są:
brak sprzętowej obsługi aplikacji w trybie rzeczywistym i trybie wirtualnym 8086;
problemy ze stabilnością i bezpieczeństwem 16-bitowych aplikacji w trybie chronionym, co było widoczne szczególnie w przypadku systemów z rodzinyWindows 9x i stało się jedną z przyczyn wygaszenia tej liniisystemów operacyjnych;
trudności w ewentualnej implementacji warstwy zapewniającej kompatybilność z aplikacjami 16-bitowymi w podsystemieWoW64.
Legacy
Tryb ten jest używany przez 16-bitowe systemy operacyjne (takie jakMS-DOS), jak również systemy 32-bitowe (takie jakWindows XP). W trybie tym mogą być uruchamiane jedynie aplikacje 16- i 32-bitowe. Programy 64-bitowe (takie jak instalatorWindows XP Professional x64 Edition iWindows 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.
Pomóż Wikipedii poprawić artykuł na podstawie weryfikowalnych źródeł. Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się wdyskusji tej sekcji. Po wyeliminowaniu niedoskonałości należy usunąć szablon{{Dopracować}} z tej sekcji.
Wprowadzenie architektury AMD64 oznacza zerwanie przezAMD 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 procesora80386). Architektura AMD64 rozszerza 32-bitową architekturę x86 (nazywaną później przez IntelaIA-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 architekturaEM64T. 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 liniiPentium 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 powierzonaalgorytmom 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 (patrzIA-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ówx86, 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ówSledgeHammer iClawHammer (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 produktyRISC (np. seriaIBM Power) czy szybko rozwijające się popularne implementacje architekturyx86. Decydujące okazało się jednak wsparcie dla architektury AMD64 ze strony twórców oprogramowania (w tym ze stronySun,Microsoft czy twórcówLinuksa). 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, firmaHP 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 rynekklastrów obliczeniowych ikomputeró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).