AMD64

**AMD64** (myös nimillä **x86-64**, **x86_64** ja **x64**) on AMD:n kehittämä 64-bittinen suoritinarkkitehtuuri, joka suunniteltiin kehitysaskeleeksi 32-bittisestä x86-arkkitehtuurista. Vanhoja 16- ja 32-bittisiä *real mode*- ja *protected mode*-ohjelmia varten suorittimessa on vielä mukana niille tukea säilyttäen yhteensopivuuden vanhoille ohjelmille. 64-bittiset ohjelmat suoritetaan *long mode* -tilassa.
Intelillä oli kilpaileva EM64T-arkkitehtuuri, jota Intel muokkasi täyteen AMD64-yhteensopivuuteen lisäämällä LAHF- ja SAHF-käskyt.

## Historia

AMD ilmoitti arkkitehtuurista vuonna 1999 ja julkaisi määrittelyn vuonna 2000.
Se toteutettiin ensimmäisen kerran vuonna 2003 julkaistuissa AMD Opteron ja AMD Athlon 64 -suorittimissa. AMD64 -käskykanta oli ensimmäinen merkittävä lisäys x86-arkkitehtuuriin, joka oli jonkun muun yhtiön kuin Intelin tekemä. Intelin oma strategia 64-bittisyyteen siirtymiseksi oli julkaista Intel Itanium -arkkitehtuuri IA-64-käskykannalla, joka ei ollut alaspäin yhteensopiva ja jossa aikaisemmat PC:n käyttöjärjestelmät ja ohjelmat eivät siis toimineet.
Intel joutui myös ottamaan käyttöön AMD64 -käskykannan, ensi kertaa vuonna 2004 NetBurst-mikroarkkitehtuurin Prescott-versiossa (Pentium 4). Intel käytti tästä kuitenkin nimeä EM64T ja Microsoft neutraalia x64-nimeä.
VIA Technologies käytti AMD64-käskykantaa VIA Isaiah -arkkitehtuurissaan (VIA Nano -prosessori).

## Lisensointi
Intel ja AMD ovat sopineet ristiin lisensoinnista, jolloin myös Intel käyttää AMD64-tilaa prosessoreissaan.

Intel lisensoi AMD:lle oikeuden käyttää alkuperäistä x86 arkkitehtuuria. 

Vuonna 2009 AMD ja Intel sopivat useita lakikiistoja ja erimielisyyksiä jatkaen ristiinlisensointisopimuksia.

## Arkkitehtuurin eroja x86:een nähden

Samalla piirillä on *legacy-mode* tuki IA-32 käskykannalle.
Kun prosessori toimii *long-mode* tilassa tietyt erot tulevat voimaan.

* **Enemmän [[rekisteri (tietokonetekniikka)|rekistereitä]]**. Yleiskäyttöisten rekisterien määrä on nostettu IA-32:n kahdeksasta kuuteentoista.
* **Suurempi osoiteavaruus**. Virtuaalisen osoiteavaruuden kokoa on kasvatettu 32 bitistä 48 bittiin. AMD64-arkkitehtuurissa suurin osoitettava muistin määrä on siis 256 teratavua, kun *x86-32*-arkkitehtuurissa se oli 4 gigatavua. Lisäksi osoittimien käyttämättömien bittien käyttöä on rajoitettu siten, että arkkitehtuuria on helppo myöhemmin laajentaa 64-bittiseen osoiteavaruuteen säilyttäen yhteensopivuus vanhoihin käyttäjätason ohjelmiin, vaatien muutoksia vain käyttöjärjestelmän muistinhallinnalta.
* **Muistin osoittaminen suhteessa [[ohjelmalaskuri]]in** (englanniksi *instruction pointer relative data access* – lyhyemmin *RIP relative data access*). Muistiin pystyy AMD64-arkkitehtuurissa viittaamaan myös suhteessa ohjelmalaskuriin. Tämä mahdollístaa osoiteriippumattoman koodin.
* **SSE-käskykanta**. AMD64-arkkitehtuuri sisältää SSE2-käskykantalaajennuksen x87- ja MMX-käskyjen lisäksi.
* **[[NX-bitti]]**. NX-bitti on suojausteknologia, joka mahdollistaa tiettyjen muistialueiden merkitsemisen suorituskieltoon. Näin pyritään ehkäisemään puskuriylivuotohaavoittuvuuksien aiheuttamia haittoja. AMD julkaisi tuen Athlon 64 -suorittimissa ja Intel Prescott-ytimellisissä Pentium 4 -suorittimissa.
* Segmentoitu muisti ei ole enää tuettu. Muistisivujen käyttö on tyypillisempää ja mahdollistaa yksinkertaisemman ohjelmoinnin sekä tehokkaamman moniprosessoinnin.

Ohjelmien suorituksessa *long mode* -tilassa on käytössä uusi ABI, muutoin käytössä on vanha yhteensopivuustila.

## Jatkokehitys

AMD64-yhteensopiva 64-bittinen käskykanta vaati jo määritelmien mukaan SSE ja SSE2 -tuen. 32-bittistä liukulukukäskykantaa x87 tai MMX-käskyjä ei vaadita, mutta kaikki suorittimet toteuttavat ne silti.

Käskykantaa on sittemmin laajennettu vielä SSE3- ja SSE4-käskyillä ja AVX-käskyillä laajentamalla  SIMD-rekisterit 256-bittisiksi, joilla voi laskea neljää 64-bittistä liukulukua tai kahdeksaa 32-bittistä liukulukua rinnan. AVX2 eli Haswell New Instructions mahdollisti kokonaislukujen käsittelyn 256-bittisissä SIMD-rekistereissä.

AVX/AVX2-käskyt toteuttavaa käskykantaa on nimitetty x86-64-v3 -mikroarkkitehtuuriksi. On tehty suunnitelmia, että tämä vuonna 2013 Intelin "Haswell"-prosessorissa julkaistu ja AMD Excavatorissa toteutettu käskykanta otettaisiin pienimmäksi vaadituksi käskykannaksi, etenkin palvelimiin suunnatuissa käyttöjärjestelmissä.

## Toimintatilat

## Lähteet

## Aiheesta muualla
* AMD64 Architecture Programmer’s Manual Volume 1: Application Programming (PDF) 
* AMD64 Architecture Programmer’s Manual Volume 2: System Programming (PDF)