Beginning of cyc{K} definition writeup
This commit is contained in:
parent
5d4d3e34ae
commit
61252c8450
1 changed files with 43 additions and 1 deletions
|
@ -163,8 +163,50 @@ be analyzed.
|
|||
|
||||
\subsection{Examples with \llvmmca}
|
||||
|
||||
\todo{}
|
||||
|
||||
\subsection{Definitions}
|
||||
|
||||
\subsubsection{Throughput and reverse-throughput}
|
||||
\subsubsection{Throughput and reciprocal throughput}
|
||||
|
||||
Given a kernel $\kerK$ of straight-line assembly code, we have referred to
|
||||
$\cyc{\kerK}$ as the \emph{reciprocal throughput} of $\kerK$, that is, how many
|
||||
cycles $\kerK$ will require to complete its execution in steady-state. We
|
||||
define this notion here more formally.
|
||||
|
||||
\begin{definition}[Reciprocal throughput of a kernel]
|
||||
The \emph{reciprocal throughput} of a kernel $\kerK$, noted $\cyc{\kerK}$
|
||||
and measured in \emph{cycles per iteration}, is also called the
|
||||
steady-state execution time of a kernel.
|
||||
|
||||
It is defined as the
|
||||
number of cycles, \emph{in steady-state}, from the moment the first
|
||||
instruction of the kernel starts to be decoded to the moment the last
|
||||
instruction of the kernel is issued.
|
||||
|
||||
This number may not be an integer if, \eg{}, \todo{}
|
||||
\end{definition}
|
||||
|
||||
Due to the pipelined nature of execution units, this means that the same
|
||||
instruction of each iteration of $\kerK$ will be retired ---~\ie{} yield its
|
||||
result~--- every steady-state execution time. For this reason, the execution
|
||||
time is measured until the last instruction is issued, not retired.
|
||||
|
||||
Throughout this manuscript, we mostly use reciprocal throughput as a metric, as
|
||||
we find it more relevant from an optimisation point of view ---~an opinion we
|
||||
detail in \autoref{chap:CesASMe}. However, the
|
||||
\emph{throughput} of a kernel is most widely used in the literature in its
|
||||
stead.
|
||||
|
||||
\begin{definition}[Throughput of a kernel]
|
||||
The \emph{throughput} of a kernel $\kerK$, measured in \emph{instructions
|
||||
per cycle}, or IPC, is defined as the number of instructions in $\kerK$, divided
|
||||
by the steady-state execution time of $\kerK$.
|
||||
\end{definition}
|
||||
|
||||
In the literature or in analyzers' reports, the throughput of a kernel is often
|
||||
referred to as its \emph{IPC} (its unit).
|
||||
|
||||
\todo{Measure of $\cyc{\kerK}$}
|
||||
|
||||
\subsubsection{Basic block of an assembly-level program}
|
||||
|
|
Loading…
Reference in a new issue