X86

Der Begriff x86 bezieht sich auf eine Familie von auf Intel 8086 CPU gestützten Befehlssatz-Architekturen. Die 8086 wurden 1978 gestartet, als eine völlig 16 Bit Erweiterung von 8 Bit von Intel 8080 Mikroprozessor gestützt hat und auch Segmentation eingeführt hat, um die 16 Bit zu überwinden, Barriere solcher Designs richtend. Der Begriff x86 ist auf die Tatsache zurückzuführen gewesen, dass frühe Nachfolger der 8086 auch Namen hatten, die in "86" enden. Viele Hinzufügungen und Erweiterungen sind zum x86 Befehlssatz im Laufe der Jahre, der fast im Einklang stehend vollen rückwärts gerichteten Vereinbarkeit hinzugefügt worden. Die Architektur ist in Verarbeitern von Intel, Cyrix, AMD, ÜBER, und viele andere durchgeführt worden.

Der Begriff ist mit der Vereinbarkeit von IBM PC nicht synonymisch, weil das eine Menge anderer Computerhardware einbezieht; eingebettete Systeme sowie Mehrzweckcomputer haben x86 Chips verwendet, bevor der mit dem PC vereinbare Markt, einige von ihnen vor IBM PC selbst angefangen hat.

Da der Begriff üblich geworden ist, nach der Einführung der 80386 bezieht er gewöhnlich binäre Vereinbarkeit mit dem 32-Bit-Befehlssatz der 80386 ein. Das kann manchmal als x86-32 oder x32 betont werden, um es entweder von den ursprünglichen 16 Bit "x86-16" oder von den 64 Bit x86-64 zu unterscheiden. Obwohl die meisten x86 Verarbeiter, die in neuen Personalcomputern und Servern verwendet sind, 64-Bit-Fähigkeiten haben, um Vereinbarkeitsprobleme mit älteren Computern oder Systemen zu vermeiden, wird der Begriff x86-64 (oder x64) häufig gebraucht, um 64-Bit-Software, mit dem Begriff x86 Andeutung von nur 32 Bit anzuzeigen.

Obwohl die 8086 in erster Linie für eingebettete Systeme und kleine Einzelbenutzercomputer größtenteils als eine Antwort auf erfolgreichen vereinbaren mit 8080 Zilog Z80 entwickelt wurden, ist die x86 Linie bald in Eigenschaften und in einer Prozession gehender Macht gewachsen. Heute ist x86 sowohl in stationären als auch in tragbaren Personalcomputern allgegenwärtig und hat Computer des mittleren Bereichs ersetzt und Verarbeiter in einer Mehrheit von Servern und Arbeitsplätzen ebenso RISC-basiert. Ein großer Betrag der Software, einschließlich Betriebssysteme (OSs) wie DOS, Windows, Linux, BSD, Solaris und Mac OS X unterstützt mit Sitz in x86 Hardware.

Moderner x86 ist in eingebetteten Systemen jedoch relativ ungewöhnlich, und kleine niedrige Macht-Anwendungen (winzige Batterien verwendend), sowie preisgünstige Mikroprozessor-Märkte, wie Hausgeräte und Spielsachen, haben an jeder bedeutenden x86 Anwesenheit Mangel. Einfache 8 Bit und gestützte Architekturen von 16 Bit sind hier üblich, obwohl die x86-vereinbaren ÜBER C7, ÜBER Nano, die Druse von AMD, Athlon Neo und Intel Atom Beispiele 32- und 64-Bit-Designs sind, die in etwas relativ niedriger Macht und niedrig Kostensegmenten verwendet sind.

Es hat mehrere Versuche auch innerhalb von Intel selbst gegeben, um die Marktüberlegenheit der "uneleganten" x86 Architektur zu brechen, die direkt von den ersten einfachen 8-Bit-Mikroprozessoren hinuntergestiegen ist. Beispiele davon sind der iAPX 432 (Deckname Intel 8800), Intel 960, Intel 860 und die Architektur von Intel/Hewlett-Packard Itanium. Jedoch würde die dauernde Verbesserung von x86 Mikroarchitekturen, Schaltsystem und Halbleiter-Herstellung es hart beweisen, um x86 in vielen Segmenten zu ersetzen. Die 64-Bit-Erweiterung von AMD von x86 (auf den Intel schließlich mit einem vereinbaren Design geantwortet hat) und die Skalierbarkeit von x86 Chips wie Acht-Kerne-Intel Xeon und 12-Kerne-AMD Opteron unterstreicht x86 als ein Beispiel dessen, wie die dauernde Verbesserung von feststehenden Industriestandards der Konkurrenz von völlig neuen Architekturen widerstehen kann.

Zeichen: Im folgenden Text sollen alle Beispiele des Gebrauches der Präfixe kilo/mega/giga/tera im binären (powers-1024) Sinn verstanden werden. Sieh den Artikel über die IEC Präfixe (kibi/mebi/gibi/tebi) für Details.

Chronologie

Der Tisch unter Listenmarken des allgemeinen Verbrauchers hat Verarbeiter ins Visier genommen, die den x86 Befehlssatz durchführen, der von Generationen gruppiert ist, die wichtige Punkte in der x86 Geschichte hervorheben. Bemerken Sie: Zentraleinheitsgenerationen sind nicht streng: Jede Generation wird durch bedeutsam verbesserte oder gewerblich erfolgreiche Verarbeiter-Mikroarchitektur-Designs grob gekennzeichnet.

Geschichte

Hintergrund

Die x86 Architektur ist zuerst als 1978 befreiter Intel 8086 CPU erschienen, ein völlig 16 Bit auf den früheren 8 Bit gestütztes Design hat 8008 und 8080 gestützt. Obwohl nicht binär vereinbar es entworfen wurde, um Zusammenbau-Sprachprogrammen zu erlauben, die für diese Verarbeiter (sowie die zeitgenössischen 8085) geschrieben sind, in den gleichwertigen 8086 Zusammenbau mechanisch übersetzt zu werden. Das hat den neuen Verarbeiter einen verführerischen Softwarewanderungspfad für viele Kunden gemacht. Jedoch hat der äußerliche 16-Bit-databus der 8086 ziemlich bedeutende Hardware-Umgestaltung, sowie andere Komplikationen und Ausgaben einbezogen. Um dieses Hindernis zu richten, hat Intel die fast identischen 8088, grundsätzlich 8086 mit einem äußerlichen 8-Bit-databus eingeführt, der einfachere gedruckte Leiterplatten erlaubt hat und weniger (1 Bit breite) SCHLUCK-Chips gefordert hat; es wurde auch leichter zu bereits feststehendem (d. h. preisgünstig) 8-Bit-System und peripherische Chips verbunden. Unter anderem, nicht technischen Faktoren, hat das zur Entscheidung von IBM beigetragen, einen Hauscomputer / Personalcomputer um die 8088, trotz einer Anwesenheit von 16-Bit-Mikroprozessoren von Motorola, Zilog und Nationalem Halbleiter zu bauen (sowie mehrere haben 8-Bit-Verarbeiter gegründet, der auch betrachtet wurde). Resultierender IBM PC hat nachher von Z80-basierten Systemen des BEDIENUNGSFELDES/M, Apple IIs und anderen populären Computern übernommen, und ist eine dominierende allgemeine Norm für Personalcomputer geworden, so den 8088 und seinen Nachfolgern ermöglichend, diesen großen Zweig des Mikroprozessor-Marktes zu beherrschen.

