3. RAM als Rechnermodell - swl.htwsaar.de · 2 Motivation § Wir möchten...

31
3. RAM als Rechnermodell

Transcript of 3. RAM als Rechnermodell - swl.htwsaar.de · 2 Motivation § Wir möchten...

3. RAM als Rechnermodell

2

Motivation§ Wir möchten Berechnungsvorschriften (Algorithmen)

formal beschreiben und deren Eigenschaften wieKorrektheit und Laufzeit analysieren

§ Rechnermodell abstrahiert vom verwendeten Rechner(z.B. Desktop-PC vs. leistungsstarker Server) unddessen 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) hingegenkö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

Speicherstellenunendlich vieleSpeicherstellen

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 eineRechenregister(+, -, *, /, 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ächstesausgeführt wird

§ Indexregister i1 und i2 sind Hilfsregister z.B. zum Zugriffauf 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 dieAnweisung in p[2] aus,wenn der Wert im Akkumulator größer gleich 0ist, ansonsten die nächsteAnweisung

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 Akkumulatorsmit dem Wert in der Speicherstelle s[2]

§ a ← a mod 2 setzt den Akkumulator auf den ganzzahligenRest 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-Emulatorhttp://isl-s-03.htwsaar.de/ramses/

Informatik 1 / Kapitel 3: RAM als Rechnermodell

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 20: a <- s[0]

1: a <- a + s[1]2: s[2] <- a

3: HALT

Informatik 1 / Kapitel 3: RAM als Rechnermodell

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 Registernach Abarbeitung der Anweisung P[IP] an

§ undefinierte Werte werden als undef markiert

§ vorm Start des Programms hat der Instruction Pointerden 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 undef0 x x y undef1 x+ y x y undef2 x+ y x y x+ y

INPUT 0..1OUTPUT 2

0: a <- s[0]1: a <- a + s[1]

2: s[2] <- a3: HALT

Informatik 1 / Kapitel 3: RAM als Rechnermodell

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 berechnetund 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 1n-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 10: a <- 1

1: i1 <- s[0]2: if i1 = 0 then jump 6

3: a <- a*24: i1 <- i1 - 1

5: jump 26: s[1] <- a

7: HALT

25

Berechnen von Zweierpotenzen§ Ablauf des Programms

für Eingabe n = 3

§ Kompaktere Notationerfasst nur geänderteWerte in der Tabelle

Informatik 1 / Kapitel 3: RAM als Rechnermodell

IP a i1 s[0] s[1]

INIT undef undef 3 undef0 11 323 24 2523 44 1523 84 0526 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,dargestellt und analysiert werden

§ Laufzeit eines Programms für eine bestimmte Eingabeentspricht der Zahl der abgearbeiteten Befehle

Informatik 1 / Kapitel 3: RAM als Rechnermodell

31

Literatur[1] H.-P. Gumm und M. Sommer: Einführung in die

Informatik, Oldenbourg Verlag, 2012 (Kapitel 5.2)

Informatik 1 / Kapitel 3: RAM als Rechnermodell