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 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 == == 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