<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">\section{A frontend model for the Cortex A72}

\begin{frame}{The Cortex A72}
    \begin{itemize}
        \item{} Low-power ARM CPU
        \item{} CPU of the Raspberry Pi 4: easily available
        \item{} Aarch64, NEON SIMD
            \medskip{}
        \item{} ARM CPUs not usually modeled!
        \item{} Backend modeled by \palmed{}
    \end{itemize}
\end{frame}

\begin{frame}
    \centering
    \includegraphics[width=0.9\textwidth]{A72_pipeline_diagram.svg}
    \todo{Dispatch queues}
\end{frame}

\begin{frame}{Manual model}
    \begin{itemize}
        \item Goal: manually craft a frontend model
        \item Try to follow methods that can be automated
        \item Propose a parametric model for future works, leaving question
            marks on some sections
    \end{itemize}
\end{frame}

\begin{frame}{Proposed parametric model}
    \vfill
    \centering
    \begin{minipage}[t][0.7\textheight][c]{0.53\textwidth}
        \centering
        Globally,
        \vfill
        \includegraphics[width=\textwidth]{parametric_model-frontend.svg}
        \vfill~  % I hate LaTeX
    \end{minipage}
    \hfill\vrule\hfill
    \begin{minipage}[t][0.7\textheight][c]{0.43\textwidth}
        \centering
        For each instruction,
        \vfill
        \includegraphics[width=\textwidth]{parametric_model-insn.svg}
        \vfill~
    \end{minipage}

    \vfill
    In {\color{red}\textbf{red}}, parameters of the model.
\end{frame}

\begin{frame}{Counting \uops{}}
    For an instruction $i$, denote \alert{$\mucount{i}$} its number of \uops{}.
    \begin{itemize}
        \item{} For $k \in \nat$, construct (if possible) $\kerK_k$ a kernel:
            \begin{itemize}
                \item instruction $i$ + $k$ ``simple'' instructions (one \uop)
                \item frontend-bound:
                    \[
                        \cyc{\kerK_k} = \dfrac{k + \mucount{i}}{3}
                    \]
            \end{itemize}
        \item{} For well-chosen $k_0$, we should have
            \[
                \cyc{\kerK_{k_0}} + \sfrac{1}{3} = \cyc{\kerK_{k_0+1}}
            \]
        \item{} Measure to verify
            \bigskip
        \item{} If so, \textbf{\[
                \mucount{i} = 3 \cyc{\kerK_{k_0}} - k
        \]}

    \end{itemize}
\end{frame}

\begin{frame}{Evaluation: comparison to bare \palmed}
    \begin{itemize}
        \item Add a frontend to \palmed{}:
            \[
                \cyc{\kerK}_{\text{pred.}} = \max(\texttt{palmed}(\kerK), \texttt{frontend}(\kerK))
            \]
        \item Reuse evaluation suite of \palmed{}: SPEC CPU 2017 + Polybench
        \item Compare to \llvmmca{}
    \end{itemize}
\end{frame}

\begin{frame}{Results}
    \centering
    \begin{tabular}{l l c r r r r r}
        \toprule
        &amp; &amp; &amp; \multirow{2}{*}{\llvmmca{}} &amp; \multicolumn{3}{c}{\palmed{} with
        frontend\ldots} \\
        &amp; &amp; &amp; &amp; none &amp; linear &amp; disp.\ queues \\
        \midrule{}
        \multirow{3}{*}{SPEC} &amp; Cov. &amp; (\%)  &amp; 100.00 &amp; \na{} &amp; 97.21 &amp; 97.16 \\
                              &amp; Err. &amp; (\%)  &amp; 9.0   &amp; 20.1 &amp; 6.2 &amp; 4.6 \\
                              &amp; $\ktau$ &amp; (1)&amp; 0.83  &amp; 0.88 &amp; 0.91 &amp; 0.93 \\
        \midrule
        \multirow{3}{*}{Polybench} &amp; Cov. &amp; (\%)  &amp; 100.00&amp; \na{} &amp; 99.33 &amp; 99.33 \\
                                   &amp; Err. &amp; (\%)  &amp; 13.9 &amp; 12.6 &amp; 8.1 &amp; 8.0 \\
                                   &amp; $\ktau$ &amp; (1)&amp; 0.47 &amp; 0.82 &amp; 0.88 &amp; 0.90 \\
        \bottomrule
    \end{tabular}
\end{frame}

\begin{frame}{Limitations}
    \begin{itemize}
        \item Parts of this model were entirely manually solved (\eg{} \# of
            dispatch queues)
        \item Evaluation based on \palmed{} suite: biased
        \item Must be tested on other architectures!
    \end{itemize}
\end{frame}
</pre></body></html>