Foundations: SIMD

This commit is contained in:
Théophile Bastian 2023-12-27 17:44:15 +01:00
parent 58fa37391e
commit 1b3607b18c
2 changed files with 527 additions and 2 deletions

View file

@ -235,5 +235,27 @@ Processors operate at a given \emph{word size}, fixed by the ISA ---~typically
32 or 64 bits nowadays, even though embedded processors might operate at lower
word sizes.
Some operations, however, are able to work on chunks of data larger than the
word size.
Some instructions, however, operate on chunks of multiple words at once. These
instructions are called \emph{vector instructions}, or \emph{SIMD} for Single
Instruction, Multiple Data. A SIMD ``add'' instruction may, for instance, add
two chunks of 128 bits, which can for instance be treated each as four integers
of 32 bits bundled together, as illustrated in \autoref{fig:cpu_simd}.
\begin{figure}
\centering
\includegraphics[width=0.6\textwidth]{simd.svg}
\caption{Example of SIMD add instruction on 128b}\label{fig:cpu_simd}
\end{figure}
Such instructions present clear efficiency advantages. If the processor is able
to handle one such instruction every cycle ---~even if it is pipelined for
multiple cycles~---, it multiplies by its number of vector elements the
processor's throughput, making it able to process \eg{} four add operations per
cycle instead of one, as long as the data is arranged in memory in an
appropriate way. Some processors, however, are not able to process the full
vector instruction at once, by lack of backend units ---~it may, for instance,
only process two 32-bits adds at once, making the processor able to execute
only one such instruction per two cycles. Even in this case, there are clear
efficiency benefits: while there is no real gain in the backend, the frontend
has only one instruction to decode, rename, etc., greatly alleviating frontend
pressure. \qtodo{Ref. to RISC-V vector extensions?}

View file

