Synchronisation. Grundlagen der Rechnerarchitektur Assembler 91

Größe: px
Ab Seite anzeigen:

Download "Synchronisation. Grundlagen der Rechnerarchitektur Assembler 91"

Transkript

1 Synchronisation Grundlagen der Rechnerarchitektur Assembler 91

2 Data Race Prozessor 1: berechne x = x + 2 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, 2 # $t0 = $t0 + 2 sw $t0, 0($s0) # speichere $t0 nach x Gemeinsamer Speicher Variable x Prozessor 2: berechne x = x 1 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, -1 # $t0 = $t0 1 sw $t0, 0($s0) # speichere $t0 nach x Es gelte zu Beginn: x=10 Gilt nach Durchlauf beider Code Abschnitte immer x=11? Grundlagen der Rechnerarchitektur Assembler 92

3 Problem: Zugriff auf x ist nicht atomar Prozessor 1: berechne x = x + 2 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, 2 # $t0 = $t0 + 2 sw $t0, 0($s0) # speichere $t0 nach x Inhalt von x 10 Prozessor 2: berechne x = x 1 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, -1 # $t0 = $t0 1 sw $t0, 0($s0) # speichere $t0 nach x Zeit Grundlagen der Rechnerarchitektur Assembler 93

4 Mögliche Lösung: Atomic Swap swap $t1, lock 1.) Speicherinhalt lock in Register $t1 kopieren 2.) Alten Wert von $t1 nach lock kopieren Beispiel $t1 lock Vor Ausführung von swap 1 0 Nach Ausführung von swap 0 1 Speicher Variable lock swap ist hierbei atomar, d.h. während des swap wird jeglicher Speicherzugriff anderer Prozesse verzögert bis swap vollständig ausgeführt wurde! MIPS ISA hat kein swap, dennoch gibt es andere ISAs die so einen Befehl haben. Also, zunächst ein Beispiel, wie man mittels swap synchronisieren kann. Grundlagen der Rechnerarchitektur Assembler 94

5 Mögliche Lösung: Atomic Swap Prozessor 1: berechne x = x + 2 addi $t1, $zero, 1 # setze $t1 auf 1 loop: swap $t1, lock # tausche $t1 und lock bne $t1, $zero, loop # nochmal wenn $t1!=0 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, 2 # $t0 = $t0 + 2 sw $t0, 0($s0) # speichere $t0 nach x swap $t1, lock # gib lock wieder frei Prozessor 2: berechne x = x 1 addi $t1, $zero, 1 # setze $t1 auf 1 loop: swap $t1, lock # tausche $t1 und lock bne $t1, $zero, loop # nochmal wenn $t1!=0 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, -1 # $t0 = $t0 1 sw $t0, 0($s0) # speichere $t0 nach x swap $t1, lock # gib lock wieder frei Gemeinsamer Speicher Variable x Variable lock (initial=0) Grundlagen der Rechnerarchitektur Assembler 95

6 Mögliche Lösung: Atomic Swap Prozessor 1: berechne x = x + 2 addi $t1, $zero, 1 # setze $t1 auf 1 loop: swap $t1, lock # tausche $t1 und lock bne $t1, $zero, loop # nochmal wenn $t1!=0 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, 2 # $t0 = $t0 + 2 sw $t0, 0($s0) # speichere $t0 nach x swap $t1, lock # gib lock wieder frei lock 0 x 10 Prozessor 2: berechne x = x 1 addi $t1, $zero, 1 # setze $t1 auf 1 loop: swap $t1, lock # tausche $t1 und lock bne $t1, $zero, loop # nochmal wenn $t1!=0 lw $t0, 0($s0) # lade x nach $t0 addi $t0, $t0, -1 # $t0 = $t0 1 sw $t0, 0($s0) # speichere $t0 nach x swap $t1, lock # gib lock wieder frei Zeit Grundlagen der Rechnerarchitektur Assembler 96

7 Weitere Lösung: Load Linked und Store Conditional ll $t1, 0($s1) # load linked Lade den Inhalt der Speicherstelle 0($s1) in das Register $t1 sc $t0, 0($s1) # store conditional 1. Wenn seit dem letztem load linked keiner auf den Speicherblock zugegriffen hat, dann Speichere den Inhalt von Register $t0 auf die Speicherstelle 0($s1) und setze $t0 auf Sonst lasse den Speicherblock unberührt und setze $t0 auf 0. Speicher Variable lock MIPS ISA hat ein Load Linked (ll) und Store Conditional (sc). Also, wie kann man mit ll und sc synchronisieren? Grundlagen der Rechnerarchitektur Assembler 97

8 Weitere Lösung: Load Linked und Store Conditional Prozessor 1: berechne x = x + 2 loop: ll $t0, 0($s0) # $t0 = x addi $t0, $t0, 2 # $t0 = $t0 + 2 sc $t0, 0($s0) # x = $t0 beq $t0, $zero, loop # nochmal bei failure Gemeinsamer Speicher Variable x Prozessor 2: berechne x = x 1 loop: ll $t0, 0($s0) # $t0 = x addi $t0, $t0, -1 # $t0 = $t0 1 sc $t0, 0($s0) # x = $t0 beq $t0, $zero, loop # nochmal bei failure Grundlagen der Rechnerarchitektur Assembler 98

9 Weitere Lösung: Load Linked und Store Conditional Prozessor 1: berechne x = x + 2 loop: ll $t0, 0($s0) # $t0 = x addi $t0, $t0, 2 # $t0 = $t0 + 2 sc $t0, 0($s0) # x = $t0 beq $t0, $zero, loop # nochmal bei failure x 10 Prozessor 2: berechne x = x 1 loop: ll $t0, 0($s0) # $t0 = x addi $t0, $t0, -1 # $t0 = $t0 1 sc $t0, 0($s0) # x = $t0 beq $t0, $zero, loop # nochmal bei failure Zeit Grundlagen der Rechnerarchitektur Assembler 99

10 Zusammenfassung der neuen Befehle Instruktuion Beispiel Bedeutung ll ll $s1, 0($s0) Lade den Inhalt von Adresse 0($s0) in $s1 und starte eine atomare Read Modify Write Operation. sc sc $t0, 0($s0) Speichere den Inhalt von $t0 auf Adresse 0($s0), wenn seit dem letzten ll nicht von einem anderen Prozess auf den Speicherblock zugegriffen wurde, der das adressierte Word enthält. Setze $t0 auf 1 in diesem Fall. Ansonsten überschreibe den Speicherbereich nicht und setze $t0 auf 0. Grundlagen der Rechnerarchitektur Assembler 100

