Einf hrung, Rechnermodelle, Von-Neuman-Architektur, RISC

Einf hrung, Rechnermodelle, Von-Neuman-Architektur, RISC
Rechnerarchitektur 1, Foliensatz 1
Einführung, Rechnermodelle,
Verarbeitungsbausteine
G. Kemnitz
Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 1/110
Inhalt und Organisation
Funktionsweise und Programmierung von Rechnern am Beispiel
eines 8-Bit-Mikrokontrollers:
wie funktioniert die Hardware,
wie werden Programme abgearbeitet.
Übung:
Programmieren in C, Programme testen,
dissasemblieren und Code verstehen.
Organisation der Lehrveranstaltung:
ab 17.12.2015 jede Woche Vorlesung,
jede Woche Hausübungen (Abgabe zur nächsten Vorlesung),
ab der 2. Vorlesung (07.01.2016) Test am Vorlesungsende
über den Inhalt der Hausübungen.
ab 6./7.01.2016 jede Woche Laborübung.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 2/110
Leistungsnachweises, Foliensätze
Leistungsnachweises, Erwerb:
In allen bis auf einem Kurztests mindestens 40% und
insgesamt mindesten 50% der Punkte und
in allen bis auf einer Laborübung mindestens 60% der
Punkte.
Alternativ1 mündliche Kenntnisprüfung über den Übungs- und
Vorlesungssto2 .
Foliensätze:
1 Einführung, Rechnermodelle, Verarbeitungsbausteine.
2 Zeitabläufe.
3 Schnittstellen und Zusatzwerke.
1
2
Auch bei entschuldigter Abwesenheit z.B. Krankheit.
Termine beim Dozent erfragen. Prüfungstermine bis max. Ende Februar.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 3/110
Inhalt des Foliensatzes
4.1
4.2
4.3
4.4
4.5
Einführung
Rechnermodelle
Von-Neumann-Architektur
RISC-Prozessor
Verarbeitungswerk
Speicherzugri
Sprungbefehle
Befehlssatz
Erstes Beispielprogramm
4.6 Aufgaben
Verarbeitungswerke
5.1 Gatterschaltungen
5.2 Bitverarbeitung
5.3 Addierer, Subtrahierer
5.4 Statusregister
5.5 Multiplikation, Division
5.6 Kommazahlen
5.7 Aufgaben
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 4/110
1. Einführung
Einführung
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 5/110
1. Einführung
Rechnerachitektur als Teilgebiet der Informatik
Fakt 1
Informatik ist die Wissenschaft von der Automatisierung
intellektueller Aufgaben.
Software
Formulierung der
Aufgaben in einer
von einer Maschine
abarbeitbaren Form
Algorithmen
Datenstrukturen
...
Schnittstelle
SW ⇔HW
Hardware
Konstruktion von
Maschinen zur Abarbeitung intellektueller Aufgaben
Programmiersprachen
Betriebssysteme
Rechnerarchitektur
Programmierwerkzeuge
Schaltungstechnik
...
...
in starkem Zusammenhang mit
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 6/110
1. Einführung
Informatik ist eine junge Wissenschaft3
Erfindungen, Standards
Register
Transistor
RAM
Interrupt Mikroprozessor
VGA
Maus
Spielkonsole Soundkarte
Festplatte
RISC
IC
Lichtwellenleiter
Laptop
USB
USB3
Gigabit-Ethernet
DSL-Übertragung
DNA-Computer
Hardware
Zuse Z1
IBM360
PC
Zuse Z3 (erster Universalrechner)
4004
Macintosh
80286 80486
iMac
Apple iPad
1GHz-Pentium
Programmiersprachen
Plankalkül
LISP BASIC C
FORTRAN
Pascal
C++
Ada
Python
C#
Java
Betriebssysteme
OS360
Unix
1940
1950
1960
1970
Apple
Minix
Linux
Ubuntu
DOS3.1 OS/2
Win95 Win2000 Win7
MSDOS Win3.1
WinXP
Win8
1980
1990
2000
2010
Jahr
Es gibt auch Quellen, die den Beginn der Informatik auf die Erndung
des Abakus um 1100 v. Chr. im indo-chinesischen Kulturraum vordatieren.
3
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 7/110
2. Rechnermodelle
Rechnermodelle
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 8/110
2. Rechnermodelle
Der Begri Modell in der Informatik
Selbst die einfachsten Sachverhalte in der Informatik wie die
Abarbeitung eines Befehls werden sehr schnell kompliziert,
wenn alle Details berücksichtigt werden.
Denition 2
Modell
Ein Modell ist ein Mittel, um einen Zusammenhang zu
veranschaulichen. Es stellt die wesentlichen Sachverhalte dar und
verbirgt unwesentliche Details.
Von-Neumann-Modell: Veranschaulicht die Zusammenarbeit
zwischen Speicher und Prozessor.
RT (Register-Transfer-) Modell: Abbildung von Registerzuständen und Eingaben auf Ausgaben und Registerfolgezustände über Verarbeitungsfunktionen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016
9/110
2. Rechnermodelle
Programmiermodell: Register-Transfer-Modell reduziert auf
die für den Programmierer sichtbaren Register und Abarbeitungsschritte (keine Beschreibung der unsichtbaren Register
und Zwischenschritte, für den 8-Bit-Beispielprozessor der
Vorlesung ca. 500 Seiten Dokumentation).
Assemberprogrammiermodell: Abstraktion der RegisterTransfer-Operationen auf symbolische Befehle wie
add r1, r2
C-Programmiermodell: Architekturunabhängige Beschreibung der Zielfunktion, aus der ein Compiler Programme
generiert, die fast so ezient wie handgeschrieben sind.
Rechner als digitale Schaltung: Tausende bis millionen von
Bausteinen. Zu groÿ für eine ganzheitliche Betrachtung.
...
Die Vorlesung wird sich durch all diese Modellebenen schlängeln,
mal den einen und mal den anderen Aspekt hervorheben und
immer viele Details als unwesentlich vernachlässigen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 10/110
3. Von-Neumann-Architektur
Von-Neumann-Architektur
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 11/110
3. Von-Neumann-Architektur
Von-Neumann-Architektur
John von Neumann4 wird die erste Veröentlichung des Konzept
einer universell programmierbaren Maschine zugeschrieben. Eine
solche Maschine besteht aus den Grundbausteinen:
Zentraleinheit (Central Processing Unit, CPU)
Speicher für die Befehle und Daten
EA- (Ein-/Ausgabe-) Einheiten.
Bus
CPU
Steuerwerk
Rechenwerk
Speicher
EA1
EA2
Anschlüsse für externe Geräte
(Tastaturen, Anzeigen, andere Rechner, ...)
John von Neumann: First Draft of a Report on the EDVAC. (PDF,
engl.; 421 kB) 1945
4
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 12/110
3. Von-Neumann-Architektur
Bus
CPU
Steuerwerk
Rechenwerk
Speicher
EA1
EA2
Anschlüsse für externe Geräte
(Tastaturen, Anzeigen, andere Rechner, ...)
Die CPU holt nacheinander je einen Befehl aus dem
Speicher, holt die Daten dazu, führt den Befehl aus, schreibt
das Ergebnis in den Speicher.
Der Speicher ist eine Tabelle adressierbarer Plätze mit fester
Bitanzahl je Speicherplatz.
Ein-/Ausgabeeinheiten sind aus Rechnersicht schreib- und /
oder lesbare Speicherplätze, auf deren Werte auÿer der CPU
auch externe Einheiten zugreifen können.
Die Funktionseinheiten sind über Busse verbunden, die sich
in Steuer-, Adress-, Befehls- und Datenbusse unterteilen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 13/110
3. Von-Neumann-Architektur
Abarbeitung einer Befehlsfolge5
Speicher (-bereich) für Befehle
CPU
Speicher (-bereich) für Daten
Adr.
Wert
Adr.
Wert
Befehl
Daten
..000
..000 10100 0000 0001
10001100
..001
..001 10101 0001 0011
11100100
BefehlsDaten- ..010
..010 10100 0011 0010
10010100
adresse
adresse
..011 01110 0010 0001
..011
10110100
...
...
...
...
op o1+ea o2
Informationsfluss über die Busse
Der Prozessor wiederholt fortlaufend:
Befehl aus dem Befehlsspeicher holen.
Befehl decodieren.
Operanden aus dem Datenspeicher holen.
Die Operation ausführen.
Das Ergebnis schreiben.
5
Auf einem ktiven Rechnermodell.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
o1 Adresse
Operand 1
o2 Adresse
Operand 2
ea Ergebnisadresse
op Operation
10100 Addition
10101 Subtraktion
...
...
21. Januar 2016 14/110
3. Von-Neumann-Architektur
Abarbeitung des ersten Befehls
Befehlsadresse ..000 senden und Befehlswort 101.. holen:
Adr.
..000
..001
..010
..011
...
10100
10101
10100
01110
Wert
0001
0001
0011
0010
...
0000
0011
0010
0001
wiederhole immer:
hole Befehl
decodiere Befehl
Befehls- hole Operanden
adresse
Ausführen
..000
Ergebnis schreiben
Befehl
Decodieren des Befehlsworts:
wiederhole immer:
hole Befehl
decodiere Befehl
hole Operanden
Ausführen
Ergebnis schreiben
10100 0001 0000
gesamtes Befehlswort
10100
Operationscode Addion:
Adresse Summand 1 und Summe:
0001
0000
Adresse Summand 2:
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 15/110
3. Von-Neumann-Architektur
Ersten Summanden von Adresse 0000 lesen:
wiederhole immer:
Datenadresse
hole Befehl
decodiere Befehl
..000
hole Operanden
Daten
Ausführen
Ergebnis schreiben 10001100
Adr.
..000
..001
..010
..011
...
Wert
10001100
11100100
10010100
10110100
...
Zweiten Summanden von Adresse 0001 lesen:
wiederhole immer:
Datenadresse
hole Befehl
decodiere Befehl
..001
hole Operanden
Daten
Ausführen
Ergebnis schreiben 11100100
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
Adr.
..000
..001
..010
..011
...
Wert
10001100
11100100
10010100
10110100
...
21. Januar 2016 16/110
3. Von-Neumann-Architektur
Addition ausführen:
wiederhole immer:
hole Befehl
decodiere Befehl
hole Operanden
Ausführen
Ergebnis schreiben
10001100
+ 11100100
(1) 01110000
Ergebnis auf Adresse 0000 schreiben:
Datenwiederhole immer:
adresse
hole Befehl
..000
decodiere Befehl
hole Operanden
Daten
Ausführen
Ergebnis schreiben 01110000
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
Adr.
..000
..001
..010
..011
...
Wert
01110000
11100100
10010100
10110100
...
21. Januar 2016 17/110
3. Von-Neumann-Architektur
Abarbeitung des nächsten Befehls
Nach Abarbeitung des Additionsbefehls wird der Befehlszähler
weitergeschaltet und das nächste Befehlswort geholt:
10101 0001 0011
gesamtes Befehlswort
Operationscode Subtraktion: 10101
Adresse Minuend und Ergebnis:
0001
0011
Adresse Subtrahend:
Was passiert in den Folgeschritten?
Lade Operand 1:
Adresse:
Lade Operand 2:
Adresse:
Operation:
Schreibe Ergebnis:
Hole Befehlswort:
Adresse:
Adresse:
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
Wert:
Wert:
Wert:
Wert:
21. Januar 2016 18/110
4. RISC-Prozessor
RISC-Prozessor
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 19/110
4. RISC-Prozessor
RISC-Prozessoren
Die meisten in den letzten 30 Jahren entwickelten Prozessoren
haben eine sog. RISC-Architektur. RISC ist ein Akronym für
Reduced Instruction Set Computer. Die Befehlssätze sind auf
Befehle reduziert, die sich mit einer oder wenigen
Register-Transfer-Funktionen nachbilden lassen. Komplexere
Operationen aus vielen hintereinander auszuführenden
RT-Operationen bildet der Compiler durch Befehlsfolgen nach.
Komplexen Operationsfolge, die auf älteren Prozessoren ein
Befehl war und für die ein RISC-Prozessor 3 Befehle braucht:
Variablenwert in ein Arbeitsregister kopieren,
Registerinhalt um eins erhöhen und
geänderten Registerinhalt zurückschreiben.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 20/110
4. RISC-Prozessor
1. Verarbeitungswerk
Verarbeitungswerk
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 21/110
4. RISC-Prozessor
1. Verarbeitungswerk
Das Verarbeitungswerk
In einem RISC-Prozessor besteht das Verarbeitungswerk aus
einem Satz von (meist 32) Registern, einem Rechenwerk und
einem Statusregister.
Operanden- und
Ergebnisadressen
Registersatz
R31
....
R1
Statusregister
1. Operand
2. Operand
Ergebnis
Rechenwerk
R0
5 5 5
Konstante
als 2. Operand
Operationscode
Befehlswort aus dem Befehlsspeicher
Der Registersatz erlaubt das zeitgleiche Lesen von zwei
Operanden und das Schreiben eines Ergebnisses.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 22/110
4. RISC-Prozessor
Operanden- und
Ergebnisadressen
1. Verarbeitungswerk
Registersatz
R31
....
R1
Statusregister
1. Operand
2. Operand
Ergebnis
Rechenwerk
R0
5 5 5
Konstante
als 2. Operand
Operationscode
Befehlswort aus dem Befehlsspeicher
Das Rechenwerk führt eine durch den Operationscode
ausgewählte Operation aus. Der zweite Operand kann auch
eine Konstante sein, die im Befehlswort steht.
Das Statusregister speichert Zusatzdaten zum Ergebnis:
den Übertrag von Additionen und Subtraktionen für
Nachfolgeoperationen,
>0, =0, ... für nachfolgende bedingte Sprünge,
...
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 23/110
4. RISC-Prozessor
Operanden- und
Ergebnisadressen
1. Verarbeitungswerk
Registersatz
R31
....
R1
Statusregister
1. Operand
2. Operand
Ergebnis
Rechenwerk
R0
5 5 5
Konstante
als 2. Operand
Operationscode
Befehlswort aus dem Befehlsspeicher
Für die Befehlsausführung mit einer (wenigen) RT-Funktionen
müssen alle Befehlsbestandteile (Adressen, Op-Code und
Konstante in ein Befehlswort passen6 . Typ. Befehlsaufbau:
32 Bit Befehlswort: 3×5 Bits für Adressen, 6-Bit Op-Code,
alternativ 16-Bit-Konstante statt einer 5-Bit-Adresse.
16 Bit Befehlswort: 2×5 Adressbits7 , 6-Bit Op-Code; bzw.
1×4 Adressbits, 4-Bit-Op-Code, 8-Bit-Konstante.
6
7
Damit das Befehlswort mit einem Speicherzugri gelesen werden kann.
Zieladresse fest oder gleich einer der Operandenadressen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 24/110
4. RISC-Prozessor
2. Speicherzugri
Speicherzugri
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 25/110
4. RISC-Prozessor
2. Speicherzugri
Datenspeicher
Die 32 Arbeitsregister sind für die meisten Aufgaben zu
wenig. Erweiterung um einen schreib- und lesbaren
Blockspeicher (RAM).
Ein RAM hat Adress- und Steuereingänge sowie Datenanschlüsse und wird als programmierbare Tabelle modelliert.
Zum Lesen wird die Adresse und der Steuercode für Lesen
angelegt und am Datenanschluss die Daten übernommen.
Zum Schreiben werden die Adresse, die Daten und der
Steuercode für Schreiben angelegt.
Speicher als Tabelle
Adresse
Daten
..000 0110 1000
..001 0101 1101
..010 1100 1000
...
...
Leseoperation
dat ← mem(adr)
RAM
adr
dat
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
Schreiboperation
mem(adr) ← dat
RAM
adr
dat
21. Januar 2016 26/110
4. RISC-Prozessor
2. Speicherzugri
Ladeoperation
Operanden- und
Ergebnisadressen
R31
....
R1
R0
Registersatz
1. Operand
2. Operand
Statusregister
Rechenwerk
Ergebnis
Op.code
Befehlswort aus dem Befehlsspeicher
5 5 5
RAM
Konstante
als 2. Operand
RAMAdresse
gelesene
Daten
Das Rechenwerk bildet die Adresse, z.B. Durchreichen eines
Registerinhalts, Addition von zwei Registerinhalten oder
Registerinhalt plus Konstante.
Der gelesene Wert wird in das Ergebnisregister geschrieben.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 27/110
4. RISC-Prozessor
2. Speicherzugri
Speicheroperation
Operanden- und
Ergebnisadressen
R31
....
R1
R0
Registersatz
1. Operand
Statusregister
2. Operand
Rechenwerk
3. Operand
Op.code
Befehlswort aus dem Befehlsspeicher
5 5 5
RAM
Konstante
als 2. Operand
RAMAdresse
zu schreibende Daten
Wie Ladeoperation, nur dass die Ergebnisadresse für die
Auswahl eines dritten Operanden verwendet wird, den zu
speichernden Wert.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 28/110
4. RISC-Prozessor
2. Speicherzugri
EEPROM
Ein RAM und auch die Prozessorregister verlieren ihre
Daten bei Abschaltung der Versorgungsspannung. Moderne
Rechner haben deshalb oft einen zusätzlichen nicht
üchtigen Speicher, einen batteriegestützten RAM oder
einen EEPROM (Electrical Programmable and Erasable
Read Only Memory).
Ein EEPROM unterscheidet sich von einem RAM darin,
dass das Schreiben tausende Zeitschritte (Takte) benötigt.
EEPROMs werden deshalb vom Rechner wie Ein- und
Ausgabegeräte angesprochen, d.h. über EA-Register (siehe
später Foliensatz 3).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 29/110
4. RISC-Prozessor
2. Speicherzugri
Befehlsspeicher
Der Befehlsspeicher wird bei Programmabarbeitung nur gelesen.
Moderne Mikrokontroller verwenden dafür vorzugsweise
Flash-Speicher. Ein Flash-Speicher ähnelt in seiner Funktion
einem EEPROM, nur werden beim Löschen groÿe
Speicherbereiche statt einzelne Worte auf einmal gelöscht.
Ansteuerung zur Programmierung wie ein
Ein-/Ausgabegerät.
Zur Programmabarbeitung Adressierung durch den
Befehlszähler, der nach jedem Schritt (im Normalfall) um
eins erhöht wird:
Befehlszähler
+1
Befehlspeicher
PC
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
Befehlswort
21. Januar 2016 30/110
4. RISC-Prozessor
3. Sprungbefehle
Sprungbefehle
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 31/110
4. RISC-Prozessor
3. Sprungbefehle
Steuerung des Kontrollusses
Wenn ein Rechner nur Befehle nacheinander abarbeiten könnte,
wäre jedes Programm nach wenigen Sekunden zu Ende. Die
mehrfache Abarbeitung von Befehlsfolgen verlangt Fallunterscheidungen, Schleifen und Unterprogrammaufrufe, nachbildbar
durch unbedingte und bedingte Sprünge im Verarbeitungsuss.
Schleife
Fallunterscheidung
Arbeite, wenn b wahr Wiederhole soist, eine sonst eine
lange b wahr ist
andere Befehlsfolge ab. eine Befehlsfolge.
b̄
b
bedingter
Sprung
unbedingter
Sprung
b
b̄ bedingter
Sprung
unbedingter
Sprung
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
Unterprogrammaufruf
Füge eine Befehlsfolge ab einer anderen Adresse ein.
Unterprogrammaufruf (Sprung)
Rücksprung
21. Januar 2016 32/110
4. RISC-Prozessor
3. Sprungbefehle
Register-Transfer-Operationen bei Sprüngen
Absoluter Sprung:
PC ← Rr1
relativer Sprung
PC ← PC + 1 + Konstante
bedingter Sprung
wenn b dann PC ← PC + 1 + Konstante
sonst PC ← PC + 1
Unterprogrammaufruf:
Rd2 ← PC + 1; PC ← Rr1
Rücksprung aus einem Unterprogramm:
PC ← Rr3
Rr1 Register, in das zuvor das Sprungziel geladen wird, Rd2 Register, in dem die Rücksprungadresse gespeichert wird; Rr3 Register mit der Rücksprungadresse).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 33/110
4. RISC-Prozessor
3. Sprungbefehle
Sprungwerk
Operanden- und
Ergebnisadressen
R31
....
R1
R0
5 5 5
Registersatz
1. Operand
Rücksprungadresse
Konstante
Statusregister
Rechenwerk
PC
+1
Befehlsadresse +1
Operationscode
Befehlswort aus dem Befehlsspeicher
8
Bei absoluten Sprüngen ist der 1. Operanden des Rechenwerks ein Registerinhalt, bei relativen Sprüngen Befehlsadresse +1. Das Zielregister ist der Befehlszähler (PC8 ).
Operationen sind unverändertes Durchreichen des ersten
Operanden oder Addition der Konstanten.
Program Counter.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 34/110
4. RISC-Prozessor
Operanden- und
Ergebnisadressen
R31
....
R1
R0
5 5 5
3. Sprungbefehle
Registersatz
1. Operand
Rücksprungadresse
Konstante
Statusregister
Rechenwerk
PC
+1
Befehlsadresse +1
Operationscode
Befehlswort aus dem Befehlsspeicher
Bei bedingten Sprüngen sind die Bedingungen, ob oder ob
nicht addiert wird, Bitwerte aus dem Statusregister, die
anzeigen, ob das vorherige Ergebnis null, gröÿer null etc. war.
Bei Unterprogrammaufrufen wird zusätzlich die Folgeadresse
als Rücksprungadresse gespeichert.
Komplexe Operationen wie das Ablegen und Zurückladen
der Rücksprungadresse auf und vom Stack oder der Sprung
zu einer Adresskonstanten verlangen Befehlsfolgen.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 35/110
4. RISC-Prozessor
4. Befehlssatz
Befehlssatz
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 36/110
4. RISC-Prozessor
4. Befehlssatz
Typische Beispielbefehle
Der Befehlssatz beschreibt für alle Befehlsworte die Operation, die
ausgeführt wird. Die Lehrveranstaltung verwendet den AVRBefehlssatz9 . Befehlswortgröÿe 16 Bit. Einige Beispielbefehle:
Operation
Op.-Code
Assembler
Rd←I/O(A) (Eingabe)
1011 0AAd dddd AAAA
in Rd, A
I/O(A) ←Rr (Ausgabe)
1011 1AAr rrrr AAAA
out A, Rd
Rd← 0 (Register löschen)
Rd← 0xFF (Register setzen)
PC←PC+k+1 (relativer Sprung)
PC←PC+k+1 (rel. UP-Aufruf(3) )
I(4) ←0 (Interrupts aus)
0010 01dd dddd dddd(1)
1110 1111 dddd 1111(2)
1100 kkkk kkkk kkkk
1101 kkkk kkkk kkkk
1001 0100 1111 1000
clr Rd
ser Rd
rjmp k
rcall k
cli
A I/O-Adresse 0..63; k Sprungdistanz -2024..2047; (1) EXOR mit
gleichen Registern; (2) nur für R16 bis R31; (3) plus Rücksprungadresse
auf Stack; (4) Spezielles EA-Registerbit.
9
Programmieren in C und Reengineering des Maschinenprogramms.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 37/110
4. RISC-Prozessor
5. Erstes Beispielprogramm
Erstes Beispielprogramm
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 38/110
4. RISC-Prozessor
5. Erstes Beispielprogramm
Testobjekt Mikrorechnerbaugruppe
Ein Mikrokontroller ist zwar ein kompletter Rechner, aber ohne
Tastatur und Bildschirm.
JA
4 Taster
obere Reihe
(PortA 0..3)
Anschluss von
4 Tasten
8 Leuchtdioden
JB
8 Leuchtdioden
(PortC 0..7)
Taster
Anschluss
Leuchtdiode
Anschluss
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
BT1
PA0
LD0
PC0
BT2
PA1
LD1
PC1
BT3
PA2
···
···
BT4
PA3
LD7
PC7
21. Januar 2016 39/110
4. RISC-Prozessor
5. Erstes Beispielprogramm
Programmierung der Ports
Der in der Übung verwendete Mikrorechner ATmega2560 hat
12 Ports. Jeder Port x ∈ {A, B, ..., L} hat drei Register:
Richtungsregister: DDRx
Ausgaberegister: PORTx
Eingaberegister: PINx
Eingänge: DDx, Bit i null lassen. Wert von PINx lesen.
Ausgänge: DDx, Bit i eins setzen. Wert auf PORTx
schreiben.
IO-Adressen der Port-Register des ATmega2560:
A
0 / 0x20
PIN
DDR 1 / 0x21
PORT 2 / 0x22
B
3 / 0x23
4 / 0x24
5 / 0x25
C
D
E
6 / 0x26 9 / 0x29 0xC / 0x2C
7 / 0x27 0xA / 0x2A 0xD / 0x2D
8 / 0x28 0xB / 0x2B 0xE / 0x2E
Die zweite um 0x20 gröÿere 16-Bit Adresse ist die für normale
Lese-/Schreiboperationen des Datenspeichers.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 40/110
4. RISC-Prozessor
5. Erstes Beispielprogramm
Das erste Programmbeispiel
C-Programm, das fortlaufen die Tasterwerte liest und auf die
LEDs ausgibt:
//
//
//
//
Port A als Eingänge (Schalter)
Port C als Ausgänge (LEDs)
Endlosschleife
Kopiere von Port A nach Port C
Aufgaben für die Laborübung:
Programmieren, Übersetzen.
Anschauen des disassemblierten Programms.
Schrittweise Programmabarbeitung.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 41/110
4. RISC-Prozessor
5. Erstes Beispielprogramm
Das disassemblierte Hauptprogramm
Kommentare zu Start-Up-Code auf der nächsten Folie:
Initialisierung des Statusregisters SREG (EA-Adresse 0xFE) mit null,
des Registers R1 mit null, des Stackpointers SP (Adresse 0xFE,0xFD)
mit 0x21FF. Aufruf des Hauptprogramms auf Adresse 0x7D.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 42/110
4. RISC-Prozessor
5. Erstes Beispielprogramm
Start-Up-Code
Aufruf des Hauptprogramms
...7D Beginn des Hauptprogramms
falls das Hauptprogramm mit einem Rücksprung endet
Sprung zu sich selbst
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 43/110
4. RISC-Prozessor
6. Aufgaben
Aufgaben
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 44/110
4. RISC-Prozessor
6. Aufgaben
Aufgabe 1.1
Speicher (-bereich) für Befehle
CPU
Datenspeicher
Adr.
Adr.
Wert
Wert
Befehl
Daten
..000 10100 0000 0001
..000 01110000∗
..001 10101 0001 0011
..001 00110000∗
BefehlsDaten..010 10100 0011 0010
..010 10010100
adresse
adresse
..011 01110 0010 0001
..011 10110100
...
...
...
...
op o1+ea o2
∗
von den beiden ersten Befehlen
berechnete Werte
Befehlszähler
Welche Operation ist im dritten Befehl auf Folie 14 codiert?
Welche Adresse haben die Operanden?
Was passiert in den Folgeschritten nach dem Holen des
Befehlswortes?
G. Kemnitz
für Informatik,
TU Clausthal
Füllen· Institut
Sie hierzu
die Tabelle
auf(RA-F1)
der nächsten Folie aus. 21. Januar 2016 45/110
4. RISC-Prozessor
Lade Operand 1:
Lade Operand 2:
Operation:
Schreibe Ergebnis:
Hole Befehlswort:
6. Aufgaben
Adresse:
Adresse:
Wert:
Wert:
Adresse:
Adresse:
Wert:
Wert:
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 46/110
4. RISC-Prozessor
6. Aufgaben
Aufgabe 1.2
Suchen Sie in der AVR-Befehlssatzbeschreibung AVR_Instructions.pdf auf der Web-Seite der Vorlesung die Befehle für
die Addition zweiter Registerinhalte (add)
die bitweise ODER-Verknüpfung von zwei Operanden (or)
die Multiplikation zweier Registerinhalte (mul).
Wie lauten für diese Befehle die Operationscodes und in welchen
Bits des Befehlsworts stehen die Adressen der Operanden?
Operationscode
Adresse 1. Operand∗
Adresse 2. Operand∗
add
or
mul
(∗ Bitnummern im Befehlswort, z.B. Bit 9 bis 5).
In welche Register werden welche Ergebnisteile gespeichert?
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 47/110
5. Verarbeitungswerke
Verarbeitungswerke
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 48/110
5. Verarbeitungswerke
RT-Funktionen und Verarbeitungswerke
Im RT- Modell werden aus Eingaben und Registerwerten die
Ausgaben und Registerfolgezustände gebildet.
Die Register stellen die Operanden bereit und tasten die
Ergebnisse ab.
Die Übernahmebedingungen sind Taktanken optional
UND-verknüpft mit Freigabesignalen.
Die Übergangsfunktionen zwischen den Registerzuständen
werden durch Verarbeitungswerke realisiert.
Register
Verarbei- Register
tungswerk
x’
y
y’
f (x)
x
T
Registerübernahme bei T =
Wert ohne Bedeutung
T
T
x
1
0
w1
w2
w3
x’
w0
y
f (w0 ) f (w1 )
y’
...
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
w1
f (w0 )
w2
w3
f (w2 )
f (w1 ) f (w2 )
21. Januar 2016 49/110
5. Verarbeitungswerke
Zeitverhalten von Verarbeitungswerken
Verarbeitungswerke (Gatterschaltungen, Rechenwerke, ...) sind
kombinatorische Schaltungen, die
Ausgaben aus Eingaben bilden,
selbst keine Zustände speichern und
eine Halte- und eine Verzögerungszeit10 haben.
th , td
x’
f (x)
x
y
Wert ungültig
y
w0
w1
w2
w3
td Verzögerungszeit
th Haltezeit
f (w0 ) f (w1 ) f (w2 )
Das Ergebnis muss bei Abtastung gültig sein11 .
Die Haltezeit ist die minimale Zeit, die die Ausgabe nach einer
Eingabeänderung unverändert bleibt und die Verzögungszeit ist die maximale
Zeit nach Anlegen einer neuen Eingabe, nach der die Ausgabe verfügbar ist.
11
Wird im Weiteren immer als erfüllt betrachtet.
10
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 50/110
5. Verarbeitungswerke
1. Gatterschaltungen
Gatterschaltungen
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 51/110
5. Verarbeitungswerke
1. Gatterschaltungen
Logikgatter
logische Funktion
Treiber (Identität):
y←x
UND:
y ← x0 ∧ x1 ∧ . . .
ODER:
y ← x0 ∨ x1 ∨ . . .
XOR:
y ← x0 ⊕ x1 ⊕ . . .
Multiplexer:
wenn s = 0
dann y ← x0
sonst y ← x1
Symbol
x
y
x0
xn−1
..
.
&
y
x0
xn−1
..
.
≥1
y
x0
xn−1
..
.
=1
y
0
1
y
x0
x1
s
logische Funktion
Symbol
Inverter:
y ← x̄
x
NAND:
y ← x0 ∧ x1 ∧ . . .
NOR:
y ← x0 ∨ x1 ∨ . . .
XNOR:
y ← x0 ⊕ x1 ⊕ . . .
allg. Funktion:
y ← f (x)
y
x0
xn−1
..
.
&
y
x0
xn−1
..
.
≥1
y
x0
xn−1
..
. ==
y
..
.
xn−1
x0
f ()
.. y0
. ym−1
n Anzahl der Eingabebits; m Anzahl der Ausgabebits.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 52/110
5. Verarbeitungswerke
1. Gatterschaltungen
Schaltungen aus Gattern
Aus Gattern werden komplexere Funktionsbausteine
zusammengesetzt, z.B. Multiplexer:
x0
G1
s
x1
s̄
G2
z
& 0 G4
≥1
G3
&
Eingabe
y
z1
x0
x1
s
y
Zeit
1
0
1
0
1
0
1
0
s x1 x0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
Ist-Funktion Soll-Funktion
wenn s = 0
s̄ z0 z1 y dann y = x0
sonst y = x1
0
1
0
1
0
1
0
1
Beim Zeichnen der Zeitabläufe werden in dieser Vorlesung die
Halte- und Verzögerungszeiten sowie ungültig vernachlässigt.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 53/110
5. Verarbeitungswerke
1. Gatterschaltungen
Volladdierer
Ein Volladdierer bildet die Summe von drei Bits. Das Ergebnis
hat den Wertebereich 0 bis 3 und wird als 2-Bit-Vektor
dargestellt:
x0
x1
G1
z0 G2
=1
=1
x2
&
&
y0
G4
≥1
x0
x1
x2
y0
y1
Zeit
y1
1
0
1
0
1
0
1
0
1
0
Eingabe Ist-Funktion Soll-Funktion
x2 + x1 + x0
x 2 x 1 x 0 z0 y 1 y 0
dez
bin
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 54/110
5. Verarbeitungswerke
2. Bitverarbeitung
Bitverarbeitung
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 55/110
5. Verarbeitungswerke
2. Bitverarbeitung
Logikoperationen in Rechnern
Rechnerbefehle führen die logischen Grundoperationen (UND,
ODER, EXOR und Negation) bitweise aus. Sie dienen zum
Setzen, Löschen, Invertieren einzelner Bits und
zur Programmierung logischer Verknüpfungen.
Logikbefehle des ATmega-Befehlssatzes:
Operation
Rd←Rd∧Rr
Rd←Rd∧K
Rd←Rd∨Rr
Rd←Rd∨K
Rd←Rd⊕Rr
RD ← Rd
Op.-Code
0010 00rd dddd rrrr
0111 kkkk dddd kkkk
0010 10rd dddd rrrr
0110 kkkk dddd kkkk
0010 10rd dddd rrrr
1001 010d dddd 0000
Assembler
and Rd, Rr
andi Rd∗ , K
or Rd, Rr
ori Rd∗ , K
eor Rd, Rr
com Rd
(Rd Zielregister und erster Operand; Rr 2. Operand; K 8-Bit-Konstante, ∗ Nur anwendbar auf Register R16 bis R31).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 56/110
5. Verarbeitungswerke
2. Bitverarbeitung
Beispielprogramm
Welche Werte werden den Register r16 und r17 zugewiesen?
Logikprogramm: ist eine Marke, ein Textsymbol für eine
Adresse. Mit der Denition als global ist die Adresse auch in
der Datei mit dem Hauptprogramm bekannt und in
Funktionsaufrufen als Unterprogrammadresse nutzbar.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 57/110
5. Verarbeitungswerke
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
2. Bitverarbeitung
21. Januar 2016 58/110
5. Verarbeitungswerke
2. Bitverarbeitung
Verschiebung und Rotation
logische Verschiebung
uint.. x,y; y = x >> 2;
arithmetische Verschiebung
Rotation
int8 t x,y; y = x >> 2;
2 Stellen nach rechts
x: 0
0 1 0 0 1 1 0 1
x:
1 1 0 0 1 1 0 1
x:
0 1 0 0 1 1 0 1
y:
0 0 0 1 0 0 1 1
y:
1 1 1 1 0 0 1 1
-0b1101 = -13
y:
0 1 0 1 0 0 1 1
(u)int8 t x,y; y = x << 2;
x: 0 1 0 0 1 1 0 1
y: 0 0 1 1 0 1 0 0
0
Verschiebung mit Erhalt
des Vorzeichens.
Im Beispiel:
0xCD >> 2
entspricht: -0x33/4
exakt -12,75; ohne
Nachkommastellen -13
2 Stellen nach links
x:
0 1 0 0 1 1 0 1
y:
0 0 1 1 0 1 0 0
Auüllen der freiwerdenden Bitstellen mit
Logische Verschiebung: null.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 59/110
5. Verarbeitungswerke
2. Bitverarbeitung
Arithmetische Verschiebung: Vorzeichenbits12 .
Rotation: rausgeschobene Bits.
Unser Beispielprozessor kann
8 Bit um eine Stell nach rechts/links verschieben und
Halbbytes tauschen (Rotation um 4 stellen).
vor
nach
vor
nach
vor
nach
12
Linksverschiebung
b7 b6 b5 b4 b3 b2 b1 b0 0
b7 b6 b5 b4 b3 b2 b1 b0 0
Rotation links
b7 b6 b5 b4 b3 b2 b1 b0 C
Rechtsverschiebung
0 b7 b6 b5 b4 b3 b2 b1 b0
0 b7 b6 b5 b4 b3 b2 b1 b0
Rotation rechts
C b7 b6 b5 b4 b3 b2 b1 b0
b7 b6 b5 b4 b3 b2 b1 b0 C
Tausch der Halbbytes
b7 b6 b5 b4 b3 b2 b1 b0
b3 b2 b1 b0 b7 b6 b5 b4
C b7 b6 b5 b4 b3 b2 b1 b0
8-Bit Register
Übertragsbit (C, Carry)
bei arithmetischer Versch.
Siehe später vorzeichenbehafteter Zahlen ab Folie 73).
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 60/110
5. Verarbeitungswerke
2. Bitverarbeitung
ATmega-Verschiebebefehle
Operation
Operationscode
Assembler
C
0
1001 0100 1000 1000
cls
C
1
1001 0100 0000 1000
sec
C
b7 b6 b5 b4 b3 b2 b1 b0
0
0000 11dd dddd dddd
lsl Rd
0
b7 b6 b5 b4 b3 b2 b1 b0
C
1001 010d dddd 0110
lsr Rd
b7 b6 b5 b4 b3 b2 b1 b0
C
1001 010d dddd 0101
asr Rd
C
b7 b6 b5 b4 b3 b2 b1 b0
C
1001 11dd dddd dddd
rol Rd
C
b7 b6 b5 b4 b3 b2 b1 b0
C
1001 010d dddd 0111
ror Rd
1001 010d dddd 0010
swap Rd
b7 b6 b5 b4 b3 b2 b1 b0
(cls Clear Carry Flag; sec Set Carry Flag; lsl Logical Shift Left,
identisch mit add Rd, Rd; rol Rotate Left, identisch mit adc Rd, Rd)
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 61/110
5. Verarbeitungswerke
2. Bitverarbeitung
Wie werden C-Verschiebeoperation, z.B.
uint16_t a, b;
...
a = b << 2;
durch Prozessorbefehle nachgebildet?
Ausschnitt aus dem disassemblierten Programm:
;
;
;
;
C: b7
C: 15
C: b6
C: 14
; r24 ← b Byte 0
; r25 ← b Byte 1
r24: b6 b5 b4 b3 b2 b1
r25: 14 13 12 11 10 b9
r24: b5 b4 b3 b2 b1 b0
r25: 13 12 11 10 b9 b8
; a Byte 1 ← r25
; a Byte 0 ← a r24
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
b0
b8
0
b7
0
b7
0
b6
21. Januar 2016 62/110
5. Verarbeitungswerke
2. Bitverarbeitung
Für die Verschiebung um vier verwendet der Compiler den
Swap-Befehl:
uint16_t a, b;
C
Zielregister
b7 b6 b5 b4 b3 b2 b1 b0
b15 b14 b13 b12 b11 b10 b9 b8
b 2 b 1 b0
0
0
0
0
0
b10 b9 b8 b7 b6 b5 b4 b3
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 63/110
5. Verarbeitungswerke
Block-Shifter
32-Bit-Prozessoren haben
oft einen Blockshifter zur
Ausführung von Verschiebeoperationen:
(u)int32_t a, b
int8_t s;
...
a = b << s;
(0 ≤ s < 32) in einem
Verschiebung
0 oder 1
0
bindungen (Multiplexer), Block-Shifter
Verschiebung
0 oder 2
Verschiebung
0 oder 4
1
0
0
1
0
0
1
0
y0
1
0
0
1
0
0
1
0
y1
1
0
1
0
0
1
0
y2
1
0
1
0
0
1
0
y3
1
0
1
0
1
0
y4
x0
x1
x2
Schritt.
⇒ umschaltbare Ver-
2. Bitverarbeitung
x3
x4
s0
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
s1
s2
21. Januar 2016 64/110
5. Verarbeitungswerke
2. Bitverarbeitung
Spezielle Bitverarbeitungsoperationen
Viel Prozessoren haben Spezialbefehle, die ihen in bestimmten
Anwendungen Geschwindigkeitsvorteile verschaen.
ATmega-Prozessoren haben z.B. die Befehle:
sbi A, b ;
cbi A, b ;
bld Rd, b;
;
bst Rd, b;
(Set Bit I/O) setze Bit b in EA-Register A
(Clear Bit I/O) lösche Bit b in EA-Register A
(Bit LoaD) kopiere Bit b aus Register Rd in
das Statusbit T
(Bit STore) kopiere T nach Rd Bit b
Der Befehl
sbi 8, 3; setze Bit 3 in Port C
ersetzt z.B. eine Befehlsfolge:
in r16, 8
ori r16, 0b00001000
out 8, r16
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 65/110
5. Verarbeitungswerke
2. Bitverarbeitung
Das Kopieren von PINA, Bit 2 nach PORTB, Bit 7 verlangt mit
den allgemein üblichen Logikbefehlen eines 8-Bit Prozessors eine
Befehlsfolge von mindestens 8 Befehlen:
in r0, 0
swap r0
lsl r0
andi r0, 0b10000000
in r1, 5
andi r1, 0b01111111
or r0, r1,
out 5, r0
;
;
;
;
;
;
;
;
r0 ← PINA
Bit 2 nach Bit 6 tauschen
Bit 2 weiter nach Bit 7 schieben
alle anderen Bits null setzen
r1 ← PORTB
Bit 7 löschen
Registerinhalte zusammenfassen
PORTB ← r0
Mit den Spezialoperationen genügen fünf Befehle:
in r0, 0
in r1, 5
bld r0, 2
bst r0, 7
out 5, r0
;
;
;
;
;
r0 ← PINA
r1 ← PORTB
T ← r0, Bit 3
r1, Bit 5 ← T
PORTB ← r0
Nutzt der Compiler diese Spezialbefehle? Ausprobieren!
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 66/110
5. Verarbeitungswerke
2. Bitverarbeitung
Skip-Operationen (Bedingtes Überspringen)
Skip Operationen überprüfen eine Bedingung und überspringen
den nächsten Befehl, wenn die Bedingung erfüllt ist:
cpse
sbrc
sbrs
sbic
sbis
Rd, Rr;
Rr, b ;
Rr, b ;
A, b ;
A, b ;
Bedingung:
Bedingung:
Bedingung:
Bedingung:
Bedingung:
Rr gleich Rd
Bit b in Rr gleich null
Bit b in Rr gleich eins
Bit b in A gleich null
Bit b in A gleich eins
(Rr Prozessorregister; A Ein-/Ausgaberegister)
Mit Skip-Befehlen lässt sich das Kopieren von PINA, Bit 2 nach
PORTB, Bit 7 mit noch weniger Befehlen lösen:
sbis 0, 2;
cbi 5, 7 ;
sbic 0, 2;
sbi 5, 7 ;
wenn PINA, Bit 2 gleich 1, überspringe
lösche PORTB, Bit 7
wenn PINA, Bit 2 gleich 0, überspringe
setze PORTB, Bit 7
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 67/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Addierer, Subtrahierer
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 68/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Addierer
Die Addition ist eine der meist benötigten Operationen in einem
Rechner:
Additions- und Increment-Operationen im Programm,
(Schleifen-) Zähler,
Weiterschalten der Befehlsadresse, Skip-Operation und
relative Sprünge,
Indexrechnung für Feldzugrie, indirekte Adressierung mit
Verschiebung13 ,
Subtraktion als Addition mit dem negierten Subtrahenden,
gröÿer/kleiner-Vergleich als Subtraktion mit Auswertung des
Ergebnisvorzeichens.
13
Datenadresse gleich Registerinhalt plus Konstante im Befehlswort.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 69/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Algorithmus der Addition
0
+1
1
0
1
0
0
0
1
1
1
0
1 (−0 · 28 ) Erweiterung
1 (−1 · 28 ) zu vorzeichenbehaf(1) (1) (1)
1 0 0 0 (−1 · 28 ) tete Zahlen
0
0
1
0
0
1
Wiederhole für alle Bitstellen beginnend mit der
niederwertigsten
Addition der Ziern + Übertrag der vorherigen Stelle
(Funktion eines Volladdierers)
Addierer als Schaltung (im Beispiel für 4-Bit-Operanden):
s0
c0
a0
b0
x0 VA y0
x1
y1
x2
s1
c1
a 1 b1
x0 VA y0
x1
y1
x2
s2
c2
a 2 b2
x0 VA y0
x1
y1
x2
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
c3
a 3 b3
x0 VA y0
x1
y1
x2
s3
c4
21. Januar 2016 70/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Die Bitbreite eines Addierers ist skalierbar. In Rechnern
richtet sich die Breite nach den Operanden, für
Adressrechnungen Adressbusbreite, für die Addition von
Daten Datenbusbreite.
Das Ergebnis ist um das Übertragsbit gröÿer als der gröÿte
Operand. Speicherung des Übertrags im C (Carry-) Bit des
Statusworts.
ATmega hat einen Additionsbefehl mit und einen ohne
einlaufenden Übertrag:
Operation
C,Rd← Rd+Rr
C,Rd← Rd+Rr+C
Op.-Code
Assembler
0000 11rd dddd rrrr
0001 11rd dddd rrrr
add Rd, Rr
addc Rd, Rr
Bei Addition mehrerer Bytes werden die niederwertigen Bytes
mit add und die höherwertigen mit addc addiert.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 71/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Addition zweier 16-Bit-Zahlen
disassemblierter
Testbeispiel
Code der Anweisung
;
;
;
;
;
;
;
;
r18 ← b Byte 0
r19 ← b Byte 1
r24 ← c Byte 0
r25 ← c Byte 1
Addition Byte 0
Addition Byte 1
Speichere a Byte 1
Speichere a Byte 0
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
r18:
r19:
r24:
r25:
r24:
r25:
0x 32
0x 1A
0x 7A
0x 15
0x
0x
21. Januar 2016 72/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Vorzeichenbehaftete Summanden und Subtraktion
Statt durch Vorzeichen und Betrag werden vorzeichenbehaftete
Zahlen in Rechnern durch Stellenkomplement +1 dargestellt.
Mathematische Grundlage:
Das Stellenkomplement zu einer Zier bi ist die Dierenz zur
gröÿten darstellbaren Zier mit dem Wert B − 1:
b̄i = B − 1 − bi
(B Basis des Zahlensystems, für Dezimalzahlen B = 10).
Beispiel: 437 = 562
Zahl plus Stellenkomplement gleich gröÿte darstellbare Zahl.
Beispiel: 437 + 437 = 437 + 562 = 999
plus Eins gleich kleinste nicht darstellbare Zahl:
Z + Z̄ + 1 = B n
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 73/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Z + Z̄ + 1 = B n
Auösung nach −Z :
"
#
* nicht darstellbar
−Z = Z̄ + 1 − |{z}
Bn
∗
Die Zählreihenfolge bleibt, nur der Darstellungsbereich
verschiebt sich:
500
−1000
−500
998
−1000
−2
999
−1000
−1
0
1
2
3
498 499
nicht darstellbar
Addition ohne Wertebereichsbegrenzung
Addition modulo-B n
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 74/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Die Negation ist das Stellenkomplement plus 1:
−Z = Z̄ + 1
Die Subtraktion ist die Addition mit dem Stellenkomplement
plus 1:
Z1 − Z2 = Z1 + Z̄2 + 1
Das gilt für alle Stellensysteme: Dezimalsystem,
Binärsystem, ...
Vorteile Stellenkompl.+1 gegenüber Vorzeichen und Betrag:
Gleiche Zählreihenfolge für vorzeichenbehaftete und
vorzeichenfreie Zahlen (00, 01, ..., 99, 00, ...).
Die Addition und Subtraktion, die ja auf Mehrfachzählen
basieren, sind für Zahlen mit und ohne Vorzeichen gleich.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 75/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Zweierkomplement
Stellenkomplement für Binärzahlen mit führendem Bit gleich
Vorzeichenbit:
0102 + 0102 7→ 1002
100
Wert: −4
011
+1
0100∗
101
−3
110
−2
111
−1
000
0
001
1
010
+1
011
001
+1
010
000 invertierter Bitvektor
+1
001 Bitvektor des Betrags
010
2
011
3
∗
nicht mit drei
Bits darstellbar
Stellenkomplement für Binärziern: 0̄ 7→ 1; 1̄ 7→ 0
(Invertierung).
Wertebereichsüberlauf bei Übertrag C 6= Vorzeichenbit S :
gröÿte Zahl +1: 011...1+1 → 100...0, C = 0, S = 1
kleinste Zahl -1: 100...0+111...1→011...1, C = 1; S = 0
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 76/110
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Subtraktion zweier 16-Bit-Zahlen
disassemblierter
Code der Anweisung
;
;
;
;
r18
r19
r24
r25
←
←
←
←
b Byte 0
b Byte 1
c Byte 0
c Byte 1
Testbeispiel
r18:
r19:
r24:
r25:
r20:
; Subtraktion Byte 0 r20:
; Subtraktion Byte 1 r21:
r24:
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
0x A3
0x 31
0x 21
0x 10
0x r21: 0x
0x
0x
0x r25: 0x
21. Januar 2016 77/110
5. Verarbeitungswerke
4. Statusregister
Statusregister
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 78/110
5. Verarbeitungswerke
4. Statusregister
Das Statusregister
Operanden- und
Ergebnisadressen
Registersatz
R31
....
R1
Statusregister
1. Operand
2. Operand
Ergebnis
Rechenwerk
R0
5 5 5
Konstante
als 2. Operand
Operationscode
Befehlswort aus dem Befehlsspeicher
Das Statusregister speichert Zusatzdaten zum Ergebnis:
den Übertrag von Additionen und Subtraktionen für
Nachfolgeoperationen,
>0, =0, ... für nachfolgende bedingte Sprünge,
...
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 79/110
5. Verarbeitungswerke
4. Statusregister
Das Statusregister des ATmega2560:
Bitnummer:
Bitname:
7
I
6 5
T H
4
S
3 2
V N
1
Z
0
C
C Carry Flag, Übertrag.
Z Zero Flag: 1 bei Ergebnis null.
N Negative Flag (unsigned): 1 bei neg. Dierenz.
V Zweierkomplement Überlauf.
S (N ⊕ V ) Vorzeichen Zweierkomplement.
H Half Carry: Übertrag nach dem ersten Halbbyte.
T Transferbit: Zwischenspeicher für Bitkopieren.
I Globales Interrupt-Freigabebit.
Befehlsarten und ihr Einuss auf die Statusbits:
add, sub, ... setzen C, Z, N, V, S, H nach Ergebniswert.
Logische Op. setzen Z, N, S nach Ergebniswert und V=0.
Lade-, Speicher- und Sprungbefehle lassen die Statusbits
unverändert.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 80/110
5. Verarbeitungswerke
4. Statusregister
Compare-Befehle14 beeinussen nur Statusbits:
cp Rd, Rr; Rd - Rr, Flags: Z,C,N,V,S,H
cpc Rd, Rr; Rd-Rr-C, Flags: Z,C,N,V,S,H
cpi Rd, K; Rd - K
Flags: Z,C,N,V,S,H
Statusbits dienen als Bedingungen für Sprünge:
brbs b, k; Sprung, wenn Bit b in SREG eins ist.
brbc b, k; Sprung, wenn Bit b in SREG null ist.
Jeden dieser 16 Befehle gibt es auch mit speziellem Namen statt
der Nummer des zu testenden Statusbits:
breq
brne
brcs
brcc
...
k
k
k
k
;
;
;
;
BRanch
BRanch
BRanch
BRanch
if
if
if
if
EQual: Sprungbedingung Z=1
Not Equal: Sprungbed. Z=1
Carry Set: Sprungbed. C=1
Carry Clear: Sprungbed. C=0
(Weitere bedingte Sprünge siehe AVR-Befehlssatz auf der
Web-Seite oder auf Foliensatz 2).
14
Das sind Subtraktionen ohne Speichern der Dierenz in Rd.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 81/110
5. Verarbeitungswerke
5. Multiplikation, Division
Multiplikation, Division
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 82/110
5. Verarbeitungswerke
5. Multiplikation, Division
Multiplikation vorzeichenfreier Binärzahlen
(a3 · 23 + a2 · 22 + a1 · 21 + a0 · 20 ) · (b3 · 23 + b2 · 22 + b1 · 21 + b0 · 20 ) =
a3 b0 · 23 + a2 b0 · 22 + a1 b0 · 21 + a0 b0 · 20
a3 b1 · 24 + a2 b1 · 23 + a1 b1 · 22 + a0 b1 · 21
a3 b2 · 25 + a2 b2 · 24 + a1 b2 · 23 + a0 b2 · 22
6
a3 b3 · 2 + a2 b3 · 25 + a1 b3 · 24 + a0 b3 · 23
p7 p6
p5
p4
p3
p2
p1
p0
Eine Multiplikation ist nachbildbar aus:
m × n 1-Bit-Multiplikation (UND-Verknüpfungen) und
zeilen- und spaltenweisen Additionen mit Halb- und
Volladdierern.
Das kleinste Produkt ist 0 · 0 = 0. Das gröÿte Produkt ist
(2m − 1) · (2n − 1) = 2m+n − 2m − 2n + 1
und benötigt m + n Ergebnisbits.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 83/110
5. Verarbeitungswerke
b0
a0
a1
a2
a3
b1
5. Multiplikation, Division
b2
b3
p0
&
HA
&
&
&
VA
VA
HA
&
VA
VA
c
VA
&
VA
c
VA
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
&
s
p4
s
p5
c
&
VA
einer der längsten Pfade
p3
c
&
s
s
c
&
s
c
&
HA
s
c
&
s
p2
s
c
&
s
c
&
HA
s
c
&
&
p1
s
c
s
p6
c
p7
21. Januar 2016 84/110
5. Verarbeitungswerke
5. Multiplikation, Division
Der Schaltungsaufwand eines n × n-Bit Multiplizierers
wächst mit n2 .
Die Verzögerungszeit entlang des längsten Datenpfades, bis
das Ergebnis garantiert fertig gebildet ist, wächst nur mit n.
Ein n × n-Bit-Matrixmultiplizierer hat etwa die 2...3-fache
Verzögerung eines normalen n-Bit-Addierers15 .
Prozessoren haben deshalb oft einen Multiplizierer, der eine
Multiplikation in einem oder wenigen Takten ausführt.
ATmega-Multiplikationsbefehl für vorzeichenfreie Zahlen:
Operation
R1:R0←Rd · Rr
Op.-Code
Assembler
1001 11rd dddd rrrr
mul Rd, Rr
Wählbare Operandenregister. Das höherwertige Ergebnisbyte
wird immer in r1 und das niederwertige in r0 gespeichert.
Bei der Nachbildung durch bedingte Additionen wächst sowohl die Anzahl als auch die Dauer der Additionen mit n, d.h. die Gesamtdauer mit n2 .
15
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 85/110
5. Verarbeitungswerke
5. Multiplikation, Division
Nachbildung 16-Bit- durch 8-Bit Multiplikationen
Zerlegung der Operanden und des Ergebnisses in Polynome von
einzelnen Bytes ai , bi , ... :
a3 · 224 + a2 · 216 + a1 · 28 + a0 = b1 · 28 + b0 · c1 · 28 + c0
Berechnung der Ergebnisbytes:
a0
∗
a2 a1
a∗3 a2
a3
= L (b0 · c0 )
= H (b0 · c0 ) + L (b1 · c0 ) + L (b0 · c1 )
(1)
= a2 + H (b1 · c0 ) + H (b0 · c1 ) + L (b1 · c1 )
= a3 + H (b1 · c1 )
H/L(. . .) höher-/niederwertiges Produktbyte.
a∗i : Zweites Byte zur Aufnahme der Überträge.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 86/110
5. Verarbeitungswerke
5. Multiplikation, Division
Gegeben sei folgendes C-Programm, das Watch-Fenster mit den
Variablenadressen und eine Tabelle mit einer
Adress-Byte-Zuordnung:
Adresse 0x200 0x201 0x202 0x203 0x204 0x205 0x206 0x207
b0
b1
c0
c1
a0
a1
a2
a3
Byte
Der disassemblierte Programm sollte enthalten:
vier Ladeoperationen für Operandenbytes in Register,
vier 8 × 8-Bit Multiplikationen,
mehrere Additionen und
vier Speicheroperationen für Ergebnisbytes.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 87/110
5. Verarbeitungswerke
5. Multiplikation, Division
r20 ← b0
r21 ← b1
r18 ← c0
r19 ← c1
r1:r0 ← b0 · c0
r25 ← H(b0 · c0 ), r24 ← L(b0 · c0 )
r1:r0 ← b0 · c1
r25 ← H(b0 · c0 ) + L(b0 · c1 )
r1:r0 ← b1 · c0
r25 ← H(b0 · c0 ) + L(b0 · c1 ) + L(b1 · c0 )
r26 ← 0
r27 ← 0
a0 ← L(b0 · c0 )
a1 ← H(b0 · c0 ) + L(b0 · c1 ) + L(b1 · c0 )
a2 = 0
a3 = 0
Nicht das erwartete Ergebnis! C berechnet ein 16-Bit Ergebnis
und hängt vorn 2 Nullen an.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 88/110
5. Verarbeitungswerke
5. Multiplikation, Division
Multiplikation für Vorzeichenzahlen
(A − an−1 · 2n ) · (B − bn−1 · 2n )
= A · B − (A · bn−1 + B · an−1 ) · 2n
+
an−1 · bn−1 · 22n
|
{z
}
mit 2·n Bits nicht darstellbar
Zusätzliche bedingte Subtraktion der um n Bit linksverschobenen
Faktoren vom vorzeichenfreien Produkt, wenn das jeweils
andere Vorzeichenbit eins ist.
Der AVR-Befehlssatz hat Befehle für die Multiplikationen
vorzeichenbehafteter Zahlen, die allerdings der Compiler nicht
unbedingt nutzt:
Operation
R1:R0←Rd(s) · Rr(s)
R1:R0←Rd(s) · Rr(u)
(u)
Op.-Code
Assembler
1000 0010 dddd rrrr
muls Rd, Rr
1000 0011 0ddd 0rrr(2) mulsu Rd, Rr
vorzeichenfrei (unsigned); (s) vorzeichenbehaftet (signed);
Rd, Rr nur R16 bis R31.
(2)
(1)
(1)
Rd, Rr nur R16 bis R23.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 89/110
5. Verarbeitungswerke
5. Multiplikation, Division
Aufgabe:
Lösung mit Compiler-Optimierung -O1:
lade b
lade c
vorzeichenbehaftete Multiplikation
r25:r24← r1:r0
Ergebnis speichern
Gibt r25=H(b*c) und r24=L(b*c) zurück (H(..) High-Byte;
L(..) Low-Byte). CLR R1, weil in R1 immer null erwartet
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 90/110
5. Verarbeitungswerke
Mit Compileroptimierung -O0:
5. Multiplikation, Division
r20 ← b; r18 ← c
vorzeichenbehaftete
Erweiterung von b
auf 16 Bit
vorzeichenbehaftete
Erweiterung von c
auf 16 Bit
r1:r0 ← b0 · c0
r25:r24 ← b0 · c0
r1:r0 ← b0 · c1
r25 ← r25 +L(b0 · c1 )
r1:r0 ← b1 · c0
r25 ← r25 +L(b1 · c0 )
Die berechneten niederwertigen Produktbytes sind bei
vorzeichenbehafteter und vorzeichenfreier Multiplikation gleich.
Fakt 3
Ein Prozessor ist nicht besser als sein Compiler!
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 91/110
5. Verarbeitungswerke
5. Multiplikation, Division
Division
a
r
=q+
b
b
Berechnung des Bitvektors q für den ganzzahligen
Quotienten und des Bitvektors r für den Divisionsrest
Bitnummer
3
Rest
1011
Subtrahend − 0 0 1 1
Differenz
negativ
Quotient
q3 = 0
2
1011
− 0011
negativ
q2 = 0
1
1011
− 0011
0 10 1
q1 = 1
0
0 10 1
− 0011
0 0 10
q0 = 1
Ergebnis
r = 0010
q = 0011
11
2
=3+
3
3
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 92/110
5. Verarbeitungswerke
5. Multiplikation, Division
Datenuss Matrix-Dividierer
Resti
a
Subtri
Resti+1
1
b (a − b)
slr
y
c
0
a
b (a − b)
Subtri+1
slr
qn−i
slr Rechtsverschiebung (Halbierung)
Resti+2
1
y
c
0
Subtri+2
qn−i−1
längster Pfad
Längster Pfad geht durch alle Subtrahierer. Quadratische
Zunahme der Laufzeit mit der Bitanzahl.
Im Vergleich dazu nimmt die Laufzeit eines
Matrixmultiplizierers nur linear mit der Bitbreite zu.
Die Division wird deshalb in der Regel in einer Schleife
bitweise ausgeführt.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 93/110
5. Verarbeitungswerke
5. Multiplikation, Division
C-Operatoren für Division und Divisionsrest
In C werden Divisionsrest und Quotient mit
unterschiedlichen Operatoren, d.h. in getrennten
Anweisungen bestimmt.
Wie die nächste Folie zeigt, ruft das Beispielprogramm
zweimal desselben Unterprogramm mit denselben Operanden
auf.
Der Divisionsrest wird vom Unterprogramm oenbar in r25
und der Quotient in r24 zurückgegeben.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 94/110
5. Verarbeitungswerke
5. Multiplikation, Division
r24 ← a
r25 ← b
r22 ← b
Unterprogrammaufruf
Ergebnis in q speichern
r24 ← a
r25 ← b
r22 ← b
Unterprogrammaufruf
Ergebnis in q speichern
1. Unterprogrammbefehl: r25← 0
Das Unterprogramm können Sie in der Übung analysieren.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 95/110
5. Verarbeitungswerke
6. Kommazahlen
Kommazahlen
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 96/110
5. Verarbeitungswerke
6. Kommazahlen
Festkommazahlen
Erweiterung ganzer Zahlen um m Nachkommastellen.
Nachkommastellen haben einen negativen Stellenindex.
Wert positiver Festkommazahlen:
Z=
n−1
X
i=−m
bi · B i
(bi Ziernwerte; B Basis des Zahlensystems)
Beispiel: 23,89 = 2 · 101 + 3 · 100 + 8 · 10−1 + 9 · 10−2
Wert negativer Festkommazahlen:
Z=
n−1
X
i=−m
Beispiel: −23,89 =
bi · B i − B n
7 · 101 + 6 · 100 + 1 · 10−1 + 1 · 10−2
−102
∗
(∗ mit n Vorkommastellen nicht darstellbarer Summand)
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 97/110
5. Verarbeitungswerke
6. Kommazahlen
Für gebrochene Binärzahlen im Zweierkomplement ist das
führende Bit das Vorzeichenbit. Wert:
Z=
n−2
X
i=−m
(2)
bi · 2i − bn−1 · 2n−1
Die gröÿte mit n Vorkomma- und m Nachkommabits darstellbare
Zahl 01..1,11... hat dem Wert 2n − 2−m und die kleinste
darstellbare Zahl 10...0,00... den Wert −2n .
Fakt 4
Festkommazahlen werden mit den arithmetischen Operationen
für ganze Zahlen bearbeitet: Addition, Subtraktion,
Verschiebebefehle und Multiplikation.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 98/110
5. Verarbeitungswerke
6. Kommazahlen
Es gibt zwei Multiplikationsbefehle für zwei ganz spezielle
Festkommaformate:
Operation
R1:R0←Rd(s) · Rr(s)
R1:R0←Rd(s) · Rr(u)
(u)
Op.-Code
Assembler
1000 0010 dddd rrrr(1)
1000 0011 0ddd 0rrr(2)
fmuls Rd, Rr
fmulsu Rd, Rr
vorzeichenfrei (unsigned);
Rd, Rr nur R16 bis R31.
(2)
(s)
vorzeichenbehaftet (signed);
(1)
Rd, Rr nur R16 bis R23.
Schauen Sie in der Befehlssatzbeschreibung nach,
für welche Festkommaformate diese Befehle gedacht sind und
was ihre genaue Funktion ist.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 99/110
5. Verarbeitungswerke
6. Kommazahlen
Wertebereich vs. Rundungsfehler
Kommaposition
n = 2, m = 6
n = 4, m = 4
n = 6, m = 2
Wertebereich
0 bis 22 − 2−6
0 bis 24 − 2−4
0 bis 26 − 2−2
Rundungsfehler
±2−7
±2−5
±2−3
Bei einer Festkommazahl bestimmt die Anzahl
der Vorkommastellen den Wertebereich und
die Anzahl der Nachkommastellen den Rundungsfehler.
Die Wahl der Kommaposition ist ein Kompromiss zwischen der
Gröÿe des Wertebereichs und der Genauigkeit.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 100/110
5. Verarbeitungswerke
6. Kommazahlen
Gleitkommazahlen (variable Kommaposition)
Mantisse M : Wertebereich (normiert) 1 ≤ Z(M ) < 2
Charakteristik c: Kommaverschiebung, ganzzahlig; c0 Wert
von c für Kommaverschiebung Null
Vorzeichenbit s
Wert für 0 < c < cmax (normierte Darstellung16 ):
Z = (−1)s · (1, M−1 . . . M−m ) · 2c−c0
Wert für c = 0 (denormiert17 ):
Z = (−1)s · (M0 , M−1 . . . M−m ) · 2−c0
In der normierten Darstellung ist die Mantisse M eine vorzeichenfreie
Zahl mit einem Vorkommabit gleich eins, das nicht mit gespeichert wird.
17
In der denormierten Darstellung kann das Vorkommabit auch null sein
und wird mit gespeichert.
16
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 101/110
5. Verarbeitungswerke
6. Kommazahlen
Sonderwerte c = cmax :

