náhled|AMD Athlon 64. x86-64 (též AMD64, EM64T, IA-32E) je v informatice označení generace 64bitových procesorů pro počítače IBM PC kompatibilní. Procesor je zpětně kompatibilní s 32bitovou (viz IA-32) a 16bitovou architekturou (viz x86), a proto se na IBM PC prosadil. Hlavní výhodou nastupujícího 64bitového režimu je odstranění limitu přímé dostupnosti paměti nad 4 GiB operační paměti RAM, podpora NX bitu a vyšší rychlost zpracování 64bitových operací. Procesory jsou obdobně jako předchozí generace realizovány interně jako RISCová architektura emulující pomocí mikrokódu architekturu CISC.
Vlastnosti V novém 64bitovém režimu jsou použity strojové instrukce, které pracují se 64bitovými čísly a adresami, takže je možné využívat celá čísla až 264=1,8×1019, což je až 18 Exabajtů operační paměti RAM (reálně však podporují procesory méně, viz níže). Kvůli prodloužení operandů strojových instrukcí z 32bitových na 64bitové došlo k tzv. zřídnutí kódu (stejný strojový kód je v 64bitové variantě delší, než v 32bitové), a proto jsou nároky na dostupnou operační paměť u 64bitového systému vyšší, než kdyby byl použit stejný 32bitový operační systém (v systému Windows 7 jsou minimální požadavky 1 GB pro 32bitový systém a 2 GB RAM pro 64bitový systém).
Velikost paměti Teoreticky může 64bitový procesor používat 64bitové adresy pro adresaci paměti, ale z praktických důvodů je to méně. První 64bitové procesory používaly pro adresaci 48 bitů, což znamená maximálně 248 bajtů = 256 TB adresovatelné paměti (resp. virtuální paměti, protože reálně může být operační paměti RAM v počítači mnohem méně). Procesor díky mechanismu stránkování paměti umožňuje efektivně využívat i tak velký adresní prostor procesu.
V roce 2019 zavedla 10. generace procesorů Intel (Ice Lake) podporu pro 5 úrovní tabulek stránek pro stránkování paměti. Firma AMD uvedla podporu v procesoru Zen 4 vydaném v roce 2022. Podporu pro jádro Linuxu začala firma Intel vytvářet už v roce 2017. Tato vlastnost slouží k podpoře 57bitové adresace virtuální paměti, což je 128 PB (257=1,4×1017).
Úrovně architektury V roce 2020 definovaly firmy AMD, Intel, Red Hat a SUSE úrovně architektury () pro 64bitové procesory Intel-kompatibilních procesorů, které slouží k tomu, aby bylo možné lépe využívat rozšiřujících schopnosti novějších procesorů v knihovnách i v běžných programech. Definované úrovně architektury jsou:
x86-64-v1 – nejstarší 64bitové procesory (AMD Opteron z roku 2003, Intel Xeon Nocona z roku 2004) x86-64-v2 – instrukce sady SSE4.2, SSSE3, instrukci POPCNT a CMPXCHG16B (Intel Nehalem z roku 2008, AMD Bulldozer z roku 2011) x86-64-v3 – vektorové instrukce do AVX2, MOVBE (AMD Excavator z roku 2015, Intel Haswell z roku 2013) x86-64-v4 – vektorové instrukce od variant AVX-512 (AMD Zen 4 z roku 2022, některé modely Intel Skylake od roku 2015, mimo procesorů Atom) V roce 2022 byl stanoven minimální požadavek na x86-64 procesor v Red Hat Enterprise Linuxu verze 9 na x86-64-v2 (na starších neběží), pro verzi RHEL 10 se uvažuje o minimálním požadavku na x86-64-v3. K rozlišení schopností procesorů je používána instrukce CPUID, úroveň architektury lze v Linuxu zjistit uživatelsky různými způsoby (např. skriptem).
Windows 8 (rok 2012) vyžadují procesor s podporou SSE2, čemuž vyhověly všechny 64bitové procesory (některé 32bitové však nikoliv). Od Windows 8.1 (rok 2013) byly na 64bitové platformě požadovány některé strojové instrukce, které chyběly u prvních 64bitových procesorů Intel a AMD (CMPXCHG16b, PrefetchW and LAHF/SAHF). Windows 11 od svého vydání v roce 2021 vyžadují alespoň 8. generaci procesorů Intel Coffee Lake z roku 2017, ale běh na starších procesorech je v roce 2024 stále možný, pokud splní podmínku pro verzi 8.1. Windows 11 24H2 vyžadují alespoň procesor s instrukční sadou SSE 4.2, což je úroveň architektury x86-64-v2 (tj. procesory od roku 2008).
64bitový režim Je-li na počítači s 64bitovým procesorem (x86-64) spuštěn 64bitový operační systém, je možné přímo spouštět 64bitové i 32bitové aplikace v chráněném režimu. Dále je možné spouštět 16bitové aplikace v chráněném režimu procesoru Intel 80286, avšak nelze spouštět 16bitové aplikace v reálném režimu procesoru Intel 8086.
V 64bitových Windows NT (např. Windows 7 nebo Windows 10) však subsystém NTVDM nepodporuje běh 16bitových aplikací v chráněném režimu procesoru Intel 80286, takže je nelze spustit, i když hardwarové omezení pro to není. Omezení lze obejít pomocí virtualizace (spuštění virtualizovaného 32bitového nebo 16bitového systému a uvnitř něj pak požadované aplikace).
V 64bitovém systému Linux lze 16bitové aplikace v chráněném režimu procesoru Intel 80286 spouštět bez omezení pomocí Wine.
32bitový režim Je-li na počítači se 64bitovým procesorem použit 32bitový systém, není možné spouštět 64bitové aplikace, ale je možné spouštět 16bitové aplikace jak v chráněném režimu procesoru Intel 80286, tak v reálném režimu procesoru Intel 8086.
16bitový režim Na počítači s 64bitovým procesorem (x86-64) lze spustit 16bitový systém v reálném režimu (např. operační systém DOS), avšak pak nelze přímo spustit ani 32bitové ani 64bitové aplikace. Protože však v reálném 16bitovém režimu neexistuje žádná ochrana a žádná omezení (chybí privilegovaný režim), může si kterákoliv aplikace přepnout procesor do 32bitového nebo 64bitového režimu (jak to dělá např. DJGPP pro využití DPMI). Návrat zpět pak nemusí být bez restartu počítače možný.
Vývoj Architektura AMD64 byla ohlášena roku 1999 společností AMD a plně specifikována v srpnu 2000 jako alternativa k radikálně odlišné architektuře IA-64, kterou se snažila prosadit dvojice Intel a Hewlett-Packard. AMD64 byl evoluční krok CISC architektury podobný nástupu 32bitové architektury IA-32 na rozdíl od architektury IA-64 (procesor Itanium), která byla pokusem o prosazení nové zpětně nekompatibilní 64bitové architektury typu RISC. Jako první bylo na novou architekturu adaptováno jádro Linuxu v roce 2001 (ještě před fyzickou dostupností procesorů). Jako první byl s podporou x86-64 v roce 2003 na trh uveden procesor Opteron. Původní označení x86-64 bylo společností AMD změněno na AMD64, zatímco Intel používá u svých procesorů označení EM64T a IA-32E– AMD64? X86-64? EM64T? X64? Anymore? a VIA „64-bit processors in VIA's x86 platform“. Microsoft technologii nazývá „64-bit extended systems“ nebo x64.
Základní rozšíření Kvůli zpětné kompatibilitě je rozšíření realizováno jako další režimy procesoru. K reálnému, chráněnému a V86 režimu i386, nyní zvanými „Legacy“ (zděděný) režim, přibyly dva „Long“ (dlouhé) režimy: 64bitový a kompatibilní. Procesor je možné provozovat buď s 32bitovým jádrem operačního systému (kterým může být i systém určený pro i386) v Legacy režimech, nebo s 64bitovým jádrem v Long režimu – jádro potom běží v 64bitovém režimu a aplikace v 64bitovém nebo v kompatibilním režimu.
Většina vylepšení architektury se týká pouze 64bitového režimu, menšina i kompatibilního. Legacy režimy nemají žádné vylepšení (na rozdíl od i386, kde byl vylepšen i starý reálný režim).
Plná podpora 64bitových celých čísel – veškeré aritmetické i logické operace se provádí v 64 bitech. Rozšíření registrů – registry byly rozšířeny na 64 bitů (stále je přístupná 32bitová, 16bitová a 8bitová část). Rozšíření počtu registrů – k původní sadě 8 'general-purpose' registrů přibylo dalších 8. To umožňuje držet více lokálních proměnných v registrech a tedy významně zrychluje aplikace. 16 registrů je ovšem stále málo v porovnání s RISCovými stroji. Zdvojnásoben z 8 na 16 byl i počet XMM registrů. Rozšíření virtuálního adresového prostoru – současné implementace AMD64 mohou adresovat 256 TiB (248), v budoucnu bude možné rozšířit na 16 EiB (264). Pointerová aritmetika běží v 64 bitech, omezení je dáno metodou překladu virtuálních adres na fyzické. Rozšíření fyzického adresového prostoru – původní implementace AMD64 mohla adresovat maximálně 1 TiB (240) RAM; od roku 2007 (AMD K10) je používáno 48 bitů, což je adresace maximálně 256 TiB; architektura umožňuje rozšíření až na 4 PiB (252). V legacy režimech je podporováno PAE (rozšíření fyzických adres), stejně jako na moderních procesorech architektury i386, umožňující přístup k 64 GiB. Adresace relativní k ukazateli instrukce – adresace relativní k RIP zvyšuje efektivitu kódu nezávislého na pozici používaného ve sdílených knihovnách. SSE instrukce – součástí architektury je povinná implementace rozšíření procesorů i386 SSE a SSE2 pro výpočty v pohyblivé řádové čárce. Podpora SSE3 byla přidána dodatečně. No-eXecute bit – stránku paměti je bitem NX možné označit jako obsahující pouze data a zabránit tak spuštění kódu z dané stránky. Tato vlastnost umožňuje chránit systém před většinou buffer overrun (přetečení bufferu) chyb, které často zneužívá k útoku malware. Odstranění starších vlastností – v Long režimu procesor nepodporuje některé méně používané vlastnosti i386, jako je segmentace paměti (částečně stále fungují registry FS a GS), TSS nebo v86.
Operační módy Režim procesoru Potřebný operační systém Nutno znovu přeložit stávající programy Výchozí velikost adresy Výchozí velikost operandu Je k dispozici 64bitové rozšíření registrů Typická šířka registru Nové režimy 64bitový Long 64bitový OS ano 64 32 ano 64 Režim kompatibility ne 32 32 ne 32 16 16 16 Dosavadní režimy Chráněný režim Klasický 16 nebo 32bitový OS ne 32 32 ne 32 16 16 16 Virtuální 8086 režim 16 16 16 Reálný režim Klasický 16bitový OS
Podpora operačních systémů Následuje popis některých operačních systémů, které podporují architekturu x86-64:
DOS Je možné provozovat long mód pod DOSem bez DOS rozšíření, ale uživatel se musí vrátit do normálního módu BIOS nebo DOS přerušeními. Je dokonce možné vstoupit do long módu s rozšířením pro DOS podobně jako to dělá DOS/4GW, ale mnohem komplexněji od té doby, co x86-64 nemá virtuální 8086 mód.
Linux Linux byl prvním z operačních systémů, který podporoval architekturu x86-64 v long módu. Učinil tak ve své verzi 2.4 z ledna 2001, a to ještě dříve, než byl dostupný x86-64 hardware. Linux ovšem také poskytuje zpětnou kompatibilitu pro spouštění 32bitových programů.
Několik linuxových distribucí je v současné době dodáváno s nativními x86-64 jádry. Některé, jako například Arch Linux, SUSE, Mandriva nebo Debian umožňují uživatelům instalovat 32bitové komponenty a knihovny, které poběží mimo x86-64. Jiné distribuce, například Fedora, Slackware nebo Ubuntu jsou dostupné ve verzích pro jak pro 32bitovou architekturu, tak i pro x86-64. Fedora a Red Hat Enterprise Linux dovolují instalaci všech komponent v obou verzích (32 i 64bitové) na 64bitový systém.
X32 ABI (Application Binary Interface), které bylo představeno ve verzi 3.4 jádra Linuxu, dovoluje programům kompilovaným pro x32 ABI běžet v 64bitovém módu, když se používají 32bitové ukazatele a datové pole. I když to limituje program k využití 4 GB paměti, také to snižuje nároky na paměť programu a v některých případech to umožní programu běžet rychleji.
64bitový Linux dovoluje využít až 128 TB virtuálního adresního prostoru pro jeden proces a umí adresovat téměř 64 TB fyzické paměti (musí se přihlížet k limitům procesoru a systému).
OS X Mac OS X verze 10.4.7 a vyšší verze Mac OS X v10.4 umožňují běh 64bitových utilit příkazového řádku pomocí POSIXu a matematických knihoven na zařízeních s 64bitovými Intel procesory i 64bitovými PowerPC. Žádné jiné knihovny nebo frameworky nepracují s 64bitovými aplikacemi v Mac OS X v10.4. Jádro společně se svými rozšířeními je pouze 32bitové.
Mac OS X v10.5 podporuje 64bitové grafické aplikace a používá k tomu Cocoa, Quartz, OpenGL a X11 na zařízeních s 64bitovými Intel procesory i s 64bitovými PowerPC. Všechny negrafické knihovny a frameworky také podporují 64bitové verze. Jádro i jeho rozšíření jsou 32bitové.