Technische Informatik 1



Ähnliche Dokumente
Grundlagen der Informatik

Technische Informatik - Eine Einführung

Daten verarbeiten. Binärzahlen

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

2. Negative Dualzahlen darstellen

N Bit binäre Zahlen (signed)

Mikrocomputertechnik. Adressierungsarten

Zahlensysteme: Oktal- und Hexadezimalsystem

Grundlagen der Rechnerarchitektur

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Übung 9 - Lösungsvorschlag

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Einführung in die Informatik I

Lösungen: zu 1. a.) b.) c.)

1. Übung - Einführung/Rechnerarchitektur

Theoretische Informatik SS 04 Übung 1

5.BMaschinensprache und Assembler

Facharbeit Informatik. Thema:

Grundlagen der Informatik (BSc) Übung Nr. 5

Binäre Gleitkommazahlen

Zahlendarstellungen und Rechnerarithmetik*

Zahlensysteme Seite -1- Zahlensysteme

Binärdarstellung von Fliesskommazahlen

Professionelle Seminare im Bereich MS-Office

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Eine Logikschaltung zur Addition zweier Zahlen

Computerarithmetik ( )

Grundbegriffe der Informatik

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Zeichen bei Zahlen entschlüsseln

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Die Mikroprogrammebene eines Rechners

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Mikrocontroller Grundlagen. Markus Koch April 2011

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Leichte-Sprache-Bilder

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Einführung in die Programmierung

Übungen zu C++ Kapitel 1

Grundlagen verteilter Systeme

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Grundlagen der Rechnerarchitektur. Einführung

Zahlensysteme. Zahl Stellenwert Zahl Zahl =

Lehrer: Einschreibemethoden

2 Darstellung von Zahlen und Zeichen

Dezimalkomma (decimal point) rechts von Stelle mit Wertigkeit 100 nachfolgende Stellen haben Wertigkeit 10-1, 10-2, etc.

Individuelle Formulare

Kapitalerhöhung - Verbuchung

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21

Sin-Funktion vgl. Cos-Funktion

Die Subnetzmaske/Netzwerkmaske

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Übung RA, Kapitel 1.2

Lineare Gleichungssysteme

Technische Informatik 2 Adressierungsarten

Im Original veränderbare Word-Dateien

1 Mathematische Grundlagen

7 Rechnen mit Polynomen

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Kap 4. 4 Die Mikroprogrammebene eines Rechners

1 Aufgaben zu Wie funktioniert ein Computer?

Vertiefungsstoff zum Thema Darstellung von Zahlen

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 09/10

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

5 Speicherverwaltung. bs-5.1 1

Was meinen die Leute eigentlich mit: Grexit?

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

OPERATIONEN AUF EINER DATENBANK

Information in einem Computer ist ein

Binär Codierte Dezimalzahlen (BCD-Code)

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Kapitel 4A: Einschub - Binärcodierung elementarer Datentypen. Einschub: Teile aus Kapitel 2 in Küchlin/Weber: Einführung in die Informatik

Mikro-Controller-Pass 1

3 Rechnen und Schaltnetze

, WS2012 Übungsgruppen: Mo.,

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Zahlensysteme. von Christian Bartl

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 11/12

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Adressen der BA Leipzig

Wissenswertes über binäre Felder

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Anlegen eines DLRG Accounts

SJ OFFICE - Update 3.0

Assembler am Beispiel der MIPS Architektur

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Softwarelösungen: Versuch 4

Zwischenablage (Bilder, Texte,...)

Die Lernumgebung des Projekts Informationskompetenz

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Transkript:

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 und der Assemblersprache auseinander. Die Instruktionen und die zugehörige Maschinensprache definieren die Hardware Software Schnittstelle einer Rechnerarchitektur. Die «Instruction Set Architecture» ist demzufolge der Teil einer Rechnerarchitektur, der mit ihrer Programmierung zusammenhängt: Datenformate, Instruktionen und Adressierungsarten, Register und Speicherarchitektur, Unterbrechnungs und Ausnahmebehandlung, Ein und Ausgabe. 2 3

