Computer einfach erklärt: Von-Neumann-Rechner (mit Anmerkungen) Michael Holzheu https://www.youtube.com/watch?v=Vant20z6YW8 Transkript (automatisch erstellt) 0:02 [Musik] Computer einfach erklärt 0:13 Von-Neumann-Rechner (mit Anmerkungen) Ein Rechner zu Demonstrationszwecken 0:25 der von der TU Dresden gebaut wurde und da kann man ganz schön sehen, wie ein Computer fuktioniert. 0:32 Und zwar haben hier links Speicher. Hier oben haben wir konstanten Speicher, da kann man über 0:41 solche Schalter einfach hier ein Bit an oder aus machen. Und unten haben wir tatsächlich Hauptspeicher, das ist Trommelspeicher 0:50 der reade-write ist, also im Gegensatz zu dem konstanten Speicher der "Read Only" ist und da werden hier in diesen 0:58 Trommeln die Bits gespeichert. Und man sieht hier diese Stifte, die über Elektromagneten 1:06 rein und raus gedrückt werden und je nachdem ob sie drin sind, oder draußen 1:10 ist das Bit gesetzt, oder eben nicht Ja und dann haben wir noch für Input/Output haben wir noch ein Eingabe Register 1:17 also zum Beispiel wenn man eine Taschenrechner Anwendung hat kann man über diese in Input Felder die Daten eingeben 1:24 und ein spezielles Output Feld wäre dann dafür da dass das Ergebnis ausgegeben wird. 1:30 Die Maschinenbefehle sind die üblichen: Addition, Subtraktion Multiplikation Division, Sprünge und bedingter Sprung. 1:37 Und der Opcode ist in drei Bit kodiert und die meisten Befehle haben eine Adresse, das heisst Addition geht auf den 1:45 Akkumulator und addiert eine bestimmte Adresse auf den Akkumulator Und hier im Mittelteil ist eigentlich so ein 1:52 bisschen angezeigt, wie der Rechner funktioniert also fangen wir mal oben an: 1:56 Für den Programmfluss ist der Programm Zähler maßgeblich und zwar zeigt der an, die Adresse, wo sich das Programm gerade befindet. 2:04 In unserem einfachen Beispiel haben wir nur eine Addition, die hier im ersten Wort kodiert ist 2:13 und deswegen ist der Programmzähler meistens auch Null. Also sprich, die erste Adresse. 2:19 Der zweite Befehl ist der Sprung auf Null zurück also bei Null ist der Addition und danach nach der Addition kommt ein Sprung 2:27 auf der Adresse Eins zurück auf Null. Also wie genau war das nochmal? 2:35 Unser von Neumann Rechner versteht insgesamt sieben Befehle die jeweils in neun Bit kodiert sind. 2:41 Dabei werden drei Bits für den Operationsteil und 6 Bit für den Adressteil verwendet. 2:47 Unterstützte Befehle sind z.B. die Addition und der unbedingte Sprung. Beide Befehle verfügen über den 6-Bit Adressteil. 2:57 Die Addition hat Opcode binär 0 0 1 und der Sprung besitzt den Code 1 1 0. 3:04 Unser einfaches Programm beginnt am Anfang des Speichers wo bei Adresse Null eine Addition mit 0 0 1 kodiert ist 3:13 die auf den aktuellen Akkumulatorwert den Inhalt der Adresse 0 0 1 1 1 1 0 3:21 also dezimal 30 addiert. Im read-only Speicher an Adresse 30 steht dann der Wert 3:28 dezimal 21 Logisch gesehen, lautet also unsere erste Anweisung 3:35 Addiere 21 zum bestehenden Akkumulator und schreibe das Ergebnis wieder in den Akkumulator zurück. 3:43 Der zweite Befehl unseres Beispielprogramms steht im Wort Eins und ist ein unbedingter Sprung mit Opcode 110 3:51 welcher als Ziel die Adresse Null hat. Also wieder logisch gesehen: 3:56 Springe zurück auf die Addition Unser Gesamtprogramm besteht also aus einer Schleife 4:02 die 21 auf den Akkumulator addiert und dies durch den Sprung auf Null bis in alle Ewigkeit wiederholt. 4:14 Genau! Also was passiert dann? Dann wird hier, nachdem man den Befehlszähler ausgewertet hat 4:20 wird Eins draufgezählt, ein Wort, dass man dem nächsten Befehl hat. Dann schaut man sich den Inhalt des Speichers an 4:30 wo der Befehlszähler vorher drauf gezeigt hat und da hat man eben den Operationsteil 4:36 das sind die drei Bit Opcode, wo kodiert ist, ob man addiert, subtrahiert, multipliziert oder so weiter 4:42 und man hat den Adressteil. Die Adresse 30 haben wir hier oben kodiert sieht man ganz deutlich, ist eine Adresse 30 kodiert 4:51 Und wenn man den Adressteil auflöst werden die Daten geholt und werden in das Operanden Register reingeschrieben 4:59 Und gleichzeitig kommt aus dem Akkumulator für den ersten Operand der Wert. Also wir haben vier Geschwindigkeiten: 1, 2, 3, 4 5:06 und wir laufen gerade mit dem langsamsten Takt. Schrittbetrieb - und wo stehen wir jetzt gerade? 5:17 Wir stehen am Befehlsanfang, also wir stehen bei der Addition Und jetzt haben wir im Befehlsregister aaahh, wir haben die die Addition 5:27 Und die Addresse ... 30 war das, also nochmal für die Anfänger: 5:33 Zwei plus vier sind sechs plus acht sind 14 plus 16 sind 30 Dann geht es weiter 5:43 Wir sehen, die Adresse 30 wird ausgelesen dann wird der Inhalt von Adresse 30 eingelesen und das ist 21 5:52 Das hier sind eins plus vier sind fünf Acht, 21! Genau da sind die beiden Operanden ins Addierwerk geladen 6:05 Dann geht es in den Akkumulator, da wird das Ergebnis schon rein geschrieben und dann geht es wieder zurück vom Akkumulator in das erste Operandenregister 6:13 Und dann ist er wieder oben beim Befehlszähler und wir gehen dann wieder zum Sprung auf Null. 6:20 Perfekt! Wirklich perfekt? 6:24 Na ja, zur Sicherheit fassen wir im Folgenden das Wichtigste noch mal kurz zusammen Ein von Neumann Rechner ist in insgesamt vier grundlegende Komponenten aufgeteilt 6:35 Die erste ist das Speicherwerk welches zum Ablegen und wieder Auffinden von Daten dient. 6:43 Das Ein- und Ausgabewerk stellt die Verbindung nach draußen dar. Darüber werden üblicherweise Geräte, wie zum Beispiel 6:49 Festplatten, Drucker oder Terminals angeschlossen. Das Steuerwerk dient zur Kontrolle des Programmablaufs. 6:58 Und schließlich liefert das Rechenwerk die Möglichkeit arithmetische Operationen durchzuführen 7:04 Zum Beispiel die Addition, Subtraktion, Multiplikation oder Division. Unser Schulungsrechner bietet darüber hinaus noch eine Tafel für den Zeitablauf 7:15 um den Studenten die jeweils aktiven Verarbeitungsschritte anzuzeigen Steuerwerk, Rechenwerk und Ein- und Ausgabewerk 7:24 sind über einen Bus mit dem Speicherwerk verbunden. dieses ist in 35 Wörter mit jeweils zehn Bits unterteilt. 7:33 Jedes Wort bekommt eine eindeutige Zahl zugewiesen welche dann als Adresse bezeichnet wird. 7:40 Wie bereits erwähnt, ist der obere Teil des Speichers in unserem Beispiel so eingestellt 7:45 dass im ersten Wort die Addition mit Adresse 30 und im zweiten Wort der Sprung zurück auf Null kodiert ist. 7:53 Auf der Adresse 30 ist schließlich die Zahl 21 gespeichert welche später von dem Programm für die Addition verwendet werden soll. 8:02 Das Steuerwerk besitzt einen Befehlszähler der auf die nächste auszuführende Instruktion zeigt. 8:08 Außerdem verfügt es über ein Befehlsregister das über den Bus mit Instruktionen aus dem Hauptspeicher befüllt werden kann. 8:18 Das Rechenwerk beherbergt den Akkumulator einen internen Zwischenspeicher 8:23 welcher das Ergebnis der letzten Berechnung festhält. Mit dem Addierwerk wird dann schließlich gerechnet. 8:30 Als Eingabe für die arithmetischen Operationen dienen zwei Register, wobei Operand Eins vom Akkumulator geladen 8:38 und der zweite Operand über den Hauptspeicher befüllt wird. Und zwar mit dem Inhalt des Wortes, auf das die Adresse der Addition zeigt. 8:49 Nachdem wir jetzt die Komponenten des Systems kennen wird es Zeit, den Rechner zu starten! 8:56 Beim Hochfahren bekommt erstmal das Steuerwerk Kontrolle und beginnt mit Befehlszähler Null. 9:02 Das bewirkt, dass aus dem Hauptspeicher die erste Anweisung also in unserem Fall die Addition, über den Bus in das Befehlsregister geladen wird. 9:13 Bei der Dekodierung des Befehls wird anschließend festgestellt 9:16 dass es sich um die Addition mit Adressteil 30 handelt. Weil hier kein Sprung vorliegt 9:22 wird der Befehlszähler um ein Wort weitergezählt damit später die nächste Instruktion geladen werden kann. 9:29 Dann wird das Rechenwerk angesprochen und das erste Operandenregister aus dem Akkumulator geladen. 9:39 Anschließend wird aus dem Speicherwerk von Adresse 30 der Wert 21 ins zweite Operandenregister übertragen. 9:49 Schließlich werden beide Operanden ins Addierwerk überführt wo das Ergebnis berechnet und anschließend zurück in den Akkumulator übertragen wird. 10:00 Damit hat das Rechenwerk seine Aufgabe erfüllt und übergibt die Kontrolle zurück an das Steuerwerk. 10:06 Dort wir die nächste Instruktion von Adresse Eins geholt und dann wieder ins Befehlsregister geladen. 10:14 Beim Dekodieren stellt der Rechner fest dass es sich diesmal um einen Sprung 10:19 auf Adresse Null handelt. Dazu setzt das Steuerwerk einfach den Befehlzähler auf das gewünschte Ziel 10:26 nämlich den Anfang des Speichers. Dort steht natürlich wieder unsere Addition 10:32 welche dann die zweite Runde unseres lustigen Zählspiels einläutet. So nochmal zu der Technik 10:40 also hier haben mir den Taktgeber mit einer Nockenwelle dann in der Mitte haben wir das Rechenwerk 10:46 mit Relais würde ich sagen, das sind Relais, oder ... ja. Und dann hier haben wir diese mechanische Trommel 10:56 für den Speicher, für den read-write Speicher Und hier oben die Schalter für den read-only Speicher 11:04 und die Auswahl für die Adressierung dass man den richtigen Schalter eben addressiert 11:13 den man gerade braucht. Oder die richtigen Schalter besser gesagt. 11:17 Mehrere Schalter ergeben ja dann ein Wort. [Musik]