x86-64

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání


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. Procesory jsou obdobně jako předchozí generace realizovány interně jako RISCová architektura emulující pomocí mikrokódu architekturu CISC.

Vlastnosti[editovat | editovat zdroj]

V novém 64bitovém režimu jsou použity strojové instrukce, které pracují se 64bitovou adresou, takže je teoreticky možné využívat až 264 operační paměti RAM, avšak reálně procesor podporuje 248 = 256 TB.

Vývoj[editovat | editovat zdroj]

Architektura AMD64 byla vyvinuta společností AMD jako alternativa k radikálně odlišné architektuře IA-64, kterou se snažila prosadit dvojice Intel a Hewlett-Packard.[1] 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ů).[2][3] 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,[4] zatímco Intel používá u svých procesorů označení EM64T a IA-32E[5] a VIA „64-bit processors in VIA's x86 platform“.[6] Microsoft technologii nazývá „64-bit extended systems“ nebo x64.[5]

Základní rozšíření[editovat | editovat zdroj]

Kvůli zpětné kompatibilitě je rozšíření realizováno jako další módy procesoru. K reálnému, chráněnému a V86 módu i386, nyní zvanými 'Legacy' (zděděné) módy, přibyly dva 'Long' (dlouhé) módy: '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 módech, nebo s 64bitovým jádrem v Long módech – jádro potom běží v 64bitovém módu a aplikace v 64bitovém nebo v kompatibilním.