Schichtenmodell Übersetzung eines C Programms in Maschinensprache: Hochsprache textuelle Repräsentation der Instruktionen binäre Repräsentation; codierte Instruktionen und Daten 2 4

Logische Struktur eines MIPS Prozessors Hauptspeicher Prozessorkern (Central Processing Unit) Gleitkomma Recheneinheit (wird nicht in der Vorlesung behandelt) Behandlung von Unterbrechungen (siehe Kapitel 3) 2 5

Abarbeitung eines Maschinenprogramms Je nach Instruktion können auch einzelne Schritte übersprungen werden. 2 6

Instruktionssatz 2 7

MIPS Assembler Instruktionen Es folgt eine kurze Übersicht über die verschiedenen Operationen des MIPS Instruktionssatzes. Eine vollständigere Aufstellung finden Sie im Buch zur Vorlesung. Ein Prozessor besitzt eine üblicherweise relativ kleine Zahl von Registern, die er zum Zwischenspeichern von Daten verwenden kann. Das auszuführende Programm und umfangreichere Daten werden im Hauptspeicher abgelegt. symbolische Namen der Register 2 8

MIPS Assembler Instruktionen Arithmetische und logische Instruktionen (direkt): Arithmetische Instruktionen führen arithmetische und logische Operationen auf Registern aus. Die direkten Instruktionen verwenden die so genannte direkte Adressierung. Beispiele: Kommentar slti $t1,$s2, 100 # if($s2<100) then $t1=1 else $t1=0 addi $t1, $s2, 100 # $t1=$s2+100 Register $t1 erhält den Wert von ($s2 + 100) in Zweierkomplementdarstellung 2 9

MIPS Assembler Instruktionen Arithmetische und logische Instruktionen (Register): Arithmetische Instruktionen führen arithmetische und logische Operationen auf Registern aus. Registerinstruktionen verwenden die Registeradressierung. Alle Operanden sind also Registerinhalte. Beispiele: add $s1, $s2, $s3 # $s1=$s2+$s3 slt $s1,$s2, $s3 # if($s2<$s3) then $s1=1 else $s1=0 and $s1, $s2, $s3 # $s1=$s2 & $s3 bitweise logische UND Verknüpfung 2 10

MIPS Assembler Instruktionen Speicherinstruktionen: Speicherinstruktionen bewegen Daten zwischen Speicher und Registern. Sie verwenden die so genannte Basisadressierung. Beispiele: lw $t0, 100($s2) # $t0 = Speicher[100+$s2] sw $t0, 100($s2) # Speicher[100+$s2]=$t0 Der Hauptspeicher (Speicher, Memory) wird byteweise adressiert: (100 + $s2) Bytes vom Beginn des Hauptspeichers 1 Byte = 8 Bit 1 Wort = 8 Byte 2 11

Speicherorganisation Prozessor Register $s0 $s1 $t7 1 Wort=32 Bit lw $s0 4($zero) Byte Adresse 8 7 6 4 5 3 2 1 0 Hauptspeicher 1 Byte = 8 Bit 11010001 01001111 1 Wort = 32 Bit 2 12

Speicherorganisation Prozessor Register $s0 $s1 $t7 1 Wort=32 Bit sw $t7 4($zero) Byte Adresse 8 7 6 4 5 3 2 1 0 Hauptspeicher 1 Byte = 8 Bit 11010001 01001111 1 Wort = 32 Bit 2 13

MIPS Assembler Instruktionen Sprung und Verzweigungsinstruktionen: Sprung und Verzweigungsinstruktionen ändern den Kontrollfluss eines Programms. Bei Sprunginstruktionen wird in jedem Fall der Programmzähler auf eine neue Adresse gesetzt. Sprunginstruktionen verwenden entweder eine pseudodirekte Adressierung (j, jal) oder eine Registeradressierung (jr, jalr). Verzweigungsinstruktionen (beq, bne) verwenden eine PC relative Adressierung. Bei Verzweigungsinstruktionen wird der Programmzähler nur dann neu gesetzt, falls eine bestimmte Bedingung erfüllt ist. 2 14

MIPS Assembler Instruktionen Beispiele Sprunginstruktion: jr $ra # PC=$ra (nächste Instruktion ist in Speicher[$ra]) j Label1 jal Label2 # go to Label1 # $ra=pc+4 ; go to Label2 Die Instruktionen verändern den Programmzähler. Da Instruktionen immer ein ganzes Wort (4 Byte) belegen, der Hauptspeicher aber byteweise adressiert wird, müssen die beiden niedrigwertigsten Bits des Registers mit der Sprungadresse immer den Wert 0 enthalten. Bei der pseudodirekten Adressierung (j, jal) wird im Assemblercode üblicherweise eine symbolische Marke als Sprungadresse angegeben. 2 15

MIPS Assembler Instruktionen Beispiele Verzweigungsinstruktionen: beq $s1, $s2, Label3 # if($s1==$s2) then go to Label3 bne $s1, $s2, Label4 # if($s1!=$s2) then go to Label4 Auch bei der PC relativen Adressierung (beq, bne) wird im Assemblercode üblicherweise eine symbolische Marke als Sprungadresse angegeben: bne $s3, $s4, Then add $s0, $s1, $s2 j Exit Then: sub $s0, $s1, $s2 Exit: if ($s3!= $s4){ $s0 = $s1 - $s2; } else { $s0 = $s1 + $s2; } 2 16

MIPS Assembler Instruktionen Falls bei Sprung und Verzweigungsinstruktionen im Assemblercode ausnahmsweise keine symbolischen Marken sondern numerische Werte verwendet werden, richten wir uns nach den Konventionen im Buch! Hier werden im Assemblercode als Einheit Instruktionen verwendet. Da sie immer ein ganzes Wort (4 Byte) belegen, der Hauptspeicher aber byteweise adressiert wird, müssen die jeweiligen Adressen also mit 4 multipliziert werden. Allgemein (imm und target sind ganze Zahlen): beq $s1, $s2, imm # if($s1==$s2) then PC=PC+4+4*imm j target # PC=4*target Programmzähler: Byte Beispiel: beq $s1, $s2, 25 # if($s1==$s2) then PC=PC+4+100 direkter Wert: Wort nächste Instruktion j 2500 # PC=10000 2 17

MIPS Assembler Instruktionen Zusammenfassung der Bedeutung aller MIPS Register zur Speicherverwaltung für Funktionsaufrufe 2 18

2 19

arithmetische und logische Instruktionen Speicher Instruktionen Sprung und Verzweigungs Instruktionen 2 20

Synchronisation 2 21

Multi Core Prozessor AMD Barcelona microprocessor 2 22

Synchronisation Bei mehreren parallelen Zugriffen auf einen Speicher muss das Lesen und Schreiben oft koordiniert werden. Beispiel: Zwei parallele Programme wollen exklusiv auf einen Speicherbereich zugreifen (entweder P1 auf CPU1 oder P2 auf CPU2). Speicher Zur Koordination wird ein Datum im Speicher verwendet (Variable lock): Falls es 1 ist, benutzt bereits ein Programm die Daten, falls es 0 ist, ist der Datenbereich frei. Ein Programm führt also z.b. folgendes aus:... if (lock == 0) { lock = 1; <benutze Speicherbereich>; lock = 0; }... CPU 1 CPU 2 Problem gelöst? 2 23