iAPX 432 und die 80286

Ein anderer Faktor war, dass fortgeschrittener, aber nichtvereinbarer 32-Bit-Intel 8800 (Deckname iAPX 432) im Marktplatz um die Zeit gescheitert hat, wurde der ursprüngliche PC IBM gestartet; die neuen und schnellen 80286 haben wirklich zur Enttäuschung in der Leistung der halbzeitgenössischen 8800 Anfang 1982 beigetragen. (Die 80186, die in der Parallele mit den 80286 gestartet sind, waren für eingebettete Systeme beabsichtigt, und hätten deshalb einen großen Markt irgendwie gehabt.) Der Marktmisserfolg der 32 Bit 8800 war ein bedeutender Impuls für Intel, um fortzusetzen, fortgeschrittenere vereinbare mit 8086 Verarbeiter statt dessen wie die 80386 (eine 32-Bit-Erweiterung des gut Durchführens 80286) zu entwickeln.

Andere Hersteller

In verschiedenen Zeiten haben Gesellschaften wie IBM, NEC, AMD, TI, STM, Fujitsu, OKI, Siemens, Cyrix, Intersil, C&T, NexGen, UMC und RDC angefangen, x86 Verarbeiter zu entwerfen und/oder zu verfertigen, die für Personalcomputer sowie eingebettete Systeme beabsichtigt sind. Solche x86 Durchführungen sind selten einfache Kopien, aber verwenden häufig verschiedene innere Mikroarchitekturen sowie verschiedene Lösungen an den elektronischen und physischen Niveaus. Ganz natürlich früh waren vereinbare Chips 16 Bit, während 32-Bit-Designs viel später erschienen sind. Für den Personalcomputermarkt haben echte Mengen angefangen, 1990 mit i386 und i486 vereinbaren Verarbeitern, häufig genannt ähnlich zu den ursprünglichen Chips von Intel zu erscheinen. Andere Gesellschaften, die entworfen haben oder x86 oder x87 Verarbeiter verfertigt haben, schließen ITT Corporation, Nationalen Halbleiter, ULSI Systemtechnologie und Weitek ein.

Im Anschluss an völlig pipelined i486 hat Intel den Markennamen von Pentium eingeführt (der, verschieden von Zahlen, gesetzlich schützen lassen werden konnte) für ihre neue Linie des Superskalars x86 Designs. Mit dem jetzt gesetzlich geklärten X86-Namengeben-Schema hat IBM mit Cyrix vereinigt, um 5x86 und dann das sehr effiziente 6x86 (M1) und 6x86MX (MII) Linien von Designs von Cyrix zu erzeugen, die die ersten x86 Chips waren, die Register-Umbenennung durchführen, um spekulative Ausführung zu ermöglichen. AMD hat inzwischen entworfen und hat das fortgeschrittene verfertigt, aber verzögertes 5k86 (K5), der innerlich schwer auf dem AMD'S früher 29K RISC Design basiert hat; ähnlich dem Nx586 von NexGen hat es eine Strategie verwendet, wo hingebungsvolle Rohrleitungsstufen x86 Instruktionen in die Uniform und leicht behandelten Mikrooperationen, eine Methode decodieren, die die Basis für die meisten x86 Designs bis jetzt geblieben ist.

Einige frühe Versionen dieser Chips hatten Hitzeverschwendungsprobleme. 6x86 wurde auch durch einige geringe Vereinbarkeitsprobleme betroffen, der Nx586 hat an einem Schwimmen der Punkt-Einheit (FPU) und (dann entscheidend) Nadel-Vereinbarkeit Mangel gehabt, während der K5 etwas enttäuschende Leistung hatte, als es (schließlich) gestartet wurde. Ein niedriges Kundenbewusstsein von Alternativen zur Linie von Pentium hat weiter zu diesen Designs beigetragen, die verhältnismäßig erfolglos sind, ungeachtet der Tatsache dass der K5 sehr gute Vereinbarkeit von Pentium hatte und 6x86 bedeutsam schneller war als der Pentium auf dem Code der ganzen Zahl. AMD hat später geschafft, sich als ein ernster Wettbewerber mit der K6 Linie von Verarbeitern einzurichten, die zu hoch erfolgreichem Athlon und Opteron nachgegeben haben. Es gab auch andere Wettbewerber, wie Kentaur-Technologie (früher IDT), Anstieg-Technologie und Transmeta. ÜBER die Energie von Technologien sind effizienter C3 und C7 Verarbeiter, die durch den Kentauren entworfen wurden, viele Jahre lang verkauft worden. Das neueste Design des Kentauren, ÜBER Nano, ist ihr erster Verarbeiter mit der spekulativen und Superskalarausführung. Es wurde vielleicht interessanterweise in ungefähr derselben Zeit wie erster Intel "um" Verarbeiter seit dem P5 Pentium, Intel Atom eingeführt.

Erweiterungen der Wortgröße

Die Befehlssatz-Architektur ist zweimal zu einer größeren Wortgröße erweitert worden. 1985 hat Intel die 32 Bit 80386 veröffentlicht (später bekannt als i386), der allmählich die früheren 16 Bit ersetzt hat, steuert in Computer (obwohl normalerweise nicht in eingebetteten Systemen) während der folgenden Jahre bei; das hat sich ausgestreckt Programmiermodell ist ursprünglich die i386 Architektur genannt geworden (wie seine erste Durchführung), aber Intel hat es später IA-32 synchronisiert, als er seine IA-64 Architektur (ohne Beziehung) eingeführt hat. In 1999-2003 hat AMD diese 32-Bit-Architektur zu 64 Bit erweitert und hat sich darauf als x86-64 in frühen Dokumenten und später als AMD64 bezogen. Intel hat bald die architektonischen Erweiterungen von AMD unter dem Namen IA-32e angenommen, der später EM64T und schließlich Intel 64 umbenannt wurde. Unter diesen fünf Namen ist der ursprüngliche x86-64 wahrscheinlich meistens verwendet, obwohl Microsoft und Sonne-Mikrosysteme auch den Begriff x64 gebrauchen.

Übersicht

Grundlegende Eigenschaften der Architektur

