AMD64 -logo.

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.[1] Vanhoja 16- ja 32-bittisiä real mode- ja protected mode-ohjelmia varten suorittimessa on vielä mukana niille tukea säilyttäen yhteensopivuuden vanhoille ohjelmille.[1] 64-bittiset ohjelmat suoritetaan long mode -tilassa.[1] Intelillä oli kilpaileva EM64T-arkkitehtuuri, jota Intel muokkasi täyteen AMD64-yhteensopivuuteen lisäämällä LAHF- ja SAHF-käskyt.[2][3]

Historia

AMD ilmoitti arkkitehtuurista vuonna 1999[4] ja julkaisi määrittelyn vuonna 2000.[5] 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.[6][7] 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ä.[8] 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.[9][10]

Vuonna 2009 AMD ja Intel sopivat useita lakikiistoja ja erimielisyyksiä jatkaen ristiinlisensointisopimuksia.[11][12]

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.[13]

  • Enemmän rekistereitä. Yleiskäyttöisten rekisterien määrä on nostettu IA-32:n kahdeksasta kuuteentoista.[13]
  • Suurempi osoiteavaruus. Virtuaalisen osoiteavaruuden kokoa on kasvatettu 32 bitistä 48 bittiin.[13] 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.[13] Tämä mahdollístaa osoiteriippumattoman koodin.
  • SSE-käskykanta. AMD64-arkkitehtuuri sisältää SSE2-käskykantalaajennuksen x87- ja MMX-käskyjen lisäksi.[13]
  • 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.[14][15][16]
  • Segmentoitu muisti ei ole enää tuettu. Muistisivujen käyttö on tyypillisempää ja mahdollistaa yksinkertaisemman ohjelmoinnin sekä tehokkaamman moniprosessoinnin.[17]

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

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.[19]

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ä.[20]

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
Legacy
Mode
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

  1. a b c AMD 64-bit architecture (x86-64) hardwaresecrets.com. 27.10.2004. Viitattu 20.9.2020. (englanniksi)
  2. Intel EM64T Technology Explained hardwaresecrets.com. 15.12.2005. Viitattu 19.9.2020. (englanniksi) 
  3. Tony Smith: Intel tweaks EM64T for full AMD64 compatibility theregister.com. 23.8.2005. Viitattu 7.1.2024. (englanniksi)
  4. AMD Discloses New Technologies At Microporcessor Forum amd.com. 5.10.1999. Arkistoitu Viitattu 19.9.2020. (englanniksi)
  5. AMD Releases x86-64™ Architectural Specification; Enables Market Driven Migration to 64-Bit Computing amd.com. 10.8.2000. Arkistoitu Viitattu 19.9.2020. (englanniksi)
  6. https://www.custompc.com/intel/pentium-4
  7. https://www.informit.com/articles/article.aspx?p=366538
  8. https://www.informit.com/articles/article.aspx?p=366538
  9. AMD plays antitrust poker for Intel's X86 licence 3.2.2009. Incisive Media Limited. Arkistoitu 28.2.2009. Viitattu 26.2.2009.
  10. Patent Cross License Agreement Between AMD and Intel contracts.corporate.findlaw.com. 1.1.2001. Arkistoitu June 21, 2007. Viitattu 23.8.2009.
  11. AMD Intel Settlement Agreement sec.gov.
  12. Stephen Shankland and Jonathan E. Skillings: Intel to pay AMD $1.25 billion in antitrust settlement 12.11.2009. CNET. Arkistoitu 8.11.2012. Viitattu 24.4.2012.
  13. a b c d e Porting Linux to x86-64 (PDF) SuSE Labs. Viitattu 12.1.2017. (englanniksi) 
  14. AMD, Intel put antivirus tech into chips zdnet.com. 8.1.2004. Viitattu 19.9.2020. (englanniksi)
  15. Data Execution Prevention (PDF) h10032.www1.hp.com. Viitattu 19.9.2020. (englanniksi)
  16. x86 NX support lwn.net. 2.6.2004. Viitattu 20.9.2020. (englanniksi)
  17. AMD64 Technology AMD64 Architecture Programmer’s Manual Volume 2: System Programming AMD. Arkistoitu 3.3.2016. Viitattu 12.1.2017.
  18. System V Application Binary Interface (PDF) refspecs.linuxbase.org. 2.7.2012. Viitattu 20.9.2020. (englanniksi) 
  19. https://walbourn.github.io/directxmath-sse-sse2-and-arm-neon/
  20. https://www.phoronix.com/news/RedHat-RHEL10-x86-64-v3-Explore

Aiheesta muualla