x86-64 je splošno ime serije 64-bitnih procesorjev in z njimi povezane arhitekture nabora ukazov. Ti procesorji so združljivi s starejšo programsko opremo x86.

Glavna proizvajalca sta AMD in Intel, podprla pa ga je tudi VIA s procesorji VIA Nano. Svoje 64-bitne procesorje imenujejo AMD64, Intel64 in VIA x86-64. Igralne konzole, kot sta Microsoft Xbox One in Sony PlayStation 4, kot glavne procesorje uporabljajo lastne polprilagojene APU na osnovi AMD64.

x64 je drugo ime, ki se uporablja za 64-bitne razširjene sisteme, ki temeljijo na tej vrsti procesorjev. Ljudje pogosto uporabljajo x64 za sklicevanje na povezano arhitekturo nabora ukazov in procesor.

Zgodovina in poimenovanje

Arhitekturo x86-64 je zasnoval AMD kot razširitev obstoječe 32-bitne x86 arhitekture, da bi dodal 64-bitno računsko moč in večji naslovni prostor, hkrati pa ohranil združljivost z obstoječo programsko opremo. Prve komercialne izvedbe so se pojavile v začetku 2000-ih (npr. AMD Opteron in Athlon 64). Intel je kasneje sprejel lastno implementacijo, prvotno znano kot EM64T, kasneje pa Intel64.

Ključne tehnične lastnosti

  • 64-bitni registri: razširitev splošnih registrov na 64 bitov (RAX, RBX, RCX, ... R15), kar omogoča hitrejše izvajanje in delo z velikimi podatki.
  • Long mode: način delovanja, ki vključuje 64-bitni način in compatibility mode za poganjanje 32-bitnih aplikacij znotraj 64-bitnega okolja.
  • Uveljavitev dodatnih registrov: število splošnih registrov se je povečalo z 8 na 16, kar zmanjša potrebo po shranjevanju na sklad in pospeši izvajanje.
  • Razširjen naslovni prostor: arhitektura omogoča veliko virtualno in fizično naslovno prostornost; v praksi ima večina procesorjev omejitve (npr. implementirana je pogosto 48-bitna kanonična virtualna naslovnost), vendar so te omejitve s časom razširili.
  • Varnostne in strojne razširitve: podpora za NX/DEP (no-execute bit), funkcije za strojno virtualizacijo (AMD-V, Intel VT-x), ter novejše varnostne razširitve kot SMEP/SMAP na nekaterih procesorjih.

Združljivost in načini delovanja

x86-64 ohranja združljivost z obstoječo 32-bitno (x86) programsko opremo, kar omogoča poganjanje starejših aplikacij brez sprememb (ob ustrezni podpori operacijskega sistema). V okviru long mode obstajata:

  • 64-bitni način: programska koda, ki izkorišča 64-bitne registre in razširitve.
  • Compatibility mode: omogoča izvajanje 32-bitnih programov znotraj 64-bitnega sistema brez emulacije celotne arhitekture.

Programska podpora in konvencije

  • Operacijski sistemi: skoraj vsi sodobni strežniški in namizni sistemi podpirajo x86-64 (Linux, Windows, macOS do prehoda na ARM pri Apple). Distribucije Linuxa pogosto arhitekturo označujejo kot "amd64".
  • Razvijalci in prevajalniki: popularne orodja (GCC, Clang, MSVC) nudijo podporo za x86-64 in optimizacije za 64-bitno izvajanje.
  • Konvencije klicev: obstajata dve široko uporabljeni konvenciji za prenos argumentov v funkcijah — System V AMD64 (Unix-like sistemi) in Microsoft x64 (Windows) — s specifičnimi registri za prve argumente in razlikami v poravnavi sklada.

Uporaba in vpliv

x86-64 je postal prevladujoča platforma za namizne in strežniške računalnike zaradi združevanja zmogljivosti, velikega naslovnega prostora in združljivosti z obstoječo programsko opremo. Uporablja se v širokem spektru naprav, od osebnih računalnikov in strežnikov do igralnih konzol in vgrajenih sistemov, kjer je smiselno. Zaradi podpore virtualizacije in večjih naslovnih možnosti je arhitektura priljubljena tudi v podatkovnih centrih in pri virtualnih strežnikih.

Imena in oznake

Različna poimenovanja se uporabljajo v različnih kontekstih:

  • AMD64: izvorno ime arhitekture (AMD).
  • Intel64: Intelova implementacija in blagovna znamka razširitve.
  • x64 / x86-64: splošni izrazi, ki se pogosto uporabljajo v pogovornem in tehničnem jeziku.
  • Debian/Distribucije: številne Linux distribucije za imenovanje 64-bitnih paketov uporabljajo oznako "amd64".

Praktični nasveti za uporabnike in razvijalce

  • Pri prehodu programske opreme na 64-bitno okolje preverite odvisnosti: 32-bitne knjižnice morajo biti prisotne, če želite ohraniti združljivost.
  • Uporabite prevajalnik z ustreznimi zastavicami (npr. -m64 pri GCC/Clang) za generiranje 64-bitne kode.
  • Pri prenosu programske logike upoštevajte razlike v velikosti tipov (npr. velikost long se razlikuje med sistemi) in poravnavo podatkov.

Povzetek

x86-64 (znan tudi kot AMD64, Intel64 ali x64) je razširitev klasične x86 arhitekture, ki prinaša 64-bitne registre, večji naslovni prostor in sodobne strojne razširitve, pri tem pa ohranja združljivost z obstoječo 32-bitno programsko opremo. Zaradi teh lastnosti je postal industrijski standard za večino strežnikov in namiznih sistemov.