Mikroarchitektur

Im Technische Informatik, Mikroarchitektur, auch genannt Computerorganisation und manchmal abgekürzt wie µarch oder Uarch, ist die Art und Weise, wie eine Selbstverständlichkeit Anweisungsset Architektur (ISA) wird in einem bestimmten implementiert Prozessor.[1] Eine bestimmte ISA kann mit unterschiedlichen Mikroarchitekturen implementiert werden.[2][3] Implementierungen können aufgrund unterschiedlicher Ziele eines bestimmten Designs oder aufgrund von Technologieveränderungen variieren.[4]
Rechnerarchitektur ist die Kombination aus Mikroarchitektur- und Anweisungs -Set -Architektur.
Beziehung zur Architektur für den Unterrichtssatz

Die ISA ist ungefähr das gleiche wie das Programmiermodell eines Prozessors, wie es von einem gesehen wird Montagesprache Programmierer oder Compiler -Autor. Die ISA enthält die Anweisungen, Ausführungsmodell, Prozessorregister, Adresse und Datenformate unter anderem. Die Mikroarchitektur umfasst die Bestandteile des Prozessors und wie diese miteinander verbunden und interoperieren, um die ISA zu implementieren.
Die Mikroarchitektur einer Maschine wird normalerweise als (mehr oder weniger detaillierte) Diagramme dargestellt, die die Zusammenhänge der verschiedenen mikroarchitekturalen Elemente der Maschine beschreiben, die alles von einzelnen Gates und Registern bis hin zu vervollständigen können Arithmetische Logikeinheiten (Alus) und sogar größere Elemente. Diese Diagramme trennen im Allgemeinen die Datenweg (Wo Daten platziert werden) und der Steuerpfad (der gesagt werden kann, dass sie die Daten steuern).[5]
Die Person, die ein System entwirft, zieht normalerweise die spezifische Mikroarchitektur als eine Art Datenflussdiagramm. Wie ein BlockdiagrammDas Mikroarchitektur -Diagramm zeigt mikroarchitekturale Elemente wie das Arithmetik-und Logikeinheit und die Datei registrieren als einzelnes schematisches Symbol. Normalerweise verbindet das Diagramm diese Elemente mit Pfeilen, dicken Linien und dünnen Linien, um zwischen dreistaatlichen Bussen zu unterscheiden (für die a erforderlich ist Drei-Staaten-Puffer Für jedes Gerät, das den Bus fährt), Unidirektionale Busse (Immer von einer einzelnen Quelle angetrieben, z. B. wie der Adressbus auf einfacheren Computern immer von der gesteuert wird Speicheradressregister) und individuelle Kontrolllinien. Sehr einfache Computer haben a Einzeldatenbusorganisation- Sie haben eine Single Drei-Staaten-Bus. Das Diagramm von komplexeren Computern zeigt normalerweise mehrere Drei-Staaten-Busse, die der Maschine helfen, mehr Operationen gleichzeitig durchzuführen.
Jedes mikroarchitekturale Element wird wiederum durch a dargestellt schematisch Beschreibung der Zusammenhänge von Logik -Tore verwendet, um es zu implementieren. Jedes Logik -Tor wird wiederum durch a dargestellt Schaltplan Beschreibung der Verbindungen der Transistoren, die verwendet werden, um sie in einigen bestimmten zu implementieren Logikfamilie. Maschinen mit unterschiedlichen Mikroarchitekturen können die gleiche Architektur mit dem Anweisungssatz haben und somit in der Lage sind, dieselben Programme auszuführen. Neue Mikroarchitekturen und/oder Schaltungslösungen sowie Fortschritte bei der Herstellung von Halbleitern ermöglichen es neueren Generationen von Prozessoren, eine höhere Leistung zu erzielen und gleichzeitig die gleiche ISA zu verwenden.
Im Prinzip könnte eine einzige Mikroarchitektur mehrere verschiedene ISAs mit nur geringfügigen Änderungen an der ausführen Mikrocode.
Aspekte

