Vorlesungsskripte aus dem DHBW-Studium
aus der Vorlesung Rechnertechnik vom 13.03.2018
Beispiel:
Dual | Oktal | Dezimal | Hex | () |
---|---|---|---|---|
Summand 1 | ||||
Summand 2 | ||||
Übertrag (Carry) | ||||
Summe |
Beispiel 2:
Dual | Oktal | Dezimal | Hex | () |
---|---|---|---|---|
Minuend | ||||
Subtrahend | ||||
Borger (Borrow) | ||||
Differenz |
Analogie beider Multiplikationsverfahren:
101 * 110
---------
101
101
000
--------- /
11110 \/
26 * 242
--------
52
104
52
--------
6292
1A * F2
-------
186
34
-------
1894
Nebenrechnungen:
Aus einer Vielzahl möglicher Zahlendarstellungen werden aus ökonomischen Gründen in Rechnern in der Regel nur wenige realisiert.
Üblich sind:
Duale Festpunktzahlen sind ganzzahlig; sie werden eingesetzt, wenn sicher vorhergesagt werden kann, dass sich die zu berechnenden Ergebniswerte im Bereich der darstellbaren Festpunktzahlen bewegen. Darstellungseinheiten für Festpunktzahlen sind Maschinenwörter von , , oder Bit Länge.
Es gelten hierbei folgende Vorschriften:
Negative Zahlen werden als Zweierkomplement dargestellt. Für eine -stellige Zahl entsteht das Zweierkomplement durch ; d.h. es wird immer zu ergänzt.
Beispiel:
Dezimal | Dual |
---|---|
Zweierkomplement von 27 |
Das Zweierkomplement kann auch einfacher berechnet werden:
Beispiel:
invertiere
0101 1111 bitweise addiere 1
- 0001 1011 ----> 1110 0100 -----> 1110 0100
1
---------
1110 0101
- | |
1 | |
Übung: Berechne Zweierkomplement von nach der Methode mit .
Für die Darstellung alphanumerischer Zeichen, d.h. Alphabet mit Groß- und Kleinbuchstaben, Satz- und Sonderzeichen reichen Bit für 64 Zeichen. Die weitverbreitesten Codes zur Zeichendarstellung verwenden Bits, wobei der Zeichensatz um Steuerzeichen für externe Geräte wie Drucker oder Bildschirm sowie zur Datenübertragung erweitert ist.
Die Darstellung von Gleitpunktzahlen ist technisch aufwendiger, sie gestaltet aber die Abdeckung von großen Wertebereichen mit befriedigender Genauigkeit.
Die Abschätzung von Ergebnisdaten muss nur grob erfolgen, da es meist nur Gleitpunktdarstellungen mit einfacher, doppelter oder vierfacher Genauigkeit gibt. Grundlage der Gleitpunktdarstellung einer rellen Zahl ist die Form:
Der Dezimalpunkt ist bei der Mantisse linksbündig. Ist die erste Ziffer der Mantisse hinter dem Dezimalpunkt ungleich (), so bezeichnet man die Darstellung als normalisiert. Dann ist:
Für den Exponenten genügt ein kleiner Wertebereich, z.B.
um Bereiche vom mikroskopisch Kleinen bis astronomisch Großem abzudecken.
Rechnerintern wird das Vorzeichen des Exponenten meist durch eine virtuelle Verschiebung umgangen.
Der EBCDIC-Code (Extended Binary-Coded Decimal Interchange Code) wurde von IBM für Großrechner entwickelt, dabei sind für die Dezimalzahlen alle Bits des zweiten Nibbles gleich .
2. Nibble | 1. Nibble | Zeichen | Zahl |
---|---|---|---|
Der EBCDIC-Code vereinfacht die Konvertierung von Zeichen zu Zahlen und umgekehrt.
Der zweite wichtige Zeichencode ist der ASCII-Code (American Standard Code Information Interchange). Hier sind Bit für die Unterscheidung von 128 Zeichen belegt. Das achte Bit wird als Prüfbit zur Fehlererkennung bei der Übertragung von Zeichen verwendet.
Ein Maschinenbefehl “befiehlt” eine Operation an spezifizierten Daten, nämlich den sogenannten Operanden. Im Rechner wird ein Befehl in einem Befehlswort kodiert. Ein Befehlswort besteht aus einem Operationsteil und in der Regel aus einem oder mehreren Adressteilen. Bei den meisten Rechnerarchitekturen ist die Länge der Befehlsworte, z.B. wegen unterschiedlicher Anzahl von Adressteilen, unterschiedlich. Üblich sind 1-, 2-, 4- und 6-Byte lange Befehlsworte.
Die wichtigsten Operationsarten des binär kodierten Operationsteils sind:
AND
, OR
, XOR
, NOT
Neben der Art der Operation verschlüsselt der Operationsteil auch die Länge des Befehls, die Art und Anzahl der Operanden und die Adressierungsart der Operanden. Bei einigen Befehlen wird kein Operand benötigt oder der Operand ist durch den Operationsteil implizit bestimmt, z.B. das Program-Counter-Register beim Rücksprung aus einem Unterprogramm.
Im Adressteil des Befehls wird angegeben, wo sich ein Operand befindet. Grundsätzlich gibt es hierfür zwei Möglichkeiten:
Moderne Prozessoren verfügen über verschiedene Adressierungsarten. Neben direkter Adressangabe gibt es indirekte Verfahren, bei denen die eigentlichen Operanden in dem adressierten Register oder Speicherwort steht. Durch indirekte Adressierung ist es möglich, die Adresse des Operanden zur Laufzeit des Programms zu berechnen. Die indirekte Adressierung ist sehr flexibel, hat jedoch den Nachteil, dass der doppelte Zugriff auf Register oder Arbeitsspeicher die Zeit für Ausführung des Befehls verlängert.
Eine weitere wichtige Adressierungsart ist die Indizierung. Sie wird hauptsächlich beim Zugriff des Programms auf Datenfelder verwendet. Die Daten werden über ein Indexberechnungsverfahren aus dem Arbeitsspeicher abgegriffen. Dabei wird der Inhalt eines speziellen Registers, des Indexregisters, verändert (engl. manipuliert) und auf eine Adresse (Basisadresse eines Datenobjekts), die meist auch in einem Register gehalten wird, aufaddiert, um die effektive (letztendlich) Speicherplatzadresse zu berechnen.
Mit Indizierung kann eine Sequenz von Befehlen auf verschiedene Daten iterativ angewendet werden.
Eine typische Sequenz ist die Addition von Feldelementen.
Beispiel: Addition von
Feldelementen
Programmausschnitt
SET X = 0
LOOP: ADD R = R + (B + X)
INC X
JUMP to LOOP if x < 10
Nach dem bisherigen Überlegungen kann die Ausführung eines Maschinenbefehls in folgende Zeitphasen unterteilt werden.
F
: (Fetch) Befehlswort aus dem Speicher in das Befehlsregister laden.D
: (Decode) Befehl dekodieren.X
(Execute) Befehl ausführen (ggf. vorher Operanden aus dem Arbeitsspeicher in allgemeine Register laden).S
: (Store) Resultate / Ergebnisse speichern.Im Einzelnen sind innerhalb dieser Phasen folgende Schritte in der Ablaufsteuerung notwendig:
F
: Befehlszähler in Adressregister übertragen, um den nächsten Befehl aus dem Speicher zu lesen.
F
: Befehlszähler inkrementieren
F
: Befehl in Befehlsregister laden
D
: Befehl dekodieren zur Ausführung durch den Datenprozessor
X
: Operandenadressen aus Befehlsregister in Adressregister übertragen und Operanden in allgemeine Register laden.
X
: Berechnungen mit den Operanden durchführen
S
: Ergebnisse speichern.