next up previous contents
Next: Untergrenze des Füllstandes Up: Ergebnisse der ersten Versuchsreihe Previous: Fetch-Strategie   Inhalt

Anteil der Speicherbefehle

Der Anteil der Speicherbefehle ist eine Eigenschaft der Programme, die auf dem Mikrocontroller laufen sollen und kann daher nicht festgelegt werden. Bis zu einem Anteil von 50% kann der Controller noch die meisten Latenzen verdecken, wie in Abbildung 3.5 zu sehen ist. Da jeder Speicherbefehl zwei Byte lang ist, leert er das Befehlsfenster eines Thread um zwei Bytes. Die Fetch-Stufe ist währenddessen blockiert. Bei den hier verwendeten Caffeine-Marks entnimmt jeder andere Befehl dem Fenster im Schnitt 1,744 Bytes, kann aber wieder einige Bytes durch Laden neuer Befehle aus dem Speicher hinzufügen. Daher ergibt sich bei einer Fetchbandbreite von b Bytes und einem Anteil an Speicherbefehlen von m:

\begin{eqnarray*}
m(-2)+(1-m)(b-1,744)=0\\
-2m+b-1,744-bm+1,744m=0\\
-2m-bm+1,744m=1,744-b\\
(b+0,256)m=b-1,744\\
m=\frac{b-1,744}{b+0,256}\\
\end{eqnarray*}


Mit einer Fetch-Bandbreite von vier Bytes ergibt sich somit:

\begin{displaymath}
m=0,53\\
\end{displaymath}

Bei über 53% Speicherbefehlen laufen die Fenster daher leer. Sie können auch schon etwas früher leerlaufen, da die Nebeneffekte von Sprüngen bei dieser Rechnung nicht berücksichtigt werden. Mit zunehmender Fetch-Bandbreite nimmt der Anteil an Speicherzugriffen zu, der toleriert werden kann, und konvergiert schließlich gegen eins.

Abbildung 3.5: Die Leerlaufzeit bei verschieden vielen Speicherbefehlen


next up previous contents
Next: Untergrenze des Füllstandes Up: Ergebnisse der ersten Versuchsreihe Previous: Fetch-Strategie   Inhalt
Alexander Schulz
2000-06-18