11 Quiz für den Quizmaster Realisiere swap Register, Adresse mit ll und sc. Das Register sei $s0 Die Adresse sei 0($s1) Das temporäre Register sei $t0 Erinnerung: swap tauscht Speicherinhalt und Registerinhalt atomar aus. Grundlagen der Rechnerarchitektur Assembler 101

12 Exceptions Grundlagen der Rechnerarchitektur Assembler 102

13 Motivation: Behandlung von Overflows Was war nochmal ein Overflow? Beispiel mit 8 Bit Zahlen: (= 90) (=103) (=-63) Die bisher behandelten ganzzahligen Arithmetik Instruktionen (z.b. add, addi und sub ) können Overflow erzeugen. Was wenn so ein Overflow auftritt? Einfach ignorieren? Für jeden Overflow sollte eine Ausnahmebehandlungsroutine aufgerufen werden, die dann entscheidet was zu tun ist. Anschließend kann der normale Code wieder ausgeführt werden. Eine solche Ausnahmebehandlung wird über Exceptions realisiert. Grundlagen der Rechnerarchitektur Assembler 103

14 Beispiele für Exceptions Ereignistyp Ausgelöst durch Interrupt den Prozessor? Anfrage eines I/O Gerätes nein X System Call ja Arithmetischer Overflow ja Verwendung einer undefinierten ja Instruktion Hardwarefehler ja/nein (X) Von außen ausgelöste Exceptions nennt man auch Interrupts Grundlagen der Rechnerarchitektur Assembler 104

15 Genereller Ablauf: Behandlung von Exceptions (4) Behandle die Exception (5) springe ggf. wieder zurück. Rücksprung mit gesichertem $pc möglich. Exception Handler Aktuell laufendes Programm Speicher (3) Springe zum Exception Handler (2) Sichere $pc (1) Exception Woher weis die CPU wo der Exception Handler liegt? Grundlagen der Rechnerarchitektur Assembler 105

16 Behandlung von Exceptions Möglichkeit 1: Interrupt Vektor Tabelle Speichere Adresse der aktuellen Programmausführung in einem speziellen Register EPC. Wähle aus der Interrupt Vektor Tabelle die Adresse des Handlers für diesen Exception Typ und springe dort hin. Handler Routine springt nach Exception Behandlung ggf. zurück in den normalen Code, d.h. an die Programminstruktion auf die EPC zeigt. Exception Typ Adresse des Exception Handlers Undefinded 0x Instruction Arithmetic 0x Overflow Interrupt Vektor Tabelle Grundlagen der Rechnerarchitektur Assembler 106

17 Behandlung von Exceptions Möglichkeit 2: Cause Register (das ist die MIPS Variante) Speichere Adresse der aktuellen Programmausführung in einem speziellen Register EPC. Speichere den Exception Typ in einem speziellen Cause Register. Springe an die Adresse des einen Exception Handlers. Der Exception Handler behandelt den im Cause Register beschriebenen Exception Typ. Routine springt nach Exception Behandlung ggf. zurück in den normalen Code, d.h. an die Programminstruktion auf die EPC zeigt. Nummer Exception Typ (Grund) 0 Interrupt (Hardware) 4 Address Error (load or fetch) 5 Address Error (store) 6 Bus Error (fetch) 7 Bus Error (store) 8 System Call 9 Break Point 10 Reserved Instruction 11 Coprocessor Unimplemented 12 Arithmetic Overflow 13 Trap 15 Floating Point Exception MIPS Exception Codes Grundlagen der Rechnerarchitektur Assembler 107

18 MIPS Hardware Realisierung von Exceptions? Memory CPU Registers $0... $31 Coprocessor 1 (FPU) Registers $0... $31 Arithmetic Unit PC Lo Multiply Divide Hi Arithmetic Unit Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Es gibt einen weiteren Coprozessor Grundlagen der Rechnerarchitektur Assembler 108

19 Beispiel: Aufruf des Exception Handlers # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : # Exception-Handler beginnt immer hier 0x :... 0x : $pc vor Exception: $pc nach Exception: Exception Code für Arithmetic Overflow ist 12. Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 109

20 Beispiel: Handling der Exception # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : # Ein fauler Exception-Handler 0x : addi $s2,$zero,0# Problem gelöst 0x : eret # Rücksprung $pc zur Behandlung: $pc nach Behandlung: Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 110

21 Weitere Exceptions während des Handlings? # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : # Ein fauler Exception-Handler 0x : addi $s2,$zero,0# Problem gelöst 0x : eret # Rücksprung $pc zur Behandlung: $pc nach Behandlung: Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Möglichkeiten, z.b.: Exception Handler erzeugt selber eine Exception Anfrage eines IO Gerätes Grundlagen der Rechnerarchitektur Assembler 111

22 Exceptions während des Handlings abgeschaltet # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : # Ein fauler Exception-Handler 0x : addi $s2,$zero,0# Problem gelöst 0x : eret # Rücksprung Exception Level Bit: 0 = Exceptions werden berücksichtigt 1 = Exceptions werden nicht berücksichtigt Wird bei Sprung in den Exception Handler immer gesetzt. Bei Aufruf von eret wird das Bit wieder gelöscht Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 112

23 Status erlaubt auch das Maskieren von Interrupts # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : Die Bits einer Interrupt Maske bestimmen welche Interrupt Level Exceptions erzeugen dürfen und welche ignoriert werden. # Ein fauler Exception-Handler 0x : addi $s2,$zero,0# Problem gelöst 0x : eret # Rücksprung Coprocessor 0 (Traps and Memory) Registers Interrupt Maske Jeder mögliche Interrupt ist einem Interrupt Level zugeordnet. Mit Bit 0 des Status Registers können Interrupts generell ein und ausgeschaltet werden. BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 113

24 Pending Interrupts # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : # Exception-Handler beginnt immer hier 0x :... 0x : Alle ankommenden Interrupts (auch ausmaskierte) setzen im Cause Register das Pending Flag ihres Interrupt Levels. Wird das Masken Bit (oder das generelle Interrupt Bit) später wieder aktiviert, löst das Pending Bit dann den Interrupt auf der CPU aus. Pending Interrupts Exception Code Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 114

