x64 (også kjent som x86_64 og AMD64) er 64- bitsversjonen av x86 - instruksjonssettet . Den støtter en mye større mengde virtuelt minne og fysisk minne enn forgjengerne kunne, slik at programmer kan lagre store mengder data i minnet. x86-64 gir også 64-biters generelle registre og mange andre forbedringer. Spesifikasjonen ble laget av AMD , og er implementert av AMD, Intel , VIA og andre. Den er fullstendig bakoverkompatibel med 16 -biters og 32-biters x86-kode . [ 1 ] : 13–14 Fordi hele 16-biters og 32-biters x86-instruksjonssettet er implementert i maskinvare uten emulering, kan eksisterende x86 kjørbare programmer kjøres uten hastighets- eller kompatibilitetsstraff, [ 2 ] mens eksisterende applikasjoner som var omkodet for å dra nytte av den nye prosessorens funksjoner kan oppnå ytelsesforbedringer.
Før utgivelsen ble navnene "x86-64" og "x86_64" brukt for å referere til instruksjonssettet. Ved publisering kalte AMD den "AMD64". [ 3 ] Intel brukte opprinnelig navnene IA-32e og EM64T før de brukte "Intel 64" for implementeringen. Noen, inkludert Apple , [ 4 ] [ 5 ] [ 6 ] bruker "x86-64" og "x86_64", mens andre, spesielt Sun Microsystems [ 7 ] (nå Oracle Corporation) og Microsoft , [ 8 ] bruk "x64" mens BSD -familien av operativsystemer og mange Linux-distribusjoner [ 9 ] [ 10 ] bruker "AMD64".
AMD K8 -prosessoren var den første som implementerte denne arkitekturen; det var den første som gjorde et stort tillegg til x86-arkitekturen designet av et annet selskap enn Intel. Intel ble tvunget til å følge etter og gi ut en modifisert NetBurst -familie som var fullstendig programvarekompatibel med AMDs spesifikasjoner og design. VIA Technologies introduserte x86-64 på deres VIA Isaiah-arkitektur med VIA Nano .
x86-64-spesifikasjonen er forskjellig fra Intel Itanium-arkitekturen (tidligere "IA-64"), som ikke støtter x86-arkitekturens opprinnelige instruksjonssett.
Det er en arkitektur opprinnelig utviklet av AMD fra x86 -arkitekturen , og implementert under navnet AMD64 . Den første prosessoren (for personlige datamaskiner) med støtte for dette instruksjonssettet var Opteron , utgitt i april 2003 . Den har senere blitt implementert i flere varianter av Athlon 64 og senere.
Intel -selskapet utviklet en kompatibel arkitektur under navnet Intel 64 (tidligere EM64T ). Som har blitt brukt i Pentium 4 og senere mikroprosessorer til selskapet.
AMD x86-64 (senere omdøpt til AMD64) instruksjonssettet er en direkte utvidelse av x86-arkitekturen til en 64-bits arkitektur, motivert av det faktum at 4 GB minne som er direkte adresserbart av en 32-bits CPU-bit ikke lenger er nok for alle applikasjoner. Noen av endringene:
Driftsmodus | Kreves av operativsystemet | Rekompilering kreves | standard rutingstørrelse | standardstørrelse på operander | Registerutvidelser | Typisk registerstørrelse for generell bruk | |
---|---|---|---|---|---|---|---|
lang modus | 64 bit modus | Nyere 64-biters OS | Ja | 64 | 32 | Ja | 64 |
kompatibilitetsmodus _ |
Nei | 32 | Nei | 32 | |||
16 | 16 | 16 | |||||
Arvemodus _ |
beskyttet modus | Eldre 32-biters OS | Nei | 32 | 32 | Nei | 32 |
16 | 16 | ||||||
virtuell 8086-modus | 16 | 16 | 16 | ||||
kongelig modus | Eldre 16 bit OS |
Det er to primære driftsmoduser for denne arkitekturen:
Lang modusDen brukes av noen BSD - er, GNU/Linux (x86_64), Solaris 10 og av 64-biters utgaver av Windows XP Professional, Windows Vista, Windows 7 og Windows 8.
Siden instruksjonssettet er det samme, er det ingen stor straff ved å kjøre x86-kode. Dette er ikke tilfellet på Intel IA-64- arkitekturen , der forskjeller i den underliggende ISA betyr at å kjøre 32-bits kode tilsvarer å bruke en helt annen prosessor. Uansett, på AMD 64 kan 32-bits x86-applikasjoner fortsatt ha nytte av en 64-bits rekompilering. De ekstra registrene som er tilgjengelige i 64-bits kode kan brukes av en kompilator på høyt nivå for optimalisering.
Ved å bruke lang modus kan et 64-biters operativsystem kjøre både 32-biters og 64-biters applikasjoner samtidig. En x86-64 inkluderer også innebygd støtte for å kjøre x86 16-bits applikasjoner. Microsoft har eksplisitt ekskludert støtte for 16-bits applikasjoner i x64-utgaven av Windows XP Professional på grunn av problemer med å få 16-biters x86-kode til å fungere med WoW64- emulatoren .
ArvemodusModusen som brukes av 16-biters operativsystemer, for eksempel MS-DOS , og 32-biters operativsystemer, for eksempel Windows XP . I denne modusen kan bare 16-biters eller 32-biters kode utføres. 64-biters operativsystemer som Windows XP Professional x64 og Windows Server 2003 x64 vil ikke kjøre.
AMD64 representerer en endring fra fortiden til AMD hvis oppførsel var å følge Intel -standardene , selv om den opprettholder den tidligere oppførselen til Intel ved å utvide arkitekturen til x86 , fra 16-bit 8086 til 32-bit 80386 , alltid uten å eliminere bakoverkompatibilitet. AMD64-arkitekturen utvider 32-bits x86-arkitekturen ( IA-32 ) ved å legge til 64-bits registre, med fulle 32-biters og 16-biters kompatibilitetsmoduser for eksisterende programvare. Selv 64-bits modus tillater bakoverkompatibilitet, noe som gjør det enkelt for x86-verktøy som kompilatorer å bli portert til AMD64-arkitekturen med minimal innsats. AMD64-arkitekturen har funksjoner som NX-biten .
ImplementeringerFølgende prosessorer implementerer AMD64-arkitekturen:
Intel 64 (tidligere kjent som EM64T ) er Intels implementering av x86-64-teknologi.
HistorikkI lang tid i historien har AMD produsert og sendt prosessorer basert på de originale Intel-designene, men i en vri av historien tok Intel, som så muligheten, i bruk AMDs x86-64-arkitektur, skapt som en forlengelse av AMDs x86-64-arkitektur. Intels egen serie med x86 -prosessorer. Ettersom AMD senere ga nytt navn til sin arkitektur til AMD64, endret Intel også deres til Intel 64.
ImplementeringerDenne arkitekturen er implementert i følgende prosessormodeller:
|
|
Selv om det er et høyt nivå av kompatibilitet på binært nivå, kan det finnes mindre forskjeller mellom de to instruksjonssettene. Et mindre eksempel er tillegget av CMPXCHG16B-instruksjonen (bytte to 64-bits ord ), en utvidelse av CMPXCHG8B-instruksjonen som finnes i de fleste x86-prosessorer på markedet; tidlige AMD-prosessorer hadde ikke denne instruksjonen, så alle EM64T-prosessorer inkluderte den.