X86-64

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 11 januari 2019; kontroller kräver 22 redigeringar .

x86-64 (även AMD64/Intel64/EM64T) är en 64-bitarsversion (ursprungligen en förlängning) av x86 - arkitekturen , utvecklad av AMD och introducerad 2000 [1] , som gör att program kan köras i 64-bitarsläge.

Det är en förlängning av x86-arkitekturen och är nu en version av x86-arkitekturen som är nästan helt bakåtkompatibel med 32-bitarsversionen av x86-arkitekturen, nu känd som IA-32 .

Microsoft och Oracle använder termen "x64" för att referera till den här versionen av x86-arkitekturen, men katalogen som innehåller filerna för arkitekturen på 64-bitars Microsoft Windows kallas "amd64" ("i386" för x86 respektive). Detta observeras också i arkiven för de flesta Linux- distributioner.

x86-64-instruktionsuppsättningen stöds för närvarande:

Tillämpade namn

Det finns följande namnkonventioner för denna 64-bitars x86-version:

För närvarande är de vanligaste namnen för 64-bitarsversionen av x86: "x64", "x86-64" och "AMD64".

Ibland vilseleder omnämnandet av AMD användare, i den mån de vägrar att använda distributioner av inhemska versioner av operativsystemet, med argumentet att AMD-versionen inte kommer att fungera på deras Intel-processor - i själva verket använder mjukvarudistributörer namnet amd64 bara för att det det var AMD som banade väg för utvecklingen av 64-bitarsversionen av x86.

Ofta förväxlar användare x86-64-arkitekturen med IA-64 , laddar av misstag ned programvara för denna arkitektur och upptäcker sedan att programmet inte startar. För att undvika sådana fel bör man komma ihåg att Intel 64 och IA-64 är helt olika, inkompatibla mikroprocessorarkitekturer. Det senare är inkompatibelt med x86-64.
Representanter för Intel 64:

Representanter för IA-64: Itanium och Itanium 2 familjer .

Funktionssätt

Processorer med denna arkitektur stöder två driftlägen: Långt läge ("långt" läge) och Legacy läge ("ärvt" - kompatibilitetsläge med 32-bitars x86).

Långt läge

