Beruflich Dokumente
Kultur Dokumente
Rechnerarchitektur
Sequentielle Rechner - von-Neumann-Architektur
CPU
Befehlsprozessor Datenprozessor I/O-Prozessor
Verbindungseinrichtung (Bus)
Befehle/Daten
Speicher
Auf der Ebene der Rechnerstruktur faßt man i.a. den Befehlsprozessor und den Datenpro-
zessor zu einer Einheit zusammen, die zentrale Recheneinheit (central processing unit CPU)
genannt wird.
Die von-Neumann-Architektur kann als die Rechnerorganisation des minimalen Hard-
wareaufands bezeichnet werden, bestehend aus folgenden Einheiten:
- CPU: sie interpretiert die Befehle des Programms und führt sie aus.
- Speicher: er enthält das Maschinenprogramm und die dazugehörigen Daten.
- I/O-Prozessor: er stellt die Verbindung mit der Außenwelt her und verwendet
dazu die peripheren Ein/Ausgabegeräte.
- Datenwege: sie dienen dem Informationaustausch zwischen den Komponenten
und enthalten sowohl Datenpfade, als auch Adreß- und Kontrollpfade zur
Steuerung des Systems.
Das ist die einfachste Form der physikalischen Struktur der von-Neumann-Architektur.
Vorlesung Einführung in die Technische Informatik Seite 2
Rechnerarchitektur
Neben der Struktur ist das Operationsprinzip einer Rechnerarchitektur die wichtigste Fest-
legung des funktionellen Verhaltens der Architektur. Um das Operationsprinzip der von-
Neumann Architektur angeben zu können, müssen wir die Informationsstruktur und die
Kontrollstruktur betrachten.
Grundsätzlich ist die kleinste identifizierbare Informationseinheit in einem Rechner der boo-
lesche Vektor der Länge n (n Š 1), wobei häufig 8 bit zusammengefaßt die kleinste adres-
sierbare Einheit, das Byte, darstellen.
In der von-Neumann-Maschine können diese booleschen Vektoren die folgenden Informa-
tionstypen repräsentieren:
- Befehle (Anweisungen an die Hardware)
- Daten (Zahlen oder Zeichen)
- Adressen von Speicherzellen
Die von-Neumann-Maschine kann einem Speicherzelleninhalt nicht ansehen, was er reprä-
sentiert. Die Interpretation eines solchen Maschinenwortes erfolgt auf grund des Zustands,
indem sich die Maschine zum Zeitpunkt der Interpretation befindet. Die aus dem Speicher
geholte Information wird abwechselnd als Befehl oder als Datum interpretiert, wobei beim
Start eines Programms mit der Befehlsinterpretation begonnen wird.
Vorlesung Einführung in die Technische Informatik Seite 3
Rechnerarchitektur
Ablauf der Befehlsausführung
Programm-
anfang
Program Counter
ersten Befehl aus
PC Speicher holen
Befehl in das
Befehlsregister
bringen
Ausführung eventueller
Adreßänderungen und ggf.
Auswertung weiterer Angaben
im Befehl
evtl. Operanden
aus dem Speicher
holen
nächsten Befehl aus
dem Speicher holen
Umsetzen des Operationscodes
in Steueranweisungen
Programm- Nein
ende?
Ja
Ende
Operationsprinzip - Pipeline
Unter dem Operationsprinzip versteht man das funktionelle Verhalten der Architektur, wel-
ches auf der zugrunde liegenden Informations- und Kontrollstruktur basiert.
Vektorrechner Feldrechner
(’array of processing elements’)
Pipeline - Prinzip
Beispiel : Automobilfertigung
- Karosserie
- Lack
- Fahrgestell
- Motor
- Räder
Vorlesung Einführung in die Technische Informatik Seite 5
Operationsprinzip - Pipeline
Beispiel : Automobilfertigung
Fließband
(PIPELINE) Workgroup
Fließband
Karosserie - Räder
assembly Lackiererei Fahrgestelleinbau Motoreinbau montieren
Operationsprinzip - Pipeline
20 min
K La F M R
10 min 10 min 10 min 10 min
Lb
L1 L2
10 min 10 min
stage
Auftrag 41 K L1 L2 F M R
41 1:5
42 41 2:4
43 42 41 3:3
43 42 41 3:3
43 42 41 3:3
43 42 41 3:3
time
43 42 2:4
43 1:5
ppt
Vorlesung Einführung in die Technische Informatik Seite 7
Pipeline - Register
Unter einem Register verstehen wir eine Hardwarestruktur die ein- oder mehrere Bits spei-
chern kann. Register sind (normalerweise) D-Flip Flops (siehe PI2).
D-FF Register
D Q
32 32
clk
cycle time
tcyc
Clock
tsu tco
Ausgang gueltig mit neuen Daten
Vorlesung Einführung in die Technische Informatik Seite 8
Pipelining
instr. result(s)
& operands f1 f2 f3 fk
[RAM77] Ramamoorthy, C.V., Pipeline Architecture, in: Computing Surveys, Vol.9, No. 1, 1977, pp. 61-
102.
Vorlesung Einführung in die Technische Informatik Seite 9
start-up
or fill
processing
drain
Durchsatz Throughput
number of operations n operations
TP ( n, k) = = E ( n, k)
time unit tcyc sec
Gewinn Gain
scalar execution time n k lim S→ k
S ( n, k) = =
pipelined execution time k + (n-1) n→∞
Pipeline Interrupts
data dependencies
control-flow dependencies
resource dependencies
Vorlesung Einführung in die Technische Informatik Seite 10
time tf
F
time tf / 2 1 1’
time tf
2 2’
f1 f2
F
time tf / 2 time tf / 2
time tf
Version 1 f2
f1 f2 a f2 b f2 c f3
f1 << f2
f3 << f2 time t2 /3
f1 f2 f3
f2
f1 f2 f3
Version 2
f2
Vorlesung Einführung in die Technische Informatik Seite 11
Introduction of registers
stage 1 stage 2 stage 3
Clock
t (F) = ( max (tfi) + tco + tsu ) 3=3 max (tfi) + 3 ( tco + tsu )
The registers are introduced behind each function of the suboperation and this creates the
pipeline stages. Placing the register at the output (not at the input!!!) makes suboperation sta-
ges compatible with the definition of state machines, which are used to control the pipeline.
Vorlesung Einführung in die Technische Informatik Seite 12
Rechnerarchitektur
Maschinensprache
Die wichtigste Schnittstelle zwischen Hardware und Software ist die Maschinensprache.
Ein Maschinenbefehl besteht aus einem Bitmuster, das unmittelbar vom Prozessor interpre-
tiert werden kann. Ein Teil des Bitmusters beschreibt die gewünschte Operation (Operati-
onscode), ein anderer Teil die Operandenadresse(n), also die Adresse(n) der
Speicherelemente, die durch die Operation verknüpft werden sollen.
Bei den Maschinenbefehlen mit fester Länge ist der Operandenteil ebenfalls fest und somit
sind nur Adressierungsverfahren möglich, deren Operandenadresse in das Befehlsformat
hineinpassen.
Rechnerarchitektur
Maschinentypen
Ist im Befehlsformat kein Operandenfeld für die Adressierung vorgesehen, so nennt man
diese Architektur
- 0-Adreß-Maschine oder Stack-Maschine
Die Befehle beziehen sich immer implizit auf spezielle Register, in diesem Fall auf den ’top-
of-stack’.
Ist im Befehlsformat ein Operandenfeld für die Adressierung vorgesehen, so kann man ne-
ben dem impliziten Register einen Speicheroperanden referenzieren. Monadischen Opera-
tionen werden auf das implizite Register, den Akkumulator, angewendet. Dyadischen
Operationen verknüpfen den Inhalt des Akkumulators mit dem Inhalt der durch die Operan-
denadresse referenzierten Speicherzelle.
Diese Architektur heißt
z.B. 16-bit
ADR ext. fields und n x 16-bit
OPC EA effective Address
Sind im Befehlsformat zwei Operandenfelder für die Adressierung vorgesehen, so kann man
bei dyadischen Operationen direkt zwei durch den Befehl referenzierten Speicherzellen ver-
knüpfen.
Diese Architektur heißt
- Zwei-Adreß-Maschine
Operandenfelder ADR ext. fields
OPC EA1 EA2
Destination Source
Beispiele
Die Drei-Adreß-Maschine kann drei Operanden pro Befehl referenzieren. wird aber zumeist
nur als Register-Register-Maschine mit festem Befehlsformat realisiert (->RISC).
Vorlesung Einführung in die Technische Informatik Seite 14
Rechnerarchitektur
Klassifikation von Befehlen
• Transportbefehle; sie dienen dazu, Daten von einem Ort an einen anderen zu
übertragen. Speicherbefehle schreiben Registerinhalte in den Arbeitsspeicher,
Ladebefehle transportieren aus dem Speicher zu lesende Daten ins Register.
Register-Register-Transporte werden ebenfalls als Laden bezeichet, Speicher-
Speicher-Transporte als Speichern. Transport mit Sofortoperanden dient zum
Initialisieren von Register- oder Speicherinhalten.
• Arithmetische Befehle; sie dienen dazu, Operanden gemäß den vom Prozessor
unterstützten Zahlen/Datentypen zu manipulieren (Betragszahlen, ganze Zah-
len, Gleitkommazahlen, Bytes; Addition, Subtraktion, Multiplikation, Divisi-
on, Invertierung usw.).
Rechnerarchitektur
Adressierungstechniken
• register direct; Register direkt; der Operand steht in dem angegebenen Regi-
ster.
• Speicher direkt; der Operand steht in der per Adresse angegebenen Speicher-
zelle. Die Adresse steht direkt im Adreßteil des Befehlswortes.
• register indirect; Register indirekt; im angegebenen Register findet sich die
Speicheradresse des Operanden.
• Speicher indirekt; in der per Adresse angegebenen Speicherzelle steht die Spei-
cheradresse des Operanden.
• register indirect with index; ... indiziert; zur Operandenadresse wird der Inhalt
eines zusätzlich angegebenen Indexregisters hinzuaddiert.
• ... Basisregister relativ; zur Operandenadresse wird der Inhalt eines besonderen
Registers (des Basisregisters), das nicht ausdrücklich im Befehl genannt wird,
dazuaddiert.
• Register indirekt mit Prädekrement; -(An); vor dem Operandenzugriff wird das
im Befehl angegebene Register im Inhalt um 1 vermindert, dann wird der Inhalt
als Adresse des Operanden ausgewertet.
Mit den letzten beiden Adressierungsarten können gut die Stackoperationen "Push" und
"Pop" realisiert werden (->Stack).
Vorlesung Einführung in die Technische Informatik Seite 16
Rechnerarchitektur
Adressierungstechniken des MC 68000
The addressing modes of a CPU determine the way in which a processor can reference an
operand held in one of its registers or in memory. For each operand, the addressing mode
specifies how the processor is to locate or calculate the actual address of the operand. This
actual address is called the effective address EA.
EA-field 6-bit
8 Datenregister und 8 Adreßregister adressierbar
3-bit 3-bit
Die große Anzahl der Adressierungsmodi ist typisch für die Generation der ersten Mikro-
prozessoren, die mehr oder weniger nach dem Vorbild der PDP11 entworfen wurden. Ihre
Komplexität und die teilweise damit verbundene lange Ausführungszeit eines Befehls führte
zu der Entwicklung der -> Load/Store-Architekturen.
Vorlesung Einführung in die Technische Informatik Seite 17
Rechnerarchitektur
Adressierungsart "Register direkt".
Die Operandenadresse ist ein Register (Datenregister, Adreßregister, Statusregister).
Beispiel:
Datenspeicher Datenspeicher
15 8 7 0 15 8 7 0
PC 00008004 PC 00008006
Vorlesung Einführung in die Technische Informatik Seite 18
Rechnerarchitektur
Generation: EA = Dn
Assembler syntax: Dn
Mode: 000 31 0
Register: n
Data register: Dn Operand
Number of extension words: 0
Generation: EA = An
Assembler syntax: An
Mode: 001 31 0
Register: n
Address register: An Operand
Number of extension words: 0
Generation: EA = (An)
Assembler syntax: (An)
Mode: 010 31 0
Register: n
Address register: An Memory address
31 0
Memory address: Operand
Number of extension words: 0
Generation: EA = (An)
An = An + Size
Assembler syntax: (An)+
Mode: 011 31 0
Register: n
Address register: An Memory address
31 0
Memory address: Operand
Number of extension words: 0
Vorlesung Einführung in die Technische Informatik Seite 19
Rechnerarchitektur
Registermodell
31 16 15 8 7 0
D0
D1
Acht Daten-
D2 Register
D3
D4
D5
D6
D7
31 16 15 0
A0
A1
A2 Acht Adress-
Register
A3
A4
A5
A6
USER STACK POINTER A7 davon ein Stackpointer
SUPERVISOR STACK POINTER A7’
31 24 23 0
PC Programmzähler
15 8 7 CCR 0
SYSTEM USER SR Statusregister
BYTE BYTE
Rechnerarchitektur
Statusregister (SR)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
T S I2 I1 I0 X N Z V C
Trace-
Betriebsart
Extend
Supervisor- (Erweiterung)
Bit
Negativ
Interrupt-Maske
Zero
Bedingungscodes (Null)
(Condition Codes)
Überlauf
(Overflow)
Carry
(Übertrag)
Das CPU 32 Manual, das die gesamten Befehle und Adressierungsarten des MC68000 Pro-
zessors enthält, findet man im "Netz" unter folgender URL:
http://mufasa.informatik.uni-mannheim.de/lsra/tools/bsvc/bsvc.html
.
Vorlesung Einführung in die Technische Informatik Seite 21
Rechnerarchitektur
Byte Ordering
There are two different conventions for ordering the bytes within a longer data type as word,
long word, etc. Bid Endian byte order puts the most significant byte of the data type (the
big end) to the address xxxx00. Little Endian puts the least significant byte of the data type
(the little end) to the address xxxx00. The data type ‘byte’ has the same arrangement on both
‘byte sexes’.
Bytes
Base Address : 800
B0 = Byte 0
etc.
Words (16 bit)
When operating within one machine, the byte sex is normally unnoticable. Byte order is a
problem when exchanging data among machines with different orderings.
A special protocol is required to type tag all data types larger than bytes. These tags allow
the rearrangement of the byte order for the machine. This can be performed at the sending
or the receiving side (-> XDR Protocol).
Vorlesung Einführung in die Technische Informatik Seite 22
Rechnerarchitektur
Memory Alignment
Die Ausrichtung von Datenobjekten auf Speicheradressen nennt man Alignment. Die Adres-
sierung von Datenobjekten im Speicher erfogt i.A. auf der Basis der kleinsten Einheit, mei-
stens dem Byte. Größere Datentypen könnten damit an jeder möglichen Byteadresse
beginnen. Ist die Datenbreite des Speichers z.B. 32 bit, so könnte ein long word Operand,
der auf einer ungeraden Byteadresse beginnt (-----01)2 zu mehreren Speicherzugriffen füh-
ren, bei denen nur Teile des Operanden geholt werden können. Architekturen, die solche Zu-
griffe unterstützen, haben keine Restriktionen auf die Anordnung der Datenobjekte im
Speicher (unrestricted data alignment). Der Nachteil ist, das die Anzahl der erforderlichen
Hauptspeicherzugriffe erhöht wird.
Will man diesen Nachteil vermeiden, so muß man bestimmte Restriktionen für die Anord-
nung der Datenobjekte im Speicher einführen. Dieses Alignment ist aus Leistungsgründen
und zur Vereinfachung der Hardware des Speicherports sehr wichtig. Damit verbietet man
eine Anordnung des Longwords wie im obigen Beispiel. Eine solche Anordnung der Daten-
objekte im Speicher nennt man dann missaligned.
Versucht man auf ein längeres Datenobjekt mit einer ‘missaligned’ Adresse zuzugreifen
(was die Hardware nicht kann!!), so wird eine Ausnahmebehandlung (Exception) ausgelöst,
der sogenannte ‘Missaliged Trap’ (->Trap).
Die 68xxx -Prozessorfamilie hat je nach Implementierung unterschiedliche Alignments, wo-
bei zumindest die Instruktionen immer auf 16-bit Kanten beginnen müssen. Der 68000 Si-
mulator erwartet auch für die Daten ein 16-bit Alignment.
Die meisten Architekturen benutzen als minimales Alignment die Wortbreite ihrer Register.
.align 2
Hierbeit stellt 2 die Anzahl der Bytes für das Memory Alignment dar.
Vorlesung Einführung in die Technische Informatik Seite 23
ADD.sDn,<ea>
Rechnerarchitektur
Bedingte Sprünge; ‘Conditional Branches’
Label:
branch back
SUB generation of condition code
pair of Loop
instructions
BNE branch on condition code CC true (1)
CC ?
PC++ Branch
Successor
branch forward
Branch
Target PC + d
Label:
The branch condition table presents the abreviations of the conditions and their coding
Vorlesung Einführung in die Technische Informatik Seite 29
Rechnerarchitektur
The DBcc instruction can cause a loop to be terminated when either the specified condition
CC is true or when the count held in Dn reaches -1. Each time the instruction is executed,
the value in Dn is decremented by 1.
IF (CC == true)
THEN PC++
ELSE {
Dn--
IF (Dn == -1)
THEN PC++
ELSE PC <- PC + d
}
Rechnerarchitektur
Unterprogramme; Subroutines
When the subroutine is called during execution of programs, its instructions are executed
and control is then returned to the next instruction in sequence following the call to the sub-
routine.
The instruction BSR and JSR cause a transfer of control to the beginning address of a sub-
routine. In the Branch to Subroutine statement
BSR <label>
the <label> operand causes the assembler to calculate the displacement between the BSR in-
struction and the instruction identified by <label>.
The instruction RTR and RTS finishes the subroutine and return to the instruction following
the "call".
subroutine
Save PC++
BSR
Restore PC++
return
Vorlesung Einführung in die Technische Informatik Seite 31
Rechnerarchitektur
Stack
Ein Stack ist ein wichtiges Hilfsmittel, das die Verarbeitung von Unterprogrammen und Un-
terbrechungen (Interrupts) ermöglicht. Man kann einen Stack entweder direkt in Hardware
auf dem Prozessorchip realisieren oder mit Hilfe eines Stackpointers in den Hauptspeicher
abbilden. Die erste Methode ist zwar schneller, erfordert aber mehr Chipfläche als ein ein-
ziges Register. Ein weiterer Vorteil der Stackpointer-Methode besteht darin, daß die Spei-
chertiefe des Stacks durch zusätzlichen Hauptspeicher beliebig vergrößert werden kann.
Ein Stack arbeitet nach dem LIFO-Prinzip (Last In First Out). Dabei sind nur zwei Opera-
tionen erlaubt: PUSH und POP. Mit der PUSH-Operation wird ein Datenwort auf den Stack
gelegt und mit der POP-Operation wird es wieder zurückgeholt. Während des Zugriffs auf
den Hauptspeicher wird der Stackpointer als Adresse (Zeiger) benutzt. Außerdem wird der
Stackpointer durch die Ablaufsteuerung so verändert, daß ein Zugriff nach dem LIFO-Prin-
zip erfolgt.
Es gibt zwei Möglichkeiten, den Stackpointer zu verändern:
1. vor der PUSH-Operation und nach der POP-Operation
2. nach der PUSH-Operation und vor der POP-Operation.
base
address
Bottom Top
Beachten Sie, daß die Darstellung des Speichers mit niedrigen und höheren Adressen auch
vertauscht dargestellt werden kann!
Vorlesung Einführung in die Technische Informatik Seite 32
Rechnerarchitektur
Stack
Betrachten wir den Fall, das der Stack zu den niedrigen Adressen hin wächst, so hat die
PUSH-Operation folgende Auswirkung:
after PUSH
before PUSH
to lower address
000000 to lower address 000000
(free)
base base
address address
Die Organisation des Stacks ist prozessorspezifisch. Meist beginnt er am Ende des Haupt-
speichers und "wächst" nach niedrigeren Adressen. Für diesen Fall beginnt das Programm
am Anfang des Hauptspeichers. An das Programm schließt sich der Datenbereich an. Der
Stack darf niemals so groß werden, daß er den Daten- oder sogar Programmbereich über-
schreibt (Stack-Overflow). Wenn durch einen Programmierfehler (zu viele Unterprogramm-
aufrufe ohne entsprechende Returns from Subroutine) der Stack überläuft, muß das
Betriebssystem das betreffende Programm abbrechen.
Stack Placement
in Memory
fffffe
(free)
base
address to higher address
Stack
(SP) -> .stack
(free)
Data
.data
to lower address
Program
000000 .text
Vorlesung Einführung in die Technische Informatik Seite 33
Rechnerarchitektur
Beispielprogramm: Vektoraddition
ORG $0
LEA $4000,SP init stack pointer
BRA START
Rechnerarchitektur
Argument Passing
The information needed by the subroutine is defined in terms of parameters which allow the
subroutine to handle general cases rather than operate on specific values. Each subroutine
call allows different values to be supplied as input parameters and output parameter passed
back as results.
There are different methodes to transfer the parameters, depending of the memory used to
supply values.
• register
• stack
• parameter areas
• in-line
• Register transfer
When only a small number of arguments are to be transferred, they can be passed directly
between the main program and the subroutine in the processor registers. Data structures such
as arrays are passed by the address that points to the start of the data structure.
Notice the distiction between to calling mechanisms:
- call-by-value
- call-by-reference
Call-by-value passes a copy to the subroutine, which can be altered, but has no effect outside
the subroutine.
Call-by-reference passes only a pointer to the data or the data structure, thus giving the sub-
routine complete access to the data structure. The data values may be changed by the sub-
routine.
This parameter passing is restricted to only a small number of arguments which have to fit
into the registers of the processor. The advantage of this kind of is argument passing is a very
fast call, because there is no main memory access required for saving and loading of para-
meters.
• Stack transfer
A stack can be used to pass arguments by having the calling routine push values or addresses
on the stack before the call. Popping the arguments in the subroutine give access to the va-
lues or addresses. For programs running in user mode the active stack pointer is the USP.
The following example shows the passing of input parameter to a subroutine and the addres-
sing of the values by the subroutine.
MOVE.W VAL1,-(SP) ;PUSH FIRST VALUE TO STACK
MOVE.W VAL2,-(SP) ;PUSH SECOND VALUE TO STACK
;STACK increases to lower memory
BSR SUBR
...
SUBR MOVE.W D1,-4(SP) ;MOVE OF VAL1 TO D1
MOVE.W D2,-6(SP)
ADD.W D1,D2
...
Vorlesung Einführung in die Technische Informatik Seite 35
Rechnerarchitektur
• Parameter areas
When large numbers of parameters are to be passed, a parameter area in memory can be
used. The area contains values and/or addresses that are accessed by the subroutine. The
same area could be used by several subroutines requiring different parameters as long as the
area is large enough to hold the maximum number of arguments.
• In-line coding
This method defines argument values which are constant and will not change after assembly.
These values can be defined by DC directives following the call.
JSR SUBR
DC.W 1 ; DEFINE CONSTANT IN CODE AREA
...
Stack Frames
One of the principal issues in the design of subroutines involves the concept of transparency.
Simply stated, when a subroutine finishes executing, it should have no "visible" effect ex-
cept as defined by its linkage to the calling program. For example, a subroutine should not
change the values in any registers, unless a register is used to return a result. In some pro-
grams this is accomplished by pushing the contents of the registers used by the subroutine
on the stack upon entry to the subroutine. The values are restored before returning to the cal-
ling program. The return address is automatically saved and restored by the JSR and RTS
instructions. The use of the system stack to save and restore the return address and the con-
tents of registers used within the subroutine assures that the details of the subroutine opera-
tion are transparent to the calling program. If a subroutine itself makes a subroutine call, the
use of the stack for temporary storage of register contents by each subroutine and for each
return address allows such nesting of subroutine calls without difficulty. This concept of
using the stack to store data temporarily during subroutine execution can be extended by de-
fining a stack frame.
The stack frame is a block of memory in the stack that is used for return addresses, input
parameters, output parameters, and local variables. It is the area of the stack accessed by a
subroutine during its execution. Local variables are those values used during the subroutine
execution that are not transferred back to the calling routine. A loop counter, for example,
which changes as the subroutine performs each iteration might be defined as a local variable.
On each call to the subroutine, a new set of parameters, local variables, and return addresses
can be accessed by a subroutine using the stack frame technique. If the subroutine is called
before it is completely finished, the values in the stack frame will not be destroyed.
Vorlesung Einführung in die Technische Informatik Seite 36
Rechnerarchitektur
Subroutine Usage and Argument passing
;; Program operation creating a stack frame
;; ________________________________________
;; Calling Program
BREAK ;
;; Subroutine
UNLK A1 ; RESTORE
RTS ; RETURN
END
Vorlesung Einführung in die Technische Informatik Seite 37
Rechnerarchitektur
SP Ret PC
SP X X
SP ARG ARG ARG
SP
SP
(a) before (b) after (c) after (d) after (e) after
first Instr. ADD.L MOVE.L PEA JSR
FFFF
(free)
SP
Local
Area
-4(A1)
Displacment Addressing
within Subroutine
FP Old FP
Ret PC SP Ret PC
FP=(A1)
X X SP X (free)
ARG ARG ARG
SP
16(A1)
Output Output Output Output
Area Area Area Area
Rechnerarchitektur
Processor Operating Modes
User Supervisor
Mode Mode
more privileges
T S I0 I1 I2 CCR T S I0 I1 I2
SR SR
Read only R/W R/W by special operations to SR
MOVE to SR
no modification of
ANDI to SR
• Trace bit
ORI to SR
• Supervisor bit
...
• Interrupt Mask
Special System Instructions
RESET
STOP
RTE
Vorlesung Einführung in die Technische Informatik Seite 39
Rechnerarchitektur
Exception Processing
TRAPs
Program TRAPs
Vectors
TRAP Instruction
$080-$0BC Instruction to CALL service from Operating System
normal execution
Unimplemeted Instructions
$028-$02C Opcodes 1010 ; 1111 (FP-Emulation)
normal execution
CHK Instruction
$018 wrong array reference
range check
DIV_ Instruction
$014 abort program
division by zero
TRAP V Instruction
$01C overflow detection
exec. when V=1
Error TRAPs
Privilege Violation
$028-$02C Opcodes 1010 ; 1111 (FP-Emulation)
tried to execute priv. Instr.
Illegal Instruction Address Error Bus Error
Vorlesung Einführung in die Technische Informatik Seite 40
Rechnerarchitektur
Interrupts
Interrupts are externally generated requests for exception processing. They allow external
devices to interupt the processor execution at any time of the program execution (asynchro-
nously). The control flow of the processor is switched to the interrupt-handling routine, na-
med interrupt service routine (ISR). There are mechanisms to disable the immediate
response to the interrupt signal (Masking and/or Priority).
Interrupt Types
• non-masked interrupt requests (IRQs)
highest priority; used for immediate error handling
• masked IRQs
Mask-bit of CPU; disabling of interrups within critical program segments
• prioritized IRQs
multiple levels; introduction of priorities in order to weight the devices con-
cerning their importance for service; can be implemented by hardware or soft-
ware.
Interrupt Processing Sequence
Device Processor
user program supervisor program
event Save SR internally
IRQ Set S=1, T=1
determine Vector No. (which device)
Push PC++ -> SSP
Push SR -> SSP
PC <- (Vector base + Vector) Jump to ISR
ISR
Rechnerarchitektur
Hardware Structure of IRQ-Signaling
Device Processor
event
SR
DATA
IRQ to Instruction-
Processor
CR
MaskR
IRQ2
IRQ1
IRQ0
Vorlesung Einführung in die Technische Informatik Seite 42
Rechnerarchitektur
Memory Management
R/W
R/W RAM
Beim Multi-processing oder Multi-user Systemen reicht die oben genannte Möglichkeit,
den Speicher zu organisieren, nicht aus.
In den gängigen Architekturen wird mit 32 Bit adressiert. Daraus folgt die Größe
des virtuellen Adressraums mit 232
......
400
.text 2
0 0
Memory fragmentation
Vorlesung Einführung in die Technische Informatik Seite 43
Rechnerarchitektur
Virtueller Speicher / Paging
Logischer und physikalischer Adressraum werden in Seiten fester Größe unterteilt, meist 4
KByte. Logische Pages werden in einer Pagetable auf physikalische Pageframes abgebildet,
dabei ist der logische Adressraum im allgemeinen wesentlich größer als der physikalisch
vorhandene Speicher. Nur ein Teil der Pages ist tatsächlich im Hauptspeicher, alle anderen
sind auf einen Sekundärspeicher (Platte) ausgelagert.
Die Pagetable enthält für jeden Eintrag einen Vermerk, ob die Seite im Hauptspeicher vor-
handen ist (P-Bit / present). Ausgelagerte Pages müssen bei einer Referenz in den Haupt-
speicher geladen werden, ggf. wird dabei eine andere Page verdrängt. Modifizierte Seiten
(M-Bit / modify) müssen dabei auf den Sekundärspeicher zurückgeschrieben werden. Dazu
wird ein weiteres Bit eingeführt, das bei einem Zugriff auf die Seite gesetzt wird (R-Bit /
referenced)
Replacement-Strategien :
- not recently used - NRU
mithilfe der Bits R und M werden vier Klassen von Pages gebildet
0: not referenced, not modified
1: not referenced, modified
2: referenced, not modified
3: referenced, modified
es wird eine beliebige Seite aus der niedrigsten nichtleeren Klasse entfernt
- FIFO
die älteste Seite wird entfernt (möglicherweise die am häufigsten benutzte)
- Second-Chance / Clock
wie FIFO, wurde der älteste Eintrag benutzt, wird zuerst das R-Bit gelöscht und
die nächste Seite untersucht, erst wenn alle Seiten erfolglos getestet wurden,
wird der älteste Eintrag tatsächlich entfernt
- least recently used - LRU
die am längsten nicht genutzte Seite wird entfernt, erfordert Alterungsmechnis-
mus
Vorlesung Einführung in die Technische Informatik Seite 44
Rechnerarchitektur
Virtueller Speicher / Paging
Bei modernen 32 Bit Prozessoren und einer Seitengröße von z.B. 4 KByte wird die Pageta-
ble sehr groß, z.B. 4 MByte bei 32 Bit Pagetable Einträgen. Da meist nicht alle Einträge ei-
ner Tabelle wirklich genutzt werden, wird eine mehrstufige Umsetzung eingeführt. Zum
Beispiel referenzieren die obersten Adressbits eine Tabelle eährend die mittleren Bits den
Eintrag in dieser Tabelle selektieren.
- einzelne Tabellen werden kleiner und in der zweiten Stufe werden nur
wenige Tabellen benötig
- die Tabellen der zweiten Ebene können selbst ausgelagert werden
Pagetables können aufgrund ihrer Größe nur im Hauptspeicher gehalten werden. Zum Be-
schleunigen der Adressumsetzung, insbesondere bei mehrstufigen Tabellen, wird ein Cache
verwendet. Dieser Translation Lookaside Buffer (TLB) enthält die zuletzt erfolgten Adres-
sumsetzungen. Er ist meist vollassoziativ ausgeführt und enthält z.B. 64 Einträge. Neuer-
dings wird auch noch ein setassoziativer L2-Cache davorgeschaltet.
Pagetables sind prinzipiell cachable, allerdings werden die Einträge wegen ihrer relative sel-
tenen Benutzung (im Vergleich zu normalen Daten) schnell aus dem allgemeinen Cache ver-
drängt.
Vorlesung Einführung in die Technische Informatik Seite 45
Rechnerarchitektur
Memory Hierarchy
Definition : A memory hierarchy is the result of an optimization process with respect to techno-
logical and economic constrains. The implementation of the memory hierarchy con-
sists of multiple levels, which are differing in size and speed. It is used for storing
the working set of the ‘process in execution’ as near as possible to the execution
unit.
- secondary caches
denser
- main memory off chip larger
The mechanisms for the data movement between levels may be explicit (for registers, by
means of load instructions) or implicit (for caches, by means of memory addressing).
CPU Chip
CPU
2-5ns Register Files
Tapes
Registers are the fastest storage elements within a processor. Hence, they are used to keep
values locally on-chip, and to supply operands to the execution unit(s) and store the results
for further processing. The read-write cycle time of registers must be equal to the cycle time
of the execution unit and the rest of the processor in order to allow pipelining of these units.
Data is moved from and into the registers by explicit software control.
Vorlesung Einführung in die Technische Informatik Seite 46
Rechnerarchitektur
Due to the fixed size of the instruction word the register select fields have the same width (5
bits) as in the register file structure. The large RF requires more address bits and therefore
the addressing is done relatively to the window pointer.
Rechnerarchitektur
Caches are the next level of the memory hierarchy. They are small high speed memories em-
ployed to hold small blocks of main memory that are currently in use.
The principle of locality, which justifies the use of cache memories, has two aspects:
- locality in space or spatial locality
- locality in time or temporal locality
Most programs exhibit this locality in space in cases where subsequent instructions or data
objects are referenced from near the current reference. Programs also exhibit locality in time
where objects located in a small region will be referenced again within a short periode. In-
structions are stored in sequence, and data objects normally being stored in the order of their
use. The following figure is an idealized space/time diagram of address references, repre-
senting the actual working set w in the time interval Δτ.
Address
Space
Data
Δτ
Data w ( T, T + Δτ)
Instruction
T T+ Δτ time
Caches are transparent to the software. Usually, no explicit control of cache entries is possi-
ble. Data is allocated automatically by cache control in the cache, when a load instruction
references the main memory.
Vorlesung Einführung in die Technische Informatik Seite 48
Rechnerarchitektur
Cache memory design aims to make the slow, large main memory appear to the processor
as a fast memory by optimizing the following aspects:
- maximizing the hit ratio
- minimizing the access time
- minimizing the miss penalty
- minimizing the overhead for maintaining cache consistency
Tm 1
Gcache = =
( 1 - H ) Tm + H Tc Tc
(1-H) +H
Tm
miss ratio hit ratio
H
0 0.5 1
The hit ratio of the cache (in %) is the ratio of accesses that find a valid entry (hit) to accesses
that failed to find a valid entry (miss). The miss ratio is 100% minus hit ratio.
The access time to a cache should be significantly shorter than that to the main memory. On-
chip caches (L1, primary caches) normally need one clock tick to fetch an entry.
Access to off-chip caches (L2, secondary caches) is dependent on the chip-to-chip delay, the
control signal protocol, and the access time of the external memory chips used.
Vorlesung Einführung in die Technische Informatik Seite 49
Rechnerarchitektur
One of the most important features of the cache organization is the mapping principle. Three
different strategies can be distinguished, but the range of caches - from directly mapped to
set associative to fully associative - can be viewed as a continuum of levels of set associati-
vity.
(more details in -> Rechnerarchitektur 1)
The main memory is the lowest level in the semiconductor memory hierarchy. Normally all
data objects must be present in this memory for processing by the CPU. In the case of a de-
mand-paging memory, they are fetched from the disk storage to the memory pages on de-
mand before processing is started. Its organization and performance are extremely important
for the system’s execution speed. Due to the cost-performance ratio mostly all main memory
implementation uses DRAMs. The simplest form of memory organization is the word-wide
memory, matching the bus width of the external processor interface.
High-performance processors need more memory bandwidth than a simple one-word mem-
ory can provide. The access and cycle times of highly integrated dynamic RAMs are not
keeping up with the clock speed of the CPUs. Therefore, special architectures and organiza-
tions must be used to speed-up the main memory system.
(more details in -> Rechnerarchitektur 1)
Vorlesung Einführung in die Technische Informatik Seite 50
Rechnerarchitektur
Schichtenmodell der Interpretationsebenen
HLL-Compiler
IML
Zwischensprache
Compiler Backend
ASL
Assemblersprache
Assembler
Software CML
konventionelle Maschinensprache
Hardware
CML-Interpreter
MPL
Mikroprogrammsprache
Mikro-
Programm Interpreter
NPL
Nanoprogrammsprache
Nano-
Programm Interpreter
HW-Kontrollvektor
Funktionseinheiten des Prozessors
Auf die Ebenen der Mikroprogrammierung und Nanoprogrammierung wird heute in Hoch-
leistungsprozessoren meist verzichtet, um die Interpretation und Ausführung der Befehle
schnell zu machen. Daraus ergibt sich, daß die Befehle einfach sein sollten, um den HW-
Kontrollvektor durch einfache Schaltnetzfunktionen aus der Instruktion ableiten zu können.
Die Nachbildung der komplexen Befehle durch eine Sequenz einfacher Befehle wird in den
Backendteil des Compilers verschoben.