Registermaschinen einfach erklärt (Konfigurationen, Befehlsarten & Registerarten) Politik & Co https://www.youtube.com/watch?v=3K81izqXNog Transkript (automatisch erstellt) 0:01 hallo und herzlich willkommen zu diesem neuen Video auf improve WiFi heute mit dem Thema registermaschinen und zunächst erst einmal mit der Definition von 0:09 registermaschinen ähnlich wie Automaten modellieren auch registermaschinen die Funktionsweise und Möglichkeiten eines Computers nur dass eine Registermaschine 0:18 deutlich mehr Möglichkeiten bietet und näher an der realen Hardware eines Computers bestehend aus Prozessor und Speicher ist registermaschinen werden 0:27 hauptsächlich dazu verwendet die verarbe von Algorithmen zu modellieren oder Algorithmen sind Befehlsketten welche in Abhängigkeit zu eingabeparametern 0:39 versuchen Probleme zu lösen und diese Probleme sind mathematisch formuliert kommen nun zum Aufbau und den Bestandteilen einer Registermaschine 0:49 eine Registermaschine basiert auf einem Register und einem mehreren Registern besser gesagt und ein Programm wobei das Register ein 1:00 Befehlsregister hat ein arbeitsregister und ein speicherregister an welchen Zahlen eingeschrieben und gespeichert werden können und das Programm besteht 1:10 nun mal aus den verschiedenen Befehlen ja Register kann man in drei Arten unterteilen dem Befehlsregister wie gesagt dem arbeitsregister und dem 1:19 speicherregister wie der Name schon verlauten lässt zählt der Befehlsregister die Anzahl der Befehle oder den aktuellen Befehl der ausgeführt 1:27 wird besser gesagt zu später mehr im arbeitsregister werden Zwischenschritte einer Rechnung bzw das Ergebnis der aktuellen Rechnung gespeichert und im 1:39 speicherregister werden Startwerte Zwischenergebnisse und Endergebnisse gespeichert dabei sind unendlich viele speicherregister 1:49 möglich kommen nun zur Funktionsweise von registermaschinen registermaschinen können drei verschiedene Kategorien von Befehlen entgegennehmen die erste Befehl 1:59 art umfasst Eingabe und ausgabebefehle konkret gemeint ist dass man eine Eingabe wie laut load Cloud oder Store für einen 2:10 Zahlenwert vornimmt und so Zahlenwerte aus dem speicherregister oder als externe Konstanten in das arbeitsregister lädt oder im 2:18 speicherregister speichert dazu auch später mehr die zweite befehlskategorie sind die arithmetischen Operatoren welche dazu dienen verschiedene 2:26 Zahlenwerte miteinander zu verknüpfen Terme zu erstellen und schlussendlich auch zu berechnen die letzte und dritte 2:34 befehlskategorie sind die Sprungbefehle ein Programm ist eine Abfolge von Befehlen und mittels implementierter Sprungbefehl im Programm 2:43 kann die Registermaschine im Programm abhängig von den Eingaben und Konfiguration hin und her springen um so unnötige Befehle zu überspringen oder so 2:54 schleifen mehrfachausführung zu ermöglichen später mehr dazu zunächst blicken wir darauf wofür Befehle überhaupt ja da sind im Kontext von 3:05 registermaschinen Befehle egal welche der eben genannten Arten führen dazu dass eine Ausgangskonfiguration durch ein Befehl 3:13 und dessen Ausführung in eine neue Konfiguration wechseln ähnlich wie die übergangsfunktion bei deterministischen endlichen Automaten bei gegebenen 3:22 Zustand und Eingabe den neuen Zustand deterministisch determiniert das heißt nur eine Möglichkeit für einen neuen Zustand zulässt so sind auch die Befehle 3:31 einer Registermaschine deterministisch bei gegebenen Zahlenwert und Stelle im Programm das heißt bei gegebener Konfiguration und ein Befehl gibt dieser 3:41 Befehl eben deterministisch vor wie die Konfiguration sich durch den Befehl im Verbund mit dem adressierten Zahlenwert verändert um dies besser nachvollziehen 3:51 zu können blicken wir nun einmal auf die Bestandteile einer Konfiguration eine Konfiguration ist eine Darstellungsweise für die äh drei verschiedenen Arten von 4:01 Registern und den darin gespeicherten Zahlenwerten spricht dem befehlzellerlerregister dem arbeitsregister auch Akkumulator genannt 4:09 und dem speicherregister wovon es ja theoretisch unendlich viele geben könnte in der Regel grenzt man das natürlich ein wenn man die Registermaschine 4:19 definiert allgemein schreiben wir für den Wert im Befehlsregister klein B für den Wert im arbeitsregister C0 und für die theoretisch unendlich vielen 4:29 Speicher Register C1 bis CN wobei n logischerweise eine natürliche Zahl sein muss wir füllen nun die allgemeine Bezeichnungen mit Zahlenwerten das heißt 4:41 im Befehlsregister schreiben wir für B8 was im Kontext bedeutet dass bereits sieben Befehle des Programms ausgeführt worden sind in sequentieller Abfolge und 4:51 nun der achte Befehl ausgeführt wird im arbeitsregister schreiben wir für C02 was bedeutet dass Operation dem Wert 2 durchgeführt werden sofern der Wert 2 im 5:04 Akkumulator nicht überschrieben wird im speicherregister haben wir die Anzahl aller speicherregister auf C1 und C2 also 5:13 insgesamt zwei speicherregister begrenzt und C1 bekommt den Wert 2 zugewesen und C2 bekommt den Wert 6 zugewiesen nun müssen wir lediglich die ganzen Werte 5:23 von links nach rechts das heißt von Befehlsregister nach arbeitsregister wie gesagt auch Akku ulator genannt bis hin zu den verschiedenen speicherregistern 5:33 in Klammern der Reihe nach aufschreiben und erhalten so den formalen Ausdruck einer Konfiguration und diese lautet in diesem Beispiel 5:44 8226 ja kommen jetzt zur Daten ein und Ausgabe und den Befehlen das haben wir eben schon mal leicht angesprochen nun nehmen wir die K Konfiguration 5:56 8226 und schauen wie die Befehle der Kategorie Dateneingabe und Ausgabe sich jeweils auf die Konfigurationen auf die diese 6:05 Konfiguration die wir hier haben auswirken dabei schreiben wir wieder Befehlsregister arbeitsregister respektive Akkumulator und ein 6:11 speicherregister od in den Register wieder die Werte der Konfiguration 8226 zu und nun geben wir mit unserer Tastatur eine Eingabe bzw ein Befehl ein 6:24 und dieser wird in einem Programm in der Regel natürlich automatisch eingegeben und ausgeführt nur die Eingabe von Werten würde noch die manuelle Hingabe 6:33 des Nutzers erfordern wir starten mit dem Befehl load 2 bei loadbefehlen werden Werte aus den speicherregistern in das arbeitsregister geladen und die 6:44 zwei hinter dem load adressiert das zweite speicherregister also C2 sass dessen Wert 6 nun in das arbeitsregister geschrieben besser gesagt überschrieben 6:56 wird denn im arbeitsregister ist bereits der Wert Z enthalten und da unser arbeitsregister unser Akkumulator nur ein Wert speichern kann wird die zwei 7:06 überschrieben und der Akkumulator C0 hat nur den Wert 6 anstatt 2 dieser Befehl verändert logischerweise auch unsere Konfiguration da die 7:17 Konfiguration ja eine mathematische Formalisierung der registerzustände und Rechnungen beinhaltet wir ändern das arbeitsregister C0 also ändert sich auch 7:30 der Wert von C0 in der Konfiguration dit load 2 einen Befehl ausgeführt wurde müssen wir den befehlzeller um ein inkrementieren wir haben den insgesamt 7:41 achten Befehl ausgeführt so dass wir uns jetzt im neen Befehl befinden bzw jetzt kommt der neute Befehl auf uns zu unsere neue Konfiguration lautet also 7:55 9626 kommen wir nun zum nächsten eingabefehl und zwar Cloud i und in unserem Fall Cloud 5 das C vor dem load steht für die 8:05 konstante was bedeutet dass ein Wert nicht aus dem speicherregister verwendet wird sondern manuell eingegeben wird der Wert ist also bis dato nicht gespeichert 8:16 und mit Cloud i wird also ein beliebiger konstanter Wert ins arbeitsregister geschrieben in unserem Fall ist es die 5 welche dann den bisherigen 8:26 Akkumulatorwert 6 überschreibt und unsere neue Konfiguration lautet also 10526 kommen nun zum letzten Daten Eingabe und ausgabebefehl nämlich Store 8:38 i bzw in diesem Beispiel Store 2 Store kommt von Speichern mit Store 2 ist jetzt aber nicht gemeint dass man die Zahl 2 ins speicherregister schreiben 8:48 soll sondern dass der Wert des arbeitsregisters in unserem Fall 5 in das zweite speicherregister geschrieben wird C2 wird also 9:00 durch den Wert im Akkumulator ersetzt bzw der Wert im Akkumulator der Wert 5 überschreibt den Wert im zweiten speicherregister C2 und nun haben wir 9:10 nicht mehr den Wert 6 dort stehen sondern den Wert 5 hier habe ich noch mal die Bedeutungen der Befehle kurz und bündig definiert die verschiedenen 9:19 Folien Beispiele etc pp werde ich vermutlich auch noch auf unserer Webseite www.improvewissen.de hochladen Link dazu 9:26 in der Beschreibung load i adressiert das Arbeit Register und befiehlt diesen den Wert aus einem speicherregister i abzulesen und zu speichern Cloud i macht 9:35 das gleiche nur das halt in diesem Fall i kein Wert aus dem speicherregister ist sondern eine konstante Store e adressiert das speicherregister i und 9:45 befiehlt diesem den aktuellen Zahlenwert aus dem Akkumulator auszulesen und zu speichern registermaschinen modellieren Computer Computer heißen Computer weil 9:55 sie rechnen können das heißt Sie können mathematische Operationen ausführen unsere Registermaschine als Computermodell muss also ebenfalls die 10:03 vier arithmetischen Operationen Addition Subtraktion Multiplikation und Division ausführen können lila markiert siehst du all diese abgekürzten arithmetischen 10:12 Operatoren mit einem großen C zu Beginn und dieses große C kommt uns schon bekannt vor aus dem Befehl Cloud und steht für konstante wie bereits 10:23 erleutert ist eine konstante ein Zahlenwert welcher nicht im speicherregister enthalten ist oder zusätz 10:29 benötigt wird ein Befehl mit einer Konstante haben wir bereits kennengelernt wie gesagt den Cloud Befehl und zur Verdeutlichung nehmen wir 10:36 mal die konstante 5 wir schreiben also Cloud 5 und nun wird 5 ins arbeitsregister geschrieben nun vergleichen wir dies mit dem Befehl load 10:46 5 dort wird nicht der Zahlenwert 5 ins arbeitsregister geschrieben sondern der im fünften speicherregister vorhandene Wert welcher eine beliebige natürliche 10:55 Zahl sein kann je nachdem wie man die Registermaschine definiert hat dieser Unterschied ist sehr wichtig denn genauso wie zu dem Befehl load der 11:04 Befehl Cloud für konstanten vorhanden ist gibt es zu jedem arithmetischen Operator also zu jedem add Sub multiply divide eine C Version also ein Befehl 11:14 welcher nur für konstanten arithmetische Operationen zulässt [Musik] 11:31 ja kommen wir nun zur letzten befehlskategorie einer der wichtigsten und vielleicht auch komplexesten den sprungbefehlen Sprungbefehle 11:39 unterscheiden sich fundamental von all anderen befehlsarten die wir bisher kennengelernt haben weil sie die im Akkumulator oder speicherregister 11:49 vorhandenen Werte eben nicht manipulieren nicht verändern jedoch den Befehlszähler verändern und so dafür sorgen dass im Programm zu einem anderen 11:58 Befehl gesprungen wird der nicht in der normalen Reihenfolge liegt und somit wird die sequentielle Abarbeitung des Programms durch diese Sprungbefehle 12:07 durchbrochen wir schauen uns ein Beispiel an Sprungbefehle haben immer die Form go to zu deutsch gear zu und den Parameter i welcher hier nicht für 12:16 ein speicherregister steht sondern für die Reihenfolge eines Befehls in der Gesamtheit der befehlsequenz eines Programmes i ist also Äquivalent zur 12:28 Programmstelle Sprungbefehle denn hauptsächlich zur Performance Optimierung weil bei bestimmten Zahlenwerten einige Befehle keinen Sinn 12:36 machen und aus diesem Grund haben go to Befehle eine Bedingung implementiert diese Bedingung ist in der Form if dann kommt ein Zahlenwert aus dem 12:47 speicherregister oder aber eine konstante und dann kommt ein ja eine Relation so also ist gleich kleiner gleich kleiner größer größer gleich dem 12:58 zahlen t x und dieser Zahlenwert X ist in der Regel dann die der Zahlenwert aus dem arbeitsregister aus dem Akkumulator und 13:10 wenn dann die Bedingung erfüllt wird dann kommt die Exekution der Goto Anweisung daher z.B überspringe XY Befehle beende das Programm und kehre in 13:22 ein vorherigen Programmschritt zurück wären so verschiedene Sachen die dann passieren könnten in unserem Beispielprogramm haben wir im vierten 13:30 Befehl ein Goto Befehl welcher sagt dass wenn im arbeitsregister bzw Akkumulator eine Z steht der fünfte Befehl übersprungen werden soll und direkt mit 13:40 dem Schritt 6 weitergemacht werden soll im dritten Befehl wurde der Akkumulator also C0 durch den Befehl Cloud 2 mit der konstante 2 überschrieben C0 ist also 2 13:53 und erfüllt so mit die Bedingung des Goto Befehls du sass nun nicht mit dem fünften Befehl weitergemacht wird sondern mit dem sechsten 14:03 Befehl eingabusgabenfanten ein weiterfeh das ist der endbefehl der Befehl end beendet 14:15 ein Programm und lässt dabei die aktuelle Konfiguration unverändert das heißt durch den endbefehl bzw nach dessen Ausführung kommt es nicht mehr zu 14:24 einer inkrementierung oder Veränderung des befehlzählers und auch alle anderen Register bleiben unberührt in dem Sinne vielen Dank fürs 14:36 zuschauen im nächsten Video geht's dann konkret um ein Beispiel weil es dann mit dem befehlzellerler doch teilweise Irritation 14:44 gibt und in dem Sinne wünsche ich dir einen schönen Tag macht's gut bleibt gesund und 14:55 [Musik] ciao ه [Musik]