Alt-F4 #24 - Erinnerungen schaffen  19.02.2021

Geschrieben von pocarski, editiert von stringweasel, Nanogamer7, Conor_, Therenas, Firerazer,
übersetzt von EDLEXUS, lektoriert von marceljoint

Inhaltsverzeichnis

In dieser Woche geht es weiter mit pocarski´s Fließbandcomputer, den wir bereits letzte Woche angefangen haben. Dieses Mal versuchen wir ihm beizubringen, sich zu erinnern. Mal schauen wie das wird.

Fließbandbasierter Rechner, Teil 2: Niemals vergessen pocarski

In dieser Woche geht es weiter mit meinen Artikeln zu fließbandbasierten Rechnern. Ich empfehle dringend, sich dazu noch mal die letzte Ausgabe zur Wiederholung anzuschauen.

Eine kleine Bemerkung noch bevor wir anfangen: Über die Woche hat der Discorduser BlueCheetah#7844 mein Volladdiererdesign von letzter Woche noch mal überholt, er ist jetzt etwas länger, dafür aber nur 4 Kacheln breit. Hier ist ein Bild, wie die selbe Aufgabe wie letzte Woche berechnet wird:

Verbesserter Volladdierer

Jetzt, wo wir das abgehakt haben, können wir auch richtig anfangen. Das letzte Mal haben wir uns damit befasst, wie wir Zahlen nur mit Fließbändern und Teilern addieren können. Diese Woche wollen wir uns etwas anschauen, was mindestens genauso wichtig ist: Arbeitsspeicher. Die Fähigkeit Zahlen zu addieren ist schön und gut, aber am Ende sinnlos, wenn man keine Möglichkeiten hat, die Aufgabe oder das Ergebnis zu speichern. In einem Prozessor werden die Ergebnisse der Addition gespeichert, und dann, nach einigen Veränderungen, zurück in die Addierer gegeben, die sie gerade erst berechnet haben. Das ermöglicht beinahe jede vorstellbare mathematische Operation.

Wie auch schon letzte Woche, stelle ich das Blaupausenbuch zur Verfügung, mit dem jeder selbst mit den Schaltungen von dieser Woche rumexperimentieren kann.

Der Multiplexer

Zu Beginn führen wir eine neue Schaltung ein: den Multiplexer. Ein Multiplexer hat zwei Dateneingänge A und B, einen Zeigereingang P und einen Ausgang O. Hier ist einmal die Wahrheitstabelle für diesen Multiplexer angegeben (“-“ bedeutet, das der Eingang keine Auswirkung auf den Ausgang hat):

A B P O
0 - 0 0
1 - 0 1
- 0 1 0
- 1 1 1

Der Zeigereingang P wählt im Prinzip aus, welcher der Dateneingänge an den Ausgang weitergegeben werden soll. Wenn P 0 ist, wird der Ausgang gleich dem Wert von A, und wenn er 1 ist, wird der Ausgang gleich Eingang B. Um das jetzt tatsächlich zu bauen, können wir UND-Gatter verwenden. Diese erlauben uns, einen Ausgewählten Eingang zu ignorieren. Wir können entscheiden, ob wir einen Eingang durchlassen wollen oder nicht, indem wir den anderen Eingang des Gatters ein- oder ausschalten. Mithilfe dessen können wir den Multiplexer darstellen als (A UND NICHT P) ODER (B UND P). Wir kennen bereits all diese Elemente, und können den Multiplexer dann wie folgt aufbauen:

Das ist eine einfache Duplikator-NICHT-Schaltung und zwei UND-Gatter. Außerdem benötigen wir ein paar Itemtauscher, um Ein- und Ausgabeitemtyp anzugleichen.

einfache Speicherzelle

Speicherzellen klingen zu Beginn sehr kompliziert. Eine Schaltung, welche sich an einen Eingang erinnert? Das benötigt doch sicher eine Art Speicher, und wie hat man einen Ausgabe, ohne das der Speicher irgendwann alle ist? Das ist die Stelle, wo unser neuer Freund, der Multiplexer zum Einsatz kommt. Was passiert, wenn wir den Ausgang außenrum führen und wieder mit dem Eingang A verbinden? Die Antwort ist: Magie!

