diff --git a/verfahren.tex b/verfahren.tex index b300d54..0e304a7 100644 --- a/verfahren.tex +++ b/verfahren.tex @@ -365,5 +365,32 @@ \end{itemize} \end{itemize} \end{enumerate} + +\section{Instruktionsanordnung} +\begin{itemize} + \item Abhänigkeits-DAG:\begin{itemize} + \item Betrachtung pro Grundblock + \item Knoten: Instruktion + \item Kante: Datenabhängigkeit zwischen zwei Instruktionen:\begin{itemize} + \item Flussabhängigkeit (\enquote{read after write}) + \item Ausgabeabhängigkeit (\enquote{write after write}) + \item Antiabhängigkeit (\enquote{write after read}) + \end{itemize} + \end{itemize} + \item Ausführungszeit (\enquote{ExecTime}) einer Instruktion: Zeit bis Instruktion durch alle Stufen der Pipeline gewandert ist + \item Latenz (\enquote{Latency}) einer Instruktion: Zeit, die Instruktion bis zur Ausführung warten muss + \item Verzögerung (\enquote{Delay}) einer Instruktion: Zeit bis alle davon abhängigen Instruktionen ausgeführt wurden: + \begin{equation*} + \mathrm{Delay}(n) = \begin{cases*} + \mathrm{ExecTime}(n) & falls $n$ Blattknoten\\ + \max_{m\in \mathrm{Succ}(n)} \left( \mathrm{Latency}(n, m) + \mathrm{Delay}(m)\right) & sonst + \end{cases*} + \end{equation*} + \item List-Scheduling: solange DAG Knoten enthält\begin{enumerate} + \item Wurzelknoten $w$ mit größtem Delay wählen + \item $w$ an Ausgabeliste anhängen + \item $w$ aus DAG entfernen + \end{enumerate} +\end{itemize} %\printbibliography \end{document}