Steuergerät - Control unit

Die Steuereinheit (CU) ist eine Komponente der Zentraleinheit (CPU) eines Computers , die den Betrieb des Prozessors steuert. Eine CU verwendet typischerweise einen binären Decoder , um codierte Befehle in Zeit- und Steuersignale umzuwandeln, die den Betrieb der anderen Einheiten (Speicher, arithmetische Logikeinheit und Eingabe- und Ausgabegeräte usw.) steuern .

Die meisten Computerressourcen werden von der CU verwaltet. Es leitet den Datenfluss zwischen der CPU und den anderen Geräten. John von Neumann hat die Steuereinheit als Teil der von Neumann-Architektur integriert . In modernen Computerdesigns ist die Steuereinheit typischerweise ein interner Teil der CPU, wobei ihre Gesamtfunktion und ihr Betrieb seit ihrer Einführung unverändert blieben.

Multicycle-Steuerungen

Die einfachsten Computer verwenden eine Multicycle-Mikroarchitektur . Dies waren die frühesten Entwürfe. Sie sind immer noch in den kleinsten Computern beliebt, beispielsweise in eingebetteten Systemen , die Maschinen bedienen.

In einem Multicycle-Computer durchläuft die Steuereinheit häufig den Von-Neumann-Zyklus : Holen Sie die Anweisung, holen Sie die Operanden, führen Sie die Anweisung aus, schreiben Sie die Ergebnisse. Wenn die nächste Anweisung in der Steuereinheit platziert wird, ändert sie das Verhalten der Steuereinheit, um die Anweisung korrekt zu beenden. Die Bits des Befehls steuern also direkt die Steuereinheit, die wiederum den Computer steuert.

Die Steuereinheit kann einen Binärzähler enthalten, um der Logik der Steuereinheit mitzuteilen, welcher Schritt sie ausführen soll.

Multicycle-Steuereinheiten verwenden typischerweise sowohl die steigenden als auch die fallenden Flanken ihres Rechteckwellen-Timing-Takts. Sie führen einen Schritt ihrer Operation an jeder Flanke des Zeittaktgebers durch, so dass eine vierstufige Operation in zwei Taktzyklen abgeschlossen wird.

Viele Computer haben zwei verschiedene Arten von unerwarteten Ereignissen. Ein Interrupt tritt auf, weil eine Art von Eingabe oder Ausgabe die Aufmerksamkeit der Software erfordert, um korrekt zu funktionieren. Eine Ausnahme wird durch den Betrieb des Computers verursacht. Ein entscheidender Unterschied besteht darin, dass der Zeitpunkt eines Interrupts nicht vorhergesagt werden kann. Ein anderer ist, dass einige Ausnahmen (z. B. eine Ausnahme bei nicht verfügbarem Speicher) durch einen Befehl verursacht werden können, der neu gestartet werden muss.

Steuereinheiten können so ausgelegt sein, dass sie Interrupts auf eine von zwei typischen Arten handhaben. Wenn eine schnelle Reaktion am wichtigsten ist, ist eine Steuereinheit so konzipiert, dass sie die Arbeit aufgibt, um den Interrupt zu behandeln. In diesem Fall wird die Ware in Arbeit nach der letzten abgeschlossenen Anweisung neu gestartet. Wenn der Computer sehr kostengünstig, sehr einfach, sehr zuverlässig sein oder mehr Arbeit erledigen soll, beendet die Steuereinheit die laufenden Arbeiten, bevor sie den Interrupt verarbeitet. Das Beenden der Arbeit ist kostengünstig, da kein Register benötigt wird, um den letzten beendeten Befehl aufzuzeichnen. Es ist einfach und zuverlässig, weil es die wenigsten Zustände hat. Es verschwendet auch den geringsten Arbeitsaufwand.

Ausnahmen können gemacht werden, um in sehr einfachen Computern wie Interrupts zu arbeiten. Wenn virtueller Speicher erforderlich ist, muss eine Ausnahme bei nicht verfügbarem Speicher den fehlgeschlagenen Befehl wiederholen.

Es ist üblich, dass Multicycle-Computer mehr Zyklen verwenden. Manchmal dauert ein bedingter Sprung länger, weil der Programmzähler neu geladen werden muss. Manchmal führen sie Multiplikations- oder Divisionsbefehle durch einen Prozess wie eine binäre lange Multiplikation und Division aus. Sehr kleine Computer können ein oder ein paar Bits gleichzeitig rechnen. Einige Computer haben sehr komplexe Anweisungen, die viele Schritte erfordern.

Verrohrte Steuergeräte

Viele Computer mittlerer Komplexität Pipeline-Anweisungen . Dieses Design ist wegen seiner Wirtschaftlichkeit und Geschwindigkeit beliebt.

In einem Pipeline-Computer fließen Anweisungen durch den Computer. Dieses Design hat mehrere Stufen. Zum Beispiel könnte es eine Stufe für jeden Schritt des Von-Neumann-Zyklus haben. Ein Computer mit Pipeline verfügt normalerweise nach jeder Stufe über "Pipeline-Register". Diese speichern die von einer Stufe berechneten Bits, so dass die Logikgatter der nächsten Stufe die Bits verwenden können, um den nächsten Schritt auszuführen. Es ist üblich, dass geradzahlige Stufen an einer Flanke des Rechteckwellentakts arbeiten, während ungeradzahlige Stufen an der anderen Flanke arbeiten.

In einem Pipeline-Computer sorgt die Steuereinheit dafür, dass der Fluss als Programmbefehle gestartet, fortgesetzt und gestoppt wird. Die Befehlsdaten werden normalerweise in Pipeline-Registern von einer Stufe zur nächsten weitergegeben, mit einer etwas getrennten Steuerlogik für jede Stufe. Die Steuereinheit stellt auch sicher, dass der Befehl in jeder Stufe den Betrieb von Befehlen in anderen Stufen nicht beeinträchtigt. Wenn beispielsweise zwei Stufen dasselbe Datenelement verwenden müssen, stellt die Steuerlogik sicher, dass die Verwendungen in der richtigen Reihenfolge erfolgen.

Bei effizientem Betrieb verfügt ein Pipeline-Computer in jeder Stufe über eine Anweisung. Es arbeitet dann an all diesen Anweisungen gleichzeitig. Es kann ungefähr einen Befehl für jeden Zyklus seines Taktgebers beenden. Wenn ein Programm eine Entscheidung trifft und zu einer anderen Befehlsfolge wechselt, muss die Pipeline manchmal die in Bearbeitung befindlichen Daten verwerfen und neu starten. Dies wird als "Stall" bezeichnet. Wenn sich zwei Befehle stören könnten, muss die Steuereinheit manchmal die Verarbeitung eines späteren Befehls stoppen, bis ein früherer Befehl abgeschlossen ist. Dies wird als "Pipeline-Blase" bezeichnet, da ein Teil der Pipeline keine Anweisungen verarbeitet. Pipeline-Blasen können auftreten, wenn zwei Befehle im selben Register arbeiten.

Interrupts und unerwartete Ausnahmen blockieren auch die Pipeline. Wenn ein Pipeline-Computer die Arbeit für einen Interrupt unterbricht, geht mehr Arbeit verloren als bei einem Multicycle-Computer. Vorhersehbare Ausnahmen müssen nicht ins Stocken geraten. Wenn beispielsweise ein Ausnahmebefehl verwendet wird, um in das Betriebssystem einzutreten, verursacht dies keinen Stillstand.

Geschwindigkeit? Bei gleicher Geschwindigkeit der elektronischen Logik kann er mehr Befehle pro Sekunde ausführen als ein Multicycle-Computer. Auch wenn die elektronische Logik eine feste maximale Geschwindigkeit hat, kann ein Pipeline-Computer durch Variieren der Anzahl von Stufen in der Pipeline schneller oder langsamer gemacht werden. Bei mehr Stufen verrichtet jede Stufe weniger Arbeit, und daher hat die Stufe weniger Verzögerungen von den Logikgattern .

