157 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			7.8 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\
 |