Die x86 Architektur ist eine variable Instruktionslänge, in erster Linie "CISC" Zweiadressdesign mit der Betonung auf der rückwärts gerichteten Vereinbarkeit. Der Befehlssatz ist nicht typischer CISC, jedoch, aber grundsätzlich eine verlängerte und orthogonalized Version der einfachen acht Bit 8008 und 8080 Architekturen. Byte-Wenden wird unterstützt, und Wörter werden im Gedächtnis mit wenig-endian der Byte-Ordnung versorgt. Dem Speicherzugang zu unausgerichteten Adressen wird für alle unterstützten Wortgrößen erlaubt. Die größte heimische Größe für die Arithmetik der ganzen Zahl und Speicheradressen (oder Ausgleiche) ist 16, 32, oder 64 Bit abhängig von der Architektur-Generation (schließen neuere Verarbeiter direkte Unterstützung für kleinere ganze Zahlen ebenso ein). Vielfache Skalarwerte können gleichzeitig über die SIMD Einheitsgegenwart in späteren Generationen, wie beschrieben, unten behandelt werden. Unmittelbare Wenden-Ausgleiche und unmittelbare Daten können als 8-Bit-Mengen für die oft vorkommenden Fälle oder Zusammenhänge wo ein-128 ausgedrückt werden.. Der 127. anordnen ist genug. Typische Instruktionen sind deshalb 2 oder 3 Bytes in der Länge (obwohl einige viel länger sind, und einige einzelnes Byte sind).

Um weiter Verschlüsselungsraum zu erhalten, werden die meisten Register in opcodes ausgedrückt das Verwenden von drei Bit, und am grössten Teil eines operand zu einer Instruktion kann eine Speicherposition sein (einige hoch orthogonale "CISC" Designs, wie der PDP-11, kann zwei verwenden). Jedoch kann dieses Gedächtnis operand auch der Bestimmungsort sein (oder eine vereinigte Quelle und Bestimmungsort), während der andere operand, die Quelle, entweder Register oder unmittelbar sein kann. Unter anderen Faktoren trägt das zu einem Codefußabdruck bei, dass Rivale-Acht-Bit-Maschinen und effizienten Gebrauch des Instruktionsgedächtnisses des geheimen Lagers ermöglichen. Die relativ kleine Zahl von allgemeinen Registern (auch geerbt von seinen 8-Bit-Vorfahren) hat Register-Verwandten gemacht, der (das Verwenden kleiner unmittelbarer Ausgleiche) eine wichtige Methode richtet, auf operands besonders auf dem Stapel zuzugreifen. Viel Arbeit ist deshalb im Lassen solche Zugänge investiert worden so schnell wie Zugänge einschreiben, d. h. ein Zyklus-Instruktionsdurchfluss, in den meisten Verhältnissen, wo die zugegriffenen Daten im geheimen Lager auf höchster Ebene verfügbar ist.

Das Schwimmen des Punkts und SIMD

Ein hingebungsvoller Schwimmpunkt-Verarbeiter mit inneren 80-Bit-Registern, den 8087, wurde für die ursprünglichen 8086 entwickelt. Dieser Span, der nachher in die verlängerten 80387 und späteren Verarbeiter entwickelt ist, hat eine rückwärts kompatible Version dieser Funktionalität auf demselben Span wie der Hauptverarbeiter vereinigt. Zusätzlich dazu enthalten moderne x86 Designs auch eine SIMD-Einheit (sieh SSE unten), wo Instruktionen in der Parallele an (ein oder zwei) 128-Bit-Wörter, jeder arbeiten können, 2 oder 4 Schwimmpunkt-Zahlen (jeder 64 oder 32 Bit breit beziehungsweise), oder wechselweise, 2, 4, 8 oder 16 ganze Zahlen (jeder 64, 32, 16 oder 8 Bit breit beziehungsweise) enthaltend. Die breiten SIMD-Register bedeuten, dass vorhandene x86 Verarbeiter laden oder bis zu 128 Bit von Speicherdaten in einer einzelnen Instruktion versorgen und auch bitwise Operationen (obwohl nicht Arithmetik der ganzen Zahl) auf vollen 128-Bit-Mengen in der Parallele durchführen können. Geplante x86 Verarbeiter werden SIMD 256-Bit-Operationen (einschließlich 256-Bit-Speicherlast und Ladens) haben.

Aktuelle Durchführungen

Während der Ausführung verwendet Strom x86 Verarbeiter einige Extraentzifferungsschritte, die meisten Instruktionen in kleinere Stücke (Mikrooperationen) zu spalten. Diese werden dann einer Kontrolleinheit gereicht, dass Puffer und sie in Übereinstimmung mit der X86-Semantik planen, so dass sie, teilweise in der Parallele, durch einen von mehreren (mehr oder weniger spezialisiert) Ausführungseinheiten durchgeführt werden können. Diese modernen x86 Designs sind so Superskalar, und auch fähig zu in Unordnung und spekulative Ausführung (über die Register-Umbenennung), was bedeutet, dass sie vielfach (teilweise oder abgeschlossen) x86 Instruktionen gleichzeitig, und nicht notwendigerweise in derselben Ordnung, wie gegeben, im Instruktionsstrom durchführen können.

Wenn eingeführt, ist diese Annäherung manchmal einen RISC "Kern" oder als "RISC Übersetzung" teilweise aus Marktgründen genannt geworden, sondern auch weil diese Mikrooperationen einige Eigenschaften mit bestimmten Typen von RISC Instruktionen teilen. Jedoch teilt traditioneller Mikrocode (verwendet seit den 1950er Jahren) auch von Natur aus viele derselben Eigenschaften; die neue Annäherung unterscheidet sich hauptsächlich darin die Übersetzung zu Mikrooperationen kommt jetzt asynchron vor. Die nicht Notwendigkeit, die Ausführungseinheiten mit den decodieren Schritten zu synchronisieren, öffnet Möglichkeiten für mehr Analyse des (gepufferten) Codestroms, und erlaubt deshalb Entdeckung von Operationen, die in der Parallele durchgeführt werden können, gleichzeitig mehr als eine Ausführungseinheit fütternd.

Die letzten Verarbeiter tun auch das Gegenteil wenn passend; sie verbinden bestimmte x86 Folgen (wie ein Vergleichen gefolgt von einem bedingten Sprung) in einen komplizierteren micro-op, der das Ausführungsmodell besser passt und so schneller oder mit weniger beteiligten Maschinenmitteln durchgeführt werden kann.

Eine andere Weise zu versuchen, Leistung zu verbessern, soll die decodierten Mikrooperationen verstecken, so kann der Verarbeiter auf die decodierten Mikrooperationen von einem speziellen geheimen Lager direkt zugreifen, anstatt sie wieder zu decodieren. Das Geheime Ausführungsspur-Lager, das in der Mikroarchitektur von NetBurst von Intel (Pentium 4) gefunden ist, ist bis jetzt das einzige weit verbreitete Beispiel dieser Technik.

Gebrauch von Transmeta eine völlig verschiedene Methode in ihren x86 vereinbaren Zentraleinheiten. Sie verwenden gerade rechtzeitig Übersetzung, um x86 Instruktionen zu den heimischen Instruktionen der Zentraleinheit umzuwandeln. Transmeta behauptet, dass ihre Annäherung mehr Macht effiziente Designs berücksichtigt, da die Zentraleinheit auf das komplizierte verzichten kann, decodieren Schritt von traditionelleren x86 Durchführungen.

Segmentation

