3. RAM als Rechnermodell - swl. 2 Motivation § Wir m¶chten...

download 3. RAM als Rechnermodell - swl. 2 Motivation § Wir m¶chten Berechnungsvorschriften(Algorithmen)

of 31

  • date post

    19-Aug-2019
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of 3. RAM als Rechnermodell - swl. 2 Motivation § Wir m¶chten...

  • 3. RAM als Rechnermodell

  • 2

    Motivation § Wir möchten Berechnungsvorschriften (Algorithmen)

    formal beschreiben und deren Eigenschaften wie Korrektheit und Laufzeit analysieren

    § Rechnermodell abstrahiert vom verwendeten Rechner (z.B. Desktop-PC vs. leistungsstarker Server) und dessen spezifischer Konfiguration (z.B. verfügbarer Speicher)

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 3

    Inhalt § 3.1 RAM als Rechnermodell

    § 3.2 Korrektheit von Programmen

    § 3.3 Laufzeit von Programmen

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 4

    3.1 RAM als Rechnermodell § Random Access Machine (RAM) kann wahlfrei auf

    beliebige Stellen ihres Speichers zugreifen

    § RAM kennt nur wenige Befehle, kann aber alles berechnen, was berechenbar ist (vgl. Theoretische Informatik)

    § Andere Rechnermodelle (z.B. Turing-Maschine) hingegen können nur sequenziell auf ihren Speicher zugreifen (vgl. Theoretische Informatik)

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 5

    RAM als Rechnermodell

    Random Access Machine

    Akkumulator a

    IP

    Programmspeicher

    p[0]

    i1

    i2

    p[1]

    p[n]

    Datenspeicher

    s[0]

    s[1]

    … endlich viele

    Speicherstellen unendlich viele Speicherstellen

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 6

    Bestandteile der RAM § Programmspeicher (p[0],…,p[n]) ist ein endlich

    großer Speicher für Programmanweisungen

    § Datenspeicher (Eingabe und Ausgabe) (s[0],s[1]…) ist ein potenziell unendlich großer Speicher für Daten (z.B. ganze Zahlen)

    § Akkumulator (Akku) a ist eine Rechenregister (+, -, *, /, div, mod)

    Random Access Machine

    Akkumulator a

    IP

    Programmspeicher

    p[0]

    i1

    i2

    p[1]

    p[n]

    Datenspeicher

    s[0]

    s[1]

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 7

    Bestandteile der RAM § Instruction Pointer IP enthält die Nummer der

    Programmspeicherstelle, die als nächstes ausgeführt wird

    § Indexregister i1 und i2 sind Hilfsregister z.B. zum Zugriff auf den Datenspeicher (z.B. s[i1]), enthalten ganze Zahlen und können nur zählen (+1 und -1)

    Random Access Machine

    Akkumulator a

    IP

    Programmspeicher

    p[0]

    i1

    i2

    p[1]

    p[n]

    Datenspeicher

    s[0]

    s[1]

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 8

    Befehlssatz der RAM § Transportbefehle z.B.

    § a ← s[0] transportiert den Inhalt der Speicherstelle s[0] in den Akkumulator

    § i1 ← 1 weist dem Indexregister i1 den Wert 1 zu

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 9

    Befehlssatz der RAM § Sprungbefehle z.B.

    § jump 2 führt als nächstes die Anweisung in p[2] aus

    § if a >= 0 then jump 2 führt als nächstes die Anweisung in p[2] aus, wenn der Wert im Akkumulator größer gleich 0 ist, ansonsten die nächste Anweisung

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 10

    Befehlssatz der RAM § Arithmetikbefehle (nur für den Akkumulator a) z.B.

    § a ← a*2 verdoppelt den Wert des Akkumulators

    § a ← a*s[2] multipliziert den Wert des Akkumulators mit dem Wert in der Speicherstelle s[2]

    § a ← a mod 2 setzt den Akkumulator auf den ganzzahligen Rest der Division seines Werts durch Zwei

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 11

    Befehlssatz der RAM § Indexbefehle z.B.

    § i1 ← i1+1 erhöht den Wert des Indexregisters i1

    § i1 ← i1-1 vermindert den Wert des Indexregisters i1

    § Eingabe und Ausgabe

    § INPUT n..m legt fest, dass die Eingabe in den Speicherstellen s[n]..s[m] steht

    § OUTPUT n..m legt fest, dass die Ausgabe in den Speicherstellen s[n]..s[m] steht

    § HALT markiert das Ende eines Programms

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 12

    Befehlssatz der RAM § Kommentare zur besseren Lesbarkeit von Programmen

    § // erhöhe den Wert des Indexregisters

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 13

    Befehlssatz und Emulator § Eine Übersicht aller Befehle der RAM findet sich unter:

    http://isl-www.htwsaar.de/.../16_ws_i1/ram.pdf

    § RAMSES-Emulator http://isl-s-03.htwsaar.de/ramses/

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

    http://isl-www.htwsaar.de/weber/teaching/16_ws_i1/ram.pdf http://isl-s-03.htwsaar.de/ramses/

  • 14

    Addieren zweier Zahlen x und y § Unser erstes RAM-Programm addiert zwei Zahlen x und y

    (in s[0] und s[1]) und legt das Ergebnis in s[2] ab

    INPUT 0..1

    OUTPUT 2 0: a

  • 15

    Addieren zweier Zahlen x und y § Ablauf eines Programms lässt sich in Tabelle darstellen

    § jede Zeile gibt den Inhalt des Speichers und der Register nach Abarbeitung der Anweisung P[IP] an

    § undefinierte Werte werden als undef markiert § vorm Start des Programms hat der Instruction Pointer

    den Wert INIT

    § wird kein Sprungbefehl abgearbeitet, so erhöht sich der Wert des Instruction Pointers um 1, d.h. es wird der nächste Befehl im Programm abgearbeitet

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 16

    Addieren zweier Zahlen x und y

    IP a s[0] s[1] s[2]

    INIT undef x y undef 0 x x y undef 1 x+ y x y undef 2 x+ y x y x+ y

    INPUT 0..1 OUTPUT 2

    0: a

  • 17

    Addieren zweier Zahlen x und y § Laufzeit eines Programms messen wir als die Zahl der

    abgearbeiteten Anweisungen (Zeit T)

    § Beispielprogramm hat konstante Laufzeit T = 3, die nicht von der Eingabe x und y abhängt

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 18

    Berechnen von x2 + 3 § Wir schreiben nun ein RAM-Programm, welches die

    Eingabe x in s[0] erwartet, den Wert x2 + 3 berechnet und diesen als Ausgabe in s[1] ablegt

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 19

    Berechnen von x2 + 3

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 20

    Ganzzahlige Teilbarkeit durch 2 § Wir wollen feststellen, ob eine in s[0] als Eingabe

    gegebene Zahl n ganzzahlig durch 2 teilbar ist; ist dies der Fall soll 0 in s[1], andernfalls 1 als Ausgabe zurückgegeben werden

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 21

    Ganzzahlige Teilbarkeit durch 2

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 22

    Berechnen von Zweierpotenzen § Wir schreiben nun ein Programm zum Berechnen von

    Zweierpotenzen der Form 2n

    § Eingabe n in s[0] § Ausgabe von 2n in s[1]

    § Beobachte hierzu, dass gilt

    d.h. um 2n zu berechnen, müssen wir die Zahl 1 n-mal mit 2 multiplizieren

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

    20 = 1, 21 = 2 · 1, 22 = 2 · 2 · 1, . . .

  • 23

    Berechnen von Zweierpotenzen § Unser Programm geht wie folgt vor:

    § speichere die Zahl n im Indexregister i1 § speichere die Zahl 1 im Akkumulator a § solange der Wert in i1 nicht 0 ist, multipliziere a mit 2

    und reduziere den Wert in i1 um 1

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 24

    Berechnen von Zweierpotenzen

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

    INPUT 0

    OUTPUT 1 0: a

  • 25

    Berechnen von Zweierpotenzen § Ablauf des Programms

    für Eingabe n = 3

    § Kompaktere Notation erfasst nur geänderte Werte in der Tabelle

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

    IP a i1 s[0] s[1]

    INIT undef undef 3 undef 0 1 1 3 2 3 2 4 2 5 2 3 4 4 1 5 2 3 8 4 0 5 2 6 8

  • 26

    Berechnen von Zweierpotenzen § Für n = 3 beträgt die Laufzeit des Programms T(3) = 16

    § Offenbar wächst die Laufzeit T(n) mit dem Wert n, da die Anweisungen 2-5 immer häufiger durchlaufen werden

    § Wir werden später sehen, wie man die Laufzeit T(n) für eine beliebige Eingabe n ermitteln kann

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 27

    Ermitteln der Stellenanzahl einer Zahl § Wir schreiben nun ein RAM-Programm, welches für eine

    in s[0] gegebene Zahl n die Anzahl ihrer Stellen in Binärdarstellung als Ausgabe in s[1]zurückgibt

    § Beispiel: Für n = 13 soll 4 zurückgegeben werden, da

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

    (13)10 = (1101)2

  • 28

    Ermitteln der Stellenanzahl einer Zahl

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 29

    Ermitteln der Stellenanzahl einer Zahl

    Informatik 1 / Kapitel 3: RAM als Rechnermodell

  • 30

    Zusammenfassung § Random Access Machine (RAM) als Rechnermodell

    kann wahlfrei auf ihren Speicher zugreifen

    § Befehlssatz der RAM besteht aus u.a. Transportbefehlen, Sprungbefehlen, Arithmetikbefehlen und Indexbefehlen

    § Ablauf eines Programms kann in einer Tabelle, welche die Änderung des Register- und Speicherinhalts erfasst,