Ein Computer mit Relais
Du interessierst Dich für Informatik und hast Dich schon immer gefragt, wie so ein Computer funktioniert? Im Jahr 2020 wurde deshalb ein anschaulicher Relaiscomputer konstruiert und ein Versuchsmodell gebaut.
Der Relaiscomputer lässt Dich das Rechnen hautnah miterleben und Du wirst überrascht sein, wie einfach doch alles ist.
Inhalt
Der Relaiscomputer kurz vorgestellt
Im Relaiscomputer blinken sehr viele Leuchtdioden 1 und Segmentanzeigen 2 um Dir einen visuellen Eindruck von den Schaltvorgängen in einem Rechner zu vermitteln. Über Taster, Drahtbrücken und Stiftleisten 3 kannst Du alle Funktionen einzeln ausprobieren und natürlich den Computer mit 16 Befehlen in Maschinensprache 4 programmieren.
Das Funktionsprinzip des Relaisrechners basiert auf der von Neuman Architektur 5 und er kann Daten bis zu 8 bit Breite verarbeiten. Mit seiner 1 Hz Taktrate 6 ist er nicht nur sehr langsam, sondern verfügt auch nur über 16 Byte Schreib Lese Speicher (RAM) 7 oder alternativ über einen ebenso großen Nur Lese Speicher (ROM) 8. Du wirst aber erstaunt sein, welche Aufgabenstellungen man mit nur 16 Byte Programmcode lösen kann.
Keine Scheu vorm Dualsystem 9. Der Relaiscomputer kann binäre Zahlen ebenso Hexadezimal 10 wie auch Dezimal 11 anzeigen und Du kannst sogar 3stellige Dezimalzahlen eingeben.
Dabei kommt der Relaiscomputer völlig ohne Chips und Transistoren aus. Das eigentliche Rechnen, die Logikoperationen, das Speichern der Daten und des Programmcodes erledigen ungefähr 700 Relais 12 und ca. 1500 Dioden 13.
Alle Baugruppen zusammen, mit mehr als 3.000 elektronischen Einzelbauteilen, sind auf 70 eigens hierfür angefertigten Leiterplatten 14 im Europa-Karten Format mit gut 400 m Kabel verschaltet und auf zwei Tafeln 86 cm x 78 cm (B x H) montiert. Die Spannungsversorgung erfolgt über ein kleines 12V Netzteil. Dabei hat der Relaiscomputer nur eine Leistungsaufnahme von max. 60 Watt.
Hier kannst Du den Relaiscomputer in Aktion sehen. Sieh Dir das Video Relais Computer rechnet die Fibonacci Reihe auf Youtube @relaiscomputer an.
Hardware
- 1500 Dioden
- 700 Relais
- 450 LED
- 92 Taster
- 65 LED Anzeigen
- 24 Module auf 70 PCB 10x16
- 12V, max. 60W Leistungsaufnahme
Eigenschaften
- 8 bit Bus
- 16 Befehle
- 1 Hz Taktfrequenz
- 32 bit Steuerbus
- 16 Byte RAM & ROM
- Dezimal I/O
- frei programmierbar
allgemeines Funktionsprinzip
Die wesentlichen funktionalen Bereiche im diesem Computer lassen sich wie folgt einteilen:
- Rechenwerk mit ALU und Registern
- Steuerwerk und Arbeitstakt
- Speicher (RAM und ROM)
- Ein- und Ausgabe
Während das Rechenwerk 15 für die Addition und eine Hand voll logischer Operationen zuständig ist, sorgt das Steuerwerk 16 für den automatisierten Programmablauf im System. Der Speicher enthält sowohl Daten als auch Programmcode als eine Folge von Befehlen gleichermaßen. Die Ein- und Ausgabe wiederum ist hier die Schnittstelle zum Benutzer, also uns Menschen.
Sämtliche Funktionsgruppen im Rechner sind über zwei Bussysteme 17 miteinander verbunden.
- Der Steuerbus lenkt die einzelnen Steuersignale aus dem Steuerwerk auf die zuständige elektrische Baugruppe. Insgesamt gibt es 32 unterschiedliche Steuersignale.
- Der Datenbus ist 8 bit breit und für den Datenaustausch zwischen den einzelnen Modulen zuständig.
Blockschaltbild
Abb.: Schematischer Aufbau des Relaiscomputers, von Neumann Architektur
Rechenwerk und Speicher
Im Kern besteht das Rechenwerk aus der sogenannten Arithmetik Logical Unit - kurz ALU 18 und den direkt verbundenen Registern 19. Das Addierwerk 20 ist das Herzstück eines jeden Rechners, da alle vier Grundrechenarten auf die Addition zurückführbar sind. Die Subtraktion beispielsweise wird mit dem Zweierkomplement 21 des Subtrahenden als Addition ausgeführt. Als logische, bitweise Operationen 22 unterstützt das Rechenwerk die Operatoren NOT (nicht), AND (und) und OR (oder). Zwei getrennte Datenspeicher 23 RAM und ROM zu je 16 Byte können Maschinenbefehle und Daten aufnehmen. Das Programm kann entweder nur aus dem 16 byte ROM oder aus dem gleichgroßen RAM ausgeführt werden.
Steuerwerk
Das Steuerwerk wird vom Takt 24 zum Leben erweckt. Mit jedem Impuls wird ein Asynchronzähler 25 um einen Schritt weiter geschaltet. Der hieran angeschlossene Dekoder 26 führt für jeden Schritt Mikrobefehle 27 aus, welche zusammen den Befehlszyklus 28 ergeben. In diesem Relaisrechner gibt es eine Besonderheit, dass die Länge des Befehlszyklus variabel sein kann.
Die auszuführenden Befehle sind im Speicher abgelegt. Das Steuerwerk sorgt auch dafür die Speicherstellen anzusprechen, im Fachjargon "zu adressieren".
I/O - Dezimalein- und Ausgabe
Zu jeder Datenverarbeitungseinheit gehört auch die Ein- und Ausgabe von Daten. Um die die Anschaulichkeit zu erhöhen werden im Relaiscomputer Ergebnisdaten als BCD-Code 29 aufbereitet und dezimal 3-stellig dargestellt. Über eine Tastatur können ebenso 3stellige Dezimalzahlen eingegeben werden.
Die Umwandlung vom Binärformat in den BCD-Code ist recht aufwändig und mit vielen Berechnungen verbunden, weshalb hier eine reine Hardwarelösung mittels Double Dabble 30 Algorithmus zum Einsatz kommt.
Nicht weniger umständlich ist auch die Umwandlung einer 3stelligen Dezimaleingabe über die Tastatur in das Binärformat. Hierfür kommt ein Kodierer 31 und ein eigens dafür entwickelter Maschinenbefehl zum Einsatz. Also eine Kombination aus Hardware 32 und Software 33.
konstruktive Herausforderungen
Eine Herausforderung war die Menge der benötigten elektronischen Bauteile und die gewünschten Eigenschaften gegeneinander abzuwägen, da hiervon sowohl der Raumbedarf, die nicht zu unterschätzende elektrische Leistungsaufnahme 34 als auch die Projektkosten abhängen. Schließlich sollte der Rechner nur mit Relais und diskreten Bauteilen 35 aufgebaut sein und dabei mit einer handelsüblichen Stromversorgung betrieben werden können.
Welche Zahlen sollen darstellbar sein?
Die größte zu speichernde Zahl bestimmt direkt die Anzahl der bits, also die Breite eines Datenwortes, welche die Computerarchitektur benötigt.
Um Zahlen und sonstige Daten in einem Rechner abzubilden bzw. zu verarbeiten wird eine bestimmte Anzahl bits, auch Wortbreite oder Datenwort 36 genannt, für den Speicher, die Register, die ALU, den Datenbus und für die Ein- und Ausgabe vorausgesetzt.
Am Beispiel positiver ganzer Zahlen:
- mit einem (1) bit kann man die Zahlen 0 und 1 abbilden
- mit zwei (2) bit kann man die Zahlen 0, 1, 2 und 3 abbilden
- bei drei (3) bit kann man die Zahlen von 0 bis 7 abbilden
- jedes weitere bit verdoppelt Größe der größten abbildbaren Zahl: 15, 31, 63, 127, 255, 511, 1023, usw...
Speichergröße und Maschinenbefehle
Die Anzahl möglicher Maschinenbefehle und des adressierbaren Speichers ist als Teilmenge der größten zu speichernden Zahl im System bestimmt.
Durch die von Neuman Rechnerarchitektur teilen sich Daten und Befehle den gleichen Speicher. Üblicherweise besteht ein Maschinenbefehl aus dem sogenannten Op-Code (Operation Code) und einem optionalen Parameter, bspw. einer Speicheradresse.
Somit könnte man die zur Verfügung stehende Wortbreite für Maschinenbefehl und Speicheradresse aufteilen. Die Aufteilung muss nicht zwingend zu gleichen Teilen erfolgen. Bereits mit einem Befehlssatz von "nur" 16 Maschinenbefehlen, sind eine Vielzahl von Berechnungen möglich.
Folgende Tabelle zeigt den Zusammenhang zwischen
- der Breite des Datenwortes (bit)
- der größten zu speichernde Zahl (Zahl)
- Anzahl der Maschinenbefehle (op)
- der technisch möglichen Größe des Speichers (RAM)
- Anzahl der Relais je ein Datenwort (Spalte 1x)
- Anzahl der erforderlichen Relais insgesamt
- Energiebedarf dieser Bauteile in (Watt)
| bit | Zahl | op | RAM | 1x | Relais | Watt |
|---|---|---|---|---|---|---|
| 4 | 15 | 4 | 4 | 6 | 4x6=24 | 3 |
| 6 | 63 | 8 | 8 | 9 | 8x9=72 | 10 |
| 8 | 255 | 16 | 16 | 12 | 16x12=192 | 28 |
| 10 | 1.023 | 16 | 64 | 15 | 64x15=960 | 138 |
| 12 | 4.095 | 16 | 256 | 18 | 256x18=4.608 | 664 |
| 14 | 16.383 | 16 | 1k | 21 | 1kx21=21.504 | 3k |
| 16 | 65.535 | 16 | 4k | 24 | 4kx24=98.304 | 14k |
Für einen Arbeitsspeicher mit einem 4 bit Adressbus und 8 bit Wortbreite, also 16 byte RAM werden 192 Relais benötigt (16 x 8 Relais zum Speichern und 16 x 4 Relais für den Datenbus).
Es wird deutlich, dass die Anzahl der Relais je Datenwort (Spalte 1x) und die Speichergröße (RAM) am stärksten auf die Bauteilmenge und den Energiebedarf wirken.
Wollte man auf diese Art gar 16 bit adressieren, so ergeben sich 4096 x 16bit RAM mit knapp 100.000 Relais. Die maximale Leistungsaufnahme eines solchen 4k x 16bit RAM Speichers läge mit den verwendeten Bauteilen bei sagenhaften 14.000 Watt. Dies entspricht der Leistungsaufnahme von 14 laufenden Wäschetrocknern gegenüber "nur" 28 Watt mit 192 Relais.
-
Die Leuchtdiode ist ein elektronisches Bauteil, welches hier als Signalleuchte eingesetzt wird um beispielsweise die aktiven bits auf dem Datenbus anzuzeigen. ↩
-
Die Segmentanzeige dient der Darstellung von Ziffern und Buchstaben um das Rechenergebnis anzuzeigen oder die aktive Baugruppe zu markieren. ↩
-
Die Stiftleiste ermöglicht es elektrische Verbindungen mittels Verbindungskabel oder Jumper dauerhaft herzustellen oder zu verändern um einige Funktionen im Rechner zu programmieren. ↩
-
Die Maschinensprache dieses Relaiscomputers versteht 16 Maschinenbefehle (4 bit, 0000 .. 1111), sogenannte Op-Codes, mit denen der Rechner programmiert werden kann. Zur besseren Lesbarkeit von Programmen durch den Menschen werden Op-Codes mit sprechenden Bezeichnern versehen. ↩
-
Die von Neuman Architektur (VNA) Computer Architektur aus dem Jahre 1945 ist auch noch heute Grundprinzip in den meisten modernen Computern. ↩
-
Das Taktsignal ist der Herzschlag des Computers, je höher die Taktrate ist umso mehr Schaltzyklen können in einer Zeiteinheit absolviert werden. ↩
-
Der Schreib Lese Speicher (RAM) auch als Arbeitsspeicher bekannt, wird von Programmen ausgelesen oder geschrieben. Bspw. wird ausführbarer Code von einem Datenträger in den Speicher geschrieben und von dort abgearbeitet. Wird der Computer abgeschaltet geht der Inhalt im Arbeitsspeicher verloren. ↩
-
Der Nur Lese Speicher (ROM) kann Daten und Programmcode enthalten, der nicht durch Ausschalten des Computers verloren gehen kann. ↩
-
Im Dualsystem auch Binärsystem genannt, werden Zahlen nur durch die Ziffern 0 und 1 dargestellt. ↩
-
Im Hexadezimalsystem werden Zahlen durch die Ziffern 0 .. 9 und die Buchstaben A .. F dargestellt. ↩
-
Im Dezimalsystem werden Zahlen durch die Ziffern 0 .. 9 dargestellt. ↩
-
Das Relais ist ein elektromechanisch betätigter Schalter, welcher durch anlegen einer Spannung aktiviert und zur Datenspeicherung, Logikfunktionen und Steuerung dieses Computers eingesetzt wird. Daher auch der Name Relaiscomputer. ↩
-
Die Diode ist ein elektronisches Bauteil, welches den Strom nur in eine Richtung fließen lässt. Zahlreiche Logikschaltungen lassen sich hierdurch realisieren, ohne ein Relais verwenden zu müssen. ↩
-
Die Leiterplatte dient zur Montage elektronischer Bauteile, welche durch Verlöten mit den gedruckten Leiterbahnen der Leiterplatte elektrisch verbunden werden. Neudeutsch hat sich auch der Begriff PCB eingebürgert, welcher für "printed cirquit board" steht. ↩
-
Das Rechenwerk führt führt die Maschinenbefehle eines Programmes aus. Zum Rechenwerk gehören neben der Arrithmetisch-logischen-Einheit (ALU) auch diverse Register. ↩
-
Das Steuerwerk sendet Steuersignale im Takt an die einzelnen Module des Computers und ist für den Ablauf eines Programmes zuständig. ↩
-
Das Bussystem verbindet viele Module in einem Rechner mittels einer gemeinsamen Leitung auf der sowohl Daten gesendet als auch empfangen werden können. ↩
-
Die Arithmetisch logische Einheit, kurz ALU ist in einem Computer die eigentliche Recheneinheit. Üblicherweise besteht Sie aus einem Addierwerk und Baugruppen zur logischen Verknüpfung. ↩
-
Ein Register in einem Computer ist ein Speicher auf dessen Inhalt ohne Umweg direkt zugegriffen werden kann. Üblicherwiese haben Register spezielle Aufgaben bspw. um vom Rechenwerk Rechenergebnis für die folgende Operation aufzunehmen. ↩
-
Das Addierwerk ist ein Schaltnetz und führt die Addition zweier binärer Zahlen durch. Sobald die Summanden an die Eingänge gegeben werden, erscheint das Ergebnis sogleich am Ausgang des Addierwerks. ↩
-
Durch das Zweierkomplement können negative Zahlen binär dargestellt werden. Hierbei wird das höchstwertige bit7 als Vorzeichen interprätiert. ↩
-
Unter Bitoperationen versteht man die logische Verknüpfung mindestens zweier binärer Werte, bit für bit. ↩
-
Ein Datenspeicher ist dafür zuständig im Computer Programmcode und Nutzdaten vorzuhalten und für die Bearbeitung bereitzustrellen. Im Relaiscomputer werden die Daten entweder durch Steckbrücken (Jumper) statisch oder mit Selbsthalte-Relais (dynamisch) gespeichert. ↩
-
Der Takt auch als Taktsignal bekannt sorgt ist für den automatischen Ablauf und die Geschwindigkeit der Befehlsausführung im Computer verantwortlich. ↩
-
Der Asynchronzähler ist eine Art Zählwertspeicher, welcher durch einen Steuerimpuls oder Takt binär hochzählt. Wie bei einem Speicher kann der Zählwert beliebig abgerufen werden. In der Regel werden mehrere T-Flipflop für einen Zähler hintereinander geschaltet. ↩
-
Der Dekoder wandelt Informationen von einer Darstellungsform in eine andere um. Im Relaiscomputer kommen Dekoder für Umwandlung des Binärcodes für die 7 Segment Ergebnisanzeige und im Steuerwerk bspw. für die Auswahl eines Maschinenbefehls zum Einsatz. ↩
-
Der Mikrobefehl ist die kleinste programmierbare Einheit in einem Computer um bspw. ein Register mit der einer Speicheradresse zu laden. ↩
-
Der Befehlszyklus auch Maschinenzyklus genannt ist die Folge von Mikrobefehlen zur ausführung eines Maschinenbefehls. Der Befehlszyklus setzt sich aus dem Fetch-Cycle und Execution-Cycle zusammen. Der Fetch-Cycle holt die nächste Anweisung aus dem Speicher während der Execution-Cycle die eigentliche Funktion ausführt. ↩
-
Der BCD-Code ist ein binärer Dezimal Code, der mit 4 bit Werte von 0-9 darstellen kann. Mit 8 bit kann im BCD-Code die Zahl 99 codiert werden. Im Binärcode lässt sich mit 8 bit die Zahl 255 codieren. ↩
-
Der Double Dabble Algorhythmus wird zur Umwandlung einer binären Zahl in den BCD-Code benötigt. Auch bekannt als "wenn größer 4 dann addiere 3". ↩
-
Der Kodierer wandelt wie der Dekoder Informationen von einer Darstellungsform in eine andere um. Im Relaiscomputer wird ein Kodierer für die Umwandlung einer dezimal eingegebenen Zahl in den Binärcode verwendet. ↩
-
Die Hardware sind die elektrischen Bauteile in einem Computersystem. Im Relaiscomputer sind dies im Wesentlichen Relais, Diode und Draht. ↩
-
Die Software in einem Computer ist jede Art von Programmierung, also veränderbare Informationen um mit der Hardware zusammenzuarbeiten. Im Relaiscomputer ist der Microcode beispielsweise durch Steckbrücken programmiert. ↩
-
Die Werte für die Leistungsaufnahme beziehen sich auf das verwendete 12V Relais mit ca. 960Ω Innenwiderstand und einem Betriebsstrom von ca. 12mA. ↩
-
Ein diskretes Bauelement ist ein einzelnes aktives oder passives elektronisches Bauteil in einem Gehäuse. ↩
-
Das Datenwort ist die größte mit einem Prozessschritt zu verarbeitende Zahl in einem Computersystem. ↩