Minicomputer während des Endes der 1970er Jahre liefen gegen die 16-Bit-64kilobyteadressgrenze, weil Gedächtnis preiswerter geworden war. Einige Minicomputer wie der PDP-11 haben komplizierte bankschaltende Schemas, oder im Fall vom VAX von Digital verwendet, haben viel teurere Verarbeiter neu entworfen, die das 32-Bit-Wenden und die Daten direkt behandeln konnten. Die ursprünglichen 8086, die vom einfachen 8080 Mikroprozessor und in erster Linie Zielen auf sehr kleine und billige Computer und andere Spezialgeräte entwickelt sind, haben stattdessen einfache Segment-Register angenommen, die die Speicheradressbreite um nur 4 Bit vergrößert haben. Durch das Multiplizieren einer 64-Kilobyte-Adresse mit 16 konnte die 20-Bit-Adresse insgesamt ein Megabyte (1,048,576 Bytes) richten, der ganz ein großer Betrag für einen kleinen Computer zurzeit war. Das Konzept von Segment-Registern war vielen Großrechnern nicht neu, die Segment-Register verwendet haben, um zu verschiedenen Aufgaben schnell zu tauschen. In der Praxis auf dem x86 war es (ist) eine viel-kritisierte Durchführung, die außerordentlich viele allgemeine Programmieraufgaben und Bearbeiter kompliziert hat. Jedoch hat die Architektur bald das geradlinige 32-Bit-Wenden erlaubt (mit den 80386 gegen Ende 1985 anfangend), aber Hauptschauspieler (wie Microsoft) haben viele Jahre gebracht, um sich umzuwandeln, ihre 16 Bit haben Systeme gestützt. Die 80386 (und 80486) wurden deshalb als ein schneller (aber noch 16 Bit gestützt) 8086 viele Jahre lang größtenteils verwendet.

Daten und/oder Code konnten innerhalb von "ungefähr" 16 Bit Segmenten innerhalb dieses 1-Mb-Adressraums geführt werden, oder ein Bearbeiter konnte in einer "weiten" Weise mit 32-Bit-Paaren funktionieren, die (nur) 1 Mb erreichen. Während sich das auch erweisen würde, durch die Mitte der 1980er Jahre ganz zu beschränken, arbeitete sie für den erscheinenden PC-Markt, und hat es sehr einfach gemacht, Software aus den älteren 8008, 8080, 8085, und Z80 zum neueren Verarbeiter zu übersetzen. 1985 wurde das 16-Bit-Segment-Wenden-Modell durch die Einführung von 32-Bit-Ausgleich-Registern im 386 Design effektiv ausgeklammert.

In der echten Weise wird Segmentation durch die Verschiebung der Segment-Adresse erreicht, die durch 4 Bit und das Hinzufügen eines Ausgleichs verlassen ist, um eine End-20-Bit-Adresse zu erhalten. Zum Beispiel, wenn DS A000h ist und SI 5677. ist, wird DS:SI an der absoluten Adresse DS &times anspitzen; 10. + SI = A5677h. So ist der Gesamtadressraum in der echten Weise 2 Bytes oder 1 Mb, ganz eine eindrucksvolle Zahl für 1978. Alle Speicheradressen bestehen aus beiden ein Segment und gleichen aus; jeder Typ des Zugangs (Code, Daten oder Stapel) hat ein damit vereinigtes Verzug-Segment-Register (für Daten das Register ist gewöhnlich DS für den Code es ist CS, und für den Stapel ist es SS). Für Datenzugänge kann das Segment-Register ausführlich angegeben werden (das Verwenden eines Segmentes überreiten Präfix), einige der vier Segment-Register zu verwenden.

In diesem Schema können zwei verschiedene Paare des Segmentes/Ausgleichs auf eine einzelne absolute Position hinweisen. So, wenn DS A111h ist und SI 4567. ist, wird DS:SI auf denselben A5677h wie oben hinweisen. Dieses Schema macht es unmöglich, mehr als vier Segmente sofort zu verwenden. CS und SS sind für die richtige Wirkung des Programms lebenswichtig, so dass nur DS und ES verwendet werden können, um zu Datensegmenten außerhalb des Programms (oder, genauer, außerhalb des zurzeit durchführenden Segmentes des Programms) oder der Stapel hinzuweisen.

In der geschützten Weise enthält ein Segment-Register nicht mehr die physische Adresse des Anfangs eines Segmentes, aber enthalten Sie einen "Auswählenden", der zu einer Systemebene-Struktur genannt einen Segment-Deskriptor hinweist. Ein Segment-Deskriptor enthält die physische Adresse des Anfangs des Segmentes, der Länge des Segmentes und Zugriffserlaubnis zu diesem Segment. Der Ausgleich wird gegen die Länge des Segmentes mit Ausgleichen überprüft, die sich auf Positionen außerhalb des Segmentes beziehen, das eine Ausnahme verursacht. Ausgleiche, die sich auf Positionen innerhalb des Segmentes beziehen, werden mit der physischen Adresse des Anfangs des Segmentes verbunden, die physische Adresse entsprechend diesem Ausgleich zu bekommen.

Die segmentierte Natur kann Programmierung und Bearbeiter-Design schwierig machen, weil der Gebrauch von nahen und weiten Zeigestöcken Leistung betrifft.

Das Wenden von Weisen

Das Wenden von Weisen für 16 Bit x86 Verarbeiter kann durch diese Formel zusammengefasst werden:

:

\begin {Bmatrix} CS: \\DS: \\SS: \\ES:\end {Bmatrix }\

\begin {bmatrix }\\beginnen {Bmatrix} BX \\BP\end {Bmatrix }\\Ende {bmatrix} +

\begin {bmatrix }\\beginnen {Bmatrix} SI \\DI\end {Bmatrix }\\Ende {bmatrix} +

\rm [Versetzung]

</Mathematik>

Das Wenden von Weisen für 32-Bit-Adressgröße auf 32 Bit oder 64 Bit x86 Verarbeiter kann durch diese Formel zusammengefasst werden:

:

\begin {Bmatrix} CS: \\DS: \\SS: \\ES: \\FS: \\GS:\end {Bmatrix }\

\begin {bmatrix }\\beginnen {Bmatrix} EAX \\EBX \\ECX \\EDX \\BESONDERS \\EBP \\ESI \\EDI\end {Bmatrix }\\Ende {bmatrix} +

\begin{bmatrix}\begin{Bmatrix}EAX\\EBX\\ECX\\EDX\\EBP\\ESI\\EDI\end{Bmatrix}*\begin{Bmatrix}1\\2\\4\\8\end{Bmatrix}\end{bmatrix} +

\rm [Versetzung]</Mathematik>

Das Wenden von Weisen für 64-Bit-Code auf 64 Bit x86 Verarbeiter kann durch diese Formel zusammengefasst werden:

:

\begin {Bmatrix }\

\begin {Bmatrix} FS: \\GS:\end {Bmatrix }\

\begin {bmatrix} {\\rm allgemein \; schreiben Sie }\\Ende {bmatrix} + ein

\begin {bmatrix} {\\rm allgemein \; Register} *\begin {Bmatrix} 1 \\2 \\4 \\8\end {Bmatrix }\\Ende {bmatrix }\\\\\

RISS

\end {Bmatrix} +

\rm [Versetzung]</Mathematik>

Instruktionsverwandter addessing in 64-Bit-Code (REIßEN + Versetzung, wo RISS das Instruktionszeigestock-Register ist), vereinfacht die Durchführung des mit der Position unabhängigen Codes (wie verwendet, in geteilten Bibliotheken in einigen Betriebssystemen).

Die 8086 hatten 64 Kilobytes von 8 Bit (oder wechselweise 32 K-Wort von 16 Bit) Eingabe/Ausgabe-Raum und 64 Kilobytes (ein Segment) Stapel im durch die Computerhardware unterstützten Gedächtnis. Nur Wörter (2 Bytes) können zum Stapel gestoßen werden. Der Stapel wächst abwärts (zu numerisch niedrigeren Adressen), sein Boden, der durch SS:SP wird anspitzt. Es gibt 256 Unterbrechungen, die sowohl durch die Hardware als auch durch Software angerufen werden können. Die Unterbrechungen können mit dem Stapel wellig fallen, um die Rücksprungadresse zu versorgen.

X86-Register

Für eine Beschreibung des allgemeinen Begriffs eines Zentraleinheitsregisters, sieh Verarbeiter sich einschreiben.

16 Bit

Ursprünglicher Intel 8086 und 8088 hat vierzehn 16-Bit-Register. Vier von ihnen (AXT, BX, CX, DX) sind Mehrzweckregister (GPRs; obwohl jeder einen zusätzlichen Zweck haben kann: Zum Beispiel kann nur CX als ein Schalter mit der Schleife-Instruktion verwendet werden). Auf jeden kann als zwei getrennte Bytes zugegriffen werden (so auf das hohe Byte von BX kann als BH und niedriges Byte als FASS zugegriffen werden). Es gibt zwei Zeigestock-Register: SP, der zur Spitze des Stapels und BP hinweist (Grundzeigestock), der verwendet wird, um auf einen anderen Platz im Stapel normalerweise über den lokalen Variablen hinzuweisen. Zwei Register (SI und DI) sind für das Reihe-Indexieren.

Vier Segment-Register (CS, DS, SS und ES) werden verwendet, um eine Speicheradresse zu bilden. Das FAHNE-Register enthält Fahnen, die Fahne, Überschwemmungsfahne und Nullfahne tragen. Schließlich weist der Instruktionszeigestock (IP) zur folgenden Instruktion hin, die auswendig herbeigeholt und dann durchgeführt wird. Auf dieses Register kann (gelesen nicht direkt zugegriffen werden oder schreiben) durch ein Programm.

In Intel 80286 halten drei spezielle Register Deskriptor-Tabellenadressen (GDTR, LDTR, IDTR), und ein viertes Aufgabe-Register (TR).

32 Bit

Mit dem Advent der 32 Bit wurde 80386 Verarbeiter, die 16-Bit-Mehrzweckregister, Grundregister, Index-Register, Instruktionszeigestock, und FAHNE-Register, aber nicht die Segment-Register, zu 32 Bit ausgebreitet. Das wird durch das Vorbefestigen eines "E" (für den Verlängerten) zu den Registerbezeichnungen auf der x86 Zusammenbau-Sprache vertreten. So entspricht das AXT-Register den niedrigsten 16 Bit des EAX neuen 32-Bit-Registers, SI entspricht den niedrigsten 16 Bit von ESI und so weiter. Die Mehrzweckregister, Grundregister und Index-Register können alle als die Basis im Wenden von Weisen verwendet werden, und alle jene Register abgesehen vom Stapel-Zeigestock können als der Index im Wenden von Weisen verwendet werden.

Zwei neue Segment-Register (FS und GS) wurden hinzugefügt. Mit einer größeren Zahl von Registern, Instruktionen und operands, wurde das Maschinencodeformat ausgebreitet. Um rückwärts gerichtete Vereinbarkeit zur Verfügung zu stellen, können Segmente mit dem rechtskräftigen Code gekennzeichnet werden, als entweder 16-bit- oder 32-Bit-Instruktionen zu enthalten. Spezielle Präfixe erlauben Einschließung von 32-Bit-Instruktionen in einem 16-Bit-Segment oder umgekehrt.

Mit den 80486 wurde eine Schwimmpunkt-Verarbeitungseinheit (FPU) mit acht 80 Bit breiten Registern hinzugefügt: der St. (0) in den St. (7).

Mit dem Pentium MMX wurden MMX acht 64-Bit-Register der ganzen Zahl hinzugefügt (MMX0 zu MMX7, die niedrigere Bit mit dem 80 Bit breiten FPU-Stapel teilen). Mit dem Pentium III wurden eine 32-Bit-Kontrolle/Statusregister von Streaming SIMD Extensions (SSE) (MXCSR) und acht 128-Bit-SSE, die Punkt-Register (XMM0 zu XMM7) schwimmen lassen, hinzugefügt.

64 Bit

Mit dem AMD Opteron Verarbeiter anfangend, hat die x86 Architektur die 32-Bit-Register in 64-Bit-Register in einem Weg erweitert, der dem ähnlich ist, wie die Erweiterung von 16 bis 32 Bit (RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, RFLAGS, RISS) getan wurde, und acht zusätzliche allgemeine 64-Bit-Register (R8-R15) auch in der Entwicklung von x86-64 eingeführt wurden. Jedoch sind diese Erweiterungen nur in 64-Bit-Weise verwendbar, die eine der zwei in der langen Weise nur verfügbaren Weisen ist. Die Wenden-Weisen wurden von 32-Bit-Weise nicht drastisch geändert, außer dass das Wenden zu 64 Bit erweitert wurde, sind virtuelle Adressen jetzt Zeichen, das zu 64 Bit erweitert ist (um Weise-Bit in virtuellen Adressen zurückzuweisen), und andere Auswählender-Details drastisch reduziert wurden. Außerdem wurde eine Wenden-Weise hinzugefügt, um Speicherverweisungen hinsichtlich des RISSES (der Instruktionszeigestock) zu erlauben, die Durchführung des mit der Position unabhängigen Codes zu erleichtern, der in geteilten Bibliotheken in einigen Betriebssystemen verwendet ist.

Verschiedener/spezieller Zweck

X86-Verarbeiter (mit den 80386 anfangend), schließen auch verschiedene spezielle/verschiedene Register wie Kontrollregister (CR0 bis 4, CR8 für 64 Bit nur) ein, beseitigen bei Registern (DR0 bis 3, plus 6 und 7) die Fehler, prüfen Register (TR3 bis 7; 80486 nur), Deskriptor-Register (GDTR, LDTR, IDTR), ein Aufgabe-Register (TR) und musterspezifische Register (MSRs, mit dem Pentium erscheinend).

Zweck

Obwohl sich die Hauptsache einschreibt (mit Ausnahme vom Instruktionszeigestock), sind "Mehrzweck-" und kann für irgendetwas verwendet werden, es wurde vorgesehen, dass sie zu den folgenden Zwecken verwendet wurden:

  • AX/EAX/RAX: Akkumulator
  • BX/EBX/RBX: Grundindex (für den Gebrauch mit der Reihe)
  • CX/ECX/RCX: Schalter
  • DX/EDX/RDX: Daten / allgemeiner
  • SI/ESI/RSI: Quellindex für Schnur-Operationen.
  • DI/EDI/RDI: Bestimmungsort-Index für Schnur-Operationen.
  • SP/ESP/RSP: Stapel-Zeigestock für die Spitzenadresse des Stapels.
  • BP/EBP/RBP: Stapel-Grundzeigestock, für die Adresse des aktuellen Stapel-Rahmens zu halten.
  • IP/EIP/RIP: Instruktionszeigestock. Hält den Programm-Schalter, die aktuelle Instruktionsadresse.