@ -0,0 +1,503 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="170mm"
height="89.290749mm"
viewBox="0 0 170 89.290749"
version="1.1"
id="svg1"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
sodipodi:docname="simd.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="#dbdbdb"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.67752152"
inkscape:cx="-0.73798394"
inkscape:cy="176.37816"
inkscape:window-width="1916"
inkscape:window-height="1041"
inkscape:window-x="0"
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="path1" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-9"
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-6" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-9-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-6-1" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-9-8"
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-6-10" />
</marker>
<marker
style="overflow:visible"
id="ArrowWide-9-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-6-4" />
</marker>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#c0e3f5;fill-opacity:1;stroke-width:1.31227"
id="rect1"
width="40"
height="80"
x="-1.7763568e-15"
y="0" />
<rect
style="fill:#c0f5cb;fill-opacity:1;stroke-width:1.31227"
id="rect1-6"
width="40"
height="80"
x="70"
y="0" />
<rect
style="fill:#f5e5c0;fill-opacity:1;stroke-width:1.31227"
id="rect1-6-9"
width="40"
height="80"
x="130"
y="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58539;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#ArrowWide)"
d="M 64.406995,40 H 46.812661"
id="path17" />
<path
style="opacity:0.5;fill:none;stroke:#000000;stroke-width:0.755969;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#ArrowWide-9)"
d="M 71.247121,9.3461278 H 39.476423"
id="path17-8" />
<path
style="opacity:0.5;fill:none;stroke:#000000;stroke-width:0.755969;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#ArrowWide-9-1)"
d="M 71.247121,30 H 39.476423"
id="path17-8-9" />
<path
style="opacity:0.5;fill:none;stroke:#000000;stroke-width:0.755969;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#ArrowWide-9-8)"
d="M 71.247121,50 H 39.476423"
id="path17-8-0" />
<path
style="opacity:0.5;fill:none;stroke:#000000;stroke-width:0.755969;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#ArrowWide-9-4)"
d="M 71.247121,70 H 39.476423"
id="path17-8-6" />
<text
xml:space="preserve"
style="font-size:6.81073px;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.319252"
x="114.55661"
y="44.03429"
id="text1"
transform="scale(1.0007791,0.9992215)"><tspan
sodipodi:role="line"
id="tspan1"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.7701px;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.319252"
x="114.55661"
y="44.03429">+</tspan></text>
<text
xml:space="preserve"
style="font-size:3.40536px;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;opacity:0.5;stroke-width:0.159626"
x="117.23151"
y="12.009358"
id="text1-5"
transform="scale(1.0007799,0.99922071)"><tspan
sodipodi:role="line"
id="tspan1-9"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.38504px;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.159626"
x="117.23151"
y="12.009358">+</tspan></text>
<text
xml:space="preserve"
style="font-size:3.40536px;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;opacity:0.5;stroke-width:0.159626"
x="117.23151"
y="32.024956"
id="text1-5-7"
transform="scale(1.0007799,0.99922071)"><tspan
sodipodi:role="line"
id="tspan1-9-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.38504px;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.159626"
x="117.23151"
y="32.024956">+</tspan></text>
<text
xml:space="preserve"
style="font-size:3.40536px;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;opacity:0.5;stroke-width:0.159626"
x="117.23151"
y="52.04055"
id="text1-5-1"
transform="scale(1.0007799,0.99922071)"><tspan
sodipodi:role="line"
id="tspan1-9-85"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.38504px;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.159626"
x="117.23151"
y="52.04055">+</tspan></text>
<text
xml:space="preserve"
style="font-size:3.40536px;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;opacity:0.5;stroke-width:0.159626"
x="117.23151"
y="72.056152"
id="text1-5-3"
transform="scale(1.0007799,0.99922071)"><tspan
sodipodi:role="line"
id="tspan1-9-88"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.38504px;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.159626"
x="117.23151"
y="72.056152">+</tspan></text>
<rect
style="fill:#76bce0;fill-opacity:1;stroke-width:1.00434"
id="rect2-0"
width="35"
height="15"
x="2.5"
y="22.5" />
<rect
style="fill:#76bce0;fill-opacity:1;stroke-width:1.00434"
id="rect2-06"
width="35"
height="15"
x="2.5"
y="42.5" />
<rect
style="fill:#76bce0;fill-opacity:1;stroke-width:1.00434"
id="rect2-6"
width="35"
height="15"
x="2.5"
y="62.5" />
<rect
style="fill:#76bce0;fill-opacity:1;stroke-width:1.00434"
id="rect2"
width="35"
height="15"
x="2.5"
y="2.5" />
<rect
style="fill:#73cb85;fill-opacity:1;stroke-width:1.00434"
id="rect2-0-6"
width="35"
height="15"
x="72.5"
y="22.5" />
<rect
style="fill:#73cb85;fill-opacity:1;stroke-width:1.00434"
id="rect2-06-5"
width="35"
height="15"
x="72.5"
y="42.499996" />
<rect
style="fill:#73cb85;fill-opacity:1;stroke-width:1.00434"
id="rect2-6-6"
width="35"
height="15"
x="72.5"
y="62.5" />
<g
id="g4">
<rect
style="fill:#73cb85;fill-opacity:1;stroke-width:1.00434"
id="rect2-7"
width="35"
height="15"
x="72.5"
y="2.499999" />
</g>
<rect
style="fill:#e7ca85;fill-opacity:1;stroke-width:1.00434"
id="rect2-7-2"
width="35"
height="15"
x="132.5"
y="2.499999" />
<rect
style="fill:#e7ca85;fill-opacity:1;stroke-width:1.00434"
id="rect2-0-6-5"
width="35"
height="15"
x="132.5"
y="22.5" />
<rect
style="fill:#e7ca85;fill-opacity:1;stroke-width:1.00434"
id="rect2-06-5-4"
width="35"
height="15"
x="132.5"
y="42.499996" />
<rect
style="fill:#e7ca85;fill-opacity:1;stroke-width:1.00434"
id="rect2-6-6-7"
width="35"
height="15"
x="132.5"
y="62.5" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="3.0191138"
y="88.360573"
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.529166"
x="3.0191138"
y="88.360573">v1 (128b)</tspan></text>
<g
id="g3">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="11.772156"
id="text2-9"><tspan
sodipodi:role="line"
id="tspan2-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.529166"
x="5.4644642"
y="11.772156">v1:0 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="31.772156"
id="text2-9-7"><tspan
sodipodi:role="line"
id="tspan2-5-2"
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.529166"
x="5.4644642"
y="31.772156">v1:1 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="51.772156"
id="text2-9-6"><tspan
sodipodi:role="line"
id="tspan2-5-1"
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.529166"
x="5.4644642"
y="51.772156">v1:2 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="73.080116"
id="text2-9-5"><tspan
sodipodi:role="line"
id="tspan2-5-9"
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.529166"
x="5.4644642"
y="73.080116">v1:3 (32b)</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="75.464462"
y="11.118176"
id="text2-9-9"><tspan
sodipodi:role="line"
id="tspan2-5-7"
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.529166"
x="75.464462"
y="11.118176">v2:0 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="75.464462"
y="31.118176"
id="text2-9-7-7"><tspan
sodipodi:role="line"
id="tspan2-5-2-6"
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.529166"
x="75.464462"
y="31.118176">v2:1 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="75.464462"
y="51.118176"
id="text2-9-6-7"><tspan
sodipodi:role="line"
id="tspan2-5-1-3"
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.529166"
x="75.464462"
y="51.118176">v2:2 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="75.464462"
y="72.42614"
id="text2-9-5-6"><tspan
sodipodi:role="line"
id="tspan2-5-9-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.529166"
x="75.464462"
y="72.42614">v2:3 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="73.019112"
y="88.360573"
id="text2-3"><tspan
sodipodi:role="line"
id="tspan2-1"
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.529166"
x="73.019112"
y="88.360573">v2 (128b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="133.01912"
y="88.360573"
id="text2-0"><tspan
sodipodi:role="line"
id="tspan2-6"
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.529166"
x="133.01912"
y="88.360573">v3 (128b)</tspan></text>
<g
id="g3-4"
transform="translate(130,-0.65398024)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="11.772156"
id="text2-9-8"><tspan
sodipodi:role="line"
id="tspan2-5-12"
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.529166"
x="5.4644642"
y="11.772156">v3:0 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="31.772156"
id="text2-9-7-9"><tspan
sodipodi:role="line"
id="tspan2-5-2-3"
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.529166"
x="5.4644642"
y="31.772156">v3:1 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="51.772156"
id="text2-9-6-9"><tspan
sodipodi:role="line"
id="tspan2-5-1-0"
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.529166"
x="5.4644642"
y="51.772156">v3:2 (32b)</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;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.529166"
x="5.4644642"
y="73.080116"
id="text2-9-5-8"><tspan
sodipodi:role="line"
id="tspan2-5-9-8"
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.529166"
x="5.4644642"
y="73.080116">v3:3 (32b)</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB