Hack through Foundations (lightly) to reduce time

This commit is contained in:
Théophile Bastian 2024-12-01 21:20:44 +01:00
parent c5eabf6997
commit 63acbb7634
5 changed files with 251 additions and 82 deletions

View file

@ -16,72 +16,68 @@
\begin{column}{0.62\textwidth}
\begin{tightitemize}{0pt}
\begin{itemize}
\item \alert{Frontend:} \uops{} not issued fast enough;
issuing faster would speed up computation;
\item \alert{Frontend:} \uops{} not issued fast enough
\bigskip
\item \alert{Backend:} saturated execution units; adding
more units would speed up computation;
\item \alert{Backend:} saturated execution units
\bigskip
\item \alert{Dependencies:} computation is stalled waiting
for previous results; removing data dependencies would
speed up computation.
for previous results
\end{itemize}
\end{tightitemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}{Dependencies and the ROB}
\begin{columns}
\begin{column}{0.35\textwidth}
\begin{center}
\includegraphics[width=\textwidth]{cpu_frontend.svg}
\end{center}
\end{column}
\hfill
\begin{column}{0.64\textwidth}
\begin{tightitemize}{0pt}
\begin{itemize}
\item Dependencies can stall execution
\item Maybe instructions further down can be executed right now?
\end{itemize}
\begin{center}
\textbf{\alert{$\to$ Out-of-Order CPUs}}
\end{center}
\begin{itemize}
\item ROB: circular buffer of \uops{}
\item First possible instruction is issued
\end{itemize}
\end{tightitemize}
\end{column}
\end{columns}
\end{frame}
%\begin{frame}{Dependencies and the ROB}
% \begin{columns}
% \begin{column}{0.35\textwidth}
% \begin{center}
% \includegraphics[width=\textwidth]{cpu_frontend.svg}
% \end{center}
% \end{column}
% \hfill
% \begin{column}{0.64\textwidth}
% \begin{tightitemize}{0pt}
% \begin{itemize}
% \item Dependencies can stall execution
% \item Maybe instructions further down can be executed right now?
% \end{itemize}
% \begin{center}
% \textbf{\alert{$\to$ Out-of-Order CPUs}}
% \end{center}
% \begin{itemize}
% \item ROB: circular buffer of \uops{}
% \item First possible instruction is issued
% \end{itemize}
% \end{tightitemize}
% \end{column}
% \end{columns}
%\end{frame}
\begin{frame}{How do we get insights from this complex system?}
\textbf{Hardware counters}
\begin{itemize}
\item Built-in hardware, counters gathered at runtime
\item Very accurate
\item Available data varies from model to model
\item May not even be available at all
\end{itemize}
%\begin{frame}{How do we get insights from this complex system?}
% \textbf{Hardware counters}
% \begin{itemize}
% \item Built-in hardware, counters gathered at runtime
% \item Very accurate
% \item Available data varies from model to model
% \item May not even be available at all
% \end{itemize}
%
% \textbf{Simulation?}
% \begin{itemize}
% \item A modern CPU is \alert{$\sim$\,100e9 transistors}: very complex
% models!
% \item Very expensive, even for manufacturers for design validation
% \item CPU design is industrial secret $\leadsto$ not available anyway
% \item \ldots{}\ie{} not feasible.
% \end{itemize}
%\end{frame}
\textbf{Simulation?}
\begin{frame}{Code analyzers}
\begin{itemize}
\item A modern CPU is \alert{$\sim$\,100e9 transistors}: very complex
models!
\item Very expensive, even for manufacturers for design validation
\item CPU design is industrial secret $\leadsto$ not available anyway
\item \ldots{}\ie{} not feasible.
\end{itemize}
\end{frame}
\begin{frame}{Enter code analyzers}
\begin{itemize}
\item Tools that predict performance of a piece of assembly code on a
given CPU
\item That predict performance of a piece of assembly
\item Features microarchitectural models
\item Most often static analyzers
\item Predict at least the \emph{reverse-throughput} $\cyc{\kerK}$ of a

View file

