close

X86-64

Gå til navigation Gå til søg
Image
AMD Opteron var den første CPU, der introducerede x86-64-udvidelserne i 2003.

x64 (også kendt som x86_64 og AMD64) er 64-bit versionen af ​​x86 - instruktionssættet . Den understøtter en meget større mængde virtuel hukommelse og fysisk hukommelse , end dens forgængere kunne, hvilket gør det muligt for programmer at gemme store mængder data i hukommelsen. x86-64 giver også 64-bit generelle registre og mange andre forbedringer. Specifikationen blev skabt af AMD og er blevet implementeret af AMD, Intel , VIA og andre. Den er fuldt bagudkompatibel med 16 -bit og 32-bit x86-kode . [ 1 ] ​: 13–14  Fordi det fulde 16-bit og 32-bit x86-instruktionssæt er implementeret i hardware uden nogen emulering, kan eksisterende x86-eksekverbare programmer køre uden nogen hastigheds- eller kompatibilitetsstraf, [ 2 ] mens eksisterende applikationer, der var omkodet for at drage fordel af den nye processors funktioner kan opnå ydeevneforbedringer.

Før udgivelsen blev navnene "x86-64" og "x86_64" brugt til at henvise til instruktionssættet. Efter offentliggørelsen kaldte AMD det "AMD64". [ 3 ] Intel brugte oprindeligt navnene IA-32e og EM64T, før de brugte "Intel 64" til implementeringen. Nogle, inklusive Apple , [ 4 ] ​[ 5 ] ​[ 6 ]​ bruger "x86-64" og "x86_64", mens andre, især Sun Microsystems [ 7 ]​ (nu Oracle Corporation) og Microsoft , [ 8 ] De brug "x64", mens BSD -familien af ​​operativsystemer og mange Linux-distributioner [ 9 ] [ 10 ] bruger "AMD64".

AMD K8- processoren var den første til at implementere denne arkitektur; det var den første, der lavede en større tilføjelse til x86-arkitekturen designet af et andet firma end Intel. Intel blev tvunget til at følge trop og frigive en modificeret NetBurst -familie , som var fuldt softwarekompatibel med AMD's specifikationer og design. VIA Technologies introducerede x86-64 på deres VIA Isaiah-arkitektur med VIA Nano .

x86-64-specifikationen er forskellig fra Intel Itanium-arkitekturen (tidligere "IA-64"), som ikke understøtter x86-arkitekturens oprindelige instruktionssæt.

Oversigt

Det er en arkitektur, der oprindeligt er udviklet af AMD fra x86- arkitekturen , og implementeret under navnet AMD64 . Den første processor (til personlige computere) med understøttelse af dette instruktionssæt var Opteron , udgivet i april 2003 . Det er efterfølgende blevet implementeret i flere varianter af Athlon 64 og senere.

Intel- firmaet udviklede en kompatibel arkitektur under navnet Intel 64 (tidligere EM64T ). Som er blevet brugt i virksomhedens Pentium 4 og senere mikroprocessorer .

Arkitekturbeskrivelse