25 Zugriff auf die Coprocesor 0 Register Erinnerung: Für den FPU Coprozessor (Coprozessor 1) hatten wir: mfc1 : laden von FP Coprozessor Register in CPU Register mtc1 : laden von CPU Register in FP Coprozessor Register Analoge Instruktionen für den Coprozessor 0: mfc0 : laden von Coprozessor0 Register in CPU Register mtc0 : laden von CPU Register in Coprozessor0 Register Beispiele: mfc0 $s0, $13 # $s0=coprozessor-register 13 mtc0 $13, $s0 # Coprozessor-Register 13=$s0 Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 115

26 Beispiel für Coprocessor 0 Register Zugriff # Es gelte $s2 = 0x7fffffff 0x : add $s1,$s2,$s2 # Overflow! 0x : # Ein etwas besserer Exception-Handler # Exception auslösende Instruktion einfach überspringen 0x : mfc0 $k0,$14 # $k0 = EPC 0x : addi $k0,$k0,4 # $k0 = EPC+4 0x : mtc0 $14,$k0 # EPC=EPC+4 0x c : eret # Rücksprung Coprocessor 0 (Traps and Memory) Registers $pc zur Behandlung: $pc nach Behandlung: Beachte: Register Satz Konvention: $k0 und $k1 sind für OS Funktionen reserviert. Behandeln von Exceptions ist eine OS Funktion. BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 116

27 Traps Trap eine Instruktion, die eine Bedingung testet und eine Exception vom Typ 13 (Trap) auslöst, wenn die Bedingung erfüllt ist. Trap Instruktionen am Beispiel: teq $s0,$s1 # Trap Exception, wenn $s0 = $s1 teqi $s0,42 # Trap Exception, wenn $s0 = 42 tne $s0,$s1 # Trap Exception, wenn $s0!= $s1 tnei $s0,42 # Trap Exception, wenn $s0!= 42 tge $s0,$s1 # Trap Exception, wenn $s0 >= $s1 tgeu $s0,$s1 # Trap Exception, wenn $s0 >= $s1 (unsigned) tgei $s0,$42 # Trap Exception, wenn $s0 >= 42 tgeiu $s0,42 # Trap Exception, wenn $s0 >= 42 (unsigned) tlt $s0,$s1 # Trap Exception, wenn $s0 < $s1 tltu $s0,$s1 # Trap Exception, wenn $s0 < $s1 (unsigned) tlti $s0,$42 # Trap Exception, wenn $s0 < 42 tltiu $s0,42 # Trap Exception, wenn $s0 < 42 (unsigned) Grundlagen der Rechnerarchitektur Assembler 117

28 System Calls System Call Mechanismus zum Aufrufen von Betriebssystemfunktionen. Anwendung der Instruktion syscall am Beispiel: addi $v0, $zero, 1 # Lade System Call Code in $v0 # hier System Call Code 1 für den # Systemcall print_int addi $a0, $zero, 42 # Lade das Argument für den # System Call nach $a0. # Hier soll die Zahl 42 # ausgegeben werden. syscall # Rufe den System Call auf # dies führt zu einer Exception # vom Typ 8 (System Call) Grundlagen der Rechnerarchitektur Assembler 118

29 In SPIM/MARS verfügbare System Calls Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Assembler 119

30 Zusammenfassung der neuen Befehle Instruktuion eret teq, teqi, tne, tnei, tge, tgeu, tgei, tgeiu, tlt, tltu, tlti, tltiu syscall Bedeutung Springe aus Exception Handler zurück. Setzt Exception Level Bit im Status Register wieder auf 0. Löse Trap Exception aus, wenn die Bedingung erfüllt ist. Beispiel: teq $s0, $s1 löst einen Trap aus, wenn $s0 = $s1 gilt. Rufe System Call mit der in $v0 gespeicherten Nummer auf. Parameter des System Calls werden in $a0 und $a1 übergeben. Beispiel: syscall gibt eine 42 auf dem Bildschirm aus, wenn $v0 = 1 (print_int) und $a0 = 42. Grundlagen der Rechnerarchitektur Assembler 120

31 Unsigned Arithmetik Instruktionen Zu den bisher behandelten Arithmetik Instruktionen gibt es auch noch unsigned Varianten, die keine Overflow Exception erzeugen. Beispiel: # Es gelte $s2 = 0x7fffffff addu $s1,$s2,$s2 # erzeugt *keine* # Overflow-Exception! Grundlagen der Rechnerarchitektur Assembler 121

32 Signed und ihre Unsigend Varianten Signed Instruktion kann Overflow erzeugen Unsigned Vertreter kann Overflow erzeugen add ja addu nein addi ja addiu nein div nein divu nein mult nein multu nein mul nein madd nein maddu nein msub nein msubu nein sub ja subu nein Grundlagen der Rechnerarchitektur Assembler 122

33 Pseudoinstruktionen, Direktiven und Makros Grundlagen der Rechnerarchitektur Assembler 123

34 Motivation für Pseudoinstruktionen Wir hatten häufiger schon addi $s1,$zero,wert # $s1=wert Eine Instruktion li (Load Immediate) wäre doch nachvollziebarer li $s1,wert # $s1=wert MIPS als ISA aus dem RISC Lager versucht aber den Instruktion Set möglichst klein zu halten. Damit ist so was wie ein li in der ISA nicht eingebaut. Kann man ja mit einem addi und dem $zero Register ausdrücken. Dennoch gibt es in MIPS oben genannte Instruktion. Wo kommt die her? Das ist eine sogenannte Pseudoinstruktion,die der Assembler in Instruktionen der MIPS ISA übersetzt. Grundlagen der Rechnerarchitektur Assembler 124

35 Umsetzung von Pseudoinstruktionen Wie würde folgende move Instruktion vom Assembler umgesetzt? move $s1,$s2 # Pseudoinstruktion $s1=$s2 Wie würde folgende blt Instruktion vom Assembler umgesetzt? blt $s1,$s2, Label # Springe nach Label, # wenn $s1<$s2 gilt Beachte: Registerkonvention. Pseudoinstruktionen die ein Register zum Zwischenspeichern von Ergebnissen brauchen, benutzen dazu das Register $at (Assembler Temporary) Grundlagen der Rechnerarchitektur Assembler 125

36 Einige MIPS Assembler Pseudoinstruktioen Instruktion Beispiel Erklärung des Beispiel blt, bltu blt $s1, $s2, Label Springe nach Label, wenn $s1 < $s2 (signed) bgt, bgtu bgt $s1, $s2, Label Springe nach Label, wenn $s1 > $s2 (signed) ble, bleu ble $s1, $s2, Label Springe nach Label, wenn $s1 <= $s2 (signed) bge, bgeu bge $s1, $s2, Label Springe nach Label, wenn $s1 >= $s2 (signed) li li $s1, 42 Lade Immediate 42 in $s1 move move $s1, $s2 $s1 = $s2 MARS unterstützt beispielsweise neben den 155 Basisinstruktionen weitere 388 zusätzliche Pseudoinstruktionen. Grundlagen der Rechnerarchitektur Assembler 126

