blob: 71b69a5e94d939cf82f1ba1b5249a14fdabb6846 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="399.03555"
height="274.328"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="memorybarriercum.svg">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path3892"
style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(-0.3,0,0,-0.3,0.69,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible">
<path
id="path3874"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lend"
style="overflow:visible">
<path
id="path3862"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path3885"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Sstart"
style="overflow:visible">
<path
id="path3888"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.2,0,0,0.2,1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path3882"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,4,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3876"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.8,0,0,0.8,10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-2"
style="overflow:visible">
<path
id="path3885-7"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend-26"
style="overflow:visible">
<path
id="path3885-1"
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.6733249"
inkscape:cx="186.00259"
inkscape:cy="88.828587"
inkscape:document-units="px"
inkscape:current-layer="g5360"
showgrid="false"
fit-margin-top="5"
fit-margin-left="5"
fit-margin-right="5"
fit-margin-bottom="5"
inkscape:window-width="1249"
inkscape:window-height="1148"
inkscape:window-x="653"
inkscape:window-y="24"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(111.51808,-727.77673)">
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Big Arrows">
<g
id="g3096"
transform="matrix(-1,0,0,-1,-27.679851,1737.6799)">
<path
style="fill:none;stroke:#00ff00;stroke-width:15.3268261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 20.462758,984.10282 -251.096528,-0.37407 0,-37.86359"
id="path5410-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:#00ff00;fill-opacity:1;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -246.55848,951.97922 31.87817,-0.36641 -2.93133,-1.83208 -12.82455,-10.99248 z"
id="path5414-5"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5458-3"
y="-981.5686"
x="-13.718384"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"
transform="scale(-1,-1)"><tspan
id="tspan5462-5"
y="-981.5686"
x="-13.718384"
sodipodi:role="line">... cumulativity guarantees CPU 0's store before CPU 1's store</tspan></text>
</g>
<g
transform="translate(0,53.92809)"
id="g5416">
<path
inkscape:connector-curvature="0"
id="path5410"
d="m 148.07004,837.3019 -92.49253,0 0,-28.51194"
style="fill:none;stroke:#00ff00;stroke-width:15.3268261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
inkscape:connector-curvature="0"
id="path5414"
d="m 143.3907,820.79847 0.36641,31.87817 1.83208,-2.93133 10.99248,-12.82455 z"
style="fill:#00ff00;fill-opacity:1;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:#64c8c8;fill-opacity:1;stroke:#64c8c8;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 228.58167,910.79847 -0.36641,31.87817 -1.83208,-2.93133 -10.99248,-12.82455 z"
id="path5450"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#64c8c8;stroke-width:16;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 124.51701,753.84375 -40.399132,0 190.399602,0 0,173.56664 -49.37672,0"
id="path5456"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<text
xml:space="preserve"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="62.018097"
y="841.10663"
id="text5458"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="62.018097"
y="841.10663"
id="tspan5462">Given this link ...</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5466"
y="755.90924"
x="90.846237"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
id="tspan5468"
y="755.90924"
x="90.846237"
sodipodi:role="line">.... memory barriers guarantee this order ...</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="M 80.050126,82.763964 154.86333,25.905928"
id="path5470"
inkscape:connector-curvature="0"
transform="translate(26.137646,740.75144)"
sodipodi:nodetypes="cc" />
</g>
<g
id="g3200"
transform="translate(18.703301,-182.54422)">
<path
style="fill:none;stroke:#00ff00;stroke-width:15.3268261;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -1.6065684,989.42689 -104.8367116,0.37407 -0.37407,-41.23019"
id="path5410-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:#00ff00;fill-opacity:1;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -6.2859054,972.92346 0.36641,31.87814 1.83208,-2.9313 10.992477,-12.82455 z"
id="path5414-6"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5458-0"
y="991.23163"
x="-107.65851"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
id="tspan5462-6"
y="991.23163"
x="-107.65851"
sodipodi:role="line">... and given this link ...</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m -31.002334,798.20632 47.88046,-34.04001"
id="path5470-0-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
<g
transform="translate(0,53.928085)"
id="g3022">
<g
id="g4938"
transform="translate(-6,-40)">
<rect
transform="translate(26.663998,740.34064)"
y="40.960808"
x="6.0236483"
height="25.299324"
width="57.827026"
id="rect4930"
style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text4932"
y="797.81049"
x="61.421471"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
style="text-align:center;text-anchor:middle"
id="tspan4936"
y="797.81049"
x="61.421471"
sodipodi:role="line">Load r1=x</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 55.601159,766.60077 0,16.86622"
id="path5150"
inkscape:connector-curvature="0" />
<g
id="g5348"
transform="translate(-6,4)">
<rect
style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect5350"
width="57.827026"
height="25.299324"
x="6.0236483"
y="40.960808"
transform="translate(26.663998,740.34064)" />
<text
xml:space="preserve"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="61.421471"
y="791.81049"
id="text5352"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5354"
x="61.421471"
y="791.81049"
style="text-align:center;text-anchor:middle">Store release</tspan><tspan
sodipodi:role="line"
x="61.421471"
y="801.81049"
id="tspan5356"
style="text-align:center;text-anchor:middle">y=r1</tspan></text>
</g>
<g
transform="translate(124,43.95315)"
id="g5360">
<rect
style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect5362"
width="57.827026"
height="25.299324"
x="32.687645"
y="781.48834" />
<text
xml:space="preserve"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="61.421471"
y="791.34503"
id="text5364"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="61.421471"
y="791.34503"
id="tspan5368"
style="text-align:center;text-anchor:middle">Load acquire</tspan><tspan
sodipodi:role="line"
x="61.421471"
y="801.34503"
style="text-align:center;text-anchor:middle"
id="tspan3061">r2=y</tspan></text>
</g>
<g
transform="translate(124,88)"
id="g5370">
<rect
transform="translate(26.663998,740.34064)"
y="40.960808"
x="6.0236483"
height="25.299324"
width="57.827026"
id="rect5372"
style="fill:#fe9696;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text5374"
y="791.81049"
x="61.421471"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
style="text-align:center;text-anchor:middle"
y="791.81049"
x="61.421471"
id="tspan5376"
sodipodi:role="line">Memory</tspan><tspan
style="text-align:center;text-anchor:middle"
id="tspan5378"
y="801.81049"
x="61.421471"
sodipodi:role="line">Barrier</tspan></text>
</g>
<path
inkscape:connector-curvature="0"
id="path5380"
d="m 185.60116,850.60077 0,16.86622"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 185.60116,894.60077 0,16.86622"
id="path5382"
inkscape:connector-curvature="0" />
<g
transform="translate(124,132)"
id="g5384">
<rect
transform="translate(26.663998,740.34064)"
y="40.960808"
x="6.0236483"
height="25.299324"
width="57.827026"
id="rect5386"
style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text5388"
y="796.93353"
x="61.421471"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
style="text-align:center;text-anchor:middle"
y="796.93353"
x="61.421471"
sodipodi:role="line"
id="tspan3071">Load r3=x</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
x="173.78671"
y="820.54791"
id="text3243"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3245"
x="173.78671"
y="820.54791">CPU 2</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3247"
y="736.70215"
x="43.683189"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
y="736.70215"
x="43.683189"
id="tspan3249"
sodipodi:role="line">CPU 1</tspan></text>
</g>
<text
sodipodi:linespacing="125%"
id="text3247-3"
y="738.71423"
x="-89.022537"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
y="738.71423"
x="-89.022537"
id="tspan3249-6"
sodipodi:role="line">CPU 0</tspan></text>
<g
id="g4938-6"
transform="translate(-138.70573,-39.705019)">
<rect
transform="translate(26.663998,740.34064)"
y="40.960808"
x="6.0236483"
height="25.299324"
width="57.827026"
id="rect4930-2"
style="fill:#96c8fe;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
sodipodi:linespacing="125%"
id="text4932-9"
y="797.81049"
x="61.421471"
style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
xml:space="preserve"><tspan
style="text-align:center;text-anchor:middle"
id="tspan4936-1"
y="797.81049"
x="61.421471"
sodipodi:role="line">Store x=1</tspan></text>
</g>
</g>
</svg>