AMD64

AMD64 (även kallat x86-64, x86x64, x64 eller EM64T) är en 64-bitars processorarkitektur skapad av AMD. Det är en utökning av x86, som den även är bakåtkompatibel med. AMD64:s instruktionsuppsättning används i AMD:s processorer Athlon 64, Athlon 64 FX, Athlon 64 X2, Turion 64, Opteron, Phenom 64 X3 och Phenom 64 X4 (Phenom är tripple eller quad core).

Benämningen EM64T skapade Intel när även de lanserade processorer som använde arkitekturen. De är i praktiken helt kompatibla.

Arkitekturöversikt

Instruktionsuppsättningen x86-64 (senare omdöpt till AMD64) är en direkt förlängning av x86-arkitekturen till ett 64-bitarssystem. Det motiveras av att 4 GB, som är den övre gränsen för vad en 32-bitars CPU direkt kan adressera (varav hälften kan utnyttjas för användarprocesser i många vanliga operativsystem), inte längre är tillräckligt för alla applikationer. De främsta nyheterna är:

  • De generella registren breddas till 64 bitar vilket bland annat ger upp till 4 miljarder gånger så stor linjär adressrymd som med x86-32. I nuvarande implementationer kan AMD64 adressera 256 TB, i framtida upp till 2 EB (utökning av adressrymden via Intels PAE (Physical Address Extensions), är en metod som har avsevärda begränsningar jämfört med det större linjära adressutrymme som x86-64 ger). Bredare register kan även ge stora prestandahöjningar i vissa typer av program.
  • Fler generella register, nu totalt 16, och fler XMM-register för SSE-SSE3, även de totalt 16. Fler register underlättar för kompilatorer att generera bra kod och kan i särskilda tillämpningar ge betydligt effektivare exekvering.
  • Snabbare systemanrop. Eftersom segmentering inte används i 64-bitarsläge behöver segmentinformation inte sparas och återställas vid systemanrop, dessutom finns inte längre segmentskydd. Därför har AMD introducerat ett nytt interface för systemanrop, instruktionen SYSCALL. Det går att använda "mjukvaruavbrott" för systemanrop, även i 64-bitarsläge, men SYSCALL är snabbare. Intel har haft en funktion med liknande egenskaper sedan Pentium II, SYSENTER, vilket också används i exempelvis Windows XP.
  • Fler SSE-instruktioner. AMD64 implementerar Intels instruktioner för SSE2, nyare modeller även SSE3. Även x87- och MMX-instruktioner är implementerade för full kompatibilitet.

Exekveringslägen

ExekveringslägeKrav på OSApplikationer måste kompileras omDefault AdresstorlekDefault OperandstorlekRegister ExtensionsTypisk registerstorlek
Long Mode64-bit Mode64-bitars OSja6432ja64
Compatibility
Mode
nej32nej32
161616
Legacy
Mode
Protected Mode32-bitars OSnej3232nej32
1616
Virtual 8086 mode161616
Real Mode16-bitars OS

Förklaring av exekveringslägen

Den här arkitekturen har två huvudsakliga exekveringslägen:

Long Mode
Det huvudsakliga exekveringsläget för AMD64. Det kombinerar processorns eget 64-bitars läge och ett 32-bitars kompatibilitetsläge. Det tar också bort några sällan använda funktioner från 80386. Det används av 64-bitars operativsystem; bland de system stödjer Long Mode finns Linux, BSD-varianter, Solaris och Windows XP Professional x64 Edition.
Eftersom den grundläggande instruktionsupsättningen är oförändrad kan x86-kod exekveras utan emulering eller prestandaförlust, till skillnad från på Intels IA-64. Däremot kan även 32-bitars applikationer tjäna på att kompileras om särskilt för AMD64, eftersom den har fler register, vilket gör att en kompilator kan optimera koden bättre.
I Long Mode kan ett 64-bitars operativsystem köra 32-bitars och 64-bitars applikationer samtidigt. Dessutom har AMD64 stöd för att köra 16-bitars x86-kod. Trots det har Microsoft uttryckligen utelämnat 16-bitarssupport i Windows XP Professional x64 Edition på grund av problem med att köra 16-bitarskod i deras emulator WoW64, bland annat eftersom databredden för referenser i olika delar av fönsterhanteringen passerar de gränser som hade bibehållits för att upprätthålla kompatibiliteten med Win16.
Legacy Mode
I Legacy Mode kan 16- och 32-bitars operativsystem, som MS-DOS och Windows XP, köras. Här kan bara 16- och 32-bitars kod exekveras. 64-bitars program kan inte köras. Legacy Mode omfattar i sin tur alla typer av lägen som en traditionell x86-processor kan hantera.