37 Direktiven Direktiven vereinfachen das Datenlayout eines Programms im Speicher. Damit der Assembler ein Programm, wie auf der rechten Seite gezeigt, erzeugt, schreiben wir:.text 0x li $v0, 1 li $a0, 5 syscall.data 0x str:.asciiz "Hallo Welt! 0x : li $v0, 1 0x : li $a0, 5 0x : syscall... 0x : H 0x : a 0x : l 0x : l 0x : o... Grundlagen der Rechnerarchitektur Assembler 127

38 Makros (nicht Besandteil von SPIM/MARS) Makros definieren in einem Wort eine Folge von Instruktionen. Beim assemblieren wird jedes Auftreten des Makronamens im Code mit den Instruktionen ausgetauscht. Beispiel:.macro print_int($arg) la $a0, int_str mov $a1, $arg jal printf.end_macro....data int_str:.asciiz %d Code:... print_int($t0)... wird expandiert zu:... la $a0, int_str mov $a1, $t0 jal printf... Grundlagen der Rechnerarchitektur Assembler 128

39 Nochmal alles im Überblick Grundlagen der Rechnerarchitektur Assembler 129

40 MIPS R2000 CPU und Coprocessoren Memory CPU Registers $0... $31 Coprocessor 1 (FPU) Registers $0... $31 Arithmetic Unit PC Lo Multiply Divide Hi Condition Flags Arithmetic Unit Coprocessor 0 (Traps and Memory) Registers BadVadr ($8) Status ($12) Cause ($13) EPC ($14) Grundlagen der Rechnerarchitektur Assembler 130

41 Alle Instruktionsformate opcode src1 src2 dest shamt funct 6 Bit 5 Bit 5 Bit 5 Bit 5 Bit 6 Bit R Typ (Register Typ) opcode reg1 reg2 Sprungoffset/Wert 6 Bit 5 Bit 5 Bit 16 Bit I Typ (Immediate Typ) opcode Adresse 6 Bit 26 Bit J Typ (Jump Typ) 32 Bit Grundlagen der Rechnerarchitektur Assembler 131

42 Kompletter CPU Registersatz Name Nummer Verwendung Wird über Aufrufgrenzen bewahrt? $zero 0 Konstante 0 n.a. $at 1 Assembler Temporary nein $v0 $v1 2 3 Prozedur Rückgabe nein $a0 $a3 4 7 Prozedur Parameter nein $t0 $t Temporäre nein $s0 $s Temporär gesicherte ja $t8 $t Temporäre nein $k0 $k Reserviert für das OS nein $gp 28 Global Pointer ja $sp 29 Stack Pointer ja $fp 30 Frame Pointer ja $ra 31 Return Adresse ja Grundlagen der Rechnerarchitektur Assembler 132

43 Kategorie Unterkategorie Assembler Befehlsname (Mnemonic) Typ Einfache Arithmetik Register add, addu, sub, subu mult, multu, div, divu, mfhi, mflo Immediate addi, addiu I Register and, or, nor, xor R Logische Operationen Immediate andi, ori, xori I Bedingte Sprünge beq, bne I Unbedingte Sprünge Einige CPU Instruktionen j, jal J jr Word lw, sw, ll, sc I Speicherzugriff Halfword lh, lhu, sh I Byte lb, lbu, sb I Laden von Konstanten lui I Register slt, sltu R Vergleiche Immediate slti, sltiu I Shifts sll, sllv, slr, slrv, sra, srav R Grundlagen der Rechnerarchitektur Assembler 133 R R

44 Einige FPU Instruktionen Kategorie Assembler Befehlsname (Mnemonic) Typ Branch bc1f, bc1t I FPU Registerzugriff mtc1, mfc1 R FPU Speicherzugriff lwc1, swc1, ldc1, sdc1 I Single Precision Arithmetik add.s, sub.s, mul.s, div.s R Double Precision Arithmetik add.d, sub.d, mul.d, div.d R Verschieben von Registerinhalten der FPU mov.s, mov.d R Single Precision Vergleiche c.x.s (x=eq, lt, le) R Double Precision Vergleiche c.x.d (x=eq, lt, le) R Grundlagen der Rechnerarchitektur Assembler 134

45 Einige Pseudoinstruktionen Kategorie Branches 32 Bit Immediate laden Register kopieren Mnemonic blt, bltu bgt, bgtu ble, bleu bge, bgeu li move Grundlagen der Rechnerarchitektur Assembler 135

46 Speicherbelegungskonvention $sp $gp 0x7ffffffc 0x Stack Heap Hohe Adresse Benutzer Speicher Argument 6 Argument 5 Saved Register $fp $pc 0x x x Statische Daten Text Reserviert Niedrige Adresse Lokale Variablen Unbenutzer Speicher Procedure Frame $sp Grundlagen der Rechnerarchitektur Assembler 136

47 Immediate Adressierung Beispiel: addi $s0, $s2, 42 # $s0 = $s (Instruktionstyp: I Typ) Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Assembler 137

48 Register Adressierung Beispiel: add $s0, $s2, $s4 # $s0 = $s2 + $s (Instruktionstyp: R Typ) Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Assembler 138

49 Basis Adressierung Beispiel: lw $t0, 12($s0) # $t0 = Inhalt der Speicherstelle $s2+12 (Instruktionstyp: I Typ) Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Assembler 139

50 PC Relative Adressierung Beispiel: beq $s0, $s2, Label # wenn $s0 = $s2 dann springe nach # Label. (Instruktionstyp: I Typ) (Beachte: Address speichert die Anzahl zu überspringender Words und nicht die Bytes) Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Assembler 140

51 Pseudodirekte Adressierung Beispiel: j Label # Springe nach Label (Instruktionstyp: J Typ) (Beachte: Address speichert die untere Basis des PC in Words und nicht in Bytes) Bildquelle: David A. Patterson und Grundlagen John L. Hennessy, der Rechnerarchitektur Computer Organization Assembler and Design, Fourth Edition,

52 Eine Instruktion haben wir noch vergessen nop # tue nichts So das war s: li $v0,10 syscall Grundlagen der Rechnerarchitektur Assembler 142