Segment-Register:

  • CS: Code
  • DS: Daten
  • SS: Stapel
  • ES: Zusätzlicher
  • FS
  • GS

Keine besonderen Zwecke wurden für die anderen 8 Register verfügbar nur in 64-Bit-Weise vorgesehen.

Einige Instruktionen kompiliert und durchgeführt effizienter, wenn man diese Register zu ihrem bestimmten Zweck verwendet. Zum Beispiel schätzen das Verwenden von AL als ein Akkumulator und das Hinzufügen eines unmittelbaren Bytes dazu erzeugt das effiziente tragen zu AL opcode 04h bei, während das Verwenden des ZWEISEITIGEN Registers das allgemeine erzeugt und längere zum Register opcode 80C3h beitragen. Ein anderes Beispiel ist doppelte Präzisionsabteilung und Multiplikation, die spezifisch mit der AXT und den DX-Registern arbeitet.

Moderne Bearbeiter haben aus der Einführung des blutsverwandten Bytes einen Nutzen gezogen (erklettertes Index-Byte), der Registern erlaubt, gleichförmig (einem Minicomputer ähnlich) behandelt zu werden. Einige spezielle Instruktionen haben Vorrang im Hardware-Design verloren und sind langsamer geworden als gleichwertige kleine Codefolgen. Ein bemerkenswertes Beispiel ist die LODSW Instruktion.

Struktur

Zeichen:? PL Register sind nur in 64-Bit-Weise verfügbar.

Zeichen:? IL Register sind nur in 64-Bit-Weise verfügbar.

Betriebsweisen

Echte Weise

Echte Weise ist eine Betriebsweise 8086 und spätere x86-vereinbare Zentraleinheiten. Echte Weise wird durch den segmentierten Speicheradressraum von 20 Bit charakterisiert (das Meinen, dass das nur 1 Mb des Gedächtnisses gerichtet werden kann), der direkte Softwarezugang zu BIOS Routinen und peripherischer Hardware und keinem Konzept des Speicherschutzes oder am Hardware-Niveau stark mehrbeanspruchend. Alle x86 Zentraleinheiten in den 80286 Reihen und springen später in der echten Weise am Anschalten auf; 80186 Zentraleinheiten und hatten früher nur eine betriebliche Weise, die zur echten Weise in späteren Chips gleichwertig ist.

Um mehr als 64 Kilobytes des Gedächtnisses zu verwenden, müssen die Segment-Register verwendet werden. Diese geschaffenen Groß-Komplikationen für den Bearbeiter implementors, wer sonderbare Zeigestock-Weisen solcher als "nahe", "weit" und "riesig" eingeführt hat, um die implizite Natur der segmentierten Architektur zu verschiedenen Graden mit einigen Zeigestöcken zu stärken, die 16-Bit-Ausgleiche innerhalb von implizierten Segmenten und anderen Zeigestöcken enthalten, die Segment-Adressen und Ausgleiche innerhalb von Segmenten enthalten.

Geschützte Weise

Zusätzlich zur echten Weise unterstützt Intel 80286 geschützte Weise, addressable physisches Gedächtnis zu 16 Mb und addressable virtuelles Gedächtnis zu 1 GB ausbreitend, und geschütztes Gedächtnis zur Verfügung stellend, das Programme davon abhält, einander zu verderben. Das wird durch das Verwenden der Segment-Register getan, nur für einen Index zu einem Segment-Tisch zu versorgen. Es gab zwei solche Tische, Global Descriptor Table (GDT) und Local Descriptor Table (LDT), jeder, bis zu 8192 Segment-Deskriptoren, jeden Segment-Geben-Zugang zu 64 Kilobytes des Gedächtnisses haltend. Der Segment-Tisch hat eine 24-Bit-Grundadresse zur Verfügung gestellt, die zum gewünschten Ausgleich hinzugefügt werden kann, um eine absolute Adresse zu schaffen. Jedes Segment kann eines von vier für die Hardware-basierte Computersicherheit verwendeten Ringniveaus zugeteilt werden.

Intel 80386 hat Unterstützung in der geschützten Weise für die Paginierung, ein Mechanismus eingeführt, der es möglich macht, paginiertes virtuelles Gedächtnis zu verwenden.

Paginierung wird umfassend durch moderne stark mehrbeanspruchende Betriebssysteme verwendet. Linux, 386BSD und Windows NT wurden für die 386 entwickelt, weil es die erste Architektur-Zentraleinheit von Intel war, um Paginierung und 32-Bit-Segment-Ausgleiche zu unterstützen. Die 386 Architektur ist die Basis der ganzen weiteren Entwicklung in der x86 Reihe geworden.

X86-Verarbeiter, die geschützten Weise-Stiefel in die echte Weise für die rückwärts gerichtete Vereinbarkeit mit der älteren 8086 Klasse von Verarbeitern unterstützen. Auf das Anschalten (a.k.a. startend) initialisiert der Verarbeiter in der echten Weise, und beginnt dann, Instruktionen durchzuführen. Betriebssystemstiefelcode, der im ROM versorgt werden könnte, kann den Verarbeiter in die geschützte Weise legen, um Paginierung und andere Eigenschaften zu ermöglichen. Der Befehlssatz in der geschützten Weise ist mit in der echten Weise verwendeter derjenigen rückwärts kompatibel.

Virtuelle 8086 Weise

Es gibt auch eine Subverfahrensweise in geschützter Weise von 32 Bit, genannt virtuelle 8086 Weise. Das ist grundsätzlich eine spezielle Hybride Betriebsweise, die echten Weise-Programmen und Betriebssystemen erlaubt, während unter der Kontrolle eines geschützten Weise-Oberaufsehers Betriebssystem zu laufen. Das berücksichtigt sehr viel Flexibilität im Laufen sowohl geschützte Weise-Programme als auch echte Weise-Programme gleichzeitig. Diese Weise ist für die 32-Bit-Version der geschützten Weise exklusiv verfügbar; virtuelle 8086 Weise besteht in der 16-Bit-Version der geschützten Weise, oder in der langen Weise nicht.

Lange Weise

Vor 2002 war es offensichtlich, dass der 32-Bit-Adressraum der x86 Architektur seine Leistung in Anwendungen beschränkte, die große Dateien verlangen. Ein 32-Bit-Adressraum würde dem Verarbeiter erlauben, nur 4 GB von Daten, eine Größe direkt zu richten, die durch Anwendungen wie Videoverarbeitung und Datenbankmotoren übertroffen ist. Mit 64-Bit-Adressen kann man 16,777,216 TB (oder 16 Milliarden GB) Daten direkt richten, obwohl die meisten 64-Bit-Architekturen Zugang zum vollen 64-Bit-Adressraum (AMD64, zum Beispiel, nur 48 Unterstützungsbit nicht unterstützen, die in 4 Paginierungsniveaus, von einer 64-Bit-Adresse gespalten sind).

