CPU - Grundlegendes Design der Steuereinheit

Ich habe versucht, eine einfache 8-Bit-CPU in Logisim zu implementieren, und habe eine ALU, eine Registerdatei usw. zusammengestellt, sodass Sie durch Manipulieren einiger Steuerleitungen für jedes Teil den Betrieb bestimmen können. Leider habe ich Mühe, die Steuereinheit zu implementieren, um die Steuerung dieser Signale zu koordinieren.

Viele der grundlegenden CPUs, die ich als Referenz finden kann, verwenden 16-Bit-Anweisungen, bei denen die gesamte Steuerlogik Teil des Opcodes selbst ist, wie z. B. die Hack-Architektur, die in The Elements of Computing Systems (die ich zuvor fertiggestellt habe) angegeben ist . Dies erleichtert die Steuerung der CPU erheblich, aber ich interessiere mich für die Verwendung eines 8-Bit-Befehlsformats, wie es bei klassischen 8-Bit-Mikros der Fall ist.

Ich nehme an, dass Sie beispielsweise eine einfache Nachschlagetabelle verwenden könnten, um sicherzustellen, dass Sie die richtigen Steuersignale für jede Anweisung ausgeben (deren Prinzipien ich verstehe), und dass Sie auch eine Zustandsmaschine für etwas Komplexeres verwenden könnten , aber keine der Informationen, die ich finden kann, berührt wirklich die Implementierung.

Was ist im Allgemeinen der einfachste Weg, eine CU für eine CPU zu entwerfen, die Befehle mit variablem Zyklus und eine Befehlslänge haben kann, die nicht alle Steuersignale direkt codieren kann? Ich mache mir keine Sorgen über die Verwendung von Pipelining oder anderen Funktionen, die das Design der CPU verkomplizieren würden.

Ich verstehe auch, dass Sie beim Entwerfen eines FSM normalerweise Karnaugh-Karten aus einer Wahrheitstabelle konstruieren, um die erforderliche kombinatorische Logik dafür zu entwerfen, aber selbst mit nur 16 Anweisungen (4 Eingangsbits) und 16 Zuständen hätten Sie dies sicherlich auch viele Variablen, um sogar eine k-Map zu erstellen? Wie fangen Sie überhaupt an, ein so komplexes FSM zu bauen? Auch hier konzentrieren sich alle Beispiele, die Sie finden können, auf den einfachsten vorstellbaren Fall, der normalerweise kein besonders nützlicher, "realer" Fall ist. Ich nehme auch an, dass FSMs im Prozessordesign im Allgemeinen nicht viel verwendet werden, aber für eine einfache CPU sind sie unbedingt eine schlechte Idee?

Grundsätzlich habe ich keine Ahnung, wo ich mit dem Design einer CU anfangen soll, obwohl ich nur minimale Schwierigkeiten hatte, die anderen Grundelemente einer CPU zu konstruieren.

Es hört sich so an, als würden Sie an eine sogenannte "mikroprogrammierte" Maschine denken, bei der der Opcode vereinfacht betrachtet die wichtigsten Bits der Mikrocode-ROM-Nachschlageadresse bereitstellt und dieses ROM eine große Datenbreite hat, damit es die verschiedenen bestätigen kann Steuersignale - der Schlüssel ist, dass ein Opcode nicht auf eine Zeile zeigt, sondern auf ein ganzes Unterprogramm-ähnliches "Mikroprogramm". Der AM2910 ist die klassische Engine zur Implementierung dieses Prozessortyps auf einer Platine; Sie können die Dokumentation informativ finden; Viele echte Computer und akademische Kurse wurden darum herum gebaut.
ja so funktionieren die, google CISC. Die 8 Bits werden nicht in Registerdefinitionen und Alu-Mux-Auswahl usw. zerlegt. In irgendeiner Weise formen oder formen Sie die 8 Bits in eine Tabelle mit anderen Operationen, in denen diese Dinge definiert sind. Es könnte Sie in eine Zustandsmaschine einspeisen oder in ein Rom oder eine andere Tabelle einsteigen, die die echten Anweisungen enthält, die die echte CPU füttern.
Alternativ, wie Sie in x86 ein wenig sehen, da Sie sowieso einen Befehlssatz mit variabler Länge benötigen würden, ist das eine Byte nur der Opcode und der Rest der Parameter in den folgenden Bytes (anstatt in einer Tabelle oder einer anderen mikrocodiert).

Antworten (1)

Suchen Sie auf YouTube nach Ben Eater, „Building an 8 bit breadboard computer“. Er hat ein ganzes Tutorial zum Bau eines 8-Bit-Computers mit ICs der 74LS-Serie auf einem Steckbrett. Derzeit arbeitet er an der Steuerlogik, einschließlich der Anweisungen und des Mikrocodes. Dies ist ein großartiges Tutorial, das Sie durch jedes Modul eines funktionierenden Computers führt, der einfache Programme ausführen kann. Er beginnt mit den Grundlagen jedes Moduls und entwickelt eine Arbeitseinheit, die klar und leicht verständlich ist. Kann es nicht genug empfehlen!!! Hoffe das hilft

Ausgezeichnete Empfehlung! Ich bin ein großer Fan seiner Videos. Er erklärt alles so verständlich. Ich glaube, seine Videos sollten für Elektro-/Computertechnik-Programme erforderlich sein.