für s = 0 und m = 0
 ∞
−∞ für s = 1 und m = 0
Z=

nan für m =
6 0
(nan, not a number ungültig; ±∞ positiver/negativer
Wertebereichsüberlauf)
32-Bit-Format IEEE-754 single:
Bitvektor
31
24 23
16 15
8
Bitnummer
7
0
s
c
M
0 1 00000 1 1 001001 0 00000000 000000000
8
3
2
4
0
0
0
0
+ c = 8316
M = 1, 24000016
1 0111100 11100101 10011101 000011100
7
9
C
B
3
A
1
C
Wert
+1.24000016 · 28316 −7f 16
= 18,25
−1.CB3A1C16 · 27916 −7f 16
≈ −2,8029 · 10−2
− c = 7916
M = 1,CB3A1C16
0 0000000 00001100 10111101 0001100100 +0,32F46416 · 20−7f 16
, 3
2
F
4
6
4
≈ 1,170 · 10−39
0/denorm.
M = 0,32F46416
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 102/110
5. Verarbeitungswerke
6. Kommazahlen
Nutzung von Gleitkommazahlen in C
Gleitkommazahlen werden
unterstützt und ihre Werte sind im Debugger darstellbar.
Die Byte-Darstellung ist im Speicher einsehbar.
Die für die Addition genutzten Unterprogramme umfassen
insgesamt über 180 Befehle.
32-Bit-Prozessoren haben oft ein Gleitkommarechenwerk,
das Gleitkommaoperationen in einem Schritt ausführt.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 103/110
5. Verarbeitungswerke
7. Aufgaben
Aufgaben
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 104/110
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.3
Füllen Sie für die nachfolgende Schaltung die Wertetabelle aus
und bestimmen Sie die Zwischensignalverläufe und den
Ausgabesignalverlauf:
x0
=1
z0
x2 x1 x0
=1
x1
=1
x2
y
z1
x0
x1
x2
z0
z1
1
0
1
0
1
0
1
0
1
0
y
1
0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
z0 z1
y
0
1
0
1
0
1
0
1
Zeit
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 105/110
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.4
Bestimmen Sie für jede Zeile der nachfolgenden Tabelle die
Registerwerte nach Ausführung der Operation:
...
and r2, r3
or r0, r1
eor r0, r2
and r0, 0b01100111
r0
r1
r2
r3
0001 0011 1100 1010 1011 0111 0101 1100
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 106/110
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.5
Es soll folgende vorzeichenbehaftete (arithmetische) Rechtsverschiebung programmiert werden:
int16_t a, b;
a = b >> 3;
1
Welche Ergebnis soll die Operation für die nachfolgenden
Eingaben liefert? a 0xF3A2 0x41D3
b
2
Schreiben Sie ein Assemblerprogramm mit folgender
Registerzuordnung: r18 r19 r20 r21
b0
b1
a0
a1
Lösungshinweise: Wandeln Sie die vorgegebenen hex-Werte in Binärwerte um, verschieben Sie diese. Bei einer arithmetischen Rechtsverschiebung wird in das freiwerdende höchste Bit der Vorzeichenwert
geschrieben. Sie benötigen den arithmetischen Rechtsverschiebebefehl
asr Rd, der in der Vorlesung nicht behandelt wurde.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 107/110
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.6
Entwickeln Sie nach dem Algorithmus Gl. 1
a0 = L (b0 · c0 )
↓: a1 = H (b0 · c0 ) + L (b1 · c0 ) + L (b0 · c1 )
↓: a2 = a2 + H (b1 · c0 ) + H (b0 · c1 ) + L (b1 · c1 )
a3 = a3 + H (b1 · c1 )
ein Assemblerprogramm, dass das 4-Byte-Produkt aus den
2-Byte-Faktoren bildet. Registerzuordnung:
r18 r19
b0 b1
r20 r21
c0 c1
r22 r23 r24 r25
a0 a1 a2 a3
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 108/110
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.7
Warum werden Multiplizierwerke in Hardware realisiert, aber
Dividierwerke nicht?
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 109/110
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.8
Stellen Sie den dezimalen Zahlenwert 26,75
1 als vorzeichenfreie Festkommazahl mit 5 Bit vor und 3 Bit
nach dem Komma und
2
im 32-Bit-Format IEEE-754 single
dar.
G. Kemnitz · Institut für Informatik, TU Clausthal (RA-F1)
21. Januar 2016 110/110
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement