Merge letzte Seite
This commit is contained in:
		
							parent
							
								
									714abafb4e
								
							
						
					
					
						commit
						95168b4e8a
					
				
										
											Binary file not shown.
										
									
								
							| @ -110,29 +110,29 @@ | |||||||
|   \setlength{\postmulticols}{1pt} |   \setlength{\postmulticols}{1pt} | ||||||
|   \setlength{\multicolsep}{1pt} |   \setlength{\multicolsep}{1pt} | ||||||
|   \setlength{\columnsep}{2pt} |   \setlength{\columnsep}{2pt} | ||||||
|  | 
 | ||||||
|    |    | ||||||
|   \paragraph{CISC} |   \section{Prozessorarchitekturen}   | ||||||
|  |   \paragraph{CISC} complex instruction set computer | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     \item Complex Instruction Set Computing |  | ||||||
|     \item Einfache und komplexe Befehle |     \item Einfache und komplexe Befehle | ||||||
|     \item Heterogener Befehlssatz |     \item Heterogener Befehlssatz | ||||||
|     \item Verschiedene Taktzahl pro Befehl |     \item verschiedene Taktzahl pro Befehl | ||||||
|     \item Viele Befehlscode-Formate mit unterschiedlicher Länge |     \item Viele Befehlscode-Formate mit unterschiedlicher Länge | ||||||
|     \item Mikroprogrammwerk                              |     \item Mikroprogrammwerk                              | ||||||
|     \item Vermischung von Verarbeitungs \& Speicherbefehlen |     \item Vermischung von Verarbeitungs \& Speicherbefehlen | ||||||
|     \item schwierig, unter CPI = 2 zu kommen |     \item schwierig, unter CPI = 2 zu kommen | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   \paragraph{RISC} |   \paragraph{RISC} reduced instruction set computer | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     \item Reduced Instruction Set Computing |  | ||||||
|     \item wenige, einfache Befehle |     \item wenige, einfache Befehle | ||||||
|     \item Orthogonaler Befehlssatz    |     \item orthogonaler Befehlssatz    | ||||||
|     \item Meist 1 Takt pro Befehl |     \item meist 1 Takt pro Befehl | ||||||
|     \item Wenige Befehlscode-Formate mit einheitlicher Länge  |     \item wenige Befehlscode-Formate mit einheitlicher Länge  | ||||||
|     \item Direktverdrahtung |     \item Direktverdrahtung | ||||||
|     \item Trennung von Verarbeitungs \& Speicherbefehlen   |     \item Trennung von Verarbeitungs \& Speicherbefehlen   | ||||||
|     \item Hohe Ausführungsgeschwindigkeit $(CPI \leq 1)$ |     \item hohe Ausführungsgeschwindigkeit $(CPI \leq 1)$ | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   \paragraph{MIPS} |   \paragraph{MIPS} | ||||||
| @ -415,16 +415,24 @@ | |||||||
|     \item oder „Verbreiterung“ der Ausgabe-Logik (issue logic) zur Behandlung mehrerer Operationen parallel |     \item oder „Verbreiterung“ der Ausgabe-Logik (issue logic) zur Behandlung mehrerer Operationen parallel | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   \paragraph{ VLIW - Very Long Instruction Word} |   \paragraph{VLIW} Very Long Instruction Word | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|  |     \item Befehlszuordnung und Konfliktvermeidung 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 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 | ||||||
|     \item verschiedene parallele Ausführungseinheiten |     \item verschiedene parallele Ausführungseinheiten | ||||||
|     \item Verteilung von Maschinencode direkt vom Befehlswort im Speicher vorgegeben |     \item Verteilung von Maschinencode direkt vom Befehlswort im Speicher vorgegeben | ||||||
|     \item für jede Ausführungseinheit dezidierte Anweisungen |     \item für jede Ausführungseinheit dezidierte Anweisungen | ||||||
|     \item keine Abhängigkeiten, geringere Komplexität in Hardware |  | ||||||
|     \item Meist für stark parallelisierbare Aufgaben verwendet |     \item Meist für stark parallelisierbare Aufgaben verwendet | ||||||
|     \item Vorteile: |     \item Vorteile: | ||||||
|     \begin{itemize*} |     \begin{itemize*} | ||||||
|       \item Die parallele Architektur des Prozessors kann schon während der der Programmerstellung zur Optimierung genutzt werden |       \item parallele Architektur des Prozessors kann während der Programmerstellung zur Optimierung genutzt werden | ||||||
|       \item Keine aufwendige Prozessorhardware zur Befehlsverteilung erforderlich |       \item Keine aufwendige Prozessorhardware zur Befehlsverteilung erforderlich | ||||||
|       \item Ausführungszeiten sind im wesentlichen bekannt |       \item Ausführungszeiten sind im wesentlichen bekannt | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
| @ -435,8 +443,7 @@ | |||||||
|       \item Rekompilierung für den Prozessor erforderlich |       \item Rekompilierung für den Prozessor erforderlich | ||||||
|       \item Größerer Speicherbedarf, wenn Code nicht parallelisiert werden kann |       \item Größerer Speicherbedarf, wenn Code nicht parallelisiert werden kann | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
|   \end{itemize*} |   \end{itemize*}   | ||||||
|    |  | ||||||
|   % !{VLIW Dynamisch; Quelle RA2 Vorlesung 2020/21](Assets/RA2_VLIW-dynamisch.png) |   % !{VLIW Dynamisch; Quelle RA2 Vorlesung 2020/21](Assets/RA2_VLIW-dynamisch.png) | ||||||
|    |    | ||||||
|   EPIC = Explicitely Parallel Instruction Computing = IA64 |   EPIC = Explicitely Parallel Instruction Computing = IA64 | ||||||
| @ -494,19 +501,37 @@ | |||||||
|       Magnetbänder      & 100 s  & 5 TB |       Magnetbänder      & 100 s  & 5 TB | ||||||
|     \end{tabular} |     \end{tabular} | ||||||
|   \end{center} |   \end{center} | ||||||
|  | 
 | ||||||
|    |    | ||||||
|   Adresspipelining |   \section{Speicherarchitekturen} | ||||||
|  |   \paragraph{Adresspipelining} | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     % !{Pipelining; Quelle RA2 Vorlesung 2020/21](Assets/RA2_Adresspipelining.png) |     \item Aufteilen des Speicherzugriffs in mehrere Phasen | ||||||
|     \item Matrixaufbau eines Speichers |     \item parallele gestaffelte Abarbeitung dieser Phasen für mehrere Speicherzugriffe | ||||||
|     \item Aufteilen der Speicheradresse in Zeilen- und Spaltenadresse |     \item Adresse auslesen/dekodieren; Daten mit Prozessor | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|  |   % !{Pipelining; Quelle RA2 Vorlesung 2020/21](Assets/RA2_Adresspipelining.png) | ||||||
|   Lesezugriff auf Speicher |   Lesezugriff auf Speicher | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|  |     \item Matrixaufbau eines Speichers | ||||||
|  |     \item Aufteilen der Speicheradresse in Zeilen- und Spaltenadresse | ||||||
|     \item Dekodierung der Zeilenadresse bestimmt Select-Leitung |     \item Dekodierung der Zeilenadresse bestimmt Select-Leitung | ||||||
|     \item Komplette Zeile wird in den Zeilenpuffer geschrieben |     \item Komplette Zeile wird in den Zeilenpuffer geschrieben | ||||||
|     \item Durch Dekodierung der Spaltenadresse wird das gewünscht Datenwort ausgewählt |     \item Dekodierung der Spaltenadresse bestimmt Datenwort | ||||||
|     \item Blocktransfer (Burst): Auslesen des kompletten Zeilenpuffers durch automatisches Inkrementieren der Spaltenadresse |   \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*} | ||||||
|  |    | ||||||
|  |   \paragraph{Burst Mode} Blocktransfer | ||||||
|  |   \begin{itemize*} | ||||||
|  |     \item Auslesen des kompletten Zeilenpuffers durch automatisches Inkrementieren der Spaltenadresse | ||||||
|  |     \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*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   \subsection{Typischer DRAM-Speicher} |   \subsection{Typischer DRAM-Speicher} | ||||||
| @ -530,20 +555,31 @@ | |||||||
|    |    | ||||||
|   %Interleaving |   %Interleaving | ||||||
|   % !{Interleaving; Quelle RA2 Vorlesung 2020/21](Assets/RA2_Interleaving.png) |   % !{Interleaving; Quelle RA2 Vorlesung 2020/21](Assets/RA2_Interleaving.png) | ||||||
|    | 
 | ||||||