Wirtschaft? Ein Pipeline-Modell eines Computers hat oft die wenigsten Logikgatter pro Befehl pro Sekunde, weniger als ein Computer mit mehreren Zyklen oder außer Betrieb. Wieso den? Die durchschnittliche Stufe ist weniger komplex als ein Multicycle-Computer. Ein Computer, der nicht in Betrieb ist, weist normalerweise zu jedem Zeitpunkt große Mengen an Leerlauflogik auf. Ähnliche Berechnungen zeigen normalerweise, dass ein Pipeline-Computer weniger Energie pro Befehl verbraucht.

Ein Pipeline-Computer ist jedoch normalerweise komplexer und teurer als ein vergleichbarer Multicycle-Computer. Es hat typischerweise mehr Logikgatter, Register und eine komplexere Steuereinheit. Auf ähnliche Weise könnte es mehr Gesamtenergie verbrauchen, während pro Anweisung weniger Energie verbraucht wird. CPUs, die nicht in Ordnung sind, können normalerweise mehr Befehle pro Sekunde ausführen, da sie mehrere Befehle gleichzeitig ausführen können.

Stände verhindern

Steuergeräte verwenden viele Methoden, um eine Pipeline voll zu halten und Blockaden zu vermeiden. Beispielsweise können selbst einfache Steuereinheiten davon ausgehen, dass eine Rückwärtsverzweigung zu einer niedriger nummerierten, früheren Anweisung eine Schleife ist und wiederholt wird. Ein Steuergerät mit dieser Bauart füllt also immer die Rohrleitung mit dem rückwärtigen Abzweigpfad. Wenn ein Compiler die am häufigsten genommene Richtung einer Verzweigung erkennen kann, kann der Compiler nur Anweisungen erzeugen, so dass die am häufigsten genommene Verzweigung die bevorzugte Verzweigungsrichtung ist. In ähnlicher Weise kann eine Steuereinheit Hinweise vom Compiler erhalten: Einige Computer verfügen über Anweisungen, die Hinweise des Compilers über die Verzweigungsrichtung codieren können.

Einige Steuereinheiten führen eine Verzweigungsvorhersage durch : Eine Steuereinheit führt eine elektronische Liste der letzten Verzweigungen, codiert durch die Adresse des Verzweigungsbefehls. Diese Liste enthält einige Bits für jede Verzweigung, um sich die zuletzt eingeschlagene Richtung zu merken.

Einige Steuereinheiten können eine spekulative Ausführung durchführen , bei der ein Computer zwei oder mehr Pipelines haben könnte, beide Richtungen einer Verzweigung berechnen und dann die Berechnungen der ungenutzten Richtung verwerfen.

Ergebnisse aus dem Speicher können zu unvorhersehbaren Zeiten verfügbar sein, da sehr schnelle Computer den Speicher zwischenspeichern . Das heißt, sie kopieren begrenzte Mengen von Speicherdaten in einen sehr schnellen Speicher. Die CPU muss so ausgelegt sein, dass sie mit der sehr hohen Geschwindigkeit des Cache-Speichers verarbeitet. Daher kann die CPU zum Stillstand kommen, wenn sie direkt auf den Hauptspeicher zugreifen muss. In modernen PCs ist der Hauptspeicher bis zu 300 Mal langsamer als der Cache.

Um dies zu unterstützen, wurden ausgefallene CPUs und Steuereinheiten entwickelt, um Daten zu verarbeiten, sobald sie verfügbar sind. (Siehe nächsten Abschnitt)

Aber was ist, wenn alle Berechnungen abgeschlossen sind, die CPU aber immer noch blockiert ist und auf den Hauptspeicher wartet? Dann kann eine Steuereinheit zu einem alternativen Ausführungsthread wechseln, dessen Daten geholt wurden, während der Thread im Leerlauf war. Ein Thread hat seinen eigenen Programmzähler, einen Strom von Befehlen und einen separaten Satz von Registern. Designer variieren die Anzahl der Threads je nach aktuellen Speichertechnologien und Computertyp. Typische Computer wie PCs und Smartphones haben in der Regel Steuergeräte mit wenigen Threads, gerade genug, um mit erschwinglichen Speichersystemen beschäftigt zu sein. Datenbankcomputer haben oft etwa doppelt so viele Threads, um ihre viel größeren Speicher zu beschäftigen. Grafikprozessoren (GPUs) haben normalerweise Hunderte oder Tausende von Threads, weil sie Hunderte oder Tausende von Ausführungseinheiten haben, die sich wiederholende Grafikberechnungen durchführen.