Synchronisation Was passiert, wenn nach dem erfolgreichen Test auf lock == 0 das andere Programm die Variable auf lock = 1 setzt? Erste Lösungsmöglichkeit: atomarer Austausch, d.h. ein Registerwert wird mit einem Speicherwert atomar mit einer einzelnen Instruktion ausgetauscht. Alternative: Einführen zweier spezieller Instruktionen ll $t1, offset($s1) # load linked sc $t0, offset($s1) # store conditional Falls der Inhalt der von ll spezifizierten Speicherstelle Speicher[offset+$s1] geändert wird vor der Ausführung von sc auf die gleiche Speicherstelle, so wird 1. $t0 nicht in den Speicher geschrieben und 2. $t0 mit 0 überschrieben. 2 24

Synchronisation im Speicher: Speicher[$s1]... if (lock == 0) { lock = 1; <benutze Speicherbereich>; lock = 0; }... try: addi $t0, $zero, 1 # $t0 = 1 ll $t1, 0($s1) # ll auf die Variable lock bne $t1, $zero, exit # falls lock!= 0 -> exit sc $t0, 0($s1) # sc auf die Variable lock beq $t0, $zero, try # falls sc nicht erfolgreich -> try... # benutze Speicherbereich sw $zero, 0($s1) # lock = 0 exit:... 2 25

Instruktionskodierung 2 26

Übersetzung (Wiederholung) Das Kapitel 2 der Vorlesung setzt sich mit der Maschinensprache und der Assemblersprache auseinander. Die Instruktionen und die zugehörige Maschinensprache definieren die Hardware Software Schnittstelle einer Rechnerarchitektur. Die «Instruction Set Architecture» ist demzufolge der Teil einer Rechnerarchitektur, der mit ihrer Programmierung zusammenhängt: Datenformate, Instruktionen und Adressierungsarten, Register und Speicherarchitektur, Unterbrechnungs und Ausnahmebehandlung, Ein und Ausgabe. 2 27

Instruktionskodierung Unter Instruktionskodierung versteht man die Umsetzung einer Instruktion in ein Maschinenwort. Der MIPS Prozessor benutzt ausschliesslich 32 Bit Kodierungen (alle Instruktionen besitzen eine feste Länge). Man unterscheidet die 3 Typen I, J und R: Typ I 31 26 25 21 20 16 15 op rs rt immediate 0 Typ J 31 26 op 25 target 0 Typ R 31 26 25 21 20 16 15 11 10 6 5 0 op rs rt rd shamt funct 2 28

Instruktionskodierung Abkürzung I J R op rs rt immediate target rd shamt funct Bedeutung immediate (direkt) jump (Sprung) register (Register) 6 Bit Kodierung der Operation 5 Bit Kodierung eines Quellenregister 5 Bit Kodierung eines Quellenregisters oder Zielregisters 16 Bit direkter Wert oder Adressverschiebung 26 Bit Sprungadresse 5 Bit Kodierung des Zielregisters 5 Bit Grösse einer Verschiebung 6 Bit Kodierung der Funktion (Ergänzung des Feldes op) 2 29

Adressierungsarten Unter Adressierungsarten versteht man die verschiedenen Möglichkeiten, die ein Instruktionssatz bietet, um Daten zu adressieren. Der MIPS Prozessor unterstützt 5 Adressierungsarten: Direkte Adressierung: Der Operand ist eine Konstante in der Instruktion. Registeradressierung: Der Operand ist in einem Register. Basisadressierung: Der Operand ist im Speicher an der Adresse, die sich durch die Summe eines Registerinhaltes und einer Konstanten in der Instruktion ergibt. PC relative Adressierung: Die Adresse ergibt sich aus der Summe des Programmzählers (PC + 4) und einer Konstanten in der Instruktion. Pseudodirekte Adressierung: Der neue Programmzähler (PC) ergibt sich aus einer Konstanten (26 Bit) und den oberen 4 Bit des alten Programmzählers (PC + 4). 2 30

Adressierungsarten Instruktionskodierung 2 31

Instruktionskodierung Beispiele 2 32

Instruktionskodierung Beispiel für Instruktionskodierung: add $t0, $s1, $s2 $t0 ist Register 8, $s1 ist Register 17, $s2 ist Register 18 add hat Operationskodierung 0 und Funktionskodierung 32 Dezimale Schreibweise: op rs rt rd shamt funct Binäre Schreibweise: Hexadezimale Schreibweise: 0000 0010 0011 0010 0100 0000 0010 0000 02324020 16 oder 02324020 hex oder 0x02324020 2 33

Umrechnungstabelle dezimal hexadezimal binär dezimal hexadezimal binär 0 10 0 16 0000 2 8 10 8 16 1000 2 1 10 1 16 0001 2 9 10 9 16 1001 2 2 10 2 16 0010 2 10 10 a 16 1010 2 3 10 3 16 0011 2 11 10 b 16 1011 2 4 10 4 16 0100 2 12 10 c 16 1100 2 5 10 5 16 0101 2 13 10 d 16 1101 2 6 10 6 16 0110 2 14 10 e 16 1110 2 7 10 7 16 0111 2 15 10 f 16 1111 2 2 34

Instruktionskodierung Beispiel für Instruktionskodierung: Assemblerinstruktion umwandeln in eine binäre Darstellung: 00af8020 hex umwandeln in eine Assemblerinstruktion: Binäre Darstellung: 0000 0000 1010 1111 1000 0000 0010 0000 Dekodierung des Instruktionstyps: Typ R da op=000000 Unterteilung der binären Darstellung Resultat: add $s0, $a1, $t7 2 35

Datenformate Die folgenden Datenformate sind definiert: Byte (8 Bit) Halbwort (16 Bit) Wort (32 Bit) Verwendet wird die "big endian" Konvention für die Ordnung von Bytes in Worten und die von Worten in mehrfachen Wortstrukturen (Blöcken): Das höchstwertige Byte eines Wortes ist an seiner niedrigsten Adresse. Ein Wort wird adressiert mit der Byteadresse seines höchstwertigen Bytes. 2 36

Datenformate Beispiel "big endian" Konvention: Programm: addi $t1, $t0, 1 # 21090001 hex sll $t5, $t1, 2 # 00096880 hex Programmspeicher: Adresse der Instruktion sll $t5 $t1 2 Adresse der Instruktion addi $t1 $t0 1 00400007 16 00400006 16 00400005 16 00400004 16 00400003 16 00400002 16 00400001 16 00400000 16 1000 0000 0110 1000 0000 1001 0000 0000 0000 0001 0000 0000 0000 1001 0010 0001 2 37

Datenformate Ganze Zahlen werden im MIPS Prozessor entweder vorzeichenlos ( unsigned ) oder vorzeichenbehaftet ( signed ) im Zweierkomplement dargestellt: Eine n Bit vorzeichenlose Binärzahl hat den Wert: Die Erweiterung zu einer m Bit Binärzahl erfolgt durch Auffüllen mit 0: 2 38

Datenformate Eine n Bit vorzeichenbehaftete Binärzahl wird im Zweierkomplement dargestellt und hat den Wert: Das Vorzeichen kann leicht wie folgt bestimmt werden: Negieren erfolgt durch Addition von 1 zur dualen Binärzahl: 2 39

Datenformate Die Erweiterung zu einer m Bit Binärzahl im Zweierkomplement erfolgt durch Auffüllen mit dem höchstwertigen Bit: Beispiel: Registerinhalte: r1 = 0..0001, r2 = 0..0010, r3 = 1..1111 Assemblerinstruktionen: slt r4,r2,r1 # if(r2<r1)then r4=1 else r4=0 slt r5,r3,r1 # if(r3<r1)then r5=1 else r5=0 sltu r6,r2,r1 # if(r2<r1)then r6=1 else r6=0 sltu r7,r3,r1 # if(r3<r1)then r7=1 else r7=0 unsigned (vorzeichenlos) 2 40