|   \subsection{Caches} |   \subsection{Cache Speicher} | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     \item Cache = schneller Speicher, der vor einen größeren, langsamen Speicher geschaltet wird |     \item kleiner, schneller Prozessornaher Speicher | ||||||
|  |     \item CPU weiß nicht dass Cache zwischengeschaltet ist | ||||||
|  |     \item es wird immer zuerst im Cache nachgeschaut, zum Adressvergleich (kostet Zeit) | ||||||
|     \item 90\% der Zeit verbringt ein Programm in 10\% des Codes |     \item 90\% der Zeit verbringt ein Programm in 10\% des Codes | ||||||
|     \item Puffer zwischen Hauptspeicher und Prozessor |     \item Puffer zwischen Hauptspeicher und Prozessor | ||||||
|     \item Prüfung anhand der Adresse, ob benötigte Daten im Cache vorhanden sind („Treffer“; cache hit) |     \item Cache besteht aus Cache Tabelle | ||||||
|  |     \begin{description*} | ||||||
|  |       \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] mehrere Adressvergleiche parallel | ||||||
|  |     \end{description*} | ||||||
|  |     \item Schreibstategien | ||||||
|  |     \begin{description*} | ||||||
|  |       \item[Write Back] Cache sammelt Schreibvorgänge und aktualisiert nur im Cache. Nach einer entsprechenden Anweisung werden Daten in den hauptspeicher kopiert (aktualisiert) | ||||||
|  |       \item[Write Trough] Daten werden sowohl im Cache als auch im Hauptspeicher aktualisiert | ||||||
|  |     \end{description*} | ||||||
|  |     \item Speicherverwaltung mit memory management günstiger vor dem Cache | ||||||
|  |     \item Prüfung anhand der Adresse, ob benötigte Daten im Cache vorhanden sind (Treffer: cache hit) | ||||||
|     \item Falls nicht (cache miss): Zugriff auf den (Haupt-) Speicher, Eintrag in den Cache |     \item Falls nicht (cache miss): Zugriff auf den (Haupt-) Speicher, Eintrag in den Cache | ||||||
|     %\item Prinzip eines Cache (Hit) !{Cachehit; Quelle RA2 Vorlesung 2020/21](Assets/RA2_Cachehit.png) |     %\item Prinzip eines Cache (Hit) !{Cachehit; Quelle RA2 Vorlesung 2020/21](Assets/RA2_Cachehit.png) | ||||||
|     \item Organisations: direkt, mengenassoziativ, vollassoziativ |  | ||||||
|     \item Welcher Speicherblock sollte bei einem Fehlzugriff ersetzt werden? |  | ||||||
|     \item Ersetzungsstrategie: Zufällig, FIFO, LRU |  | ||||||
|     \item Was passiert beim Schreiben von Daten in den Cache? |  | ||||||
|     \item Schreibstrategie: write-back, write-through |  | ||||||
|     \item Such-Einheit im Cache: Cache-Zeile (cache line) |     \item Such-Einheit im Cache: Cache-Zeile (cache line) | ||||||
|     \item Blockgröße ist Anzahl der Worte, die im Fall eines cache misses aus Speicher nachgeladen werden |     \item Blockgröße ist Anzahl der Worte, die im Fall eines cache misses aus Speicher nachgeladen werden | ||||||
|     \item Verbindung Speicher $\leftrightarrow$ Cache ist so entworfen, dass Speicher durch zusätzliches Lesen nicht langsamer wird |     \item Verbindung Speicher $\leftrightarrow$ Cache ist so entworfen, dass Speicher durch zusätzliches Lesen nicht langsamer wird | ||||||
| @ -555,17 +591,14 @@ | |||||||
|       \item Breite Speicher, die mehrere Worte parallel übertragen können |       \item Breite Speicher, die mehrere Worte parallel übertragen können | ||||||
|     \end{itemize*} |     \end{itemize*} | ||||||
|     %\item 2-Wege Cache (Datensicht) !{2 Wege Cache; Quelle RA2 Vorlesung 2020/21](Assets/RA2_2-wege-cache.png) |     %\item 2-Wege Cache (Datensicht) !{2 Wege Cache; Quelle RA2 Vorlesung 2020/21](Assets/RA2_2-wege-cache.png) | ||||||
|     \item Direkt abgebildet (Direct mapping): Für caching von Befehlen besonders sinnvoll, weil bei Befehlen Aliasing sehr unwahrscheinlich ist |  | ||||||
|     \item Satz-assoziativ abgebildet (Set-associative mapping): Sehr häufige Organisationsform, mit Set-Größe = 2/4/8 |  | ||||||
|     \item Vollassoziativ abgebildet (Associative mapping): Wegen der Größe moderner Caches kommt diese Organisationsform kaum in Frage |  | ||||||
|     \item Ersetzungs-Strategien |     \item Ersetzungs-Strategien | ||||||
|     \begin{itemize*} |     \begin{description*} | ||||||
|       \item Zufallsverfahren: Hier wird der zu ersetzende Block innerhalb des Satzes zufällig ausgewählt. |       \item[Zufall] zu ersetzende Block zufällig ausgewählt | ||||||
|       \item FIFO-Verfahren: Beim FIFO-Verfahren (engl. First In, First Out) wird der älteste Block ersetzt, auch wenn auf diesem gerade erst noch zugegriffen wurde |       \item[FIFO] älteste Block ersetzt | ||||||
|       \item LRU-Verfahren (least recently used ) Block ersetzt, auf den am längsten nicht mehr zugegriffen wurde |       \item[LRU] (least recently used ) Block ersetzt, auf den am längsten nicht mehr zugegriffen wurde | ||||||
|       \item LFU-Verfahren (least frequently used ) am seltensten gelesene Block ersetzt |       \item[LFU] (least frequently used ) am seltensten gelesene Block ersetzt | ||||||
|       \item CLOCK-Verfahren: alle Platzierungen im Kreis auf einem Ziffernblatt angeordnet. Ein Zeiger wird im Uhrzeigersinn weiterbewegt und zeigt den zu ersetzenden Eintrag an. |       \item[CLOCK] alle Platzierungen im Kreis auf einem Ziffernblatt angeordnet. Ein Zeiger wird im Uhrzeigersinn weiterbewegt und zeigt den zu ersetzenden Eintrag an | ||||||
|     \end{itemize*} |     \end{description*} | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   Strategien zum Rückschreiben $\rightarrow$ (Haupt-) Speicher |   Strategien zum Rückschreiben $\rightarrow$ (Haupt-) Speicher | ||||||
| @ -581,24 +614,80 @@ | |||||||
|    |    | ||||||
|   Trefferquote $T=\frac{N_C}{N_G}$ mit $N_G$ Gesamtzahl der Zugriffe auf Speicher und $N_C$ Anzahl der Zugriffe mit Hit auf Cache |   Trefferquote $T=\frac{N_C}{N_G}$ mit $N_G$ Gesamtzahl der Zugriffe auf Speicher und $N_C$ Anzahl der Zugriffe mit Hit auf Cache | ||||||
|    |    | ||||||
|   \subsection{ Digital-Signal-Prozessoren} |   \section{Spezialrechner} | ||||||
|   Entwickelt für hohe Leistung, u.a. sich wiederholende, numerisch intensive Aufgaben. |   \subsection{Einchiprechner} | ||||||
|   In einem Befehlszyklus kann man ausführen: |  | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     \item eine oder mehrere MAC-Operationen |     \item geringer Stromverbrauch, Wärme | ||||||
|     \item ein oder mehrere Speicherzugriffe |     \item relativ geringer Befehlsdurchsatz | ||||||
|     \item spezielle Unterstützung für effiziente Schleifen |     \item einfacher Befehlssatz | ||||||
|   \end{itemize*} |     \item komplexer Rechner auf einem Chip (Ram/Rom intern) | ||||||
|   Die Hardware enthält: |     \item an Problem angepasst | ||||||
|   \begin{itemize*} |     \item so Leistungsfähig wie nötig | ||||||
|     \item Eine oder mehrere MAC-Einheiten |     \item Anwendung: einfache Steuer-/Regelungsaufgaben | ||||||
|     \item On-Chip- und Off-Chip-Speicher mit mehreren Ports |  | ||||||
|     \item Mehrere On-Chip-Busse |  | ||||||
|     \item Adressgenerierungseinheit, die auf DSP-Anwendungen zugeschnittene Adressierungsmodi unterstützt |  | ||||||
|   \end{itemize*} |   \end{itemize*} | ||||||
|    |    | ||||||
|   \section{ Multiprozessorarchitekturen} |   \subsection{Digital-Signal-Prozessoren} | ||||||
|   Klassifikation nach Flynn |   \begin{itemize*} | ||||||
|  |     \item hohe Leistung, u.a. sich wiederholende, numerisch intensive Aufgaben | ||||||
|  |     \item pro Befehlszyklus kann man ausführen | ||||||
|  |     \begin{itemize*} | ||||||
|  |       \item mehrere ALU Funktionen (+Shifter) | ||||||
|  |       \item eine/mehrere MAC-Operationen | ||||||
|  |       \item ein/mehrere Speicherzugriffe | ||||||
|  |       \item spezielle Unterstützung effiziente Schleifen | ||||||
|  |     \end{itemize*} | ||||||
|  |     \item Die Hardware enthält | ||||||
|  |     \begin{itemize*} | ||||||
|  |       \item Eine oder mehrere MAC-Einheiten | ||||||
|  |       \item On-Chip- und Off-Chip-Speicher mit mehreren Ports | ||||||
|  |       \item Mehrere On-Chip-Busse | ||||||
|  |       \item Adressgenerierungseinheit | ||||||
|  |       \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 | ||||||
|  |     \end{itemize*} | ||||||
|  |     \item DSP's benutzung häufig VLIW | ||||||
|  |     \item Anwendung: Signal-/Bildverarbeitung | ||||||
|  |   \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{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*} | ||||||
|  |    | ||||||
|  |    | ||||||
|  |   \section{Multiprozessorarchitekturen} | ||||||
|  |   Klassifikation nach Flynn (Instruction/Data) | ||||||
|   \begin{center} |   \begin{center} | ||||||
|     \begin{tabular}{ c | c | c} |     \begin{tabular}{ c | c | c} | ||||||
|                        & Ein Datenstrom & mehrere Datenströme \\\hline |                        & Ein Datenstrom & mehrere Datenströme \\\hline | ||||||
| @ -625,7 +714,39 @@ | |||||||
|    |    | ||||||
|   %Reales Shared Memory System |   %Reales Shared Memory System | ||||||
|   % !{Shared Memory System; Quelle RA2 Vorlesung 2020/21](Assets/RA2_SharedMemorySystem.png) |   % !{Shared Memory System; Quelle RA2 Vorlesung 2020/21](Assets/RA2_SharedMemorySystem.png) | ||||||
|  | 
 | ||||||
|  |   \subsection{Kopplung} | ||||||
|  |   \begin{description*} | ||||||
|  |     \item[enge Kopplung] (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 Kopplung] (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*} | ||||||
|    |    | ||||||
|  |   \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*} | ||||||
|  | 
 | ||||||
|   Cache(daten)-Kohärenz |   Cache(daten)-Kohärenz | ||||||
|   \begin{itemize*} |   \begin{itemize*} | ||||||
|     \item Kohärenz: welcher Wert wird beim Lesen abgeliefert |     \item Kohärenz: welcher Wert wird beim Lesen abgeliefert | ||||||
| @ -695,188 +816,7 @@ | |||||||
|     \item Directory-Protokolle skalieren daher auch für Netze ohne Broadcast-Fähigkeit |     \item Directory-Protokolle skalieren daher auch für Netze ohne Broadcast-Fähigkeit | ||||||
|     \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