Letztes mal wurde geklärt, wie Rechner in der Lage sind, durch Bitketten repräsentierte Zahlen zu addieren. Eigentlich müsste es heute in dieser Richtung weitergehen und es sollten weitere Addierwerke, die Darstellung von negativen und reellen Zahlen, Subtraktion, Multiplikation und Division sowie Probleme beim Rechnen in Computern erklärt werden. Das wird auch kommen, allerdings nicht in diesem Beitrag, da ich vorher noch ein für Computer und auch für das Rechnen wichtiges Thema dazwischen schieben möchte; und zwar, wie Daten im Computer überhaupt gespeichert werden können.
Ganz grob lassen sich drei Arten der Datenspeicherung im Computer unterscheiden. Die bekannteste Art dürfte die permanente Speicherung sein, etwa auf Festplatte oder CD. Hierbei werden die Daten so abgelegt, dass sie theoretisch unbegrenzt lange (in der Praxis natürlich begrenzt durch die Lebensdauer des Mediums) gehalten werden können, und zwar – das ist wichtig – unabhängig von einer Stromzufuhr. Diesen Vorteil erkauft sich die permanente Speicherung damit, dass das Schreiben und Lesen von Daten meist einige Zeit dauert.
Die zweite Art der Speicherung ist die Haltung von Daten für den laufenden Betrieb, also alles das, was in nächster Zeit für Berechnungen und ähnliches benötigt wird und wo daher ein schneller Zugriff notwendig ist. Derartige Daten werden im Arbeitsspeicher oder – je nach dem, wie dringend sie benötigt werden – im schnelleren Cache gehalten. Hier gespeicherte Daten können schnell ausgelesen und geschrieben werden, gehen allerdings verloren, wenn die Stromzufuhr unterbrochen wird.
Die dritte Art der Datenspeicherung im Computer ist der zweiten relativ ähnlich in Hinsicht auf Geschwindigkeit und Dauer; ich möchte sie dennoch separat betrachten, da sie etwas anders realisiert wird. Daten, die gerade aktuell für eine bestimmte Operation im Computer, zum Beispiel eine Addition, benötigt werden, müssen aus dem Arbeitsspeicher oder dem Cache in einen Speicherbereich verschoben werden, wo sie direkt (physikalisch gesehen) ausgewertet werden können. Die Bausteine, die diesen Speicherbereich bilden, nennen sich Register, und um die soll es heute gehen.
Die bisherigen Betrachtungen zur Arbeitsweise von Computern waren mehr oder weniger zustandslos, das heißt, es wurden keine Daten gespeichert; aufeinanderfolgende Operationen wurden immer unabhängig von den vorherigen durchgeführt. Das ist für das Arbeiten am Computer natürlich höchst hinderlich, da ja die verarbeiteten Daten meist etwas miteinander zu tun haben. Es ist also unbedingt nötig, Daten zu speichern, noch dazu auf eine Art, die es erlaubt, die Daten physikalisch effektiv zum Beispiel an ein Addierwerk weiterzuleiten. Diese Aufgabe übernehmen im Computer die sogenannten Register; das sind Bausteine, die eine Bitkette bestimmter Länge für einige Zeit speichern können. Es gibt dabei – wie immer – unterschiedliche Arten von Registern; welche genau, werden wir später sehen.
Da ein Register eine Bit-Kette speichert, ist es natürlich auch nötig, ein einzelnes Bit speichern zu können. Das Bauelement der Wahl hierfür ist das sogenannte Flipflop (oder auch sperriger: bistabile Kippstufe). Ein Flipflop (kurz: FF) hat – allgemein gesagt – die Aufgabe, ein einzelnes Bit über einen längeren Zeitraum zu speichern. Moderne Flipflops sind in der Regel aus Transistoren aufgebaut (wir erinnern uns) und lassen sich nach den verschiedensten Kriterien unterscheiden.
Eines der einfachsten Flipflops ist das sogenannte ungetaktete RS-Flipflop (RS-FF), welches bereits mit zwei einfachen NAND-Gattern aufgebaut werden kann. “RS” steht für “reset, set” und beschreibt sowohl den Aufbau als auch die Funktionsweise dieses Bauelementes. Das RS-FF besitzt zwei Eingänge, nämlich Set (S) und Reset (R) und zwei Ausgänge, meist als Q und Q bezeichnet. Q und Q sind – wie der Name bereits andeutet – komplementäre Eingänge, das heißt, wenn Q eine logische “1” anzeigt, zeigt Q eine “0” an und umgekehrt (es gibt auch den Fall, dass beide Ausgänge “1” sind, dazu aber gleich noch etwas).
Das RS-FF funktioniert so, dass der Ausgang Q auf den Wert “1” gesetzt wird, wenn am Eingang S (set) eine “1” und an R (reset) eine “0” anliegt. Umgekehrt wird der Ausgang auf “0” gesetzt, wenn an S eine “0” und an R eine “1” anliegt. Sind beide Eingänge auf “0”, so wird der aktuelle Zustand gespeichert – hier liegt die eigentliche Funktionsweise des RS-FF. Lediglich der Zustand, dass beide Eingänge auf “1” gesetzt werden, entspricht nicht der Nutzungsidee, da hier ein logischer Widerspruch vorliegt: gleichzeitiges setzen (set) und löschen (reset) einer Information ist nicht logisch; daher heißt dieser Zustand auch “verbotener Zustand”. Er kann natürlich trotzdem vorkommen, wobei hier beide Ausgänge des Flipflops den Wert “1” anzeigen. Es ergibt sich also folgende Zustandstabelle für das RS-Flipflop (t-1 steht für den zuletzt eingestellten Wert):
Kommentare (20)