Az x86-64 (más néven AMD64/Intel64/EM64T) az AMD által kifejlesztett és 2000-ben bevezetett x86 architektúra 64 bites változata (eredetileg kiterjesztése) [1] , amely lehetővé teszi a programok 64 bites módban történő futtatását.
Ez az x86 architektúra kiterjesztése , és ma már az x86 architektúra olyan változata, amely szinte teljesen visszafelé kompatibilis az x86 architektúra 32 bites verziójával, amely ma IA-32 néven ismert .
A Microsoft és az Oracle az „x64” kifejezést használja az x86 architektúra ezen verziójára, de a 64 bites Microsoft Windows rendszeren az architektúra fájljait tartalmazó könyvtár neve „amd64” („i386” x86 esetén). Ez a legtöbb Linux disztribúció tárolójában is megfigyelhető .
Az x86-64 utasításkészlet jelenleg támogatott:
Ehhez a 64 bites x86-os verzióhoz a következő elnevezési szabályok vonatkoznak:
Jelenleg az x86 64 bites verziójának leggyakoribb nevei: "x64", "x86-64" és "AMD64".
Néha az AMD említése félrevezeti a felhasználókat, olyan mértékben, hogy megtagadják az operációs rendszer natív verzióinak disztribúcióinak használatát, azzal érvelve, hogy az AMD verzió nem fog működni az Intel processzorukon – valójában a szoftverterjesztők csak azért használják az amd64 nevet, mert az AMD volt az úttörő az x86 64 bites verziójának fejlesztésében.
A felhasználók gyakran összetévesztik az x86-64 architektúrát az IA-64-gyel , tévedésből letöltik a szoftvert ehhez az architektúrához, majd azt tapasztalják, hogy a program nem indul el. Az ilyen hibák elkerülése érdekében emlékezni kell arra, hogy az Intel 64 és az IA-64 teljesen különböző, nem kompatibilis mikroprocesszor-architektúrák. Ez utóbbi nem kompatibilis az x86-64-gyel.
Az Intel 64 képviselői:
Az IA-64 képviselői: Itanium és Itanium 2 családok .
Az ilyen architektúrájú processzorok két működési módot támogatnak: Hosszú mód ("hosszú" mód) és Legacy mód ("örökölt" - kompatibilitási mód 32 bites x86-tal).
A „hosszú” mód „natív” az AMD64 processzorokhoz. Ez a mód lehetővé teszi az x86-64 architektúra teljes előnyeinek kihasználását. Ez a mód bármilyen 64 bites operációs rendszert igényel (például Windows Server 2003/2003R2/2008/2008R2/2012, Windows XP Professional x64 Edition, Windows Vista x64, Windows 7/8/8.1/10/11 x64 vagy 64 bites UNIX - szerű rendszerek változatai GNU/Linux , FreeBSD , OpenBSD , NetBSD (a tiszta 64 bites buildek azonban képesek 32 bites alkalmazások futtatására), Solaris (vegyes 32/64 build különböző kernelekkel 32 bites és 64 bites processzorok), Mac OS X (vegyes 32/64 build 32 bites kernellel, a 10.4.7-es verziótól kezdve).
Ez a mód lehetővé teszi 64 bites programok futtatását. Szintén (a visszafelé kompatibilitás érdekében) támogatás biztosított a 32 bites kód végrehajtásához, például a 32 bites alkalmazásokhoz (természetesen a 32 bites programok még 64 bites rendszeren sem használhatják a 64 bites kódot -bit rendszerkönyvtárak, és fordítva). A feladat elvégzéséhez a legtöbb 64 bites operációs rendszer két szükséges rendszer API -t biztosít : egyet a natív 64 bites alkalmazásokhoz és egyet a 32 bites programokhoz (ugyanaz a technika, amelyet a korai 32 bites rendszerek, például a Windows 95 és a Windows használnak. NT 16 bites programok futtatásához).
A "hosszú" módban az x86-32 architektúra számos "alapeleme" megszűnik, különösen, mint például a virtuális 8086 mód , a szegmentált memóriamodell (azonban továbbra is lehetséges az FS és GS szegmensek használata, amelyek hasznos a fontos száladatok gyors megtalálásához feladatok váltása során ), hardveres többfeladatos , valamint számos olyan parancs, amelyek megvalósítják a megszűnt funkciókat, és működnek a BCD számokkal, amelyeket gyakorlatilag nem használtak az új programokban. A "hosszú" mód a CR0.PG jelző beállításával aktiválható, amely a lapozó MMU engedélyezésére szolgál (feltéve, hogy az ilyen váltás engedélyezett (EFER.LME=1), ellenkező esetben egyszerűen engedélyezi az MMU-t "örökölt" módban ). Így lehetetlen 64 bites kódot végrehajtani tiltott lapozással. Ez bizonyos nehézségeket okoz a programozásban, mivel amikor „hosszú” módról „örökölt” módra váltunk és fordítva (például BIOS- vagy DOS -funkciók, virtuális gép - monitor stb. hívásához), az MMU dupla alaphelyzetbe állítása szükséges, amelyekhez a kapcsolókódnak az azonosan megjelenített oldalon kell lennie.
Ez a "örökölt" mód lehetővé teszi az x86-64 processzor számára, hogy utasításokat hajtson végre az x86 processzorokhoz, és így teljes kompatibilitást biztosít a 32 bites kóddal és a 32 bites operációs rendszerekkel x86 esetén. Ebben az üzemmódban a processzor pontosan úgy viselkedik, mint egy x86-os processzor (például Athlon vagy Pentium III). Az x86-64 architektúra által biztosított funkciók és szolgáltatások (például 64 bites regiszterek) természetesen nem érhetők el ebben a módban. Ebben a módban a 64 bites programok és operációs rendszerek nem működnek.
Az AMD x86-64 utasításkészlete (később AMD64 néven) az Intel IA-32 (x86-32) architektúra kiterjesztése. Az AMD64 fő megkülönböztető jellemzője a 64 bites általános célú regiszterek, az egész számokon végzett 64 bites aritmetikai és logikai műveletek, valamint a 64 bites virtuális címek támogatása. A parancsok új regisztereinek címezésére bevezették az úgynevezett "regiszterkiterjesztés előtagokat", amelyekhez a 40h-4Fh kódtartományt választották, amelyet az INC <register> és DEC <register> parancsokhoz használnak 32 bites módban. A 64 bites módban az INC és DEC parancsokat az általánosabb kétbájtos formában kell kódolni.
Az x86-64 architektúra a következőket tartalmazza:
Az AMD64 architektúra (az x86-64 AMD implementációi) fejlesztése közben az AMD mérnökei úgy döntöttek, hogy örökre felszámolják az x86 architektúra fő "kezdeményét" – a szegmentált memóriamodellt, amelyet a 8086 óta támogatnak . Emiatt azonban virtualizációs termékük első x86-64-es verziójának fejlesztése során a VMware programozói leküzdhetetlen nehézségekbe ütköztek a 64 bites vendégrendszerekhez való virtuális gép megvalósítása során [2] : mivel a program szegmentációs mechanizmust használt, ez a feladat az szinte megoldhatatlan.
Az AMD felismerve a hibát, visszaadta a szegmentált memóriaszervezés korlátozott verzióját, kezdve az AMD64 architektúra D változatával, amely lehetővé tette a 64 bites operációs rendszer futtatását a virtuális gépeken . Az Intel nem követte ezt a példát, és az Intel VT (Intel Virtualization Technology) [3] hardveres virtualizációs eszközeit nem támogató processzorain lehetetlen 64 bites virtuális gépet futtatni [4] . Annak ellenőrzésére, hogy egy processzor képes-e 64 bites vendég operációs rendszert futtatni, a VMware speciális segédprogramot biztosít termékeihez.
A 64 bites vendégrendszerek indítása és telepítése jelenleg (2013 óta) már lehetséges (a VMware terméke - ESXi (munkaállomás stb.) - támogatja az x86-64 architektúrát).
Megjegyzendő, hogy a kezdetben kés alá került LAHF és SAHF parancsok, amelyeket a virtualizációs szoftverek is aktívan használnak, ezután visszakerültek a parancsrendszerbe. A hardveres virtualizációs eszközök (Intel VT, AMD-V) elterjedésével fokozatosan megszűnik a szegmentálás igénye.
processzortechnológiák | Digitális|||||||||
---|---|---|---|---|---|---|---|---|---|
Építészet | |||||||||
Instruction Set Architecture | |||||||||
gépszó | |||||||||
Párhuzamosság |
| ||||||||
Megvalósítások | |||||||||
Alkatrészek | |||||||||
Energiagazdálkodás |