53 Zusammenfassung und Literatur Grundlagen der Rechnerarchitektur Assembler 143

54 Zusammenfassung Assembler als Schnittstelle zwischen höheren Sprachen und den Maschinen Instruktionen Assembler übersetzt menschenlesbare Assembler Instruktionen in maschinenlesbare Maschineninstruktionen (Zahlen) Assembler kann die ISA mit sinnvollen Pseudoinstruktionen erweitern Wir haben nochmals deutlich das Prinzip des Stored Program gesehen Instruktionen sind ununterscheidbar von Zahlen Instruktionen liegen im gewöhnlichen Datenspeicher Programmieren in Assemblersprache macht alles schneller? Wenn dann nur kritischste Teile Compiler kennt die Intention des Programmes nicht Compiler optimieren heutzutage aber sehr gut; meist besser als der gewöhnliche Assemblerprogrammierer Höhere Sprache bedeutet weniger Codezeilen und damit auch schnellere Programmierzeit Höhere Sprache bedeutet auch, dass Code schneller auf neue Architektur portierbar ist Der Speicher speichert lediglich Bits. Interpretation des Inhalts hängt von der Instruktion ab die darauf zu greift Programmieren lernt man nicht durch zuhören. Übung mach den Meister! Grundlagen der Rechnerarchitektur Assembler 144

55 Literatur [PattersonHennessy2012] David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, Introduction 2.2 Operations of the Computer Hardware 2.3 Operands of the Computer Hardware 2.5 Representing Instructions in the Computer 2.7 Instructions for Making Decisions 2.8 Supporting Procedures in Computer Hardware 2.9 Communicating with People 2.10 MIPS Addressing for 32 Bit Immediates and Adresses 2.11 Parallelism and Instructions: Synchronization 4.9 Exceptions B.1 Introduction B.2 Assemblers B.5 Memory Usage B.6 Procedure Call Convention B.7 Exceptions and Interrupts B.9 SPIM B.10 MIPS R2000 Assembly Language Grundlagen der Rechnerarchitektur Assembler 145

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78 32 Bit Konstanten und Adressierung Grundlagen der Rechnerarchitektur Assembler 78 Immediate kann nur 16 Bit lang sein Erinnerung: Laden einer Konstante in ein Register addi $t0, $zero, 200 Als Maschinen

Mehr

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik, Register und Speicherzugriff Grundlagen der Rechnerarchitektur Assembler 9 Arithmetik und Zuweisungen Einfache Arithmetik mit Zuweisung C Programm: a = b + c; d = a e; MIPS Instruktionen: Komplexere

Mehr

Beispiel: A[300] = h + A[300]

Beispiel: A[300] = h + A[300] Beispiel: A[300] = h + A[300] $t1 sei Basisadresse von A und h in $s2 gespeichert. Assembler Code? Maschinen Code (der Einfachheit halber mit Dezimalzahlen)? op rs rt rd adr/shamt funct Instruktion Format

Mehr

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21 Darstellung von Instruktionen Grundlagen der Rechnerarchitektur Assembler 21 Übersetzung aus Assembler in Maschinensprache Assembler Instruktion add $t0, $s1, $s2 0 17 18 8 0 32 6 Bit Opcode Maschinen

Mehr

Notwendigkeit für andere Instruktionsformate

Notwendigkeit für andere Instruktionsformate Notwendigkeit für andere Instruktionsformate add $t0, $s1, $s2 op rs rt rd shamt funct 6 Bit 5 Bit 5 Bit 5 Bit 5 Bit 6 Bit R Typ? lw $t0, 32($s3) I Typ Opcode 6 Bit Source 5 Bit Dest 5 Bit Konstante oder

Mehr

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33 Weitere Arithmetik Grundlagen der Rechnerarchitektur Assembler 33 Die speziellen Register lo und hi Erinnerung: ganzzahliges Produkt von zwei n Bit Zahlen benötigt bis zu 2n Bits Eine MIPS Instruktion

Mehr

Assembler am Beispiel der MIPS Architektur

Assembler am Beispiel der MIPS Architektur Assembler am Beispiel der MIPS Architektur Frühere Einsatzgebiete MIPS Silicon Graphics Unix Workstations (z. B. SGI Indigo2) Silicon Graphics Unix Server (z. B. SGI Origin2000) DEC Workstations (z.b.

Mehr

Grundlagen der Rechnerarchitektur. MIPS Assembler

Grundlagen der Rechnerarchitektur. MIPS Assembler Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32

Mehr

Grundlagen der Rechnerarchitektur. MIPS Assembler

Grundlagen der Rechnerarchitektur. MIPS Assembler Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Weitere Arithmetik Branches und Jumps Prozeduren 32

Mehr

Unterstützung von Jump Tables

Unterstützung von Jump Tables Unterstützung von Jump Tables Assembler Code: Label_ 1: Label_2: Label_n: Maschinen Code: 0x05342120: 1011010110 0x05443004: 0001011101 0x06756900: 0000111000 Jump Table Nr Label Adresse 0 Label_1 0x05342120

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur MIPS Assembler Übersicht Arithmetik, Register und Speicherzugriff Darstellung von Instruktionen Logische Operationen Wit Weitere Arithmetik tik Branches und Jumps Prozeduren

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 5 am 25.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Die Branch Instruktion beq Grundlagen der Rechnerarchitektur Prozessor 13 Betrachten nun Branch Instruktion beq Erinnerung, Branch Instruktionen beq ist vom I Typ Format:

Mehr

28. März Name:. Vorname. Matr.-Nr:. Studiengang

28. März Name:. Vorname. Matr.-Nr:. Studiengang Klausur 28. März 2011 Name:. Vorname Matr.-Nr:. Studiengang Hinweise: Bitte füllen Sie vor dem Bearbeiten der Aufgaben das Deckblatt sorgfältig aus. Zur Klausur zugelassen sind ausschließlich Schreibutensilien,

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Prozessor Übersicht Datenpfad Control Pipelining Data Hazards Control Hazards Multiple Issue Grundlagen der Rechnerarchitektur Prozessor 2 Datenpfad einer einfachen MIPS

Mehr

Klausur Mikroprozessortechnik 29. März 2010

Klausur Mikroprozessortechnik 29. März 2010 Klausur Mikroprozessortechnik 29. März 2010 Name:... Vorname:... Matr.-Nr:... Studiengang:... Hinweise: Bitte füllen Sie vor dem Bearbeiten der Aufgaben das Deckblatt sorgfältig aus. Zur Klausur zugelassen

Mehr

21. Februar Name:. Vorname. Matr.-Nr:. Studiengang

21. Februar Name:. Vorname. Matr.-Nr:. Studiengang Klausur 21. Februar 2011 Name:. Vorname Matr.-Nr:. Studiengang Hinweise: Bitte füllen Sie vor dem Bearbeiten der Aufgaben das Deckblatt sorgfältig aus. Zur Klausur zugelassen sind ausschließlich Schreibutensilien,

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Die Branch Instruktion beq Grundlagen der Rechnerarchitektur Prozessor 13 Betrachten nun Branch Instruktion beq Erinnerung, Branch Instruktionen beq ist vom I Typ Format:

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:

Mehr

Beispiele von Branch Delay Slot Schedules

Beispiele von Branch Delay Slot Schedules Beispiele von Branch Delay Slot Schedules Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 97 Weniger

Mehr

Allgemeine Lösung mittels Hazard Detection Unit

Allgemeine Lösung mittels Hazard Detection Unit Allgemeine Lösung mittels Hazard Detection Unit Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 83

Mehr

Mikroprozessortechnik. 03. April 2012

Mikroprozessortechnik. 03. April 2012 Klausur 03. April 2012 Name:. Vorname Matr.-Nr:. Studiengang Hinweise: Bitte füllen Sie vor dem Bearbeiten der Aufgaben das Deckblatt sorgfältig aus. Die Klausur besteht aus 6 doppelseitig bedruckten Blättern.

Mehr

Zusammenfassung: Grundlagen der Informatik Zahlensysteme, b-adische Darstellung, Umrechnung Beispiel: Umrechnung von ( ) 10 ins Dualsystem

Zusammenfassung: Grundlagen der Informatik Zahlensysteme, b-adische Darstellung, Umrechnung Beispiel: Umrechnung von ( ) 10 ins Dualsystem Zusammenfassung: Grundlagen der Informatik - Seite von 6 Zusammenfassung: Grundlagen der Informatik Zahlensysteme, b-adische Darstellung, Umrechnung Beispiel: Umrechnung von (69.59375) 0 ins Dualsystem

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 1: Von der Maschinensprache zu C Prof. Dr. Maschinensprache: MIPS R2000 Was bewirkt folgendes Programm: 00100111101111011111111111100000 10101111101111110000000000010100

Mehr

5.BMaschinensprache und Assembler

5.BMaschinensprache und Assembler Die Maschinenprogrammebene eines Rechners Jörg Roth 268 5.BMaschinensprache und Assembler Die vom Prozessor ausführbaren Befehle liegen im Binärformat vor. Nur solche Befehle sind direkt ausführbar. So

Mehr

1. Aufgabe: Pipelining (18 Punkte)

1. Aufgabe: Pipelining (18 Punkte) 1. Aufgabe: Pipelining (18 Punkte) Gegeben ist folgender Quelltextauszug: 1 add $sp, $sp, $4 2 slt $s0, $sp, $a0 3 lb $t1, 0($sp) 4 sub $t3, $t1, $a1 5 lw $t2 4($a2) 6 add $t4, $a0, $t2 Der Code soll auf

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Schreiben von Pages Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Write Through Strategie (siehe Abschnitt über Caching) ist hier somit nicht sinnvoll. Eine sinnvolle

Mehr

Wie groß ist die Page Table?

Wie groß ist die Page Table? Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten

Mehr

Technische Informatik I - HS 18

Technische Informatik I - HS 18 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 3 Datum : 25.-26. Oktober 2018 Aufgabe 1: Wurzelverfahren nach Heron Das

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 2 1 1 2 0 2 1 0 Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab... 0 1 2 0 1 2 1 1 3 2 2 3 212 Um solche Tabellen leicht implementieren zu können, stellt Java das switch-statement

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 2 Instruktionssatz Lothar Thiele Computer Engineering and Networks Laboratory Instruktionsverarbeitung 2 2 Übersetzung Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache

Mehr

Heute nur MIPS-Praxis (4 Aufgaben)

Heute nur MIPS-Praxis (4 Aufgaben) Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen

Mehr

Universität Koblenz-Landau. Montag, 20. Juni Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur. Sommersemester 2011

Universität Koblenz-Landau. Montag, 20. Juni Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur. Sommersemester 2011 Universität Koblenz-Landau Montag, 20. Juni 2011 2. Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur Sommersemester 2011 Prof. Dr. Ch. Steigner Name Vorname Mat.-Nr. Studiengang Musterlösung

Mehr

Lösungsvorschlag zur 3. Übung

Lösungsvorschlag zur 3. Übung Prof Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik Wintersemester 09/10 1 Präsenzübungen 11 Schnelltest Lösungsvorschlag zur Übung a) Welche der folgenden Aussagen entsprechen

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 6 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18. Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G77 [email protected] 17. & 18. November 2016 Inhalt Implementierung von Device-I/O mittels Polling und

Mehr

Technische Informatik I - HS 18

Technische Informatik I - HS 18 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 18 Musterlösung zu Übung 6 Datum : 15.-16. November 2018 Aufgabe 1: Bit-Test Zum Überprüfen des Status

Mehr

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung Einführung in die Systemprogrammierung Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 9. Juli 2015 Der MIPS-Prozessor MIPS R2000, von iamretro.gr Kurze Geschichte der MIPS-Architektur

Mehr

Musterlösung zur Klausur

Musterlösung zur Klausur Koblenz am 25. Februar 25 Uhr c.t., Hörsaal MD 28 Studiengang Informatik/Computervisualistik Musterlösung zur Klausur TECHNISCHE INFORMATIK B Prof. Dr. Ch. Steigner Name: Vorname: Matrikel-Nr.: Vergessen

Mehr

Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)

Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion) Auch hier wieder Aus voriger Wahrheitstabelle lässt sich mechanisch eine kombinatorische Schaltung generieren, die wir im Folgenden mit dem Control Symbol abstrakt darstellen. Instruction[31 26] (also:

Mehr

Lösungsvorschlag 10. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Lösungsvorschlag 10. Übung Technische Grundlagen der Informatik II Sommersemester 2009 Fachgebiet Rechnerarchitektur Fachbereich Informatik Lösungsvorschlag. Übung Technische Grundlagen der Informatik II Sommersemester 29 Aufgabe.: MIPS-Kontrollsignale Für die 5 Befehlstypen a) R-Format

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Rechnerarchitektur. Marián Vajteršic und Helmut A. Mayer

