X86-64

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 11 ianuarie 2019; verificările necesită 22 de modificări .

x86-64 (și AMD64/Intel64/EM64T) este o versiune pe 64 de biți (inițial o extensie) a arhitecturii x86 , dezvoltată de AMD și introdusă în 2000 [1] , care permite programelor să ruleze în modul 64 de biți.

Este o extensie a arhitecturii x86 și este acum o versiune a arhitecturii x86 care este aproape complet compatibilă cu versiunea pe 32 de biți a arhitecturii x86, cunoscută acum ca IA-32 .

Microsoft și Oracle folosesc termenul „x64” pentru a se referi la această versiune a arhitecturii x86, dar directorul care conține fișierele pentru arhitectura pe Microsoft Windows pe 64 de biți se numește „amd64” („i386” pentru x86). Acest lucru se observă și în depozitele majorității distribuțiilor Linux .

Setul de instrucțiuni x86-64 este acceptat în prezent:

Nume aplicate

Există următoarele convenții de denumire pentru această versiune x86 pe 64 de biți:

În prezent, cele mai comune nume pentru versiunea pe 64 de biți a x86 sunt: ​​„x64”, „x86-64” și „AMD64”.

Uneori, menționarea AMD induce în eroare utilizatorii, în măsura în care refuză să folosească distribuții ale versiunilor native ale sistemului de operare, argumentând că versiunea AMD nu va funcționa pe procesorul lor Intel - de fapt, distribuitorii de software folosesc numele amd64 doar pentru că AMD a fost pionierul dezvoltării versiunii x86 pe 64 de biți.

Adesea, utilizatorii confundă arhitectura x86-64 cu IA-64 , descarcând din greșeală software pentru această arhitectură și apoi constată că programul nu pornește. Pentru a evita astfel de erori, trebuie amintit că Intel 64 și IA-64 sunt arhitecturi de microprocesoare complet diferite, incompatibile. Acesta din urmă este incompatibil cu x86-64.
Reprezentanții Intel 64:

Reprezentanți ai IA-64: familiile Itanium și Itanium 2 .

Moduri de operare

Procesoarele acestei arhitecturi suportă două moduri de funcționare: modul lung (modul „lung”) și modul Legacy („moștenit” - modul de compatibilitate cu x86 pe 32 de biți).

Modul lung

Modul „Long” este „nativ” pentru procesoarele AMD64. Acest mod face posibil să profitați din plin de arhitectura x86-64. Acest mod necesită orice sistem de operare pe 64 de biți (de exemplu, Windows Server 2003/2003R2/2008/2008R2/2012, Windows XP Professional x64 Edition, Windows Vista x64, Windows 7/8/8.1/10/11 x64 sau 64 de biți variante ale sistemelor asemănătoare UNIX GNU/Linux , FreeBSD , OpenBSD , NetBSD (construcțiile pure pe 64 de biți, totuși, au capacitatea de a rula aplicații pe 32 de biți), Solaris (build 32/64 mixt cu nuclee diferite pentru 32 de biți și procesoare pe 64 de biți), Mac OS X (build mixt 32/64 cu kernel pe 32 de biți, începând cu versiunea 10.4.7).

Acest mod vă permite să rulați programe pe 64 de biți. De asemenea (pentru compatibilitate cu versiunea anterioară) este oferit suport pentru execuția codului pe 32 de biți, de exemplu, aplicațiile pe 32 de biți (în mod firesc, programele pe 32 de biți, chiar și atunci când rulează pe un sistem pe 64 de biți, nu vor putea folosi 64 de biți). biblioteci de sistem -bit și invers) . Pentru a îndeplini această sarcină, majoritatea sistemelor de operare pe 64 de biți oferă două seturi de API-uri de sistem necesare : unul pentru aplicații native pe 64 de biți și unul pentru programele pe 32 de biți (aceeași tehnică folosită de sistemele pe 32 de biți timpurii, cum ar fi Windows 95 și Windows ). NT  pentru rularea programelor pe 16 biți).

În modul „lung”, o serie de „rudimente” ale arhitecturii x86-32 sunt abolite, în special, cum ar fi modul virtual 8086 , modelul de memorie segmentată (cu toate acestea, rămâne posibil să se utilizeze segmente FS și GS, care este util pentru găsirea rapidă a datelor de fir importante la comutarea sarcinilor ), multitasking hardware , precum și o serie de comenzi care implementează atât caracteristicile întrerupte, cât și funcționează cu numere BCD , care practic nu erau folosite în programe noi. Modul „lung” este activat prin setarea flag-ului CR0.PG, care este folosit pentru a activa MMU de paginare (cu condiția ca o astfel de comutare să fie activată (EFER.LME=1), altfel va activa pur și simplu MMU în modul „moștenire” ). Astfel, este imposibil să executați un cod pe 64 de biți cu o paginare interzisă. Acest lucru creează anumite dificultăți în programare, deoarece la trecerea de la modul „lung” la modul „moștenire” și invers (de exemplu, pentru a apela funcții BIOS sau DOS , monitorul mașinii virtuale etc.), este necesară o resetare dublă a MMU, pentru care codul de comutare trebuie să fie în pagina redată identic.

Modul Legacy

Acest mod „moștenire” permite procesorului x86-64 să execute instrucțiuni pentru procesoarele x86 și, astfel, realizează compatibilitatea deplină cu codul pe 32 de biți și sistemele de operare pe 32 de biți pentru x86. În acest mod, procesorul se comportă exact ca un procesor x86 (cum ar fi un Athlon sau Pentium III). Funcțiile și caracteristicile oferite de arhitectura x86-64 (de exemplu, registrele pe 64 de biți) nu sunt în mod natural disponibile în acest mod. În acest mod, programele și sistemele de operare pe 64 de biți nu vor funcționa.

Caracteristici arhitecturale

Setul de instrucțiuni AMD x86-64 (redenumit ulterior AMD64) este o extensie a arhitecturii Intel IA-32 (x86-32). Principala caracteristică distinctivă a AMD64 este suportul pentru registre de uz general pe 64 de biți, operații aritmetice și logice pe 64 de biți pe numere întregi și adrese virtuale pe 64 de biți. Pentru a aborda noi registre pentru comenzi, au fost introduse așa-numitele „prefixe de extensie de registre”, pentru care s-a ales gama de coduri 40h-4Fh, utilizate pentru comenzile INC <registru> și DEC <registru> în moduri de 32 de biți. Comenzile INC și DEC în modul pe 64 de biți trebuie să fie codificate într-o formă mai generală de doi octeți.

Arhitectura x86-64 are:

Modelul segmentar al organizării memoriei

În timp ce dezvoltau arhitectura AMD64 (implementări AMD de x86-64), inginerii AMD au decis să elimine pentru totdeauna principalul „rudiment” al arhitecturii x86 - un model de memorie segmentată care a fost acceptat încă de la 8086 . Totuși, din această cauză, la dezvoltarea primei versiuni x86-64 a produsului lor de virtualizare , programatorii VMware au întâmpinat dificultăți insurmontabile în implementarea unei mașini virtuale pentru sisteme guest pe 64 de biți [2] : din moment ce programul folosea mecanism de segmentare, această sarcină a devenit aproape de nerezolvat.

Dându-și seama de greșeală, AMD a returnat o versiune limitată a organizării memoriei segmentate, începând cu revizuirea D a arhitecturii AMD64, care a permis rularea sistemului de operare pe 64 de biți în mașinile virtuale . Intel nu a urmat acest exemplu, iar pe procesoarele sale care nu suportă instrumentele de virtualizare hardware Intel VT (Intel Virtualization Technology) [3] , este imposibil să rulați o mașină virtuală pe 64 de biți [4] . Pentru a verifica dacă un procesor poate rula sisteme de operare invitate pe 64 de biți, VMware oferă un utilitar special cu produsele sale.

Lansarea și instalarea sistemelor guest pe 64 de biți în acest moment (din 2013) este deja posibilă (produsul VMware - ESXi (stație de lucru etc.) - acceptă arhitectura x86-64).

Trebuie remarcat faptul că comenzile LAHF și SAHF care au căzut inițial sub cuțit, care sunt, de asemenea, utilizate activ de software-ul de virtualizare, au fost apoi returnate în sistemul de comandă. Odată cu răspândirea instrumentelor de virtualizare hardware (Intel VT, AMD-V), nevoia de segmentare va dispărea treptat.

Vezi și

Note

  1. AMD lansează specificațiile arhitecturale x86-64™; Permite migrarea bazată pe piață către calcularea pe 64 de biți
  2. http://www.pagetable.com/?p=25 Arhivat 18 iulie 2011 la Wayback Machine „The AMD64 ...retired ..mot of segmentation . Dar asta a spart VMware. În timp ce VMware putea în continuare să virtualizeze sistemele de operare pe 32 de biți pe procesoarele AMD64, ei nu puteau virtualiza sistemele de operare pe 64 de biți, deoarece aveau nevoie de limite de segmente.”
  3. Tehnologia de virtualizare Intel® (Intel® VT  ) . Intel. Preluat la 14 mai 2020. Arhivat din original la 25 mai 2020.
  4. Baza de cunoștințe VMware . kb.vmware.com. Preluat la 14 mai 2020. Arhivat din original la 27 mai 2020.

Link -uri