X86-64

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 11. januar 2019; checks kræver 22 redigeringer .

x86-64 (også AMD64/Intel64/EM64T) er en 64-bit version (oprindeligt en udvidelse) af x86 - arkitekturen , udviklet af AMD og introduceret i 2000 [1] , som tillader programmer at køre i 64-bit-tilstand.

Det er en udvidelse af x86-arkitekturen og er nu en version af x86-arkitekturen, der er næsten fuldstændig bagudkompatibel med 32-bit versionen af ​​x86-arkitekturen, nu kendt som IA-32 .

Microsoft og Oracle bruger udtrykket "x64" til at henvise til denne version af x86-arkitekturen, men den mappe, der indeholder filerne til arkitekturen på 64-bit Microsoft Windows , kaldes "amd64" ("i386" for henholdsvis x86). Dette observeres også i lagrene i de fleste Linux- distributioner.

x86-64-instruktionssættet understøttes i øjeblikket:

Anvendte navne

Der er følgende navnekonventioner for denne 64-bit x86-version:

I øjeblikket er de mest almindelige navne for 64-bit versionen af ​​x86: "x64", "x86-64" og "AMD64".

Nogle gange vildleder omtalen af ​​AMD brugere, i det omfang de nægter at bruge distributioner af native versioner af operativsystemet, idet de hævder, at AMD-versionen ikke vil fungere på deres Intel-processor - faktisk bruger softwaredistributører kun navnet amd64, fordi det det var AMD, der var banebrydende i udviklingen af ​​64-bit versionen af ​​x86.

Ofte forveksler brugere x86-64-arkitekturen med IA-64 , ved en fejl at downloade software til denne arkitektur, og opdager derefter, at programmet ikke starter. For at undgå sådanne fejl skal det huskes, at Intel 64 og IA-64 er helt forskellige, inkompatible mikroprocessorarkitekturer. Sidstnævnte er inkompatibel med x86-64.
Repræsentanter for Intel 64:

Repræsentanter for IA-64: Itanium og Itanium 2 familier .

Driftsmåder

Processorer af denne arkitektur understøtter to driftstilstande: Lang tilstand ("lang" tilstand) og Legacy tilstand ("arvet" - kompatibilitetstilstand med 32-bit x86).

Lang tilstand

