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 | \usepackage{mdwlist} %less space for lists | ||||||
| 
 | 
 | ||||||
| \pdfinfo{ | \pdfinfo{ | ||||||
|     /Title (Rechnerarchitekturen 2 -- Cheatsheet) |     /Title (Rechnerarchitekturen 2 - Cheatsheet) | ||||||
|     /Creator (TeX) |     /Creator (TeX) | ||||||
|     /Producer (pdfTeX 1.40.0) |     /Producer (pdfTeX 1.40.0) | ||||||
|     /Author (Robert Jeutter) |     /Author (Robert Jeutter) | ||||||
| @ -78,7 +78,7 @@ | |||||||
| 
 | 
 | ||||||
| \begin{multicols}{2} | \begin{multicols}{2} | ||||||
|   \footnotesize |   \footnotesize | ||||||
|   \begin{description} |   \begin{description*} | ||||||
|     \item[Ausführungszeit] $t[s]=\frac{\text{Taktzyklen [Takte]}}{\text{Frequenz [Hz]}} =\frac{C}{f}$ |     \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 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}$ |     \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[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[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}$ |     \item[Effizienz] $E_n=\frac{Speedup}{AnzahlProzessoren}=\frac{S_n}{n}$ | ||||||
|   \end{description} |   \end{description*} | ||||||
| \end{multicols} | \end{multicols} | ||||||
| 
 | 
 | ||||||
| \centering{ | \centering{ | ||||||
| @ -148,23 +148,23 @@ | |||||||
|   \includegraphics[width=\textwidth/4]{Assets/RA2_mehrzyklenCPU.png} |   \includegraphics[width=\textwidth/4]{Assets/RA2_mehrzyklenCPU.png} | ||||||
|    |    | ||||||
|   Aufgaben der einzelnen Phasen |   Aufgaben der einzelnen Phasen | ||||||
|   \begin{description} |   \begin{description*} | ||||||
|     \item[Befehlsholphase] Lesen des aktuellen Befehls; separater Speicher, zur Vermeidung von Konflikten mit Datenzugriffen |     \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[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[Ausführungs \& Adressberechnungsphase] Berechnung arithmetischer Funktion bzw. Adresse für Speicherzugriff | ||||||
|     \item[Speicherzugriffsphase] Wird nur bei Lade \& Speicherbefehlen benötigt |     \item[Speicherzugriffsphase] Wird nur bei Lade \& Speicherbefehlen benötigt | ||||||
|     \item[Abspeicherungsphase] Speichern in Register, bei Speicherbefehlen nicht benötigt |     \item[Abspeicherungsphase] Speichern in Register, bei Speicherbefehlen nicht benötigt | ||||||
|   \end{description} |   \end{description*} | ||||||
|    |    | ||||||
|   \paragraph*{Hazards} |   \paragraph*{Hazards} | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     \item resource hazards |     \item resource hazards | ||||||
|     \item data hazards: Datenabhängigkeiten |     \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[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[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.) |       \item[Datenabhängigkeit] Operation hängt von der vorhergehenden Operation ab. RAW (r.a.w.) | ||||||
|     \end{description} |     \end{description*} | ||||||
|     \item control hazards: Kontrollabhängigkeiten |     \item control hazards: Kontrollabhängigkeiten | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|       \item Gleichheit der Register wird schon in der instruction decode-Stufe geprüft |       \item Gleichheit der Register wird schon in der instruction decode-Stufe geprüft | ||||||
| @ -323,10 +323,10 @@ | |||||||
|     \item Weitere Leistungssteigerung: $CPI < 1$ |     \item Weitere Leistungssteigerung: $CPI < 1$ | ||||||
|     \item Mehrere Befehle pro Takt ausgeben |     \item Mehrere Befehle pro Takt ausgeben | ||||||
|     \item Zwei Grundtypen von multiple-issue Prozessoren: |     \item Zwei Grundtypen von multiple-issue Prozessoren: | ||||||
|     \begin{itemize} |     \begin{itemize*} | ||||||
|       \item Superskalar: variable Anzahl von Befehlen pro Takt |       \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) |       \item VLIW/EPIC: Feste Anzahl von Befehlen ausgegeben, definiert durch Befehlscode (weitgehende Planung der Issue-Phase durch Compiler) | ||||||
|     \end{itemize} |     \end{itemize*} | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   % !{In Order Pipeline; Quelle RA2 Vorlesung 2020/21](Assets/RA2_in-order-pipeline.png) |   % !{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 Kohärenz: welcher Wert wird beim Lesen abgeliefert | ||||||
|     \item Bezug auf Lesen und Schreiben ein- und derselben Speicherzelle |     \item Bezug auf Lesen und Schreiben ein- und derselben Speicherzelle | ||||||
|     \item Definition: Ein Speichersystem heißt kohärent, wenn |     \item Definition: Ein Speichersystem heißt kohärent, wenn | ||||||
|     \begin{itemize} |     \begin{itemize*} | ||||||
|       \item geschriebene Werte werden wieder gelesen |       \item geschriebene Werte werden wieder gelesen | ||||||
|       \item Schreibvorgänge derselben Zelle serialisiert |       \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 |     \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) |     % !{Cache I/O Einheit; Quelle RA2 Vorlesung 2020/21](Assets/RA2_CacheIOEinheit.png) | ||||||
|     \item Hardware-Lösung: Aufwändig, schlechte Lokalität der Daten |     \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 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 |     \item Problem: Wachstum des Speicherbedarfs linear mit Anzahl der Prozessoren | ||||||
|   \end{itemize*} |   \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{multicols} | ||||||
| \end{document} | \end{document} | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user