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.https://www.custompc.com/intel/pentium-4 https://www.informit.com/articles/article.aspx?p=366538 
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ä.https://www.informit.com/articles/article.aspx?p=366538 
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 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 ohjelmalaskuriin (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.https://walbourn.github.io/directxmath-sse-sse2-and-arm-neon/ 

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ä.https://www.phoronix.com/news/RedHat-RHEL10-x86-64-v3-Explore 

 Toimintatilat 

 Toimintatila Vaadittu käyttöjärjestelmän tyyppi Sovellusten uudelleenkääntäminen tarvitaan Osoitteen oletuskoko Operandin oletuskoko Rekisterilaajennukset Tyypillinen yleiskäyttöisen rekisterin koko Long mode 64-bittinen tila Uusi 64-bittinen käyttöjärjestelmä kyllä 64 32 kyllä 64 Yhteensopivuustila ei 32 ei 32 16 16 16 LegacyMode Suojattu tila Vanha 32-bittinen käyttöjärjestelmä ei 32 32 ei 32 16 16 Virtuaalinen 8086-tila 16 16 16 Reaalitila Vanha 16-bittinen käyttöjärjestelmä

 Lähteet 

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

Luokka:Suoritinarkkitehtuurit
Luokka:AMD