Gratis spielen

Speicher

Flipflops, Latches und Speicher: wie Gatter sich erinnern

Logikgatter haben kein Gedächtnis: Gleiche Eingänge ergeben immer den gleichen Ausgang. Trotzdem merkt sich jeder Computer Milliarden Bits. Der Trick ist eine Schleife. Führ den Ausgang eines Gatters auf seinen eigenen Eingang zurück, und die Schaltung kann sich selbst festhalten.

4 Min. Lesezeit · Aktualisiert

Rückkopplung: die Schleife, die sich selbst hält

Eine Schaltung aus Gattern ohne Schleifen heißt kombinatorisch (Schaltnetz). Ihre Ausgänge hängen nur von den aktuellen Eingängen ab, also kann sie sich nichts merken. Sobald ein Ausgang auf einen früheren Eingang zurückwirken darf, kann die Schaltung bei gleichen Eingängen mehr als einen stabilen Zustand haben – und in welchem sie gerade ist, hängt von ihrer Vorgeschichte ab. Das ist Speicher. Solche Schaltungen heißen in der Digitaltechnik sequenziell (Schaltwerk).

Der einfachste Speicher hält ein Bit mit zwei Gattern, die sich gegenseitig festhalten: Sagt das eine 1, wird das andere auf 0 gedrückt, und das hält wiederum das erste bei 1. Ohne Anstoß von außen bleibt das Paar für immer so (oder bis der Strom ausgeht). Wie man zwei NAND-Gatter dafür anordnet, ist eines der schönsten Rätsel im Spiel – deshalb bleiben wir hier bei der Idee.

Das SR-Latch (RS-Flipflop)

Ein SR-Latch, in deutschen Lehrbüchern meist RS-Flipflop genannt, hat zwei Steuereingänge. Ein Impuls auf Set setzt das gespeicherte Bit Q auf 1, und es bleibt 1, auch wenn der Impuls vorbei ist. Ein Impuls auf Reset setzt Q auf 0, und es bleibt 0. Ist keiner der Eingänge aktiv, hält das Latch einfach seinen Wert. Beide gleichzeitig zu aktivieren ist der verbotene Fall: Je nach Schaltung landen die Ausgänge in einem sinnlosen Zustand, oder sie liefern sich ein Wettrennen, sobald beide Eingänge losgelassen werden.

SRQ
Ein SR-Latch: Q geht mit dem Set-Impuls an und bleibt an, dann geht es mit dem Reset-Impuls aus und bleibt aus.

Die allererste Schaltung dieser Art war der Eccles-Jordan-Trigger, 1918 von den britischen Physikern William Eccles und F. W. Jordan mit zwei Elektronenröhren patentiert. Schaltungen mit zwei stabilen Zuständen wie diese bekamen später den Namen Flipflop (auch bistabile Kippstufe). Die frühen elektronischen Computer nutzten Tausende davon.

Das D-Latch: entscheiden, wann es zuhört

Ein SR-Latch braucht zwei Signale, um eine Sache zu sagen. Das D-Latch hat einen einzigen Dateneingang D und einen Enable-Eingang. Solange Enable an ist, folgt Q einfach D – das Latch ist transparent. Geht Enable aus, friert Q auf dem Wert ein, den D in diesem Moment hatte, und ignoriert D ab dann.

Das D-Flipflop: nur ein einziger Augenblick

In einer getakteten Maschine macht die Transparenz Ärger. Wenn der Ausgang eines Registers über etwas Logik auf seinen eigenen Eingang zurückgeht – etwa bei einem Zähler, der sich selbst um 1 erhöht –, würde ein transparentes Latch den Wert mehrmals durch die Schleife jagen, solange der Takt high ist. Die Lösung ist das flankengesteuerte D-Flipflop: Es übernimmt D nur in dem Augenblick, in dem der Takt von 0 auf 1 steigt (steigende Taktflanke), und hält seinen Ausgang die restliche Zeit fest. Eine Flanke, ein Schritt. Vergleich die beiden unten.

Q 0
DCLKQ
Schalte D und CLK um. Im Flipflop-Modus ändert sich Q nur, wenn CLK von 0 auf 1 geht. Wechsel in den Latch-Modus, und Q folgt D, solange CLK 1 ist.
CLKDQ
Ein flankengesteuertes D-Flipflop tastet D nur an jeder steigenden Taktflanke ab (gestrichelte Linien). Änderungen von D zwischen den Flanken werden ignoriert.

Timing: Setup-Zeit, Hold-Zeit und Metastabilität

Echte Flipflops brauchen D eine kurze Zeit vor der Taktflanke stabil (die Setup-Zeit) und eine kurze Zeit danach ebenfalls (die Hold-Zeit). Ändert sich D in diesem Fenster, kann das Flipflop eine unvorhersehbare Zeit zwischen 0 und 1 schweben, bevor es auf eine Seite kippt. Das nennt man Metastabilität. Deshalb schickt man Signale, die von außerhalb eines getakteten Systems kommen – ein Tastendruck oder Daten von einem anderen Chip mit eigenem Takt –, meist erst durch zwei Flipflops hintereinander, bevor man sie benutzt. Die Chance, dass das erste noch unentschieden ist, wenn das zweite abtastet, ist winzig.

Vom einzelnen Bit zum RAM

Setz acht D-Flipflops nebeneinander, gib ihnen einen gemeinsamen Takt und einen Load-Steuereingang, und du hast ein 8-Bit-Register. Etwas Logik, die den Registerausgang über einen Addierer zurückführt, und du hast einen Zähler – das Herz eines Befehlszählers. Viele Register zusammen mit einem Adressdecoder, der auswählt, welches beschrieben wird, und einem Selektor, der auswählt, welches gelesen wird, ergeben RAM.

DecoderAdresse → eine LeitungRegister 0Register 1…Register nSelektorAdresse → Daten raus
RAM als Blockschaltbild: Die Adresse wählt ein Register zum Schreiben und eins zum Lesen. Echte RAM-Chips nutzen viel dichtere Zellen, aber die Schnittstelle ist dieselbe.

Echte Speicherchips bauen nicht jedes Bit aus einem kompletten Flipflop. Statisches RAM (SRAM, für CPU-Caches) speichert jedes Bit in einer Schleife aus zwei Invertern plus zwei Zugriffstransistoren, sechs Transistoren insgesamt. Dynamisches RAM (DRAM, der Arbeitsspeicher deines Computers) speichert jedes Bit als Ladung in einem winzigen Kondensator mit einem Transistor und muss es tausende Male pro Sekunde auffrischen, bevor es wegsickert. Die Idee ist dieselbe wie beim Latch: Ein Bit ist ein physikalischer Zustand, den etwas an Ort und Stelle hält.