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:
|
\section{Measuring a kernel's throughput:
|
||||||
\pipedream{}}\label{sec:palmed_pipedream}
|
\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
|
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
|
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
|
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
|
\lstc{UNROLL_SIZE}, \lstc{TOTAL_INSN} and \lstc{NUM_MEASURES} are
|
||||||
parameters of the benchmark generation.
|
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
|
As \pipedream{} gets a multiset of instructions as a kernel, these
|
||||||
instructions' arguments must be instantiated to turn them into actual assembly
|
instructions' arguments must be instantiated to turn them into actual assembly
|
||||||
code ---~that is, turn \eg{} \lstxasm{ADD_GPR64i64_IMMi8} (the x86-64 variant
|
code ---~that is, turn \eg{} \lstxasm{ADD_GPR64i64_IMMi8} (the x86-64 variant
|
||||||
|
|
Loading…
Add table
Reference in a new issue