10. Rechnerarchitektur und Assemblerprogrammierung

Transcription

10. Rechnerarchitektur und Assemblerprogrammierung
10. Rechnerarchitektur und
Assemblerprogrammierung
Inhalt:
 Schichtenmodell
 Konvertierung zwischen Schichten
 Neue Funktionen in Hardware oder Software?
 Rechnerarchitektur
 Assemblersprache und Einbindung in C
Peter Sobe
Informatik I, Sommersem. 2012
1
Schichtenmodell
 Strukturierung des Rechensystems (Hardware und Software) in
mehrere aufeinander liegende Schichten.
 Höhere Schichten benutzen darunter liegende über Schnittstellen
 Nur die Schnittstellen sind nach oben sichtbar, die Implementierung
der zugehörigen Schicht bleibt verborgen (’information hiding’).
 Schichten können ausgetauscht werden (unter Beibehaltung ihrer
Schnittstelle), ohne dass die darüber liegenden Schichten geändert
werden müssen.
Beispiel: Verschiedene Sprachschichten
High-level language level (C):
A = B + C;
Peter Sobe
Assembly language level (MC68020):
MOVE.W
B, D1
ADD.W
C, D1
MOVE.W
D1, A
2
Beispiel
Machine language level (MC68020) (in bits):
1000:
MOVE.W
(0x2002).W,D1
0011
0010
0010
0000
0011
0000
1000
0010
1004:
ADD.W
(0x2004).W,D1
1101
0010
0010
0000
0111
0000
1000
0100
1008:
MOVE.W
D1,(0x2000).W
0011
0010
0001
0000
1100
0000
0001
0000
2000:
A
2002:
B
2004:
C
Peter Sobe
3
Beispiel
Die C-Anweisung summe = a + b + c + d;
ist für einen Assembler zu kompliziert und muss daher in
mehrere einzelne Anweisungen aufgeteilt werden.
Ein Prozessor kann immer nur zwei Zahlen addieren und
das Ergebnis in einer der beiden verwendeten "Variablen"
(Akkumulatorregister) speichern.
Das Programm oben entspricht daher eher einem
Assemblerprogramm:
…das würde beim x86
so aussehen:
summe = a;
mov eax,[a]
summe = summe + b;
add eax,[b]
summe = summe + c;
add eax,[c]
summe = summe + d;
add eax,[d]
Peter Sobe
4
Schichtenmodell
 Schnittstelle zu Level 2 entspricht
Rechnerarchitektur
 Schicht Level 1 wird im Allgemeinen zur
Hardware gerechnet, obwohl sie auch
Mikroprogramme (Firmware) enthalten
kann. Heute aber meist fest verdrahtete‚
Ablaufsteuerungen (Hardware).
 Einzelne Schichten sind intern selbst
wieder in Schichten unterteilt.
 Systementwurf muss auch