Marknadsanalys

AMD64 representerar ett avsteg från AMD:s historia av att följa Intels standarder, men följer Intels tidigare sätt att utöka x86-arkitekturen från 16 (8086) till 32 (Intel 80386) bitar och vidare, utan att ta bort bakåtkompatibiliteten.

Det var länge en allmän uppfattning att 64-bitars RISC-processorer, exempelvis DEC Alpha, så småningom skulle komma att ersätta den ålderdomliga x86-arkitekturen, som är en avkomling till 8-bitarsprocessorer som 8085 och Z80. En av anledningarna till att detta inte skedde är de stora investeringar som genom åren gjorts i applikationer för x86-baserade system. Firmor som Intel, Cyrix, AMD och andra fann också snabbt olika sätt att applicera moderna konstruktionsprinciper, inspirerade av både RISC-principer och andra idéer, transparent, dvs. utan att ändra den grundläggande programmeringsmodellen på assemblernivå. Stora företag som Intel kan också använda mycket avancerade implementationstekniker på den fysikaliska nivån och på så sätt höja prestanda oavsett arkitektur. Vidare är maskinkod för x86 ganska kompakt, mycket på grund av ursprunget i 8-bitarsprocessorer, något som är en stor fördel när det gäller att utnyttja begränsade cache-minnen effektivt.

En annan anledning är att de värsta prestandaproblemen med de ursprungliga 8088 och 8087 processorerna, som adressgenerering i mikrokod och ett långsamt buss-interface, förbättrades avsevärt redan med 80186 och 80286. Tre år senare, 1985, lanserades 80386 som utökande den begränsade linjära adressrymden och dessutom kunde dölja (den starkt kritiserade) segmenteringen helt och hållet. Därefter följde en rad konstruktioner med successivt allt mer parallellt arbetande exekveringsenheter (486, Pentium, P6, K7, etc). De kvarvarande prestandabegränsande egenheterna, som de stackade x87-registren, har också till stor del faktoriserats ut (med "register renaming" och andra tekniker) och på senare tid ersatts (av SSE2) utan att förlora bakåtkompatibilitet.

AMD64 utökar slutligen x86-arkitekturen till en fullständig 64-bitars miljö med fullständig bakåtkompatibilitet för äldre mjukvara. Medan 32-bitarsläget är helt bakåtkompatibilitet är även 64-bitarsläget till största delen bakåtkompatibelt, detta gör det enkelt att anpassa gamla kompilatorer och andra verktyg till 64-bitarsläge.

Implementationer

Följande processorer implementerar AMD64-arkitekturen:

  • AMD K8
    • AMD Athlon 64
    • AMD Athlon 64 X2
    • AMD Athlon 64 FX
    • AMD Opteron
    • AMD Turion 64
    • AMD Sempron (bara 'Palermo'-modellerna använder "E6 stepping")
    • AMD Phenom 64 X3
    • AMD Phenom 64 X4
  • AMD K10
    • AMD Phenom2 64 X3
    • AMD Phenom2 64 X4
  • EM64T (Intels version)
    • Intel Xeon (några modeller från 'Nocona')
    • Intel Pentium 4 (några modeller från 'Prescott')
    • Intel Pentium D
    • Intel Pentium 4 Extreme Edition
    • Intel Core 2
    • Intel Core i3
    • Intel Core i5
    • Intel Core i7

Externa länkar

Media som används på denna webbplats

Text document with red question mark.svg
A text document icon with a red question mark overlaid. This icon is intended to be used in e.g. "unverified content" templates on Wikipedia.