[Speicher] Ergänze Abschnitt "Cache bei Mehrprozessorsystemen"
This commit is contained in:
parent
38fba031e3
commit
a85900c418
2 changed files with 40 additions and 1 deletions
BIN
Bilder/CPU_Mehrprozessor.png
Normal file
BIN
Bilder/CPU_Mehrprozessor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
|
@ -195,10 +195,11 @@ $\Rightarrow$ sobald das Zugriffsmuster Lokalität aufweist, ergibt sich eine be
|
||||||
Schreibzugriff durch die \acs{CPU} findet im \acl{HS} statt. Parallel dazu müssen die Daten im Cache invalidiert (schlecht) oder ebenfalls geschrieben werden (gut).
|
Schreibzugriff durch die \acs{CPU} findet im \acl{HS} statt. Parallel dazu müssen die Daten im Cache invalidiert (schlecht) oder ebenfalls geschrieben werden (gut).
|
||||||
\begin{itemize}[leftmargin=5mm]
|
\begin{itemize}[leftmargin=5mm]
|
||||||
\item[$\oplus$] optimale Konsistenz der Daten
|
\item[$\oplus$] optimale Konsistenz der Daten
|
||||||
\item[$\ominus$] Schreiben nur in \acl{HS}-Geschwindigkeit möglich
|
\item[$\ominus$] Schreiben nur in \acs{HS}-Geschwindigkeit möglich
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{paracol}
|
\end{paracol}
|
||||||
|
|
||||||
|
\hspace*{-5mm}
|
||||||
\begin{tabular}{p{32mm}|p{62mm}|p{62mm}}
|
\begin{tabular}{p{32mm}|p{62mm}|p{62mm}}
|
||||||
\textbf{Cachearchitektur} \newline \newline \textbf{Schreibstrategie}
|
\textbf{Cachearchitektur} \newline \newline \textbf{Schreibstrategie}
|
||||||
& \textbf{Write-Bac}k
|
& \textbf{Write-Bac}k
|
||||||
|
@ -603,3 +604,41 @@ Dividieren ist damit überflüssig (alle Zeitscheiben sind gleich lang): Additio
|
||||||
Bei der Verdrängung gibt ein Problem bei der Suche nach der niedrigsten \enquote{Häufigkeit}. \newline
|
Bei der Verdrängung gibt ein Problem bei der Suche nach der niedrigsten \enquote{Häufigkeit}. \newline
|
||||||
$\Rightarrow$ evtl. Lösung über eine bei Beginn jedes Zeitslots neu aufzubauende verkettete Liste. \newline
|
$\Rightarrow$ evtl. Lösung über eine bei Beginn jedes Zeitslots neu aufzubauende verkettete Liste. \newline
|
||||||
\phantom{$\Rightarrow$ }Hier gibt es viel Platz für Optimierungen der \acs{CPU}-Hersteller.
|
\phantom{$\Rightarrow$ }Hier gibt es viel Platz für Optimierungen der \acs{CPU}-Hersteller.
|
||||||
|
|
||||||
|
\subsection{Cache bei Mehrprozessor-/Mehrkernsystemen} \index{Mehrkernprozessor}
|
||||||
|
In \autoref{fig:cpu_mehrprozessor} besitzt jeder Kern einen eigenen Cache. Möglich wäre auch ein gemeinsamer Cache. Verglichen werden diese beiden Möglichkeiten in \autoref{tbl:mehrprozessor_cache}.
|
||||||
|
|
||||||
|
\begin{figure}[!ht]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth-3cm]{./Bilder/CPU_Mehrprozessor.png}
|
||||||
|
\caption{Mehrprozessor-/Mehrkernsystem}
|
||||||
|
\label{fig:cpu_mehrprozessor}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\begin{table}[ht]
|
||||||
|
\hspace*{-5mm}
|
||||||
|
\begin{tabular}{@{}cp{7.6cm}|cp{7.6cm}}
|
||||||
|
& \textbf{gemeinsamer Cache} & & \textbf{getrennter Cache} \\ \midrule
|
||||||
|
|
||||||
|
$\oplus$ & dieselben Daten für beide Kerne benötigt bedeutet nur einmaliges Einlagern im Cache (Platzvorteil).
|
||||||
|
& $\ominus$ & Dieselben Daten müssen ggf. mehrfach in den Caches gehalten werden.
|
||||||
|
\\ [4ex]
|
||||||
|
|
||||||
|
$\ominus$ & komplexer Bus mit Zugriffsprotokoll (Zeitverlust zumindest bei Zugriffskollision)
|
||||||
|
& $\oplus$ & einfache 1:1-Verbindungen (kein komplexes Zugriffsprotokoll)
|
||||||
|
\\ [2ex]
|
||||||
|
|
||||||
|
& & $\ominus$ & keine Konsistenz trotz Write-Through Strategie gewährleistet\\
|
||||||
|
\end{tabular}
|
||||||
|
\caption{Vergleich von getrennten/gemeinsamen Caches bei Mehrkernsystemen}
|
||||||
|
\label{tbl:mehrprozessor_cache}
|
||||||
|
\end{table}
|
||||||
|
|
||||||
|
Abhilfe für Inkonsistenz bei mehreren Caches und Mehrprozessorsystemen:
|
||||||
|
|
||||||
|
\begin{itemize}[noitemsep]
|
||||||
|
\item gemeinsamer Cache (ungünstige Performance aufgrund eines Bus)
|
||||||
|
\item Snoop-Logik, \dash jeder Cache schnüffelt bei den anderen Caches bzw. beim \acs{HS}, welche Daten geschrieben wurden und invalidiert diese ggf. im eigenen Cache.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Tatsächlich haben moderne \acsp{CPU} beim L1-Cache getrennte Caches für jeden Kern und beim L3-Cache einen gemeinsamen Cache. Ob eine Snoop-Logik verwendet wird, ist davon abhängig, ob es für das Level notwendig ist oder nicht.
|
||||||
|
|
Loading…
Reference in a new issue