Describe briefly Pipedream's fully qualified instructions
This commit is contained in:
parent
4810a53168
commit
99887ecf4a
1 changed files with 7 additions and 2 deletions
|
@ -1,8 +1,6 @@
|
|||
\section{Measuring a kernel's throughput:
|
||||
\pipedream{}}\label{sec:palmed_pipedream}
|
||||
|
||||
\todo{Introduce pipedream notation for instructions}
|
||||
|
||||
To build a mapping of a CPU, Palmed fundamentally depends on the ability to
|
||||
measure the execution time $\cyc{\kerK}$ of a kernel $\kerK$. However, as we
|
||||
saw above, Palmed defines a kernel as a multiset of instructions, and makes
|
||||
|
@ -40,6 +38,13 @@ that $\texttt{\footnotesize{}UNROLL\_SIZE} \times
|
|||
\lstc{UNROLL_SIZE}, \lstc{TOTAL_INSN} and \lstc{NUM_MEASURES} are
|
||||
parameters of the benchmark generation.
|
||||
|
||||
\pipedream{} must be able to distinguish between variants of instructions with
|
||||
the same mnemonic --~\eg{} \lstxasm{mov}~-- but different operand kinds,
|
||||
altering the semantics and performance of the instruction --~such as a
|
||||
\lstxasm{mov} loading from memory versus a \lstxasm{mov} between registers. To
|
||||
this end, \pipedream{} represents instructions fully qualified with their
|
||||
operands' kind --~this can be seen as a process akin to C++'s name mangling.
|
||||
|
||||
As \pipedream{} gets a multiset of instructions as a kernel, these
|
||||
instructions' arguments must be instantiated to turn them into actual assembly
|
||||
code ---~that is, turn \eg{} \lstxasm{ADD_GPR64i64_IMMi8} (the x86-64 variant
|
||||
|
|
Loading…
Reference in a new issue