AMD hat die 64-Bit-Erweiterung der 32 Bit x86 Architektur entwickelt, die zurzeit in x86 Verarbeitern verwendet wird, am Anfang es x86-64 nennend, später es AMD64 umbenennend. Die Opteron, Athlon 64, Turion 64, und spätere Familien von Sempron von Verarbeitern verwenden diese Architektur. Der Erfolg der AMD64 Linie von mit dem lauwarmen Empfang der IA-64 Architektur verbundenen Verarbeitern hat Intel gezwungen, seine eigene Durchführung des AMD64 Befehlssatzes zu veröffentlichen. Intel hatte vorher Unterstützung für AMD64 durchgeführt, aber sich dafür entschieden, es in Hoffnungen nicht zu ermöglichen, dass AMD AMD64 nicht dazu bringen würde einzukaufen, bevor der neue IA-64 Befehlssatz von Itanium weit angenommen wurde. Es hat seine Durchführung von AMD64 als EM64T gebrandmarkt, und hat es später Intel 64 wiedergebrandmarkt.

In seiner Literatur und Produktversionsnamen beziehen sich Microsoft und Sonne auf AMD64/Intel 64 insgesamt als x64 in Windows und Solaris Betriebssysteme beziehungsweise. Vertrieb von Linux bezieht sich darauf entweder als "x86-64", seine Variante "x86_64" oder "amd64". BSD Systeme verwenden "amd64", während Mac OS X "x86_64" verwendet.

Lange Weise ist größtenteils eine Erweiterung des 32-Bit-Befehlssatzes, aber verschieden vom Übergang von 16 bis 32 Bit waren viele Instruktionen in der 64-Bit-Weise fallen gelassen. Das betrifft wirkliche binäre rückwärts gerichtete Vereinbarkeit nicht (der Vermächtnis-Code in anderen Weisen durchführen würde, die Unterstützung für jene Instruktionen behalten), aber es ändert die Weise, wie Monteur und Bearbeiter für den neuen Code arbeiten müssen.

Das war das erste Mal, dass eine Haupterweiterung der x86 Architektur begonnen und von einem Hersteller außer Intel hervorgebracht wurde. Es war auch das erste Mal, dass Intel Technologie dieser Natur von einer Außenquelle akzeptiert hat.

Erweiterungen

Das Schwimmen der Punkt-Einheit

Frühe x86 Verarbeiter konnten mit der Schwimmpunkt-Hardware in der Form einer Reihe des Schwimmpunkts numerische Coprozessoren mit Namen wie 8087, 80287 und 80387 erweitert werden. Mit sehr wenigen Ausnahmen haben die 80486 und nachfolgenden x86 Verarbeiter dann diese x87 Funktionalität auf dem Span integriert, der die x87 Instruktionen einen integralen De-Facto-Bestandteil des x86 Befehlssatzes gemacht hat.

Jedes X87-Register, das als ST (0) durch ST (7) bekannt ist, ist 80 Bit breit und versorgt Zahlen im IEEE Schwimmpunkt-Standard doppeltes erweitertes Präzisionsformat. Diese Register werden als ein Stapel mit ST (0) als die Spitze organisiert. Das wurde getan, um opcode Raum zu erhalten, und die Register deshalb nur für irgendeinen operand in einer Register-zu-Register-arithmetischen Instruktion zufällig zugänglich sind; ST0 muss immer einer der zwei operands, entweder die Quelle oder der Bestimmungsort, unabhängig davon sein, ob der andere operand ST (x) oder ein Gedächtnis operand ist.

MMX

MMX ist ein SIMD Befehlssatz, der von Intel entworfen ist, eingeführt 1997 für den Pentium MMX Mikroprozessor. Der MMX Befehlssatz wurde von einem ähnlichen auf Intel i860 zuerst verwendeten Konzept entwickelt. Es wird auf den meisten nachfolgenden IA-32 Verarbeitern von Intel und anderen Verkäufern unterstützt. MMX wird normalerweise für die Videoverarbeitung (in "Multimedia"-Anwendungen zum Beispiel) verwendet.

MMX hat 8 neue "Register" zur Architektur, bekannt als MM0 durch MM7 (künftig verwiesen auf als MMn) hinzugefügt. In Wirklichkeit waren diese neuen "Register" gerade Decknamen für den vorhandenen x87 FPU Stapel-Register. Folglich würde irgendetwas, was zum Schwimmpunkt-Stapel getan wurde, auch die MMX-Register betreffen. Verschieden vom FP-Stapel, diese MMn-Register wurden befestigt, und deshalb nicht relativ, waren sie zufällig zugänglich. Der Befehlssatz hat die einem Stapel ähnliche Semantik nicht angenommen, so dass vorhandene Betriebssysteme noch richtig sparen und den Register-Staat wieder herstellen konnten, als sie ohne Modifizierungen stark mehrbeansprucht haben.

Jedes der MMn-Register ist ganze 64-Bit-Zahlen. Jedoch ist eines der Hauptkonzepte des MMX Befehlssatzes das Konzept gepackter Datentypen, was bedeutet, anstatt das ganze Register für eine einzelne ganze 64-Bit-Zahl (quadword) zu verwenden, kann man es verwenden, um zwei ganze 32-Bit-Zahlen (doubleword), vier ganze 16-Bit-Zahlen (Wort) oder acht ganze 8-Bit-Zahlen (Byte) zu enthalten. Auch die MMn 64-Bit-Register des MMX sind aliased zum FPU-Stapel, und jedes der Schwimmpunkt-Register ist 80 Bit breit, bedeutend, dass die oberen 16 Bit der Schwimmpunkt-Register in MMX unbenutzt sind. Diese Bit werden auf alle durch jede MMX Instruktion gesetzt, die der Schwimmpunkt-Darstellung von NaNs oder Unendlichkeit entsprechen.

3DNow!

1997 AMD eingeführt 3DNow! Die Einführung dieser Technologie ist mit dem Anstieg von 3D-Unterhaltungsanwendungen zusammengefallen und wurde entworfen, um die Vektor-Verarbeitungsleistung der Zentraleinheit von grafisch-intensiven Anwendungen zu verbessern. 3D-Videospiel-Entwickler und 3D-Grafikhardware-Verkäufer verwenden 3DNow! ihre Leistung auf der Reihe von K6 und Athlon von AMD von Verarbeitern zu erhöhen.

3DNow! wurde entworfen, um die natürliche Evolution von MMX von ganzen Zahlen bis Schwimmpunkt zu sein. Als solcher verwendet es genau dieselbe Register-Namengeben-Tagung wie MMX, der MM0 durch MM7 ist. Der einzige Unterschied ist, dass, anstatt ganze Zahlen in diese Register einzupacken, zwei einfache Präzision, die Punkt-Zahlen schwimmen lässt, in jedes Register gepackt ist. Der Vorteil von aliasing, den der FPU einschreibt, besteht darin, dass dieselbe Instruktion und Datenstrukturen gepflegt haben zu sparen, kann der Staat der FPU-Register auch verwendet werden, um 3DNow zu sparen! Register-Staaten. So sind keine speziellen Modifizierungen erforderlich, zu Betriebssystemen gemacht zu werden, die sonst über sie nicht wissen würden.