Wenn ein Steuergerät Threads zulässt, muss auch die Software darauf ausgelegt sein, damit umzugehen . In Allzweck-CPUs wie PCs und Smartphones werden die Threads normalerweise so gestaltet, dass sie normalen Time-Slice-Prozessen sehr ähnlich sind. Allenfalls benötigt das Betriebssystem eine gewisse Kenntnis davon. Bei GPUs kann das Thread-Scheduling normalerweise nicht vor der Anwendungssoftware verborgen werden und wird oft mit einer spezialisierten Subroutinenbibliothek gesteuert.

Steuergeräte ausgefallen

Eine Steuereinheit kann so konstruiert werden, dass sie alles leistet, was sie kann . Können mehrere Anweisungen gleichzeitig ausgeführt werden, wird dies von der Steuereinheit angeordnet. Somit können die schnellsten Computer Befehle in einer Reihenfolge verarbeiten, die etwas variieren kann, je nachdem, wann die Operanden oder Befehlsziele verfügbar werden. Die meisten Supercomputer und viele PC-CPUs verwenden diese Methode. Die genaue Organisation dieser Art von Steuereinheit hängt vom langsamsten Teil des Computers ab.

Wenn die Ausführung von Berechnungen am langsamsten ist, fließen Anweisungen aus dem Speicher in elektronische Teile, die als "Ausgabeeinheiten" bezeichnet werden. Eine Ausgabeeinheit hält einen Befehl, bis sowohl ihre Operanden als auch eine Ausführungseinheit verfügbar sind. Dann werden der Befehl und seine Operanden an eine Ausführungseinheit "ausgegeben". Die Ausführungseinheit führt die Anweisung aus. Dann werden die resultierenden Daten in eine Warteschlange von Daten verschoben, um in den Speicher oder in die Register zurückgeschrieben zu werden. Wenn der Computer über mehrere Ausführungseinheiten verfügt, kann er normalerweise mehrere Befehle pro Taktzyklus ausführen.

Es ist üblich, spezialisierte Ausführungseinheiten zu haben. Beispielsweise kann ein Computer mit einem bescheidenen Preis nur eine Gleitkomma-Ausführungseinheit haben, da Gleitkommaeinheiten teuer sind. Derselbe Computer kann mehrere Integer-Einheiten haben, da diese relativ kostengünstig sind und den Großteil der Befehle ausführen können.

Eine Art von Steuereinheit zum Ausgeben verwendet ein Array aus elektronischer Logik, eine „Anzeigetafel", die erkennt, wann ein Befehl ausgegeben werden kann. Die „Höhe" des Arrays ist die Anzahl der Ausführungseinheiten und die „Länge" und „Breite". " sind jeweils die Anzahl der Quellen von Operanden. Wenn alle Elemente zusammenkommen, kreuzen sich die Signale von den Operanden und der Ausführungseinheit. Die Logik an dieser Kreuzung erkennt, dass die Anweisung funktionieren kann, daher wird die Anweisung an das freie "ausgegeben". Ausführungseinheit. Ein alternativer Stil der Ausgabesteuereinheit implementiert den Tomasulo-Algorithmus , der eine Hardware-Warteschlange von Befehlen neu ordnet. In gewisser Weise verwenden beide Stile eine Warteschlange. Die Anzeigetafel ist eine alternative Möglichkeit, eine Warteschlange von Befehlen zu codieren und neu anzuordnen, und einige Designer nennen es eine Warteschlangentabelle.

Mit etwas zusätzlicher Logik kann ein Scoreboard die Neuordnung der Ausführung, die Umbenennung von Registern und präzise Ausnahmen und Unterbrechungen kompakt kombinieren. Darüber hinaus kann dies ohne den energiehungrigen, komplexen inhaltsadressierbaren Speicher erfolgen, der vom Tomasulo-Algorithmus verwendet wird.