Das Pipeline Datenweg ist heute das am häufigsten verwendete DataPath -Design in der Mikroarchitektur. Diese Technik wird in den meisten modernen Mikroprozessoren verwendet, Mikrocontroller, und DSPs. Mit der pipelierten Architektur können sich mehrere Anweisungen in der Ausführung überlappen, ähnlich wie eine Montagelinie. Die Pipeline enthält verschiedene Stufen, die für Mikroarchitektur -Designs von grundlegender Bedeutung sind.[5] Einige dieser Phasen umfassen Anweisungen abrufen, Anweisungen dekodieren, ausführen und zurückschreiben. Einige Architekturen enthalten andere Phasen wie Speicherzugriff. Das Design von Pipelines ist eine der zentralen mikroarchitekturalen Aufgaben.
Ausführungseinheiten sind auch für die Mikroarchitektur unerlässlich. Ausführungseinheiten umfassen Arithmetische Logikeinheiten (Alu), schwimmende Punkteinheiten (FPU), Last-/Speichereinheiten, Zweigvorhersage und Simd. Diese Einheiten führen die Operationen oder Berechnungen des Prozessors aus. Die Auswahl der Anzahl der Ausführungseinheiten, deren Latenz und Durchsatz ist eine zentrale mikroarchitekturale Designaufgabe. Die Größe, Latenz, Durchsatz und Konnektivität von Erinnerungen im System sind ebenfalls mikroarchitekturale Entscheidungen.
Entwurfsentscheidungen auf Systemebene, z. B. ob sie einbeziehen sollen oder nicht Peripheriegeräte, wie zum Beispiel Speichercontroller, kann als Teil des mikroarchitekturalen Designprozesses angesehen werden. Dies beinhaltet Entscheidungen über die Leistungsebene und die Konnektivität dieser Peripheriegeräte.
Im Gegensatz zum architektonischen Design, bei dem das Erreichen eines bestimmten Leistungsniveaus das Hauptziel ist, achtet Microarchitectural Design den anderen Einschränkungen enger. Da Entscheidungen von Mikroarchitekturentwurf direkt das, was in ein System einfließt, direkt beeinflusst, muss auf Probleme wie Chipbereich/Kosten, Stromverbrauch, logische Komplexität, einfache Konnektivität, Herstellung, einfache Debugging und Testbarkeit aufmerksam gemacht werden.
Mikroarchitekturale Konzepte
Anweisungszyklen
Für Programme werden alle Einzel- oder Multi-Chip-CPUs ausgeführt:
- Lesen Sie eine Anweisung und dekodieren Sie sie
- Finden Sie alle zugehörigen Daten, die erforderlich sind, um den Anweisungen zu verarbeiten
- Verarbeiten Sie die Anweisung
- Schreiben Sie die Ergebnisse heraus
Der Befehlszyklus wird kontinuierlich wiederholt, bis die Leistung ausgeschaltet ist.
Multicycle -Mikroarchitektur
Historisch gesehen waren die frühesten Computer Multycle -Designs. Die kleinsten, am wenigsten ausgerichteten Computer verwenden diese Technik häufig noch. Multycle -Architekturen verwenden häufig die geringste Gesamtzahl von Logikelementen und angemessenen Strommengen. Sie können so konzipiert werden, dass sie ein deterministisches Timing und eine hohe Zuverlässigkeit haben. Insbesondere haben sie keine Pipeline, um bei bedingten Zweigen oder Interrupts zu stehen. Andere Mikroarchitekturen führen jedoch häufig mehr Anweisungen pro Zeiteinheit mit derselben Logikfamilie aus. Bei der Diskussion über "verbesserte Leistung" ist eine Verbesserung häufig im Verhältnis zu einem Multycle -Design.
In einem Multycle -Computer führt der Computer die vier Schritte über mehrere Zyklen der Uhr aus. Einige Designs können die Sequenz in zwei Taktzyklen durchführen, indem sie aufeinanderfolgende Stufen an alternativen Taktkanten abschließen, möglicherweise mit längeren Vorgängen außerhalb des Hauptzyklus. Zum Beispiel Stufe 1 am steigenden Rand des ersten Zyklus, Stufe zwei am fallenden Rand des ersten Zyklus usw.
In der Kontrolllogik bestimmen die Kombination aus Zykluszähler, Zykluszustand (hoch oder niedrig) und die Bits des Befehlsdecodienregisters genau, was jeder Teil des Computers tun sollte. Um die Kontrolllogik zu entwerfen, kann man eine Tabelle mit Bits erstellen, die die Steuersignale für jeden Teil des Computers in jedem Zyklus jedes Befehls beschreiben. Anschließend kann diese Logiktabelle in einer Software -Simulation getestet werden, die den Testcode ausführt. Wenn die Logiktabelle in einen Speicher platziert und zum Ausführen eines echten Computers verwendet wird, wird sie als a genannt Mikroprogramm. In einigen Computerdesigns ist die Logiktabelle in Form einer kombinations -Logik aus Logikgoren optimiert, in der normalerweise ein Computerprogramm, das die Logik optimiert. Frühe Computer verwendeten AD-hoc-Logikdesign zur Kontrolle bis bis Maurice Wilkes erfand diesen tabellarischen Ansatz und nannte sie Mikroprogrammierung.[6]
Erhöhte Ausführungsgeschwindigkeit
Das Komplizieren dieser einfachen Reihe von Schritten ist die Tatsache, dass die Speicherhierarchie, die gehört zwischengespeichert, Haupterinnerung und nichtflüchtige Lagerung wie Festplatten (Wo sich die Programmanweisungen und Daten befinden), war immer langsamer als der Prozessor selbst. Schritt (2) führt häufig eine lange Verzögerung (in CPU -Begriffe) ein, während die Daten über die Computerbus. Eine beträchtliche Menge an Forschung wurde in Designs eingesetzt, die diese Verzögerungen so weit wie möglich vermeiden. Im Laufe der Jahre bestand ein zentrales Ziel darin, mehr Anweisungen parallel auszuführen und so die effektive Ausführungsgeschwindigkeit eines Programms zu erhöhen. Diese Bemühungen führten komplizierte Logik- und Schaltungsstrukturen ein. Zunächst konnten diese Techniken aufgrund der für diese Techniken benötigten Menge an Schaltkreisen nur auf teuren Mainframes oder Supercomputern implementiert werden. Mit fortschreitender Halbleiterfertigung konnten immer mehr dieser Techniken auf einem einzigen Halbleiterchip implementiert werden. Sehen Moores Gesetz.
Auswahl der Anweisungssatz
Die Anweisungssätze haben sich im Laufe der Jahre von ursprünglich sehr einfach bis manchmal sehr komplex verschoben (in unterschiedlicher Hinsicht). In den vergangenen Jahren, Last -Store -Architekturen, VLIW und EPOS Typen waren in Mode. Architekturen, die damit zu tun haben Datenparallelität enthalten Simd und Vektoren. Einige Etiketten, die zur Bezeichnung von Klassen von CPU -Architekturen verwendet werden, sind nicht besonders beschreibend, insbesondere das CISC -Etikett. Viele frühe Entwürfe bezeichnet rückwirkend "CISC"sind in der Tat deutlich einfacher als moderne RISC -Prozessoren (in mehrfacher Hinsicht).
Die Wahl von jedoch Anweisungsset Architektur kann die Komplexität der Implementierung von Hochleistungsgeräten erheblich beeinflussen. Die herausragende Strategie, die zur Entwicklung der ersten RISC -Prozessoren verwendet wurde, bestand darin, die Anweisungen auf ein Minimum der individuellen semantischen Komplexität in Kombination mit regelmäßiger Codierungsregeligkeit und Einfachheit zu vereinfachen. Solche einheitlichen Anweisungen wurden leicht abgerufen, dekodiert und auf pipelierte Weise ausgeführt und eine einfache Strategie zur Verringerung der Anzahl der Logikniveaus, um hohe Betriebsfrequenzen zu erreichen. Anweisungs-Cache-Memorien, die für die höhere Betriebsfrequenz und inhärent niedrig ausgeglichen sind Codedichte Während große Registersätze verwendet wurden, um so viel von den (langsamen) Speicherzugriff wie möglich zu berücksichtigen.
Unterrichtspipelining
Eine der ersten und leistungsstärksten Techniken zur Verbesserung der Leistung ist der Einsatz von Unterrichtspipelining. Frühe Prozessorentwürfe würden alle obigen Schritte für eine Anweisung ausführen, bevor sie zum nächsten übergehen. Große Teile der Schaltung wurden in einem Schritt untätig gelassen; Zum Beispiel wäre die Befehlskodierungsschaltung während der Ausführung im Leerlauf und so weiter.
Das Pipelining verbessert die Leistung, indem eine Reihe von Anweisungen gleichzeitig durch den Prozessor gearbeitet werden können. Im gleichen grundlegenden Beispiel würde der Prozessor (Schritt 1) eine neue Anweisung dekodieren, während der letzte auf die Ergebnisse wartete. Dies würde ermöglichen, dass bis zu vier Anweisungen gleichzeitig "im Flug" sein können, sodass der Prozessor viermal so schnell aussieht. Es dauert zwar so lange, bis eine Anweisung so lange dauert (es gibt noch vier Schritte), die CPU als Ganzes "Ruhestand" -Beweisungen viel schneller.
RISC macht die Pipelines kleiner und leichter zu konstruieren, indem sie jede Stufe des Anweisungsprozesses sauber trennen und die gleiche Zeit in Anspruch nehmen - einen Zyklus. Der Prozessor als Ganzes arbeitet in einem Fließband Mode, mit Anweisungen auf der einen Seite und entsteht die andere. Aufgrund der verringerten Komplexität der Klassische RISC -PipelineDer Pipelined -Kern und ein Befehlscache könnten auf die gleiche Größe gestellt werden, die ansonsten dem Kern allein in ein CISC -Design passt. Dies war der wahre Grund, warum RISC schneller war. Frühe Designs wie die Sparc und MIPS lief oft über 10 Mal so schnell wie Intel und Motorola CISC -Lösungen mit der gleichen Taktgeschwindigkeit und dem gleichen Preis.
Pipelines sind keineswegs auf RISC -Designs beschränkt. Bis 1986 die Top-of-the-Line-VAX-Implementierung (ImplementierungVax 8800) war ein stark pipeliertes Design, das sich leicht vor den ersten kommerziellen MIPS- und SPARC -Designs befasste. Die meisten modernen CPUs (sogar eingebettete CPUs) sind jetzt pipeliniert, und mikrokodierte CPUs ohne Pipelining sind nur in den am stärksten gebietsbeschränken eingebetteten Prozessoren zu sehen.[Beispiele erforderlich] Große CISC -Maschinen, vom VAX 8800 bis zum modernen Pentium 4 und Athlon, werden sowohl mit Mikrocode als auch mit Pipelines implementiert. Verbesserungen bei Pipelining und Caching sind die beiden wichtigsten mikroarchitekturalen Fortschritte, die es der Prozessorleistung ermöglicht haben, mit der Schaltungstechnologie, auf der sie basieren, Schritt zu halten.
Zwischenspeicher
Es dauerte nicht lange, bis Verbesserungen in der Chipherstellung ermöglichten, noch mehr Schaltkreise auf den Stempel zu platzieren, und Designer suchten nach Möglichkeiten, sie zu verwenden. Eine der häufigsten war, eine immer größere Menge an zu erhöhen Cache-Speicher On-Die. Cache ist sehr schnell und teurer Speicher. Es kann in einigen Zyklen zugegriffen werden, im Gegensatz zu vielen, die zum Hauptgedächtnis "sprechen" werden müssen. Die CPU enthält einen Cache -Controller, der das Lesen und Schreiben aus dem Cache automatisiert. Wenn sich die Daten bereits im Cache befinden, wird von dort aus zugegriffen - zu erheblichen Zeiteinsparungen, während nicht der Prozessor "ins Stocken geraten" ist, während der Cache -Controller sie liest.
RISC-Designs fügten Mitte bis Ende der 1980er Jahre mit dem Hinzufügen von Cache, oft insgesamt nur 4 KB. Diese Zahl wuchs im Laufe der Zeit und typische CPUs haben jetzt mindestens 2 MB, während leistungsfähigere CPUs mit 4 oder 6 oder 12 MB oder sogar 32 MB oder mehr ausgestattet sind. Mehrere Ebenen von a Speicherhierarchie. Im Allgemeinen bedeutet mehr Cache aufgrund einer verringerten Absetzung mehr Leistung.
Caches und Pipelines passten perfekt zueinander. Zuvor war es nicht viel Sinn, eine Pipeline zu erstellen, die schneller laufen konnte als die Zugriffslatenz des Off-Chip-Speichers. Unter Verwendung von On-Chip-Cache-Speicher führte stattdessen eine Pipeline mit der Geschwindigkeit der Cache-Zugriffslatenz und einer viel geringeren Zeitspanne aus. Dies ermöglichte es den Betriebsfrequenzen von Prozessoren, sich viel schneller zu erhöhen als die des Off-Chip-Speichers.
Zweigvorhersage
Eine Barriere für eine höhere Leistung durch Parallelität auf Befehlsebene beruht auf Pipeline-Ständen und -spülung aufgrund von Zweigen. Normalerweise erst in der Pipeline, ob ein bedingter Zweig genommen wird, wird erst spät in der Pipeline bekannt, da bedingte Zweige von den Ergebnissen abhängen, die aus einem Register stammen. Ab dem Zeitpunkt, an dem der Anweisungsdecoder des Prozessors herausgefunden hat, dass er auf eine bedingte Zweiganweisung gestoßen ist, bis zu dem Zeitpunkt, an dem der entscheidende Registerwert ausgelesen werden kann, muss die Pipeline für mehrere Zyklen ins Stocken geraten oder wenn dies nicht der Fall ist und der Zweig ist Eingenommen, die Pipeline muss gespült werden. Mit zunehmender Taktgeschwindigkeit erhöht sich die Tiefe der Pipeline damit, und einige moderne Prozessoren haben möglicherweise 20 Stufen oder mehr. Im Durchschnitt ist jeder fünfte Anweisungen ein Zweig, so dass dies ohne Intervention eine hohe Menge an Stalling ist.
Techniken wie Zweigvorhersage und Spekulative Ausführung werden verwendet, um diese Zweig -Strafen zu verringern. Bei der Vorhersage der Zweigstelle wird die Hardware ausgebildet, ob eine bestimmte Filiale eingenommen wird. In Wirklichkeit wird die eine oder die andere Seite des Zweigs viel häufiger als die andere bezeichnet. Moderne Designs haben ziemlich komplexe statistische Vorhersagesysteme, die die Ergebnisse früherer Zweige beobachten, um die Zukunft mit größerer Genauigkeit vorherzusagen. Die Vermutung ermöglicht es der Hardware, Anweisungen vorzulegen, ohne auf das Register -Lesen zu warten. Die spekulative Ausführung ist eine weitere Verbesserung, bei der der Code entlang des vorhergesagten Pfades nicht nur vorgeholt, sondern auch ausgeführt wird, bevor bekannt ist, ob der Zweig genommen werden sollte oder nicht. Dies kann eine bessere Leistung erzielen, wenn die Vermutung gut ist, mit dem Risiko einer enormen Strafe, wenn die Vermutung schlecht ist, da die Anweisungen rückgängig gemacht werden müssen.
Superscalar
Selbst bei all den zusätzlichen Komplexität und Toren, die zur Unterstützung der oben beschriebenen Konzepte erforderlich sind, ermöglichten Verbesserungen der Herstellung von Halbleitern bald noch mehr logische Tore.
In der Übersicht über dem Prozessor verarbeitet Teile einer einzelnen Anweisung gleichzeitig. Computerprogramme könnten schneller ausgeführt werden, wenn mehrere Anweisungen gleichzeitig verarbeitet würden. Das ist was Superscalar Prozessoren erreichen, indem sie funktionelle Einheiten wie Alus replizieren. Die Replikation von funktionellen Einheiten wurde nur ermöglicht, wenn der Würfelbereich eines Einzelausfallprozessors die Grenzen dessen, was zuverlässig hergestellt werden konnte, nicht mehr überdauerte. In den späten 1980er Jahren begannen Superscalar -Designs, den Markt zu betreten.
In modernen Designs ist es üblich, zwei Lasteinheiten zu finden, ein Geschäft (viele Anweisungen haben keine Ergebnisse zu speichern), zwei oder mehr ganzzahlige Mathematikeinheiten, zwei oder mehr schwimmende Punkteinheiten und oft ein Simd Einheit irgendeiner Art. Die Logik des Anweisungsproblems wächst in Komplexität, indem sie in einer riesigen Liste von Anweisungen aus dem Speicher gelesen und die verschiedenen Ausführungseinheiten abgibt, die zu diesem Zeitpunkt untätig sind. Die Ergebnisse werden dann am Ende gesammelt und neu angeordnet.
Ausführende Ausführung
Die Zugabe von Caches verringert die Häufigkeit oder Dauer der Stände, da das Warten darauf wartet, dass Daten aus der Speicherhierarchie abgerufen werden, diese Stände jedoch nicht vollständig loswerden. In frühen Designs a Cache Miss Würde den Cache -Controller zwingen, den Prozessor zum Stillstand zu bringen und zu warten. Natürlich gibt es möglicherweise eine andere Anweisung im Programm, deren Daten ist Zu diesem Zeitpunkt im Cache verfügbar. Ausführende Ausführung Ermöglicht die Bereitschaftsanweisung, während eine ältere Anweisung auf dem Cache wartet, und fordert dann die Ergebnisse nach, damit alles in der programmierten Reihenfolge passiert ist. Diese Technik wird auch verwendet, um andere Operandenabhängigkeitsstände zu vermeiden, wie z. B. eine Anweisung, die auf ein Ergebnis aus einem langen Latenz-Gleitpunktbetrieb oder anderen Multi-Zyklus-Operationen wartet.
Umbenennen registrieren
Die Umbenennung des Registers bezieht sich auf eine Technik, mit der unnötige serialisierte Ausführung von Programmanweisungen aufgrund der Wiederverwendung derselben Register durch diese Anweisungen vermieden werden. Angenommen, wir haben zwei Unterrichtsgruppen, die dasselbe verwenden werden registrieren. Ein Satz von Anweisungen wird zuerst ausgeführt, um das Register dem anderen Satz zu überlassen. Wenn jedoch ein anderer ähnlicher Register zugewiesen ist, können beide Anweisungssätze parallel (OR) in Reihe ausgeführt werden.
Multiprozessierung und Multithreading
Computerarchitekten haben sich durch die wachsende Missverhältnis in CPU -Betriebsfrequenzen und durch die Wachstumsfehlanpassung gestärkt und Dram Zugangszeiten. Keine der Techniken, die Parallelität (ILP) in einem Programm ausnutzten, konnte die langen Stände ausmachen, die auftraten, wenn Daten aus dem Hauptspeicher abgerufen werden mussten. Darüber hinaus sind die großen Transistorzahlen und hohe Betriebsfrequenzen, die für die fortschrittlicheren ILP -Techniken benötigt werden, die Leistungsableitungsniveaus erfordert, die nicht mehr billig abgekühlt werden konnten. Aus diesen Gründen haben neuere Generationen von Computern begonnen, ein höheres Maß an Parallelität zu nutzen, die außerhalb eines einzelnen Programms bestehen oder Programm Thread.
Dieser Trend ist manchmal als bekannt als Durchsatz Computing. Diese Idee entstand im Mainframe -Markt, wo Online -Transaktionsverarbeitung betonte nicht nur die Ausführungsgeschwindigkeit einer Transaktion, sondern auch die Fähigkeit, mit einer massiven Anzahl von Transaktionen umzugehen. Mit transaktionsbasierten Anwendungen wie Netzwerkrouting und Websites, die im letzten Jahrzehnt stark zunehmen, hat die Computerindustrie die Kapazitäts- und Durchsatzprobleme neu betont.
Eine Technik, wie diese Parallelität erreicht wird Multiprozessierung Systeme, Computersysteme mit mehreren CPUs. Einmal reserviert für High-End Mainframes und SupercomputerMultiprozessoren-Server im kleinen Maßstab (2–8) sind für den kleinen Unternehmensmarkt alltäglich geworden. Für große Unternehmen sind große (16–256) Multiprozessoren häufig. Eben persönliche Computer Mit mehreren CPUs sind seit den 1990er Jahren erschienen.
Mit weiteren Reduktionen der Transistorgrößen, die mit Fortschritten der Halbleitertechnologie verfügbar gemacht wurden, Multi-Core-CPUs sind erschienen, wenn mehrere CPUs auf demselben Siliziumchip implementiert werden. Zunächst in Chips, die auf eingebettete Märkte abzielen, wobei einfachere und kleinere CPUs mehrere Instanziationen auf ein Stück Silizium passen. Bis 2005 ermöglichte die Halbleitertechnologie Dual High-End-Desktop-CPUs CMP Chips, die in Volumen hergestellt werden sollen. Einige Entwürfe, wie z. Sun Microsystems' Ultrassparc T1 haben zu einfacheren (skalaren, in Ordnung) Designs zurückgekehrt, um mehr Prozessoren auf ein Stück Silizium zu stecken.
Eine weitere Technik, die in letzter Zeit immer mehr beliebter geworden ist, ist Multithreading. Beim Multithreading wechselt der Prozessor, wenn der Prozessor Daten aus dem Slow -System -Speicher abrufen muss, anstatt die Daten zum Eintreffen zu bringen, zu einem anderen Programm- oder Programm -Thread, der auszuführen ist. Dies beschleunigt jedoch nicht ein bestimmtes Programm/Thread, es erhöht den Gesamtsystem -Durchsatz durch Reduzierung der Zeit, die die CPU im Leerlauf ist.
Konzeptionell entspricht Multithreading a Kontextschalter Auf Betriebssystemebene. Der Unterschied besteht darin, dass eine Multithread -CPU einen Gewindeschalter in einem CPU -Zyklus anstelle der Hunderte oder Tausenden von CPU -Zyklen durchführen kann, die ein Kontextschalter normalerweise benötigt. Dies wird erreicht, indem die staatliche Hardware repliziert wird (wie die Datei registrieren und Programm zähler) Für jeden aktiven Thread.
Eine weitere Verbesserung ist Simultanes Multithreading. Mit dieser Technik kann Superscalar -CPUs Anweisungen aus verschiedenen Programmen/Threads gleichzeitig im selben Zyklus ausführen.
Siehe auch
- Steuergerät
- Hardwarearchitektur
- Hardware -Beschreibung Sprache (HDL)
- Parallelität auf Befehlsebene (ILP)
- Liste der AMD -CPU -Mikroarchitekturen
- Liste der Intel CPU -Mikroarchitekturen
- Prozessordesign
- Stream -Verarbeitung
- VHDL
- Sehr große Integration (VLSI)
- Verilog
Verweise
- ^ Lehrplanrichtlinien für Bachelor -Studiengänge im Computertechnik (PDF). Verband für Rechenmaschinen. 2004. p. 60. archiviert von das Original (PDF) Am 2017-07-03.
Kommentare zur Computerarchitektur und -organisation: Computerarchitektur ist eine Schlüsselkomponente des Computertechnik, und der praktizierende Computeringenieur sollte ein praktisches Verständnis für dieses Thema haben ...
- ^ Murdocca, Meilen; Heuring, Vincent (2007). Computerarchitektur und Organisation, ein integrierter Ansatz. Wiley. p. 151. ISBN 9780471733881.
- ^ Clements, Alan. Prinzipien der Computerhardware (4. Aufl.). S. 1–2.
- ^ Flynn, Michael J. (2007). "Eine Einführung in Architektur und Maschinen". Computerarchitektur pipelierte und parallele Prozessordesign. Jones und Bartlett. S. 1–3. ISBN 9780867202045.
- ^ a b Hennessy, John L.; Patterson, David A. (2006). Computerarchitektur: Ein quantitativer Ansatz (4. Aufl.). Morgan Kaufmann. ISBN 0-12-370490-1.
- ^ Wilkes, M. V. (1969). "Das Interesse des Interesses an Mikroprogramming: eine Literaturumfrage". ACM Computing -Umfragen. 1 (3): 139–145. doi:10.1145/356551.356553. S2CID 10673679.
Weitere Lektüre
- Patterson, D.; Hennessy, J. (2004). Computerorganisation und Design: Die Hardware-/Software -Oberfläche. Morgan Kaufmann. ISBN 1-55860-604-1.
- Hamacher, V. C.; Vasenic, Z. G.; Zaky, S. G. (2001). Computerorganisation. McGraw-Hill. ISBN 0-07-232086-9.
- Stallings, William (2002). Computerorganisation und Architektur. Prentice Hall. ISBN 0-13-035119-9.
- Hayes, J. P. (2002). Computerarchitektur und Organisation. McGraw-Hill. ISBN 0-07-286198-3.
- Schneider, Gary Michael (1985). Die Prinzipien der Computerorganisation. Wiley. pp.6–7. ISBN 0-471-88552-5.
- Mano, M. Morris (1992). Computersystemarchitektur. Prentice Hall. p.3. ISBN 0-13-175563-3.
- Abd-El-Barr, Mostafa; El-Wrewini, Hesham (2004). Grundlagen der Computerorganisation und Architektur. Wiley. p. 1. ISBN 0-471-46741-3.
- Gardner, J (2001). "PC -Prozessor Mikroarchitektur". Extremetech.
- Gilreath, William F.; Laplante, Phillip A. (2012) [2003]. Computerarchitektur: Eine minimalistische Perspektive. Springer. ISBN 978-1-4615-0237-1.
- Patterson, David A. (10. Oktober 2018). Ein neues goldenes Zeitalter für Computerarchitektur. US Berkeley ACM A.M. Turing Laureate Colloquium. CTWJ53R07YI.