Rechnerarchitektur. Marián Vajteršic und Helmut A. Mayer Rechnerarchitektur Marián Vajteršic und Helmut A. Mayer Fachbereich Computerwissenschaften Universität Salzburg [email protected] und [email protected] Tel.: 8044-6344 und 8044-6315 3. Mai 2017

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou ([email protected]) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Technische Informatik I Übung 3: Assembler

Technische Informatik I Übung 3: Assembler Technische Informatik I Übung 3: Assembler Roman Trüb Computer Engineering Group, ETH Zürich 1 Lernziele Übung 3 Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Assembler Codeanalyse Aufgabe 2

Mehr

Die Maschinenprogrammebene eines Rechners Jörg Roth 294

Die Maschinenprogrammebene eines Rechners Jörg Roth 294 Die Maschinenprogrammebene eines Rechners Jörg Roth 294 5.E Die SPIM-Umgebung SPIM ist ein Simulationswerkzeug für MIPS-Prozessoren Es enthält einen Assembler und eine Laufzeitumgebung Da das Wirtsystem

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

1. Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur

1. Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur Universität Koblenz-Landau Montag, 6. Mai 2. Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur Sommersemester 2 Prof. Dr. Ch. Steigner Name Vorname Mat.-Nr. Studiengang Musterlösung Punkte :

Mehr

Grundlagen der Rechnerarchitektur. Einführung

Grundlagen der Rechnerarchitektur. Einführung Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Besprechung des 4. Übungsblattes Was ist MIPS? SPIM-Simulator MIPS-Befehlsformate MIPS-Befehle Assemblerdirektiven Syscalls in MIPS

Besprechung des 4. Übungsblattes Was ist MIPS? SPIM-Simulator MIPS-Befehlsformate MIPS-Befehle Assemblerdirektiven Syscalls in MIPS Organisatorisches Es gibt kein Übungsblatt zur heutigen Abgabe, da sich durch ausfallende Vorlesungstermine entsprechende Verschiebungen ergeben haben Das jetzige Übungsblatt ist abzugeben bis zum nächsten

Mehr

Was ist die Performance Ratio?

Was ist die Performance Ratio? Was ist die Performance Ratio? Wie eben gezeigt wäre für k Pipeline Stufen und eine große Zahl an ausgeführten Instruktionen die Performance Ratio gleich k, wenn jede Pipeline Stufe dieselbe Zeit beanspruchen

Mehr

Lehrveranstaltung: PR Rechnerorganisation Blatt 8. Thomas Aichholzer

Lehrveranstaltung: PR Rechnerorganisation Blatt 8. Thomas Aichholzer Aufgabe 8.1 Ausnahmen (Exceptions) a. Erklären Sie den Begriff Exception. b. Welche Arten von Exceptions kennen Sie? Wie werden sie ausgelöst und welche Auswirkungen auf den ablaufenden Code ergeben sich

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de marco.duerr [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2018 Übungsblatt 10 (Block C 2) (16 Punkte)

Mehr

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache

Assembler Programmierung Motivation. Informatik II SS 2004 Teil 4: Assembler Programmierung. Assembler vs. Maschinensprache Assembler Programmierung Motivation Informatik II SS 2004 Teil 4: Assembler Programmierung Was ist ein Programm? Eine Reihe von Befehlen, die der Ausführung einer Aufgabe dient Dazu wird das Programm sequentiell

Mehr

Einführung. Saalübung Informatik II SS Einführung. Einführung

Einführung. Saalübung Informatik II SS Einführung. Einführung Saalübung Informatik II SS 2006 SPIM-Assembler Teil 1 Einführung Übung zur SPIM-Assemblerprogrammierung Assembler ist die elementare Sprache eines Prozessors Assemblerbefehle repräsentieren die Basisoperationen

Mehr

N Bit Binärzahlen. Stelle: Binär-Digit:

N Bit Binärzahlen. Stelle: Binär-Digit: N Bit Binärzahlen N Bit Binärzahlen, Beispiel 16 Bit: Stelle: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Binär-Digit: 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 Least Significant Bit (LSB) und Most Significant Bit (MSB)

Mehr

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme

Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester Lorenz Schauer Mobile & Verteilte Systeme Grundlagen zur Assemblerprogrammierung unter SPIM im Sommersemester 2016 Lorenz Schauer Mobile & Verteilte Systeme 12. Juli 2016 Agenda heute Grundlagen: Unterprogramme I Call-by-Value (CBV) vs. Call-by-Reference

Mehr

Vorlesung Rechnerarchitektur

Vorlesung Rechnerarchitektur Vorlesung Rechnerarchitektur Sommersemester 2017 Carsten Hahn 8. Juni 2017 Agenda Grundlagen: Wiederholung Kontroll-Strukturen Stack-Speicher Unterprogramme I Unterprogramme II Call-by-Value (CBV) vs.

Mehr

Data Hazards. Grundlagen der Rechnerarchitektur Prozessor 74

Data Hazards. Grundlagen der Rechnerarchitektur Prozessor 74 Data Hazards Grundlagen der Rechnerarchitektur Prozessor 74 Motivation Ist die Pipelined Ausführung immer ohne Probleme möglich? Beispiel: sub $2, $1, $3 and $12, $2, $5 or $13, $6, $2 add $14, $2, $2

Mehr

Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45

Pipelining. Die Pipelining Idee. Grundlagen der Rechnerarchitektur Prozessor 45 Pipelining Die Pipelining Idee Grundlagen der Rechnerarchitektur Prozessor 45 Single Cycle Performance Annahme die einzelnen Abschnitte des MIPS Instruktionszyklus benötigen folgende Ausführungszeiten:

Mehr

Quiz. Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset.

Quiz. Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset. Quiz Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset 32 Bit Adresse 31 3 29... 2 1 SS 212 Grundlagen der Rechnerarchitektur

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode

Mehr

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 75 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9

Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9 Übungen zu Grundlagen der Rechnerarchitektur und -organisation: Bonusaufgaben Übung 8 und Präsenzaufgaben Übung 9 Dominik Schoenwetter Erlangen, 30. Juni 2014 Lehrstuhl für Informatik 3 (Rechnerarchitektur)

Mehr

Cache Grundlagen. Schreibender Cache Zugriff. SS 2012 Grundlagen der Rechnerarchitektur Speicher 22

Cache Grundlagen. Schreibender Cache Zugriff. SS 2012 Grundlagen der Rechnerarchitektur Speicher 22 Cache Grundlagen Schreibender Cache Zugriff SS 212 Grundlagen der Rechnerarchitektur Speicher 22 Eine einfache Strategie Schreibt man nur in den Cache, werden Cache und darunter liegender Speicher inkonsistent.

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock

Mehr

MIPS-Programmierung in der WebSPIM-Umgebung (0.3)

MIPS-Programmierung in der WebSPIM-Umgebung (0.3) MIPS-Programmierung in der WebSPIM-Umgebung (0.3) C. Reichenbach, mailto:[email protected] 12. Mai 2013 1 Einführung WebSPIM ist ein Web-basierter MIPS32-Simulator, dessen MIPS-Funktionalität

Mehr

Rechnerarchitektur SS TU Dortmund

Rechnerarchitektur SS TU Dortmund Rechnerarchitektur SS 2016 Exercises: Scoreboarding and Tomasulo s Algorithm Jian-Jia Chen TU Dortmund to be discussed on June, 14, 2016 Jian-Jia Chen (TU Dortmund) 1 / 8 Scoreboardings Im nächste Folien

Mehr

Cache Blöcke und Offsets

Cache Blöcke und Offsets Cache Blöcke und Offsets Ein Cache Eintrag speichert in der Regel gleich mehrere im Speicher aufeinander folgende Bytes. Grund: räumliche Lokalität wird wie folgt besser ausgenutzt: Bei Cache Miss gleich

Mehr

Kap.3 Mikroarchitektur. Prozessoren, interne Sicht

Kap.3 Mikroarchitektur. Prozessoren, interne Sicht Kap.3 Mikroarchitektur Prozessoren, interne Sicht 3.1 Elementare Datentypen, Operationen und ihre Realisierung (siehe 2.1) 3.2 Mikroprogrammierung 3.3 Einfache Implementierung von MIPS 3.4 Pipelining Implementierung

Mehr

Informatik II SS 2004 Teil 4-1: Assembler Programmierung

Informatik II SS 2004 Teil 4-1: Assembler Programmierung Assembler Programmierung Motivation Informatik II SS 2004 Teil 4-1: Assembler Programmierung Prof. Dr. Dieter Hogrefe Dipl.-Inform. Michael Ebner Lehrstuhl für Telematik Institut für Informatik Was ist

Mehr

######################### Zeichenkette auswerten ###################################

######################### Zeichenkette auswerten ################################### Informatik 3 Übung 06 Georg Kuschk 6.3) MIPS #Aufgabe 6.3) #Georg Kuschk #ACHTUNG : Da laut Forum davon ausgegangen werden soll, dass der Eingabewert, # falls er denn kleiner gleich 10 Stellen besitzt,

Mehr

Technische Informatik 1 Übung 2 Assembler (Computerübung) Matthias Meyer

Technische Informatik 1 Übung 2 Assembler (Computerübung) Matthias Meyer Technische Informatik 1 Übung 2 Assembler (Computerübung) Matthias Meyer Ziele der Übung Aufgabe 1 Ein lauffähiges Assembler-Programm Umgang mit dem Debugger Aufgabe 2 (Zusatzaufgabe) Lesen und Analysieren

Mehr

2. Teilklausur Informatik II

2. Teilklausur Informatik II 1. Aufgabe (4 + 6 Punkte) Beweise: n (a) i = (b) i=0 n i 2 = i=0 n (n + 1) 2 n (n + 1) (2n + 1) 6 2. Aufgabe (10 Punkte) Seien a, b {0, 1} n. Wir definieren: a < lex b i {0,..., n 1} : a[n 1 : i + 1] =

Mehr

Klausur zur Vorlesung Grundlagen der Rechnerarchitektur SS 2013

Klausur zur Vorlesung Grundlagen der Rechnerarchitektur SS 2013 Name: Matrikelnummer: Studiengang: INF CV IM Lehramt BSc MSc BEd MEd Diplom Klausur zur Vorlesung Grundlagen der Rechnerarchitektur SS 2013 Donnerstag, den 18. Juli 2013, Prof. Dr. Hannes Frey Die Bearbeitungszeit

Mehr

Informatik II SS Assembler Programmierung Motivation. Assembler vs. Maschinensprache. Assembler Allgemein Befehle (Maschinensprache)

Informatik II SS Assembler Programmierung Motivation. Assembler vs. Maschinensprache. Assembler Allgemein Befehle (Maschinensprache) Assembler Programmierung Motivation Informatik II SS 2006 Kapitel 4: Assembler Programmierung Dr. Michael Ebner Dr. René Soltwisch Lehrstuhl für Telematik Institut für Informatik Was ist ein Programm?

Mehr

Kap 5. 5 Die Maschinenprogrammebene eines Rechners. int a=1, b=2; a = a+2*b; Höhere Programmiersprache. Assembler und Maschinenprogramm

Kap 5. 5 Die Maschinenprogrammebene eines Rechners. int a=1, b=2; a = a+2*b; Höhere Programmiersprache. Assembler und Maschinenprogramm 5 Die Maschinenprogrammebene eines Rechners Höhere Programmiersprache Assembler und Maschinenprogramm Register und Mikroprogramm int a=1, b=2; a = a+2*b; lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0,

Mehr

Technische Informatik I - HS 18

Technische Informatik I - HS 18 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik I - HS 8 Musterlösung zu Übung 5 Datum : 8.-9. November 8 Aufgabe : MIPS Architektur Das auf der nächsten

Mehr

RISC-Prozessoren (1)

RISC-Prozessoren (1) RISC-Prozessoren (1) 1) 8 Befehlsklassen und ihre mittlere Ausführungshäufigkeit (Fairclough): Zuweisung bzw. Datenbewegung 45,28% Programmablauf 28,73% Arithmetik 10,75% Vergleich 5,92% Logik 3,91% Shift

Mehr

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

Grundlagen der Rechnerarchitektur. Ein und Ausgabe Grundlagen der Rechnerarchitektur Ein und Ausgabe Übersicht Grundbegriffe Hard Disks und Flash RAM Zugriff auf IO Geräte RAID Systeme SS 2012 Grundlagen der Rechnerarchitektur Ein und Ausgabe 2 Grundbegriffe

Mehr

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl

Technische Informatik 1 - Übung 3 3. & 4. November Philipp Miedl Technische Informatik 1 - Übung 3 3. & 4. November 2016 Philipp Miedl Philipp Miedl 3. 11. 2016 1 Ziele der Übungen Aufgabe 1 Philipp Miedl 3. 11. 2016 2 Ziele der Übungen Aufgabe 1 Aufbau von Objekt-Dateien

Mehr