@ -7,7 +7,7 @@
viewBox="0 0 260 220"
version="1.1"
id="svg1"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
sodipodi:docname="cpu_big_picture.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@ -23,12 +23,12 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.92729075"
inkscape:cx="426.51132"
inkscape:cy="471.80456"
inkscape:zoom="1.8545815"
inkscape:cx="396.58543"
inkscape:cy="226.19658"
inkscape:window-width="1916"
inkscape:window-height="1041"
inkscape:window-x="0"
inkscape:window-x="1920"
inkscape:window-y="18"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
@ -375,11 +375,10 @@
y="45.209263">Decoder</tspan></text>
</g>
<g
id="g14"
transform="translate(0,-3.1049999)">
id="g1">
<g
id="g7-0"
transform="matrix(1.000053,0,0,0.66658008,49.997613,14.372066)">
transform="matrix(1.000053,0,0,0.66658008,39.808405,12.934493)">
<rect
style="fill:#69b2d8;fill-opacity:1;stroke:#000000;stroke-width:0.00866583;stroke-dasharray:none"
id="rect3-6"
@ -392,13 +391,13 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;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;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="81.988571"
y="45.122448"
y="42.017448"
id="text5-1"><tspan
sodipodi:role="line"
id="tspan5-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;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="81.988571"
y="45.122448">Renamer</tspan></text>
y="42.017448">…</tspan></text>
</g>
<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)"
@ -853,7 +852,7 @@
sodipodi:role="line"
id="tspan38"
x="193.66086"
y="24.500828"></tspan></text>
y="24.500828" /></text>
<g
id="g40"
transform="matrix(1,0,0,0.99774496,0,0.02255035)">

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -23,13 +23,13 @@
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.92729075"
inkscape:cx="514.94097"
inkscape:cy="422.19768"
inkscape:zoom="6.1940124"
inkscape:cx="348.23953"
inkscape:cy="148.61126"
inkscape:window-width="1916"
inkscape:window-height="1041"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-x="1920"
inkscape:window-y="18"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
@ -375,11 +375,10 @@
y="45.209263">Decoder</tspan></text>
</g>
<g
id="g14"
transform="translate(0,-3.1049999)">
id="g1">
<g
id="g7-0"
transform="matrix(1.000053,0,0,0.66658008,49.997613,14.372066)">
transform="matrix(1.000053,0,0,0.66658008,49.997613,11.267066)">
<rect
style="fill:#69b2d8;fill-opacity:1;stroke:#000000;stroke-width:0.00866583;stroke-dasharray:none"
id="rect3-6"
@ -391,14 +390,14 @@
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;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;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="81.988571"
y="45.122448"
x="92.17778"
y="40.350021"
id="text5-1"><tspan
sodipodi:role="line"
id="tspan5-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;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="81.988571"
y="45.122448">Renamer</tspan></text>
x="92.17778"
y="40.350021">…</tspan></text>
</g>
<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)"

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

View file