AMD x86-64 (senere omdøbt AMD64) instruktionssættet er en direkte udvidelse af x86-arkitekturen til en 64-bit arkitektur, motiveret af det faktum, at de 4 GB hukommelse, der kan adresseres direkte af en 32-bit CPU-bit, ikke længere er nok til alle applikationer. Nogle af ændringerne:

  • Nye rekorder . Antallet af generelle registre er blevet øget fra 8 på x86-32- processorer til 16, og størrelsen af ​​alle disse registre er blevet øget fra 32 bit til 64 bit. Derudover er antallet af 128-bit MMX-registre (brugt til udvidede SIMD-instruktioner ) blevet øget fra 8 til 16. De ekstra registre øger ydeevnen.
  • Yderligere MMX (SSE) registre: Også antallet af 128-bit registre (brugt til SSE instruktioner ) er blevet øget fra 8 til 16.
  • Større adresseplads . På grund af 64-bit arkitekturen kan AMD64-arkitekturen adressere op til 16 exabyte hukommelse. Fremtidige implementeringer af AMD64-arkitekturen kan give op til 2 exabyte tilgængelig hukommelse. Hvis hukommelsessøgning bruges korrekt, kan 32-bit operativsystemer få adgang til nogle af de fysiske adresseudvidelser uden at skulle udføres i lang tilstand.
  • Instruktionsmarkør relativ dataadgang: Instruktioner kan nu lave referencer i forhold til instruktionsmarkøren (RIP-register). Dette giver dig mulighed for at oprette positionsuafhængig kode , der muliggør meget mere effektiv kode i dynamiske biblioteker og kode indlæst under kørsel.
  • Hurtigere systemopkald . Fordi segmentering ikke understøttes i 64-bit tilstand, har systemopkald ikke de forsinkelser, der er forbundet med lagring og hentning af segmenteringsoplysninger, og de behøver ikke at udføre de nødvendige beskyttelsestjek på segmenteringsniveau. Derfor har AMD introduceret en ny systemopkaldsgrænseflade, som kun tilgås ved hjælp af "SYSCALL"-instruktionen. Selvom operativsystemer stadig kan bruge systemafbrydelser til systemopkald, er det hurtigere at bruge "SYSCALL" i 64-bit tilstand.
  • SSE instruktioner . AMD 64-arkitekturen inkluderer Intel SSE- og SSE2 -udvidelserne , den seneste cpu inkluderer SSE3- instruktionerne og nogle også SSE4 . x86 og MMX instruktioner er også understøttet .
  • Bit NX . NX-bitten er en processorfunktion, der gør det muligt for operativsystemet at forbyde udførelse af kode i dataområdet, hvilket forbedrer sikkerheden. Denne funktion er tilgængelig i 32-bit og 64-bit tilstande og understøttes af Linux , Solaris , Windows XP SP2 , Windows Server 2003 SP1 .

Driftstilstande

Driftstilstand Påkrævet af operativsystemet Genkompilering påkrævet standard routingstørrelse standardstørrelse på operander Registry Extensions Typisk registerstørrelse til almindelige formål
lang tilstand 64 bit tilstand Nyere 64-bit OS Ja 64 32 Ja 64

kompatibilitetstilstand _
Ingen 32 Ingen 32
16 16 16
Arvetilstand
_
beskyttet tilstand Ældre 32-bit OS Ingen 32 32 Ingen 32
16 16
virtuel 8086-tilstand 16 16 16
kongelig tilstand Ældre 16 bit OS

Forklaring af funktionsmåden

Der er to primære driftsformer for denne arkitektur:

Lang tilstand

Det bruges af nogle BSD'er , GNU/Linux (x86_64), Solaris 10 og af 64-bit udgaver af Windows XP Professional, Windows Vista, Windows 7 og Windows 8.

Da instruktionssættet er det samme, er der ingen større straf ved at udføre x86-kode. Dette er ikke tilfældet på Intel IA-64 arkitekturen , hvor forskelle i den underliggende ISA betyder, at kørsel af 32-bit kode svarer til at bruge en helt anden processor. Under alle omstændigheder kan 32-bit x86-applikationer på AMD 64 stadig drage fordel af en 64-bit rekompilering. De ekstra registre, der er tilgængelige i 64-bit kode, kan bruges af en compiler på højt niveau til optimering.

Ved at bruge lang tilstand kan et 64-bit operativsystem køre både 32-bit og 64-bit applikationer samtidigt. En x86-64 inkluderer også indbygget understøttelse til at køre x86 16-bit applikationer. Microsoft har eksplicit udelukket understøttelse af 16-bit-applikationer i x64-udgaven af ​​Windows XP Professional på grund af problemer med at få 16-bit x86-kode til at fungere med sin WoW64- emulator .

Arvetilstand

Den tilstand, der bruges af 16-bit operativsystemer, såsom MS-DOS , og 32-bit operativsystemer, såsom Windows XP . I denne tilstand kan kun 16-bit eller 32-bit kode udføres. 64-bit operativsystemer såsom Windows XP Professional x64 og Windows Server 2003 x64 vil ikke køre.

AMD64

Markedsundersøgelse