Wenn die Ausführung langsamer ist als das Schreiben der Ergebnisse, hat die Speicherrückschreibwarteschlange immer freie Einträge. Aber was ist, wenn der Speicher langsam schreibt? Oder was ist, wenn das Zielregister von einem "früheren" Befehl verwendet wird, der noch nicht ausgegeben wurde? Dann muss möglicherweise der Rückschreibschritt der Anweisung geplant werden. Dies wird manchmal als "Zurückziehen" einer Anweisung bezeichnet. In diesem Fall muss es eine Scheduling-Logik im Backend von Ausführungseinheiten geben. Es plant den Zugriff auf die Register oder den Speicher, die die Ergebnisse erhalten.

Die Ausscheidelogik kann auch in eine Ausgabeanzeigetafel oder eine Tomasulo-Warteschlange integriert werden, indem Speicher- oder Registerzugriff in die Ausgabelogik aufgenommen wird.

Außerbetriebliche Controller erfordern spezielle Konstruktionsmerkmale, um Interrupts zu handhaben. Wenn mehrere Befehle in Bearbeitung sind, ist nicht klar, wo im Befehlsstrom ein Interrupt auftritt. Für Input- und Output-Interrupts funktioniert fast jede Lösung. Wenn ein Computer jedoch über virtuellen Speicher verfügt, tritt ein Interrupt auf, um anzuzeigen, dass ein Speicherzugriff fehlgeschlagen ist. Dieser Speicherzugriff muss einem genauen Befehl und einem genauen Prozessorzustand zugeordnet sein, damit der Zustand des Prozessors durch den Interrupt gesichert und wiederhergestellt werden kann. Eine übliche Lösung bewahrt Kopien von Registern auf, bis ein Speicherzugriff abgeschlossen ist.

Außerdem haben CPUs, die nicht in Ordnung sind, noch mehr Probleme mit Blockierungen durch Verzweigungen, da sie mehrere Befehle pro Taktzyklus ausführen können und normalerweise viele Befehle in verschiedenen Fortschrittsstadien haben. Diese Steuereinheiten können also alle Lösungen verwenden, die von Pipeline-Prozessoren verwendet werden.

Steuergeräte übersetzen

Einige Computer übersetzen jede einzelne Anweisung in eine Folge einfacherer Anweisungen. Der Vorteil besteht darin, dass ein außer Betrieb befindlicher Computer im Großteil seiner Logik einfacher sein kann, während er komplexe mehrstufige Anweisungen handhabt. x86- Intel-CPUs seit dem Pentium Pro übersetzen komplexe CISC-x86-Befehle in RISC-ähnliche interne Mikrooperationen.

Bei diesen verwaltet die "Front" des Steuergeräts die Übersetzung der Anweisungen. Operanden werden nicht übersetzt. Die "Rückseite" der CU ist eine ausgefallene CPU, die die Mikrooperationen und Operanden an die Ausführungseinheiten und Datenpfade ausgibt.

Steuereinheiten für Computer mit geringer Leistung

Viele moderne Computer verfügen über Bedienelemente, die den Stromverbrauch minimieren. Bei batteriebetriebenen Computern, beispielsweise in Mobiltelefonen, liegt der Vorteil in einer längeren Akkulaufzeit. Bei Computern mit Netzstrom besteht die Begründung darin, die Kosten für Strom, Kühlung oder Geräusche zu senken.

Die meisten modernen Computer verwenden CMOS- Logik. CMOS verschwendet Energie auf zwei gängige Arten: Durch Zustandsänderung, dh "Wirkleistung", und durch unbeabsichtigte Leckage. Die Wirkleistung eines Computers kann durch das Abschalten von Steuersignalen reduziert werden. Kriechströme können reduziert werden, indem der elektrische Druck, die Spannung reduziert, die Transistoren mit größeren Verarmungsbereichen versehen oder die Logik komplett abgeschaltet werden.