@ -237,11 +237,10 @@
y="45.209263">Decoder</tspan></text>
</g>
<g
id="g14"
transform="translate(0,-3.1049999)">
id="g1">
<g
id="g7-0"
transform="matrix(1.000053,0,0,0.66658008,49.997613,14.372066)">
transform="matrix(1.000053,0,0,0.66658008,49.997613,11.267066)">
<rect
style="fill:#69b2d8;fill-opacity:1;stroke:#000000;stroke-width:0.00866583;stroke-dasharray:none"
id="rect3-6"
@ -253,14 +252,14 @@
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;line-height:1.25;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;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="81.988571"
y="45.122448"
x="92.17778"
y="40.350021"
id="text5-1"><tspan
sodipodi:role="line"
id="tspan5-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.64444px;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="81.988571"
y="45.122448">Renamer</tspan></text>
x="92.17778"
y="40.350021">…</tspan></text>
</g>
<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)"

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,176 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="132.99132mm"
height="89.924919mm"
viewBox="0 0 132.99132 89.924919"
version="1.1"
id="svg1"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
sodipodi:docname="sota_potato.svg"
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="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="2.1039601"
inkscape:cx="239.78591"
inkscape:cy="116.20943"
inkscape:window-width="1916"
inkscape:window-height="1041"
inkscape:window-x="1920"
inkscape:window-y="18"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<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="path33" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-14.595894,-4.07008)">
<ellipse
style="fill:#aa1818;fill-opacity:0;stroke-width:0.491355;stroke-linecap:round"
id="path1"
cx="64.153732"
cy="37.484089"
rx="39.882759"
ry="20.125113" />
<path
id="path10"
style="fill:#9ee7f9;fill-opacity:1;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="M 53.346098,7.8098592 A 65.938454,33.534351 0 0 0 15.15308,38.161495 65.938454,33.534351 0 0 0 27.368872,57.491064 c 1.142981,-1.953466 3.17229,-3.691235 5.566069,-3.47524 3.485295,-0.221173 6.903093,0.72707 10.372493,0.802535 2.438142,-0.05967 4.637228,-1.216419 6.856946,-2.081526 1.499609,-0.486997 3.3566,0.552699 3.412195,2.204516 -0.219069,1.108341 0.502193,2.451517 1.756482,2.357479 1.287109,0.06433 2.136931,-0.973916 3.05201,-1.67535 C 58.731352,55.41667 59.32924,55.057964 59.704883,54.90776 63.890171,41.33095 64.165684,27.615 53.398291,8.0925293 Z" />
<path
id="path4"
style="fill:#9ee7f9;fill-opacity:0;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 59.704883,54.90776 c -0.375643,0.150204 -0.973531,0.50891 -1.319816,0.715718 -0.915079,0.701434 -1.764901,1.73968 -3.05201,1.67535 -1.254289,0.09404 -1.975551,-1.249138 -1.756482,-2.357479 -0.05559,-1.651817 -1.912586,-2.691513 -3.412195,-2.204516 -2.219718,0.865107 -4.418804,2.021856 -6.856946,2.081526 -3.4694,-0.07547 -6.887198,-1.023708 -10.372493,-0.802535 -2.393779,-0.215995 -4.423088,1.521774 -5.566069,3.47524 a 65.938454,33.534351 0 0 0 26.929106,11.261329 l 0.181901,-0.102837 c 1.999992,-4.705185 3.829759,-9.215709 5.225004,-13.741796 z" />
<path
id="path5"
style="fill:#fff5e3;fill-opacity:0;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1"
d="m 109.09419,7.8098592 a 65.938454,33.534351 0 0 1 38.19302,30.3516358 65.938454,33.534351 0 0 1 -39.1449,30.590898 l -0.1819,-0.102837 C 99.961077,49.830305 94.685076,34.123213 109.042,8.0925293 Z" />
<path
id="ellipse5"
style="fill:#f3b0e8;fill-opacity:0;stroke:#000000;stroke-width:0.6;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="m 100.05487,37.972876 c -0.813202,0.887965 -0.237087,2.67278 -0.917769,3.487126 -0.518895,0.934182 -2.328058,1.697259 -2.808614,0.342098 -0.345854,-1.3538 0.906455,-2.921999 -0.397392,-4.086056 -1.010664,-1.204477 -3.011778,-0.844668 -3.765144,0.463538 -1.085338,2.152624 -3.669093,3.131002 -5.969145,2.722314 -2.830996,-0.251529 -4.935667,-2.927372 -7.867737,-2.63033 -2.50845,0.570507 -5.06814,1.352554 -7.67085,0.971 -1.784665,0.0018 -3.282596,-0.974508 -4.294828,-2.411739 -0.633136,-1.003587 -2.731669,-1.416073 -4.035412,-0.76016 0.583963,11.591926 -3.161265,21.552626 -7.8481,32.578889 l -0.181901,0.102837 c -9.15e-4,0.0016 -0.0022,0.003 -0.0031,0.0046 a 65.938454,33.534351 0 0 0 26.796814,2.938839 65.938454,33.534351 0 0 0 26.971478,-2.988448 l -0.10283,-0.05788 C 103.53178,58.23093 99.94488,48.763598 100.05487,37.972876 Z" />
<path
id="path12"
style="fill:#f3b0e8;fill-opacity:1;stroke:#000000;stroke-width:0.6;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
d="M 81.091691,4.6271077 A 65.938454,33.534351 0 0 0 53.314058,7.7726522 c 0.0099,0.012577 0.02233,0.024583 0.03204,0.037207 l 0.05219,0.2826701 c 5.945123,10.7791647 8.516964,19.7853987 8.929688,27.9781377 1.303743,-0.655913 3.402276,-0.243427 4.035412,0.76016 1.012232,1.437231 2.510163,2.413572 4.294828,2.411739 2.60271,0.381554 5.1624,-0.400493 7.67085,-0.971 2.93207,-0.297042 5.036741,2.378801 7.867737,2.63033 2.300052,0.408688 4.883807,-0.56969 5.969145,-2.722314 0.753366,-1.308206 2.75448,-1.668015 3.765144,-0.463538 1.303847,1.164057 0.05154,2.732256 0.397392,4.086056 0.480556,1.355161 2.289719,0.592084 2.808614,-0.342098 0.680682,-0.814346 0.104567,-2.599161 0.917772,-3.487126 0.0887,-8.70059 2.57839,-18.260727 8.98705,-29.8803467 l 0.0522,-0.2826701 c 10e-4,-0.00189 0.003,-0.0038 0.005,-0.00568 A 65.938454,33.534351 0 0 0 81.091691,4.6271077 Z" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;line-height:1.02;font-family:Sans;-inkscape-font-specification:'Sans, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="25.09129"
y="26.222841"
id="text7"><tspan
sodipodi:role="line"
id="tspan7"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
x="25.09129"
y="26.222841">Backend</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;line-height:1.02;font-family:Sans;-inkscape-font-specification:'Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="104.57431"
y="26.222841"
id="text8"><tspan
sodipodi:role="line"
id="tspan8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05556px;font-family:Sans;-inkscape-font-specification:'Sans, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
x="104.57431"
y="26.222841">Frontend</tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;line-height:1.02;font-family:Sans;-inkscape-font-specification:'Sans, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="56.750874"
y="13.143539"
id="text9"><tspan
sodipodi:role="line"
id="tspan9"
style="stroke-width:0.264583"
x="56.750874"
y="13.143539">Dependencies</tspan></text>
<ellipse
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.11441;stroke-linecap:round;stroke-opacity:1"
id="path2"
cx="81.091553"
cy="38.161636"
rx="65.938454"
ry="33.534351" />
<path
style="fill:none;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#ArrowWide)"
d="m 23.60119,48.757466 c -5.876392,6.451762 -4.309063,17.079611 1.847523,22.754678 l 0.199995,0.329837 0.05795,0.09558"
id="path32" />
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;line-height:1.02;font-family:Sans;-inkscape-font-specification:'Sans, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="18.762402"
y="76.951149"
id="text33"><tspan
sodipodi:role="line"
id="tspan33"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:Sans;-inkscape-font-specification:'Sans, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
x="18.762402"
y="76.951149">Palmed</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.6;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#ArrowWide)"
d="m 88.760028,31.319791 c 10.060681,14.0606 11.827412,34.796064 1.1668,49.052508"
id="path34" />
<text
xml:space="preserve"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;line-height:1.02;font-family:Sans;-inkscape-font-specification:'Sans, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="60.672569"
y="79.93985"
id="text34"><tspan
sodipodi:role="line"
id="tspan34"
x="60.672569"
y="79.93985"></tspan></text>
<text
xml:space="preserve"
style="font-weight:bold;font-size:7.05556px;line-height:1.02;font-family:Sans;-inkscape-font-specification:'Sans, Bold';letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;stroke-width:0.264583"
x="95.19651"
y="85.104996"
id="text35"><tspan
sodipodi:role="line"
id="tspan35"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:Sans;-inkscape-font-specification:'Sans, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="95.19651"
y="85.104996">Through registers</tspan><tspan
sodipodi:role="line"
style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:Sans;-inkscape-font-specification:'Sans, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;stroke-width:0.264583"
x="95.19651"
y="92.301666"
id="tspan36">(widespread)</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB