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, Technische Universität Clausthal
18. Dezember 2014
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
1/108
Gliederung der Lehrveranstaltung
Inhalt laut Modulhandbuch:
1 Grundaufbau mikrorechnerbasierter Systeme
2 Detaillierter Aufbau von Mikroprozessoren
3 Speichertechnologien in Rechnern
4 Aufbau von Instruktionen und Phasen-Pipelining
5 Interrupt Request
6 Aufgaben von Peripherie am Bsp. paralleler Schnittstellen
Übungen
1 Logische und arithmetische Befehle
2 Adressierungsarten
3 Kontrollstrukturen (Fallunterscheidungen, Schleifen)
4 Unterprogrammaufrufe und Parameterübergabe
5 Interrupt
6 Peripherie: USART, Timer
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
2/108
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
G. Kemnitz
·
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
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
3/108
1. Einführung
G. Kemnitz
Einführung
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
4/108
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
...
G. Kemnitz
·
Schnittstelle
SW ⇔HW
Hardware
Konstruktion von
Maschinen zur Abarbeitung intellektueller Aufgaben
Programmiersprachen
Betriebssysteme
Rechnerarchitektur
Programmierwerkzeuge
Schaltungstechnik
...
...
in starkem Zusammenhang mit
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
5/108
1. Einführung
Informatik ist eine junge Wissenschaft1
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.
1
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
6/108
2. Rechnermodelle
G. Kemnitz
Rechnermodelle
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014
7/108
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, Technische Universität Clausthal
18. Dezember 2014
8/108
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, Technische Universität Clausthal
18. Dezember 2014
9/108
3. Von-Neumann-Architektur
G. Kemnitz
Von-Neumann-Architektur
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 10/108
3. Von-Neumann-Architektur
Von-Neumann-Architektur
John von Neumann2 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
2
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 11/108
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, Technische Universität Clausthal
18. Dezember 2014 12/108
3. Von-Neumann-Architektur
Abarbeitung einer Befehlsfolge3
Speicher (-bereich) für Daten
Speicher (-bereich) für Befehle
CPU
Adr.
Wert
Adr.
Wert
Befehl
Daten
..000
..000 101000 00001 00000
10001100
..001
..001 101001 00010 00011
11100100
Daten- ..010
..010 101000 00010 00011 Befehls10010100
adresse
adresse
..011
..011 001110 10100 00100
10110100
...
...
...
...
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.
3
Auf einem ktiven Rechnermodell.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 13/108
3. Von-Neumann-Architektur
Abarbeitung des ersten Befehls
Befehlsadresse ..000 senden und Befehlswort 101.. holen:
Adr.
..000
..001
..010
..011
...
wiederhole immer:
Wert
Befehl
hole Befehl
101000 00001 00000
dekodiere Befehl
101001 00010 00011
101000 00001 00010 Befehls- hole Operanden
adresse
Ausführen
001110 10100 00100
...
..000
Ergebnis schreiben
Decodieren des Befehlsworts:
wiederhole immer:
hole Befehl
dekodiere Befehl
hole Operanden
Ausführen
Ergebnis schreiben
G. Kemnitz
·
101000 00001 00000
gesamtes Befehlswort
Operationscode: addiere ... 101000
Adresse Summand 2
00001
00000
Adresse Summand 1 und Summe
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 14/108
3. Von-Neumann-Architektur
Ersten Summanden von Adresse 00000 lesen:
wiederhole immer:
Datenadresse
hole Befehl
dekodiere Befehl
..000
hole Operanden
Daten
Ausführen
Ergebnis schreiben 10001100
Adr.
..000
..001
..010
..011
...
Wert
10001100
11100100
10010100
10110100
...
Zweiten Summanden von Adresse 00001 lesen:
G. Kemnitz
wiederhole immer:
Datenadresse
hole Befehl
dekodiere Befehl
..001
hole Operanden
Daten
Ausführen
Ergebnis schreiben 11100100
·
Adr.
..000
..001
..010
..011
...
Institut für Informatik, Technische Universität Clausthal
Wert
10001100
11100100
10010100
10110100
...
18. Dezember 2014 15/108
3. Von-Neumann-Architektur
Addition ausführen:
wiederhole immer:
hole Befehl
dekodiere Befehl
hole Operanden
Ausführen
Ergebnis schreiben
10001100
+ 11100100
(1) 01110000
Ergebnis auf Adresse 00000 schreiben:
G. Kemnitz
Datenwiederhole immer:
adresse
hole Befehl
..000
dekodiere Befehl
hole Operanden
Daten
Ausführen
Ergebnis schreiben 01110000
·
Adr.
..000
..001
..010
..011
...
Institut für Informatik, Technische Universität Clausthal
Wert
01110000
11100100
10010100
10110100
...
18. Dezember 2014 16/108
3. Von-Neumann-Architektur
Abarbeitung des nächsten Befehls
Nach Abarbeitung des Additionsbefehls wird der Befehlszähler
weitergeschaltet und das nächste Befehlswort geholt:
101001 00010 00011
gesamtes Befehlswort
Operationscode: subtrahiere 101001
Adresse Minuend
00010
Adresse Subtrahend und Differenz
00011
Was passiert in den Folgeschritten?
Lade Operand 1:
. . .A:
Lade Operand 2:
. . .A:
Führe Operation aus: O:
Schreibe Ergebnis:
. . .A:
Hole Befehlswort:
. . .A:
D:
D:
D:
D:
(BA /DA Befehls- bzw. Datenadresse; D Befehlswort oder
übertragende Daten; O ausgeführte Operation und Ergebnis)
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 17/108
4. RISC-Prozessor
G. Kemnitz
RISC-Prozessor
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 18/108
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, die mehrere bzw. viele
Register-Transfer-Operationen benötigen, z.B. das Weiterzählen
des Inhalts einer Variablen im Datenspeicher bildet der Kompiler
durch Befehlsfolgen nach, im Beispiel:
Variablenwert in ein Arbeitsregister kopieren,
Registerinhalt um eins erhöhen und
geänderten Registerinhalt zurückschreiben.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 19/108
4. RISC-Prozessor
G. Kemnitz
1. Verarbeitungswerk
Verarbeitungswerk
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 20/108
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, Technische Universität Clausthal
18. Dezember 2014 21/108
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:
G. Kemnitz
den Übertrag von Additionen und Subtraktionen für
Nachfolgeoperationen,
>0, =0, ... für nachfolgende bedingte Sprünge,
...
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 22/108
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 passen4 . 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 Adressbits5 , 6-Bit Op-Code; bzw.
1×4 Adressbits, 4-Bit-Op-Code, 8-Bit-Konstante.
4
5
Damit das Befehlswort mit einem Speicherzugri gelesen werden kann.
Zieladresse fest oder gleich einer der Operandenadressen.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 23/108
4. RISC-Prozessor
G. Kemnitz
2. Speicherzugri
Speicherzugri
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 24/108
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
...
...
G. Kemnitz
·
Leseoperation
dat ← mem(adr)
RAM
adr
dat
Institut für Informatik, Technische Universität Clausthal
Schreiboperation
mem(adr) ← dat
RAM
adr
dat
18. Dezember 2014 25/108
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, Technische Universität Clausthal
18. Dezember 2014 26/108
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, Technische Universität Clausthal
18. Dezember 2014 27/108
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, Technische Universität Clausthal
18. Dezember 2014 28/108
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:
G. Kemnitz
Befehlszähler
+1
·
PC
Befehlspeicher
Befehlswort
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 29/108
4. RISC-Prozessor
G. Kemnitz
3. Sprungbefehle
Sprungbefehle
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 30/108
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.
Fallunterscheidung
Schleife
Arbeite, wenn b wahr Wiederhole soist, eine sonst eine
lange b wahr ist
andere Befehlsfolge ab. eine Befehlsfolge.
G. Kemnitz
b̄
b
bedingter
Sprung
Sprung
b
Unterprogrammaufruf
Füge eine Befehlsfolge ab einer anderen Adresse ein.
b̄ bedingter
Sprung
Unterprogrammaufruf (Sprung)
Sprung
Rücksprung
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 31/108
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, Technische Universität Clausthal
18. Dezember 2014 32/108
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
Bei absoluten Sprüngen ist der 1. Operanden des Rechenwerks ein Registerinhalt, bei relativen Sprüngen Befehlsadresse +1. Das Zielregister ist der Befehlszähler (PC6 ).
Operationen sind unverändertes Durchreichen des ersten
Operanden oder Addition der Konstanten.
6
Program Counter.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 33/108
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, Technische Universität Clausthal
18. Dezember 2014 34/108
4. RISC-Prozessor
G. Kemnitz
4. Befehlssatz
Befehlssatz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 35/108
4. RISC-Prozessor
4. Befehlssatz
Typische Beispielbefehle
Der Befehlssatz beschreibt für alle Befehlsworte die Operation, die
ausgeführt wird. Die Lehrveranstaltung verwendet den AVRBefehlssatz7 . 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.
Programmieren in C und Reengineering des Maschinenprogramms.
7
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 36/108
4. RISC-Prozessor
G. Kemnitz
5. Erstes Beispielprogramm
Erstes Beispielprogramm
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 37/108
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
G. Kemnitz
·
JB
8 Leuchtdioden
(PortC 0..7)
Taster
Anschluss
Leuchtdiode
Anschluss
BT1
PA0
LD0
PC0
Institut für Informatik, Technische Universität Clausthal
BT2
PA1
LD1
PC1
BT3
PA2
···
···
BT4
PA3
LD7
PC7
18. Dezember 2014 38/108
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, Technische Universität Clausthal
18. Dezember 2014 39/108
4. RISC-Prozessor
5. Erstes Beispielprogramm
Das erste Programmbeispiel
C-Programm, das fortlaufen die Tasterwerte liest und auf den
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, Technische Universität Clausthal
18. Dezember 2014 40/108
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, Technische Universität Clausthal
18. Dezember 2014 41/108
4. RISC-Prozessor
5. Erstes Beispielprogramm
Start-Up-Code
G. Kemnitz
Aufruf des Hauptprogramms
...7D Beginn des Hauptprogramms
falls das Hauptprogramm mit einem Rücksprung endet
Sprung zu sich selbst
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 42/108
4. RISC-Prozessor
G. Kemnitz
6. Aufgaben
Aufgaben
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 43/108
4. RISC-Prozessor
6. Aufgaben
Aufgabe 1.1
Welche Operation ist im dritten Befehl auf Folie 13 codiert?
Welche Adresse haben die Operanden?
Was passiert in den Folgeschritten nach dem Holen des
Befehlswortes?
Lade Operand 1:
. . .A:
D:
Lade Operand 2:
. . .A:
D:
Führe Operation aus: O:
Schreibe Ergebnis:
. . .A:
D:
Hole Befehlswort:
. . .A:
D:
(BA /DA Befehls- bzw. Datenadresse; D Befehlswort oder
übertragende Daten; O ausgeführte Operation und Ergebnis).
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 44/108
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. ...74 für Bit 7 des Befehlsworts
ist Bit 1 der Adresse , Bit 4 des Befehlsworts ist Bit 0 der Adresse.)
In welche Register werden welche Ergebnisteile gespeichert?
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 45/108
5. Verarbeitungswerke
G. Kemnitz
Verarbeitungswerke
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 46/108
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
G. Kemnitz
·
T
T
x
1
0
w1
w2
w3
x’
w0
y
f (w0 ) f (w1 )
y’
...
w1
f (w0 )
Institut für Informatik, Technische Universität Clausthal
w2
w3
f (w2 )
f (w1 ) f (w2 )
18. Dezember 2014 47/108
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ögerungszeit8 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 sein sein9 .
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.
Wird im Weiteren immer als erfüllt betrachtet.
8
9
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 48/108
5. Verarbeitungswerke
G. Kemnitz
1. Gatterschaltungen
Gatterschaltungen
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 49/108
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, Technische Universität Clausthal
18. Dezember 2014 50/108
5. Verarbeitungswerke
1. Gatterschaltungen
Schaltungen aus Gattern
Aus Gattern werden komplexere Funktionsbausteine
zusammengesetzt, z.B. Multiplexer:
x0
G1
s
s̄
G2
z
& 0 G4
≥1
G3
&
x1
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, Technische Universität Clausthal
18. Dezember 2014 51/108
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
&
&
G4
≥1
x0
x1
x2
y1
y2
G. Kemnitz
Zeit
·
y0
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
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 52/108
5. Verarbeitungswerke
G. Kemnitz
2. Bitverarbeitung
Bitverarbeitung
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 53/108
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, Technische Universität Clausthal
18. Dezember 2014 54/108
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, Technische Universität Clausthal
18. Dezember 2014 55/108
5. Verarbeitungswerke
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
2. Bitverarbeitung
18. Dezember 2014 56/108
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, Technische Universität Clausthal
18. Dezember 2014 57/108
5. Verarbeitungswerke
2. Bitverarbeitung
Arithmetische Verschiebung: Vorzeichenbits10 .
Rotation: rausgeschobene Bits.
Unser Beispielprozessor kann
8 Bit um eine Stell nach rechts/links verschieben und
Halbbytes tauschen (Rotation um 4 stellen).
Linksverschiebung
b7 b6 b5 b4 b3 b2 b1 b0 0
vor
nach
vor
nach
vor
nach
10
b7 b6 b5 b4 b3 b2 b1 b0 0
Rotation links
b7 b6 b5 b4 b3 b2 b1 b0 C
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
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
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 71).
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 58/108
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, Technische Universität Clausthal
18. Dezember 2014 59/108
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:
G. Kemnitz
;
;
;
;
·
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
Institut für Informatik, Technische Universität Clausthal
b0
b8
0
b7
0
b7
0
b6
18. Dezember 2014 60/108
5. Verarbeitungswerke
2. Bitverarbeitung
Für die Verschiebung um vier verwendet der Compiler den
Swap-Befehl:
uint16_t a, b;
G. Kemnitz
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
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 61/108
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
G. Kemnitz
Verschiebung
0 oder 2
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
x1
x2
x3
x4
s0
·
Verschiebung
0 oder 4
x0
Schritt.
⇒ umschaltbare Ver-
2. Bitverarbeitung
Institut für Informatik, Technische Universität Clausthal
s1
s2
18. Dezember 2014 62/108
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 7, r16
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 63/108
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, Technische Universität Clausthal
18. Dezember 2014 64/108
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:
spse
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 z.B. das Kopieren von PINA, Bit 3
nach PORTB, Bit 7 mit noch einem Befehl weniger lösen:
sbrs 0, 2;
cbi 7, 7 ;
sbrs 0, 2;
sbi 7, 7 ;
G. Kemnitz
·
wenn PINA, Bit 3 gleich 1, überspringe
lösche PORTB, Bit 7
wenn PINA, Bit 3 gleich 0, überspringe
setze PORTB, Bit 7
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 65/108
5. Verarbeitungswerke
G. Kemnitz
3. Addierer, Subtrahierer
Addierer, Subtrahierer
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 66/108
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
Verschiebung11 ,
Subtraktion als Addition mit dem negierten Subtrahenden,
gröÿer/kleiner-Vergleich als Subtraktion mit Auswertung des
Ergebnisvorzeichens.
11
Datenadresse gleich Registerinhalt plus Konstante im Befehlswort.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 67/108
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
x0 VA y0
x1
y1
x2
c0
a0
b0
G. Kemnitz
·
s1
c1
a 1 b1
x0 VA y0
x1
y1
x2
s2
c2
a 2 b2
x0 VA y0
x1
y1
x2
Institut für Informatik, Technische Universität Clausthal
c3
a 3 b3
x0 VA y0
x1
y1
x2
s3
c4
18. Dezember 2014 68/108
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, Technische Universität Clausthal
18. Dezember 2014 69/108
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Addition zweier 16-Bit-Zahlen
G. Kemnitz
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
Institut für Informatik, Technische Universität Clausthal
r18:
r19:
r24:
r25:
r24:
r25:
0x 32
0x 1A
0x 7A
0x 15
0x
0x
18. Dezember 2014 70/108
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, Technische Universität Clausthal
18. Dezember 2014 71/108
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
G. Kemnitz
998
−1000
−2
999
−1000
−1
0
1
2
3
498 499
nicht darstellbar
Addition ohne Wertebereichsbegrenzung
Addition modulo-B n
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 72/108
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, Technische Universität Clausthal
18. Dezember 2014 73/108
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 :
G. Kemnitz
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
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 74/108
5. Verarbeitungswerke
3. Addierer, Subtrahierer
Subtraktion zweier 16-Bit-Zahlen
G. Kemnitz
disassemblierter
Code der Anweisung
;
;
;
;
←
←
←
←
r18:
r19:
r24:
r25:
r20:
; Subtraktion Byte 0 r24:
; Subtraktion Byte 1 r25:
r24:
·
r18
r19
r24
r25
b Byte 0
b Byte 1
c Byte 0
c Byte 1
Testbeispiel
Institut für Informatik, Technische Universität Clausthal
0x A3
0x 31
0x 21
0x 10
0x r21: 0x
0x
0x
0x r25: 0x
18. Dezember 2014 75/108
5. Verarbeitungswerke
G. Kemnitz
4. Statusregister
Statusregister
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 76/108
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,
G. Kemnitz
>0, =0, ... für nachfolgende bedingte Sprünge,
...
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 77/108
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) Übertragsbit
Z (Zero Flag) wird bei Ergebnis null gesetzt
N (Negative Flag) (Ergebnisbit 7)
V Zweierkomplement Überlauf (N ⊕ C )
S (N ⊕ V ) Vorzeichen Zweierkomplement
H (Half Carry) Übertrag nach dem ersten Halbbyte
T Zwischenspeicher für Bitkopieroperationen
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, Technische Universität Clausthal
18. Dezember 2014 78/108
5. Verarbeitungswerke
4. Statusregister
Compare-Befehle12 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) wenn Z=0
Not Equal) wenn Z=1
Carry Set) wenn C=1
Carry Clear) wenn C=0
(Weitere bedingte Sprünge siehe AVR-Befehlssatz auf der
Web-Seite oder auf Foliensatz 2).
12
Das sind Subtraktionen ohne Speichern der Dierenz in Rd.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 79/108
5. Verarbeitungswerke
G. Kemnitz
5. Multiplikation, Division
Multiplikation, Division
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 80/108
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, Technische Universität Clausthal
18. Dezember 2014 81/108
5. Verarbeitungswerke
G. Kemnitz
b0
a0
a1
a2
a3
b1
5. Multiplikation, Division
b2
b3
p0
&
HA
&
&
&
VA
VA
HA
&
VA
VA
c
VA
&
VA
c
VA
·
Institut für Informatik, Technische Universität Clausthal
&
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
18. Dezember 2014 82/108
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-Addierers13 .
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 .
13
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 83/108
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
↓: a1
↓: 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.
↓: Überträge zum nächst höheren Byte addieren.
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 84/108
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, Technische Universität Clausthal
18. Dezember 2014 85/108
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 ← (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, Technische Universität Clausthal
18. Dezember 2014 86/108
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 eigene
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
1000 0010 dddd rrrr
1000 0011 0ddd 0rrr(2)
vorzeichenfrei (unsigned);
Rd, Rr nur R16 bis R31.
G. Kemnitz
·
(2)
Assembler
(1)
(s)
muls Rd, Rr
mulsu Rd, Rr
vorzeichenbehaftet (signed);
(1)
Rd, Rr nur R16 bis R23.
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 87/108
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(a*b) 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, Technische Universität Clausthal
18. Dezember 2014 88/108
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, Technische Universität Clausthal
18. Dezember 2014 89/108
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
negativ
Differenz
Quotient
q3 = 0
G. Kemnitz
·
2
1011
− 0011
negativ
q2 = 0
1
1011
− 0011
0 10 1
q1 = 1
0
0 10 1
− 0011
0 0 10
q0 = 1
Institut für Informatik, Technische Universität Clausthal
Ergebnis
r = 0010
q = 0011
18. Dezember 2014 90/108
5. Verarbeitungswerke
5. Multiplikation, Division
Datenuss Matrix-Dividierer
Resti
a
Subtri
Resti+1
1
b (a − b)
slr
y
c
0
a
Subtri+1
b (a − b)
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, Technische Universität Clausthal
18. Dezember 2014 91/108
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, Technische Universität Clausthal
18. Dezember 2014 92/108
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, Technische Universität Clausthal
18. Dezember 2014 93/108
5. Verarbeitungswerke
G. Kemnitz
6. Kommazahlen
Kommazahlen
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 94/108
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 =
G. Kemnitz
bi · B i − B n
7 · 101 + 6 · 100 + 1 · 10−1 + 1 · 10−2
−102
∗
(∗ mit n Vorkommastellen nicht darstellbarer Summand)
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 95/108
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, Technische Universität Clausthal
18. Dezember 2014 96/108
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, Technische Universität Clausthal
18. Dezember 2014 97/108
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, Technische Universität Clausthal
18. Dezember 2014 98/108
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 Darstellung14 ):
Z = (−1)s · (1, M−1 . . . M−m ) · 2c−c0
Wert für c = 0 (denormiert15 ):
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.
In der denormierten Darstellung kann das Vorkommabit auch null sein
und wird mit gespeichert.
14
15
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 99/108
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
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
Wert
Bitnummer
7
0
1
C
+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, Technische Universität Clausthal
18. Dezember 2014 100/108
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, Technische Universität Clausthal
18. Dezember 2014 101/108
5. Verarbeitungswerke
G. Kemnitz
7. Aufgaben
Aufgaben
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 102/108
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
=1
x2
G. Kemnitz
x2 x1 x0
=1
x1
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
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 103/108
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.4
Bestimmen Sie für jede Zeile der nachfolgenden Tabelle die
Registerwerte nach Ausführung der Operation:
G. Kemnitz
...
and r2, r3
or r0, r1
eor r0, r2
and r0, 0b01100111
·
r0
r1
r2
r3
0001 0011 1100 1010 1011 0111 0101 1100
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 104/108
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, Technische Universität Clausthal
18. Dezember 2014 105/108
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:
G. Kemnitz
r18 r19
b0 b1
·
r20 r21
c0 c1
r22 r23 r24 r25
a0 a1 a2 a3
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 106/108
5. Verarbeitungswerke
7. Aufgaben
Aufgabe 1.7
Warum werden Multiplizierwerke in Hardware realisiert, aber
Dividierwerke nicht?
G. Kemnitz
·
Institut für Informatik, Technische Universität Clausthal
18. Dezember 2014 107/108
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, Technische Universität Clausthal
18. Dezember 2014 108/108
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