Es hat etwas gedauert, aber hier nun wie versprochen die Fortführung des letzten Artikels. Thematisch bleiben wir bei bei der Betrachtung, wie Computer Daten für die sofortige Verarbeitung intern abspeichern können.
Als letztes hatten wir im vorherigen Artikel das sogenannte D-Latch besprochen. Das D-Latch ist ein taktgesteuertes Flipflop, welches abhängig vom Takt den Wert seines Dateneingangs übernimmt. Der Nachteil dieses Bauelementes ist allerdings genau dies: so lange nämlich am Takteingang der Wert “1” anliegt, wird der am Dateneingang anliegende Wert übernommen. Das ist ein Verhalten, welches so nicht immer gewünscht ist, da sich während eines Taktzyklus (also der Änderung des Taktes von “0” auf “1” und wieder zurück zu “0”) die am Dateneingang anliegenden Werte durchaus verändern können; diese Veränderung soll aber oft erst im nächsten Takt übernommen werden. Es ist also noch eine andere Art von Bauelement notwendig.
Abhilfe schafft hier das bereits erwähnte D-Flipflop. Im Gegensatz zum D-Latch ist es nicht taktgesteuert, sondern taktflankengesteuert, das heißt, dass die Eingabewerte nur bei einer Taktflanke übernommen werden. Eine Taktflanke ist die Änderung des Taktsignals von “0” auf “1” oder von “1” auf “0”. Das typische D-Flipflop reagiert auf die positive Taktflanke, also die Änderung von “0” auf “1”. Zur Veranschaulichung wieder ein kleines interaktives Schaltbild; als Bonus gibt es darunter noch einmal die Schaltung für das D-Latch, damit die Unterschiede im Verhalten direkt miteinander verglichen werden können (Achtung: beim D-Flipflop sind Takt- und Dateneingang vertauscht und der Takteingang hat ein anderes Symbol!):
Und hier das D-Latch zum Vergleich:
Damit sind wir eigentlich nur noch einen Schritt davon entfernt, Daten im Computer wirklich zur weiteren Verwendung speichern zu können. Normalerweise möchte man nämlich nicht nur einzelne Bits speichern, sondern ganze Bitketten, die zur Repräsentation von Zahlen (und damit beliebigen Werten) dienen. Die einfachste Form davon ist natürlich die parallele Aneinanderreihung mehrerer Flipflops (wenn nichts anderes erwähnt wird, ist ab jetzt immer von D-Flipflops die Rede), die jeweils ein einzelnes Bit speichern. Die untenstehende Schaltung realisiert einen derartigen Speicher für 8 Bit; den Zusammenschluss der Flipflops nennt man Register, hier ist demzufolge ein taktflankengesteuertes 8-Bit-Register abgebildet. Die Funktionsweise ist simpel: im Moment des Anliegens einer positiven Taktflanke werden die Eingangssignale übernommen und so lange gespeichert, bis erneut eine positive Taktflanke anliegt; dann werden die neuen Werte übernommen:
Das große Geheimnis der Datenspeicherung im Computer ist damit eigentlich gelöst; die vorgestellte Register-Struktur ist in der Lage, Bitketten einer vorgegebenen Länge zu speichern. In der Praxis kommt allerdings (unter anderem) noch ein weiterer Registertyp vor, der insbesondere für Berechnungen interessant ist. Die Rede ist von sogenannten Schieberegistern. Im Gegensatz zu den “gewöhnlichen” Registern werden hier die einzelnen Bits nicht parallel, also gleichzeitig eingegeben, sondern ein Bit nach dem anderen; sie werden hineingeschoben. In seiner einfachsten Form sieht das Register so aus, hier in der Realisierung als 4-Bit-Register:
Es existieren die unterschiedlichsten Arten von Schieberegistern; Variationen sind etwa Register, bei denen die Schieberichtung beeinflusst werden kann, die mit einer Bitkette direkt (also ohne das Hineinschieben) gefüllt werden können oder die zyklisch sind, also bei denen die Bits, die hinten herausfallen, vorne wieder hineingeschoben werden.
Allen Registern ist gemein, dass sie flüchtig sind; heißt, wenn der Strom abgestellt wird, sind die Inhalte auch weg. Im Gegensatz etwa zum Arbeitsspeicher bleibt der Inhalt eines Registers auch nur für sehr kurze Zeit (bei normalen Registern etwa nur ein Takt) erhalten, danach müssen sie “neu” befüllt werden. Der Grund für diesen Informationsverlust ist profan: beim Auftreten der nächsten Taktflanke wird ja der am Eingang eines Registers anliegende Wert übernommen und damit der zuvor gespeicherte überschrieben. Soll also der Inhalt eines Registers erhalten bleiben, so muss es entweder vom Takt getrennt oder der eigene Inhalt wiederum als Input verwendet werden.
So, damit wissen wir nun, wie ein Computer rechnen kann und wie es ihm möglich ist, Daten für die Verwendung zu speichern. Im Artikel über die Addierer habe ich bereits angedeutet, dass die Register benutzt werden können, um eine andere Art von Addierwerk umzusetzen. Wie das funktioniert, schauen wir uns dann im nächsten Artikel an.
Kommentare (2)