Further writeup, start A72

This commit is contained in:
Théophile Bastian 2024-11-22 14:14:32 +01:00
parent f8e83ebaf7
commit 3180ae0e01
4 changed files with 702 additions and 2 deletions

View file

@ -72,8 +72,8 @@
given CPU
\item Features microarchitectural models
\item Most often static analyzers
\item Predict at least the \emph{reverse-throughput} of a
kernel (cycles per iteration)
\item Predict at least the \emph{reverse-throughput} $\cyc{\kerK}$ of a
kernel $\kerK$ (cycles per iteration)
\item May derive further useful metrics, \eg{} bottlenecks, by
inspecting their model at will
\end{itemize}

View file

@ -1 +1,51 @@
\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}
\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}{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}

View file

@ -0,0 +1,650 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="240mm"
height="110.30828mm"
viewBox="0 0 240 110.30828"
version="1.1"
id="svg1"
sodipodi:docname="A72_pipeline_diagram.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#616161"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="false"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.76905556"
inkscape:cx="309.47049"
inkscape:cy="429.74789"
inkscape:window-width="1916"
inkscape:window-height="1161"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="true" />
<defs
id="defs1">
<marker
style="overflow:visible"
id="ArrowWide"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-1"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-1" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-3"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-9" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-33"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-8" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-4"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-0" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-6"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-7" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-7"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-2" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-60"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-27" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-15"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-99" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-75"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Wide arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid">
<path
style="fill:none;stroke:context-stroke;stroke-width:1;stroke-linecap:butt"
d="M 3,-3 0,0 3,3"
transform="rotate(180,0.125,0)"
sodipodi:nodetypes="ccc"
id="path1-87" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-2.1624755e-8,-5)">
<g
id="g4">
<rect
style="fill:#8bcbed;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"
id="rect1"
width="50"
height="60"
x="2.1624757e-08"
y="22.5" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="15.388178"
y="55.130333"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
x="15.388178"
y="55.130333">Fetch</tspan></text>
</g>
<g
id="g5"
transform="translate(0.06535216)">
<rect
style="fill:#8bcbed;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"
id="rect1-6"
width="50"
height="60"
x="59.927437"
y="22.5" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="69.336647"
y="45.627029"
id="text3"><tspan
sodipodi:role="line"
id="tspan3"
style="stroke-width:0.264583"
x="69.336647"
y="45.627029">Decode,</tspan><tspan
sodipodi:role="line"
style="stroke-width:0.264583"
x="69.336647"
y="54.44648"
id="tspan4">Rename,</tspan><tspan
sodipodi:role="line"
style="stroke-width:0.264583"
x="69.336647"
y="63.26593"
id="tspan6">Dispatch</tspan></text>
</g>
<g
id="g25"
transform="translate(35)">
<rect
style="fill:#8bcbed;fill-opacity:1;stroke:none;stroke-width:0;stroke-dasharray:none"
id="rect7"
width="20"
height="95"
x="100"
y="5" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="-61.781094"
y="112.52181"
id="text7"
transform="rotate(-90)"><tspan
sodipodi:role="line"
id="tspan7"
style="stroke-width:0.264583"
x="-61.781094"
y="112.52181">Issue</tspan></text>
</g>
<g
id="g17"
transform="translate(34.951935)">
<rect
style="fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-dasharray:none"
id="rect8"
width="75"
height="9.999999"
x="130.04807"
y="5.0479302" />
<text
xml:space="preserve"
style="font-size:6.80045px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0;stroke-dasharray:none"
x="129.25612"
y="12.959792"
id="text8"
transform="scale(1.0390726,0.96239666)"><tspan
sodipodi:role="line"
id="tspan8"
style="stroke-width:0;stroke-dasharray:none"
x="129.25612"
y="12.959792">Branch</tspan></text>
</g>
<g
id="g18"
transform="translate(34.949875)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect8-1"
width="75"
height="9.999999"
x="130.05013"
y="17.183941" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.30753"
y="24.055243"
id="text8-1"><tspan
sodipodi:role="line"
id="tspan8-5"
style="stroke-width:0.264584"
x="134.30753"
y="24.055243">Integer 0</tspan></text>
</g>
<g
id="g19"
transform="translate(34.949875)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect8-10"
width="75"
height="9.999999"
x="130.05013"
y="29.31995" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.30753"
y="36.146938"
id="text8-3"><tspan
sodipodi:role="line"
id="tspan8-0"
style="stroke-width:0.264584"
x="134.30753"
y="36.146938">Integer 1</tspan></text>
</g>
<g
id="g20"
transform="translate(34.950013)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect8-7"
width="75"
height="9.999999"
x="130.04999"
y="41.455959" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.30753"
y="48.393661"
id="text8-6"><tspan
sodipodi:role="line"
id="tspan8-3"
style="stroke-width:0.264584"
x="134.30753"
y="48.393661">Integer multi-cycle</tspan></text>
</g>
<g
id="g21"
transform="translate(34.951951)">
<rect
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="rect8-6"
width="75"
height="9.9999971"
x="130.04805"
y="53.591972" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.30753"
y="60.876377"
id="text8-2"><tspan
sodipodi:role="line"
id="tspan8-1"
style="stroke-width:0.264584"
x="134.30753"
y="60.876377">FP/SIMD 0</tspan></text>
</g>
<g
id="g22"
transform="translate(34.951951)">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect8-6-7"
width="75"
height="9.9999971"
x="130.04805"
y="65.727982" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.30753"
y="73.01458"
id="text8-18"><tspan
sodipodi:role="line"
id="tspan8-59"
style="stroke-width:0.264584"
x="134.30753"
y="73.01458">FP/SIMD 1</tspan></text>
</g>
<g
id="g23"
transform="translate(34.951951)">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect8-6-6"
width="75"
height="9.9999971"
x="130.04805"
y="77.863991" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.30753"
y="85.492126"
id="text8-189"><tspan
sodipodi:role="line"
id="tspan8-6"
style="stroke-width:0.264584"
x="134.30753"
y="85.492126">Load</tspan></text>
</g>
<g
id="g24"
transform="translate(34.951951)">
<rect
style="font-variation-settings:normal;vector-effect:none;fill:#e1ad9c;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000"
id="rect8-6-0"
width="75"
height="9.9999971"
x="130.04805"
y="90" />
<text
xml:space="preserve"
style="font-size:7.05557px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264584"
x="134.53491"
y="97.568321"
id="text8-60"><tspan
sodipodi:role="line"
id="tspan8-4"
style="stroke-width:0.264584"
x="134.53491"
y="97.568321">Store</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide)"
d="m 50,52.5 h 9.028523"
id="path27" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-1)"
d="m 110,52.5 h 24.06932"
id="path27-3" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-3)"
d="m 155,10.04793 h 9.02853"
id="path27-9" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-33)"
d="m 155,22.18394 h 9.02853"
id="path27-5" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-4)"
d="m 155,34.31995 h 9.02853"
id="path27-4" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-6)"
d="m 155,46.455959 h 9.02852"
id="path27-6" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-7)"
d="m 155,58.591971 h 9.02852"
id="path27-2" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-60)"
d="m 155,70.72798 h 9.02853"
id="path27-1" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-15)"
d="m 155,82.863989 h 9.02852"
id="path27-49" />
<path
style="fill:none;stroke:#000000;stroke-width:1.00748;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide-75)"
d="m 155,94.999999 h 9.02853"
id="path27-48" />
<g
id="g8">
<rect
style="fill:#e788e7;fill-opacity:1;stroke-width:1.53098"
id="rect2"
width="110"
height="10"
x="2.1624755e-08"
y="105.30828" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="40.632221"
y="112.93861"
id="text30"><tspan
sodipodi:role="line"
id="tspan30"
style="stroke-width:0.264583"
x="40.632221"
y="112.93861">In-order</tspan><tspan
sodipodi:role="line"
style="stroke-width:0.264583"
x="40.632221"
y="121.75806"
id="tspan31" /></text>
</g>
<g
id="g7"
transform="translate(15.000002)">
<rect
style="fill:#e788e7;fill-opacity:1;stroke-width:1.49578"
id="rect2-2"
width="105"
height="10"
x="120"
y="105.30828" />
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="150.61502"
y="112.93861"
id="text32"><tspan
sodipodi:role="line"
id="tspan32"
style="stroke-width:0.264583"
x="150.61502"
y="112.93861">Out-of-order</tspan></text>
</g>
<g
id="g34"
transform="translate(128.54278,-45.95288)">
<g
id="g6"
transform="translate(-129.5646,50.965203)">
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="17.307535"
y="7.1305718"
id="text33"><tspan
sodipodi:role="line"
id="tspan33"
style="stroke-width:0.264583"
x="17.307535"
y="7.1305718">Front-end</tspan></text>
<rect
style="font-variation-settings:normal;opacity:1;fill:#8bcbed;fill-opacity:1;stroke:none;stroke-width:0.624481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect33"
width="10"
height="1"
x="5"
y="4" />
</g>
</g>
<g
id="g35"
transform="translate(56.280655,-3.7532659)">
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="17.307535"
y="15.896161"
id="text34"><tspan
sodipodi:role="line"
id="tspan34"
style="stroke-width:0.264583"
x="17.307535"
y="15.896161">Back-end</tspan></text>
<rect
style="font-variation-settings:normal;fill:#e1ad9c;fill-opacity:1;stroke:none;stroke-width:0.624481;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect34"
width="10"
height="1"
x="5"
y="12.76559" />
</g>
<text
xml:space="preserve"
style="font-size:7.05556px;line-height:1.25;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Normal';font-variant-ligatures:none;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="122.38574"
y="36.796917"
id="text9"><tspan
sodipodi:role="line"
id="tspan9"
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
x="122.38574"
y="36.796917">3</tspan><tspan
sodipodi:role="line"
style="text-align:center;text-anchor:middle;stroke-width:0.264583"
x="122.38574"
y="45.616367"
id="tspan10">μOPs</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 25 KiB