SSE

1999 hat Intel den Befehlssatz von Streaming SIMD Extensions (SSE) im Anschluss an 2000 mit SSE2 eingeführt. Die erste Hinzufügung hat erlaubt, grundlegender Schwimmpunkt-Operationen vom X87-Stapel abzuladen, und das zweite hat MMX fast veraltet gemacht und hat den Instruktionen erlaubt, durch herkömmliche Bearbeiter realistisch ins Visier genommen zu werden. Eingeführt 2004 zusammen mit der Revision von Prescott des Pentiums 4 Verarbeiter hat SSE3 spezifisches Gedächtnis und Faden behandelnde Instruktionen hinzugefügt, die Leistung der Technologie von HyperThreading von Intel zu erhöhen. AMD hat den SSE3 Befehlssatz lizenziert und hat die meisten SSE3 Instruktionen für seine Revision E und späteren Athlon 64 Verarbeiter durchgeführt. Der Athlon 64 unterstützt HyperThreading nicht und hat an jenen SSE3 Instruktionen verwendet nur für HyperThreading Mangel.

SSE hat alle Vermächtnis-Verbindungen zum FPU-Stapel verworfen. Das hat auch bedeutet, dass dieser Befehlssatz alle Vermächtnis-Verbindungen zu vorherigen Generationen von SIMD Befehlssätzen wie MMX verworfen hat. Aber es hat die Entwerfer befreit, ihnen erlaubend, größere Register zu verwenden, die nicht durch die Größe der FPU-Register beschränkt sind. Die Entwerfer haben acht 128-Bit-Register, genannt XMM0 durch XMM7 geschaffen. (Bemerken Sie: In AMD64 ist die Zahl von SSE XMM Register von 8 bis 16 gesteigert worden.) Jedoch war die Kehrseite, dass Betriebssysteme ein Bewusstsein dieses neuen Satzes von Instruktionen haben mussten, um im Stande zu sein, ihre Register-Staaten zu sparen. So hat Intel eine ein bisschen modifizierte Version der Geschützten Weise, genannt Erhöhte Weise geschaffen, die den Gebrauch von SSE Instruktionen ermöglicht, wohingegen sie arbeitsunfähig in der regelmäßigen Geschützten Weise bleiben. Ein OS, der von SSE bewusst ist, wird Erhöhte Weise aktivieren, wohingegen ein unbewusster OS nur in traditionelle Geschützte Weise eintreten wird.

SSE ist ein SIMD Befehlssatz, der nur an Schwimmpunkt-Werten, wie 3DNow arbeitet!. Jedoch, unterschiedlich 3DNow! es trennt die ganze Vermächtnis-Verbindung zum FPU-Stapel. Weil es größere Register hat als 3DNow!, SSE kann zweimal die Zahl von Hin- und Herbewegungen der einfachen Präzision in seine Register einpacken. Der ursprüngliche SSE wurde auf nur Zahlen der einfachen Präzision, wie 3DNow beschränkt!. Der SSE2 hat die Fähigkeit eingeführt, doppelte Präzisionszahlen auch, der 3DNow einzupacken! hatte keine Möglichkeit des Tuns, da eine doppelte Präzisionszahl 64 Bit in der Größe ist, die die volle Größe einer Single 3DNow sein würde! MMn Register. An 128 Bit konnte der SSE XMMn Register zwei doppelte Präzisionshin- und Herbewegungen in ein Register einpacken. So ist SSE2 für wissenschaftliche Berechnungen viel passender entweder als SSE1 oder als 3DNow!, die auf nur die einfache Präzision beschränkt wurden. SSE3 führt keine zusätzlichen Register ein.

Physical Address Extension (PAE)

Physische Adresserweiterung oder PAE wurden zuerst in Intel Pentium Pro hinzugefügt, zusätzliche 4 Bit des physischen Wendens in 32 Bit zu erlauben, hat Weise geschützt. Die Größe des Gedächtnisses in der Geschützten Weise wird gewöhnlich auf 4 GB beschränkt. Durch Tricks in der Seite des Verarbeiters und Segment-Speicherverwaltungssystemen, x86 Betriebssysteme kann im Stande sein, auf mehr als 32 Bit des Adressraums sogar ohne die Umschaltung zum 64-Bit-Paradigma zuzugreifen. Diese Weise ändert die Länge von Segment-Ausgleichen oder geradlinigen Adressen nicht; diejenigen sind noch nur 32 Bit.

x64

Im April 2003 hat AMD den ersten x86 Verarbeiter mit physischen 64-Bit-Speicheradressregistern veröffentlicht, die dazu fähig sind, viel mehr als 4 GB des Gedächtnisses mit der neuen x86-64 Erweiterung (auch bekannt als x64) zu richten. Intel hat seinen ersten x86-64 Verarbeiter im Juli 2004 eingeführt.

x86-64 war durch eine andere Architektur vorangegangen worden, die das 64-Bit-Speicherwenden verwendet: Intel hat Itanium 2001 für den Hochleistungsrechenmarkt eingeführt. Jedoch war Itanium mit x86 unvereinbar und wird heute weniger weit verwendet. X86-64 hat auch das NX-Bit eingeführt, das sich bietet, überflutet etwas Schutz gegen durch den Puffer verursachte Sicherheitsprogrammfehler.

Virtualisierung

Bis neulich bezüglich 2005 hat die x86 Architektur den Anforderungen von Popek und Goldberg - eine Spezifizierung für die Virtualisierung geschaffen 1974 von Gerald J. Popek und Robert P. Goldberg nicht entsprochen. Dennoch gibt es mehrere kommerzielle x86 Virtualisierungsprodukte, wie VMware vSphere, VMware Arbeitsplatz, Parallelen, Microsoft Hyper-V Server und Microsoft Virtual PC. Unter den offenen Quellvirtualisierungsprojekten, am bemerkenswertesten sind QEMU/KQEMU, VirtualBox und Xen.

Intel und AMD haben x86 Verarbeiter mit Hardware-basierten Virtualisierungserweiterungen eingeführt, die die klassischen Virtualisierungsbeschränkungen der x86 Architektur überwinden. Diese Erweiterungen sind als Intel VT (Code genannt "Vanderpool") und AMD-V (Code genannt "Pacifica") bekannt.

Wie man

erwartet, ändert sich das, weil die Technologie reif wird.

Siehe auch

  • Itanium
  • PowerPC
  • Basis des Eingangs/Produktion Richtet
  • Unterbrechungsbitte
  • X86-Zusammenbau-Sprache
  • X86-Instruktionsauflistungen
  • Liste von AMD Mikroprozessoren
  • Liste von Mikroprozessoren von Intel
  • Liste ÜBER Mikroprozessoren
  • Liste von x86 Herstellern
  • Mikroarchitektur

Zeichen und Verweisungen

Weiterführende Literatur

Links


Röntgenstrahl / Xiangqi
Impressum & Datenschutz