Läget "Long" är "native" för AMD64-processorer. Detta läge gör det möjligt att dra full nytta av x86-64-arkitekturen. Det här läget kräver alla 64-bitars operativsystem (till exempel 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-bitars varianter av UNIX -liknande system GNU/Linux , FreeBSD , OpenBSD , NetBSD (rena 64-bitars builds har dock möjlighet att köra 32-bitars applikationer), Solaris (blandat 32/64 build med olika kärnor för 32-bitars och 64-bitars processorer), Mac OS X (blandat 32/64-byggd med 32-bitars kärna, från och med version 10.4.7).

Detta läge låter dig köra 64-bitarsprogram. Även (för bakåtkompatibilitet) tillhandahålls stöd för exekvering av 32-bitars kod, till exempel 32-bitars applikationer (naturligtvis kommer 32-bitars program, även när de körs på ett 64-bitarssystem, inte att kunna använda 64 -bitars systembibliotek och vice versa). För att utföra denna uppgift tillhandahåller de flesta 64-bitars operativsystem två uppsättningar av obligatoriska system - API :er: en för inbyggda 64-bitars applikationer och en för 32-bitarsprogram (samma teknik som används av tidiga 32-bitars system som Windows 95 och Windows NT  för att köra 16-bitarsprogram).

I det "långa" läget avskaffas ett antal "rudiment" av x86-32- arkitekturen , i synnerhet, såsom det virtuella 8086 -läget , den segmenterade minnesmodellen (det är dock fortfarande möjligt att använda FS- och GS-segment, som är användbar för att snabbt hitta viktig tråddata vid byte av uppgifter ), multitasking av hårdvara , samt ett antal kommandon som både implementerar de avvecklade funktionerna och fungerar med BCD- nummer, som praktiskt taget inte användes i nya program. "Lång"-läget aktiveras genom att ställa in CR0.PG-flaggan, som används för att aktivera personsöknings- MMU (förutsatt att sådan omkoppling är aktiverad (EFER.LME=1), annars kommer den helt enkelt att aktivera MMU i "legacy"-läge ). Således är det omöjligt att exekvera en 64-bitars kod med en förbjuden personsökning. Detta skapar vissa svårigheter vid programmering, eftersom när du byter från "långt" till "legacy" läge och vice versa (till exempel för att anropa BIOS- eller DOS -funktioner, virtuell maskinövervakare , etc.), krävs en dubbel återställning av MMU, för vilken växlingskoden måste finnas på den identiskt renderade sidan.

Legacy Mode

Detta "legacy"-läge tillåter x86-64-processorn att exekvera instruktioner för x86-processorer, och realiserar därmed full kompatibilitet med 32-bitars kod och 32-bitars operativsystem för x86. I det här läget beter sig processorn exakt som en x86-processor (som en Athlon eller Pentium III). Funktionerna och egenskaperna som tillhandahålls av x86-64-arkitekturen (till exempel 64-bitars register) är naturligtvis inte tillgängliga i detta läge. I det här läget fungerar inte 64-bitars program och operativsystem.

Arkitektoniska egenskaper

AMD:s x86-64-instruktionsuppsättning (senare omdöpt till AMD64) är en förlängning av Intel IA-32 (x86-32)-arkitekturen. Den huvudsakliga utmärkande egenskapen hos AMD64 är stöd för 64-bitars allmänna register, 64-bitars aritmetiska och logiska operationer på heltal och 64-bitars virtuella adresser. För att adressera nya register för kommandon introducerades de så kallade "registerförlängningsprefixen", för vilka intervallet av koder 40h-4Fh valdes, som används för INC <register> och DEC <register> kommandon i 32-bitars lägen. INC- och DEC-kommandona i 64-bitarsläge måste kodas i den mer allmänna tvåbyteformen.

x86-64-arkitekturen har:

Segmentmodell för minnesorganisation

Under utvecklingen av AMD64-arkitekturen (AMD-implementeringar av x86-64), bestämde sig AMD -ingenjörer för att göra sig av med det huvudsakliga "rudimentet" av x86-arkitekturen för alltid - en segmenterad minnesmodell som har stöds sedan 8086 . Men på grund av detta, när de utvecklade den första x86-64-versionen av deras virtualiseringsprodukt , stötte VMware - programmerare på oöverstigliga svårigheter med att implementera en virtuell maskin för 64-bitars gästsystem [2] : eftersom programmet använde segmenteringsmekanism har denna uppgift blivit nästan olöslig.

AMD insåg misstaget och returnerade en begränsad version av den segmenterade minnesorganisationen, som började med revision D av AMD64-arkitekturen, som gjorde det möjligt att köra 64-bitars OS i virtuella maskiner . Intel följde inte detta exempel, och på sina processorer som inte stöder Intel VT (Intel Virtualization Technology) [3] hårdvaruvirtualiseringsverktyg är det omöjligt att köra en 64-bitars virtuell maskin [4] . För att kontrollera om en processor kan köra 64-bitars gästoperativsystem, tillhandahåller VMware ett speciellt verktyg med sina produkter.

Att starta och installera 64-bitars gästsystem för tillfället (sedan 2013) är redan möjligt (VMwares produkt - ESXi (arbetsstation, etc.) - stöder x86-64-arkitekturen).

Det bör noteras att de LAHF- och SAHF-kommandon som till en början föll under kniven, som också används aktivt av virtualiseringsprogramvara, sedan återfördes till kommandosystemet. Med spridningen av hårdvaruvirtualiseringsverktyg (Intel VT, AMD-V) kommer behovet av segmentering gradvis att försvinna.

Se även

Anteckningar

  1. AMD släpper x86-64™ arkitekturspecifikation; Möjliggör marknadsdriven migrering till 64-bitars beräkningar
  2. http://www.pagetable.com/?p=25 Arkiverad 18 juli 2011 på Wayback Machine "The AMD64 ... pensionerades ..det mesta av segmenteringen . Men detta bröt VMware. Även om VMware fortfarande kunde virtualisera 32-bitars operativsystem på AMD64-processorer, kunde de inte virtualisera 64-bitars operativsystem, eftersom de krävde segmentgränser."
  3. Intel® Virtualization Technology (Intel® VT  ) . Intel. Hämtad 14 maj 2020. Arkiverad från originalet 25 maj 2020.
  4. VMware Knowledge Base . kb.vmware.com. Hämtad 14 maj 2020. Arkiverad från originalet 27 maj 2020.

Länkar