Warum hat Intel verstecken internen RISC-Kern, der in Ihre Prozessoren?
Ab Pentium Pro (P6-Mikroarchitektur), Intel überarbeitet, es Mikroprozessoren und der verwendeten internen RISC-Kern, der unter den alten CISC-Anweisungen. Seit dem Pentium Pro alle CISC-Anweisungen sind unterteilt in kleinere Teile (uops) und dann erfolgt durch die RISC-Kern.
Am Anfang war es für mich klar, dass Intel sich entschieden zu verstecken-neue interne Architektur und die Kraft, die Programmierer verwenden "CISC-shell". Dank dieser Entscheidung konnte Intel komplett-redesign-Mikroprozessoren-Architektur, ohne dass die Kompatibilität, ist es vernünftig.
Aber ich verstehe nicht, eine Sache, warum Intel immer noch einen internen RISC-Anweisungen für so viele Jahre versteckt? Warum würden Sie nicht lassen Sie Programmierer verwenden RISC-Anweisungen wie die alte x86-CISC-Anweisungen?
Wenn Intel hält die Abwärtskompatibilität so lange (wir haben noch den virtuellen 8086-Modus auf 64-bit-Modus), Warum nicht Sie es uns ermöglichen, kompilieren von Programmen, so dass Sie umgehen CISC-Anweisungen und verwenden RISC-Kern, der direkt? Diese öffnen sich auf Natürliche Weise langsam aufgeben x86-Anweisungen festgelegt, die veraltet ist heutzutage (dies ist der Hauptgrund, warum Intel sich entschloss, RISC-Kern, innen, rechts?).
Blick auf neuen Intel - "Core i" - Serie sehe ich, dass Sie nur erweitert CISC-Anweisungen hinzufügen AVX, SSE4 und andere.
InformationsquelleAutor der Frage Goofy | 2011-04-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, der x86-Befehlssatz ist sicherlich nicht veraltet. Es ist beliebt wie eh und je. Der Grund, verwendet Intel eine Reihe von RISC-ähnliche Mikro-Instruktionen intern ist, weil Sie können effizienter abgewickelt werden.
Also eine x86-CPU arbeitet, indem er eine ziemlich schwere-Pflicht-Dekoder im frontend, die akzeptiert x86-Anweisungen, und wandelt Sie in eine optimierte interne format, das backend Bearbeiten kann.
Als für die Aufdeckung dieses format zu "externen" Programmen gibt es zwei Punkte:
Dies ist nicht ganz eine perfekte Anordnung, aber der Preis ist ziemlich klein, und es ist eine viel bessere Wahl als die Entwicklung der CPU-support - zwei völlig unterschiedliche Befehlssätze. (In diesem Fall, Sie würden wahrscheinlich am Ende erfinden Sie ein Dritten Reihe von Mikro-ops für die interne Verwendung, nur weil diese verändert werden können, frei am besten den CPU-internen-Architektur)
InformationsquelleAutor der Antwort jalf
Müssen Sie den business-Winkel. Intel hat tatsächlich versucht, Weg von x86, aber es ist die Gans, die legt goldene Eier für das Unternehmen. XScale-und Itanium-nie kam auch nur annähernd an das Niveau der Erfolg, dass Ihre core-x86-Geschäft hat.
Was Sie im Grunde zu Fragen, ist für Intel die slit Ihre Handgelenke im Austausch für warme, fuzzy-Entwickler. Untergraben x86 ist nicht in Ihrem Interesse. Alles, was die Entwickler nicht haben zu wählen, um Ziel-x86 untergräbt x86. Das wiederum untergräbt Sie.
InformationsquelleAutor der Antwort Mike Thomsen
Die wirkliche Antwort ist einfach.
Wichtigen Faktor für die Implementierung von RISC-Prozessoren wurde zur Verringerung der Komplexität und Geschwindigkeit gewinnen.
Der Nachteil des RISC ist die reduced instruction Dichte, das bedeutet, dass der gleiche code ausgedrückt in RISC-ähnliches format, das braucht mehr Anleitung als vergleichbare CISC-code.
Diese Nebenwirkung nicht viel wenn die CPU läuft mit der gleichen Geschwindigkeit wie der Speicher, oder zumindest dann, wenn Sie laufen beide auf halbwegs ähnliche Geschwindigkeiten.
Derzeit die Speicher-Geschwindigkeit im Vergleich zu der CPU-Geschwindigkeit zeigt einen großen Unterschied in den Uhren. Aktuelle CPUs sind manchmal fünf mal oder mehr schneller als der Hauptspeicher.
Diesem Stand der Technik bevorzugt ein dichter code, etwas, das CISC bietet.
Können Sie argumentieren, dass caches beschleunigen könnten RISC-CPUs. Aber das gleiche kann gesagt werden über CISC cpus.
Erhalten Sie eine größere Verbesserung der Geschwindigkeit durch die Verwendung von CISC und speichert als RISC-caches, da die gleiche Größe cache hat mehr Wirkung auf die high-density-code, CISC bietet.
Ein weiterer Nebeneffekt ist, dass RISC ist härter auf compiler-Implementierung. Die leichter zu optimieren die Compiler CISC-cpus. etc.
Intel weiß, was Sie tun.
Dies ist so wahr, dass der ARM hat eine höhere code-Dichte-Modus aufgerufen Daumen.
InformationsquelleAutor der Antwort Jorge Aldo
Die Antwort ist einfach. Intel ist nicht die Entwicklung von CPUs für Entwickler! Sie sind eine Weiterentwicklung für Menschen, die den Kauf Entscheidungen, die BTW, ist das, was jedes Unternehmen in der Welt nicht!
Intel vor langer Zeit aus der Verpflichtung, die (innerhalb Grund, natürlich), Ihre CPUs bleiben würde abwärtskompatibel. Die Menschen wollen wissen, dass, wenn Sie kaufen ein neues Intel-basierten computer, die alle Ihrer aktuellen software ausführen genau das gleiche wie auf dem alten computer. (Obwohl, hoffentlich, schneller!)
Außerdem, Intel weiß genauwie wichtig das Engagement ist, weil Sie einmal versucht, einen anderen Weg gehen. Genau, wie viele Menschen tun Sie wissen mit einer Itanium-CPU?!?
Können Sie es nicht gerne, aber die Entscheidung, zu bleiben, mit dem x86 -, ist, was Intel zu einem der bekanntesten Namen in der Welt!
InformationsquelleAutor der Antwort geo
jalf ' s Antwort deckt die meisten der Gründe, aber es gibt ein Interessantes detail wird nicht erwähnt: Die internen RISC-ähnlichen Kern ist nicht konzipiert, um ein instruction set alles wie auf ARM/PPC/MIPS. Die x86-Steuer ist nicht nur bezahlt macht-hungrig-Decoder, aber bis zu einem gewissen Grad in der gesamten Kern. d.h. es ist nicht nur die x86 instruction encoding; es ist jeder Befehl mit seltsamen Semantik.
Let ' s pretend, dass Intel Tat, erstellen Sie eine Betriebsart, wo der Unterricht stream war etwas anderes als x86, mit dem Hinweis abgebildet, dass mehr direkt zu uops. Lassen Sie uns auch behaupten, dass jedes CPU-Modell hat seinen eigenen ISA für diesen Modus, so sind Sie noch frei, ändern Sie die Innenteile, wenn Sie wollen, und setzen Sie Sie mit einer minimalen Anzahl von transistoren für die instruction-decode dieses Alternative format.
Vermutlich würden Sie immer noch nur die gleiche Anzahl von Registern zugeordnet, die der x86-Architektur-Zustand, also x86-Betriebssysteme können speichern/wiederherstellen auf die Kontext-switches ohne mithilfe der CPU-spezifischen Befehlssatz. Dies ist wahrscheinlich nicht allzu schwer, da register-renaming hardware bereits vorhanden ist. (interne uops tatsächlich auf den physische-register-Datei, aber unser hypothetischer RISC-ISA würde nicht zu).
Wenn wir nur alternativen Decoder keine änderungen zu späteren pipeline-Stufen (execution units), diesem ISA-würde noch viele x86-Exzentrizitäten. Wäre es nicht eine sehr schöne RISC-Architektur. Keine einzige Anleitung wäre sehr Komplex, aber einige der anderen Verrücktheit von x86 würde immer noch da sein.
Zum Beispiel: Links/rechts verschiebt, lassen Sie das Überlauf-flag nicht definiert, es sei denn die shift-count ist einer, in dem Falle= die üblichen signed-überlauf-Erkennung. Ähnliche Verrücktheit für sich dreht. Jedoch, die ausgesetzt RISC-Anweisungen liefern könnte, Flagge-weniger Verschiebungen und so weiter (ermöglicht die Verwendung von nur einer oder zwei der mehrere uops, die in der Regel gehen in eine komplexe x86-Instruktionen). Damit dies nicht wirklich halten als das Haupt-Gegenargument.
Wenn du gehst, um eine ganze neue decoder für eine RISC-ISA haben, können Sie es wählen, und wählen Sie Teile von x86-Anweisungen ausgesetzt sein, wie RISC-Anweisungen. Dies mildert die x86-Spezialisierung der Kern etwas.
Den Unterricht Codierung würde wahrscheinlich nicht eine Feste Größe, da single uops können halten eine große Menge von Daten. Viel mehr Daten als sinnvoll, wenn alle insns die gleiche Größe haben. Ein einzelnes micro-fused uop kann eine 32bit unmittelbaren und ein Speicher-operand verwendet, um eine Auseinandersetzung mit-Modus mit 2 Register und eine 32-bit-displacement. (In der Nationalbank und später nur single-register-Adressierung Modi können Feinsicherung mit ALU-ops).
uops sind sehr groß, und nicht sehr ähnlich mit fester Breite ARM-Anweisungen. Eine Feste Breite 32bit Befehlssatz kann nur laden, 16 bit immediates in einer Zeit, so laden einer 32-bit-Adresse erfordert eine Last-sofort low-Hälfte /loadhigh-sofort-pair-Mädchen. x86 nicht zu tun haben, denen hilft es nicht schrecklich sein, mit nur 15 GP Registern, in denen die Fähigkeit zu halten Sie Konstanten, um in Registern. (15 ist eine große Hilfe, über 7 Register, aber die Verdoppelung wieder auf 31 trägt viel weniger, ich denke, einige simulation gefunden. RSP ist in der Regel nicht für Allgemeine Zwecke, damit es mehr wie 15 GP-Register und einen stack.)
Die TL;DR Zusammenfassung:
Sowieso, diese Antwort läuft darauf hinaus, "den x86-Befehlssatz ist wahrscheinlich der beste Weg, Programm eine CPU, die in der Lage zu sein x86-Anweisungen schnell", aber hoffentlich wirft etwas Licht auf die Gründe.
InformationsquelleAutor der Antwort Peter Cordes
Zusätzlich zu den vorigen Antworten, die ein weiterer Grund ist die Segmentierung des Marktes. Einige Anweisungen sind dachte umgesetzt werden microcode-anstatt in hardware, so dass jeder, der zur Ausführung von beliebigem microoperations beeinträchtigen können, verkauft der neue cpus mit "neuen" mehr leistungsfähige CISC-Anweisungen.
InformationsquelleAutor der Antwort KOLANICH