Wirkleistung lässt sich leichter reduzieren, da in der Logik gespeicherte Daten nicht beeinflusst werden. Die übliche Methode reduziert den Takt der CPU. Die meisten Computersysteme verwenden diese Methode. Es ist üblich, dass eine CPU während des Übergangs im Leerlauf läuft, um Nebenwirkungen durch den sich ändernden Takt zu vermeiden.

Die meisten Computer haben auch eine "Halt"-Anweisung. Dies wurde erfunden, um Nicht-Interrupt-Code zu stoppen, damit Interrupt-Code ein zuverlässiges Timing hat. Die Designer stellten jedoch bald fest, dass ein Halt-Befehl auch ein guter Zeitpunkt ist, um den Takt einer CPU vollständig abzuschalten, wodurch die Wirkleistung der CPU auf Null reduziert wird. Der Interrupt-Controller benötigt möglicherweise weiterhin einen Takt, der jedoch normalerweise viel weniger Strom verbraucht als die CPU.

Diese Methoden sind relativ einfach zu entwerfen und wurden so weit verbreitet, dass andere aus kommerziellen Gründen erfunden wurden. Viele moderne CMOS-CPUs mit geringem Stromverbrauch stoppen und starten je nach benötigtem Befehl spezialisierte Ausführungseinheiten und Busschnittstellen. Einige Computer ordnen die Mikroarchitektur der CPU sogar so an, dass übertragungsgetriggerte Multiplexer verwendet werden, sodass jeder Befehl nur genau die benötigten Logikteile verwendet.

Theoretisch könnten Computer mit niedrigeren Taktraten auch die Leckage reduzieren, indem die Spannung des Netzteils reduziert wird. Dies beeinträchtigt die Zuverlässigkeit des Computers in vielerlei Hinsicht, so dass die Technik teuer ist, und es ist ungewöhnlich, außer bei relativ teuren Computern wie PCs oder Mobiltelefonen.

Einige Designs können Transistoren mit sehr geringem Leckstrom verwenden, aber diese erhöhen normalerweise die Kosten. Die Verarmungsbarrieren der Transistoren können größer gemacht werden, um weniger Leckage zu haben, aber dies macht den Transistor größer und somit sowohl langsamer als auch teurer. Einige Anbieter verwenden diese Technik in ausgewählten Abschnitten einer IC, indem sie eine Logik mit niedrigem Leckverlust aus großen Transistoren aufbauen, die einige Prozesse für analoge Schaltungen bereitstellen. Einige Prozesse platzieren die Transistoren über der Oberfläche des Siliziums, in "Flossen-Fets", aber diese Prozesse haben mehr Schritte und sind daher teurer. Spezielle Dotierungsmaterialien für Transistoren (zB Hafnium) können ebenfalls die Leckage reduzieren, aber dies erhöht die Verarbeitungsschritte und macht sie teurer. Einige Halbleiter haben eine größere Bandlücke als Silizium. Allerdings sind diese Materialien und Verfahren derzeit (2020) teurer als Silizium.

Die Verwaltung von Lecks ist schwieriger, denn bevor die Logik ausgeschaltet werden kann, müssen die darin enthaltenen Daten in einen Speicher mit geringer Leckage verschoben werden.

Eine übliche Methode besteht darin, die Last auf viele CPUs zu verteilen und nicht verwendete CPUs auszuschalten, wenn die Last sinkt. Die Taskwechsellogik des Betriebssystems speichert die Daten der CPUs im Speicher. In einigen Fällen kann eine der CPUs einfacher und kleiner sein, buchstäblich mit weniger Logikgattern. Es hat also eine geringe Leckage und ist das letzte, das ausgeschaltet wird, und das erste, das eingeschaltet wird. Außerdem ist sie dann die einzige CPU, die spezielle Low-Power-Features benötigt. Eine ähnliche Methode wird bei den meisten PCs verwendet, die normalerweise über eine eingebettete Hilfs-CPU verfügen, die das Stromversorgungssystem verwaltet. Bei PCs befindet sich die Software jedoch normalerweise im BIOS, nicht im Betriebssystem.

Einige CPUs verwenden einen speziellen Flip-Flop-Typ (um ein Bit zu speichern), der eine schnelle Speicherzelle mit hoher Leckage mit einer langsamen, großen (teuren) Zelle mit geringer Leckage koppelt. Diese beiden Zellen haben getrennte Stromversorgungen. Wenn die CPU in einen Energiesparmodus eintritt (z. B. wegen eines Halts, der auf einen Interrupt wartet), werden Daten an die Zellen mit geringem Leckstrom übertragen, und die anderen werden ausgeschaltet. Wenn die CPU einen Low-Leakage-Modus verlässt (zB wegen eines Interrupts), wird der Vorgang umgekehrt.

Ältere Designs kopierten den CPU-Zustand in den Speicher oder sogar auf die Festplatte, manchmal mit spezieller Software. Sehr einfache eingebettete Systeme starten manchmal einfach neu.

Integration mit dem Computer

Alle modernen CPUs verfügen über eine Steuerlogik, um die CPU mit dem Rest des Computers zu verbinden. Bei modernen Computern ist dies meist ein Buscontroller. Wenn ein Befehl einen Speicher liest oder schreibt, steuert die Steuereinheit entweder den Bus direkt oder steuert einen Buscontroller. Viele moderne Computer verwenden dieselbe Busschnittstelle für Speicher, Ein- und Ausgabe. Dies wird als "memory-mapped I/O" bezeichnet. Für einen Programmierer erscheinen die Register der E/A-Geräte als Nummern an bestimmten Speicheradressen. x86- PCs verwenden eine ältere Methode, einen separaten E/A-Bus, auf den über E/A-Befehle zugegriffen wird.

Eine moderne CPU neigt auch dazu, einen Interrupt- Controller zu enthalten. Er verarbeitet Interrupt-Signale vom Systembus. Die Steuereinheit ist der Teil des Computers, der auf die Interrupts reagiert.

Es gibt oft einen Cache-Controller, um den Speicher zwischenzuspeichern . Der Cache-Controller und der dazugehörige Cache-Speicher ist oft der größte physikalische Teil einer modernen, leistungsfähigeren CPU. Wenn der Speicher, Bus oder Cache mit anderen CPUs geteilt wird, muss die Steuerlogik mit ihnen kommunizieren, um sicherzustellen, dass kein Computer jemals veraltete alte Daten erhält.

Viele historische Computer haben eine Art von Ein- und Ausgabe direkt in die Steuereinheit eingebaut. Viele historische Computer hatten beispielsweise eine Frontplatte mit Schaltern und Lichtern, die direkt von der Steuereinheit gesteuert wurden. Diese ermöglichen es einem Programmierer, ein Programm direkt einzugeben und zu debuggen. Bei späteren Produktionscomputern bestand die häufigste Verwendung eines Frontpanels darin, ein kleines Bootstrap-Programm einzugeben, um das Betriebssystem von der Festplatte zu lesen. Das war ärgerlich. So wurden Frontpanels durch Bootstrap-Programme im Nur-Lese-Speicher ersetzt.

Die meisten PDP-8- Modelle verfügten über einen Datenbus, der es I/O-Geräten ermöglichte, die Lese- und Schreiblogik des Speichers der Steuereinheit auszuleihen. Dies reduzierte die Komplexität und die Kosten von Hochgeschwindigkeits-I/O-Controllern, zB für Platten.

Der Xerox Alto verfügte über eine mikroprogrammierbare Multitasking-Steuereinheit, die fast alle E/A-Vorgänge durchführte. Dieses Design bot die meisten Funktionen eines modernen PCs mit nur einem winzigen Bruchteil der elektronischen Logik. Der Dual-Thread-Rechner wurde von den beiden Microthreads mit der niedrigsten Priorität betrieben. Diese führten Berechnungen durch, wenn E/A nicht erforderlich war. Mikrothreads mit hoher Priorität stellten (mit abnehmender Priorität) Video, Netzwerk, Festplatte, einen periodischen Timer, Maus und Tastatur bereit. Das Mikroprogramm hat die komplexe Logik des E/A-Geräts sowie die Logik zur Integration des Geräts in den Computer übernommen. Für die eigentliche Hardware-I/O liest und schreibt das Mikroprogramm Schieberegister für die meisten I/O, manchmal mit Widerstandsnetzwerken und Transistoren zum Verschieben der Ausgangsspannungspegel (zB für Video). Um externe Ereignisse zu behandeln, hatte der Mikrocontroller Mikrointerrupts, um Threads am Ende eines Thread-Zyklus umzuschalten, zB am Ende einer Anweisung oder nachdem auf ein Schieberegister zugegriffen wurde. Das Mikroprogramm konnte neu geschrieben und neu installiert werden, was für einen Forschungscomputer sehr nützlich war.

