Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
Registermaschinen einfach erklärt (Konfigurationen, Befehlsarten & Registerarten)
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 90 Zeilen
- 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
- registermaschinen ähnlich wie Automaten modellieren auch registermaschinen die Funktionsweise und Möglichkeiten eines Computers nur dass eine Registermaschine
- deutlich mehr Möglichkeiten bietet und näher an der realen Hardware eines Computers bestehend aus Prozessor und Speicher ist registermaschinen werden
- hauptsächlich dazu verwendet die verarbe von Algorithmen zu modellieren oder Algorithmen sind Befehlsketten welche in Abhängigkeit zu eingabeparametern
- versuchen Probleme zu lösen und diese Probleme sind mathematisch formuliert kommen nun zum Aufbau und den Bestandteilen einer Registermaschine
- eine Registermaschine basiert auf einem Register und einem mehreren Registern besser gesagt und ein Programm wobei das Register ein
- Befehlsregister hat ein arbeitsregister und ein speicherregister an welchen Zahlen eingeschrieben und gespeichert werden können und das Programm besteht
- nun mal aus den verschiedenen Befehlen ja Register kann man in drei Arten unterteilen dem Befehlsregister wie gesagt dem arbeitsregister und dem
- speicherregister wie der Name schon verlauten lässt zählt der Befehlsregister die Anzahl der Befehle oder den aktuellen Befehl der ausgeführt
- wird besser gesagt zu später mehr im arbeitsregister werden Zwischenschritte einer Rechnung bzw das Ergebnis der aktuellen Rechnung gespeichert und im
- speicherregister werden Startwerte Zwischenergebnisse und Endergebnisse gespeichert dabei sind unendlich viele speicherregister
- möglich kommen nun zur Funktionsweise von registermaschinen registermaschinen können drei verschiedene Kategorien von Befehlen entgegennehmen die erste Befehl
- art umfasst Eingabe und ausgabebefehle konkret gemeint ist dass man eine Eingabe wie laut load Cloud oder Store für einen
- Zahlenwert vornimmt und so Zahlenwerte aus dem speicherregister oder als externe Konstanten in das arbeitsregister lädt oder im
- speicherregister speichert dazu auch später mehr die zweite befehlskategorie sind die arithmetischen Operatoren welche dazu dienen verschiedene
- Zahlenwerte miteinander zu verknüpfen Terme zu erstellen und schlussendlich auch zu berechnen die letzte und dritte
- befehlskategorie sind die Sprungbefehle ein Programm ist eine Abfolge von Befehlen und mittels implementierter Sprungbefehl im Programm
- 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
- 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
- registermaschinen Befehle egal welche der eben genannten Arten führen dazu dass eine Ausgangskonfiguration durch ein Befehl
- und dessen Ausführung in eine neue Konfiguration wechseln ähnlich wie die übergangsfunktion bei deterministischen endlichen Automaten bei gegebenen
- 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
- einer Registermaschine deterministisch bei gegebenen Zahlenwert und Stelle im Programm das heißt bei gegebener Konfiguration und ein Befehl gibt dieser
- Befehl eben deterministisch vor wie die Konfiguration sich durch den Befehl im Verbund mit dem adressierten Zahlenwert verändert um dies besser nachvollziehen
- 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
- Registern und den darin gespeicherten Zahlenwerten spricht dem befehlzellerlerregister dem arbeitsregister auch Akkumulator genannt
- 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
- 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
- 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
- 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
- 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
- Akkumulator nicht überschrieben wird im speicherregister haben wir die Anzahl aller speicherregister auf C1 und C2 also
- 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
- von links nach rechts das heißt von Befehlsregister nach arbeitsregister wie gesagt auch Akku ulator genannt bis hin zu den verschiedenen speicherregistern
- in Klammern der Reihe nach aufschreiben und erhalten so den formalen Ausdruck einer Konfiguration und diese lautet in diesem Beispiel
- 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
- 8226 und schauen wie die Befehle der Kategorie Dateneingabe und Ausgabe sich jeweils auf die Konfigurationen auf die diese
- Konfiguration die wir hier haben auswirken dabei schreiben wir wieder Befehlsregister arbeitsregister respektive Akkumulator und ein
- 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
- 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
- des Nutzers erfordern wir starten mit dem Befehl load 2 bei loadbefehlen werden Werte aus den speicherregistern in das arbeitsregister geladen und die
- zwei hinter dem load adressiert das zweite speicherregister also C2 sass dessen Wert 6 nun in das arbeitsregister geschrieben besser gesagt überschrieben
- wird denn im arbeitsregister ist bereits der Wert Z enthalten und da unser arbeitsregister unser Akkumulator nur ein Wert speichern kann wird die zwei
- überschrieben und der Akkumulator C0 hat nur den Wert 6 anstatt 2 dieser Befehl verändert logischerweise auch unsere Konfiguration da die
- Konfiguration ja eine mathematische Formalisierung der registerzustände und Rechnungen beinhaltet wir ändern das arbeitsregister C0 also ändert sich auch
- 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
- 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
- 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
- konstante was bedeutet dass ein Wert nicht aus dem speicherregister verwendet wird sondern manuell eingegeben wird der Wert ist also bis dato nicht gespeichert
- und mit Cloud i wird also ein beliebiger konstanter Wert ins arbeitsregister geschrieben in unserem Fall ist es die 5 welche dann den bisherigen
- Akkumulatorwert 6 überschreibt und unsere neue Konfiguration lautet also 10526 kommen nun zum letzten Daten Eingabe und ausgabebefehl nämlich Store
- 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
- soll sondern dass der Wert des arbeitsregisters in unserem Fall 5 in das zweite speicherregister geschrieben wird C2 wird also
- 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
- 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
- Folien Beispiele etc pp werde ich vermutlich auch noch auf unserer Webseite www.improvewissen.de hochladen Link dazu
- 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
- 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
- befiehlt diesem den aktuellen Zahlenwert aus dem Akkumulator auszulesen und zu speichern registermaschinen modellieren Computer Computer heißen Computer weil
- sie rechnen können das heißt Sie können mathematische Operationen ausführen unsere Registermaschine als Computermodell muss also ebenfalls die
- vier arithmetischen Operationen Addition Subtraktion Multiplikation und Division ausführen können lila markiert siehst du all diese abgekürzten arithmetischen
- 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
- erleutert ist eine konstante ein Zahlenwert welcher nicht im speicherregister enthalten ist oder zusätz
- benötigt wird ein Befehl mit einer Konstante haben wir bereits kennengelernt wie gesagt den Cloud Befehl und zur Verdeutlichung nehmen wir
- mal die konstante 5 wir schreiben also Cloud 5 und nun wird 5 ins arbeitsregister geschrieben nun vergleichen wir dies mit dem Befehl load
- 5 dort wird nicht der Zahlenwert 5 ins arbeitsregister geschrieben sondern der im fünften speicherregister vorhandene Wert welcher eine beliebige natürliche
- Zahl sein kann je nachdem wie man die Registermaschine definiert hat dieser Unterschied ist sehr wichtig denn genauso wie zu dem Befehl load der
- 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
- welcher nur für konstanten arithmetische Operationen zulässt [Musik]
- ja kommen wir nun zur letzten befehlskategorie einer der wichtigsten und vielleicht auch komplexesten den sprungbefehlen Sprungbefehle
- unterscheiden sich fundamental von all anderen befehlsarten die wir bisher kennengelernt haben weil sie die im Akkumulator oder speicherregister
- 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
- Befehl gesprungen wird der nicht in der normalen Reihenfolge liegt und somit wird die sequentielle Abarbeitung des Programms durch diese Sprungbefehle
- 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
- ein speicherregister steht sondern für die Reihenfolge eines Befehls in der Gesamtheit der befehlsequenz eines Programmes i ist also Äquivalent zur
- Programmstelle Sprungbefehle denn hauptsächlich zur Performance Optimierung weil bei bestimmten Zahlenwerten einige Befehle keinen Sinn
- 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
- 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
- zahlen t x und dieser Zahlenwert X ist in der Regel dann die der Zahlenwert aus dem arbeitsregister aus dem Akkumulator und
- 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
- ein vorherigen Programmschritt zurück wären so verschiedene Sachen die dann passieren könnten in unserem Beispielprogramm haben wir im vierten
- 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
- 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
- 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
- Befehl eingabusgabenfanten ein weiterfeh das ist der endbefehl der Befehl end beendet
- 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
- einer inkrementierung oder Veränderung des befehlzählers und auch alle anderen Register bleiben unberührt in dem Sinne vielen Dank fürs
- zuschauen im nächsten Video geht's dann konkret um ein Beispiel weil es dann mit dem befehlzellerler doch teilweise Irritation
- gibt und in dem Sinne wünsche ich dir einen schönen Tag macht's gut bleibt gesund und
- [Musik] ciao ه [Musik]