Wechselwirkung zwischen Schichten
berücksichtigen.
Peter Sobe
5
Konvertierung zwischen Schichten (1)
- Compilierung von Programm Phigh auf Plow (Sprache Lhigh auf Llow)
(Beispiel: C-Compiler)
Source
program
Compiler
Phigh (Lhigh)
Object
program
Object
program
Plow (Llow)
Hardware
Hardware
Execution
Execution
In Visual-Studio wird ein Programm durch “Erstellen“ übersetzt, d.h. es
wird die Compilierung vorgenommen.
Peter Sobe
6
Konvertierung zwischen Schichten (2)
Interpretation von Lhigh auf Llow (Beispiele: Mikroprogramme, BasicInterpreter)
Source
program
Lhigh
Machine
instructions
Interpreter
Phigh (Lhigh)
Llow
Hardware
Execution
Eine umgekehrte Konvertierung von einer tieferen auf eine höhere Schicht
ist im Allgemeinen nicht mehr möglich, da Semantik verloren geht
(’semantic gap’)
Peter Sobe
7
Konvertierung zwischen Schichten (3)
Level3: Hybride Schicht:
Einige Befehle von Level3 (z. B.
ADD) sind identisch mit Level 2.
Dazu kommen Betriebssystemaufrufe (system calls) wie
open(), write(),gettimeofday() etc.,
die von L3 interpretiert werden.
Level2: Die Mikroarchitekur auf Level1
interpretiert die Maschinensprache
(per Mikroprogramm oder
festverdrahtet).
Peter Sobe
Level1: Die Mikro-Operationen bzw.
Steuerungen des Leitwerks werden
durch die digitalen Schaltkreise aus
Schicht Level0 interpretiert
(’Hardware-Interpreter’).
8
Konvertierung zwischen Schichten (4)
Level 5
Problem-oriented language
Translation (compiler)
Level 4
Assembly language
Translation (assembler)
Level 3
Operating system machine
Partial interpretation
(operating system)
Level 2
Instruction set architecture
Interpretation (microprogram)
or direct execution
Level 1
Microarchitecture
Interpretation
(Hardware)
Level 0
Digital logic
Schichtenmodell kann auch als eine
Hierarchie immer abstrakter virtueller
Maschinen aufgefasst werden.
Level5: Eine höhere Programmiersprache wird durch Compilation oder
Interpretation auf die Schnittstelle zu
Level4 konvertiert. Level5 stellt eine
virtuelle Maschine dar.
Level4 stellt eine virtuelle Maschine dar,
die dem Benutzer als Schnittstelle
Assemblerbefehle plus Systemaufrufe
anbietet.
Level4: Assembler auf Schicht Level4
übersetzt ein Assemblerprogramm
in die erweiterte Maschinensprache (inkl. Systemaufrufe).
Einfache Form von Compilation.
Peter Sobe
9
Implementierung neuer Schichten
Beispiel:
’Spracherweiterung’ durch Prozeduren in C.
Hybride Schicht: Schnittstellen der alten
Schicht bleiben weiter sichtbar.
Modulkonzept (Funktionen und
Bibliotheken) erlaubt Einführung einer
echten Schicht (tiefere Schnittstellen
werden in Implementierung verborgen).
Peter Sobe
10
Funktionen in Hardware oder Software ?
Peter Sobe
11
Funktionen in Hardware oder Software ?
Hardware (Entwicklung eines Mikroprozessors):
schnell, aber unflexibel, teurer
Software:
leicht änderbar, langsamer, billiger
Beispiel:
Implementierung eines neuen Datentyps mit
zugehörigen Operationen
 als Speicherstruktur mit Funktionen (Softwarebibilothek)
 als Datentyp der Programmiersprache (Übersetzer)
 als Maschinendatentyp (Hardware)
Peter Sobe
12
Funktionen in Hardware oder Software ?
Vergleich: Realisierungsvarianten von Funktionen
y[i ]  w1  x[i ]  w2  x[i  1]  w3  x[i  2]  w4  x[i  3]
Software: Befehlsfolge auf universalProzessor (links)
• Register x1 bis x3 werden
nach x2 bis x4 umkopiert
• Adressrechnung für x[i]
• Register x1 (x[i]) wird aus
Speicher geladen
• Multiplikationen und
Additionen
• Adressrechnung für y[i]
• Speichern von y[i]
Zugehörige Strukturen und Datenpfad
rechts dargestellt
Peter Sobe
13
Funktionen in Hardware oder Software ?
y [ i ]  w1  x [ i ]  w 2  x [ i  1]  w 3  x [ i  2 ]  w 4  x [ i  3 ]
Hardware:
Funktionsspezifische
Realisierung
z.B. durch
FPGA
Peter Sobe
14
Rechnerarchitektur
Rechnerarchitektur (RA) nach Amdahl/Blaauw/Brooks,
1964 (Architekten des IBM System/360):
“The term architecture is used here to describe the
attributes of a system as seen by the programmer, i. e.
the conceptual structure and functional behavior, as
distinct from the organization and data flow and control,
the logical design and physical implementation.”
Architektur:
Äußeres funktionelles Erscheinungsbild des
Rechners, wie es der unmittelbare Benutzer
(Maschinenprogrammierer) sieht.
Implementierung: Logische Struktur (Organisation), mehrere
Implementierungen der gleichen Architektur
möglich.
Realisierung: Konkrete Version einer Implementierung in
Peter Sobe
Hardware und evtl. Firmware (mehrere
Realisierungen einer Implementierung möglich).
15
Rechnerarchitektur
Als Rechnerarchitektur verstanden:
Äußeres funktionelles Erscheinungsbild
• Anzahl der Prozessorregister, Registerbreite (32
oder 64 Bit) und Einschränkungen für deren
Benutzung
• Liste der Befehle eines Prozessors
• Adressierungsarten, d.h. Art wie Daten von
Befehlen adressiert werden können
Peter Sobe
16
Rechnerarchitektur
Als Rechnerorganisation verstanden, z.T. auch als
Rechnerarchitektur:
Implementierung
Art und Anordnung von Hardwarebausteinen, die
Funktionen der äußeren Sicht realisieren
Beispiel:
Implementierung eines
einfachen Prozessors:
Peter Sobe
17
Rechnerarchitektur
Nicht zu Rechnerarchitektur gezählt:
Konkrete Version einer Implementierung
 Taktfrequenz eines Prozessors
 Strukturbreite der Halbleiterstrukturen
(Beispiel: CellBE PS3 mit 65nm und
CellBE in PS3Slim mit 45nm)
 Cache-Größe
Peter Sobe
18
Beispiel für Rechnerarchitektur (1)
Feldrechnerarchitektur zur datenparallelen
Befehlsverarbeitung (z.B. SIMD Befehlssatzerweiterungen,
oder GPUs)
Leitwerk
u. skalare
Befehle
Programmspeicher
Kontrolleinheit
ADD
MUL
.
.
.
...
PE1
PE2
p Rechenwerke (PEs)
PEp-1
PEp
Privatspeicher
Verbindungsnetzwerk
Peter Sobe
19
Beispiel für Rechnerarchitektur (2)
Prozessorpipeline zur schnellen
Befehlsverarbeitung
S4
ALU
Befehlspipeline
ALU
S1
S2
S3
Instruction
fetch unit
Instruction
decode unit
Oberand
fetch unit
Phasenpipeline
S6
LOAD
Write back unit
STORE
Floating point
Peter Sobe
20
Beschleunigung des Speicherzugriffs (1)
Von-Neumann-Architektur (gemeinsamer Befehls- und Datenspeicher)
Instruction and
Data memory
Universell, aber „Flaschenhals“
Harvard-Architektur (getrennter Befehls- und Datenspeicher)
Instruction memory
CPU
Data memory
VT: Befehle und Daten können
gleichzeitig geholt werden.
NT: Speicher weniger flexibel nutzbar
Speicherverschränkung (Memory Interleaving)
Einteilung des Speichers in mehrere Module, aus denen gleichzeitig
gelesen bzw. geschrieben werden kann.
Verschränkung der unteren Adressbits erlaubt gleichzeitigen Zugriff
auf konsekutive Elemente in Modulen 0, 1, ... 2m - 1.
Peter Sobe
21
Beschleunigung des Speicherzugriffs (2)
Blockschaltbild eines verschränkten Speichers:
n-m
m
Address in module
Module
Decoder
0
Module
2
m
-1
Module
1
2m-1
Module
0
Interleaving-Faktor: 2m
Peter Sobe
22
Beschleunigung des Speicherzugriffs (3)
Data buffer
Module 0
Multiplexer
Module 2m - 1
Single-word bus
Data buffer
low
order Bits
nm- m
high-order
bits
n - m high-order bits
Zeitdiagramm
2m - 1
.
.
.
.
.
.
0
Access 1
Access 2
Access 1
Access 2
M0
OUT
M1
...
Typische InterleavingFaktoren: 4 – 64
Interleaving oft kombiniert
mit dem Blockzugriff von
Cache-Speichern.
M2 1 M0
m
Transfer data of access 1
0
t
Bei entsprechend
schnellem Bus und Zugriff
auf konsekutive
Speicherzellen (z. B.
Vektoren) erscheint der
Speicher um den
Interleaving-Faktor
schneller.
2t
Time
Peter Sobe
23
Cache-Speicher (1)
Lokalitätsprinzip:
 Lokalität ist der Umstand, dass die innerhalb eines kurzen