Funktionen der Steuereinheit

Somit wird ein Programm von Befehlen im Speicher die CU veranlassen, die Datenflüsse einer CPU zu konfigurieren, um die Daten zwischen den Befehlen korrekt zu manipulieren. Dies führt zu einem Computer, der ein vollständiges Programm ausführen konnte und kein menschliches Eingreifen erforderte, um Hardwareänderungen zwischen den Anweisungen vorzunehmen (wie dies bei der Verwendung von Lochkarten für Berechnungen vor der Erfindung gespeicherter programmierter Computer mit CUs erforderlich war).

Festverdrahtetes Steuergerät

Animation der Steuermatrix eines einfachen festverdrahteten Steuergeräts, das einen LDA-Befehl ausführt

Festverdrahtete Steuereinheiten werden durch die Verwendung kombinatorischer Logikeinheiten implementiert , die eine endliche Anzahl von Gattern aufweisen, die basierend auf den Anweisungen, die zum Aufrufen dieser Antworten verwendet wurden, spezifische Ergebnisse erzeugen können. Festverdrahtete Steuereinheiten sind im Allgemeinen schneller als die mikroprogrammierten Designs.

Dieses Design verwendet eine feste Architektur – es erfordert Änderungen in der Verdrahtung, wenn der Befehlssatz modifiziert oder geändert wird. Es kann für einfache, schnelle Computer praktisch sein.

Ein Controller, der diesen Ansatz verwendet, kann mit hoher Geschwindigkeit arbeiten; es hat jedoch wenig Flexibilität. Ein komplexer Befehlssatz kann einen Designer überfordern, der ein Ad-hoc-Logikdesign verwendet.

Der festverdrahtete Ansatz hat mit der Entwicklung von Computern an Popularität verloren. Früher verwendeten Steuergeräte für CPUs eine Ad-hoc-Logik, und sie waren schwierig zu entwerfen.

[1]

Steuergerät für Mikroprogramm

Die Idee der Mikroprogrammierung wurde 1951 von Maurice Wilkes als Zwischenstufe zur Ausführung von Computerprogrammanweisungen eingeführt. Mikroprogramme wurden als Folge von Mikrobefehlen organisiert und in einem speziellen Steuerspeicher gespeichert. Der Algorithmus für das Mikroprogramm-Steuergerät wird im Gegensatz zum festverdrahteten Steuergerät normalerweise durch eine Flussdiagrammbeschreibung spezifiziert . Der Hauptvorteil einer mikroprogrammierten Steuereinheit ist die Einfachheit ihres Aufbaus. Die Ausgaben des Controllers erfolgen durch Mikrobefehle. Das Mikroprogramm kann wie Software debuggt und ersetzt werden.

Kombinationsmethoden des Designs

Eine beliebte Variante des Mikrocodes besteht darin, den Mikrocode mit einem Softwaresimulator zu debuggen. Dann ist der Mikrocode eine Bittabelle. Dies ist eine logische Wahrheitstabelle , die eine Mikrocode-Adresse in die Ausgänge der Steuereinheit übersetzt. Diese Wahrheitstabelle kann einem Computerprogramm zugeführt werden, das eine optimierte elektronische Logik erzeugt. Die resultierende Steuereinheit ist fast so einfach zu entwerfen wie eine Mikroprogrammierung, hat jedoch die hohe Geschwindigkeit und die geringe Anzahl von Logikelementen einer fest verdrahteten Steuereinheit. Das praktische Ergebnis ähnelt einer Mealy-Maschine oder einer Richards-Steuerung .

Siehe auch

Verweise