Spezialrechner und Architekturen
This commit is contained in:
		
							parent
							
								
									75954f336e
								
							
						
					
					
						commit
						058fccbfe7
					
				
										
											Binary file not shown.
										
									
								
							| @ -12,7 +12,7 @@ | ||||
| \usepackage{mdwlist} %less space for lists | ||||
| 
 | ||||
| \pdfinfo{ | ||||
|     /Title (Rechnerarchitekturen 2 -- Cheatsheet) | ||||
|     /Title (Rechnerarchitekturen 2 - Cheatsheet) | ||||
|     /Creator (TeX) | ||||
|     /Producer (pdfTeX 1.40.0) | ||||
|     /Author (Robert Jeutter) | ||||
| @ -78,7 +78,7 @@ | ||||
| 
 | ||||
| \begin{multicols}{2} | ||||
|   \footnotesize | ||||
|   \begin{description} | ||||
|   \begin{description*} | ||||
|     \item[Ausführungszeit] $t[s]=\frac{\text{Taktzyklen [Takte]}}{\text{Frequenz [Hz]}} =\frac{C}{f}$ | ||||
|     \item[Leistung absolut] $L_{abs}[MIPS]=\frac{\text{Befehlsanzahl}}{\text{Ausführungszeit [s]}*10^6}=\frac{n}{t*10^6}$ | ||||
|     \item[Leistung relativ] $L_{rel}[MIPS]=\frac{\text{Referenzzeit [s]}}{\text{Ausführungszeit [s]}}*\text{RefLeistung [MIPS]} = \frac{t_{ref}}{t_mess}*L_{ref}$ | ||||
| @ -87,7 +87,7 @@ | ||||
|     \item[Instructions per Clock] $IPC=\frac{Befehlsanzahl}{\text{Taktzyklen [Takt]}}=\frac{n}{C}$ | ||||
|     \item[Speedup] $S_n=\frac{1}{AnteilSeriell + Overhead + \frac{AnteilParallel}{AnzahlProzessoren}}=\frac{1}{ A_{seriell} + o(n) + \frac{ A_{parallel} }{ n }}$ | ||||
|     \item[Effizienz] $E_n=\frac{Speedup}{AnzahlProzessoren}=\frac{S_n}{n}$ | ||||
|   \end{description} | ||||
|   \end{description*} | ||||
| \end{multicols} | ||||
| 
 | ||||
| \centering{ | ||||
| @ -148,23 +148,23 @@ | ||||
|   \includegraphics[width=\textwidth/4]{Assets/RA2_mehrzyklenCPU.png} | ||||
|    | ||||
|   Aufgaben der einzelnen Phasen | ||||
|   \begin{description} | ||||
|   \begin{description*} | ||||
|     \item[Befehlsholphase] Lesen des aktuellen Befehls; separater Speicher, zur Vermeidung von Konflikten mit Datenzugriffen | ||||
|     \item[Dekodier \& Register-Lese-Phase] Lesen der Register möglich wegen fester Plätze für Nr. im Befehlswort | ||||
|     \item[Ausführungs \& Adressberechnungsphase] Berechnung arithmetischer Funktion bzw. Adresse für Speicherzugriff | ||||
|     \item[Speicherzugriffsphase] Wird nur bei Lade \& Speicherbefehlen benötigt | ||||
|     \item[Abspeicherungsphase] Speichern in Register, bei Speicherbefehlen nicht benötigt | ||||
|   \end{description} | ||||
|   \end{description*} | ||||
|    | ||||
|   \paragraph*{Hazards} | ||||
|   \begin{itemize*} | ||||
|     \item resource hazards | ||||
|     \item data hazards: Datenabhängigkeiten | ||||
|     \begin{description} | ||||
|     \begin{description*} | ||||
|       \item[Antidatenabhängig] falls Befehl j eine Speicherzelle beschreibt, die von i noch gelesen werden müsste. WAR (write after read) | ||||
|       \item[Ausgabeabhängig] falls Befehle i und j die selbe Speicherzelle beschreiben. WAW (w.a.w.) | ||||
|       \item[Datenabhängigkeit] Operation hängt von der vorhergehenden Operation ab. RAW (r.a.w.) | ||||
|     \end{description} | ||||
|     \end{description*} | ||||
|     \item control hazards: Kontrollabhängigkeiten | ||||
|     \begin{itemize*} | ||||
|       \item Gleichheit der Register wird schon in der instruction decode-Stufe geprüft | ||||
| @ -323,10 +323,10 @@ | ||||
|     \item Weitere Leistungssteigerung: $CPI < 1$ | ||||
|     \item Mehrere Befehle pro Takt ausgeben | ||||
|     \item Zwei Grundtypen von multiple-issue Prozessoren: | ||||
|     \begin{itemize} | ||||
|     \begin{itemize*} | ||||
|       \item Superskalar: variable Anzahl von Befehlen pro Takt | ||||
|       \item VLIW/EPIC: Feste Anzahl von Befehlen ausgegeben, definiert durch Befehlscode (weitgehende Planung der Issue-Phase durch Compiler) | ||||
|     \end{itemize} | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
|    | ||||
|   % !{In Order Pipeline; Quelle RA2 Vorlesung 2020/21](Assets/RA2_in-order-pipeline.png) | ||||
| @ -631,10 +631,10 @@ | ||||
|     \item Kohärenz: welcher Wert wird beim Lesen abgeliefert | ||||
|     \item Bezug auf Lesen und Schreiben ein- und derselben Speicherzelle | ||||
|     \item Definition: Ein Speichersystem heißt kohärent, wenn | ||||
|     \begin{itemize} | ||||
|     \begin{itemize*} | ||||
|       \item geschriebene Werte werden wieder gelesen | ||||
|       \item Schreibvorgänge derselben Zelle serialisiert | ||||
|     \end{itemize} | ||||
|     \end{itemize*} | ||||
|     \item Lösung des I/O-Problems: Zuordnung einer I/O-Einheit zu jedem Prozessor | ||||
|     % !{Cache I/O Einheit; Quelle RA2 Vorlesung 2020/21](Assets/RA2_CacheIOEinheit.png) | ||||
|     \item Hardware-Lösung: Aufwändig, schlechte Lokalität der Daten | ||||
| @ -696,6 +696,187 @@ | ||||
|     \item Presence Flag Vector: Im Hauptspeicher abgelegter Bit-Vektor für jeden einzelnen Speicherblock (1 Bit pro Prozessor/Cache + Statusbits (dirty, modified)) | ||||
|     \item Problem: Wachstum des Speicherbedarfs linear mit Anzahl der Prozessoren | ||||
|   \end{itemize*} | ||||
|      | ||||
|    | ||||
|   \newpage | ||||
|   \section{Spezialrechner} | ||||
|   \subsection{Einchiprechner} | ||||
|   \begin{itemize*} | ||||
|     \item geringer Stromverbrauch, Wärme | ||||
|     \item relativ geringer Befehlsdurchsatz | ||||
|     \item einfacher Befehlssatz | ||||
|     \item komplexer Rechner auf einem Chip (Ram/Rom intern) | ||||
|     \item an Problem angepasst | ||||
|     \item so Leistungsfähig wie nötig | ||||
|     \item Anwendung: einfache Steuer-/Regelungsaufgaben | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Digitale Signalprozessorren} | ||||
|   \begin{itemize*} | ||||
|     \item mehrere ALU Funktionen (+Shifter) | ||||
|     \item größerer ROM, RAM (mit Stack), Cache | ||||
|     \item externes Interface für Speicher und E/A | ||||
|     \item DMA-Coprozessor | ||||
|     \item mehrere universelle parallele E/A-Ports | ||||
|     \item AD-Wandler meist nicht on-chip | ||||
|     \item DSP's benutzung häufig VLIW | ||||
|     \item Anwendung: Signal-/Bildverarbeitung | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \section{Prozessorarchitekturen} | ||||
|   \subsection{CISC - complex instruction set Computer} | ||||
|   \begin{itemize*} | ||||
|     \item einfache und komplexe Befehle | ||||
|     \item heterogener Befehlssatz | ||||
|     \item verschiedene Taktanzahl pro Befehl | ||||
|     \item viele Befehlscodeformate mit unterschiedlicher Länge | ||||
|     \item Mikroprogrammwerk - Makrobefehl durch Mikrobefehlsfolge | ||||
|     \item vermischung von Verarbeitungs- und Speicherbefehlen | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{RISC - reduced instruction set computer} | ||||
|   \begin{itemize*} | ||||
|     \item nur einfache Befehle | ||||
|     \item ortohonaler Befehlssatz | ||||
|     \item meist 1 Takt pro Befehl | ||||
|     \item wenige Befehlscodeformate mit einheitlicher Länge | ||||
|     \item Direktverdrahtung | ||||
|     \item Trennung von Verarbeitungs- und Speicherbefehlen | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Pipeline Prozessoren} | ||||
|   \begin{itemize*} | ||||
|     \item Aufteilung eines Befehls in Teilbefehle | ||||
|     \item parallele Abarbeitung verschiedener Teilbefehle von unerschiedlichen Befehlen möglich | ||||
|     \item Probleme | ||||
|     \begin{itemize*} | ||||
|       \item bedingte Sprünge (unvorhergesehen) | ||||
|       \item LSG: Pipeline um 2 Schritte verzögern | ||||
|       \item LSG: Sprungzielspekulation | ||||
|       \item Datenabhängigkeit | ||||
|       \item LSG: Pipeline um 2 Schritte verzögern | ||||
|       \item LSG: Out-of-Order Prinzip nutzen | ||||
|       \item LSG: Forwarding Hardware | ||||
|     \end{itemize*} | ||||
|     \item Superpipelining - noch mehr Befehlsaufteilung | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Out-of-Order Architektur} | ||||
|   \begin{itemize*} | ||||
|     \item statt Pipeline bei Datenabhängigen Befehlen um 2 Schritte verzögern, datenunabhängige Befehle einschieben | ||||
|     \item möglichst ständige Auslastung aller EX Einheiten | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Skalare Prozessoren} | ||||
|   \begin{itemize*} | ||||
|     \item Mikroarchitektur | ||||
|     \item Befehlszuordnung und Konfliktvermeidung geschieht durch Hardware | ||||
|     \item Speicherzugriffe automatisch von Load/Store Einheit | ||||
|     \item ein Befehlsstrom mit einfachem Befehl an Ausführungseinheit | ||||
|     \item bessere Reaktion auf Laufzeitereignisse | ||||
|     \item Spekulation möglich | ||||
|     \item Superskalar ($\geq 2$ EX Einheiten) | ||||
|     \begin{itemize*} | ||||
|       \item Befehle in Befehlsfenster gespeichert | ||||
|       \item Zuordnungseinheit wählt Befehl aus, die parallel verarbeitet werden können | ||||
|     \end{itemize*} | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{VLIW Architektur (very long instruction word)} | ||||
|   \begin{itemize*} | ||||
|     \item Befehlszuordnung und Konfliktvermeidung geschieht durch Compiler | ||||
|     \item Compiler muss Zeitbedarf der Speicherzugriffe in Befehlsplanung einbeziehen | ||||
|     \item Befehlsstrom mit Tupel von Befehlen | ||||
|     \item nicht un-flexibel bei Reaktion auf Laufzeitereignisse | ||||
|     \item VLIW hat festes Befehlsformat; höhere Codedichte | ||||
|     \item Vorteilhaft bei gut parallelisierbarem Code | ||||
|     \item Forwarding Hardware - nach dem EX werden Daten in Pufferregister gespeichert und können vom nächsten Befehl schon genutzt werden | ||||
|     \item WB erfolgt erst darauf | ||||
|     \item Datenabhängigkeitsproblem wird verringert | ||||
|     \item MUX nutzt eher Pufferdaten als Registerdaten | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \section{Speicherarchitekturen} | ||||
|   \subsection{Adresspipelining} | ||||
|   \begin{itemize*} | ||||
|     \item Aufteilen des Speicherzugriffs in mehrere Phasen | ||||
|     \item parallele gestaffelte Abarbeitung dieser Phasen für mehrere Speicherzugriffe | ||||
|     \item Adresse auslesen/dekodieren; Daten mit Prozessor | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Speicher Interlacing} | ||||
|   \begin{itemize*} | ||||
|     \item Speicheraufteilung in mehrere physische Bände | ||||
|     \item Adressen nicht kontinuierlich in den Bänden, sondern wechseln von Band zu Band | ||||
|     \item nahezu gleichzeitiges Benutzen der Daten möglich (Daten-/Adressbus verhindern Parallelität) | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Burst Mode} | ||||
|   \begin{itemize*} | ||||
|     \item Prozessor gibt eine Adresse, Speicher liefert n Datenworte (Adr, Adr+1,..., Adr+n-1) | ||||
|     \item falls folgende Datenworte genutzt werden, war für n Datenworte nur 1 Speicherzugriff (Zeit) nötig | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \subsection{Cache Speicher} | ||||
|   \begin{itemize*} | ||||
|     \item kleinder, schneller Prozessornaher Speicher | ||||
|     \item CPU weiß nciht dass Cache zwischengeschaltet ist | ||||
|     \item es wird immer zuerst im Cache nachgeschaut, zum Adressvergleich (kostet Zeit) | ||||
|     \item Cache besteht aus Cache Tabelle | ||||
|     \begin{itemize*} | ||||
|       \item voll assoziativ - Adressvergl. der kompletten Adresse | ||||
|       \item jede beliebige Adressfolge im Cache möglich | ||||
|       \item kann zu langsamen Adressvergleich führen | ||||
|       \item direct-mapped Adressvergleich nur über Teiladresse - eine Tabelle im Cache | ||||
|       \item mehr-wege-assoziativ Cache - mehrere Adressvergleiche parallel | ||||
|     \end{itemize*} | ||||
|     \item Schreibstategien (bei prozessor WB) | ||||
|     \begin{itemize*} | ||||
|       \item Write Trough Daten werden sowohl im Cache als auch im Hauptspeicher aktualisiert | ||||
|       \item Write Back: Cache sammelt Schreibvorgänge und aktualisiert nur im Cache. Nach einer entsprechenden Anweisung werden Daten in den hauptspeicher kopiert (aktualisiert) | ||||
|     \end{itemize*} | ||||
|     \item (über) Schreibstategien | ||||
|     \begin{itemize*} | ||||
|       \item nach Anlaufphase ist Cache immer vollständig gefüllt | ||||
|       \item für neue Einträge Ersetzungsstrategien benötigt FIFO, least recetly used - durch Zusatzhardware | ||||
|     \end{itemize*} | ||||
|     \item Speicherverwaltung mit memory management günstiger vor dem Cache | ||||
|   \end{itemize*} | ||||
|    | ||||
|   \section{Parallele Rechnerarchitekturen} | ||||
|   \subsection{Flynn} | ||||
|   \begin{description*} | ||||
|     \item[SISD] Single Instruction Single Data | ||||
|     \item[SIMD] Single Instruction Multiple Data | ||||
|     \item[MIMD] Multiple Instruction Multiple Data | ||||
|     \item[MISD] Multiple Instruction Single Data | ||||
|   \end{description*} | ||||
|    | ||||
|   \subsection{MIMD Kopplung} | ||||
|   \begin{description*} | ||||
|     \item[enge K.] (shared memory) | ||||
|     \begin{itemize*} | ||||
|       \item parallelzugriff in Datenbreite des Prozessors | ||||
|       \item schneller Datenaustausch (Proz-Speicher-Zugriffszeit) | ||||
|       \item neu lokal benachbarte Rechner | ||||
|       \item aus Sicht des Prozessors gemeinsamer Speicher | ||||
|       \item Arbites - Zuteiler für Busanforderungen | ||||
|     \end{itemize*} | ||||
|     \item[lose K.] (distributed memory) | ||||
|     \begin{itemize*} | ||||
|       \item meist seriell 1 bit breit | ||||
|       \item langsamer da über Kommunikations-schnittstelle | ||||
|       \item auch global verteilte Rechner | ||||
|       \item verschiedene Speicher dem Prozessor bewusst | ||||
|     \end{itemize*} | ||||
|     \item[Kopplung] verändern | ||||
|     \begin{itemize*} | ||||
|       \item Wartezeit auf Speicher | ||||
|       \item Kommunikationsaufwand | ||||
|       \item Kommunikationsfähigkeit | ||||
|       \item optimale Prozessor-/Speicher-/Kommunikationspfad anzahl $<\infty$ | ||||
|     \end{itemize*}     | ||||
|   \end{description*} | ||||
|    | ||||
|    | ||||
| \end{multicols} | ||||
| \end{document} | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user