Wie man erkennt haben wir mit einer kleinen Veränderung aus dem Multiplexer eine einfache Speicherzelle gemacht. Was früher der Eingang B war, ist jetzt der einzige Dateneingang, und was einmal der Zeigereingang P war, ist jetzt der Schreibfreigabe-Eingang. Diese Schaltung hat keinen Ausgang, da wir den zurück zum Eingang geführt haben, deswegen fügen wir noch einen Duplikator hinzu (und kombinieren einen Tauschen und ein UND-Gatter, so wie beim letzten Mal):

Die Schaltung, die wir gerade gebaut haben nennt man D-Flipflop. Ein solches Flipflop hat zwei Eingänge: D für “Data” (Daten) und E für “Enable” (Schreibfreigabe). Im gegensatz zu elektronischen Computern müssen wir E für einige Zeit aktiv lassen, da die Items bis zurück zum anfang kommen müssen, damit die Schaltung stabil wird. Ein D-Flipflop hat aber einen großen Nachteil: während E aktiv ist, kopiert der Ausgang den Eingang D, und verwandelt währenddessen die Schaltung in ein sehr komplizierten Draht. Um die Stabilität des Ausgangs zu gewährleisten, brauchen wir etwas komplexeren als ein D-Flipflop.

Master-Slave-Speicherzelle

Viele Probleme kann man einfach durch Duplikatrion lösen, und unser Problem mit dem D-Flipflop ist da keine Ausnahme. Wir dublizieren und invertieren den Eingang E und füttern damit den Schreibfreigabeeingang eines anderen D-Flipflops. Dann führen wir den Ausgang des ersten Flipflops in den Dateneingang des zweiten. Die Inversion wird hier mit einem dritten Itemtyp durchgeführt, welcher dann vom Schreibfreigabeeingang überschrieben wird. So wie letzte Woche kommen uns wieder die zwei Seiten des Fließbandes zur Hilfe, so das wir kein zweites Flipflop bauen müssen, sondern einfach nur beide Seiten clever benutzen können:

Dieses Doppel-Flipflop-System schafft eine Art Treppe für unseren Dateneingang, wo er auf der ersten Stufe erlaubt ist, wenn Eingang E aktiv ist und erst weiter darf, wenn er wieder aus ist. Das schützt unseren Ausgang vor Veränderungen, bis der gesamte Zyklus durchgelaufen ist. Jetzt können wir alles noch zu einem kompakteren Modul zusammenfassen:

Interessanterweise ist dieses Modul genauso groß wie der Volladdierer von letzter Woche (zumindest war es das, bis BlueCheetah kam). Das ist doch ein schöner Zufall.

Abschlussbemerkung

Jetzt, wo wir einen Volladdierer und Arbeitsspeicher haben, können wir einen vollständigen Prozessor bauen. Natürlich benötigen wir noch eine Clock, um alles zu steuern, aber das ist ganz einfach mit einer halb vollen Fließbandschleife und einen Duplikator gebaut. Die Arithmetisch-logische Einheit (auch: Rechenwerk, ALU) besteht nur aus einigen Volladdierern, die über ein Register, was nur aus einigen Speicherzellen besteht, zurück zu ihren Eingängen geführt werden. Meine Kenntnisse der Informatik sind aber nicht groß genug, um das vollständig zu erklären, also schaut euch doch letao12 auf YouTube an, da es seine Serie war, die mich zu dieser Fließbandbasierten Logik inspiriert hat.

Beitragen

Wie immer suchen wir nach Leuten, die zu Alt-F4 beitragen wollen, sei es mit einem Artikel oder durch Hilfe bei Übersetzungen. Wenn du etwas Interessantes im Kopf hast, das du mit der Community in einer eleganten Art teilen möchtest, hier kannst du das tun. Falls du dir unsicher bist, beantworten wir gerne Fragen zu Inhalt und Struktur. Falls das nach etwas klingt, woran du interessiert bist, tritt unserem Discord bei, um es nicht zu verpassen!