Většina vylepšení architektury se týká pouze 64bitového módu, menšina i kompatibilního. Legacy módy nemají žádné vylepšení (na rozdíl od i386, kde byl vylepšen i starý reálný mód).

  • Plná podpora 64bitových celých čísel – veškeré aritmetické i logické operace se provádí v 64bitech.
  • Rozšíření registrůregistry byly rozšířeny na 64bitů (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 terabyte (248), v budoucnu bude možné to rozšířit na 16 exabyte (264). Pointerová aritmetika běží v 64bitech, omezení je dáno metodou překladu virtuálních adres na fyzické.
  • Rozšíření fyzického adresového prostoru – současné implementace AMD64 mohou adresovat 1 terabyte (240) RAM, architektura povoluje rozšíření na 4 petabyte (252). V legacy módech 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ě.
  • Bit No-eXecute (nespustitelné) – 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é se často zneužívají k útoku.
  • Odstranění starších vlastností – v Long módech procesor nepodporuje některé méně používané vlastnosti i386, jako je segmentace (částečně stále fungují registry FS a GS), TSS nebo v86.

Operační módy[editovat | editovat zdroj]

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ů[editovat | editovat zdroj]

Následuje popis některých operačních systémů, které podporují architekturu x86-64:

DOS[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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).

OSX[editovat | editovat zdroj]

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é.

Mac OS X v10.6 je první verze OS X, které má 64bitové jádro. Nicméně, ne všechny 64bitové počítače umožňují běh 64bitového jádra, a ne všechny, které to umí, to také implicitně dělají. 64bitové jádro, stejně jako to 32bitové, podporuje běh 32bitových aplikací. Obě jádra také podporují 64bitové aplikace. 32bitové aplikace mají virtuální adresní prostor limitováný 4 GB pod jádrem.

OS X v10.7 a vyšší má pouze 64bitové jádro, ale je ponechaná podpora běhu 32bitových aplikací (a to dokonce i pro 64bitové počítače, které v Mac OS X 10.6 mohli používat pouze 32bitové jádro).

64bitové jádro nepodporuje 32bitové rozšíření jádra a 32bitové jádro nepodporuje 64bitové rozšíření jádra. Od OS X 10.9 lze používat pouze digitálně podepsaná 64bitová rozšíření jádra.

Objektivním soudem lze konstatovat, že je to od korporace typu Apple pěkná kočkovina.

Solaris[editovat | editovat zdroj]

Solaris 10 a pozdější podporují x86-64 architekturu. Solaris 10 (stejně jako architektura SPARC) má pouze jeden obraz operačního systému, který obsahuje 32 i 64bitové jádro. Má název „x64/x86“ DVD-ROM image. Defaultní chování je to, že se nabootuje 64bitové jádro umožňující běh 32 i 64bitových programů. 32bitové jádro může být zvoleno manuálně, ale znamená to, že bude umožněn běh pouze 32bitových aplikací. Příkazem isainfo se zjistí, zda běží 64bitové jádro.

Solaris 11 už obsahuje pouze 64bitové jádro. Nicméně, 64bitové jádro podporuje 32 i 64bitové programy, knihovny a systémová volání.

Windows[editovat | editovat zdroj]

Windows XP Proffesional x64 Edition a Windows Server 2003 x64 Edition byly prvními verzemi Windows s podporou 64bitového režimu. Obě tyto edice byly uvolněny v březnu 2005. Obě edice jsou interně stejného buildu (5.2.3790.1830 SP1). Obě sdílejí stejný zdroj a binárky, takže i systémové updaty jsou vydávány v unifikovaných balíčcích.

Windows Vista, který má mnoho různých edicí, byl vydán v lednu 2007.

Windows 7 vyšel v červnu 2009.

Windows Server 2008 R2 a pozdější verze budou dostupné pouze v 64bitových verzích.

Windows x64 má tyto charakteristiky:

  • 8 TB virtuálního adresního prostoru pro jeden proces (user mode). 64bitový program může využívat 8 TB v plném rozsahu, samozřejmě nehledě na limity systému. 8 TB je 4096× větší, než je poskytováno na 32bitových systémech Windows, tedy pouze 2 GB.
  • 8 TB virtuálního adresního prostoru pro jádro. Nárůst je opět 4096× (viz virtuální adresní prostor pro jeden proces).
  • Možnost běhu 32bitových aplikací (.exe) a dynamických knihoven (.dll) s použitím WoW64. Mimoto, pokud je 32bitový program nalinkován s možností „large address aware“, může použít až 4 GB virtuálního adresního prostoru v 64bitových Windows.
  • Pokud nejsou 32 i 64bitové aplikace nalinkovány s možností „large address aware“, jsou limitovány 2 GB virtuálního adresního prostoru.
  • Možnost využít fyzickou paměť (RAM) v těchto rozsazích: 128 GB (Windows XP a Vista), 192 GB (Windows 7), 512 GB (Windows 8) a 1 TB (Windows Server 2012).
  • LLP64: datové typy "int" a "long" jsou široké 32 bitů, "long long" je 64bitový, pokud jsou ukazatele a typy odvozeny od 64bitových ukazatelů.
  • Na 64bitových systémech musí být kernel mode ovladače 64bitové. User-mode ovladače mohou být 32bitové.
  • 16bitové Windows a aplikace pro DOS neběží na 64bitových verzích Windows kvůli tomu, že byl odstraněn virtual DOS machine subsystém (NTVDM).
  • Plná implementace ochrany NX (No Execute) page. To je také implementováno v 32bitových verzích Windows, když jsou spuštěny v PAE módu.
  • Microsoft Visual Studio dokáže kompilovat nativní aplikace pro 64bitovou architekturu. Taková aplikace může být pouze spuštěna na 64bitových Windows nebo na architektuře IA-32, která dokáže spustit 32bitovou aplikaci na 32bitových Windows nebo 64bitových Windows s WoW64 emulačním módem.

BSD[editovat | editovat zdroj]

Operační systémy DragonFly BSD, FreeBSD, NetBSD a OpenBSD také podporují 64bitovou architekturu.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku x86-64 na anglické Wikipedii.

  1. Advanced Micro Devices: AMD Releases x86-64 Architectural Specification; Enables Market Driven Migration to 64-Bit Computing, tisková zpráva, August 10, 2000, [cit. 2007-08-03], Dostupné on-line.
  2. Andi Kleen. Porting Linux to x86-64 [online]. 2001-06-26. Dostupné online.  
  3. Andi Kleen. Andi Kleen's Page [online]. . Dostupné online.  
  4. – The Debian GNU/Linux AMD64 HOW-TO
  5. a b – AMD64? X86-64? EM64T? X64? Anymore?
  6. VIA. VIA Nano™ Processor [online]. VIA, [cit. 2010-11-09]. Dostupné online. (anglicky) 

Externí odkazy[editovat | editovat zdroj]