[vorheriger Abschnitt][nächster Abschnitt][Inhalt]

2 Grundlagen der Rechnerarchitektur


2.1.1 Register

Das Register ist die gesuchte Funktionseinheit zum Speichern eines Binärwortes. Jeder Computer besitzt mehrere Register. Ein Register kann ein Binärwort für beliebig lange Zeit speichern. Dieses Binärwort darf maximal aus n Bits bestehen, man sagt dann "das Register hat die Breite n". Das folgende Bild zeigt eine schematische Ansicht eines Registers, wie sie ähnlich auch in den Applets erscheinen wird:

[Schema Register]Vereinfacht gesagt funktioniert das Register so: Es enthält zu jeder Zeit einen Wert (hier: 0000 hexadezimal, also das 16bittige Binärwort 0000 0000 0000 0000). Dieser Wert bleibt konstant, bis die Taktleitung aktiviert wird. Vorher ist es für das Register also unerheblich, ob der Dateneingang seinen Wert ändert! Damit wäre es möglich, mehreren Registern denselben Dateneingang zu geben, über die Taktleitung würde man dann auswählen, welches Register (keines, eines, mehrere, alle) ein neues Binärwort beachten würde.
Sobald die Taktleitung aktiviert wurde, übernimmt das Register den neuen Wert. Der neue Wert ist "sofort" am Datenausgang zu sehen. Der Datenausgang sendet immer und jederzeit den Wert des Registers aus. Deswegen können übliche Register nicht einfach mit den Ausgängen zusammengeschaltet werden - weil die Bits der Binärwörter auf der Ebene elektrischer Schaltungen durch elektrische Spannungen repräsentiert werden, wäre ein Kurzschluss die Folge, sobald zwei Register nicht den gleichen Wert enthalten! Ein solcher Konstruktionsfehler in der Hardware kann, anders als ein Softwarefehler, einen Rechner dauerhaft beschädigen.
Mit der Reset-Leitung kann das Register auf einen fest in der Hardware "verdrahteten" Wert zurückgesetzt werden. Wenn diese aktiviert wird, ignoriert das Register den Daten- und Takteingang und nimmt "sofort" seinen Reset-Wert an (z.B. FFFF hexadezimal).

Wer diese grundlegende Funktionsweise des Registers verstanden hat, erwartet sicherlich einige dieser Ergänzungen:

  1. Das verwendete Symbol für das Register, wie es auch in allen folgenden Applets vorkommen wird, entspricht dem eines sogenannten Flipflops (genauer gesagt eines vorderflankengesteuerten D-Flipflops). Ein Flipflop ist quasi ein Mini-Register zur Speicherung genau eines Bits. Anders herum gesagt, ein Register der Breite n besteht aus n unabhängigen Flipflops, von denen jedes mit einem anderen Bit des Dateneingangs und -ausgangs verbunden ist, die aber alle die gleichen Takt- und Reset-Signale benutzen.
    Wenn das Register die Breite n hat, müssen natürlich Datenein- und -ausgang die Breite n haben, d.h. sie bestehen aus n unabhängigen "Leitungen", von denen jede den Wert 0 oder 1 annehmen kann.
  2. Die Taktleitung ist nur ein Bit breit, kann also (wenn wir auf dem Feld der booleschen Logik bleiben) nur zwei Werte annehmen. Wider Erwarten gibt es damit vier signifikante Zustände des Taktsignales, sofern man die Zeit mit einbezieht:
  1. Einer dieser Zustände wird als "aktiv", die anderen als "inaktiv" definiert. Welcher davon für "aktiv" steht, ist prinzipiell egal, wird aber natürlich bei der Herstellung des Registers festgelegt und muß bei seiner Benutzung bekannt sein. Komponenten, die auf einen bestimmten Wert des Taktsignals warten, werden als (takt)pegelgesteuert bezeichnet, diejenigen, die auf den Wechsel des Wertes reagieren als (takt)flankengesteuert. Ein pegelgesteuertes Register kann mit einem high-aktiven Taktsignal verbunden sein (1 gilt als "aktiv"), oder mit einem low-aktiven, ein flankengesteuertes Register wartet auf die Vorderflanke (Wechsel von 0 nach 1) oder die Rückflanke. Am gebräuchlichsten sind flankengesteuerte Register, weil sie stets nur für ein kurzes Zeitintervall "scharf" sind.
  2. Entsprechend wird "aktiv" für die Reset- und andere Leitungen definiert.
  3. Auch wenn die Dateneingänge mehrerer Register verbunden sein sollen, wählt man üblicherweise nicht über die Taktleitungen aus, welche(s) Register ein neues Binärwort übernehmen soll(en). Aus Gründen des Zeitverhaltens (timing) der Signale (Takt, Bits der Binärwörter) und Komponenten (siehe die nächsten beiden Punkte) ist es klug, die Taktleitungen mit so wenig Logik wie möglich zu versehen. Normalerweise wird der Takt-Eingang für alle Register gleichzeitig in regelmäßigen Abständen aktiv (daher sein Name); welches Register seinen Wert behält, und welches einen neuen aufnimmt, wird dann über eine zusätzliche write enable-Leitung geregelt.
  4. Korrekt muß es heißen: Sobald die Taktleitung aktiviert wurde, beginnt das Register damit, den neuen Wert zu übernehmen. Gleichgültig nämlich, ob der Wert des im Register abgelegten Binärwortes in der "realen Welt" als elektrische Spannungen, Wasserstand in einem Behälter oder Anzahl Steinchen in einem Pappkarton repräsentiert wird, kann er sich nicht unendlich schnell ändern. Jede Komponente eines Rechners will im Rahmen eines für sie typischen timings angesprochen sein, damit sie wie vorgesehen funktioniert. Bei einem Register heißt das: Der Wert des Dateneinganges muß unverändert bleiben:
  1. Korrekt muß es heißen: Der neue Wert des Registers ist nach einer typischen Verzögerungszeit (propagation delay) am Datenausgang zu sehen. Eine entsprechende Zeit vergeht auch, bevor nach einem reset des Registers der Standardwert am Datenausgang erscheint.


Nach soviel Theorie folgt auf der nächsten Seite die Praxis - mit einem Java-Applet kann ein Beispielregister bei der Arbeit beobachtet und gesteuert werden.

Bei Aufruf der HTML-Seite wird das Applet automatisch gestartet, auch wenn das graue Rechteck, in das es zeichnet, noch nicht zu sehen ist. Bitte haben Sie bei langsamen Internet-Verbindungen etwas Geduld! Sobald das Applet betriebsbereit ist erscheint ein Fenster (das Bild zeigt das typische Aussehen unter MS Windows):

[Steuerfenster Register]Es ist sinnvoll, spätestens jetzt auf der Seite nach unten zu scrollen, bis das Applet sichtbar wird. Experimentieren Sie nun einfach mit den verschiedenen Knöpfen und Einstellungen im Fenster "Register steuern", beachten Sie aber die Tips und Hinweise auf der nächsten Seite.


[vorheriger Abschnitt][nächster Abschnitt][Inhalt] Carsten Kelling 1996 ([EMail senden]); letzte Änderung: 17. September 1997