AMD64 repræsenterer en ændring fra fortiden for AMD, hvis adfærd var at følge Intel -standarderne , selvom den bibeholder Intels tidligere adfærd ved at udvide arkitekturen for x86 , fra 16-bit 8086 til 32-bit 80386 , altid uden at eliminere bagudkompatibilitet. AMD64-arkitekturen udvider 32-bit x86-arkitekturen ( IA-32 ) ved at tilføje 64-bit registre med fuld 32-bit og 16-bit kompatibilitetstilstande for eksisterende software. Selv 64-bit-tilstand tillader bagudkompatibilitet, hvilket gør det nemt for x86-værktøjer som compilere at blive porteret til AMD64-arkitekturen med minimal indsats. AMD64-arkitekturen har funktioner såsom NX-bit .

Implementeringer

Følgende processorer implementerer AMD64-arkitekturen:

Intel 64

Intel 64 (tidligere kendt som EM64T ) er Intels implementering af x86-64-teknologi.

Historie

I lang tid i historien har AMD produceret og sendt processorer baseret på de originale Intel-designs, men i et tvist af historien tog Intel, der så muligheden, AMDs x86-64-arkitektur, skabt som en udvidelse af AMDs x86-64-arkitektur. Intels egen serie af x86 - processorer. Da AMD senere omdøbte sin arkitektur til AMD64, omdøbte Intel ligeledes deres til Intel 64.

Implementeringer

Denne arkitektur er implementeret i følgende processormodeller:

  • Pentium 4 720 Extreme Edition
  • Pentium 4 630
  • 6xx serien
  • Pentium 4 524
  • 5x6 serie
  • 5x1 serie
  • Celeron D 355
  • Celeron D 331
  • 3x6 serien
  • 3x1 serie

Forskelle mellem AMD64 og Intel 64

Selvom der er et højt niveau af kompatibilitet på binært niveau, kan der findes mindre forskelle mellem de to instruktionssæt. Et mindre eksempel er tilføjelsen af ​​CMPXCHG16B-instruktionen (udskiftning af to 64-bit- ord ), en udvidelse af CMPXCHG8B-instruktionen, der findes i de fleste x86-processorer på markedet; tidlige AMD-processorer havde ikke denne instruktion, så alle EM64T-processorer inkluderede den.

Se også

Referencer

  1. AMD Corporation (september 2012). "Bind 2: Systemprogrammering" (PDF) . AMD64 Architecture Programmer's Manual . AMDCorporation . Hentet 17. februar 2014 . 
  2. IBM Corporation (6. september 2007). "IBM WebSphere Application Server 64-bit ydeevne afmystificeret" . s. 14 . Hentet 9. april 2010 . Figur 5, 6 og 7 viser også 32-bit versionen af ​​WAS kører applikationer med fuld native hardware ydeevne på POWER og x86-64 platforme. I modsætning til nogle 64-bit processorarkitekturer emulerer POWER- og x86-64-hardwaren ikke 32-bit-tilstand. Derfor kan applikationer, der ikke drager fordel af 64-bit funktioner, køre med fuld ydeevne på 32-bit versionen af ​​WebSphere, der kører på ovennævnte 64-bit platforme. » 
  3. "Debian AMD64 FAQ" . DebianWiki . Hentet 3. maj 2012 . 
  4. ^ "x86-64 kodemodel" . Æble . Hentet 2012-11-23 . 
  5. arch(1)  Generelle kommandoer i Darwin BSD- og Mac OS X - manualen
  6. Kevin Van Vechten (9. august 2006). "re: Intel XNU fejlrapport" . Darwin-dev-mailingliste . AppleComputer . Arkiveret fra originalen den 1. februar 2020 . Hentet 5. oktober 2006 . "Kernen og udviklerværktøjer er standardiseret på "x86_64" for navnet på Mach-O-arkitekturen". 
  7. ^ "Solaris 10 på AMD Opteron" . Oracle . Hentet 9. december 2010 . 
  8. ^ "Microsoft 64-bit computing" . Microsoft. Arkiveret fra originalen den 12. december 2010 . Hentet 9. december 2010 . 
  9. ^ "AMD64 Port" . Debian . Hentet 2012-11-23 . 
  10. ^ "Gentoo/AMD64-projekt" . Gentoo projekt. Arkiveret fra originalen den 3. juni 2013 . Hentet 27. maj 2013 . 

Eksterne links