Zeitintervalls eintretenden Speicherreferenzen die Tendenz
aufweisen, sich nur auf einen kleinen Teil des gesamten
Speicherraums zu beziehen.
 (10/90) Regel: zu 90% der Programmlaufzeit wird auf 10%
des Speicherbereichs eines Prozesses zugegriffen
Cache: ein schneller Zwischenspeicher zwischen CPU und
Hauptspeicher;
 um ein Vielfaches schneller als Hauptspeicher durch engere
Anbindung an Verarbeitungseinheiten und durch bessere
Technologie
 wesentlich kleiner als Hauptspeicher
Peter Sobe
24
Cache-Speicher (1)
Prinzip (Cache für physikalische Adressen):
Platzierung des Caches
im Speicherpfad
Treffer (Cache Hit):
Auslesen bzw. Einschreiben der Daten
kein Treffer (Miss):
Nachladen aus Hauptspeicher
Peter Sobe
25
Cache-Speicher (2)
Meist Einteilung in Blöcke (Linien) à mehreren Worten (Cache
Lines), d. h. Aufteilung der Adressen in Linienadresse (Tag) und
Adresse innerhalb der Linie.
Adresse::
Tag
Bereich für Platzierung
bzgl. Cache-Teilbereiche
Adresse
innerh. Linie
MSB
LSB
Reale Linienadresse (Requested Tag)
wird mittels assoziativem Speicher
Requested tag
mit Tags der Linien im Cache
Tag 0
verglichen.
Tag 1
Line 0
Line 1
Tag memory
Data memory
Tag N
Line N
Miss
Peter Sobe
Data
26
Cache-Speicher (3)
Aufgrund der Lokalität (räumlich und zeitlich) von Programmen
sehr hohe Trefferraten (95 - 98 %).
Oft Kombination mit verschränktem Speicher (stets Transfer ganzer Blöcke).
Heute meist ausgefeilte Cache-Hierarchien, zum Beispiel:
• Level 1-Cache (on chip):
(64...128 KByte)
• Level 2-Cache (extern o. on chip):
(512 KByte...8 MByte)
Level 1-Caches oft in Daten- und Befehlscaches getrennt
(Split-Caches, Harvard-Architektur).
Teilweise auch Level 3-Caches.
Caches konnten im physikalischen Adressraum (hinter der MMU)
oder im logischen Adressraum (vor der MMU) angeordnet sein.
Peter Sobe
27
Ablauf eines Speicherzugriffs
Real address
Search cache tag
memory
Cache hit
NO
YES
Update line status
Get line from cache
Send real address
to main memory
Select cache entry
for replacement
Receive line
Select requested bytes
Store line in cache
Output to CPU
Peter Sobe
28
Platzierungsstrategien
Wo im Cache ist welcher Teil der Hauptspeicherdaten
(Cache Linie) unterzubringen?
Ort ist nicht fest vorgegeben, da die Hauptspeicherdaten
zusammen mit ihrer Adresse im Cache abgelegt werden.
→ Voll-assoziativer Cache
Dennoch ist Ortsvorgabe/ bzw. Einschränkung der
möglichen Orte sinnvoll:
→ Direkt abgebildeter Cache
→ Mengenassoziativer Cache
Peter Sobe
29
Voll-assoziativer Cache (fully associative)
Platzierungsstrategien (Placement Policies)
(Beispiel: 1 MByte Hauptspeicher, 16 KByte Cache)
Cache
Tag
Main memory
Data
Line 0
Line 0
Line 1
Line 1
.
.
.
.
.
.
Line 1023
Da Reihenfolge der Linien im
Cache beliebig, ist ein
Assoziativspeicher für die Tags
erforderlich.
Line 12345
.
.
.
Line 65535
Peter Sobe
Jede Cache-Linie kann jede
beliebige Linie aus dem
Hauptspeicher aufnehmen.
Hohe Trefferrate, aber hoher
Aufwand:
• entweder zusätzlicher Zeitbedarf
durch assoziative Suche
• oder hohe Anzahl von
Komparatoren
30
Direkt abgebildeter Cache (direct mapped)
Cache
Tag
Main memory
Data
Line 0
Line 1
Line 0
Line 1
A mod M = i ; (Restklassen-Einteilung)
Line 2
.
.
.
.
.
.
M: Anzahl Linien pro Cache
Line 1023
Line 1024
Line 1025
Line 1022
Line 1023
Jeder Cache-Eintrag i kann nur Linien mit
Adressen A aufnehmen, für die gilt
.
.
.
Line 16383
Line 16384
Line 16385
.
.
.
Line 65535
Kein assoziativer Speicher erforderlich:
Mittels Adressteil Line wird der zugehörige
Eintrag im Cache direkt ausgewählt. Stimmt
Tag überein, so liegt ein Treffer (Hit) vor.
Vorteile:
• Leicht implementierbar
• Aufwandsarmer Zugriff, da keine assoziative
Suche erforderlich ist
Nachteil:
Geringe Trefferraten wenn Speicherzellen
aus gleicher Restklasse benötigt werden.
Peter Sobe
31
Mengen-assoziativer Cache (set-associative)
Cache
Data
Set 0
Tag
Line 0
Line 0
Line 1
.
.
.
Line 2
Line 3
Line 4
Set 255
Main memory
Line 255
Line 256
.
.
.
.
.
.
Line 1022
Line 16383
Line 1022
Line 16384
Line 1022
.
.
.
Line 1023
Line 65535
M: Anzahl Linien pro Cache
Cache wird in S Mengen eingeteilt.
Wie bei direkter Abbildung Zuordnung der
Adressen A mit
A mod S = i zu Menge i.
Da L = M/S Linien pro Menge vorhanden,
assoziative Suche mittels Tag, ob
gewünschte Linie im Cache liegt.
Spezialfälle:
S = 1: voll-assoziativer Cache
L = 1: direkt abgebildeter Cache
Guter Kompromiss, in der Praxis häufig
eingesetzt.
A: Adresse
Peter Sobe
32
Cache(Replacement
Ersetzungsstrategien
Ersetzungsstrategien
Policies)
Bei (voll-/mengen-)assoziativen Caches muss entschieden werden,
welche Cache-Linie beim Einlagern einer neuen Linie ausgelagert wird:
Häufigste Strategien:
- Random: Auszulagernde Linie wird zufällig ausgewählt.
- LRU (Least Recently Used): Diejenige Linie wird ausgelagert,
die am längsten nicht referenziert worden ist.
LRU ist schwieriger zu implementieren (zusätzlicher Zähler je Cache
Linie).
In einer Studie wurde festgestellt. Dass bei einem 2-fach assoziativen
Cache die Hit Rate nur 1.1 mal höher ist als für Random. Für große
Caches und damit kleine Miss Rate ist der Unterschied nur noch gering.
Peter Sobe
33
Cache Rückspeicherstrategien
Behandlung von Schreibzugriffen:
Write-Through:
Rückspeichern bei jedem Schreiben auf den
Cache (Konsistenz bleibt erhalten!)
Write-Back (Copy Back):Rückspeichern nur bei Ersetzen einer Cache-Linie
(zeitweise Inkonsistenz zwischen Cache und
Hauptspeicher)
Vorteile von Write-Back:
- Prozessor kann mit Cache-Rate schreiben (bei Write Hit), nicht nur mit
Hauptspeicher-Rate.
- Mehrfaches Schreiben in die gleiche Linie erfordert nur einmal das
Rückschreiben in den Hauptspeicher.
- Beim Rückspeichern der Linie kann von Techniken zur Erhöhung der
Speicherbandbreite wie z.B. Speicherverschränkung gemacht werden.
Peter Sobe
34
Cache Rückspeicherstrategien
Vorteile von Write-Through:
- Write-Through ist einfacher zu implementieren. Zur Erhöhung der
Geschwindigkeit kann ein Write Buffer eingesetzt werden, d. h. das
langsame Speichern in den Hauptspeicher wird von einem Puffer aus
abgewickelt, während der Prozessor nach einem Write Hit bereits
weiterläuft.
- Konsistenz mit Hauptspeicher ist vorteilhaft, wenn auch andere
Einheiten (z. B. I/O-Einheiten, andere Prozessoren) auf den
Hauptspeicher zugreifen.
 Multiprozessoren und Cache-Konsistenz/Kohärenz
Peter Sobe
35