| Rechner |
| speziell | universell |
| angepasst an bestimme Aufgabenklassen | für viele unterschiedliche Andwendungen verwendbar |
| Hard- und Software optimiert auf die Anwendung | viele Anforderungen |
| | für Einzelanwendung nicht notwendige Funktionalität |
Bsp:
| Motorsteuergerät | PC |
| nicht anwendertransparent | Rechnernutzung anwendertransparent |
| keine typ Rechnerperipherie | Universalperipherie |
| Anwedung typ gleich in hoher Stückzahl | Anwendungen von 1..groß |
| Softwareentwicklung nicht auf Spezialrechner | Softwareentwicklung auf Anwendungsrechnertyp |
| optimierte Hardware bei hohen Entwicklungskosten | Universelle Hardware (Software reicht aus) |
kompletter Rechner
Blöcke mit angepasster Leistungsfähigkeit
Kosten, problemangepasste Varianten entsprechend der Anwendung
Datenbreite 8 Bit (größere Daten zusammengesetzt)
wenig leistungsfähiger Befehlssatz aber Bitbefehle
Adressraum 16 Bit
geringe Taktfrequenz
Oszillator: Taktgenrator mit externem Quarz
Zeitbegrenzung: Zeitbezug für Timer
Einchip Controller
E/A
Speichererweiterung und spez. E/A benutzt i.a. Ports oder Bits aus pralleler E/A
3 Timer: Zeitgeber / Zähler
1x serielle E/A: USART
Interrupt Behandlung / Auslösung
E/A ist im Datenregisterbereich
E/A → programmierbar, Steuerregister im Datenregisterbereich
Bsp: Wage + Preisrechner
Kern mit 16 Bit Datenformat
interner ROM in verschiedenen Varianten
interner RAM in verschiedenen Varianten
Speichererweiterung durch spezielle Ports mögl → externe Buscontroller
Taktgeber wie 2.1
E/A
4 universelle 16 Bit parallel digitale E/A
2 spezielle (10 / 2 Bits)
2 USART
5 Universaltimer
ADC mit 10 mögl Eingängen (Zeitmultiplex) (Port 5 kann analoge Spannungen durchschalten)
Capcom
| CISC | RISC |
| add [EAX], EBX | mov ECX, [EAX] |
| | add ECX, EBX |
| | mov [EAX], ECX |
| 1. Speicher lesen | Load-store Achitektur |
| 2. addieren | |
| 3. Speicher schreiben | |
| CISC | RISC |
| einfache und komplexe Befehle | nur einfache Befehle |
| heterogener Befehlssatz | orthogonaler Befehlssatz |
| verschiedene Taktzahl pro Befehl | meist ein Takt pro Befehl |
| viele Befehlscodeformate mit unterschiedlicher Länge | wenige Befehlscodeformate mit einheitlicher Länge |
| Mikroprogrammwerk | direktverdrahtung |
| vermischung von Verarbeitungs- und Speicherbefehlen | Trennung von Verarbeitungs- und Speicherbefehlen |
bef 1
.
.
.
JMP m1
.
.
.
bef 2
bef 3
bef 4
bef 2 und bef 3: Warteplätze
IF: instruction first
IS: instruction second
RF: register fetch, instruction decode
EX: execution
DF: data first
DS: data second
TC: tag check
WB: write back
Bsp: 4 stufige sequenzielle Befehlsfole BL/BD wie normale Pipeline
zusätzlich BD steuert aufgrund Befehlscode DD → Ex-Einheiten. verlange passenden freie Einheit
nach jeder Ex Einheit folgt parallele writeback Einheit
WB muss unter Einhaltung der Befehle zurückschreiben
Problem: Befehlsdecoder kann komplex werden
Problem: alles parallel außer BL (zeitlicher Engpass)
→ BL auch parallel (soviel gleichzeitig lesen, wie Ex-Einheiten da sind)
Bsp: 4 Ex-Einheiten ein Befehslswort hat parallel 4 Befehle
zu lösende Probleme
Bef müssen im Speicher so stehen, dass sie bei BL zu den passenen Ex-Einheiten kommen
Compiler muss Befehl verzögern falls aktuell zu wenig passenden Ex-Einheiten
Compiler muss NOP ergänzen falls aktuell keine Befehle für keine Ex-Einheit
Compiler benötigt Datenanalyse um Befehle parallel abzuarbeiten, die untereinander Datenabhängig sind (evtl verzögern/umsortieren)
theoretisch leistungsfähigstens Mikroparallel Konzept
maximale Parallelität bei vergleichsweise einfacher Logik
komplexer Compiler
sehr spezieller Maschinencode
sehr breiter Befehlsbus
gut nur bei gleicher Ausführungszeit aller Ex-Einheiten
<Addr1> <Daten1>
<Addr2> <Daten2>
Vergleich mit kompletter HS Adresse
+ alle Datenworte im Cache unabhängig voneinander
- aufwendiger Adressvergleich (langsamer und aufwendige HW)
Teil der Adresse
→ Tag k-Bit, n Bit Adresswort → 1 Tag = 2^(n-k) mögliche Adressen, davon nur 1 gleichzeitig möglich
+ weniger aufwendiger Adressvergleich
- mit einer höherwertigen Tag-Adresse werden andere blockiert
Cacheprobleme bei geänderter Grundarchitektur
P1 P2
| |
C1 C2
| |
---------
---------
HS (gemeinsamer)
Princeton mit Cache
Havard mit Cache
Havard / Princeton Mischform
Speicherverwaltung (Übersetzung logisch → physisch Adressen)
bei direct mapped nicht notwendig
bei n-way-cache n-fache Entscheidung
bei vollassz. cache volle Entscheidung über zu ersetzende Zellen
LRU: die Zelle, die am längsten keinen Hit mehr hatte ersetzen
pseudo LRU: nur für kurz zurückliegende Ereignisse Überblick bewahren
write through
write back
Phase 1 cache immer aktueller als RAM
Phase 2 Controller aktualisiert RAM (CPU unabhängig)
→ dirty bit um bei Ersetzungsstrategie Zellen auszuschliessen deren Wert noch nicht zum Hauptspeicher zurückgeschrieben wurde (Vermeidung von Verdrängung)
snooping
RISC Architektur CISC Ergänzung über Mikroprogrammierung
skalare Architektur
Befehlspipeline
branch prediction
über
out-of-order Execution
retirement register
register renaming
weitere Beispiele
| Prozessor | Folie | Pipeline | CISC | Skalar | Havard zum L1 Cache | Princeton zum HS | MP fähig | out-of-order |
| 21164 | 5.2 | X | - | X | X | X | - | |
| 21364 | 5.21 | getrennt | - | X | X | x | X | |
| | 5.22, 5.63 | Int, FP | | | | | | |
| | 5.30 | Int, FP | - | X | X | X | - | |
| MPC750 | 5.50 | X | - | X | X | X | - | X |
| Microsparc | 5.60 | vermutl | - | (x) nur 2 Einheiten | X | X | - | - |
| PentiumPro | 5.11 | X | - | X | X | X | - | X |
Takt erhöhen
bessere Architektur
Arbeit entspricht den ausgeführten Befehlen
Notwendig: richtige Befehlshäufigkeit → statistische Ermittlung über viele Programme
Ausführungszeit eines Befehls (Problem: Pipeline)
L = 1/T (Taktzykluszeit in ns)
T = summe(pi * ti)
L[MIPS] = Befehlsanzahl/Zeit in µs
L[MIPS] = f[MHz]/CPI
CPI = Taktanzahl/Befehlsanzahl clocks per instruction
Lrel = Lref*(refZeit/aktZeit)
Lgk[MFLOPS]=Anzahl GK-Befehle/Zeit in µs (bei GFLOPS in ns)
→ Test mit Benchmarkprogrammen
Auswahle bzw Systhese von Benchmarkprogrammen
| | data |
| | single | multiple |
| single instruction | SISD | SIMD |
| multiple instruction | MISD | MIMD |
SIMD
MISD
MIMD
| | shared memmory | distributed memmory | virtual shared memmory |
| Kommunikation | gemeinsame Speicherinhalte | Nachrichtenaustausch (message passing) | verdeckter Nachrichtenaustausch |