X86
Designer | Intel, AMD |
---|---|
Bits | 16-Bit, 32-Bit und 64-Bit |
Eingeführt | 1978 (16-Bit), 1985 (32-Bit), 2003 (64-Bit) |
Entwurf | CISC |
Typ | Register -Memory |
Codierung | Variable (1 bis 15 Bytes) |
Verzweigung | Bedingungscode |
Endiangess | Wenig |
Seitengröße | 8086–I286: Keiner i386, I486: 4 KB Seiten P5 Pentium: 4 MB -Seiten hinzugefügt (Erbe Pae: 4 kb → 2 mb) x86-64: 1 GB Seiten hinzugefügt |
Erweiterungen | x87, IA-32, x86-64, MMX, 3dnow!, Sse, MCA, ACPI, SSE2, Nx bit, SMT, SSE3, SSSE3, SSE4, SSE4.2, Aes-ni, Clmul, Rdrand, Sha, MPX, KMU, SGX, XOP, F16C, ADX, BMI, Fma, Avx, AVX2, Avx-vnni, AVX512, VT-X, Vt-d, AMD-V, AMD-VI, TSX, Asf, TXT |
Offen | Teilweise. Für einige erweiterte Funktionen ist X86 möglicherweise Lizenz von Intel erforderlich. x86-64 kann eine zusätzliche Lizenz von AMD erfordern. Der 80486 -Prozessor ist seit mehr als 30 Jahren auf dem Markt[1] und kann daher nicht Patentansprüchen unterliegen. Die Subset der X86-Architektur vor 586 ist daher vollständig geöffnet. |
Register | |
Allgemeiner Zweck |
|
Schwimmender Punkt |
x86 ist eine Familie von Komplexer Befehlssatz Computer (CISC) Anweisungsset Architekturen[a] ursprünglich entwickelt von Intel basierend auf Intel 8086 Mikroprozessor und sein 8088 Variante. Der 8086 wurde 1978 als vollständig eingeführt 16-Bit Erweiterung der Intel 8 Bit 8080 Mikroprozessor mit Speichersegmentierung Als Lösung für die Behandlung von mehr Speicher als kann eine einfache 16-Bit-Adresse abgedeckt werden. Der Begriff "x86" entstand, weil die Namen mehrerer Nachfolger zum 8086 -Prozessor von Intel in "86", einschließlich der 80186, 80286, 80386 und 80486 Prozessoren.
Der Begriff ist nicht gleichbedeutend mit IBM PC -Kompatibilität, wie dies impliziert eine Vielzahl anderer Computerhardware. Eingebettete Systeme und allgemeine Computer verwendeten X86-Chips Bevor der PC-kompatible Markt begann,[b] einige von ihnen vor dem IBM PC (1981) Debüt.
Ab Juni 2022[aktualisieren], die meisten Desktop und Laptop Die verkauften Computer basieren auf der X86 Architecture -Familie.[2] während mobile Kategorien wie z. Smartphones oder Tablets werden dominiert von ARM. Am oberen Ende dominiert X86 weiterhin rechnertenintensiv Arbeitsplatz und Cloud Computing Segmente.[3] Der schnellste Supercomputer in der Top500 Die Liste für Juni 2022 war das erste Exascale -System, Grenze,[4] gebaut mit AMD EPYC CPUs basierend auf dem x86 ISA; es brach die 1 Exaflops Barriere im Mai 2022.[5]
Überblick
In den 1980er und frühen 1990er Jahren, als die 8088 und 80286 waren noch in allgemeinem Gebrauch, der Begriff x86 repräsentierte normalerweise eine 8086-kompatible CPU. Heute impliziert x86 normalerweise auch eine binäre Kompatibilität auch mit dem 32-Bit Befehlssatz des 80386. Dies liegt daran nach die Einführung der 80386 1985.
Einige Jahre nach der Einführung des 8086 und 8088 fügte Intel sein Namensschema und Terminologie als "IAPX" des ehrgeizigen, aber unglücklichen Schemas und der Terminologie eine gewisse Komplexität hinzu Intel IAPX 432 Der Prozessor wurde in der erfolgreicheren 8086 -Chipsfamilie ausprobiert.[c] als eine Art Präfix auf Systemebene angewendet. Ein 8086 System, einschließlich Coprozessoren wie zum Beispiel 8087 und 8089und einfachere intel-spezifische Systemchips,[d] wurde dadurch als IAPX 86 beschrieben System.[6][e] Es gab auch Begriffe irmx (für Betriebssysteme), ISBC (für Single-Board-Computer) und ISBX (Für Multimodule-Boards basierend auf der 8086-Architektur), alle zusammen unter der Überschrift Mikrosystem 80.[7][8] Dieses Namensschema war jedoch ziemlich vorübergehend und dauerte einige Jahre in den frühen 1980er Jahren.[f]
Obwohl der 8086 in erster Linie entwickelt wurde für eingebettete Systeme und kleine Computer mit mehreren Benutzern oder Einzelnutzern, größtenteils als Reaktion auf den erfolgreichen 8080-kompatibel Zilog Z80,[9] Die X86 -Linie wuchs bald in den Funktionen und Verarbeitungsleistung. Heute ist x86 sowohl in stationären als auch in tragbaren PCs allgegenwärtig und wird auch in verwendet Computer mit Mittleren, Arbeitsstationen, Server und am neuesten Supercomputer Cluster des Top500 aufführen. Eine große Menge an Software, einschließlich einer großen Liste von X86-Betriebssystemen, verwenden X86-basierte Hardware.
Das moderne x86 ist relativ ungewöhnlich in eingebettete SystemeAllerdings und klein geringer Strom Anwendungen (mit winzigen Batterien) und kostengünstige Mikroprozessormärkte wie z. Haushaltsgeräte und Spielzeug, fehlt eine signifikante X86 -Präsenz.[g] Einfache 8- und 16-Bit-basierte Architekturen sind hier häufig, obwohl der x86-kompatibel Via c7, Über Nano, AMD's Geode, Athlon Neo und Intel Atom sind Beispiele von 32- und 64-Bit Designs, die in einigen verwendet werden verhältnismäßig Segmente mit niedriger Leistung und kostengünstigen Segmenten.
Es gab mehrere Versuche, einschließlich Intel, die Marktdominanz der "uneleganten" x86-Architektur, die direkt aus den ersten einfachen 8-Bit-Mikroprozessoren entworfen wurde, zu beenden. Beispiele hierfür sind die IAPX 432 (Ein Projekt, das ursprünglich das benannt wurde Intel 8800[10]), das Intel 960, Intel 860 und der Intel/Hewlett-Packard Itanium die Architektur. Die kontinuierliche Verfeinerung von x86 Mikroarchitekturen, Schaltkreis und Semiconductor Manufacturing Ich würde es schwierig machen, X86 in vielen Segmenten zu ersetzen. AMDs 64-Bit-Erweiterung von x86 (auf die Intel schließlich mit einem kompatiblen Design reagierte)[11] und die Skalierbarkeit von X86-Chips in Form eines modernen Multi-Core-CPUs unterstreicht X86 als Beispiel dafür, wie kontinuierliche Verfeinerung etablierter Branchenstandards dem Wettbewerb durch vollständig neue Architekturen widerstehen kann.[12]
Chronologie
In der folgenden Tabelle werden Prozessormodelle und Modellreihen aufgeführt, in denen verschiedene Architekturen in der X86 -Familie in chronologischer Reihenfolge implementiert werden. Jede Werbebuchung ist durch erheblich verbesserte oder kommerziell erfolgreiche Prozessor -Mikroarchitektur -Designs gekennzeichnet.
Epoche | Einführung | Prominente CPU -Modelle | Adressraum | Bemerkenswerte Merkmale | |||
---|---|---|---|---|---|---|---|
Linear | Virtuell | Physisch | |||||
x86-16 | 1 | 1978 | Intel 8086, Intel 8088 (1979) | 16-Bit | N / A | 20-Bit | 16-Bit IST EIN, IBM PC (8088), IBM PC/XT (8088) |
1982 | Intel 80186, Intel 80188 NEC V20/V30 (1983) | 8086-2 ISA, eingebettet (80186/80188) | |||||
2. | Intel 80286 und Klone | 30-Bit | 24-Bit | Sicherheitsmodus, IBM PC/XT 286, IBM PC/at | |||
IA-32 | 3. | 1985 | Intel 80386, AMD AM386 (1991) | 32-Bit | 46-Bit | 32-Bit | 32-Bit IST EIN, Paging, IBM PS/2 |
4. (Pipelining, Cache) | 1989 | Intel 80486 Cyrix CX486s, DLC (1992) AMD AM486 (1993), AM5X86 (1995) | Pipelining, On-Die x87 FPU (486dx), On-Die Zwischenspeicher | ||||
5. (Superscalar) | 1993 | Intel Pentium, Pentium mmx (1996) | Superscalar, 64-Bit Datenbus, schnellere FPU, MMX (Pentium mmx), Apik, SMP | ||||
1994 | Nexgen NX586 AMD 5K86/K5 (1996) | Diskrete Mikroarchitektur (µ-op Übersetzung) | |||||
1995 | Cyrix CX5X86 Cyrix 6x86/Mx (1997)/Mii (1998) | Dynamische Ausführung | |||||
6. (Pae, µ-op Translation) | 1995 | Intel Pentium Pro | 36-Bit (Pae) | µ-OP-Übersetzung, bedingte Bewegungsanweisungen, Dynamische Ausführung, Spekulative Ausführung, 3-Wege X86 Superscalar, Supercalar FPU, Pae, On-Chip L2 Cache | |||
1997 | Intel Pentium II, Pentium III (1999) Celeron (1998),, Xeon (1998) | On-Package (Pentium II) oder On-Die (Celeron) L2-Cache, Sse (Pentium III),, Schlitz 1, Socket 370 oder Steckplatz 2 (Xeon) | |||||
1997 | AMD K6/K6-2 (1998)/K6-III (1999) | 32-Bit | 3dnow!, 3-Level-Cache-System (K6-III) | ||||
Verbesserte Plattform | 1999 | AMD Athlon Athlon XP/MP (2001) Duron (2000) Sempron (2004) | 36-Bit | Mmx+, 3dnow!+, Doppelt gepumpter Bus, Slot a oder Steckdose a | |||
2000 | Transmeta Crusoe | 32-Bit | CMS Powered X86 -Plattformprozessor, VLIW-128 Core, On-Die-Speicher-Controller, On-Die-PCI-Brückenlogik | ||||
Intel Pentium 4 | 36-Bit | SSE2, Htt (Northwood), NetBurst, Quad-Pumped-Bus, Spurencache, Socket 478 | |||||
2003 | Intel Pentium m Intel Core Prozessor (2006) Pentium Dual-Core (2007) | µ-op Fusion, XD -Bit (Dothan) (Intel Core "Yonah") | |||||
Transmeta Efficeon | CMS 6.0.4, VLIW-256, Nx bit, Ht | ||||||
IA-64 | 64-Bit-Übergang 1999-2005 | 2001 | Intel Itanium (2001-2017) | 52-Bit | 64-Bit EPOS Architektur, 128-Bit-VLIW-Befehlsbündel, On-Die-Hardware IA-32 H/W aktivieren X86-OSS & X86-Anwendungen (frühe Generationen), Software IA-32 EL Aktivieren X86-Anwendungen (Itanium 2), Itanium-Registerdateien werden nach X86 übermittelt. Register | ||
x86-64 | 64-Bit erweitert seit 2001 | X86-64 ist die 64-Bit-erweiterte Architektur von x86, deren Legacy-Modus die gesamte und unveränderte X86-Architektur bewahrt. Die native Architektur von X86-64-Prozessoren: Im 64-Bit-Modus befindet sich der Zugriffsmodus in der Segmentierung und zeigt 64-Bit-Architektur-Linear-Adressraum; Eine angepasste IA-32-Architektur, die sich im Kompatibilitätsmodus zusammen mit dem 64-Bit-Modus befindet, wird bereitgestellt, um die meisten X86-Anwendungen zu unterstützen | |||||
2003 | Athlon 64/Fx/X2 (2005), Opteron Sempron (2004)/x2 (2008) Turion 64 (2005)/X2 (2006) | 40-Bit | AMD64 (mit Ausnahme einiger Sempron-Prozessoren als rein x86-Prozessoren), On-Der-Speichercontroller, Hypertransport, On-Die-Dual-Core (x2), AMD-V (Athlon 64 Orleans), Socket 754/939/940 oder AM2 | ||||
2004 | Pentium 4 (Prescott) Celeron d, Pentium d (2005) | 36-Bit | EM64T (aktiviert auf ausgewählten Modellen von Pentium 4 und Celeron d), SSE3, 2. Gen. NetBurst Pipelining, Dual-Core (On-Die: Pentium D 8xx, On-Chip: Pentium D 9xx), Intel vt(Pentium 4 6x2), Sockel LGA 775 | ||||
2006 | Intel Core 2 Pentium Dual-Core (2007) Celeron Dual-Core (2008) | Intel 64 (<< == EM64T), SSSE3(65 nm), breite dynamische Ausführung, µ-op-Fusion, Makro-Op-Fusion im 16-Bit- und 32-Bit-Modus,[13][14] On-Chip Quad-Core (Core 2 Quad), Smart Shared L2 Cache (Intel Core 2 "Merom") | |||||
2007 | AMD -Phänomen/II (2008) Athlon II (2009) Turion II (2009) | 48-Bit | Monolithisch Quad-Core (X4)/Triple-Core (x3), SSE4A, Schnelle Virtualisierungsindexierung (RVI), Hypertransport 3, AM2+ oder AM3 | ||||
2008 | Intel Core 2 (45 nm) | 40-Bit | SSE4.1 | ||||
Intel Atom | Netbook oder Smart -Geräteprozessor mit niedrigem Strom, P54C -Kern wiederverwendet | ||||||
Intel Kern i7 Kern i5 (2009) Kern i3 (2010) | QuickPath, On-Chip-GMCH (Clarkdale), SSE4.2, Erweiterte Seitentabellen (EPT) zur Virtualisierung, Makro-Op-Fusion im 64-Bit-Modus,[13][14] (Intel Xeon "Bloomfield" mit Nehalem -Mikroarchitektur) | ||||||
Über Nano | Hardware-basierte Verschlüsselung; adaptiv Leistungsmanagement | ||||||
2010 | AMD FX | 48-Bit | Octa-Core, CMT (Clustered Multi-Thread), FMA, OpenCL, AM3+ | ||||
2011 | AMD APU A und E- und E -Serie (Llano) | 40-Bit | On-Die-GPGPU, PCI Express 2.0, Socket FM1 | ||||
AMD APU C-, E- und Z -Serie (Bobcat) | 36-Bit | APU mit niedriger Leistung intelligent | |||||
Intel Core i3, Kern i5 und Kern i7 (Sandy Bridge/Ivy Bridge) | Interner Ringverbindung, dekodiert µ-op-Cache, LGA 1155 Steckdose | ||||||
2012 | AMD apu eine Serie (Bulldozer, Dreifaltigkeit und später) | 48-Bit | Avx, Bulldozer -basierter APU, Socket FM2 oder Socket FM2+ | ||||
Intel Xeon Phi (Ritterecke) | PCI-E-Add-On-Karten-Koprozessor für Xeon-basiertes System, Manycore-Chip, In-Ordnung P54c, sehr breite VPU (512-Bit SSE), LRBNI-Anweisungen (8 × 64-Bit) | ||||||
2013 | AMD Jaguar (Athlon, Sempron) | SOC, Spielekonsole und Smart -Geräteprozessor mit geringem Stromverbrauch | |||||
Intel Silvermont (Atom, Celeron, Pentium) | 36-Bit | SOC, Low/Ultra-Low Power Smart Device-Prozessor | |||||
Intel Core i3, Kern i5 und Kern i7 (Haswell/Broadwell) | 39-Bit | AVX2, FMA3, TSX, BMI1 und BMI2 Anweisungen, LGA 1150 Steckdose | |||||
2015 | Intel Broadwell-U (Intel Core i3, Kern i5, Kern i7, Kern m, Pentium, Celeron) | SOC, On-Chip Broadwell-U PCH-LP (Multi-Chip-Modul) | |||||
2015–2020 | Intel Skylake/Kaby Lake/Cannon Lake/Kaffeesee/Rocket Lake (Intel Pentium/Celeron Gold, Kern i3, Kern i5, Kern i7, Kern i9) | 46-Bit | AVX-512 (beschränkt auf Cannon Lake-U und Workstation/Server-Varianten von Skylake) | ||||
2016 | Intel Xeon Phi (Ritter landen) | 48-Bit | Manycore CPU und Coprozessor für Xeon Systems, Airmont (Atom) basieren | ||||
2016 | AMD Bristol Ridge (AMD (Pro) A6/A8/A10/A12) | Integrierter FCH auf Die, Soc, Am4 -Sockel | |||||
2017 | AMD Ryzen -Serie/AMD EPYC -Serie | AMD-Implementierung von SMT, On-Chip-Mehrfachstimmungen | |||||
2017 | Zhaoxin Wudaokou (KX-5000, KH-20000) | ZhaoxinDie erste brandneue X86-64-Architektur | |||||
2018–2021 | Intel Sunny Cove (Ice Lake-U und Y), Cypress Cove (Rocket Lake) | 57-Bit | Die erste Implementierung von AVX-512 durch Intel für das Verbrauchersegment. Zugabe von Vektor -Anweisungen für neuronale Netzwerke (VNNI) | ||||
2020 | Intel Willow Cove (Tiger Lake-y/U/H) | Architektur mit Dual Ring-Interconnect, aktualisierte Gaußsche Neuralbeschleuniger (GNA2), neue AVX-512-Vektor-Schnittanweisungen, Zugabe der Kontroll-Flow-Durchsetzungstechnologie (CET) | |||||
2021 | Intel Alder Lake | Hybriddesign mit Performance (Golden Cove) und Effizienzkerne (Gracemont), Unterstützung für PCIe Gen5 und DDR5, aktualisierte Gaußsche Neuralbeschleuniger (GNA3) | |||||
Epoche | Einführung | Prominente CPU -Modelle | Adressraum | Bemerkenswerte Merkmale |
Geschichte
Designer und Hersteller
Zu verschiedenen Zeiten wie Unternehmen wie IBM, ÜBER, NEC,[h] AMD, Ti, Stm, Fujitsu, Oki, Siemens, Cyrix, Intersil, C & T, Nexgen, Umc, und DM & P begann zu entwerfen oder herzustellen[ich] x86 Prozessoren (CPUs) für PCs und eingebettete Systeme vorgesehen. Andere Unternehmen, die x86 entworfen oder hergestellt haben x87 Prozessoren umfassen ITT Corporation, Nationaler Halbleiter, ULSI -Systemtechnologie und Weitek.
Solche x86 -Implementierungen waren selten einfache Kopien, verwendeten jedoch häufig unterschiedliche interne Mikroarchitekturen und unterschiedliche Lösungen auf elektronischer und physikalischer Ebene. Ganz natürlich waren frühe kompatible Mikroprozessoren 16-Bit, während viel später 32-Bit-Designs entwickelt wurden. Für die persönlicher Computer Markt, reale Mengen erschienen um 1990 mit i386 und I486 Kompatible Prozessoren, oft ähnlich wie die ursprünglichen Chips von Intel.
Nach dem voll Pipeline I486, 1993 Intel stellte die vor Pentium Markenname (der im Gegensatz zu Zahlen sein könnte Markenzeichen) für ihren neuen Satz von Superscalar x86 Designs. Mit dem nun legal legalen X86-Namensschema mussten andere X86-Anbieter unterschiedliche Namen für ihre x86-kompatiblen Produkte auswählen, und einige entschieden sich zunächst, die Variationen des Nummerierungsschemas fortzusetzen: IBM Partner mit Cyrix um das zu produzieren 5x86 Und dann das sehr effiziente 6x86 (M1) und 6x86Mx (Mii) Linien von Cyrix -Designs, die die ersten X86 -Mikroprozessoren waren Umbenennen registrieren ermöglichen Spekulative Ausführung.
AMD hat inzwischen die fortgeschrittenen, aber verzögerten gestaltet und hergestellt 5K86 (K5), die, im Inneren, war eng auf AMDs früherer Basis beruhte 29k RISC Entwurf; ähnlich zu Nexgen's NX586Es wurde eine Strategie verwendet, sodass dedizierte Pipeline -Stufen x86 -Anweisungen in einheitliche und leicht behandelte Dekodien entfernen Mikrooperationen, eine Methode, die für die meisten X86 -Designs bis heute die Grundlage geblieben ist.
Einige frühe Versionen dieser Mikroprozessoren hatten Wärmeableitungsprobleme. Der 6x86 wurde auch von einigen geringfügigen Kompatibilitätsproblemen betroffen, die NX586 fehlte a schwimmende Punkteinheit (FPU) und (die damals entscheidende) Pin-Kompatibilität, während die K5 hatte eine etwas enttäuschende Leistung, als es (schließlich) eingeführt wurde.
Die Unkenntnis der Kunde von Alternativen zur Pentium -Serie trug ferner dazu bei, dass diese Entwürfe vergleichsweise erfolglos waren, obwohl die Tatsache K5 hatte eine sehr gute Pentiumkompatibilität und die 6x86 war signifikant schneller als das Pentium auf dem Ganzzahlcode.[j] AMD später schaffte es, zu einem ernsthaften Anwärter mit dem zu werden K6 Die Reihe von Prozessoren, die dem sehr erfolgreichen Platz machten Athlon und Opteron.
Es gab auch andere Konkurrenten, wie z. Centaur -Technologie (früher Idt), Steigetechnologie, und Transmeta. Über Technologien' Energieeffizient C3 und C7 Prozessoren, die von der entworfen wurden Zentaur Das Unternehmen wurde nach ihrer Veröffentlichung im Jahr 2005 viele Jahre verkauft. Centaures Design von 2008, die Über Nanowar ihr erster Prozessor mit Superscalar und Spekulative Ausführung. Es wurde ungefähr zur gleichen Zeit (2008) eingeführt, als Intel die vorstellte Intel Atom, sein erster "in Ordnung" -Prozessor nach dem P5 Pentium.
Viele Ergänzungen und Erweiterungen wurden im Laufe der Jahre zum ursprünglichen X86 -Befehlssatz hinzugefügt, fast konsequent mit Full Rückwärtskompatibilität.[k] Die Architekturfamilie wurde in Prozessoren von Intel implementiert, Cyrix, AMD, Über Technologien und viele andere Unternehmen; Es gibt auch offene Implementierungen wie die Zet Soc Plattform (derzeit inaktiv).[15] Trotzdem von diesen nur Intel, AMD, über Technologien und DM & P -Elektronik Halten Sie x86 Architekturlizenzen und produzieren nur die ersten beiden aktiv modernen 64-Bit-Designs, was zu einem sogenannten "Duopol" von Intel und AMD in X86-Prozessoren führt.
2014 das in Shanghai ansässige chinesische Unternehmen in Shanghai ZhaoxinEin Joint Venture zwischen einem chinesischen Unternehmen und über Technologien begann mit der Entwicklung über basierte X86 -Prozessoren für Desktops und Laptops. Die Veröffentlichung seiner neuesten "7" -Familie[16] von X86-Prozessoren (z. B. KX-7000), die nicht ganz so schnell sind wie AMD- oder Intel-Chips, aber immer noch auf dem neuesten Stand der Technik.[17] war für 2021 geplant; Bis März 2022 war jedoch nicht stattgefunden.[18]
Von 16-Bit und 32-Bit bis 64-Bit-Architektur
Das Anweisungsset Architektur wurde zweimal auf einen größeren Ausgang erweitert Wort Größe. 1985 veröffentlichte Intel den 32-Bit 80386 (später bekannt als i386), das die früheren 16-Bit-Chips in Computern allmählich ersetzte (obwohl es normalerweise nicht in eingebettete Systeme) in den folgenden Jahren; Dieses erweiterte Programmiermodell wurde ursprünglich als bezeichnet Die i386 Architektur (wie seine erste Implementierung) Aber Intel nannte es später es IA-32 Bei der Einführung seines (nicht verwandten) IA-64 die Architektur.
In 1999–2003,, AMD erweiterte diese 32-Bit-Architektur auf 64 Bit und bezeichnete sie als x86-64 in frühen Dokumenten und später als AMD64. Intel übernahm bald die architektonischen Erweiterungen von AMD unter dem Namen IA-32E, später mit dem Namen EM64T und schließlich mit Intel 64. Microsoft und Sun Microsystems/Orakel Verwenden Sie auch den Begriff "x64", während viele viele Linux -Verteilungen, und die BSDS Verwenden Sie auch den Begriff "AMD64". Microsoft Windows bezeichnet beispielsweise seine 32-Bit-Versionen als "x86" und 64-Bit-Versionen als "x64", während Installationsdateien mit 64-Bit-Windows-Versionen in ein Verzeichnis namens "AMD64" eingebaut werden müssen.[19]
Grundlegende Eigenschaften der Architektur
Die x86 -Architektur ist eine variable Anweisungslänge, in erster Linie "CISC"Design mit Schwerpunkt auf Rückwärtskompatibilität. Der Befehlssatz ist jedoch nicht typisch CISC, sondern im Grunde genommen eine erweiterte Version des einfachen Acht-Bit 8008 und 8080 Architekturen. Die Byteadressierung ist aktiviert und Wörter werden im Speicher mit gespeichert Little-Endian Bytebestellung. Der Speicherzugriff auf nicht ausgerichtete Adressen ist für fast alle Anweisungen zulässig. Die größte einheimische Größe für ganze Zahl Arithmetik und Speicheradressen (oder Offsets) ist 16, 32 oder 64 Bit, abhängig von der Architekturgenerierung (neuere Prozessoren umfassen auch die direkte Unterstützung für kleinere ganze Zahlen). Mehrere Skalarwerte können gleichzeitig über die in späteren Generationen vorhandene SIMD -Einheit behandelt werden, wie nachstehend beschrieben.[l] Sofortige Adressierung von Offsets und sofortigen Daten können für die häufig vorkommenden Fälle oder Kontexte als 8 -Bit -Mengen ausgedrückt werden, in denen ein Reich von -128..127 ausreicht. Typische Anweisungen sind daher 2 oder 3 Bytes lang (obwohl einige viel länger sind und einige Single-Byte sind).
Um den Kodierungsraum weiter zu erhalten, werden die meisten Register in ausgedrückt Opcodes Unter Verwendung von drei oder vier Bits über ein Opcode-Präfix im 64-Bit-Modus, während höchstens ein Operand zu einem Befehl ein Speicherort sein können.[m] Dieser Speicheroperand kann jedoch auch der sein Ziel (oder eine kombinierte Quelle und Ziel), während der andere Operand, der Quelle, Kann beides sein registrieren oder sofort. Dies trägt unter anderem zu einer Codegröße bei, die mit acht Bit-Maschinen konkurriert und den effizienten Einsatz des Cache-Speichers für Anweisungen ermöglicht. Die relativ geringe Anzahl allgemeiner Register (ebenfalls von seinen 8-Bit-Vorfahren geerbt) hat die ordnungsreiche Adressierung (mit kleinen unmittelbaren Offsets) zu einer wichtigen Methode zum Zugriff auf Operanden, insbesondere auf dem Stapel, gemacht. Es wurde daher viel Arbeit investiert, um solche Zugriffe so schnell wie Registerzugriffe zu ermöglichen, d. H. Einen Zyklusanweisungsdurchsatz in den meisten Fällen, in denen die Zugriffsdaten im obersten Cache verfügbar sind.
Schwebender Punkt und Simd
Ein dedizierter Schwimmpunktprozessor Mit 80-Bit-internen Registern die 8087wurde für das Original entwickelt 8086. Dieser Mikroprozessor entwickelte sich anschließend zu dem erweiterten 80387und spätere Prozessoren integrierten a rückwärtskompatibel Version dieser Funktionalität auf demselben Mikroprozessor wie der Hauptprozessor. Darüber hinaus enthalten moderne X86 -Designs auch a Simd-Unit (siehe Sse unten) wobei Anweisungen parallel auf (ein oder zwei) 128-Bit-Wörtern mit jeweils zwei oder vier enthalten können Gleitkommazahlen (jeweils 64 bzw. 32 Bit) bzw. alternativ 2, 4, 8 oder 16 Ganzzahlen (jeweils 64, 32, 16 bzw. 8 Bit breit).
Das Vorhandensein von breiten SIMD -Registern bedeutet, dass vorhandene X86 -Prozessoren bis zu 128 Speicherdaten in einer einzigen Befehlung laden oder speichern können und auch bitgewiäre Vorgänge ausführen können (obwohl nicht ganzzahlige Arithmetik[n]) auf volle 128-Bit-Mengen parallel. Intel Sandy Bridge Prozessoren fügten die hinzu Advanced Vector Extensions (AVX) Anweisungen, die die SIMD -Register auf 256 Bit erweitern. Die Intel anfänglich viele Kernanweisungen, die von der Knights Corner implementiert wurden Xeon Phi Prozessoren und die AVX-512 Anweisungen, die von den Knights Landing Xeon PHI -Prozessoren implementiert wurden und von durch Skylake-x Prozessoren, verwenden Sie 512-Bit-SIMD-Register.
Aktuelle Implementierungen
Während HinrichtungDie aktuellen X86-Prozessoren verwenden einige zusätzliche Dekodierungsschritte, um die meisten Anweisungen in kleinere Stücke zu teilen, die als Mikrooperationen bezeichnet werden. Diese werden dann an a übergeben Steuergerät dass sie in Einklang mit X86-Semantik puffert und plant, damit sie teilweise von einem von mehreren parallel ausgeführt werden können (mehr oder weniger spezialisiert). Ausführungseinheiten. Diese modernen X86 -Designs sind also Pipeline, Superscalarund auch fähig zu werden außer Betrieb und Spekulative Ausführung (über Zweigvorhersage, Umbenennen registrieren, und Vorhersage der Gedächtnisabhängigkeit), was bedeutet, dass sie mehrere (teilweise oder vollständige) x86 -Anweisungen gleichzeitig ausführen können und nicht unbedingt in derselben Reihenfolge wie im Befehlsstrom angegeben.[20] Einige Intel -CPUs (Xeon Foster MP, etwas Pentium 4, und einige Nehalem und später Intel Core Prozessor Prozessoren) und AMD -CPUs (beginnend von Zen) sind auch fähig zu Simultanes Multithreading mit zwei Themen pro Ader (Xeon Phi hat vier Themen pro Kern). Einige Intel -CPUs -Unterstützung Transaktionsspeicher (TSX).
Bei der Einführung Mitte der neunziger Jahre wurde diese Methode manchmal als "RISC-Kern" oder als "RISC-Übersetzung" bezeichnet, teilweise aus Marketinggründen, aber auch, weil diese Mikrooperationen einige Eigenschaften mit bestimmten Arten von RISC-Anweisungen teilen. Jedoch, traditionell Mikrocode (seit den 1950er Jahren verwendet) teilt auch von Natur aus viele der gleichen Eigenschaften; Die neue Methode unterscheidet sich hauptsächlich darin, dass die Translation zu Mikrooperationen jetzt asynchron erfolgt. Die Synchronisierung der Ausführungseinheiten mit den Decoded -Schritten eröffnet die Möglichkeiten für eine weitere Analyse des (gepufferten) Code -Streams und ermöglicht daher die Erkennung von Operationen, die parallel durchgeführt werden können und gleichzeitig mehr als eine Ausführungseinheit füttern.
Die neuesten Prozessoren tun bei Bedarf auch das Gegenteil. Sie kombinieren bestimmte X86-Sequenzen (z. B. einen Vergleich, gefolgt von einem bedingten Sprung) in ein komplexeres Mikroopero, das besser zum Ausführungsmodell passt und daher schneller oder mit weniger beteiligten Maschinenressourcen ausgeführt werden kann.
Eine andere Möglichkeit, die Leistung zu verbessern, besteht darin, die dekodierten Mikrooperationen zu unterbrechen, damit der Prozessor direkt auf die dekodierten Mikrooperationen aus einem speziellen Cache zugreifen kann, anstatt sie erneut zu entschlüsseln. Intel folgte diesem Ansatz mit der Ausführungsspuren -Cache -Funktion in ihrer NetBurst Mikroarchitektur (für Pentium 4-Prozessoren) und später im dekodierten Stream-Puffer (für Kernprozessoren seit Sandy Bridge).[21]
Transmeta verwendete eine völlig andere Methode in ihrer Crusoe x86 kompatibler CPUs. Sie benutzten gerade rechtzeitig Übersetzung zum Konvertieren von X86 -Anweisungen in den Eingeborenen der CPU VLIW Befehlssatz. Transmeta argumentierte, dass ihr Ansatz stärkere effizientere Designs ermöglicht, da die CPU auf den komplizierten Decode -Schritt traditionellerer X86 -Implementierungen verzichten kann.
Adressierungsmodi
Adressierungsmodi Für 16-Bit-Prozessormodi können von der Formel zusammengefasst werden:[22][23]
Adressierungsmodi für 32-Bit-X86-Prozessormodi[24] kann durch die Formel zusammengefasst werden:[25]
Adressierungsmodi für den 64-Bit-Prozessormodus können in der Formel zusammengefasst werden:[25]
Anweisungen Relative Adressierung in 64-Bit-Code (RIP + Verschiebung, wobei RIP das ist Anweisungszeigerregister) vereinfacht die Implementierung von Positionsunabhängiger Code (wie verwendet in gemeinsame Bibliotheken in einigen Betriebssystemen).[26]
Der 8086 hatte 64 kb von acht Bit (oder alternativ 32 k-Wort 16-Bit) I/o Raum und a 64 kb (ein Segment) Stapel im Speicher unterstützt von Computerhardware. Nur Wörter (zwei Bytes) können in den Stapel gedrückt werden. Der Stapel wächst zu numerisch niedrigeren Adressen mit SS: sp Hinweis auf den zuletzt gedrückten Gegenstand. Es gibt 256 Interrupts, die sowohl von Hardware als auch von Software aufgerufen werden können. Die Interrupts können kaskaden und mit dem Stapel das Speichern des Stapels Absender.
x86 Register
16-Bit
Das Original Intel 8086 und 8088 vierzehn 16- habenbisschen Register. Vier von ihnen (AX, BX, CX, DX) sind allgemeine Register (GPRS), obwohl jeder einen zusätzlichen Zweck haben kann; Zum Beispiel kann nur CX als Zähler mit dem verwendet werden Schleife Anweisung. Auf jeden kann als zwei getrennte Bytes zugegriffen werden (daher kann auf das hohe Byte von BX als BH und Low -Byte als BL zugegriffen werden). Zwei Zeigerregister haben spezielle Rollen: SP (Stackzeiger) zeigt auf die "Oberseite" des Stapelund BP (Basizeiger) wird häufig verwendet, um auf einen anderen Ort im Stapel zu zeigen, typischerweise über den lokalen Variablen (siehe Rahmenzeiger). Die Register SI, DI, BX und BP sind Register ansprechenund kann auch für die Array -Indexierung verwendet werden.
Vier Segmentregister (CS, DS, SS und ES) werden verwendet, um eine Speicheradresse zu bilden. Das Flaggenregister enthält Flaggen wie zum Beispiel Fahne tragen, Überlaufflagge und Null Flagge. Schließlich verweist der Anweisungszeiger (IP) auf die nächste Anweisung, die aus dem Speicher abgerufen und dann ausgeführt wird. Dieses Register kann von einem Programm nicht direkt zugegriffen werden (gelesen oder geschrieben).[27]
Das Intel 80186 und 80188 sind im Wesentlichen eine aktualisierte 8086 bzw. 8088-CPU mit hinzugefügten On-Chip-Peripheriegeräten und haben dieselben CPU-Register wie 8086 und 8088 (zusätzlich zu Grenzflächenregistern für die Peripheriegeräte).
Die 8086, 8088, 80186 und 80188 können einen optionalen Floating-Punkt-Koprozessor verwenden, das 8087. Der 8087 erscheint dem Programmierer als Teil der CPU und fügt acht 80-Bit-breite Register, ST (0) zu St (7) hinzu, von denen jeweils numerische Daten in einem von sieben Formaten enthalten können: 32-, 64- oder 80-Bit-Gleitkomma, 16-, 32- oder 64-Bit (binäre) Ganzzahl und 80-Bit-Dezimalbezahlung.[8]: S-6, S-13..S-15 Es hat auch ein eigenes 16-Bit-Statusregister, das über die zugänglich ist fntsw Anweisungen, und es ist üblich, einfach einige seiner Teile zum Verzweigen zu verwenden, indem Sie sie kopieren hinein die normalen Flaggen.[28]
In dem Intel 80286, zu unterstützen Sicherheitsmodus, drei spezielle Register halten Deskriptor -Tabellenadressen (GDTR, LDTR, Idtr) und ein viertes Aufgabenregister (TR) wird für die Aufgabenschaltung verwendet. Das 80287 ist der Floating-Punkt-Koprozessor für den 80286 und hat die gleichen Register wie der 8087 mit denselben Datenformaten.
32-Bit
Mit dem Aufkommen des 32-Bit 80386 Prozessor, die 16-Bit-Allzweckregister, Basisregister, Indexregister, Unterrichtszeiger und Flaggenregister, aber nicht die Segmentregister, wurden auf 32 Bit erweitert. Die Nomenklatur stellte dies durch das Präfix eines "dar"E"(für" erweitert ") zu den Registernamen in x86 Assemblersprache. Somit entspricht das AX-Register den niedrigsten 16 Bit des neuen 32-Bit-EAX-Registers, SI entspricht den niedrigsten 16 Bit ESI usw. Die allgemeinen Register, Basisregister und Indexregister können alle als Basis für die Adressierungsmodi verwendet werden, und alle diese Register, mit Ausnahme des Stapelzeigers können als Index in Adressierungsmodi verwendet werden.
Es wurden zwei neue Segmentregister (FS und GS) hinzugefügt. Mit einer größeren Anzahl von Registern, Anweisungen und Operanden die Maschinensprache Das Format wurde erweitert. Um Rückwärtskompatibilität zu gewährleisten, können Segmente mit ausführbarem Code als 16-Bit- oder 32-Bit-Anweisungen gekennzeichnet werden. Spezielle Präfixe ermöglichen die Einbeziehung von 32-Bit-Anweisungen in ein 16-Bit-Segment oder und umgekehrt.
Der 80386 hatte einen optionalen Floating-Punkt-Koprozessor, der 80387; Es hatte acht 80-Bit-breite Register: ST (0) bis St (7),[29] Wie der 8087 und 80287. Der 80386 könnte auch einen 80287 Coprozessor verwenden.[30] Mit dem 80486 und alle nachfolgenden X86-Modelle, die Floating-Point-Verarbeitungseinheit (FPU), ist on-chip integriert.
Das Pentium mmx acht 64-Bit hinzugefügt MMX Ganzzahlvektorregister (MM0 bis MM7, die mit dem 80-Bit-Weiten-FPU-Stack niedrigere Bits teilen).[31] Mit dem Pentium III, Intel fügte einen 32-Bit hinzu Streaming -SIMD -Erweiterungen (SSE) Steuer-/Statusregister (MXCSR) und acht 128-Bit-SSE-Floating-Punkt-Register (xmm0 bis xmm7).[32]
64-Bit
Beginnend mit dem AMD Opteron Prozessor, die X86-Architektur erweiterte die 32-Bit-Register auf 64-Bit-Register auf ähnliche Weise wie die Verlängerung von 16 bis 32 Bit. Ein R-Prefix (für "Register") identifiziert die 64-Bit-Register (Rax, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RIP) und acht weitere 64-Bit-Generalregister (R8-R15). auch eingeführt in der Schaffung von x86-64. Außerdem wurden acht weitere SSE -Vektorregister (xmm8 - xmm15) zugegeben. Diese Erweiterungen sind jedoch nur im 64-Bit langer Modus. Die Adressierungsmodi wurden im 32-Bit-Modus nicht dramatisch geändert, mit der Ausnahme, dass die Adressierung auf 64 Bit erweitert wurde, die virtuellen Adressen nun auf 64 Bit erweitert wurden (um die Modus-Bits in virtuellen Adressen zu verbieten), und andere Details aus dem Auswahl wurden dramatisch reduziert . Zusätzlich wurde ein Adressmodus hinzugefügt, um Speicherreferenzen relativ auf RIP zu ermöglichen (die Anweisungszeiger), um die Implementierung von zu erleichtern Positionsunabhängiger Code, verwendet in gemeinsamen Bibliotheken in einigen Betriebssystemen.
128-Bit
SIMD -Register xmm0 - xmm15 (xmm0 - xmm31 wenn AVX-512 wird unterstützt).
256-Bit
SIMD registriert ymm0–ymm15 (ymm0–ymm31 wenn AVX-512 wird unterstützt). Die untere Hälfte der YMM -Register karten auf das entsprechende XMM -Register.
512-Bit
SIMD registriert ZMM0–zmm31. Die untere Hälfte der ZMM -Register kartiert auf das entsprechende YMM -Register.
Verschiedener/besonderer Zweck
X86 -Prozessoren mit a Sicherheitsmodus, d.h. Idtr) und ein Aufgabenregister (TR).
32-Bit-X86-Prozessoren (beginnend mit dem 80386) enthalten auch verschiedene spezielle/verschiedene Register wie z. Kontrollregister (CR0 bis 4, CR8 nur für 64-Bit), Debugg -Register (DR0 bis 3, plus 6 und 7), Testregister (Nur TR3 bis 7; 80486) und Modellspezifische Register (MSRS, das mit dem Pentium erscheinen[Ö]).
AVX-512 Hat acht zusätzliche 64-Bit-Maskenregister K0-K7 für die Auswahl von Elementen in einem Vektorregister. Abhängig vom Vektorregister und der Elementbreiten kann nur eine Teilmenge von Bits des Maskenregisters mit einer bestimmten Anweisung verwendet werden.
Zweck
Obwohl die Hauptregister (mit Ausnahme des Anweisungszeigers) in den 32-Bit- und 64-Bit folgende Zwecke:
- AL/AH/AX/EAX/RAX: Akkumulator
- CL/CH/CX/ECX/RCX: Zähler (zur Verwendung mit Schleifen und Zeichenfolgen)
- DL/DH/DX/EDX/RDX: Erweitern Sie die Genauigkeit des Akkumulators (z. B. 32-Bit EAX und EDX für 64-Bit-Ganzzahl-Operationen in 32-Bit-Code).
- BL/BH/BX/EBX/RBX: Basisindex (zur Verwendung mit Arrays)
- SP/ESP/RSP: Stapelzeiger für die obere Adresse des Stapels.
- BP/EBP/RBP: Stack -Basiszeiger für die Haltung der Adresse des Stroms Stapelrahmen.
- Si/ESI/RSI: Quellindex zum Saite Operationen.
- Di/edi/rdi: Zielindex für String -Operationen.
- IP/EIP/RIP: Anweisungszeiger. Hält die Programm zähler, die Adresse der nächsten Anweisung.
Segmentregister:
- CS: Code
- DS: Daten
- SS: Stack
- ES: zusätzliche Daten
- FS: zusätzliche Daten #2
- GS: zusätzliche Daten #3
Für die anderen 8 Register wurden nur im 64-Bit-Modus keine besonderen Zwecke vorgesehen.
Einige Anweisungen kompilieren und führen effizienter aus, wenn Sie diese Register für ihren entworfenen Zweck verwenden. Zum Beispiel verwenden AL als Akkumulator und das Hinzufügen eines sofortigen Bytewerts zu ihm erzeugt die effiziente zu Al hinzufügen Opcode von 04H, während die Verwendung des BL -Registers die Generika und länger erzeugt hinzufügen, um sich zu registrieren Opcode von 80C3H. Ein weiteres Beispiel ist die doppelte Präzisions- und Multiplikation, die speziell mit den AX- und DX -Registern funktioniert.
Moderne Compiler profitierten von der Einführung der SIB Byte (Skalen-Index-Basis-Byte) das ermöglicht es, dass Register einheitlich behandelt werden (Minicomputer-wie). Die Verwendung des SIB-Byte ist jedoch universell nicht optimal, da es längere Codierungen produziert, als es nur bei Bedarf selektiv zu verwenden. (Der Hauptvorteil des SIB -Byte ist die Orthogonalität und die leistungsstärkeren Adressierungsmodi, die es ermöglichen, Anweisungen und die Verwendung von Registern für Adressberechnungen wie die Skalierung eines Index zu sparen.) Einige spezielle Anweisungen haben Priorität im Hardwaredesign verloren und wurde langsamer als äquivalente kleine Codesequenzen. Ein bemerkenswertes Beispiel ist die LODSW -Anweisung.
Struktur
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
---|---|---|---|---|---|---|---|
R? X | |||||||
EX | |||||||
?X | |||||||
?H | ? L |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
---|---|---|---|---|---|---|---|
? | |||||||
?D | |||||||
? W. | |||||||
?B |
16 | 8 |
---|---|
?S |
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
---|---|---|---|---|---|---|---|
R? P | |||||||
E? P | |||||||
?P | |||||||
? Pl |
Hinweis: Die PL-Register sind nur im 64-Bit-Modus erhältlich.
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
---|---|---|---|---|---|---|---|
R? I | |||||||
E? I | |||||||
?ICH | |||||||
? Il |
Hinweis: Die IL-Register sind nur im 64-Bit-Modus erhältlich.
64 | 56 | 48 | 40 | 32 | 24 | 16 | 8 |
---|---|---|---|---|---|---|---|
RUHE IN FRIEDEN | |||||||
EIP | |||||||
IP |
Betriebsmodi
Realer Modus
Echter Adressmodus,[33] häufig als realem Modus bezeichnet, ist ein Betriebsmodus von 8086 und später x86-kompatibel CPUs. Der reale Modus ist durch einen 20-Bit-segmentierten Speicheradressraum gekennzeichnet (dh nur etwas mehr als 1 MiB des Speichers kann angegangen werden[p]), direkter Softwarezugriff auf periphere Hardware und kein Konzept von Gedächtnisschutz oder Multitasking auf Hardwareebene. Alle x86 -CPUs in der 80286 Serie und später im realen Modus bei Power-on; 80186 CPUs und früher hatte nur einen Betriebsmodus, der in späteren Chips dem realen Modus entspricht. (Auf der IBM PC -Plattform direkter Softwarezugriff auf die IBM BIOS Routinen sind nur im realen Modus verfügbar, da BIOS für den realen Modus geschrieben ist. Dies ist jedoch keine Eigenschaft der X86 -CPU, sondern des IBM BIOS -Designs.)
Um mehr als 64 KB Speicher zu verwenden, müssen die Segmentregister verwendet werden. Dies führte zu großen Komplikationen für Compiler-Implementierer, die merkwürdige Zeigermodi wie "nahe", "weit" und "riesig" eingeführt haben, um die implizite Natur der segmentierten Architektur zu unterschiedlichem Maße zu nutzen, wobei einige Zeiger 16-Bit-Offsets in implizierten Segmenten und anderen enthalten Zeiger mit Segmentadressen und Offsets in Segmenten. Es ist technisch gesehen möglich, bis zu 256 KB Speicher für Code und Daten mit bis zu 64 KB für Code zu verwenden, indem alle vier Segmentregister einmal eingestellt werden und dann nur 16-Bit Adressspeicher, aber dies führt zu erheblichen Einschränkungen der Art und Weise, wie Daten angesprochen werden können, und Speicheroperanden können kombiniert werden und verstößt gegen die architektonische Absicht der Intel -Designer, die für separate Datenelemente (z. B. Arrays, Strukturen, Codeeinheiten) gilt, um zu sein. In separaten Segmenten enthalten und von ihren eigenen Segmentadressen angesprochen, in neuen Programmen, die nicht von früheren 8-Bit-Prozessoren mit 16-Bit-Adressräumen portiert werden.
Unwirklicher Modus
Der unwirkliche Modus wird von etwa 16-Bit verwendet Betriebssysteme und rund 32-Bit Bootlader.
Systemverwaltungsmodus
Der Systemverwaltungsmodus (SMM) wird nur von der Systemfirmware verwendet (BIOS/Uefi), nicht durch Betriebssysteme und Anwendungssoftware. Der SMM -Code wird in SMRAM ausgeführt.
Sicherheitsmodus
Zusätzlich zum realen Modus unterstützt der Intel 80286 den geschützten Modus und erweitert adressierbar physikalischer Speicher bis 16 Mb und adressierbar virtueller Speicher bis 1Gbund sorgen geschützter Speicher, was verhindert, dass Programme sich gegenseitig korrumpieren. Dies erfolgt durch die Verwendung der Segmentregister nur zum Speichern eines Index in eine Deskriptorentabelle, die im Speicher gespeichert ist. Es gibt zwei solcher Tische, die Globale Deskriptortabelle (GDT) und die Lokale Deskriptortabelle (LDT), jeweils bis zu 8192 Segmentdeskriptoren, wobei jedes Segment Zugriff auf 64 kb Speicher bietet. Im 80286 bietet ein Segmentdeskriptor einen 24-Bit Basisadresseund diese Basisadresse wird einem 16-Bit-Offset hinzugefügt, um eine absolute Adresse zu erstellen. Die Basisadresse aus der Tabelle erfüllt die gleiche Rolle wie der wörtliche Wert des Segmentregisters im realen Modus. Die Segmentregister wurden von direkten Registern in indirekte Register umgewandelt. Jedem Segment kann eines von vier zugewiesen werden Ring Levels, die für hardwarebasierte Stufen verwendet werden Computersicherheit. Jeder Segmentdeskriptor enthält auch ein Segmentgrenzefeld, das den maximalen Offset angibt, der mit dem Segment verwendet werden kann. Da Offsets 16 Bit sind, sind die Segmente im 80286 geschützten Modus immer noch auf jeweils 64 KB begrenzt.[34]
Jedes Mal, wenn ein Segmentregister im geschützten Modus geladen wird, muss der 80286 einen 6-Byte-Segmentdeskriptor aus dem Speicher in eine Reihe versteckter interner Register lesen. Daher ist das Ladesegmentregister im geschützten Modus viel langsamer als im realen Modus, und das Ändern von Segmenten ist sehr häufig zu vermeiden. Die tatsächlichen Speichervorgänge unter Verwendung des geschützten Modus -Segmente werden nicht stark verlangsamt, da die 80286 und später Hardware über die Segmentgrenze parallel zur Anweisungsausführung überprüft werden.
Das Intel 80386 Erweiterte Offsets und auch das Segment -Grenzfeld in jedem Segmentdeskriptor auf 32 Bit, sodass ein Segment den gesamten Speicherplatz überspannen kann. Es führte auch die Unterstützung im geschützten Modus für ein Paging, ein Mechanismus, der es ermöglicht, Page zu verwenden virtueller Speicher (mit 4 KB Seitengröße). Durch Paging kann die CPU eine Seite des virtuellen Speicherplatzes auf eine beliebige Seite des physischen Speicherplatzes abbilden. Dazu werden zusätzliche Zuordnungstabellen im Speicher mit dem Namen Seitentabellen verwendet. Der geschützte Modus im 80386 kann mit aktivierter oder deaktiviertem Paging arbeiten. Der Segmentierungsmechanismus ist immer aktiv und erzeugt virtuelle Adressen, die dann vom Paging -Mechanismus zugeordnet werden, wenn er aktiviert ist. Der Segmentierungsmechanismus kann auch effektiv deaktiviert werden, indem alle Segmente so festgelegt werden, dass eine Basisadresse von 0 und Größengrenze entspricht, die dem gesamten Adressraum entspricht. Dies erfordert auch eine minimalgroße Segmentdeskriptor-Tabelle von nur vier Deskriptoren (da die FS- und GS-Segmente nicht verwendet werden müssen).[q]
Paging wird ausgiebig von modernen Multitasking -Betriebssystemen verwendet. Linux, 386bs und Windows NT wurden für den 386 entwickelt, da es die erste Intel-Architektur-CPU war, die Paging- und 32-Bit-Segment-Offsets unterstützt. Die 386 Architektur wurde zur Grundlage aller weiteren Entwicklung in der X86 -Serie.
X86 -Prozessoren, die den geschützten Modus unterstützen Realer Modus Für die Rückwärtskompatibilität mit der älteren 8086 -Prozessoren. Beim Power-on (a.k.a. Booten), der Prozessor initialisiert im realen Modus und beginnt dann mit der Ausführung von Anweisungen. Betriebssystem -Startcode, der möglicherweise gespeichert werden kann Nur-Lese-Speicher, kann den Prozessor in die stellen Sicherheitsmodus Paging und andere Funktionen aktivieren). Anwenden Sie nicht im geschützten Modus. Umgekehrt ist die Segmentarithmetik, eine übliche Praxis im realen Moduscode, im geschützten Modus nicht zulässig.
Virtueller 8086 -Modus
Es gibt auch einen Untermodus des Betriebs im 32-Bit-geschützten Modus (a.k.a. 80386 geschützter Modus) genannt Virtueller 8086 -Modus, auch bekannt als V86 -Modus. Dies ist im Grunde genommen ein spezieller Hybrid -Betriebsmodus, mit dem reale Modus -Programme und Betriebssysteme ausgeführt werden können, während sie unter der Kontrolle eines Betriebssystems für geschützte Modus Supervisor ausgeführt werden. Dies ermöglicht eine große Flexibilität beim Ausführen von Programmen für geschützte Modus und realen Modus gleichzeitig. Dieser Modus ist ausschließlich für die 32-Bit-Version des geschützten Modus verfügbar. Es existiert nicht in der 16-Bit-Version des geschützten Modus oder im langen Modus.
Langer Modus
Mitte der neunziger Jahre war es offensichtlich, dass der 32-Bit-Adressraum der X86-Architektur seine Leistung in Anwendungen einschränkte, die große Datensätze erfordern. Ein 32-Bit-Adressraum würde es dem Prozessor ermöglichen, nur 4 GB Daten direkt anzusprechen, eine Größe, die von Anwendungen wie übertroffen wird Videoverarbeitung und Datenbankmotoren. Mit 64-Bit-Adressen ist es möglich, 16 direkt zu adressierenEIB von Daten, obwohl die meisten 64-Bit-Architekturen den Zugriff auf den vollständigen 64-Bit-Adressraum nicht unterstützen; Beispielsweise unterstützt AMD64 nur 48 Bit aus einer 64-Bit-Adresse, die in vier Paging-Ebenen aufgeteilt werden.
Im Jahr 1999, AMD veröffentlichte eine (fast) vollständige Spezifikation für a 64-Bit Erweiterung der x86 -Architektur, die sie nannten x86-64 mit behaupteten Absichten zu produzieren. Dieses Design wird derzeit in fast allen X86 -Prozessoren verwendet, wobei einige Ausnahmen für bestimmt sind eingebettete Systeme.
Massenproduktion x86-64 Chips für den allgemeinen Markt waren vier Jahre später im Jahr 2003 verfügbar, nachdem die Zeit für die Arbeitsprototypen ausgegeben worden war, um sie zu testen und zu verfeinern. Etwa zur gleichen Zeit der ursprüngliche Name x86-64 wurde in geändert AMD64. Der Erfolg der AMD64-Prozessorenlinie in Verbindung mit der lauwarmen Rezeption der IA-64-Architektur zwang Intel, eine eigene Implementierung des AMD64-Anweisungssatzes zu veröffentlichen. Intel hatte zuvor Unterstützung für AMD64 implementiert[35] Aber entschied sich, es nicht in der Hoffnung zu ermöglichen, dass AMD AMD64 nicht auf den Markt bringen würde, bevor der neue IA-64-Unterrichtssatz von Itanium weit verbreitet war. Es brandmarkte seine Implementierung von AMD64 als EM64Tund später umbenannt Intel 64.
In seinen Literatur- und Produktversionsnamen beziehen sich Microsoft und Sun zusammen auf AMD64/Intel 64 als x64 in den Fenstern und Solaris Betriebssysteme. Linux -Verteilungen Beachten Sie es entweder als "x86-64", seine Variante "x86_64" oder "AMD64". BSD Systeme verwenden "AMD64" während Mac OS Verwendet "x86_64".
Der lange Modus ist hauptsächlich eine Erweiterung des 32-Bit-Befehlssatzes, aber im Gegensatz zum 16-zu-32-Bit-Übergang wurden viele Anweisungen im 64-Bit-Modus fallen gelassen. Dies wirkt sich nicht auf die tatsächliche Binärverwalter -Kompatibilität aus (die den Legacy -Code in anderen Modi ausführen würde, die diese Anweisungen unterstützen), verändert jedoch die Art und Weise, wie Assembler und Compiler für neue Code funktionieren müssen.
Dies war das erste Mal, dass a Haupt Die Erweiterung der X86 -Architektur wurde von einem anderen Hersteller als Intel eingeleitet und entstanden. Es war auch das erste Mal, dass Intel die Technologie dieser Art von einer externen Quelle akzeptierte.
Erweiterungen
Schwimmende Punkteinheit
Frühe X86 -Prozessoren könnten mit erweitert werden mit Schwimmpunkt Hardware in Form einer Reihe von Gleitkomma numerisch Co-Prozessoren mit Namen wie 8087, 80287 und 80387, abgekürzte X87. Dies war auch als NPX (npx (Numerische Prozessorerweiterung), ein passender Name seit den Coprozessoren, die hauptsächlich für Floating-Punkt-Berechnungen verwendet wurden, führten auch ganzzahlige Operationen sowohl für binäre als auch für Dezimalformate durch. Mit sehr wenigen Ausnahmen haben die 80486 und die nachfolgenden X86 -Prozessoren diese X87 -Funktionalität auf Chip integriert, wodurch die X87 -Anweisungen a de facto Integraler Teil des X86 -Befehlssatzes.
Jedes X87 -Register, bekannt als ST (0) bis ST (7), ist 80 Bit breit und speichert Zahlen in der IEEE Floating-Punkt-Standard doppelt erweitertes Präzisionsformat. Diese Register werden als Stapel mit ST (0) als Oberseite organisiert. Dies geschah, um den Opcode-Raum zu sparen, und die Register sind daher nur für die beiden Operanden in einem Register-Register-Anweisungen zufällig zugänglich. ST0 muss immer einer der beiden Operanden sein, entweder die Quelle oder das Ziel, unabhängig davon, ob der andere Operand ST (x) oder ein Speicheroperand ist. Der zufällige Zugriff auf die Stapelregister kann jedoch durch eine Anweisung erhalten werden, die alle angegebenen ST (x) mit ST (0) ausgetauscht.
Die Operationen umfassen arithmetische und transzendentale Funktionen, einschließlich trigonometrischer und exponentieller Funktionen sowie Anweisungen, die gemeinsame Konstanten (wie 0; 1; 1, die Basi Der Stapel registriert. Während die Ganzzahlfähigkeit häufig übersehen wird, kann der X87 bei größeren Ganzzahlen mit einer einzelnen Anweisung als 8086, 80286, 80386 oder x86-CPU ohne 64-Bit-Erweiterungen und wiederholte Ganzzahlen auch bei kleinen Werten (z. B.,, z. B.,, wiederholt. 16-Bit) kann durch Ausführen von Ganzzahlanweisungen auf der X86-CPU und dem x87 parallel beschleunigt werden. (Die X86 -CPU läuft weiter, während der X87 -Coprozessor berechnet wird, und der x87 legt ein Signal auf den x86 fest, wenn er fertig ist, oder unterbricht das X86, wenn er aufgrund eines Fehlers Aufmerksamkeit benötigt.)
MMX
Mmx ist a Simd Anweisungssatz von Intel entworfen und 1997 für die eingeführt Pentium mmx Mikroprozessor.[36] Der MMX -Befehlssatz wurde aus einem ähnlichen Konzept entwickelt Intel i860. Es wird bei den meisten nachfolgenden IA-32-Prozessoren von Intel und anderen Anbietern unterstützt. MMX wird normalerweise für die Videoverarbeitung verwendet (z. B. in Multimedia -Anwendungen).[37]
MMX fügte 8 neue hinzu Register an die Architektur, bekannt als MM0 bis MM7 (von nun an als als bezeichnet als als Mmn). In Wirklichkeit diese neuen Register waren nur Aliase für die vorhandenen X87 -FPU -Stapelregister. Daher würde alles, was dem Gleitkomma-Stapel angetan wurde, auch die MMX-Register beeinflussen. Im Gegensatz zum FP -Stack waren diese MMN -Register nicht relativ und daher zufällig zugänglich. Der Anweisungssatz übernahm die stackartige Semantik nicht, so dass vorhandene Betriebssysteme beim Multitasking ohne Änderungen den Registerstatus noch korrekt speichern und wiederherstellen konnten.[36]
Jeder der MMN-Register ist 64-Bit-Ganzzahlen. Eines der Hauptkonzepte des MMX -Unterrichtssatzes ist jedoch das Konzept von verpackte Datentypen, was bedeutet, anstatt das gesamte Register für eine einzelne 64-Bit-Ganzzahl zu verwenden (Quadwort), man kann es verwenden, um zwei 32-Bit-Ganzzahlen zu enthalten (Doppelwort), vier 16-Bit-Ganzzahlen (Wort) oder acht 8-Bit-Ganzzahlen (Byte). Angesichts der Tatsache, dass die 64-Bit-MMN-Register des MMX auf den FPU-Stapel veranlasst sind und jedes der Gleitkomma-Register 80 Bit breit ist, sind die oberen 16 Bit der Schwimmpunktregister in MMX nicht verwendet. Diese Bits werden durch jede MMX-Anweisung auf alle eingestellt, die der schwimmenden Punktdarstellung von entsprechen Nans oder unendlich.[36]
3dnow!
1997 führte AMD 3DNOW vor!.[38] Die Einführung dieser Technologie fiel mit dem Aufstieg von zusammen 3d Unterhaltungsanwendungen und wurde entwickelt, um die CPUs zu verbessern Vektorverarbeitung Leistung grafischintensiver Anwendungen. 3D -Videospielentwickler und 3D -Grafik -Hardware -Anbieter verwenden 3DNOW! um ihre Leistung bei AMDs zu verbessern K6 und Athlon Reihe von Prozessoren.[39]
3dnow! wurde als natürliche Entwicklung von MMX von Ganzzahlen bis zum schwimmenden Punkt konzipiert. Daher verwendet es genau das gleiche Register -Namenskonvention wie MMX, dh MM0 bis MM7.[40] Der einzige Unterschied besteht darin, dass anstatt Ganzzahlen in diese Register zu packen, zwei Einzelprezisions-Gleitpunkt Zahlen sind in jedes Register eingebaut. Der Vorteil des Aliasing der FPU -Register besteht darin, dass dieselben Anweisungen und Datenstrukturen, die zum Speichern des Zustands der FPU -Register verwendet werden, auch zum Speichern von 3DNOW verwendet werden können! Registerstaaten. Daher müssen keine besonderen Änderungen an Betriebssystemen vorgenommen werden, die sonst nichts über sie wissen würden.[41]
Sse und Avx
1999 führte Intel die Streaming SIMD -Erweiterungen (SSE) ein Befehlssatz, folgt im Jahr 2000 mit SSE2. Die erste Ergänzung ermöglichte die Auslastung grundlegender Gleitkommaoperationen aus dem X87-Stapel und das zweite MMX fast veraltet und ermöglichte es, dass die Anweisungen realistisch von herkömmlichen Compilern angegriffen werden. Im Jahr 2004 zusammen mit dem eingeführt Prescott Überarbeitung der Pentium 4 Prozessor, SSE3 fügte einen bestimmten Speicher hinzu und Faden-Anweisungen zur Steigerung der Leistung von Intel Hyperthreading Technologie. AMD lizenzierte den SSE3 -Befehlssatz und implementierte die meisten SSE3 -Anweisungen für die Prozessoren von Revision E und später Athlon 64. Der Athlon 64 unterstützt Hyperthreading nicht und fehlt die SSE3 -Anweisungen, die nur für Hyperthreading verwendet werden.[42]
SSE hat alle älteren Verbindungen zum FPU -Stapel verworfen. Dies bedeutete auch, dass dieser Anweisungssatz alle älteren Verbindungen zu früheren Generationen von SIMD -Befehlssätzen wie MMX verworfen hat. Aber es befreite die Designer und ermöglichte es ihnen, größere Register zu verwenden, die nicht durch die Größe der FPU -Register eingeschränkt sind. Die Designer haben acht 128-Bit-Register erstellt, XMM0 bis XMM7. (Notiz: in AMD64Die Anzahl der SSE XMM -Register wurde von 8 auf 16 erhöht.) Der Nachteil war jedoch, dass Betriebssysteme ein Bewusstsein für diese neue Reihe von Anweisungen haben mussten, um ihre Registerzustände zu retten. Daher erstellte Intel eine leicht modifizierte Version des geschützten Modus, die als erweiterter Modus bezeichnet wird und die Verwendung von SSE -Anweisungen ermöglicht, während sie im regulären geschützten Modus deaktiviert bleiben. Ein Betriebssystem, das sich der SSE bewusst ist, aktiviert den verbesserten Modus, während ein nicht bekanntes Betriebssystem nur in den herkömmlichen geschützten Modus eingeht.
SSE ist ein SIMD-Befehlssatz, der nur bei Gleitkommawerten wie 3DNOW! Im Gegensatz zu 3Dnow! Es setzt alle Legacy -Verbindung zum FPU -Stapel. Weil es größere Register als 3dnow!, Hat sse doppelt so viele packen mit einfacher Genauigkeit schwebt in seine Register. Die ursprüngliche SSE war nur auf einzelne Präzisionsnummern wie 3DNOW! Beschränkt. Der SSE2 führte die Fähigkeit zum Packen vor Doppelte Genauigkeit Zahlen auch, welches 3dnow! Hatte keine Möglichkeit zu tun, da eine doppelte Präzisionszahl eine Größe von 64 Bit beträgt, was die volle Größe eines einzelnen 3DNOW hätte! MMN Register. Bei 128 Bit könnten die SSE XMMN -Register zwei doppelte Präzisionsschwimmer in ein Register einpacken. Somit ist SSE2 für wissenschaftliche Berechnungen viel besser geeignet als für SSE1 oder 3DNOW!, Die nur auf einzelne Präzision beschränkt waren. SSE3 führt keine zusätzlichen Register ein.[42]
Die Advanced Vector Extensions (AVX) verdoppelten die Größe der SSE-Register auf 256-Bit-YMM-Register. Außerdem wurde das Vex -Codierungsschema eingeführt, um die größeren Register aufzunehmen, sowie einige Anweisungen für Permute -Elemente. AVX2 führte keine zusätzlichen Register ein, war aber für die Ergänzung zur Maskierung bemerkenswert. versammelnund Shuffle -Anweisungen.
AVX-512 verfügt über eine weitere Erweiterung auf 32 512-Bit-ZMM-Register und ein neues Evex-Schema. Im Gegensatz zu seinen Vorgängern mit einer monolithischen Erweiterung ist es in viele Teilmengen unterteilt, die bestimmte CPUs -Modelle implementieren können.
Physische Adressverlängerung (PAE)
Erweiterung der physischen Adresse oder PAE wurde zuerst in den Intel hinzugefügt Pentium Pround später von AMD In den Athlon -Prozessoren,[43] So können bis zu 64 GB RAM behandelt werden. Ohne PAE ist der physische RAM im 32-Bit-Schutzmodus normalerweise auf 4 begrenztGb. PAE definiert eine andere Seitenstruktur mit breiteren Seitentabellen und eine dritte Ebene der Seitenstufe, wodurch zusätzliche physische Adresse ermöglicht wird. Obwohl die ersten Implementierungen auf 32-Bit-Prozessoren theoretisch bis zu 64 GB RAM unterstützten, haben Chipsatz und andere Plattformeinschränkungen häufig das eingeschränkt, was tatsächlich verwendet werden konnte. x86-64 Prozessoren definieren Seitentabellenstrukturen, die theoretisch bis zu 52 Bits physischer Adressierung zulassen erkannte. Auf dem X86-64-Prozessoren-PAE-Modus muss vor dem Wechsel aktiv sein langer Modusund muss während der Zeit aktiv bleiben langer Modus Ist aktiv, während es im langen Modus keinen "Nicht-Pae" -Modus gibt. Der PAE -Modus wirkt sich nicht auf die Breite linearer oder virtueller Adressen aus.
x86-64
In den 2000er Jahren waren 32-Bit-X86-Prozessorenlimits in der Speicheradressierung ein Hindernis für ihre Verwendung in leistungsstarken Computerclustern und leistungsstarken Desktop-Workstations. Der 32-Bit-X86 im Alter von 32 Bit konkurrierte mit viel fortgeschritteneren 64-Bit-RISC-Architekturen, die viel mehr Speicher ansprechen könnten. Intel und das gesamte X86-Ökosystem benötigten 64-Bit-Speicheradressierung, wenn X86 die 64-Bit-Computer-Ära überleben sollte, da die Workstation- und Desktop-Softwareanwendungen bald die Grenzen der 32-Bit-Speicheradressierung erreichen sollten. Intel war jedoch der Ansicht, dass es der richtige Zeitpunkt war, einen mutigen Schritt zu machen und den Übergang zu 64-Bit-Desktop-Computern für einen Übergang von der X86-Architektur im Allgemeinen zu verwenden, ein Experiment, das letztendlich fehlschlug.
Im Jahr 2001 versuchte Intel, eine nicht x86 64-Bit-Architektur mit dem Namen IA-64 in seinem Itanium Prozessor, der zunächst auf die abzielt High Performance Computing Markt, in der Hoffnung, dass er schließlich den 32-Bit-X86 ersetzen würde.[44] Während IA-64 mit X86 unvereinbar war, lieferte der Itanium-Prozessor Emulation Fähigkeiten zur Übersetzung von X86-Anweisungen in IA-64, dies wirkte sich jedoch so stark auf die Leistung von X86-Programmen aus, dass es selten, wenn überhaupt, für die Benutzer tatsächlich nützlich war: Programmierer sollten X86-Programme für die IA-64-Architektur oder ihre Leistung auf Itanium neu schreiben Würde Größenordnungen schlechter sein als bei einem echten X86 -Prozessor. Der Markt lehnte den Itanium -Prozessor ab, seit er kaputt ging Rückwärtskompatibilität und es wurde vorgezogen, X86-Chips weiter zu verwenden, und nur sehr wenige Programme wurden für IA-64 umgeschrieben.
AMD beschloss, einen weiteren Weg in Richtung 64-Bit-Speicheradressierung zu gehen und sicherzustellen, dass die Rückwärtskompatibilität nicht leiden würde. Im April 2003 veröffentlichte AMD den ersten X86-Prozessor mit 64-Bit-Allzweckregistern, die Opteron, in der Lage, viel mehr als 4 anzusprechenGb des virtuellen Speichers mit dem neuen x86-64 Erweiterung (auch als AMD64 oder X64 bekannt). Die 64-Bit-Erweiterungen der X86-Architektur wurden nur in der neu eingeführten langer ModusDaher könnten 32-Bit- und 16-Bit-Anwendungen und Betriebssysteme einfach weiterhin einen AMD64-Prozessor in geschützten oder anderen Modi verwenden, ohne dass nur das geringste Opfer der Leistung ist[45] und mit voller Kompatibilität zurück zu den ursprünglichen Anweisungen des 16-Bit-Intel 8086.[46]: 13–14 Der Markt reagierte positiv und übernahm die 64-Bit-AMD-Prozessoren sowohl für leistungsstarke Anwendungen als auch für Unternehmens- oder Heimcomputer.
Als Intel sah, dass der Markt den inkompatiblen Itanium-Prozessor und Microsoft, der AMD64 unterstützt, ablehnt, musste er reagieren und seinen eigenen X86-64-Prozessor einführte, die Prescott Pentium 4, im Juli 2004.[47] Infolgedessen wird der Itaniumprozessor mit seinem IA-64-Befehlssatz selten verwendet und x86 durch seine X86-64-Inkarnation ist immer noch die dominierende CPU-Architektur in nicht eingefassten Computern.
x86-64 stellte auch die vor Nx bit, was einen gewissen Schutz vor Sicherheitsfehler bietet, die durch verursacht werden durch Pufferüberschreitungen.
Infolge des 64-Bit-Beitrags von AMD zur X86-Abstammung und ihrer anschließenden Akzeptanz durch Intel stellte die 64-Bit-RISC-Architekturen eine Bedrohung für das X86-Ökosystem auf und verschwanden fast aus dem Arbeitsstationsmarkt. x86-64 begann in mächtig eingesetzt zu werden Supercomputer (in seinem AMD Opteron und Intel Xeon Inkarnationen), ein Markt, der zuvor der natürliche Lebensraum für 64-Bit-RISC-Designs war (wie die IBM -Leistungsmikroprozessoren oder Sparc Prozessoren). Der große Sprung in Richtung 64-Bit-Computing und die Wartung der Rückwärtskompatibilität mit 32-Bit- und 16-Bit-Software ermöglichten es der X86-Architektur heute, heute zu einer äußerst flexiblen Plattform zu werden, wobei X86-Chips von kleinen Systemen mit geringer Leistung verwendet werden (zum Beispiel, von kleinen Systemen mit geringer Leistung, Intel Quark und Intel Atom) zu schnellen Gaming -Desktop -Computern (zum Beispiel, Intel Core i7 und AMD FX/Ryzen) und sogar große Supercomputing dominieren Cluster, effektiv nur die ARM 32-Bit- und 64-Bit-RISC-Architektur als Konkurrent in der Smartphone und Tablette Markt.
Virtualisierung
Vor 2005 konnten X86 -Architekturverarbeiter die nicht erfüllen Popek- und Goldberg -Anforderungen - Eine Spezifikation für die 1974 erstellte Virtualisierung durch Gerald J. Popek und Robert P. Goldberg. Sowohl proprietär als auch open-Source x86 Virtualisierung Hypervisorprodukte wurden mit Verwendung entwickelt Software-basierte Virtualisierung. Proprietäre Systeme umfassen Hyper-V, Parallelen Workstation, VMware ESX, VMware Workstation, VMware Workstation Player und Windows Virtual PC, während frei und offen Systeme umfassen Qemu, Kernelbasierte virtuelle Maschine, Virtualbox, und Xen.
Die Einführung der Anweisungssätze von AMD-V und Intel VT-X im Jahr 2005 ermöglichte es X86-Prozessoren, die Anforderungen an die Virtualisierung von Popek und Goldberg zu erfüllen.[48]
AES
Siehe auch
- x86 Assemblersprache
- x86 Anweisungseinträge
- X86 Speichersegmentierung
- CPUID
- Itanium
- x86-64
- 680x0, eine konkurrierende Architektur in der 16- und frühen 32 -Bit -Epochen
- Powerpc, eine konkurrierende Architektur in den späteren 32-Bit- und 64-Bit-Epochen
- Mikroarchitektur
- Liste der AMD -Mikroprozessoren
- Liste der Intel -Mikroprozessoren
- Liste der Intel CPU -Mikroarchitekturen
- Liste der Via -Mikroprozessoren
- Liste der X86 -Hersteller
- Eingangs-/Ausgangsbasisadresse
- Interrupt -Anfrage
- IAPX
- Transiente Ausführungs -CPU -Sicherheitsanfälligkeit
- Tick–tock model
- Virtuelle Legacy -Kabel
Anmerkungen
- ^ im Gegensatz zu den Mikroarchitektur (und spezifische elektronische und physikalische Implementierung) verwendet für ein bestimmtes Mikroprozessordesign.
- ^ Das Gitterkompass Laptop zum Beispiel.
- ^ Einschließlich der 8088, 80186, 80188 und 80286 Prozessoren.
- ^ Ein solches System enthielt auch die übliche Mischung aus Standard 7400 Serie Unterstützungskomponenten, einschließlich Multiplexer, Puffer und Logik Kleber.
- ^ Die tatsächliche Bedeutung von IAPX war Intel Advanced Performance Architektur, oder manchmal Intel Advanced Processor Architecture.
- ^ Ende 1981 bis Anfang 1984 ungefähr
- ^ Der Markt für eingebettete Prozessor ist um mehr als 25 verschiedene Dienste besiedelt Architekturen, was aufgrund der Preissensitivität, geringer Leistung und der Einfachheit der Hardware -Einfachheit über den x86 zahlenmäßig unterlegen ist.
- ^ Der NEC V20 und V30 stellten auch den älteren 8080 -Befehlssatz zur Verfügung, sodass PCs mit diesen Mikroprozessoren ausgestattet sind, um CP/M -Anwendungen mit voller Geschwindigkeit zu betreiben (d. H. Ohne die Simulation einer 8080 nach Software zu simulieren).
- ^ Fabeless Unternehmen haben den Chip entworfen und ein anderes Unternehmen für die Herstellung von Fabbed, während Fabbed Companies sowohl das Design als auch die Herstellung selbst durchführen. Einige Unternehmen begannen als fabelhafte Hersteller und wurden später zu Fabless -Designern, ein solches Beispiel war AMD.
- ^ Es hatte jedoch eine langsamere FPU, die etwas ironisch ist, als Cyrix als Designer für schnell schwimmende Punkteinheiten für X86-Prozessoren begann.
- ^ Intel gab sein "x86" -Namenschema mit dem auf P5 Pentium im Jahr 1993 (als Zahlen konnte nicht Markenzeichen). Der Begriff X86 wurde jedoch bereits unter Technikern, Compiler -Schriftstellern usw. etabliert.
- ^ 16-Bit- und 32-Bit-Mikroprozessoren wurden 1978 bzw. 1985 eingeführt; Die Pläne für 64-Bit wurden 1999 bekannt gegeben und von 2003 und weiterhin und nach und nach eingeführt.
- ^ Einige "CISC" -Desendee wie die PDP-11, kann zwei verwenden.
- ^ Das liegt daran, dass die ganzzahlige Arithmetik zwischen nachfolgenden Bits (im Gegensatz zu einfachen bitgewiehenen Operationen) erzeugt.
- ^ Zwei MSRs von besonderem Interesse sind sysenter_eip_msr und sysenter_esp_msr, die auf dem Pentium® II -Prozessor eingeführt wurden, der die Adresse des Kernel -Modus -System -Service -Handlers und des entsprechenden Kernel -Stack -Zeigers speichert. Sysenter_eip_msr und sysenter_esp_msr werden während des Systemstarts initialisiert und werden von den Anweisungen von Sysenter (Intel) oder SYSCALL (AMD) verwendet, um schnelle Systemaufrufe zu erzielen, etwa dreimal schneller als die zuvor verwendete Software -Interrupt -Methode.
- ^ Da eine segmentierte Adresse die Summe eines 16-Bit-Segments multipliziert mit 16 und einem 16-Bit-Offset ist, beträgt die maximale Adresse 1.114.095 (10ffef Hex) für eine Adressbarkeit von 1.114.096 Bytes = 1 Mb+ 65.520 Bytes. Vor dem 80286 hatte X86 CPUs nur 20 physische Adresslinien (Adressbitsignale), so Null). Seit dem 80286 verfügen alle X86 -CPUs über mindestens 24 physische Adresslinien, und Bit 20 der berechneten Adresse wird im realen Modus in den Adressbus gebracht, sodass die CPU die vollständigen 1.114.096 -Bytes mit einer X86 -Segment -Adresse ansprechen kann. Auf der beliebten IBM-PC-Plattform wurde Maschinen mit einem 80286 oder höheren Schalthardware zum Deaktivieren des 21. Adressbits hinzugefügt, sodass alle Programme für 8088/8086-basierte Modelle ausgeführt werden konnten, während eine neuere Software die "Hoch" nutzen kann. Speicher im realen Modus und im geschützten Modus 16 MB oder größerer Adressraum - siehe A20 Gate.
- ^ Ein zusätzlicher Deskriptor -Datensatz oben in der Tabelle ist ebenfalls erforderlich, da die Tabelle bei Null beginnt, aber der minimale Deskriptorindex, der in ein Segmentregister geladen werden kann, beträgt 1; Der Wert 0 ist reserviert, um ein Segmentregister darzustellen, das auf kein Segment verweist.
Verweise
- ^ Pryce, Dave (11. Mai 1989). "80486 32-Bit-CPU bricht Neuland in der Chip-Dichte und der Betriebsleistung. (Intel Corp.) (Produktanzeige) edn" (Pressemitteilung).
- ^ Alcorn, Paul (9. Februar 2022). "AMD stellt einen Marktanteil aller Zeiten als Intel-Gewinne in Desktop- und Notebook-PCs auf". Toms Hardware.
- ^ Brandon, Jonathan (15. April 2015). "Die Wolke jenseits von x86: Wie alte Architekturen ein Comeback machen". ICloud pe. Business Cloud News. Archiviert vom Original am 19. August 2021. Abgerufen 23. November, 2020.
Trotz der Dominanz von x86 im Rechenzentrum ist es schwierig, die Geräuschanbieter in den letzten Jahren mit nicht x86 Architekturen wie Arm zu ignorieren.
- ^ "Juni 2022". Top500.
- ^ Larabel, Michael (30. Mai 2022). "AMD-betriebenes Frontier Supercomputer Top500 bei 1,1 Exaflops, Tops Green500 auch". Phoronix. Abgerufen 1 Juni, 2022.
- ^ Dvorak, John C. "Was ist mit dem Intel IAPX432 passiert?". Dvorak.org. Archiviert vom Original am 25. November 2017. Abgerufen 18. April, 2014.
- ^ IAPX 286 Programmer Referenz (PDF). Intel. 1983. Archiviert (PDF) Aus dem Original am 28. August 2017. Abgerufen 28. August, 2017.
- ^ a b IAPX 86, 88 Benutzerhandbuch (PDF). Intel. August 1981. Archiviert (PDF) Aus dem Original am 28. August 2017. Abgerufen 28. August, 2017.
- ^ Edwards, Benj (16. Juni 2008). "Geburt eines Standards: Der Intel 8086 -Mikroprozessor". PC Welt. Archiviert von das Original am 26. September 2010. Abgerufen 14. September, 2014.
- ^ Stanley Mazor (Januar -März 2010). "Intel's 8086". IEEE Annals of the History of Computing. 32 (1): 75–79. doi:10.1109/mahc.2010.22. S2CID 16451604.
- ^ "AMD gibt neue Technologien im Microprozessor -Forum offen" (Pressemitteilung). AMD. 5. Oktober 1999. archiviert von das Original am 2. März 2000.
"Die Prozessorarchitekten haben immer wieder die unelegante X86 -Architektur angesehen und erklärt, dass sie nicht gestreckt werden kann, um den neuesten Innovationen gerecht zu werden", sagte Nathan Brookwood, Hauptanalyst bei Insight 64.
- ^ Burt, Jeff (5. April 2010). "Microsoft, um Intel Itanium Support zu beenden". Eweek. Abgerufen 2. Juni, 2022.
- ^ a b "Intel 64 und IA-32 Architekturen-Optimierungsreferenzhandbuch" (PDF). Intel. September 2019. 3.4.2.2 Optimierung für Makrofusion. Archiviert (PDF) vom Original am 14. Februar 2020. Abgerufen 7. März, 2020.
- ^ a b Nebel, Agner. "Die Mikroarchitektur von Intel, AMD und über CPUs" (PDF). p. 107. Archiviert (PDF) Aus dem Original am 22. März 2019. Abgerufen 7. März, 2020.
Core2 kann Makro-Op-Fusion nur im 16-Bit- und 32-Bit-Modus durchführen. Core Nehalem kann dies auch im 64-Bit-Modus tun.
- ^ "ZET: Der X86 (IA-32) Open Implementierung: Übersicht". OpenCores. 4. November 2013. Archiviert Aus dem Original am 11. Februar 2018. Abgerufen 5. Januar, 2014.
- ^ "Zhaoxin Vorbereitung der Linux-Kernel-Unterstützung für 7er Centaur CPUs". www.phoronix.com. Abgerufen 5. April, 2022.
- ^ "Zhaoxin mit der Veröffentlichung von 2021 für seine 7nm x86 CPUs - CPU - News - Hexus.net". m.hexus.net. Abgerufen 5. April, 2022.
- ^ "Zhaoxin füge schließlich" lujiazui "x86_64 CPU -Tuning auf GCC hinzu.. www.phoronix.com. Abgerufen 5. April, 2022.
- ^ "Überlegungen zur Einrichtung und Installation für Windows X64 Edition-basierte Computer". Archiviert Aus dem Original am 11. September 2014. Abgerufen 14. September, 2014.
- ^ "Prozessoren - Welche Adressierung verwenden die Intel -Prozessoren?". Archiviert Aus dem Original am 11. September 2014. Abgerufen 14. September, 2014.
- ^ "DSB -Schalter". Intel Vtune Amplifier 2013. Intel. Archiviert Aus dem Original am 2. Dezember 2013. Abgerufen 26. August, 2013.
- ^ "Das 8086 -Familienbenutzerhandbuch" (PDF). Intel Corporation. Oktober 1979. p. 2-68. Archiviert (PDF) Aus dem Original am 4. April 2018. Abgerufen 28. März, 2018.
- ^ "IAPX 286 Programmierer Referenzhandbuch" (PDF). Intel Corporation. 1983. 2.4.3 Speicher Adressmodi. Archiviert (PDF) Aus dem Original am 28. August 2017. Abgerufen 28. August, 2017.
- ^ 80386 Referenzhandbuch des Programmierers (PDF). Intel Corporation. 1986. 2.5.3.2 Berechnung der effektiven Beratung. Archiviert (PDF) Aus dem Original am 28. Dezember 2018. Abgerufen 28. März, 2018.
- ^ a b Intel® 64- und IA-32 Architekturen-Softwareentwicklerhandbuch, Band 1: Basisarchitektur. Intel Corporation. März 2018. Kapitel 3. Archiviert Aus dem Original am 26. Januar 2012. Abgerufen 19. März, 2014.
- ^ Andriesse, Dennis (2019). "6,5 Auswirkungen von Compiler -Einstellungen auf die Demontage". Praktische binäre Analyse: Erstellen Sie Ihre eigenen Linux -Tools für binäre Instrumente, Analyse und Demontage. San Francisco, CA: No Starch Press, Inc. ISBN 978-1-59327-913-4. OCLC 1050453850.
- ^ "Leitfaden zur X86 -Baugruppe". Cs.virginia.edu. 11. September 2013. Archiviert vom Original am 24. März 2020. Abgerufen 6. Februar, 2014.
- ^ "FSTSW/FNSTSW - Store x87 FPU Statuswort". Archiviert Aus dem Original am 25. Januar 2022. Abgerufen 15. Januar, 2020.
Die FNSTSW -AX -Form der Anweisung wird hauptsächlich in einer bedingten Verzweigung verwendet ...
- ^ Intel 64 und IA-32 Architektures Softwareentwickler Handbuch Volumen 1: Basisarchitektur (PDF). Intel. März 2013. Kapitel 8. Archiviert (PDF) Aus dem Original am 2. April 2013. Abgerufen 23. April, 2013.
- ^ "Intel 80287 Familie". CPU-World. Archiviert Aus dem Original am 9. August 2016. Abgerufen 21. Juli, 2016.
- ^ Intel 64 und IA-32 Architektures Softwareentwickler Handbuch Volumen 1: Basisarchitektur (PDF). Intel. März 2013. Kapitel 9. Archiviert (PDF) Aus dem Original am 2. April 2013. Abgerufen 23. April, 2013.
- ^ Intel 64 und IA-32 Architektures Softwareentwickler Handbuch Volumen 1: Basisarchitektur (PDF). Intel. März 2013. Kapitel 10. Archiviert (PDF) Aus dem Original am 2. April 2013. Abgerufen 23. April, 2013.
- ^ IAPX 286 Programmer Referenz (PDF). Intel. 1983. Abschnitt 1.2, "Betriebsmodi". Archiviert (PDF) Aus dem Original am 28. August 2017. Abgerufen 27. Januar, 2014.
- ^ IAPX 286 Programmer Referenz (PDF). Intel. 1983. Kapitel 6, "Speicherverwaltung und virtuelle Adressierung". Archiviert (PDF) Aus dem Original am 28. August 2017. Abgerufen 27. Januar, 2014.
- ^ "Intels Yamhill-Technologie: x86-64 kompatibel | Geek.com". Archiviert von das Original am 5. September 2012. Abgerufen 18. Juli, 2008.
- ^ a b c "Programmierung mit der Intel MMX ™ -Technologie". Embedded Pentium® Processor Family Technical Information Center. Intel. Archiviert von das Original am 23. Juli 2003. Abgerufen 5. Juni, 2022.
- ^ Krishnaprasad, S. (1. Januar 2004). "SIMD -Programmierung mit dem MMX -Befehlssatz von Intel illustriert". Journal of Computing Sciences in Colleges. 19 (3): 268–277. ISSN 1937-4771.
- ^ Sexton, Michael Justin Allen (21. April 2017). "Die Geschichte des AMD -CPUs". Toms Hardware. Abgerufen 5. Juni, 2022.
- ^ Shimpi, Anand Lal (29. Oktober 1998). "AMDs K6-2 350: Etwas zu tun ..." Anandtech. Abgerufen 5. Juni, 2022.
- ^ "Intel's MMX und AMDs 3DNOW! SIMD -Operationen". web.mit.edu. Abgerufen 5. Juni, 2022.
- ^ "3dnow! ™ Technologiehandbuch" (PDF). moderne Mikrogeräte. Abgerufen 5. Juni, 2022.
- ^ a b "Upgrade und Reparatur von PCs 21. Edition: Prozessorfunktionen". Toms Hardware. 31. Oktober 2013. Abgerufen 5. Juni, 2022.
- ^ Amd, Inc. (Februar 2002). "Anhang E" (PDF). AMD Athlon ™ Prozessor X86 Code -Optimierungshandbuch (Revision K ed.). p. 250. Archiviert (PDF) vom Original am 13. April 2017. Abgerufen 13. April, 2017.
Ein 2-Bit-Index, der aus PCD- und PWT-Bits des Eintrags der Seitentabelle besteht, wird verwendet, um eines von vier PAT-Registernfeldern auszuwählen, wenn PAE (Seitenadressenerweiterungen) aktiviert ist oder wenn die PDE keine große Seite beschreibt.
- ^ Manek Dubash (20. Juli 2006). "Wird Intel das Itanium aufgeben?". Techworld. Archiviert von das Original am 19. Februar 2011. Abgerufen 19. Dezember, 2010.
Einmal von Intel als Ersatz für die X86 -Produktlinie angepriesen, wurden die Erwartungen an Itanium gut zurückdrosselt.
- ^ "IBM WebSphere Application Server 64-Bit-Leistung entmystifiziert" (PDF). IBM Corporation. 6. September 2007. p. 14. Archiviert (PDF) Aus dem Original am 25. Januar 2022. Abgerufen 9. April, 2010.
Die Abbildungen 5, 6 und 7 zeigen auch, dass die 32-Bit-Version von WAs-Anwendungen mit einer vollständigen nativen Hardware-Leistung auf den Plattformen der Leistung und X86-64 ausgeführt wird. Im Gegensatz zu einigen 64-Bit-Prozessorarchitekturen emulieren die Leistung und die X86-64-Hardware den 32-Bit-Modus nicht. Daher können Anwendungen, die nicht von 64-Bit-Funktionen profitieren, mit vollständiger Leistung auf der 32-Bit-Version von WebSphere ausgeführt, die auf den oben genannten 64-Bit-Plattformen ausgeführt werden.
- ^ "Band 2: Systemprogrammierung" (PDF). AMD64 Architekturprogrammierhandbuch. AMD Corporation. September 2012. Archiviert (PDF) Aus dem Original am 22. Februar 2014. Abgerufen 17. Februar, 2014.
- ^ Charlie Demerjian (26. September 2003). "Warum Intels Prescott AMD64 -Erweiterungen verwenden wird". Der Anfragen. Archiviert von das Original am 10. Oktober 2009. Abgerufen 7. Oktober, 2009.
- ^ Adams, Keith; AGESEN, OLE (21. bis 25. Oktober 2006). Ein Vergleich von Software- und Hardware -Techniken für die X86 -Virtualisierung (PDF). Proceedings der Internationalen Konferenz über architektonische Unterstützung für Programmiersprachen und Betriebssysteme, San Jose, CA, USA, 2006. ACM 1-59593-451-0/06/0010. Archiviert (PDF) Aus dem Original am 20. August 2010. Abgerufen 22. Dezember, 2006.
Weitere Lektüre
- Rosenblum, Mendel; Garfinkel, Tal (Mai 2005). "Virtuelle Maschinenmonitore: Aktuelle Technologie und zukünftige Trends". IEEE -Computer. 38 (5): 39–47. Citeseerx 10.1.1.614.9870. doi:10.1109/mc.2005.176. S2CID 10385623.
Externe Links
- Warum Intel den x86 nicht zurückziehen kann
- 32/64-Bit x86 Anweisungsreferenz
- Intel Intrinsics Guide, ein interaktives Referenzentol für Intel Intrinsic Anweisungen
- Intel® 64- und IA-32-Architektur-Softwareentwicklerhandbücher
- AMD Developer Guides, Handbücher und ISA -Dokumente, AMD64 Architektur