"Lang"-tilstand er "native" for AMD64-processorer. Denne tilstand gør det muligt at udnytte x86-64-arkitekturen fuldt ud. Denne tilstand kræver ethvert 64-bit operativsystem (f.eks. Windows Server 2003/2003R2/2008/2008R2/2012, Windows XP Professional x64 Edition, Windows Vista x64, Windows 7/8/8.1/10/11 x64 eller 64-bit varianter af UNIX - lignende systemer GNU/Linux , FreeBSD , OpenBSD , NetBSD (rene 64-bit builds har dog mulighed for at køre 32-bit applikationer), Solaris (blandet 32/64 build med forskellige kerner til 32-bit og 64-bit processorer), Mac OS X (blandet 32/64 build med 32-bit kerne, startende fra version 10.4.7).

Denne tilstand giver dig mulighed for at køre 64-bit programmer. Der er også (for bagudkompatibilitet) understøttelse til udførelse af 32-bit kode, for eksempel 32-bit applikationer (naturligvis vil 32-bit programmer, selv når de kører på et 64-bit system, ikke være i stand til at bruge 64 -bit-systembiblioteker og omvendt). For at udføre denne opgave leverer de fleste 64-bit operativsystemer to sæt påkrævede system- API'er : et til native 64-bit applikationer og et til 32-bit programmer (den samme teknik, der blev brugt af tidlige 32-bit systemer som Windows 95 og Windows NT  til at køre 16-bit programmer).

I den "lange" tilstand er en række "rudimenter" af x86-32- arkitekturen afskaffet, især, såsom den virtuelle 8086 -tilstand , den segmenterede hukommelsesmodel (det er dog fortsat muligt at bruge FS- og GS-segmenter, som er nyttig til hurtigt at finde vigtige tråddata ved skift af opgaver ), hardware multitasking samt en række kommandoer, der både implementerer de udgåede funktioner og arbejder med BCD- numre, som praktisk talt ikke blev brugt i nye programmer. "Lang"-tilstanden aktiveres ved at indstille CR0.PG-flaget, som bruges til at aktivere personsøgnings - MMU (forudsat at sådan omskiftning er aktiveret (EFER.LME=1), ellers vil den blot aktivere MMU'en i "legacy"-tilstand ). Det er således umuligt at udføre en 64-bit kode med en forbudt personsøgning. Dette skaber visse vanskeligheder ved programmering, da når der skiftes fra "lang" til "legacy" tilstand og omvendt (for eksempel for at kalde BIOS- eller DOS -funktioner, virtuel maskinemonitor osv .), kræves en dobbelt nulstilling af MMU, for hvilken switch-koden skal være på den identisk gengivede side.

Ældre tilstand

Denne "legacy"-tilstand gør det muligt for x86-64-processoren at udføre instruktioner til x86-processorer og realiserer dermed fuld kompatibilitet med 32-bit kode og 32-bit operativsystemer til x86. I denne tilstand opfører processoren sig nøjagtigt som en x86-processor (såsom en Athlon eller Pentium III). Funktionerne og egenskaberne fra x86-64-arkitekturen (for eksempel 64-bit registre) er naturligvis ikke tilgængelige i denne tilstand. I denne tilstand vil 64-bit programmer og operativsystemer ikke fungere.

Arkitektoniske træk

AMDs x86-64 instruktionssæt (senere omdøbt til AMD64) er en udvidelse af Intel IA-32 (x86-32) arkitekturen. Det vigtigste kendetegn ved AMD64 er understøttelse af 64-bit generelle registre, 64-bit aritmetiske og logiske operationer på heltal og 64-bit virtuelle adresser. For at adressere nye registre for kommandoer blev de såkaldte "registerudvidelsespræfikser" introduceret, for hvilke intervallet af koder 40h-4Fh blev valgt, brugt til INC <register> og DEC <register> kommandoer i 32-bit tilstande. INC- og DEC-kommandoerne i 64-bit-tilstand skal kodes i den mere generelle to-byte-form.

x86-64-arkitekturen har:

Segmentel model for hukommelsesorganisation

Mens de udviklede AMD64-arkitekturen (AMD-implementeringer af x86-64), besluttede AMD -ingeniører at gøre op med det vigtigste "rudiment" af x86-arkitekturen for altid - en segmenteret hukommelsesmodel, der er blevet understøttet siden 8086 . Men på grund af dette, da de udviklede den første x86-64-version af deres virtualiseringsprodukt , stødte VMware - programmører på uoverstigelige vanskeligheder med at implementere en virtuel maskine til 64-bit gæstesystemer [2] : siden programmet brugte segmenteringsmekanisme, er denne opgave blevet næsten uløseligt.

Da AMD indså fejlen, returnerede en begrænset version af den segmenterede hukommelsesorganisation, startende med revision D af AMD64-arkitekturen, som tillod at køre 64-bit OS i virtuelle maskiner . Intel fulgte ikke dette eksempel, og på dets processorer, der ikke understøtter Intel VT (Intel Virtualization Technology) [3] hardware virtualiseringsværktøjer , er det umuligt at køre en 64-bit virtuel maskine [4] . For at kontrollere, om en processor kan køre 64-bit gæste-OS'er, leverer VMware et særligt hjælpeprogram med sine produkter.

Lancering og installation af 64-bit gæstesystemer i øjeblikket (siden 2013) er allerede muligt (VMwares produkt - ESXi (arbejdsstation, etc.) - understøtter x86-64-arkitekturen).

Det skal bemærkes, at de LAHF- og SAHF-kommandoer, der oprindeligt faldt under kniven, som også bruges aktivt af virtualiseringssoftware, derefter blev returneret til kommandosystemet. Med udbredelsen af ​​hardwarevirtualiseringsværktøjer (Intel VT, AMD-V) vil behovet for segmentering gradvist forsvinde.

Se også

Noter

  1. AMD udgiver x86-64™ arkitektonisk specifikation; Aktiverer markedsdrevet migrering til 64-bit computing
  2. http://www.pagetable.com/?p=25 Arkiveret 18. juli 2011 på Wayback Machine "The AMD64 ... pensioneret ..det meste af segmentering . Men dette brød VMware. Mens VMware stadig kunne virtualisere 32 bit operativsystemer på AMD64 CPU'er, kunne de ikke virtualisere 64 bit operativsystemer, fordi de krævede segmentgrænser."
  3. Intel® Virtualization Technology (Intel® VT  ) . Intel. Hentet 14. maj 2020. Arkiveret fra originalen 25. maj 2020.
  4. VMware Knowledge Base . kb.vmware.com. Hentet 14. maj 2020. Arkiveret fra originalen 27. maj 2020.

Links