157 lines
7.6 KiB
Markdown
157 lines
7.6 KiB
Markdown
|
# Grundprinzipien
|
|||
|
- Ein- und Ausgabe
|
|||
|
- Programmspeicher
|
|||
|
- Datenspeicher
|
|||
|
|
|||
|
Unterschieden in:
|
|||
|
- Harvard Architektur: direkt mit Prozessor verbunden
|
|||
|
- Princeton-Architektur (von-Neumann-Architektur): über Systembus verbunden
|
|||
|
|
|||
|
## Eigenschaften
|
|||
|
Fast alle der heute üblichen Rechner gehen auf folgende Eigenschaften zurück:
|
|||
|
1. Die Rechenanlage besteht aus den Funktionseinheiten Speicher, Steuerwerk (engl. controller), dem Rechenwerk (engl. data path) und Ein-/Ausgabe-Einheiten.
|
|||
|
2. Die Struktur der Anlage ist unabhängig vom bearbeiteten Problem. Die Anlage ist speicherprogrammierbar.
|
|||
|
3. Der Speicher wird in Zellen gleicher Größe geteilt. Die Zellnummern heißen Adressen.
|
|||
|
4. Das Programm besteht aus einer Folge von elementaren Befehlen, die in der Reihenfolge der Speicherung bearbeitet werden.
|
|||
|
5. Abweichungen von der Reihenfolge sind mit (bedingten oder unbedingten) Sprungbefehlen möglich.
|
|||
|
6. Es werden Folgen von Binärzeichen (nachfolgend Bitvektoren genannt) verwendet, um alle Größen darzustellen.
|
|||
|
7. Die Bitvektoren erlauben keine explizite Angabe des repräsentierten Typs. Aus dem Kontext heraus muss stets klar sein, wie die Bitvektoren zu interpretieren sind.
|
|||
|
|
|||
|
# Befehlssatz
|
|||
|
Adressierung ohne Speicherzugriff
|
|||
|
- Registeradressierung: ausschließlich Operanden aus & Ziele in Registern
|
|||
|
- Unmittelbare Adressierung, Direktoperanden, immediate addressing: Operanden sind Teil des Befehlsworts
|
|||
|
- Direkte Adressierung, absolute Adressierung: Adresse ist ausschließlich im Befehlswort enthalten
|
|||
|
- Register-indirekte Adressierung: Adresse ist ausschließlich im Register enthalten
|
|||
|
- Varianten: pre/post-increment/decrement zur Realisierung von Stapeloperationen
|
|||
|
- Relative Adressierung, indizierte Adressierung, Basis-Adressierung: Adresse ergibt sich aus der Addition eines Registerinhalts und einer Konstanten im Befehl
|
|||
|
|
|||
|
## n-Adressmaschinen
|
|||
|
Klassifikation von Befehlssätzen bzw. Befehlen nach der Anzahl der Adressen bei 2-stelligen Arithmetik-Befehlen
|
|||
|
- 3-Adressmaschinen: Operanden und Ziel einer Operation werden explizit angegeben
|
|||
|
- 2-Adressmaschinen: Überschreiben eines Operanden mit dem Ergebnis
|
|||
|
- 1 1⁄2-Adressmaschinen: wie 2-Adressmaschinen, nur unter Verwendung von Registern
|
|||
|
- 1-Adressmaschinen: Nutzung von nur 1 Register
|
|||
|
- 0-Adressmaschinen: Kellermaschinen
|
|||
|
|
|||
|
## Programmiermodelle, Instruction Set Architectures (ISAs)
|
|||
|
Klassifikation von Befehlssätzen nach der Gestaltung/Ausprägung der
|
|||
|
vorhandenen Maschinenbefehle
|
|||
|
- CISC – Complex Instruction Set Computers
|
|||
|
- Relativ kompakte Codierung von Programmen
|
|||
|
- Für jeden Befehl wurden mehrere Taktzyklen benötigt. Die Anzahl der Zyklen pro Befehl war groß
|
|||
|
- (Mikro-) Programm zur Interpretation der Befehle nötig
|
|||
|
- Compiler konnten viele Befehle gar nicht nutzen
|
|||
|
- RISC – Reduced Instruction Set Computers
|
|||
|
- Wenige, einfache Befehle
|
|||
|
- Hohe Ausführungsgeschwindigkeit
|
|||
|
- durch kleine Anzahl von Taktzyklen pro Befehl
|
|||
|
- durch Fließbandverarbeitung (siehe später)
|
|||
|
- Programmlaufzeit = Anzahl auszuführender Befehle * CPI-Wert * Dauer eines Taktzyklus
|
|||
|
- Eigenschaften
|
|||
|
- feste Befehlswortlänge
|
|||
|
- LOAD/STORE-Architektur
|
|||
|
- einfache Adressierungsarten
|
|||
|
- „semantische Lücke“ zwischen Hochsprachen & Assemblerbefehlen durch Compiler überbrückt
|
|||
|
- statt aufwändiger Hardware zur Beseitigung von Besonderheiten (z.B. 16-Bit Konstanten) wird diese Aufgabe der Software übertragen
|
|||
|
- rein in Hardware realisierbar, keine Mikroprogrammierung
|
|||
|
|
|||
|
## Technologien zum Speichern von Daten
|
|||
|
- Arten
|
|||
|
- **Modifikation von Strukturen**: Lochkarte, Schallplatte
|
|||
|
- **Rückkopplung**: Flip-Flops, SRAM
|
|||
|
- **Elektrische Ladungen**: Kondensator, DRAM
|
|||
|
- **Magnetismus**: Magnetkernspeicher, Magnetband, Diskette, Festplatte
|
|||
|
- **Optik**: Bar-Codes, CD-ROM, DVD
|
|||
|
- Vergleichskriterien
|
|||
|
- Kapazität
|
|||
|
- Energiebedarf
|
|||
|
- Geschwindigkeit
|
|||
|
- Robustheit
|
|||
|
- Speicherdichte
|
|||
|
- Kosten
|
|||
|
- Zugriffsmethoden
|
|||
|
- Sequentieller Zugriff
|
|||
|
- Zugriffszeit ist abhängig vom Speicherort und vom vorherigen Zugriff
|
|||
|
- Beispiele: Magnetbänder, Festplatten, CD-ROM, DVD, BluRay
|
|||
|
- Bei Plattenspeicher schneller Zugriff durch Überspringen von Spuren
|
|||
|
- Wahlfreier Zugriff
|
|||
|
- Zugriffszeit ist unabhängig vom Speicherort und vom vorherigen Zugriff
|
|||
|
- Eindeutige Adresse identifiziert den Speicherort
|
|||
|
- RAM (Random Access Memory)
|
|||
|
- Einteilung des Speichers in
|
|||
|
- Flüchtigen Speicher
|
|||
|
- Informationen gehen nach Ausschalten der Versorgungsspannung verloren!
|
|||
|
- Register innerhalb des Prozessors
|
|||
|
- Static RAM (SRAM) für Caches
|
|||
|
- Dynamic RAM (DRAM) für den Arbeitsspeicher
|
|||
|
- Nichtflüchtige Speicher:
|
|||
|
- Informationen bleiben auch ohne Versorgungsspannung über längere Zeit (typischerweise einige Jahre) erhalten!
|
|||
|
- Beispiele: Flash, Magnetspeicher (Festplatte, Disketten, Magnetbänder)
|
|||
|
- Bei einem ROM (Read Only Memory) ist nur lesender Zugriff möglich
|
|||
|
|
|||
|
Zweierpotenzen
|
|||
|
- 1 KibiByte = 1 KiB = 1024 Bytes = 2^10 Bytes
|
|||
|
- 1 MebiByte = 1 MiB = 1024 KiB = 2^20 Bytes = 1.048.576 Bytes
|
|||
|
- 1 GibiByte = 1 GiB = 1024 MiB = 2^30 Bytes = 1.073.741.824 Bytes
|
|||
|
- 1 TebiByte = 1 TiB = 1024 GiB = 2^40 Bytes = 1.099.511.627.776 Bytes
|
|||
|
|
|||
|
|
|||
|
## Blocktransfer (Burst)
|
|||
|
Auslesen des kompletten Zeilenpuffers durch automatisches Inkrementieren der Spaltenadresse
|
|||
|
|
|||
|
## Cache
|
|||
|
= schneller Speicher, der vor einen größeren, langsamen Speicher geschaltet wird
|
|||
|
- Im weiteren Sinn: Puffer zur Aufnahme häufig benötigter Daten
|
|||
|
- Für Daten die schon mal gelesen wurden oder in der Nähe von diesen liegen
|
|||
|
- 90% der Zeit verbringt ein Programm in 10% des Codes
|
|||
|
- Im engeren Sinn: Puffer zwischen Hauptspeicher und Prozessor
|
|||
|
- Ursprung: cacher (frz.) – verstecken („versteckter Speicher“)
|
|||
|
|
|||
|
Organisation von Caches
|
|||
|
- Prüfung anhand der Adresse, ob benötigte Daten im Cache vorhanden sind („Treffer“; cache hit)
|
|||
|
- Falls nicht (cache miss): Zugriff auf den (Haupt-) Speicher, Eintrag in den Cache
|
|||
|
|
|||
|
|
|||
|
# Ein- und Ausgabe
|
|||
|
## Übertragungsprotokolle
|
|||
|
- Synchrone Busse
|
|||
|
- Keine Rückmeldung bei der Übertragung
|
|||
|
- Unidirektionales Timing
|
|||
|
- Asynchrone Busse
|
|||
|
- Rückmeldung der Datenannahme
|
|||
|
- Bidirektionales Timing
|
|||
|
|
|||
|
| | unidirektional | bidirektional |
|
|||
|
| -- | -- | -- |
|
|||
|
| Beschreibung | Kommunikationspartner verlassen sich darauf, dass Partner innerhalb festgelegter Zeit reagieren. | Kommunikationspartner bestätigen per Kontrollsignal (senden ein acknowledgment), dass sie in der erwarteten Weise reagiert haben. |
|
|||
|
| Vorteile | einfach; bei konstanten Antwortzeiten schnell | passt sich unterschiedlichen Geschwindigkeiten an; hoher Grad an Flusskontrolle möglich |
|
|||
|
| Nachteile | Kommunikationspartner muss in bestimmter Zeit | antworten komplexer; Zeitüberwachung notwendig; evtl. langsam |
|
|||
|
| Einsatzgebiet | synchrone Busse, Speicherbusse | asynchrone Busse, E/A- und Peripheriebusse |
|
|||
|
|
|||
|
Programmierbarer Interrupt Controller (PIC)
|
|||
|
|
|||
|
# Prozessorergänzung
|
|||
|
## Prozessor-Leistung
|
|||
|
Leistung = (Durchschnitts-)Befehle pro Zeit\
|
|||
|
Berechnung: $L=\frac{IPC}{t_{cycle}}$ mit $IPC = \frac{1}{CPI}$ und $CPI = \sum t_i *p_i$
|
|||
|
- IPC: Instructions Per Cycle (Anzahl Durchschnittsbefehle pro Taktzyklus)
|
|||
|
- CPI: Cycles Per Instruction (Mittlere Anzahl Taktzyklen pro Befehl)
|
|||
|
- $t_i$ : Anzahl Taktzyklen des i-ten Befehls
|
|||
|
- $p_i$ : Relative Häufigkeit des i-ten Befehls
|
|||
|
- $t_cycle$ : Taktzykluszeit [$μs$]
|
|||
|
|
|||
|
## Befehlspalette
|
|||
|
Pipelining: Fließbandverarbeitung (seriell vs parallel)
|
|||
|
- IF / ID / EX: Befehl lesen / dekodieren / ausführen
|
|||
|
- OF / WB: Operand lesen / schreiben (Register)
|
|||
|
- Probleme: Unterschiedliche Phasenlänge, bedingte Sprünge, Datenabhängigkeiten
|
|||
|
|
|||
|
Superskalare Architektur: \
|
|||
|
Befehl lesen -> Befehl dekodieren -> Operand lesen -> Befehl ausführen -> Operand schreiben
|
|||
|
|
|||
|
dRam: mit Kondensator\
|
|||
|
sRam: mit FlipFlop\
|
|||
|
RAM: Random Access Memory\
|
|||
|
ROM: Read Only Memory\
|