changeset 13:83b3b9e15fb2

Updated Future Arch with preview, giving benefits
author Some Random Person <seanhalle@yahoo.com>
date Tue, 10 Apr 2012 07:23:24 -0700
parents b815a830d75a
children d72bb1ea1427
files .hgignore 0__Papers/Future_Architecture/figures/Separate_comm_processors_2.eps 0__Papers/Future_Architecture/figures/Separate_comm_processors_2.svg 0__Papers/Future_Architecture/figures/Speculation_HW_support.eps 0__Papers/Future_Architecture/figures/Speculation_HW_support.svg 0__Papers/Future_Architecture/latex/Future_Architecture.aux 0__Papers/Future_Architecture/latex/Future_Architecture.blg 0__Papers/Future_Architecture/latex/Future_Architecture.pdf 0__Papers/Future_Architecture/latex/Future_Architecture.tex 0__Papers/Future_Architecture/latex/Future_Architecture.tex.Backup
diffstat 10 files changed, 2309 insertions(+), 539 deletions(-) [+]
line diff
     1.1 --- a/.hgignore	Sun Apr 08 13:11:55 2012 -0700
     1.2 +++ b/.hgignore	Tue Apr 10 07:23:24 2012 -0700
     1.3 @@ -1,6 +1,8 @@
     1.4  
     1.5  glob: *.o
     1.6  glob: *.aux
     1.7 +glob: *.blg
     1.8 +glob: *.Backup
     1.9  glob: *.bbl
    1.10  glob: *.ddf
    1.11  glob: *.Backup-*
    1.12 \ No newline at end of file
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/0__Papers/Future_Architecture/figures/Separate_comm_processors_2.eps	Tue Apr 10 07:23:24 2012 -0700
     2.3 @@ -0,0 +1,645 @@
     2.4 +%!PS-Adobe-3.0 EPSF-3.0
     2.5 +%%Creator: cairo 1.8.8 (http://cairographics.org)
     2.6 +%%CreationDate: Mon Apr 09 09:48:11 2012
     2.7 +%%Pages: 1
     2.8 +%%BoundingBox: 0 0 237 122
     2.9 +%%DocumentData: Clean7Bit
    2.10 +%%LanguageLevel: 2
    2.11 +%%EndComments
    2.12 +%%BeginProlog
    2.13 +/cairo_eps_state save def
    2.14 +/dict_count countdictstack def
    2.15 +/op_count count 1 sub def
    2.16 +userdict begin
    2.17 +/q { gsave } bind def
    2.18 +/Q { grestore } bind def
    2.19 +/cm { 6 array astore concat } bind def
    2.20 +/w { setlinewidth } bind def
    2.21 +/J { setlinecap } bind def
    2.22 +/j { setlinejoin } bind def
    2.23 +/M { setmiterlimit } bind def
    2.24 +/d { setdash } bind def
    2.25 +/m { moveto } bind def
    2.26 +/l { lineto } bind def
    2.27 +/c { curveto } bind def
    2.28 +/h { closepath } bind def
    2.29 +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
    2.30 +      0 exch rlineto 0 rlineto closepath } bind def
    2.31 +/S { stroke } bind def
    2.32 +/f { fill } bind def
    2.33 +/f* { eofill } bind def
    2.34 +/B { fill stroke } bind def
    2.35 +/B* { eofill stroke } bind def
    2.36 +/n { newpath } bind def
    2.37 +/W { clip } bind def
    2.38 +/W* { eoclip } bind def
    2.39 +/BT { } bind def
    2.40 +/ET { } bind def
    2.41 +/pdfmark where { pop globaldict /?pdfmark /exec load put }
    2.42 +    { globaldict begin /?pdfmark /pop load def /pdfmark
    2.43 +    /cleartomark load def end } ifelse
    2.44 +/BDC { mark 3 1 roll /BDC pdfmark } bind def
    2.45 +/EMC { mark /EMC pdfmark } bind def
    2.46 +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
    2.47 +/Tj { show currentpoint cairo_store_point } bind def
    2.48 +/TJ {
    2.49 +  {
    2.50 +    dup
    2.51 +    type /stringtype eq
    2.52 +    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
    2.53 +  } forall
    2.54 +  currentpoint cairo_store_point
    2.55 +} bind def
    2.56 +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
    2.57 +    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
    2.58 +/Tf { pop /cairo_font exch def /cairo_font_matrix where
    2.59 +      { pop cairo_selectfont } if } bind def
    2.60 +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
    2.61 +      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
    2.62 +      /cairo_font where { pop cairo_selectfont } if } bind def
    2.63 +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
    2.64 +      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
    2.65 +/g { setgray } bind def
    2.66 +/rg { setrgbcolor } bind def
    2.67 +/d1 { setcachedevice } bind def
    2.68 +%%EndProlog
    2.69 +11 dict begin
    2.70 +/FontType 42 def
    2.71 +/FontName /f-0-0 def
    2.72 +/PaintType 0 def
    2.73 +/FontMatrix [ 1 0 0 1 0 0 ] def
    2.74 +/FontBBox [ 0 0 0 0 ] def
    2.75 +/Encoding 256 array def
    2.76 +0 1 255 { Encoding exch /.notdef put } for
    2.77 +Encoding 1 /uni0043 put
    2.78 +Encoding 2 /uni006F put
    2.79 +Encoding 3 /uni006D put
    2.80 +Encoding 4 /uni0075 put
    2.81 +Encoding 5 /uni006E put
    2.82 +Encoding 6 /uni0069 put
    2.83 +Encoding 7 /uni0063 put
    2.84 +Encoding 8 /uni0061 put
    2.85 +Encoding 9 /uni0074 put
    2.86 +Encoding 10 /uni0050 put
    2.87 +Encoding 11 /uni0072 put
    2.88 +Encoding 12 /uni0065 put
    2.89 +Encoding 13 /uni0073 put
    2.90 +Encoding 14 /uni0046 put
    2.91 +Encoding 15 /uni002D put
    2.92 +Encoding 16 /uni0077 put
    2.93 +Encoding 17 /uni004F put
    2.94 +Encoding 18 /uni0053 put
    2.95 +Encoding 19 /uni0020 put
    2.96 +Encoding 20 /uni006C put
    2.97 +Encoding 21 /uni0064 put
    2.98 +Encoding 22 /uni0066 put
    2.99 +Encoding 23 /uni004E put
   2.100 +Encoding 24 /uni006B put
   2.101 +Encoding 25 /uni004C put
   2.102 +Encoding 26 /uni004D put
   2.103 +Encoding 27 /uni0057 put
   2.104 +/CharStrings 28 dict dup begin
   2.105 +/.notdef 0 def
   2.106 +/uni0043 1 def
   2.107 +/uni006F 2 def
   2.108 +/uni006D 3 def
   2.109 +/uni0075 4 def
   2.110 +/uni006E 5 def
   2.111 +/uni0069 6 def
   2.112 +/uni0063 7 def
   2.113 +/uni0061 8 def
   2.114 +/uni0074 9 def
   2.115 +/uni0050 10 def
   2.116 +/uni0072 11 def
   2.117 +/uni0065 12 def
   2.118 +/uni0073 13 def
   2.119 +/uni0046 14 def
   2.120 +/uni002D 15 def
   2.121 +/uni0077 16 def
   2.122 +/uni004F 17 def
   2.123 +/uni0053 18 def
   2.124 +/uni0020 19 def
   2.125 +/uni006C 20 def
   2.126 +/uni0064 21 def
   2.127 +/uni0066 22 def
   2.128 +/uni004E 23 def
   2.129 +/uni006B 24 def
   2.130 +/uni004C 25 def
   2.131 +/uni004D 26 def
   2.132 +/uni0057 27 def
   2.133 +end readonly def
   2.134 +/sfnts [
   2.135 +<00010000000a008000030020636d617000f2f182000025e400000076637674207d0742a80000
   2.136 +265c000002706670676d49d7df92000028cc0000060a676c796693c01ea2000000ac00002538
   2.137 +68656164d5ceeae000002ed800000036686865610f7e06b700002f1000000024686d74787572
   2.138 +0a5400002f34000000706c6f63618c02837a00002fa40000003a6d617870038102c900002fe0
   2.139 +0000002070726570292ded1600003000000004ad00020080015e0380045e0003000700264016
   2.140 +059c039d049c070017003700030000079c019d049c00002ffdfded012f5f5dfdfded31301311
   2.141 +211125211121800300fd800200fe00015e0300fd0080020000010050ffe7047905d20015015f
   2.142 +40b2e715010007080103570701027e10017a0b011506010388009800a800b800c800d800e800
   2.143 +0700070c170c270c370c04000c200c0c064b0c170645110c1010024b11060f0f024b11200b0b
   2.144 +024b11100c0c024b11120d0d024b110c0e0e064b11180c0c064b11120d0d064b11163700e700
   2.145 +02028e080103780f01771401026509010a035a036a03032a0f3a0f02030b0c9701a701b701c7
   2.146 +01d701e701060001e70c010108001800880003070c170c870c030000b8ffd0400f1111064b00
   2.147 +140c401111064b0c0e03b8ffe8b40e0e064b03b8fff2b41010064b03b8ffe8b40f0f064b03b8
   2.148 +fff0b41010024b03b8ffe840250f0f024b03491409180f0f064b09180f0f024b09490e091410
   2.149 +1010064b14101010024b1403003f2b2b3fed2b2b10ed2b2b2b2b2b10cd2b10cd2b5f5d5d5f5d
   2.150 +325f5d11335f5d5d5d5f5d5d5f5d5f5d0110d62b2b2b2b2b2b2b2bed10d62b5f5dc65d5f5d5d
   2.151 +5d5f5d31305f5d5f5d01072623220211141233323717062120001110002132043d4360cec1e9
   2.152 +efbdce6f6eaefeeefee1feb601600117ef0583ab46feb4fefafafec99299ad019e0153014801
   2.153 +b200000000020041ffec040a0443000b0015013c402517401010024b17400b0c024bb7050101
   2.154 +381701114e17063706470667060406041010024b06b8ffdeb40f0f024b06b8fffcb40b0b024b
   2.155 +06b8ffe4b40c0c024b06b8ffd4b40d0d024b06b8ffeab40e0e064b06b8ffe0b40c0c064b06b8
   2.156 +ffe440760d0d064b060c4e87009700a700b700c700e700063800480058006800040000101010
   2.157 +024b000e0f0f024b00200b0b024b00200c0c024b00160d0d024b000c0e0e064b00100c0c064b
   2.158 +000c0d0d064b00166a030165090103670e0168130102450e550e650e034a135a136a13030e10
   2.159 +0f0f024b0e520913b8fff040160f0f024b13520309180f0f024b09180f0f064b090b03b8ffe8
   2.160 +b40f0f024b03b8ffe8b50f0f064b0307003f2b2b3f2b2b10ed2b10ed2b5d5d5f5d5d5f5d5d01
   2.161 +10d62b2b2b2b2b2b2b2b5f5d5dfdd42b2b2b2b2b2b2b2b5ded5d5f5d31302b2b133400333212
   2.162 +1110002322001310213236351021220641010bdae6fefefce0e5ff00c8011d8597fee4829b02
   2.163 +1af80131fedbfefcfefdfed5012e0100fe6dd8bb018ed400000100870000061d0443001f01b8
   2.164 +403821400f10024b21400c0c024b071c010108216821022721372157219721c72105004d371f
   2.165 +011f101313024b1f081010024b1f1c0f0f024b1fb8ffec40170b0b024b1f180c0c024b1f040d
   2.166 +0d024b1f0e0f0f064b1fb8ffed400b0c0c064b1f101010064b1fb8fffe401d0e0e064b1f084d
   2.167 +37070107101313024b07021010024b071a0f0f024b07b8ffec40170b0b024b07180c0c024b07
   2.168 +040d0d024b07080f0f064b07b8ffedb40c0c064b07b8fffe40180d0d064b07061010064b0710
   2.169 +4d071117112711e711040011b8fff8b41010064b11b8fffa400b0e0e064b11100909024b11b8
   2.170 +fff4400b1313024b11040d0d024b11b8fff4b41010024b11b8fff440110f0f024b110a0b0b02
   2.171 +4b11080c0c024b11b8fff440530f0f064b11100c0c064b1120171c271c371c030118400d0d02
   2.172 +4b18401010064b182c0d0d064b4718571867187718040018400e0e064b18400e10024b18160f
   2.173 +141603521b0c52161f0a080a110a1b0716071206003f3f3f3f3f3f10ed10ed10ddcd10cd2b2b
   2.174 +5f5d2b2b2b5f5d0110d62b2b2b2b2b2b2b2b2b2b2b5f5dfdd42b2b2b2b2b2b2b2b2b2b5dedd4
   2.175 +2b2b2b2b2b2b2b2b2b2b5ded5d5d3130005f5d012b2b21113423220607112311342623220607
   2.176 +11231133173633321736363332161511055fdb457816be776239811bbe7c3f6ea5e65c20ae5c
   2.177 +a6b602a6fd5536fce802f94f5b5835fcea042f7c908f3d52c5b2fd340001007dffec03e3042f
   2.178 +001200fb402714400b0b024b7714010a4d074d070801170847087708a708048708b708e70803
   2.179 +080c1010064b08b8fffab40e0e064b08b8ffecb41313024b08b8ffec400b1010024b08160b0b
   2.180 +024b08b8ffeeb40d0d024b08b8ffccb40e0e064b08b8fff0b40c0c064b08b8fff440150d0d06
   2.181 +4b08004de812f81202071217122712030012b8fff8b41313024b12b8fffab41010024b12b8ff
   2.182 +f640230f0f024b120c0b0b024b120c0c0c024b12080d0d024b12040c0c064b12040d0d064b12
   2.183 +b8fffa40110e0e064b121303520e090a0e0b08061206003f3f3f3f10ed0110d62b2b2b2b2b2b
   2.184 +2b2b2b5f5d5dfdd42b2b2b2b2b2b2b2b2b5d7172eded5d3130012b0111143332363711331123
   2.185 +3506062322263511013bd75e9c19bebe20c15cb0bb042ffd55f86c4702f0fbd1943f69caba02
   2.186 +bf0000010087000003d8044300110103401813400b0b024b070f170f0201771301004d111010
   2.187 +10064b11b8ffd4b40e0e064b11b8fff8b41313024b11b8fff440111010024b110a0f0f024b11
   2.188 +080c0c024b11b8fff440110d0d024b111c0b0b024b110e0f0f064b11b8fff8b40c0c064b11b8
   2.189 +fff8b40d0d064b11b8fff440100b0b064b11084d070917092709030009b8fff4400b1313024b
   2.190 +09040d0d024b09b8fff6b41010024b09b8fff4400b0f0f024b090a0b0b024b09b8fff8b41010
   2.191 +064b09b8fff4400b0e0e064b09080c0c024b09b8fffa40110f0f064b091204520e110a090a0a
   2.192 +060e07003f3f3f3f10ed0110d62b2b2b2b2b2b2b2b2b5f5dfdd42b2b2b2b2b2b2b2b2b2b2b2b
   2.193 +ed5d3130005f5d012b211134262322060711231133173633201111031a6779418e26be823c5e
   2.194 +d50160026fab894e39fce4042f8a9efe54fd6900000000020050000001c105c4000b001100d9
   2.195 +b613400f0f024b13b8ffc0b60d0d024b097b03b8fff4b40e0e064b03b8fff8b40f0f024b03b8
   2.196 +fffab40c0c024b03b8fff940200c0c064b03110e0c4d7711010011041313024b11021010024b
   2.197 +110e0f0f024b11b8ffeeb40b0b024b11b8ffecb40c0c024b11b8ffe6400b0d0d024b110e0f0f
   2.198 +064b11b8fff8400b0c0c064b11120d0d064b11b8ffd640100e0e064b11081111064b11130d51
   2.199 +1000b8ffc040120f0f024b007c06400f0f024b06100c0a1006003f3f10d62bed2b10ed0110d6
   2.200 +2b2b2b2b2b2b2b2b2b2b2b5f5dfdc610d42b2b2b2bed3130012b2b0132161514062322263534
   2.201 +36031123352111014b314545313045443793015105c44530314545313144fa3c038fa0fbd100
   2.202 +000000010041ffec03b5044300170119401e450501a1010103281938190200870d970da70d03
   2.203 +0200070d870d970d030db8fff4b41010024b0db8ffeab40f0f024b0db8ffeab40b0c024b0db8
   2.204 +ffe840610d0d024b0d074e38124812028712a712b712c712e712050012101010024b12180f0f
   2.205 +024b12200b0c024b12180d0d024b12060e0e064b120c0e0e064b12120c0c064b12100d0d064b
   2.206 +1218250a350a450a032a043a044a0403030c52070d170d020db8ffc040160b0b024b0d0f0152
   2.207 +08001800020000400b0b024b0004b8ffe8b40c0c024b04b8ffe840190d0d024b0452150a180c
   2.208 +0c024b0a180d0d024b0a520f0b1507003f3fed2b2b10ed2b2bdd2b5f5ded10dd2b5ded5f5d5d
   2.209 +0110d62b2b2b2b2b2b2b2b5f5d5dfdd42b2b2b2b5d3c5f5d5f5d5f5d5d313001072626232206
   2.210 +151416333237170623220035100021321603af5e1d93479bb6baa580824b99e2dbfee2012901
   2.211 +0253c203d8861d34d9bdbcc563a0630126fb01000136460000020050ffec03e40443001b0025
   2.212 +01d3b627401010024b25b8ffecb40b0c024b25b8ffee40490d0d064b07131713020167207720
   2.213 +0202280f480f0200b70fc70fd70fe70f04010025150f05371847185718671877188718971807
   2.214 +18254d0a4d881501150c1313024b150c1010024b15b8fff8b40f0f024b15b8fff040110c0c02
   2.215 +4b151e0d0d024b150c0e0e064b15b8fff040440f0f064b150c0d0d064b1527214e3805010005
   2.216 +0c0f0f024b05160b0b024b05100c0c024b05120d0d024b050c0e0e064b050c0c0c064b050c0d
   2.217 +0d064b05263a0301032500b8ffc0b40d10024b00b8ffc040320d0f064b480058006800780004
   2.218 +000218191c520a080e52080f180f280f380f480f580f980fa80fb80fc80fd80fe80f0c000fb8
   2.219 +ffc0b41317024b0fb8ffc040240d0d024b0f124a1e5a1e02031e52a808b80802580801006a08
   2.220 +7a08020347085708020008b8ffc0b41414024b08b8ffc0b41313024b08b8ffe8b41010024b08
   2.221 +b8ffe8b40f0f024b08b8ffc040131313064b08080c2352020c5212190b020b1207003f3f3f10
   2.222 +ed10ed11392f2b2b2b2b2b5f5d5f5d5f5d5ded5f5d10dd2b2b5f5ded10d5ed10cd10dd5d2b2b
   2.223 +cd5f5d0110d62b2b2b2b2b2b2b5f5ded10d62b2b2b2b2b2b2b2b71ededc65d10c41112395f5d
   2.224 +5f5d5f5d3130005f5d2b2b012b25062322263534243332171023220727363633321615111417
   2.225 +1522260326232206151433323702e472eb7eb9011ddd3c4ce8b2605036bf57e9d35474732b5a
   2.226 +2490b6c5906f7b8fb788a3e11a0104609f2c3fd4e7fe808d2f5f4201df149465a7890001004f
   2.227 +ffec02fc0558001500cab90017ffc0403f0c0d024b0813181302281701871001109708010809
   2.228 +010006090309010c0c064b094d480058006800f8000400000c1313024b000a1010024b00120f
   2.229 +0f024b00b8fff2b40b0b024b00b8fff0b40c0c024b00b8ffe8401d0d0d024b00160e0e064b00
   2.230 +100f0f064b00260c0c064b00280d0d064b00b8fffc401b0e0e064b002c133c13020f0d020507
   2.231 +0d52120152085207120b0706003f3f10eded10ed10c63c10c65d012f2b2b2b2b2b2b2b2b2b2b
   2.232 +2b5f5ded2b3c103c10cd10dd5dc65d5d3130005d012b13233533353711211521111416333237
   2.233 +170623222635cb7c7cbe0126feda5b65494e1c768d7faf039996e049fed796fdec877225a71e
   2.234 +bd90000200960000042605c3000a00130108b9000cffea40170c0c024b0b180c0c024b670701
   2.235 +021045070b4401440207b8ffd8b41010024b07b8ffdab40b0b024b07b8ffdab40d0d024b07b8
   2.236 +fff0b40d0d064b07b8fff4400e0e0e064b07471507022702020002b8ffeab41313024b02b8ff
   2.237 +f4b41010024b02b8fffa400b0f0f024b02040b0b024b02b8fffeb40d0d024b02b8fff0b40e0e
   2.238 +064b02b8fffeb40c0c064b02b8ffe8402d1010064b0247143a124a125a1203350e450e550e03
   2.239 +03050b120c000e180c0c024b0e160d0d024b0e4909090212b8ffe8400b0c0c024b1249050208
   2.240 +0502003f3f10ed2b11392fed2b2b3332113311335d5d0110e62b2b2b2b2b2b2b2b5f5d10e62b
   2.241 +2b2b2b2b10eded10ed5f5d3130002b2b0111231136332011102122031116332011102122015e
   2.242 +c8e32f027efdcc22727f070174fe73280234fdcc05b90afe55fe1202dbfde30a0125010c0000
   2.243 +000100960000031c0443000e00af401e0a400b0d024b081018102810c81004c70ed70e020e06
   2.244 +094d064d68070107b8ffecb41313024b07b8ffeeb41010024b07b8fff240110f0f024b07040b
   2.245 +0b024b07040c0c024b07b8ffeeb40f0f064b07b8fffcb40c0c064b07b8fff2b41010064b07b8
   2.246 +fffc40250e0e064b070f170a270a370a470a570a670a0600050a400e0e064b0a02520c080607
   2.247 +0a0c07003f3f3f10edcd2b325f5d0110d62b2b2b2b2b2b2b2b2b5deded10c65d5d3130002b01
   2.248 +262322061511231133153633321702cd3e3f6597bebe68cd336003782bba83fd9a042fabbf12
   2.249 +00020041ffec041c04430019002201ff408724400b0b024b58170103b807018a079a07aa07ba
   2.250 +07ca07da0706025705016808780888089808a8080528083808480858086808780888089808a8
   2.251 +08b808c808d8080c00571877180208221010024b08180f0f024b08180c0c024b082c0d0d024b
   2.252 +08100c0c064b08100d0d064b081f4e471e0102171837184718671887189718a718b718c71809
   2.253 +18b8ffe0b40e0e064b18b8ffdeb41010024b18b8ffdcb40f0f024b18b8ffe2b40c0c024b18b8
   2.254 +ffd4b40d0d024b18b8ffe4b40c0c064b18b8ffe4406b0d0d064b18011e4e014e871001381048
   2.255 +10581068100410100e0e064b10101010024b10100f0f024b101c0b0c024b10160d0d024b100c
   2.256 +0c0c064b100c0d0d064b102387079707a70703002705370547055705040207522a083a084a08
   2.257 +030357086708770803070817080208b8ffc0b40b0c024b08b8ffd4b40d0d064b08b8ffc04035
   2.258 +0d0d024b080c1e50470157016701a701b701050001400f0f024b01400d0d024b01400f0f064b
   2.259 +010105581a011a5214100f0f024b14b8ffe8b40d0d024b14b8ffe840200e0e064b140c0f0f06
   2.260 +4b14671401024a145a140205100c0c024b05520c0b1407003f3fed2b5d5f5d102b2b2b2bed5d
   2.261 +11392f2b2b2b5f5ded10d52b2b2b5d715f5ded5f5d5f710110d62b2b2b2b2b2b2b5d5deded10
   2.262 +dd2b2b2b2b2b2b2b5d5f5dedc42b2b2b2b2b2b5d5f5d715d5f5d5d5f5d3130012b0121141716
   2.263 +333237170607062322272635103736333217161514012207060721342726040dfcfc675b8fa3
   2.264 +6d502c5b728cca8d9da190c5e5827efe247f56520b0251484f0205bc65585f892c202a8997ff
   2.265 +0109a08f817ccd3f0169524e74734d5400010041ffec02fc0443002100e7402b23400b0b024b
   2.266 +081f181f02070e170e0228234823882303003a0c01351d0103c8110111054e671d771d021db8
   2.267 +ffeeb40e0e064b1db8ffe0405a0d0d024b1d1700174e480c01970ca70cb70ce70c04000c040e
   2.268 +0e064b0c22e81901271b0101280701270f0128200102651a751a020307191a03140348125812
   2.269 +68127812c81205120f37014701570167017701b701c70107000103b8ffe040141113064b0352
   2.270 +2014181113064b14520f200b0f07003f3f10ed2b10ed2bc55f5d10c55d111217395f5d5f5d5d
   2.271 +5d5f5d5d0110d62b5f5d5dedc610d42b2b5dedc45d5f5d5d5f5d3130005d5d012b3737163332
   2.272 +3534272e033534363332170726232206151417171616151406232241439f61b0aa835b4321c0
   2.273 +9b75b2367172445d75887d72cab3a940b468946a4c3c3e4f593384944ab05a403167353e3992
   2.274 +6e90a3000000000100960000041f05b900090099401317088708020208050044054407062706
   2.275 +020006b8ffecb41313024b06b8fff4b41010024b06b8fffa400b0f0f024b06040b0b024b06b8
   2.276 +fffeb40d0d024b06b8ffeeb41010064b06b8fff4b40e0e064b06b8fff8400b0f0f064b06070c
   2.277 +0c064b06b8fff840120d0d064b060a014804040600480706080702003f3f10ed12392fed0110
   2.278 +d62b2b2b2b2b2b2b2b2b2b5f5deded10d4c45d313001112115211123112115015e0203fdfdc8
   2.279 +03890505fe69aafd3c05b9b40001009f01fa024b02a9000300254017280368037803a8030403
   2.280 +07002700370003000004014800002fed0110d65f5dcd5d3130133521159f01ac01faafaf0000
   2.281 +0001000fffec05e50432000c01a5b9000affe8b41010064b07b8ffe8b31010064bb102024354
   2.282 +58b9000affd4b40d0d024b07b8ffd4401d0d0d024b070a02030504010b040b0b06080605060c
   2.283 +0b0a0506070a0702b8fff8b70b0b024b02020e0d1112392f2bcdcd10ddcd10ddcd003f3f3f3f
   2.284 +3f1112173931302b2b1bb10602435458b609080c0c064b08b8fff840200c0c064b070a020305
   2.285 +04010b040b0b06080605060c0b0a0506070a0702020e0d1112392fcdcd10ddcd10ddcd003f3f
   2.286 +3f3f3f111217393130012b2b1b409c0700010804010258030103470e01080e580e780ea80ed8
   2.287 +0e0500064f050b4f2a00012e0501210c01030c7e00057e04070703040a0a0175000375040700
   2.288 +1700020804180402007f09047f0802020975170827084708c708f7080508b70201b80a01080a
   2.289 +01b807010807017802010602160202170a270a370a570a770a05170727073707570777070500
   2.290 +0271080a7101077104010b040b0c0608060506003f3f3f3f3f10ed10ed10ed5f5d5d5d5d5d71
   2.291 +5d7171012f5ded39192f1810ed10ed5d5d10ed10ed39192f1112392f1810ed10fd5f5d5d5ded
   2.292 +10ed5f5d5d5f5d5f5d5d31305959002b2b05230101230133130133011333046532fec6fec732
   2.293 +fe81cbe5011d320126f6bb1402d9fd270446fd4102bffd4102bf000000020050ffe7051405d3
   2.294 +000b0016010d401358110102550d01036810010263050103124506b8fff4b40f0f024b06b8ff
   2.295 +ccb40b0b024b06b8ffe0b40c0c024b06b8fff6b40d0d024b06b8fff0b40e0e064b06b8fff4b4
   2.296 +0c0c064b06b8fff440090d0d064b06180c4500b8fff840440a0a064b07001700270087009700
   2.297 +b7000600080f0f024b00160b0b024b00100c0c024b00120d0d024b000c0e0e064b00100d0d06
   2.298 +4b00172818381802000f100f0f064b14b8fff0b60f0f064b00020fb8fff240140f0f064b0f49
   2.299 +09140e0f0f064b14490309090303003f3f10ed2b10ed2b43545840121a142a143a147a140415
   2.300 +0f250f350f750f045d5d592b2b015f5d10de2b2b2b2b2b2b5d2bed10de2b2b2b2b2b2b2bed5f
   2.301 +5d31305f5d5f5d5f5d131000212000111000212000131412333212111021220250013f010f01
   2.302 +310145febafed0feebfec7d2c7b5cdd7fe5cbac202e9013e01acfe76fea0fe97fe6701b00152
   2.303 +fcfeae013601180236fed00000010050ffe7038805d2002601ccb10202435458401907221a0e
   2.304 +180b0b024b0e120c0c024b0e22070e1a0425131714b8ffc040120c0c024b1411000401251749
   2.305 +110304492509003fed3fed10cd123910cd2b1239121739012f2b2bcd2fcd31301bb106024354
   2.306 +584086082401071001002520452065207520042a0b01034828a8280268130113074507223722
   2.307 +672203221a001a45380e01870e01000e2777040102351e651e751e03351f451f651f751f040a
   2.308 +0c3a0c4a0c6a0c7a0c0533220103380e010a0b1f1e0425481458146814781404141137014701
   2.309 +570167017701a701b70107000125174911044925091103003f3fed10ed10cd5f5d10cd5d1217
   2.310 +395d5f5d5d5d5d5f5d0110d65f5d5dedc410d45dedc45d5d3130005f5d5d5f5d5d1b40860824
   2.311 +01071001002520452065207520042a0b01034828a8280268130113074507223722672203221a
   2.312 +001a45380e01870e01000e2777040102351e651e751e03351f451f651f751f040a0c3a0c4a0c
   2.313 +6a0c7a0c0533220103380e010a0b1f1e04254814581468147814041411370147015701670177
   2.314 +01a701b70107000125174911044925091103003f3fed10ed10cd5f5d10cd5d1217395d5f5d5d
   2.315 +5d5d5f5d0110d65f5d5dedc410d45dedc45d5d3130005f5d5d5f5d5d59593737161633323635
   2.316 +34262727262635343633321707262623220615141616171716161514042322544938a742758e
   2.317 +4f9f769677e8b6f35f3b28a44666752a4b74789679fef7dec343b8293780634a7f4b3746c087
   2.318 +a4d84fae1d36745b385c3e383947c598a5e600010096ffec020705e6000800c7b9000affc0b4
   2.319 +1313024b0ab8ffc0b41010024b0ab8ffc0402a0c0c024b070a170a270a370a470a570a670a77
   2.320 +0a080706170627060306024d070117012701d701040001b8ffecb41313024b01b8ffeeb41010
   2.321 +024b01b8fff240110f0f024b01040b0b024b01040c0c024b01b8ffcc40170e0e064b01180f0f
   2.322 +064b01130c0c064b01160d0d064b01b8ffec401b0b0b064b0109b705c70502010a081a082a08
   2.323 +3a08040652070b0100003f3fed5d5f5d0110d62b2b2b2b2b2b2b2b2b2b5f5dfdc65d5d313001
   2.324 +2b2b2b13113311141633152096be6350fe8f012f04b7fb695663aa0000000002004bffed03ec
   2.325 +05e6000e0019011e40161b400b0b024b004d0d190c4d470d010d201313024b0db8ffeab41010
   2.326 +024b0db8fff6400b0f0f024b0d080b0b024b0db8fff6b40c0c024b0db8ffe4400b0d0d024b0d
   2.327 +0c0f0f064b0db8ffe2b40c0c064b0db8fff240660d0d064b0d140c0c0c064b144e8706013806
   2.328 +4806020006080f0f024b061a0b0b024b061a0c0c024b06120d0d024b060c0e0e064b06100c0c
   2.329 +064b060c0d0d064b061a251635164516032a113a114a110303580368030216180b0c024b1610
   2.330 +0f0f024b16520311b8ffe8400e0b0c024b115209480901020e0a03b8fff0b60f0f024b030b09
   2.331 +b8ffeeb70d0d024b09070d00003f3f2b3f2b3f5f5d10ed2b10ed2b2b5d5f5d5d0110d62b2b2b
   2.332 +2b2b2b2b5f5d5dfd2bd42b2b2b2b2b2b2b2b2b5dfd3c10ed3130012b25350623220235340033
   2.333 +32171133110326232206151021323637032e63bdc9fa0120c7a656bebe487d99bd01602d7e10
   2.334 +014f630120f0f101554e01f1fa1b03366ce4b0fe7d392000000000010041000002ff05e60015
   2.335 +00a4b90017ffc0b40f10024b17b8ffc0402d0b0c024b751201031538094809580903090b0e0c
   2.336 +070b054d074d0b4d480c01000c021010024b0c120f0f024b0cb8ffeeb40b0b024b0cb8ffe840
   2.337 +110c0c024b0c200d0d024b0c160e0e064b0cb8fff1401a0c0c064b0c140d0d064b0c0952080e
   2.338 +520f0252130c0a0f061300003f3f3f10ed10ed3ced012f2b2b2b2b2b2b2b2b5f5dededed103c
   2.339 +10c610c65dc63130005f5d012b2b0126232206151417331523112311233533343633321702ca
   2.340 +3a32577105dadabe9c9ccaa6535f053c1484651b1da0fc71038fa0cdea1e00010096ffec0485
   2.341 +05b9000901aeb605180b0b024b00b8fff440230b0b024b0a0105060203000206020744080602
   2.342 +024403081a1010064b080c1313024b08b8ffdeb41010024b08b8fff2b40b0b024b08b8fff040
   2.343 +0b0f0f064b080c0c0c024b08b8fff2400b0d0d024b08140e0e064b08b8fffc40140a0a064b08
   2.344 +100909064b080b0703170327030303b8ffecb41313024b03b8fff4b41010024b03b8fffa400b
   2.345 +0f0f024b03040b0b024b03b8fffeb40d0d024b03b8fff2b40e0e064b03b8fff4b40f0f064b03
   2.346 +b8fffeb40c0c064b03b8fff4400b0a0a064b03080909064b03b8fff040151010064b030a0002
   2.347 +06020104060909030807020402003f3f3f3fcd10cd435458b306010304111239395943545840
   2.348 +52b8060100950601750601021701b70102870101680101000c01015c016c017c010303670601
   2.349 +0003060123063306430653066306730606031801280138014801580178010627063706470657
   2.350 +067706b70606005f5d5d5f5d715f5d5f5d715f5d5d715f5d715f71590110c62b2b2b2b2b2b2b
   2.351 +2b2b2b2b5d10c62b2b2b2b2b2b2b2b2b2b10ed435458b005395910ed435458b0003959435458
   2.352 +b40575030075ed10ed593130005f5d012b2b050111231133011133110449fd0bbe5002e1be14
   2.353 +042ffbe505b9fc0b03f5fa33000100870000040905e6000b00c0402d270a370a0201450a650a
   2.354 +750a0302010a0309004f0b084f09270b370b02030b03064d034d070417042704030004b8fff4
   2.355 +b41313024b04b8fff4b41010024b04b8fffa40170f0f024b04080b0b024b04040d0d024b0408
   2.356 +0c0c024b04b8fffab40e0e064b04b8fff4400b0f0f064b04070c0c064b04b8fff840170d0d06
   2.357 +4b040c074f020a01020304090500040a000a0906003f3f3f3f1112173910ed0110d62b2b2b2b
   2.358 +2b2b2b2b2b2b5f5deded10d45f5dd6ed10ed111239395f5d5f5d313021010711231133110133
   2.359 +0101033bfeb0a6bebe019adefea901a30218abfe9305e6fc5701f2fe69fd6800000100960000
   2.360 +03f405b90005009140160804180402c804d804e804f804040003440004470700b8ffeab41010
   2.361 +064b00b8ffecb41313024b00b8fff4b41010024b00b8fffa400b0f0f024b00040b0b024b00b8
   2.362 +fffeb40d0d024b00b8fff4b40e0e064b00b8fff4400b0f0f064b00030c0c064b00b8fff4400d
   2.363 +0d0d064b004706034800080102003f3fed0110e62b2b2b2b2b2b2b2b2b2b10e610ed5f5d7131
   2.364 +3033113311211596c8029605b9fafbb4000000010014ffec05a305b9000c01f0401401400e0e
   2.365 +064b04400e0e064b0e401010024b0002435558401d0c0e180e280e380e03080e180e380e480e
   2.366 +580ea80eb80e070606080702003f3f012f5d7110d631301b40ff4a030145020143087308024c
   2.367 +0a7c0a0203280301280a0127080102970101980401870701880b0101180e280e380e03080e18
   2.368 +0e380e480e580ea80eb80e070000460c0546380c480c023706470602022806480602270c470c
   2.369 +020672070c720b01010a0b04040875070a75680b016707010b730207730309090275c7030127
   2.370 +0377038703a703d703e703060003770901016709010809180902680988099809a809b809c809
   2.371 +d809e809f80909580101580401004a0201034701014704010107011701020701270187019701
   2.372 +a701b701c701d701e701f7010a07041704020704270487049704a704b704c704d704e704f704
   2.373 +0a070117010217014701570167017740490187019701a701b701c701d701e701f7010d070417
   2.374 +0402070417042704470457046704770487049704a704b704c704d704e704f7040f0009710201
   2.375 +7104710702090c0806080b020702003f3f3f3f3f10ede410ed5f5d715d715d715d715f5d5d5f
   2.376 +5d5f5d5d5d715d5f5d012f5f5d71ed39192f1810ed10fd5d5ded10ed39192f1112392f1810ed
   2.377 +10fd5d5d5f5d5ded10ed5f5d715f5d5d5d5d5f5d5d5d5f5d5d5d5d3130592b002b2b21030123
   2.378 +01032301330101330104e5aefec032feb7aabe01125b015d01425a012903adfc3f03c1fc5305
   2.379 +b9fbd3042dfa47000001000dffec06c405b9000c0165b10202435458401c070a020305040109
   2.380 +04090b02080205020c0b0a0506070a0702020e0d1112392fcdcd10ddcd10ddcd003f3f3f3f3f
   2.381 +1112173931301bb10602435458401c070a02030504010904090b02080205020c0b0a0506070a
   2.382 +0702020e0d1112392fcdcd10ddcd10ddcd003f3f3f3f3f1112173931301b4036470201004803
   2.383 +0147080102280e480e780e880ec80e05000a000103480001780401770001480801020a0a0001
   2.384 +070703040646050b460cb8fff840620a0a064b080501070c370c470c770c0438054805780503
   2.385 +0c78000578040c78017500037504470401480001008209048208020209754808010708270837
   2.386 +085708a708050008680278020201490201000a8e00028f08078e04000904090c020802050200
   2.387 +3f3f3f3f3f10ed10ed10ed5f5d5f5d012f5f5d5ded39192f1810ed10ed5d5d10ed10eded10ed
   2.388 +10fd5d5d5d2bed10ed111239192f1112392f5f5d5d5d5d5f5d5f5d31305f5d5d005f5d595905
   2.389 +23010123013301013301013304fc3ffea3feba3ffe32d00126014246013e012bd01403f2fc0e
   2.390 +05cdfc0103fffc0303fd00000002000300000000001400010000000000340004002000000004
   2.391 +000400010000f01bffff0000f000ffff10000001000000000006004200000000001c00000001
   2.392 +00020003000400050006000700080009000a000b000c000d000e000f00100011001200130014
   2.393 +00150016001700180019001a001b000005e6000005b9001905b90014042f00140000ffe70000
   2.394 +ffec0000ffecfe5c000005c30000fe5400000338000005d300000253000005c8000a00000000
   2.395 +0000000000000000000000000000000000000000000000000000000000000000000000000000
   2.396 +0000000000000000000000000000000000000000000000000000000000000000000000000000
   2.397 +00c800cd00cd009600b400b400000000000000be00c800c8008c00a0009b00960000000000be
   2.398 +00c800c8000000aa00aa000000000064007d0082008c009600a00064007d0082008c009b00d2
   2.399 +0064007d0082008c009600a002300136011801a401d600460218012c01c2000001d600eb00eb
   2.400 +01d1017f0154011301450168012c008d02350159033f0505012c00b4006e0136015e01cc01cc
   2.401 +04d8006e006e01d600d2005f01f4012c007802d00190037f00800280006e00b4000000a5fea2
   2.402 +003200b9008c0000000000000000000000000000000000000000000000000000000000000000
   2.403 +00000000000000000000000000000000000000000000000000000000000000000000080005e6
   2.404 +000005b9001905b90014042f00140000ffe70000ffec0000ffecfe5c00000000000000000000
   2.405 +0338000000000000025300000000000000000000000000000000000000000000000000000000
   2.406 +0000000000000000000000000000000000000000000000000000000000000000000000000000
   2.407 +000000000000000000000000000000000000000000c800cd00cd009600b400b4000000000000
   2.408 +00be00c800c8008c00a0009b00960000000000be00c800c8000000aa00aa000000000064007d
   2.409 +0082008c009600a00064007d0082008c009b00d20064007d0082008c009600a04036544b214a
   2.410 +494847464544434241403f3e3d3c3b3a39383736352f2e2d2c2826252423221f181411100f0d
   2.411 +0b0a090807060504030201002c4523466020b02660b004262348482d2c452346236120b02661
   2.412 +b004262348482d2c45234660b0206120b04660b004262348482d2c4523462361b0206020b026
   2.413 +61b02061b004262348482d2c45234660b0406120b06660b004262348482d2c4523462361b040
   2.414 +6020b02661b04061b004262348482d2c0110203c003c2d2c20452320b0cd442320b8015a5158
   2.415 +2320b08d44235920b0ed51582320b04d44235920b0042651582320b00d44235921212d2c2020
   2.416 +4518684420b001602045b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b432343
   2.417 +0b2d2c00b0282370b101283e01b0282370b10228453ab10200080d2d2c2045b00325456164b0
   2.418 +50515845441b2121592d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b000
   2.419 +8b20b12cc08a8cb8100062602b0c642364615c58b00361592d2c8a03458a8a87b0112bb02923
   2.420 +44b0297ae4182d2c4565b02c234445b02b23442d2c4b525845441b2121592d2c01b005251023
   2.421 +208af500b0016023edec2d2c01b005251023208af500b0016123edec2d2c01b0062510f500ed
   2.422 +ec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2c00b00743b006430b2d2c21
   2.423 +210c6423648bb84000622d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c
   2.424 +21b0c051580c6423648bb81555621bb200802f2b59b002602d2c0c6423648bb8400062602321
   2.425 +2d2c4523456023456023456023766818b08062202d2cb00426b00426b00425b0042545234520
   2.426 +b003266062636820b0032661658a2344442d2c2045b0005458b040442045b04061441b212159
   2.427 +2d2c45b1302f4523456160b0016069442d2c4b5158b02f2370b01423421b2121592d2c4b5158
   2.428 +20b0032545695358441b2121591b2121592d2c45b01443b0006063b0016069442d2cb02f4544
   2.429 +2d2c452320458a60442d2c45234560442d2c4b235158b90033ffe0b134201bb3330034005944
   2.430 +442d2cb0164358b00326458a586466b01f601b64b020606620581b21b04059b0016159235865
   2.431 +59b02923442310b029e01b2121212121592d2cb0164358b004254564b020606620581b21b040
   2.432 +59b0016123586559b0292344b00425b00725082058021b0359b0052510b004252046b0042523
   2.433 +423cb0072510b006252046b00425b0016023423c2058011b0059b0052510b00425b029e0b007
   2.434 +2510b00625b029e0b00425b00725082058021b0359b00425b003254348b00625b00325b00160
   2.435 +43481b2159212121212121212d2cb0164358b004254564b020606620581b21b04059b0016123
   2.436 +581b6559b0292344b00525b00825082058021b0359b0042510b005252046b0042523423cb004
   2.437 +25b0072508b0072510b006252046b00425b0016023423c2058011b0059b0042510b00525b029
   2.438 +e0b02920456544b0072510b00625b029e0b00525b00825082058021b0359b00525b003254348
   2.439 +b00425b0072508b00625b00325b0016043481b2159212121212121212d2c02b00425202046b0
   2.440 +04252342b0052508b003254548212121212d2c02b0032520b0042508b0022543482121212d2c
   2.441 +452320451820b00050205823652359236820b040505821b04059235865598a60442d2c4b5323
   2.442 +4b515a5820458a60441b2121592d2c208a08234b538a4b515a5823381b2121592d2c00208a49
   2.443 +b0005158b04023208a3812341b2121592d2c462346608a8a462320468a608a61b8ff80622320
   2.444 +10238ab14b4b8a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2c208a23
   2.445 +49648a2353583c1b21592d2c4b505845441b2121592d2cb0024354584b53234b515a58381b21
   2.446 +21591b21212121592d2cb1020042b123018851b1400188535a58b910000020885458b2020102
   2.447 +43604259b12401885158b920000040885458b2020202436042b12401885458b2022002436042
   2.448 +004b014b5258b2020802436042591bb940000080885458b202040243604259b94000008063b8
   2.449 +0100885458b202080243604259b94000010063b80200885458b202100243604259b940000200
   2.450 +63b80400885458b202400243604259595959592d00000001000000050000bb5c72a45f0f3cf5
   2.451 +001b080000000000ad61b71900000000c142e956ff50fde708a8078b0000000a000100000000
   2.452 +0000000100000783fe39000008e9ff50ff7808a800010000000000000000000000000000001c
   2.453 +0400008004c90050044b004106a40087045f007d045f00870248005003f6004104340050032c
   2.454 +004f04760096031c0096045d0041033d00410433009602f0009f05f4000f0564005003d90050
   2.455 +02690000025c00960475004b02f50041051b009604090087040d009605ad001406d1000d0000
   2.456 +0028010201ca02d60374041604a4055a067c070407ae0820095809fe0a600a800b720c280d48
   2.457 +0d480dc00e7c0ef00fde105a10b211ca129c000000010000001c004d0007004b000500020010
   2.458 +002f0055000002f001ff00030001400a54bfa50140a5111546a4b8010cb2321fa1b8011540b2
   2.459 +1f1f6fc731216ec731216dc731216cc731216bc731216ac7312169c7312168c7312167c73121
   2.460 +66c7312165c7312164c7312163c7312162c7312161c7312160c731215fc731215ec731215dc7
   2.461 +31215cc731215bc731215ac7312159c7312158c7312157c7312156c7312155c7312154c73121
   2.462 +53c7312152c7312151c7312150c731214fc731214ec731214dc731214cc731214bc731214ac7
   2.463 +312149c7312148c7312147c7312146c7312145c7312144c73121b80137b26f0821b80136b26e
   2.464 +0821b80135b26d0821b80134b26c0821b80133b26b0821b80132b26a0821b80131b2690821b8
   2.465 +0130b2680821b8012fb2670821b8012eb2660821b8012db2650821b8012cb2640821b8012bb2
   2.466 +630821b8012ab2620821b80129b2610821b80128b2600821b80127b25f0821b80126b25e0821
   2.467 +b80125b25d0821b80124b25c0821b80123b25b0821b80122b25a0821b80121b2590821b80120
   2.468 +b2580821b8011fb2570821b8011eb2560821b8011db2550821b8011cb2540821b8011bb25308
   2.469 +21b8011ab2520821b80119b2510821b80118b2500821b80117b24f0821b80116b24e0821b801
   2.470 +15b24d0821b80114b24c0821b80113b24b0821b80112b24a0821b80111b2490821b80110b248
   2.471 +0821b8010fb2470821b8010eb2460821b8010db2450821b8010c40ff4408216957311f585731
   2.472 +1f5657311f5152311f4644311f4544311f4f4e311f4d4e311f2097309740975097043088010f
   2.473 +8c018f849f84af84bf84cf84058f689f68af680360697069028f5b018f5a017057018f509f50
   2.474 +af50bf50cf50058f519f51af51038f529f52af52033f7c4f7c02507b607b707b03704e01708f
   2.475 +01308f608f708f03008e01008e01408e708e02008e308e408e508e608e708e06107040700260
   2.476 +740160730170440100282800000012110840370f3fce16010fa21fa20218c7312114c731210e
   2.477 +c731210dc731210cc731210bc731210ac7312109c7312108c7312107c7312106c7312105c731
   2.478 +2104c7312103c7312102c7312101c73121407c00c73121e0180821dc140821d60e0821d50d08
   2.479 +21d40c0821d30b0821d20a0821d1090821d0080821cf070821ce060821cd050821cc040821cb
   2.480 +030821ca020821c9010821c8000821230e45220c45210a452008451f06451e04451d02451c00
   2.481 +451a08180816081408120810080e080c080a08080806080408020800084bb807ff524bb00850
   2.482 +5b58b101018e59b0124b004b5442b9000101ff858d2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   2.483 +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   2.484 +2b7342011d4bb01b5358b0961d594bb0325358b0001db1160042594b20b0325323b096515a58
   2.485 +b0301d592b0145695342014b5058b108004259435c58b1080042591610703eb13737456920b0
   2.486 +005458b040605944b1300070b332003000197018707373737373737474737373737373737373
   2.487 +73737373737373732b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   2.488 +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   2.489 +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b742b00000000>
   2.490 +] def
   2.491 +FontName currentdict end definefont pop
   2.492 +%%Page: 1 1
   2.493 +%%BeginPageSetup
   2.494 +%%PageBoundingBox: 0 0 237 122
   2.495 +%%EndPageSetup
   2.496 +q
   2.497 +1 0 0 rg
   2.498 +BT
   2.499 +7.831745 0 0 11.438301 83.162394 110.386058 Tm
   2.500 +/f-0-0 1 Tf
   2.501 +[<010203030405>-1<0607>-1<0809060205>]TJ
   2.502 +1.350586 -1 Td
   2.503 +[<0a>-1<0b0207>-1<0c0d>1<0d020b>]TJ
   2.504 +ET
   2.505 +0 g
   2.506 +1.440509 w
   2.507 +0 J
   2.508 +0 j
   2.509 +[] 0.0 d
   2.510 +4 M q 0 -1 -1 0 0 121.125 cm
   2.511 +0.715 -140.605 m 24.414 -140.605 l 24.414 -80.715 l 0.715 -80.715 l h
   2.512 +0.715 -140.605 m S Q
   2.513 +1.6 w
   2.514 +q 1 0 0 -1 0 121.125 cm
   2.515 +59.191 12.891 m 78.195 12.891 l S Q
   2.516 +69.828 112.105 m 80.316 108.246 l 69.828 104.391 l 71.504 106.668 
   2.517 +71.492 109.785 69.828 112.105 c h
   2.518 +69.828 112.105 m f*
   2.519 +1 0 0 rg
   2.520 +BT
   2.521 +7.831745 0 0 11.438301 3.162394 110.386058 Tm
   2.522 +/f-0-0 1 Tf
   2.523 +[<010203030405>-1<0607>-1<0809060205>]TJ
   2.524 +1.180664 -1 Td
   2.525 +<0e060b030f10080b0c>Tj
   2.526 +ET
   2.527 +0 g
   2.528 +1.440509 w
   2.529 +q 0 -1 -1 0 0 121.125 cm
   2.530 +0.715 -60.605 m 24.414 -60.605 l 24.414 -0.715 l 0.715 -0.715 l h
   2.531 +0.715 -60.605 m S Q
   2.532 +1.6 w
   2.533 +q 1 0 0 -1 0 121.125 cm
   2.534 +35.297 42.672 m 35.297 31.086 35.105 31.086 35.105 31.086 c 39.836 
   2.535 +31.086 l 30.375 24.75 l 21.48 31.086 l 26.023 31.086 l 26.211 42.672 l 
   2.536 +h
   2.537 +35.297 42.672 m S Q
   2.538 +BT
   2.539 +10.591524 0 0 15.468973 10.673322 64.072929 Tm
   2.540 +/f-0-0 1 Tf
   2.541 +<111213140208150d>Tj
   2.542 +-0.334961 -1 Td
   2.543 +<16060b030f10080b0c>Tj
   2.544 +ET
   2.545 +1.6 w
   2.546 +q 1 0 0 -1 0 121.125 cm
   2.547 +142.652 12.891 m 174.406 12.891 l S Q
   2.548 +151.023 104.359 m 140.535 108.219 l 151.023 112.074 l 149.348 109.797 
   2.549 +149.359 106.68 151.023 104.359 c h
   2.550 +151.023 104.359 m f*
   2.551 +166.035 112.105 m 176.523 108.246 l 166.035 104.391 l 167.711 106.668 
   2.552 +167.703 109.785 166.035 112.105 c h
   2.553 +166.035 112.105 m f*
   2.554 +1 0 0 rg
   2.555 +BT
   2.556 +7.831745 0 0 11.438301 191.720735 110.386058 Tm
   2.557 +/f-0-0 1 Tf
   2.558 +<170c0910020b18>Tj
   2.559 +ET
   2.560 +0 g
   2.561 +1.440509 w
   2.562 +q 0 -1 -1 0 0 121.125 cm
   2.563 +0.715 -236.605 m 24.414 -236.605 l 24.414 -176.715 l 0.715 -176.715 l h
   2.564 +0.715 -236.605 m S Q
   2.565 +1 0 0 rg
   2.566 +BT
   2.567 +7.831745 0 0 11.438301 91.843087 62.386058 Tm
   2.568 +/f-0-0 1 Tf
   2.569 +<1902070814131a0c03>Tj
   2.570 +ET
   2.571 +0 g
   2.572 +1.440509 w
   2.573 +q 0 -1 -1 0 0 121.125 cm
   2.574 +48.715 -140.605 m 72.414 -140.605 l 72.414 -80.715 l 48.715 -80.715 l h
   2.575 +48.715 -140.605 m S Q
   2.576 +1 0 0 rg
   2.577 +BT
   2.578 +7.831745 0 0 11.438301 101.487452 14.386058 Tm
   2.579 +/f-0-0 1 Tf
   2.580 +<1b020b18>Tj
   2.581 +-0.989258 -1 Td
   2.582 +[<0a>-1<0b0207>-1<0c0d>1<0d020b>]TJ
   2.583 +ET
   2.584 +0 g
   2.585 +1.440509 w
   2.586 +q 0 -1 -1 0 0 121.125 cm
   2.587 +96.715 -140.605 m 120.414 -140.605 l 120.414 -80.715 l 96.715 -80.715 l 
   2.588 +h
   2.589 +96.715 -140.605 m S Q
   2.590 +1.6 w
   2.591 +q 1 0 0 -1 0 121.125 cm
   2.592 +110.645 72.922 m 110.645 95.512 l S Q
   2.593 +106.77 39.832 m 110.629 50.32 l 114.484 39.832 l 112.207 41.508 109.094 
   2.594 +41.5 106.77 39.832 c h
   2.595 +106.77 39.832 m f*
   2.596 +114.516 33.98 m 110.66 23.492 l 106.801 33.98 l 109.078 32.309 112.195 
   2.597 +32.316 114.516 33.98 c h
   2.598 +114.516 33.98 m f*
   2.599 +1.6 w
   2.600 +q 1 0 0 -1 0 121.125 cm
   2.601 +77.828 18.723 m 42.094 59.789 78.988 104.551 78.988 104.551 c S Q
   2.602 +69.414 98.629 m 79.207 104.008 l 75.234 93.566 l 74.613 96.324 72.258 
   2.603 +98.363 69.414 98.629 c h
   2.604 +69.414 98.629 m f*
   2.605 +76.652 25.496 m 80.348 14.949 l 70.699 20.59 l 73.523 20.746 75.922 
   2.606 +22.734 76.652 25.496 c h
   2.607 +76.652 25.496 m f*
   2.608 +1.6 w
   2.609 +q 1 0 0 -1 0 121.125 cm
   2.610 +110.645 24.922 m 110.645 47.512 l S Q
   2.611 +106.77 87.832 m 110.629 98.32 l 114.484 87.832 l 112.207 89.508 109.094 
   2.612 +89.5 106.77 87.832 c h
   2.613 +106.77 87.832 m f*
   2.614 +114.516 81.98 m 110.66 71.492 l 106.801 81.98 l 109.078 80.309 112.195 
   2.615 +80.316 114.516 81.98 c h
   2.616 +114.516 81.98 m f*
   2.617 +1 0 0 rg
   2.618 +BT
   2.619 +7.831745 0 0 11.438301 16.562019 14.386058 Tm
   2.620 +/f-0-0 1 Tf
   2.621 +<0b04050906030c>Tj
   2.622 +-0.530273 -1 Td
   2.623 +<0e060b030f10080b0c>Tj
   2.624 +ET
   2.625 +0 g
   2.626 +1.440509 w
   2.627 +q 0 -1 -1 0 0 121.125 cm
   2.628 +96.715 -60.605 m 120.414 -60.605 l 120.414 -0.715 l 96.715 -0.715 l h
   2.629 +96.715 -60.605 m S Q
   2.630 +1.6 w
   2.631 +q 1 0 0 -1 0 121.125 cm
   2.632 +35.297 77.547 m 35.297 89.133 35.105 89.133 35.105 89.133 c 39.836 
   2.633 +89.133 l 30.375 95.473 l 21.48 89.133 l 26.023 89.133 l 26.211 77.547 l 
   2.634 +h
   2.635 +35.297 77.547 m S Q
   2.636 +1.6 w
   2.637 +q 1 0 0 -1 0 121.125 cm
   2.638 +60.375 108.891 m 78.195 108.891 l S Q
   2.639 +69.828 16.105 m 80.316 12.246 l 69.828 8.391 l 71.504 10.668 71.492 
   2.640 +13.785 69.828 16.105 c h
   2.641 +69.828 16.105 m f*
   2.642 +Q
   2.643 +showpage
   2.644 +%%Trailer
   2.645 +count op_count sub {pop} repeat
   2.646 +countdictstack dict_count sub {end} repeat
   2.647 +cairo_eps_state restore
   2.648 +%%EOF
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/0__Papers/Future_Architecture/figures/Separate_comm_processors_2.svg	Tue Apr 10 07:23:24 2012 -0700
     3.3 @@ -0,0 +1,1133 @@
     3.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
     3.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
     3.6 +
     3.7 +<svg
     3.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
     3.9 +   xmlns:cc="http://creativecommons.org/ns#"
    3.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    3.11 +   xmlns:svg="http://www.w3.org/2000/svg"
    3.12 +   xmlns="http://www.w3.org/2000/svg"
    3.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    3.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    3.15 +   width="744.09448819"
    3.16 +   height="1052.3622047"
    3.17 +   id="svg2"
    3.18 +   sodipodi:version="0.32"
    3.19 +   inkscape:version="0.48.1 "
    3.20 +   sodipodi:docname="Separate_comm_processors_2.svg"
    3.21 +   inkscape:output_extension="org.inkscape.output.svg.inkscape"
    3.22 +   version="1.1">
    3.23 +  <defs
    3.24 +     id="defs4">
    3.25 +    <marker
    3.26 +       inkscape:stockid="Arrow2Mstart"
    3.27 +       orient="auto"
    3.28 +       refY="0.0"
    3.29 +       refX="0.0"
    3.30 +       id="Arrow2Mstart"
    3.31 +       style="overflow:visible">
    3.32 +      <path
    3.33 +         id="path5492"
    3.34 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
    3.35 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
    3.36 +         transform="scale(0.6) translate(0,0)" />
    3.37 +    </marker>
    3.38 +    <marker
    3.39 +       inkscape:stockid="Arrow2Mend"
    3.40 +       orient="auto"
    3.41 +       refY="0.0"
    3.42 +       refX="0.0"
    3.43 +       id="Arrow2Mend"
    3.44 +       style="overflow:visible;">
    3.45 +      <path
    3.46 +         id="path3563"
    3.47 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
    3.48 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
    3.49 +         transform="scale(0.6) rotate(180) translate(0,0)" />
    3.50 +    </marker>
    3.51 +    <marker
    3.52 +       inkscape:stockid="TriangleOutM"
    3.53 +       orient="auto"
    3.54 +       refY="0.0"
    3.55 +       refX="0.0"
    3.56 +       id="TriangleOutM"
    3.57 +       style="overflow:visible">
    3.58 +      <path
    3.59 +         id="path3682"
    3.60 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
    3.61 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
    3.62 +         transform="scale(0.4)" />
    3.63 +    </marker>
    3.64 +    <marker
    3.65 +       inkscape:stockid="Arrow2Lend"
    3.66 +       orient="auto"
    3.67 +       refY="0.0"
    3.68 +       refX="0.0"
    3.69 +       id="Arrow2Lend"
    3.70 +       style="overflow:visible;">
    3.71 +      <path
    3.72 +         id="path3557"
    3.73 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
    3.74 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
    3.75 +         transform="scale(1.1) rotate(180) translate(1,0)" />
    3.76 +    </marker>
    3.77 +    <marker
    3.78 +       inkscape:stockid="Arrow1Mstart"
    3.79 +       orient="auto"
    3.80 +       refY="0.0"
    3.81 +       refX="0.0"
    3.82 +       id="Arrow1Mstart"
    3.83 +       style="overflow:visible">
    3.84 +      <path
    3.85 +         id="path3542"
    3.86 +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
    3.87 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
    3.88 +         transform="scale(0.4) translate(10,0)" />
    3.89 +    </marker>
    3.90 +    <marker
    3.91 +       inkscape:stockid="Arrow1Lend"
    3.92 +       orient="auto"
    3.93 +       refY="0.0"
    3.94 +       refX="0.0"
    3.95 +       id="Arrow1Lend"
    3.96 +       style="overflow:visible;">
    3.97 +      <path
    3.98 +         id="path3539"
    3.99 +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
   3.100 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
   3.101 +         transform="scale(0.8) rotate(180) translate(12.5,0)" />
   3.102 +    </marker>
   3.103 +    <marker
   3.104 +       inkscape:stockid="Arrow1Lstart"
   3.105 +       orient="auto"
   3.106 +       refY="0.0"
   3.107 +       refX="0.0"
   3.108 +       id="Arrow1Lstart"
   3.109 +       style="overflow:visible">
   3.110 +      <path
   3.111 +         id="path3536"
   3.112 +         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
   3.113 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
   3.114 +         transform="scale(0.8) translate(12.5,0)" />
   3.115 +    </marker>
   3.116 +    <inkscape:perspective
   3.117 +       sodipodi:type="inkscape:persp3d"
   3.118 +       inkscape:vp_x="0 : 526.18109 : 1"
   3.119 +       inkscape:vp_y="0 : 1000 : 0"
   3.120 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
   3.121 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
   3.122 +       id="perspective10" />
   3.123 +    <inkscape:perspective
   3.124 +       id="perspective4311"
   3.125 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.126 +       inkscape:vp_z="1 : 0.5 : 1"
   3.127 +       inkscape:vp_y="0 : 1000 : 0"
   3.128 +       inkscape:vp_x="0 : 0.5 : 1"
   3.129 +       sodipodi:type="inkscape:persp3d" />
   3.130 +    <inkscape:perspective
   3.131 +       id="perspective4336"
   3.132 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.133 +       inkscape:vp_z="1 : 0.5 : 1"
   3.134 +       inkscape:vp_y="0 : 1000 : 0"
   3.135 +       inkscape:vp_x="0 : 0.5 : 1"
   3.136 +       sodipodi:type="inkscape:persp3d" />
   3.137 +    <inkscape:perspective
   3.138 +       id="perspective4365"
   3.139 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.140 +       inkscape:vp_z="1 : 0.5 : 1"
   3.141 +       inkscape:vp_y="0 : 1000 : 0"
   3.142 +       inkscape:vp_x="0 : 0.5 : 1"
   3.143 +       sodipodi:type="inkscape:persp3d" />
   3.144 +    <marker
   3.145 +       inkscape:stockid="Arrow2Mend"
   3.146 +       orient="auto"
   3.147 +       refY="0"
   3.148 +       refX="0"
   3.149 +       id="Arrow2Mend-9"
   3.150 +       style="overflow:visible">
   3.151 +      <path
   3.152 +         id="path3563-4"
   3.153 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.154 +         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"
   3.155 +         transform="scale(-0.6,-0.6)" />
   3.156 +    </marker>
   3.157 +    <inkscape:perspective
   3.158 +       id="perspective4423"
   3.159 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.160 +       inkscape:vp_z="1 : 0.5 : 1"
   3.161 +       inkscape:vp_y="0 : 1000 : 0"
   3.162 +       inkscape:vp_x="0 : 0.5 : 1"
   3.163 +       sodipodi:type="inkscape:persp3d" />
   3.164 +    <marker
   3.165 +       inkscape:stockid="Arrow2Mend"
   3.166 +       orient="auto"
   3.167 +       refY="0"
   3.168 +       refX="0"
   3.169 +       id="Arrow2Mend-8"
   3.170 +       style="overflow:visible">
   3.171 +      <path
   3.172 +         id="path3563-2"
   3.173 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.174 +         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"
   3.175 +         transform="scale(-0.6,-0.6)" />
   3.176 +    </marker>
   3.177 +    <inkscape:perspective
   3.178 +       id="perspective4461"
   3.179 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.180 +       inkscape:vp_z="1 : 0.5 : 1"
   3.181 +       inkscape:vp_y="0 : 1000 : 0"
   3.182 +       inkscape:vp_x="0 : 0.5 : 1"
   3.183 +       sodipodi:type="inkscape:persp3d" />
   3.184 +    <inkscape:perspective
   3.185 +       id="perspective14081"
   3.186 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.187 +       inkscape:vp_z="1 : 0.5 : 1"
   3.188 +       inkscape:vp_y="0 : 1000 : 0"
   3.189 +       inkscape:vp_x="0 : 0.5 : 1"
   3.190 +       sodipodi:type="inkscape:persp3d" />
   3.191 +    <inkscape:perspective
   3.192 +       id="perspective14206"
   3.193 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.194 +       inkscape:vp_z="1 : 0.5 : 1"
   3.195 +       inkscape:vp_y="0 : 1000 : 0"
   3.196 +       inkscape:vp_x="0 : 0.5 : 1"
   3.197 +       sodipodi:type="inkscape:persp3d" />
   3.198 +    <inkscape:perspective
   3.199 +       id="perspective14299"
   3.200 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.201 +       inkscape:vp_z="1 : 0.5 : 1"
   3.202 +       inkscape:vp_y="0 : 1000 : 0"
   3.203 +       inkscape:vp_x="0 : 0.5 : 1"
   3.204 +       sodipodi:type="inkscape:persp3d" />
   3.205 +    <inkscape:perspective
   3.206 +       id="perspective16915"
   3.207 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.208 +       inkscape:vp_z="1 : 0.5 : 1"
   3.209 +       inkscape:vp_y="0 : 1000 : 0"
   3.210 +       inkscape:vp_x="0 : 0.5 : 1"
   3.211 +       sodipodi:type="inkscape:persp3d" />
   3.212 +    <inkscape:perspective
   3.213 +       id="perspective16946"
   3.214 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.215 +       inkscape:vp_z="1 : 0.5 : 1"
   3.216 +       inkscape:vp_y="0 : 1000 : 0"
   3.217 +       inkscape:vp_x="0 : 0.5 : 1"
   3.218 +       sodipodi:type="inkscape:persp3d" />
   3.219 +    <inkscape:perspective
   3.220 +       id="perspective17789"
   3.221 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.222 +       inkscape:vp_z="1 : 0.5 : 1"
   3.223 +       inkscape:vp_y="0 : 1000 : 0"
   3.224 +       inkscape:vp_x="0 : 0.5 : 1"
   3.225 +       sodipodi:type="inkscape:persp3d" />
   3.226 +    <inkscape:perspective
   3.227 +       id="perspective17820"
   3.228 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.229 +       inkscape:vp_z="1 : 0.5 : 1"
   3.230 +       inkscape:vp_y="0 : 1000 : 0"
   3.231 +       inkscape:vp_x="0 : 0.5 : 1"
   3.232 +       sodipodi:type="inkscape:persp3d" />
   3.233 +    <marker
   3.234 +       inkscape:stockid="Arrow2Mend"
   3.235 +       orient="auto"
   3.236 +       refY="0"
   3.237 +       refX="0"
   3.238 +       id="Arrow2Mend-8-2"
   3.239 +       style="overflow:visible">
   3.240 +      <path
   3.241 +         id="path3563-2-3"
   3.242 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.243 +         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"
   3.244 +         transform="scale(-0.6,-0.6)" />
   3.245 +    </marker>
   3.246 +    <inkscape:perspective
   3.247 +       id="perspective17848"
   3.248 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.249 +       inkscape:vp_z="1 : 0.5 : 1"
   3.250 +       inkscape:vp_y="0 : 1000 : 0"
   3.251 +       inkscape:vp_x="0 : 0.5 : 1"
   3.252 +       sodipodi:type="inkscape:persp3d" />
   3.253 +    <inkscape:perspective
   3.254 +       id="perspective17891"
   3.255 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.256 +       inkscape:vp_z="1 : 0.5 : 1"
   3.257 +       inkscape:vp_y="0 : 1000 : 0"
   3.258 +       inkscape:vp_x="0 : 0.5 : 1"
   3.259 +       sodipodi:type="inkscape:persp3d" />
   3.260 +    <marker
   3.261 +       inkscape:stockid="Arrow2Mend"
   3.262 +       orient="auto"
   3.263 +       refY="0"
   3.264 +       refX="0"
   3.265 +       id="Arrow2Mend-8-7"
   3.266 +       style="overflow:visible">
   3.267 +      <path
   3.268 +         id="path3563-2-8"
   3.269 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.270 +         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"
   3.271 +         transform="scale(-0.6,-0.6)" />
   3.272 +    </marker>
   3.273 +    <inkscape:perspective
   3.274 +       id="perspective17925"
   3.275 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.276 +       inkscape:vp_z="1 : 0.5 : 1"
   3.277 +       inkscape:vp_y="0 : 1000 : 0"
   3.278 +       inkscape:vp_x="0 : 0.5 : 1"
   3.279 +       sodipodi:type="inkscape:persp3d" />
   3.280 +    <inkscape:perspective
   3.281 +       id="perspective17996"
   3.282 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.283 +       inkscape:vp_z="1 : 0.5 : 1"
   3.284 +       inkscape:vp_y="0 : 1000 : 0"
   3.285 +       inkscape:vp_x="0 : 0.5 : 1"
   3.286 +       sodipodi:type="inkscape:persp3d" />
   3.287 +    <inkscape:perspective
   3.288 +       id="perspective18039"
   3.289 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.290 +       inkscape:vp_z="1 : 0.5 : 1"
   3.291 +       inkscape:vp_y="0 : 1000 : 0"
   3.292 +       inkscape:vp_x="0 : 0.5 : 1"
   3.293 +       sodipodi:type="inkscape:persp3d" />
   3.294 +    <inkscape:perspective
   3.295 +       id="perspective18073"
   3.296 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.297 +       inkscape:vp_z="1 : 0.5 : 1"
   3.298 +       inkscape:vp_y="0 : 1000 : 0"
   3.299 +       inkscape:vp_x="0 : 0.5 : 1"
   3.300 +       sodipodi:type="inkscape:persp3d" />
   3.301 +    <inkscape:perspective
   3.302 +       id="perspective4016"
   3.303 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.304 +       inkscape:vp_z="1 : 0.5 : 1"
   3.305 +       inkscape:vp_y="0 : 1000 : 0"
   3.306 +       inkscape:vp_x="0 : 0.5 : 1"
   3.307 +       sodipodi:type="inkscape:persp3d" />
   3.308 +    <inkscape:perspective
   3.309 +       id="perspective4046"
   3.310 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.311 +       inkscape:vp_z="1 : 0.5 : 1"
   3.312 +       inkscape:vp_y="0 : 1000 : 0"
   3.313 +       inkscape:vp_x="0 : 0.5 : 1"
   3.314 +       sodipodi:type="inkscape:persp3d" />
   3.315 +    <inkscape:perspective
   3.316 +       id="perspective4071"
   3.317 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.318 +       inkscape:vp_z="1 : 0.5 : 1"
   3.319 +       inkscape:vp_y="0 : 1000 : 0"
   3.320 +       inkscape:vp_x="0 : 0.5 : 1"
   3.321 +       sodipodi:type="inkscape:persp3d" />
   3.322 +    <inkscape:perspective
   3.323 +       id="perspective4101"
   3.324 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.325 +       inkscape:vp_z="1 : 0.5 : 1"
   3.326 +       inkscape:vp_y="0 : 1000 : 0"
   3.327 +       inkscape:vp_x="0 : 0.5 : 1"
   3.328 +       sodipodi:type="inkscape:persp3d" />
   3.329 +    <inkscape:perspective
   3.330 +       id="perspective5945"
   3.331 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.332 +       inkscape:vp_z="1 : 0.5 : 1"
   3.333 +       inkscape:vp_y="0 : 1000 : 0"
   3.334 +       inkscape:vp_x="0 : 0.5 : 1"
   3.335 +       sodipodi:type="inkscape:persp3d" />
   3.336 +    <inkscape:perspective
   3.337 +       id="perspective3139"
   3.338 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.339 +       inkscape:vp_z="1 : 0.5 : 1"
   3.340 +       inkscape:vp_y="0 : 1000 : 0"
   3.341 +       inkscape:vp_x="0 : 0.5 : 1"
   3.342 +       sodipodi:type="inkscape:persp3d" />
   3.343 +    <inkscape:perspective
   3.344 +       id="perspective3161"
   3.345 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   3.346 +       inkscape:vp_z="1 : 0.5 : 1"
   3.347 +       inkscape:vp_y="0 : 1000 : 0"
   3.348 +       inkscape:vp_x="0 : 0.5 : 1"
   3.349 +       sodipodi:type="inkscape:persp3d" />
   3.350 +    <marker
   3.351 +       inkscape:stockid="Arrow2Mend"
   3.352 +       orient="auto"
   3.353 +       refY="0"
   3.354 +       refX="0"
   3.355 +       id="Arrow2Mend-8-7-0"
   3.356 +       style="overflow:visible">
   3.357 +      <path
   3.358 +         inkscape:connector-curvature="0"
   3.359 +         id="path3563-2-8-4"
   3.360 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.361 +         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"
   3.362 +         transform="scale(-0.6,-0.6)" />
   3.363 +    </marker>
   3.364 +    <marker
   3.365 +       inkscape:stockid="Arrow2Mend"
   3.366 +       orient="auto"
   3.367 +       refY="0"
   3.368 +       refX="0"
   3.369 +       id="marker12725"
   3.370 +       style="overflow:visible">
   3.371 +      <path
   3.372 +         inkscape:connector-curvature="0"
   3.373 +         id="path12727"
   3.374 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.375 +         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"
   3.376 +         transform="scale(-0.6,-0.6)" />
   3.377 +    </marker>
   3.378 +    <marker
   3.379 +       inkscape:stockid="Arrow2Mend"
   3.380 +       orient="auto"
   3.381 +       refY="0"
   3.382 +       refX="0"
   3.383 +       id="marker12729"
   3.384 +       style="overflow:visible">
   3.385 +      <path
   3.386 +         inkscape:connector-curvature="0"
   3.387 +         id="path12731"
   3.388 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.389 +         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"
   3.390 +         transform="scale(-0.6,-0.6)" />
   3.391 +    </marker>
   3.392 +    <marker
   3.393 +       inkscape:stockid="Arrow2Mend"
   3.394 +       orient="auto"
   3.395 +       refY="0"
   3.396 +       refX="0"
   3.397 +       id="marker12733"
   3.398 +       style="overflow:visible">
   3.399 +      <path
   3.400 +         inkscape:connector-curvature="0"
   3.401 +         id="path12735"
   3.402 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.403 +         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"
   3.404 +         transform="scale(-0.6,-0.6)" />
   3.405 +    </marker>
   3.406 +    <marker
   3.407 +       inkscape:stockid="Arrow2Mend"
   3.408 +       orient="auto"
   3.409 +       refY="0"
   3.410 +       refX="0"
   3.411 +       id="marker12737"
   3.412 +       style="overflow:visible">
   3.413 +      <path
   3.414 +         inkscape:connector-curvature="0"
   3.415 +         id="path12739"
   3.416 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.417 +         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"
   3.418 +         transform="scale(-0.6,-0.6)" />
   3.419 +    </marker>
   3.420 +    <marker
   3.421 +       inkscape:stockid="Arrow2Mend"
   3.422 +       orient="auto"
   3.423 +       refY="0"
   3.424 +       refX="0"
   3.425 +       id="marker12741"
   3.426 +       style="overflow:visible">
   3.427 +      <path
   3.428 +         inkscape:connector-curvature="0"
   3.429 +         id="path12743"
   3.430 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.431 +         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"
   3.432 +         transform="scale(-0.6,-0.6)" />
   3.433 +    </marker>
   3.434 +    <marker
   3.435 +       inkscape:stockid="Arrow2Mend"
   3.436 +       orient="auto"
   3.437 +       refY="0"
   3.438 +       refX="0"
   3.439 +       id="marker12745"
   3.440 +       style="overflow:visible">
   3.441 +      <path
   3.442 +         inkscape:connector-curvature="0"
   3.443 +         id="path12747"
   3.444 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.445 +         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"
   3.446 +         transform="scale(-0.6,-0.6)" />
   3.447 +    </marker>
   3.448 +    <marker
   3.449 +       inkscape:stockid="Arrow2Mend"
   3.450 +       orient="auto"
   3.451 +       refY="0"
   3.452 +       refX="0"
   3.453 +       id="marker12749"
   3.454 +       style="overflow:visible">
   3.455 +      <path
   3.456 +         inkscape:connector-curvature="0"
   3.457 +         id="path12751"
   3.458 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.459 +         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"
   3.460 +         transform="scale(-0.6,-0.6)" />
   3.461 +    </marker>
   3.462 +    <marker
   3.463 +       inkscape:stockid="Arrow2Mend"
   3.464 +       orient="auto"
   3.465 +       refY="0"
   3.466 +       refX="0"
   3.467 +       id="marker12753"
   3.468 +       style="overflow:visible">
   3.469 +      <path
   3.470 +         inkscape:connector-curvature="0"
   3.471 +         id="path12755"
   3.472 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.473 +         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"
   3.474 +         transform="scale(-0.6,-0.6)" />
   3.475 +    </marker>
   3.476 +    <marker
   3.477 +       inkscape:stockid="Arrow2Mend"
   3.478 +       orient="auto"
   3.479 +       refY="0"
   3.480 +       refX="0"
   3.481 +       id="marker12757"
   3.482 +       style="overflow:visible">
   3.483 +      <path
   3.484 +         inkscape:connector-curvature="0"
   3.485 +         id="path12759"
   3.486 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.487 +         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"
   3.488 +         transform="scale(-0.6,-0.6)" />
   3.489 +    </marker>
   3.490 +    <marker
   3.491 +       inkscape:stockid="Arrow2Mend"
   3.492 +       orient="auto"
   3.493 +       refY="0"
   3.494 +       refX="0"
   3.495 +       id="marker12761"
   3.496 +       style="overflow:visible">
   3.497 +      <path
   3.498 +         inkscape:connector-curvature="0"
   3.499 +         id="path12763"
   3.500 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.501 +         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"
   3.502 +         transform="scale(-0.6,-0.6)" />
   3.503 +    </marker>
   3.504 +    <marker
   3.505 +       inkscape:stockid="Arrow2Mend"
   3.506 +       orient="auto"
   3.507 +       refY="0"
   3.508 +       refX="0"
   3.509 +       id="marker12765"
   3.510 +       style="overflow:visible">
   3.511 +      <path
   3.512 +         inkscape:connector-curvature="0"
   3.513 +         id="path12767"
   3.514 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.515 +         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"
   3.516 +         transform="scale(-0.6,-0.6)" />
   3.517 +    </marker>
   3.518 +    <marker
   3.519 +       inkscape:stockid="Arrow2Mend"
   3.520 +       orient="auto"
   3.521 +       refY="0"
   3.522 +       refX="0"
   3.523 +       id="marker12769"
   3.524 +       style="overflow:visible">
   3.525 +      <path
   3.526 +         inkscape:connector-curvature="0"
   3.527 +         id="path12771"
   3.528 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.529 +         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"
   3.530 +         transform="scale(-0.6,-0.6)" />
   3.531 +    </marker>
   3.532 +    <marker
   3.533 +       inkscape:stockid="Arrow2Mend"
   3.534 +       orient="auto"
   3.535 +       refY="0"
   3.536 +       refX="0"
   3.537 +       id="marker12773"
   3.538 +       style="overflow:visible">
   3.539 +      <path
   3.540 +         inkscape:connector-curvature="0"
   3.541 +         id="path12775"
   3.542 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.543 +         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"
   3.544 +         transform="scale(-0.6,-0.6)" />
   3.545 +    </marker>
   3.546 +    <marker
   3.547 +       inkscape:stockid="Arrow2Mend"
   3.548 +       orient="auto"
   3.549 +       refY="0"
   3.550 +       refX="0"
   3.551 +       id="marker12777"
   3.552 +       style="overflow:visible">
   3.553 +      <path
   3.554 +         inkscape:connector-curvature="0"
   3.555 +         id="path12779"
   3.556 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.557 +         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"
   3.558 +         transform="scale(-0.6,-0.6)" />
   3.559 +    </marker>
   3.560 +    <marker
   3.561 +       inkscape:stockid="Arrow2Mend"
   3.562 +       orient="auto"
   3.563 +       refY="0"
   3.564 +       refX="0"
   3.565 +       id="marker12781"
   3.566 +       style="overflow:visible">
   3.567 +      <path
   3.568 +         inkscape:connector-curvature="0"
   3.569 +         id="path12783"
   3.570 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.571 +         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"
   3.572 +         transform="scale(-0.6,-0.6)" />
   3.573 +    </marker>
   3.574 +    <marker
   3.575 +       inkscape:stockid="Arrow2Mend"
   3.576 +       orient="auto"
   3.577 +       refY="0"
   3.578 +       refX="0"
   3.579 +       id="marker12785"
   3.580 +       style="overflow:visible">
   3.581 +      <path
   3.582 +         inkscape:connector-curvature="0"
   3.583 +         id="path12787"
   3.584 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.585 +         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"
   3.586 +         transform="scale(-0.6,-0.6)" />
   3.587 +    </marker>
   3.588 +    <marker
   3.589 +       inkscape:stockid="Arrow2Mend"
   3.590 +       orient="auto"
   3.591 +       refY="0"
   3.592 +       refX="0"
   3.593 +       id="marker12789"
   3.594 +       style="overflow:visible">
   3.595 +      <path
   3.596 +         inkscape:connector-curvature="0"
   3.597 +         id="path12791"
   3.598 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.599 +         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"
   3.600 +         transform="scale(-0.6,-0.6)" />
   3.601 +    </marker>
   3.602 +    <marker
   3.603 +       inkscape:stockid="Arrow2Mend"
   3.604 +       orient="auto"
   3.605 +       refY="0"
   3.606 +       refX="0"
   3.607 +       id="marker12793"
   3.608 +       style="overflow:visible">
   3.609 +      <path
   3.610 +         inkscape:connector-curvature="0"
   3.611 +         id="path12795"
   3.612 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.613 +         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"
   3.614 +         transform="scale(-0.6,-0.6)" />
   3.615 +    </marker>
   3.616 +    <marker
   3.617 +       inkscape:stockid="Arrow2Mend"
   3.618 +       orient="auto"
   3.619 +       refY="0"
   3.620 +       refX="0"
   3.621 +       id="marker12797"
   3.622 +       style="overflow:visible">
   3.623 +      <path
   3.624 +         inkscape:connector-curvature="0"
   3.625 +         id="path12799"
   3.626 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.627 +         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"
   3.628 +         transform="scale(-0.6,-0.6)" />
   3.629 +    </marker>
   3.630 +    <marker
   3.631 +       inkscape:stockid="Arrow2Mend"
   3.632 +       orient="auto"
   3.633 +       refY="0"
   3.634 +       refX="0"
   3.635 +       id="marker12801"
   3.636 +       style="overflow:visible">
   3.637 +      <path
   3.638 +         inkscape:connector-curvature="0"
   3.639 +         id="path12803"
   3.640 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.641 +         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"
   3.642 +         transform="scale(-0.6,-0.6)" />
   3.643 +    </marker>
   3.644 +    <marker
   3.645 +       inkscape:stockid="Arrow2Mend"
   3.646 +       orient="auto"
   3.647 +       refY="0"
   3.648 +       refX="0"
   3.649 +       id="marker12805"
   3.650 +       style="overflow:visible">
   3.651 +      <path
   3.652 +         inkscape:connector-curvature="0"
   3.653 +         id="path12807"
   3.654 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.655 +         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"
   3.656 +         transform="scale(-0.6,-0.6)" />
   3.657 +    </marker>
   3.658 +    <marker
   3.659 +       inkscape:stockid="Arrow2Mend"
   3.660 +       orient="auto"
   3.661 +       refY="0"
   3.662 +       refX="0"
   3.663 +       id="marker12809"
   3.664 +       style="overflow:visible">
   3.665 +      <path
   3.666 +         inkscape:connector-curvature="0"
   3.667 +         id="path12811"
   3.668 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.669 +         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"
   3.670 +         transform="scale(-0.6,-0.6)" />
   3.671 +    </marker>
   3.672 +    <marker
   3.673 +       inkscape:stockid="Arrow2Mend"
   3.674 +       orient="auto"
   3.675 +       refY="0"
   3.676 +       refX="0"
   3.677 +       id="marker12813"
   3.678 +       style="overflow:visible">
   3.679 +      <path
   3.680 +         inkscape:connector-curvature="0"
   3.681 +         id="path12815"
   3.682 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.683 +         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"
   3.684 +         transform="scale(-0.6,-0.6)" />
   3.685 +    </marker>
   3.686 +    <marker
   3.687 +       inkscape:stockid="Arrow2Mend"
   3.688 +       orient="auto"
   3.689 +       refY="0"
   3.690 +       refX="0"
   3.691 +       id="marker12817"
   3.692 +       style="overflow:visible">
   3.693 +      <path
   3.694 +         inkscape:connector-curvature="0"
   3.695 +         id="path12819"
   3.696 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.697 +         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"
   3.698 +         transform="scale(-0.6,-0.6)" />
   3.699 +    </marker>
   3.700 +    <marker
   3.701 +       inkscape:stockid="Arrow2Mend"
   3.702 +       orient="auto"
   3.703 +       refY="0"
   3.704 +       refX="0"
   3.705 +       id="marker12821"
   3.706 +       style="overflow:visible">
   3.707 +      <path
   3.708 +         inkscape:connector-curvature="0"
   3.709 +         id="path12823"
   3.710 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.711 +         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"
   3.712 +         transform="scale(-0.6,-0.6)" />
   3.713 +    </marker>
   3.714 +    <marker
   3.715 +       inkscape:stockid="Arrow2Mend"
   3.716 +       orient="auto"
   3.717 +       refY="0"
   3.718 +       refX="0"
   3.719 +       id="marker12825"
   3.720 +       style="overflow:visible">
   3.721 +      <path
   3.722 +         inkscape:connector-curvature="0"
   3.723 +         id="path12827"
   3.724 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.725 +         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"
   3.726 +         transform="scale(-0.6,-0.6)" />
   3.727 +    </marker>
   3.728 +    <marker
   3.729 +       inkscape:stockid="Arrow2Mend"
   3.730 +       orient="auto"
   3.731 +       refY="0"
   3.732 +       refX="0"
   3.733 +       id="marker12829"
   3.734 +       style="overflow:visible">
   3.735 +      <path
   3.736 +         inkscape:connector-curvature="0"
   3.737 +         id="path12831"
   3.738 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.739 +         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"
   3.740 +         transform="scale(-0.6,-0.6)" />
   3.741 +    </marker>
   3.742 +    <marker
   3.743 +       inkscape:stockid="Arrow2Mend"
   3.744 +       orient="auto"
   3.745 +       refY="0"
   3.746 +       refX="0"
   3.747 +       id="marker12833"
   3.748 +       style="overflow:visible">
   3.749 +      <path
   3.750 +         inkscape:connector-curvature="0"
   3.751 +         id="path12835"
   3.752 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.753 +         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"
   3.754 +         transform="scale(-0.6,-0.6)" />
   3.755 +    </marker>
   3.756 +    <marker
   3.757 +       inkscape:stockid="Arrow2Mend"
   3.758 +       orient="auto"
   3.759 +       refY="0"
   3.760 +       refX="0"
   3.761 +       id="marker12837"
   3.762 +       style="overflow:visible">
   3.763 +      <path
   3.764 +         inkscape:connector-curvature="0"
   3.765 +         id="path12839"
   3.766 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.767 +         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"
   3.768 +         transform="scale(-0.6,-0.6)" />
   3.769 +    </marker>
   3.770 +    <marker
   3.771 +       inkscape:stockid="Arrow2Mend"
   3.772 +       orient="auto"
   3.773 +       refY="0"
   3.774 +       refX="0"
   3.775 +       id="marker12841"
   3.776 +       style="overflow:visible">
   3.777 +      <path
   3.778 +         inkscape:connector-curvature="0"
   3.779 +         id="path12843"
   3.780 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.781 +         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"
   3.782 +         transform="scale(-0.6,-0.6)" />
   3.783 +    </marker>
   3.784 +    <marker
   3.785 +       inkscape:stockid="Arrow2Mend"
   3.786 +       orient="auto"
   3.787 +       refY="0"
   3.788 +       refX="0"
   3.789 +       id="marker12845"
   3.790 +       style="overflow:visible">
   3.791 +      <path
   3.792 +         inkscape:connector-curvature="0"
   3.793 +         id="path12847"
   3.794 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.795 +         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"
   3.796 +         transform="scale(-0.6,-0.6)" />
   3.797 +    </marker>
   3.798 +    <marker
   3.799 +       inkscape:stockid="Arrow2Mend"
   3.800 +       orient="auto"
   3.801 +       refY="0"
   3.802 +       refX="0"
   3.803 +       id="marker12849"
   3.804 +       style="overflow:visible">
   3.805 +      <path
   3.806 +         inkscape:connector-curvature="0"
   3.807 +         id="path12851"
   3.808 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.809 +         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"
   3.810 +         transform="scale(-0.6,-0.6)" />
   3.811 +    </marker>
   3.812 +    <marker
   3.813 +       inkscape:stockid="Arrow2Mend"
   3.814 +       orient="auto"
   3.815 +       refY="0"
   3.816 +       refX="0"
   3.817 +       id="marker12853"
   3.818 +       style="overflow:visible">
   3.819 +      <path
   3.820 +         inkscape:connector-curvature="0"
   3.821 +         id="path12855"
   3.822 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.823 +         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"
   3.824 +         transform="scale(-0.6,-0.6)" />
   3.825 +    </marker>
   3.826 +    <marker
   3.827 +       inkscape:stockid="Arrow2Mend"
   3.828 +       orient="auto"
   3.829 +       refY="0"
   3.830 +       refX="0"
   3.831 +       id="marker12857"
   3.832 +       style="overflow:visible">
   3.833 +      <path
   3.834 +         inkscape:connector-curvature="0"
   3.835 +         id="path12859"
   3.836 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.837 +         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"
   3.838 +         transform="scale(-0.6,-0.6)" />
   3.839 +    </marker>
   3.840 +    <marker
   3.841 +       inkscape:stockid="Arrow2Mend"
   3.842 +       orient="auto"
   3.843 +       refY="0"
   3.844 +       refX="0"
   3.845 +       id="marker12861"
   3.846 +       style="overflow:visible">
   3.847 +      <path
   3.848 +         inkscape:connector-curvature="0"
   3.849 +         id="path12863"
   3.850 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
   3.851 +         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"
   3.852 +         transform="scale(-0.6,-0.6)" />
   3.853 +    </marker>
   3.854 +  </defs>
   3.855 +  <sodipodi:namedview
   3.856 +     id="base"
   3.857 +     pagecolor="#ffffff"
   3.858 +     bordercolor="#666666"
   3.859 +     borderopacity="1.0"
   3.860 +     gridtolerance="10000"
   3.861 +     guidetolerance="10"
   3.862 +     objecttolerance="10"
   3.863 +     inkscape:pageopacity="0.0"
   3.864 +     inkscape:pageshadow="2"
   3.865 +     inkscape:zoom="1.3528978"
   3.866 +     inkscape:cx="392.18114"
   3.867 +     inkscape:cy="878.13685"
   3.868 +     inkscape:document-units="px"
   3.869 +     inkscape:current-layer="layer1"
   3.870 +     showgrid="false"
   3.871 +     inkscape:window-width="1600"
   3.872 +     inkscape:window-height="848"
   3.873 +     inkscape:window-x="-8"
   3.874 +     inkscape:window-y="-8"
   3.875 +     inkscape:window-maximized="1" />
   3.876 +  <metadata
   3.877 +     id="metadata7">
   3.878 +    <rdf:RDF>
   3.879 +      <cc:Work
   3.880 +         rdf:about="">
   3.881 +        <dc:format>image/svg+xml</dc:format>
   3.882 +        <dc:type
   3.883 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
   3.884 +        <dc:title></dc:title>
   3.885 +      </cc:Work>
   3.886 +    </rdf:RDF>
   3.887 +  </metadata>
   3.888 +  <g
   3.889 +     inkscape:label="Layer 1"
   3.890 +     inkscape:groupmode="layer"
   3.891 +     id="layer1">
   3.892 +    <text
   3.893 +       xml:space="preserve"
   3.894 +       style="font-size:14.09755802px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   3.895 +       x="76.152191"
   3.896 +       y="376.30783"
   3.897 +       id="text3191"
   3.898 +       sodipodi:linespacing="100%"
   3.899 +       transform="scale(0.7715821,1.2960384)"><tspan
   3.900 +         id="tspan3195"
   3.901 +         sodipodi:role="line"
   3.902 +         x="76.152191"
   3.903 +         y="376.30783"
   3.904 +         style="font-size:22.05818939px;text-align:center;text-anchor:middle" /></text>
   3.905 +    <g
   3.906 +       id="g6476"
   3.907 +       transform="matrix(0,1,-1,0,941.99308,-82.4247)">
   3.908 +      <text
   3.909 +         xml:space="preserve"
   3.910 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   3.911 +         x="-680.24878"
   3.912 +         y="216.03394"
   3.913 +         id="text6478"
   3.914 +         sodipodi:linespacing="100%"
   3.915 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"><tspan
   3.916 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
   3.917 +           sodipodi:role="line"
   3.918 +           x="-680.24878"
   3.919 +           y="216.03394"
   3.920 +           id="tspan6480">Communication</tspan><tspan
   3.921 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
   3.922 +           sodipodi:role="line"
   3.923 +           x="-680.24878"
   3.924 +           y="227.8649"
   3.925 +           id="tspan6482">Processor</tspan></text>
   3.926 +      <rect
   3.927 +         y="525.1496"
   3.928 +         x="248.55019"
   3.929 +         height="74.865425"
   3.930 +         width="29.62429"
   3.931 +         id="rect6484"
   3.932 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   3.933 +    </g>
   3.934 +    <path
   3.935 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#marker12861)"
   3.936 +       d="m 315.07626,181.34717 23.75634,0"
   3.937 +       id="path6486"
   3.938 +       inkscape:connector-curvature="0"
   3.939 +       sodipodi:nodetypes="cc" />
   3.940 +    <g
   3.941 +       transform="matrix(0,1,-1,0,841.99308,-82.4247)"
   3.942 +       id="g6488">
   3.943 +      <text
   3.944 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"
   3.945 +         sodipodi:linespacing="100%"
   3.946 +         id="text6490"
   3.947 +         y="216.03394"
   3.948 +         x="-680.24878"
   3.949 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   3.950 +         xml:space="preserve"><tspan
   3.951 +           id="tspan6492"
   3.952 +           y="216.03394"
   3.953 +           x="-680.24878"
   3.954 +           sodipodi:role="line"
   3.955 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Communication</tspan><tspan
   3.956 +           id="tspan6494"
   3.957 +           y="227.8649"
   3.958 +           x="-680.24878"
   3.959 +           sodipodi:role="line"
   3.960 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Firm-ware</tspan></text>
   3.961 +      <rect
   3.962 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   3.963 +         id="rect6496"
   3.964 +         width="29.62429"
   3.965 +         height="74.865425"
   3.966 +         x="248.55019"
   3.967 +         y="525.1496" />
   3.968 +    </g>
   3.969 +    <path
   3.970 +       sodipodi:nodetypes="cccccccc"
   3.971 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
   3.972 +       d="m 285.20591,218.57308 c 0,-14.48216 -0.23653,-14.48216 -0.23653,-14.48216 l 5.9134,0 -11.82681,-7.9242 -11.1172,7.9242 5.67687,0 0.23653,14.48216 z"
   3.973 +       id="path6498"
   3.974 +       inkscape:connector-curvature="0" />
   3.975 +    <text
   3.976 +       transform="scale(0.82746283,1.2085135)"
   3.977 +       sodipodi:linespacing="100%"
   3.978 +       id="text6500"
   3.979 +       y="195.73355"
   3.980 +       x="337.66776"
   3.981 +       style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   3.982 +       xml:space="preserve"><tspan
   3.983 +         y="195.73355"
   3.984 +         x="337.66776"
   3.985 +         sodipodi:role="line"
   3.986 +         style="font-size:16px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
   3.987 +         id="tspan6502">OS loads</tspan><tspan
   3.988 +         id="tspan6504"
   3.989 +         y="211.73355"
   3.990 +         x="337.66776"
   3.991 +         sodipodi:role="line"
   3.992 +         style="font-size:16px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1">firm-ware</tspan></text>
   3.993 +    <path
   3.994 +       sodipodi:nodetypes="cc"
   3.995 +       inkscape:connector-curvature="0"
   3.996 +       id="path6506"
   3.997 +       d="m 419.40414,181.34717 39.68916,0"
   3.998 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)" />
   3.999 +    <g
  3.1000 +       transform="matrix(0,1,-1,0,1061.9931,-82.4247)"
  3.1001 +       id="g6508">
  3.1002 +      <text
  3.1003 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"
  3.1004 +         sodipodi:linespacing="100%"
  3.1005 +         id="text6510"
  3.1006 +         y="216.03394"
  3.1007 +         x="-680.24878"
  3.1008 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
  3.1009 +         xml:space="preserve"><tspan
  3.1010 +           id="tspan6512"
  3.1011 +           y="216.03394"
  3.1012 +           x="-680.24878"
  3.1013 +           sodipodi:role="line"
  3.1014 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Network</tspan></text>
  3.1015 +      <rect
  3.1016 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  3.1017 +         id="rect6514"
  3.1018 +         width="29.62429"
  3.1019 +         height="74.865425"
  3.1020 +         x="248.55019"
  3.1021 +         y="525.1496" />
  3.1022 +    </g>
  3.1023 +    <g
  3.1024 +       id="g6516"
  3.1025 +       transform="matrix(0,1,-1,0,941.99308,-22.4247)">
  3.1026 +      <text
  3.1027 +         xml:space="preserve"
  3.1028 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
  3.1029 +         x="-680.24878"
  3.1030 +         y="216.03394"
  3.1031 +         id="text6518"
  3.1032 +         sodipodi:linespacing="100%"
  3.1033 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"><tspan
  3.1034 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
  3.1035 +           sodipodi:role="line"
  3.1036 +           x="-680.24878"
  3.1037 +           y="216.03394"
  3.1038 +           id="tspan6520">Local Mem</tspan></text>
  3.1039 +      <rect
  3.1040 +         y="525.1496"
  3.1041 +         x="248.55019"
  3.1042 +         height="74.865425"
  3.1043 +         width="29.62429"
  3.1044 +         id="rect6522"
  3.1045 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  3.1046 +    </g>
  3.1047 +    <g
  3.1048 +       transform="matrix(0,1,-1,0,941.99308,37.5753)"
  3.1049 +       id="g6526">
  3.1050 +      <text
  3.1051 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"
  3.1052 +         sodipodi:linespacing="100%"
  3.1053 +         id="text6528"
  3.1054 +         y="216.03394"
  3.1055 +         x="-680.24878"
  3.1056 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
  3.1057 +         xml:space="preserve"><tspan
  3.1058 +           id="tspan6530"
  3.1059 +           y="216.03394"
  3.1060 +           x="-680.24878"
  3.1061 +           sodipodi:role="line"
  3.1062 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Work</tspan><tspan
  3.1063 +           id="tspan6532"
  3.1064 +           y="227.8649"
  3.1065 +           x="-680.24878"
  3.1066 +           sodipodi:role="line"
  3.1067 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Processor</tspan></text>
  3.1068 +      <rect
  3.1069 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  3.1070 +         id="rect6534"
  3.1071 +         width="29.62429"
  3.1072 +         height="74.865425"
  3.1073 +         x="248.55019"
  3.1074 +         y="525.1496" />
  3.1075 +    </g>
  3.1076 +    <path
  3.1077 +       sodipodi:nodetypes="cc"
  3.1078 +       inkscape:connector-curvature="0"
  3.1079 +       id="path6536"
  3.1080 +       d="m 379.39155,256.38498 0,28.23719"
  3.1081 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)" />
  3.1082 +    <path
  3.1083 +       sodipodi:nodetypes="cc"
  3.1084 +       inkscape:connector-curvature="0"
  3.1085 +       id="path6538"
  3.1086 +       d="m 338.3733,188.63693 c -44.6707,51.33036 1.44964,107.28157 1.44964,107.28157"
  3.1087 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)" />
  3.1088 +    <path
  3.1089 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)"
  3.1090 +       d="m 379.39155,196.38498 0,28.23719"
  3.1091 +       id="path6540"
  3.1092 +       inkscape:connector-curvature="0"
  3.1093 +       sodipodi:nodetypes="cc" />
  3.1094 +    <g
  3.1095 +       id="g6542"
  3.1096 +       transform="matrix(0,1,-1,0,841.99308,37.5753)">
  3.1097 +      <text
  3.1098 +         xml:space="preserve"
  3.1099 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
  3.1100 +         x="-680.24878"
  3.1101 +         y="216.03394"
  3.1102 +         id="text6544"
  3.1103 +         sodipodi:linespacing="100%"
  3.1104 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"><tspan
  3.1105 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
  3.1106 +           sodipodi:role="line"
  3.1107 +           x="-680.24878"
  3.1108 +           y="216.03394"
  3.1109 +           id="tspan6546">runtime</tspan><tspan
  3.1110 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
  3.1111 +           sodipodi:role="line"
  3.1112 +           x="-680.24878"
  3.1113 +           y="227.8649"
  3.1114 +           id="tspan6548">Firm-ware</tspan></text>
  3.1115 +      <rect
  3.1116 +         y="525.1496"
  3.1117 +         x="248.55019"
  3.1118 +         height="74.865425"
  3.1119 +         width="29.62429"
  3.1120 +         id="rect6550"
  3.1121 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
  3.1122 +    </g>
  3.1123 +    <path
  3.1124 +       inkscape:connector-curvature="0"
  3.1125 +       id="path6552"
  3.1126 +       d="m 285.20591,262.16672 c 0,14.48216 -0.23653,14.48216 -0.23653,14.48216 l 5.9134,0 -11.82681,7.9242 -11.1172,-7.9242 5.67687,0 0.23653,-14.48216 z"
  3.1127 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
  3.1128 +       sodipodi:nodetypes="cccccccc" />
  3.1129 +    <path
  3.1130 +       sodipodi:nodetypes="cc"
  3.1131 +       inkscape:connector-curvature="0"
  3.1132 +       id="path6554"
  3.1133 +       d="m 316.55457,301.34717 22.27803,0"
  3.1134 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#marker12861)" />
  3.1135 +  </g>
  3.1136 +</svg>
     4.1 --- a/0__Papers/Future_Architecture/figures/Speculation_HW_support.eps	Sun Apr 08 13:11:55 2012 -0700
     4.2 +++ b/0__Papers/Future_Architecture/figures/Speculation_HW_support.eps	Tue Apr 10 07:23:24 2012 -0700
     4.3 @@ -1,8 +1,8 @@
     4.4  %!PS-Adobe-3.0 EPSF-3.0
     4.5  %%Creator: cairo 1.8.8 (http://cairographics.org)
     4.6 -%%CreationDate: Sun Apr 08 07:50:03 2012
     4.7 +%%CreationDate: Mon Apr 09 10:07:39 2012
     4.8  %%Pages: 1
     4.9 -%%BoundingBox: 0 0 253 124
    4.10 +%%BoundingBox: 0 0 157 122
    4.11  %%DocumentData: Clean7Bit
    4.12  %%LanguageLevel: 2
    4.13  %%EndComments
    4.14 @@ -84,21 +84,15 @@
    4.15  Encoding 11 /uni0072 put
    4.16  Encoding 12 /uni0065 put
    4.17  Encoding 13 /uni0073 put
    4.18 -Encoding 14 /uni0046 put
    4.19 -Encoding 15 /uni002D put
    4.20 -Encoding 16 /uni0077 put
    4.21 -Encoding 17 /uni004F put
    4.22 -Encoding 18 /uni0053 put
    4.23 -Encoding 19 /uni0020 put
    4.24 -Encoding 20 /uni006C put
    4.25 -Encoding 21 /uni0064 put
    4.26 -Encoding 22 /uni0066 put
    4.27 -Encoding 23 /uni004E put
    4.28 -Encoding 24 /uni006B put
    4.29 -Encoding 25 /uni004C put
    4.30 -Encoding 26 /uni004D put
    4.31 -Encoding 27 /uni0057 put
    4.32 -/CharStrings 28 dict dup begin
    4.33 +Encoding 14 /uni004E put
    4.34 +Encoding 15 /uni0077 put
    4.35 +Encoding 16 /uni006B put
    4.36 +Encoding 17 /uni0067 put
    4.37 +Encoding 18 /uni0020 put
    4.38 +Encoding 19 /uni004D put
    4.39 +Encoding 20 /uni004C put
    4.40 +Encoding 21 /uni006C put
    4.41 +/CharStrings 22 dict dup begin
    4.42  /.notdef 0 def
    4.43  /uni0043 1 def
    4.44  /uni006F 2 def
    4.45 @@ -113,27 +107,21 @@
    4.46  /uni0072 11 def
    4.47  /uni0065 12 def
    4.48  /uni0073 13 def
    4.49 -/uni0046 14 def
    4.50 -/uni002D 15 def
    4.51 -/uni0077 16 def
    4.52 -/uni004F 17 def
    4.53 -/uni0053 18 def
    4.54 -/uni0020 19 def
    4.55 -/uni006C 20 def
    4.56 -/uni0064 21 def
    4.57 -/uni0066 22 def
    4.58 -/uni004E 23 def
    4.59 -/uni006B 24 def
    4.60 -/uni004C 25 def
    4.61 -/uni004D 26 def
    4.62 -/uni0057 27 def
    4.63 +/uni004E 14 def
    4.64 +/uni0077 15 def
    4.65 +/uni006B 16 def
    4.66 +/uni0067 17 def
    4.67 +/uni0020 18 def
    4.68 +/uni004D 19 def
    4.69 +/uni004C 20 def
    4.70 +/uni006C 21 def
    4.71  end readonly def
    4.72  /sfnts [
    4.73 -<00010000000a008000030020636d617000f2f182000025e400000076637674207d0742a80000
    4.74 -265c000002706670676d49d7df92000028cc0000060a676c796693c01ea2000000ac00002538
    4.75 -68656164d5ceeae000002ed800000036686865610f7e06b700002f1000000024686d74787572
    4.76 -0a5400002f34000000706c6f63618c02837a00002fa40000003a6d617870038102c900002fe0
    4.77 -0000002070726570292ded1600003000000004ad00020080015e0380045e0003000700264016
    4.78 +<00010000000a008000030020636d617000a1f12800001f3c0000006a637674207d0742a80000
    4.79 +1fa8000002706670676d49d7df92000022180000060a676c796607ad40b4000000ac00001e90
    4.80 +68656164d5ceeae00000282400000036686865610f7e06b10000285c00000024686d74785adb
    4.81 +083600002880000000586c6f63615d685502000028d80000002e6d617870037b02c900002908
    4.82 +0000002070726570292ded1600002928000004ad00020080015e0380045e0003000700264016
    4.83  059c039d049c070017003700030000079c019d049c00002ffdfded012f5f5dfdfded31301311
    4.84  211125211121800300fd800200fe00015e0300fd0080020000010050ffe7047905d20015015f
    4.85  40b2e715010007080103570701027e10017a0b011506010388009800a800b800c800d800e800
    4.86 @@ -268,232 +256,186 @@
    4.87  5d5f5d5d0110d62b5f5d5dedc610d42b2b5dedc45d5f5d5d5f5d3130005d5d012b3737163332
    4.88  3534272e033534363332170726232206151417171616151406232241439f61b0aa835b4321c0
    4.89  9b75b2367172445d75887d72cab3a940b468946a4c3c3e4f593384944ab05a403167353e3992
    4.90 -6e90a3000000000100960000041f05b900090099401317088708020208050044054407062706
    4.91 -020006b8ffecb41313024b06b8fff4b41010024b06b8fffa400b0f0f024b06040b0b024b06b8
    4.92 -fffeb40d0d024b06b8ffeeb41010064b06b8fff4b40e0e064b06b8fff8400b0f0f064b06070c
    4.93 -0c064b06b8fff840120d0d064b060a014804040600480706080702003f3f10ed12392fed0110
    4.94 -d62b2b2b2b2b2b2b2b2b2b5f5deded10d4c45d313001112115211123112115015e0203fdfdc8
    4.95 -03890505fe69aafd3c05b9b40001009f01fa024b02a9000300254017280368037803a8030403
    4.96 -07002700370003000004014800002fed0110d65f5dcd5d3130133521159f01ac01faafaf0000
    4.97 -0001000fffec05e50432000c01a5b9000affe8b41010064b07b8ffe8b31010064bb102024354
    4.98 -58b9000affd4b40d0d024b07b8ffd4401d0d0d024b070a02030504010b040b0b06080605060c
    4.99 -0b0a0506070a0702b8fff8b70b0b024b02020e0d1112392f2bcdcd10ddcd10ddcd003f3f3f3f
   4.100 -3f1112173931302b2b1bb10602435458b609080c0c064b08b8fff840200c0c064b070a020305
   4.101 -04010b040b0b06080605060c0b0a0506070a0702020e0d1112392fcdcd10ddcd10ddcd003f3f
   4.102 -3f3f3f111217393130012b2b1b409c0700010804010258030103470e01080e580e780ea80ed8
   4.103 -0e0500064f050b4f2a00012e0501210c01030c7e00057e04070703040a0a0175000375040700
   4.104 -1700020804180402007f09047f0802020975170827084708c708f7080508b70201b80a01080a
   4.105 -01b807010807017802010602160202170a270a370a570a770a05170727073707570777070500
   4.106 -0271080a7101077104010b040b0c0608060506003f3f3f3f3f10ed10ed10ed5f5d5d5d5d5d71
   4.107 -5d7171012f5ded39192f1810ed10ed5d5d10ed10ed39192f1112392f1810ed10fd5f5d5d5ded
   4.108 -10ed5f5d5d5f5d5f5d5d31305959002b2b05230101230133130133011333046532fec6fec732
   4.109 -fe81cbe5011d320126f6bb1402d9fd270446fd4102bffd4102bf000000020050ffe7051405d3
   4.110 -000b0016010d401358110102550d01036810010263050103124506b8fff4b40f0f024b06b8ff
   4.111 -ccb40b0b024b06b8ffe0b40c0c024b06b8fff6b40d0d024b06b8fff0b40e0e064b06b8fff4b4
   4.112 -0c0c064b06b8fff440090d0d064b06180c4500b8fff840440a0a064b07001700270087009700
   4.113 -b7000600080f0f024b00160b0b024b00100c0c024b00120d0d024b000c0e0e064b00100d0d06
   4.114 -4b00172818381802000f100f0f064b14b8fff0b60f0f064b00020fb8fff240140f0f064b0f49
   4.115 -09140e0f0f064b14490309090303003f3f10ed2b10ed2b43545840121a142a143a147a140415
   4.116 -0f250f350f750f045d5d592b2b015f5d10de2b2b2b2b2b2b5d2bed10de2b2b2b2b2b2b2bed5f
   4.117 -5d31305f5d5f5d5f5d131000212000111000212000131412333212111021220250013f010f01
   4.118 -310145febafed0feebfec7d2c7b5cdd7fe5cbac202e9013e01acfe76fea0fe97fe6701b00152
   4.119 -fcfeae013601180236fed00000010050ffe7038805d2002601ccb10202435458401907221a0e
   4.120 -180b0b024b0e120c0c024b0e22070e1a0425131714b8ffc040120c0c024b1411000401251749
   4.121 -110304492509003fed3fed10cd123910cd2b1239121739012f2b2bcd2fcd31301bb106024354
   4.122 -584086082401071001002520452065207520042a0b01034828a8280268130113074507223722
   4.123 -672203221a001a45380e01870e01000e2777040102351e651e751e03351f451f651f751f040a
   4.124 -0c3a0c4a0c6a0c7a0c0533220103380e010a0b1f1e0425481458146814781404141137014701
   4.125 -570167017701a701b70107000125174911044925091103003f3fed10ed10cd5f5d10cd5d1217
   4.126 -395d5f5d5d5d5d5f5d0110d65f5d5dedc410d45dedc45d5d3130005f5d5d5f5d5d1b40860824
   4.127 -01071001002520452065207520042a0b01034828a8280268130113074507223722672203221a
   4.128 -001a45380e01870e01000e2777040102351e651e751e03351f451f651f751f040a0c3a0c4a0c
   4.129 -6a0c7a0c0533220103380e010a0b1f1e04254814581468147814041411370147015701670177
   4.130 -01a701b70107000125174911044925091103003f3fed10ed10cd5f5d10cd5d1217395d5f5d5d
   4.131 -5d5d5f5d0110d65f5d5dedc410d45dedc45d5d3130005f5d5d5f5d5d59593737161633323635
   4.132 -34262727262635343633321707262623220615141616171716161514042322544938a742758e
   4.133 -4f9f769677e8b6f35f3b28a44666752a4b74789679fef7dec343b8293780634a7f4b3746c087
   4.134 -a4d84fae1d36745b385c3e383947c598a5e600010096ffec020705e6000800c7b9000affc0b4
   4.135 -1313024b0ab8ffc0b41010024b0ab8ffc0402a0c0c024b070a170a270a370a470a570a670a77
   4.136 -0a080706170627060306024d070117012701d701040001b8ffecb41313024b01b8ffeeb41010
   4.137 -024b01b8fff240110f0f024b01040b0b024b01040c0c024b01b8ffcc40170e0e064b01180f0f
   4.138 -064b01130c0c064b01160d0d064b01b8ffec401b0b0b064b0109b705c70502010a081a082a08
   4.139 -3a08040652070b0100003f3fed5d5f5d0110d62b2b2b2b2b2b2b2b2b2b5f5dfdc65d5d313001
   4.140 -2b2b2b13113311141633152096be6350fe8f012f04b7fb695663aa0000000002004bffed03ec
   4.141 -05e6000e0019011e40161b400b0b024b004d0d190c4d470d010d201313024b0db8ffeab41010
   4.142 -024b0db8fff6400b0f0f024b0d080b0b024b0db8fff6b40c0c024b0db8ffe4400b0d0d024b0d
   4.143 -0c0f0f064b0db8ffe2b40c0c064b0db8fff240660d0d064b0d140c0c0c064b144e8706013806
   4.144 -4806020006080f0f024b061a0b0b024b061a0c0c024b06120d0d024b060c0e0e064b06100c0c
   4.145 -064b060c0d0d064b061a251635164516032a113a114a110303580368030216180b0c024b1610
   4.146 -0f0f024b16520311b8ffe8400e0b0c024b115209480901020e0a03b8fff0b60f0f024b030b09
   4.147 -b8ffeeb70d0d024b09070d00003f3f2b3f2b3f5f5d10ed2b10ed2b2b5d5f5d5d0110d62b2b2b
   4.148 -2b2b2b2b5f5d5dfd2bd42b2b2b2b2b2b2b2b2b5dfd3c10ed3130012b25350623220235340033
   4.149 -32171133110326232206151021323637032e63bdc9fa0120c7a656bebe487d99bd01602d7e10
   4.150 -014f630120f0f101554e01f1fa1b03366ce4b0fe7d392000000000010041000002ff05e60015
   4.151 -00a4b90017ffc0b40f10024b17b8ffc0402d0b0c024b751201031538094809580903090b0e0c
   4.152 -070b054d074d0b4d480c01000c021010024b0c120f0f024b0cb8ffeeb40b0b024b0cb8ffe840
   4.153 -110c0c024b0c200d0d024b0c160e0e064b0cb8fff1401a0c0c064b0c140d0d064b0c0952080e
   4.154 -520f0252130c0a0f061300003f3f3f10ed10ed3ced012f2b2b2b2b2b2b2b2b5f5dededed103c
   4.155 -10c610c65dc63130005f5d012b2b0126232206151417331523112311233533343633321702ca
   4.156 -3a32577105dadabe9c9ccaa6535f053c1484651b1da0fc71038fa0cdea1e00010096ffec0485
   4.157 -05b9000901aeb605180b0b024b00b8fff440230b0b024b0a0105060203000206020744080602
   4.158 -024403081a1010064b080c1313024b08b8ffdeb41010024b08b8fff2b40b0b024b08b8fff040
   4.159 -0b0f0f064b080c0c0c024b08b8fff2400b0d0d024b08140e0e064b08b8fffc40140a0a064b08
   4.160 -100909064b080b0703170327030303b8ffecb41313024b03b8fff4b41010024b03b8fffa400b
   4.161 -0f0f024b03040b0b024b03b8fffeb40d0d024b03b8fff2b40e0e064b03b8fff4b40f0f064b03
   4.162 -b8fffeb40c0c064b03b8fff4400b0a0a064b03080909064b03b8fff040151010064b030a0002
   4.163 -06020104060909030807020402003f3f3f3fcd10cd435458b306010304111239395943545840
   4.164 -52b8060100950601750601021701b70102870101680101000c01015c016c017c010303670601
   4.165 -0003060123063306430653066306730606031801280138014801580178010627063706470657
   4.166 -067706b70606005f5d5d5f5d715f5d5f5d715f5d5d715f5d715f71590110c62b2b2b2b2b2b2b
   4.167 -2b2b2b2b5d10c62b2b2b2b2b2b2b2b2b2b10ed435458b005395910ed435458b0003959435458
   4.168 -b40575030075ed10ed593130005f5d012b2b050111231133011133110449fd0bbe5002e1be14
   4.169 -042ffbe505b9fc0b03f5fa33000100870000040905e6000b00c0402d270a370a0201450a650a
   4.170 -750a0302010a0309004f0b084f09270b370b02030b03064d034d070417042704030004b8fff4
   4.171 -b41313024b04b8fff4b41010024b04b8fffa40170f0f024b04080b0b024b04040d0d024b0408
   4.172 -0c0c024b04b8fffab40e0e064b04b8fff4400b0f0f064b04070c0c064b04b8fff840170d0d06
   4.173 -4b040c074f020a01020304090500040a000a0906003f3f3f3f1112173910ed0110d62b2b2b2b
   4.174 -2b2b2b2b2b2b5f5deded10d45f5dd6ed10ed111239395f5d5f5d313021010711231133110133
   4.175 -0101033bfeb0a6bebe019adefea901a30218abfe9305e6fc5701f2fe69fd6800000100960000
   4.176 -03f405b90005009140160804180402c804d804e804f804040003440004470700b8ffeab41010
   4.177 -064b00b8ffecb41313024b00b8fff4b41010024b00b8fffa400b0f0f024b00040b0b024b00b8
   4.178 -fffeb40d0d024b00b8fff4b40e0e064b00b8fff4400b0f0f064b00030c0c064b00b8fff4400d
   4.179 -0d0d064b004706034800080102003f3fed0110e62b2b2b2b2b2b2b2b2b2b10e610ed5f5d7131
   4.180 -3033113311211596c8029605b9fafbb4000000010014ffec05a305b9000c01f0401401400e0e
   4.181 -064b04400e0e064b0e401010024b0002435558401d0c0e180e280e380e03080e180e380e480e
   4.182 -580ea80eb80e070606080702003f3f012f5d7110d631301b40ff4a030145020143087308024c
   4.183 -0a7c0a0203280301280a0127080102970101980401870701880b0101180e280e380e03080e18
   4.184 -0e380e480e580ea80eb80e070000460c0546380c480c023706470602022806480602270c470c
   4.185 -020672070c720b01010a0b04040875070a75680b016707010b730207730309090275c7030127
   4.186 -0377038703a703d703e703060003770901016709010809180902680988099809a809b809c809
   4.187 -d809e809f80909580101580401004a0201034701014704010107011701020701270187019701
   4.188 -a701b701c701d701e701f7010a07041704020704270487049704a704b704c704d704e704f704
   4.189 -0a070117010217014701570167017740490187019701a701b701c701d701e701f7010d070417
   4.190 -0402070417042704470457046704770487049704a704b704c704d704e704f7040f0009710201
   4.191 -7104710702090c0806080b020702003f3f3f3f3f10ede410ed5f5d715d715d715d715f5d5d5f
   4.192 -5d5f5d5d5d715d5f5d012f5f5d71ed39192f1810ed10fd5d5ded10ed39192f1112392f1810ed
   4.193 -10fd5d5d5f5d5ded10ed5f5d715f5d5d5d5d5f5d5d5d5f5d5d5d5d3130592b002b2b21030123
   4.194 -01032301330101330104e5aefec032feb7aabe01125b015d01425a012903adfc3f03c1fc5305
   4.195 -b9fbd3042dfa47000001000dffec06c405b9000c0165b10202435458401c070a020305040109
   4.196 -04090b02080205020c0b0a0506070a0702020e0d1112392fcdcd10ddcd10ddcd003f3f3f3f3f
   4.197 -1112173931301bb10602435458401c070a02030504010904090b02080205020c0b0a0506070a
   4.198 -0702020e0d1112392fcdcd10ddcd10ddcd003f3f3f3f3f1112173931301b4036470201004803
   4.199 -0147080102280e480e780e880ec80e05000a000103480001780401770001480801020a0a0001
   4.200 -070703040646050b460cb8fff840620a0a064b080501070c370c470c770c0438054805780503
   4.201 -0c78000578040c78017500037504470401480001008209048208020209754808010708270837
   4.202 -085708a708050008680278020201490201000a8e00028f08078e04000904090c020802050200
   4.203 -3f3f3f3f3f10ed10ed10ed5f5d5f5d012f5f5d5ded39192f1810ed10ed5d5d10ed10eded10ed
   4.204 -10fd5d5d5d2bed10ed111239192f1112392f5f5d5d5d5d5f5d5f5d31305f5d5d005f5d595905
   4.205 -23010123013301013301013304fc3ffea3feba3ffe32d00126014246013e012bd01403f2fc0e
   4.206 -05cdfc0103fffc0303fd00000002000300000000001400010000000000340004002000000004
   4.207 -000400010000f01bffff0000f000ffff10000001000000000006004200000000001c00000001
   4.208 -00020003000400050006000700080009000a000b000c000d000e000f00100011001200130014
   4.209 -00150016001700180019001a001b000005e6000005b9001905b90014042f00140000ffe70000
   4.210 -ffec0000ffecfe5c000005c30000fe5400000338000005d300000253000005c8000a00000000
   4.211 +6e90a300000000010096ffec048505b9000901aeb605180b0b024b00b8fff440230b0b024b0a
   4.212 +0105060203000206020744080602024403081a1010064b080c1313024b08b8ffdeb41010024b
   4.213 +08b8fff2b40b0b024b08b8fff0400b0f0f064b080c0c0c024b08b8fff2400b0d0d024b08140e
   4.214 +0e064b08b8fffc40140a0a064b08100909064b080b0703170327030303b8ffecb41313024b03
   4.215 +b8fff4b41010024b03b8fffa400b0f0f024b03040b0b024b03b8fffeb40d0d024b03b8fff2b4
   4.216 +0e0e064b03b8fff4b40f0f064b03b8fffeb40c0c064b03b8fff4400b0a0a064b03080909064b
   4.217 +03b8fff040151010064b030a000206020104060909030807020402003f3f3f3fcd10cd435458
   4.218 +b30601030411123939594354584052b8060100950601750601021701b7010287010168010100
   4.219 +0c01015c016c017c010303670601000306012306330643065306630673060603180128013801
   4.220 +4801580178010627063706470657067706b70606005f5d5d5f5d715f5d5f5d715f5d5d715f5d
   4.221 +715f71590110c62b2b2b2b2b2b2b2b2b2b2b5d10c62b2b2b2b2b2b2b2b2b2b10ed435458b005
   4.222 +395910ed435458b0003959435458b40575030075ed10ed593130005f5d012b2b050111231133
   4.223 +011133110449fd0bbe5002e1be14042ffbe505b9fc0b03f5fa330001000fffec05e50432000c
   4.224 +01a5b9000affe8b41010064b07b8ffe8b31010064bb10202435458b9000affd4b40d0d024b07
   4.225 +b8ffd4401d0d0d024b070a02030504010b040b0b06080605060c0b0a0506070a0702b8fff8b7
   4.226 +0b0b024b02020e0d1112392f2bcdcd10ddcd10ddcd003f3f3f3f3f1112173931302b2b1bb106
   4.227 +02435458b609080c0c064b08b8fff840200c0c064b070a02030504010b040b0b06080605060c
   4.228 +0b0a0506070a0702020e0d1112392fcdcd10ddcd10ddcd003f3f3f3f3f111217393130012b2b
   4.229 +1b409c0700010804010258030103470e01080e580e780ea80ed80e0500064f050b4f2a00012e
   4.230 +0501210c01030c7e00057e04070703040a0a01750003750407001700020804180402007f0904
   4.231 +7f0802020975170827084708c708f7080508b70201b80a01080a01b807010807017802010602
   4.232 +160202170a270a370a570a770a051707270737075707770705000271080a7101077104010b04
   4.233 +0b0c0608060506003f3f3f3f3f10ed10ed10ed5f5d5d5d5d5d715d7171012f5ded39192f1810
   4.234 +ed10ed5d5d10ed10ed39192f1112392f1810ed10fd5f5d5d5ded10ed5f5d5d5f5d5f5d5d3130
   4.235 +5959002b2b05230101230133130133011333046532fec6fec732fe81cbe5011d320126f6bb14
   4.236 +02d9fd270446fd4102bffd4102bf0000000100870000040905e6000b00c0402d270a370a0201
   4.237 +450a650a750a0302010a0309004f0b084f09270b370b02030b03064d034d0704170427040300
   4.238 +04b8fff4b41313024b04b8fff4b41010024b04b8fffa40170f0f024b04080b0b024b04040d0d
   4.239 +024b04080c0c024b04b8fffab40e0e064b04b8fff4400b0f0f064b04070c0c064b04b8fff840
   4.240 +170d0d064b040c074f020a01020304090500040a000a0906003f3f3f3f1112173910ed0110d6
   4.241 +2b2b2b2b2b2b2b2b2b2b5f5deded10d45f5dd6ed10ed111239395f5d5f5d3130210107112311
   4.242 +331101330101033bfeb0a6bebe019adefea901a30218abfe9305e6fc5701f2fe69fd68000002
   4.243 +0050fe5c03c804740030003c0160402c48195819681978190400272b372b0202650175010203
   4.244 +20101c12064e282b382b482b582b682b782b882b072bb8ffeab40e0e064b2bb8fff0400f0d0d
   4.245 +064b2b193a4e1c0e1010024b1cb8fff440860c0c024b1c120d0d024b1c3e00234e0d344e1206
   4.246 +0e0e064b120c0f0f024b12120b0c024b12120d0d024b123d17010188199819a819b819048818
   4.247 +9818a818b81804280c380c02006701770102026a317a3102653775370203102037281a171f18
   4.248 +1537180f0f024b37521f40090a064b1f9708a708b70803970ba70bb70b030028530825530b01
   4.249 +b8ffc0b41114024b01b8ffc0b40b0c024b01b8ffc0b41114064b01b8ffc040090c0c064b0103
   4.250 +522e31b8ffe8400d0f0f024b3152152e0e0b061507003f3f3f10ed2b10fdc62b2b2b2b10edd4
   4.251 +fd5f5d5dd42bed2b10c6123939111239395f5d5d5f5d5f5d5d5d5d0110d62b2b2b2bedd4edc6
   4.252 +10d62b2b2bedc6d42b2b5ded111239395f5d5f5d5f5d31301337163332363534232206232235
   4.253 +3436372611343633321737170716151406070706061514333236333216151404232226012206
   4.254 +1514163332363534266067a68c8195bc20a82fe46b4fe2eaac9e595f7c7249caa49d1c5e622b
   4.255 +b62c9eb1fef7cb68e6014d637d796765727bfedb986f59428220ac3556136a0106a8e0417275
   4.256 +565f99a2dc101003251e291f978694b64a05048c6470938f74648c0000010014ffec05a305b9
   4.257 +000c01f0401401400e0e064b04400e0e064b0e401010024b0002435558401d0c0e180e280e38
   4.258 +0e03080e180e380e480e580ea80eb80e070606080702003f3f012f5d7110d631301b40ff4a03
   4.259 +0145020143087308024c0a7c0a0203280301280a0127080102970101980401870701880b0101
   4.260 +180e280e380e03080e180e380e480e580ea80eb80e070000460c0546380c480c023706470602
   4.261 +022806480602270c470c020672070c720b01010a0b04040875070a75680b016707010b730207
   4.262 +730309090275c70301270377038703a703d703e7030600037709010167090108091809026809
   4.263 +88099809a809b809c809d809e809f80909580101580401004a02010347010147040101070117
   4.264 +01020701270187019701a701b701c701d701e701f7010a07041704020704270487049704a704
   4.265 +b704c704d704e704f7040a070117010217014701570167017740490187019701a701b701c701
   4.266 +d701e701f7010d0704170402070417042704470457046704770487049704a704b704c704d704
   4.267 +e704f7040f00097102017104710702090c0806080b020702003f3f3f3f3f10ede410ed5f5d71
   4.268 +5d715d715d715f5d5d5f5d5f5d5d5d715d5f5d012f5f5d71ed39192f1810ed10fd5d5ded10ed
   4.269 +39192f1112392f1810ed10fd5d5d5f5d5ded10ed5f5d715f5d5d5d5d5f5d5d5d5f5d5d5d5d31
   4.270 +30592b002b2b2103012301032301330101330104e5aefec032feb7aabe01125b015d01425a01
   4.271 +2903adfc3f03c1fc5305b9fbd3042dfa470000010096000003f405b900050091401608041804
   4.272 +02c804d804e804f804040003440004470700b8ffeab41010064b00b8ffecb41313024b00b8ff
   4.273 +f4b41010024b00b8fffa400b0f0f024b00040b0b024b00b8fffeb40d0d024b00b8fff4b40e0e
   4.274 +064b00b8fff4400b0f0f064b00030c0c064b00b8fff4400d0d0d064b00470603480008010200
   4.275 +3f3fed0110e62b2b2b2b2b2b2b2b2b2b10e610ed5f5d71313033113311211596c8029605b9fa
   4.276 +fbb4000000010096ffec020705e6000800c7b9000affc0b41313024b0ab8ffc0b41010024b0a
   4.277 +b8ffc0402a0c0c024b070a170a270a370a470a570a670a770a080706170627060306024d0701
   4.278 +17012701d701040001b8ffecb41313024b01b8ffeeb41010024b01b8fff240110f0f024b0104
   4.279 +0b0b024b01040c0c024b01b8ffcc40170e0e064b01180f0f064b01130c0c064b01160d0d064b
   4.280 +01b8ffec401b0b0b064b0109b705c70502010a081a082a083a08040652070b0100003f3fed5d
   4.281 +5f5d0110d62b2b2b2b2b2b2b2b2b2b5f5dfdc65d5d3130012b2b2b13113311141633152096be
   4.282 +6350fe8f012f04b7fb695663aa00000000000002000300000000001400010000000000340004
   4.283 +002000000004000400010000f015ffff0000f000ffff10000001000000000006003600000000
   4.284 +00160000000100020003000400050006000700080009000a000b000c000d000e000f00100011
   4.285 +0012001300140015000005e6000005b9001905b90014042f00140000ffe70000ffec0000ffec
   4.286 +fe5c000005c30000fe5400000338000005d300000253000005c8000a00000000000000000000
   4.287  0000000000000000000000000000000000000000000000000000000000000000000000000000
   4.288 +000000000000000000000000000000000000000000000000000000000000000000c800cd00cd
   4.289 +009600b400b400000000000000be00c800c8008c00a0009b00960000000000be00c800c80000
   4.290 +00aa00aa000000000064007d0082008c009600a00064007d0082008c009b00d20064007d0082
   4.291 +008c009600a002300136011801a401d600460218012c01c2000001d600eb00eb01d1017f0154
   4.292 +011301450168012c008d02350159033f0505012c00b4006e0136015e01cc01cc04d8006e006e
   4.293 +01d600d2005f01f4012c007802d00190037f00800280006e00b4000000a5fea2003200b9008c
   4.294  0000000000000000000000000000000000000000000000000000000000000000000000000000
   4.295 -00c800cd00cd009600b400b400000000000000be00c800c8008c00a0009b00960000000000be
   4.296 -00c800c8000000aa00aa000000000064007d0082008c009600a00064007d0082008c009b00d2
   4.297 -0064007d0082008c009600a002300136011801a401d600460218012c01c2000001d600eb00eb
   4.298 -01d1017f0154011301450168012c008d02350159033f0505012c00b4006e0136015e01cc01cc
   4.299 -04d8006e006e01d600d2005f01f4012c007802d00190037f00800280006e00b4000000a5fea2
   4.300 -003200b9008c0000000000000000000000000000000000000000000000000000000000000000
   4.301 -00000000000000000000000000000000000000000000000000000000000000000000080005e6
   4.302 -000005b9001905b90014042f00140000ffe70000ffec0000ffecfe5c00000000000000000000
   4.303 -0338000000000000025300000000000000000000000000000000000000000000000000000000
   4.304 +00000000000000000000000000000000000000000000000000000000080005e6000005b90019
   4.305 +05b90014042f00140000ffe70000ffec0000ffecfe5c00000000000000000000033800000000
   4.306 +0000025300000000000000000000000000000000000000000000000000000000000000000000
   4.307  0000000000000000000000000000000000000000000000000000000000000000000000000000
   4.308 -000000000000000000000000000000000000000000c800cd00cd009600b400b4000000000000
   4.309 -00be00c800c8008c00a0009b00960000000000be00c800c8000000aa00aa000000000064007d
   4.310 -0082008c009600a00064007d0082008c009b00d20064007d0082008c009600a04036544b214a
   4.311 -494847464544434241403f3e3d3c3b3a39383736352f2e2d2c2826252423221f181411100f0d
   4.312 -0b0a090807060504030201002c4523466020b02660b004262348482d2c452346236120b02661
   4.313 -b004262348482d2c45234660b0206120b04660b004262348482d2c4523462361b0206020b026
   4.314 -61b02061b004262348482d2c45234660b0406120b06660b004262348482d2c4523462361b040
   4.315 -6020b02661b04061b004262348482d2c0110203c003c2d2c20452320b0cd442320b8015a5158
   4.316 -2320b08d44235920b0ed51582320b04d44235920b0042651582320b00d44235921212d2c2020
   4.317 -4518684420b001602045b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b432343
   4.318 -0b2d2c00b0282370b101283e01b0282370b10228453ab10200080d2d2c2045b00325456164b0
   4.319 -50515845441b2121592d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b000
   4.320 -8b20b12cc08a8cb8100062602b0c642364615c58b00361592d2c8a03458a8a87b0112bb02923
   4.321 -44b0297ae4182d2c4565b02c234445b02b23442d2c4b525845441b2121592d2c01b005251023
   4.322 -208af500b0016023edec2d2c01b005251023208af500b0016123edec2d2c01b0062510f500ed
   4.323 -ec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2c00b00743b006430b2d2c21
   4.324 -210c6423648bb84000622d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c
   4.325 -21b0c051580c6423648bb81555621bb200802f2b59b002602d2c0c6423648bb8400062602321
   4.326 -2d2c4523456023456023456023766818b08062202d2cb00426b00426b00425b0042545234520
   4.327 -b003266062636820b0032661658a2344442d2c2045b0005458b040442045b04061441b212159
   4.328 -2d2c45b1302f4523456160b0016069442d2c4b5158b02f2370b01423421b2121592d2c4b5158
   4.329 -20b0032545695358441b2121591b2121592d2c45b01443b0006063b0016069442d2cb02f4544
   4.330 -2d2c452320458a60442d2c45234560442d2c4b235158b90033ffe0b134201bb3330034005944
   4.331 -442d2cb0164358b00326458a586466b01f601b64b020606620581b21b04059b0016159235865
   4.332 -59b02923442310b029e01b2121212121592d2cb0164358b004254564b020606620581b21b040
   4.333 -59b0016123586559b0292344b00425b00725082058021b0359b0052510b004252046b0042523
   4.334 -423cb0072510b006252046b00425b0016023423c2058011b0059b0052510b00425b029e0b007
   4.335 -2510b00625b029e0b00425b00725082058021b0359b00425b003254348b00625b00325b00160
   4.336 -43481b2159212121212121212d2cb0164358b004254564b020606620581b21b04059b0016123
   4.337 -581b6559b0292344b00525b00825082058021b0359b0042510b005252046b0042523423cb004
   4.338 -25b0072508b0072510b006252046b00425b0016023423c2058011b0059b0042510b00525b029
   4.339 -e0b02920456544b0072510b00625b029e0b00525b00825082058021b0359b00525b003254348
   4.340 -b00425b0072508b00625b00325b0016043481b2159212121212121212d2c02b00425202046b0
   4.341 -04252342b0052508b003254548212121212d2c02b0032520b0042508b0022543482121212d2c
   4.342 -452320451820b00050205823652359236820b040505821b04059235865598a60442d2c4b5323
   4.343 -4b515a5820458a60441b2121592d2c208a08234b538a4b515a5823381b2121592d2c00208a49
   4.344 -b0005158b04023208a3812341b2121592d2c462346608a8a462320468a608a61b8ff80622320
   4.345 -10238ab14b4b8a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2c208a23
   4.346 -49648a2353583c1b21592d2c4b505845441b2121592d2cb0024354584b53234b515a58381b21
   4.347 -21591b21212121592d2cb1020042b123018851b1400188535a58b910000020885458b2020102
   4.348 -43604259b12401885158b920000040885458b2020202436042b12401885458b2022002436042
   4.349 -004b014b5258b2020802436042591bb940000080885458b202040243604259b94000008063b8
   4.350 -0100885458b202080243604259b94000010063b80200885458b202100243604259b940000200
   4.351 -63b80400885458b202400243604259595959592d00000001000000050000bb5c72a45f0f3cf5
   4.352 -001b080000000000ad61b71900000000c142e956ff50fde708a8078b0000000a000100000000
   4.353 -0000000100000783fe39000008e9ff50ff7808a800010000000000000000000000000000001c
   4.354 -0400008004c90050044b004106a40087045f007d045f00870248005003f6004104340050032c
   4.355 -004f04760096031c0096045d0041033d00410433009602f0009f05f4000f0564005003d90050
   4.356 -02690000025c00960475004b02f50041051b009604090087040d009605ad001406d1000d0000
   4.357 -0028010201ca02d60374041604a4055a067c070407ae0820095809fe0a600a800b720c280d48
   4.358 -0d480dc00e7c0ef00fde105a10b211ca129c000000010000001c004d0007004b000500020010
   4.359 -002f0055000002f001ff00030001400a54bfa50140a5111546a4b8010cb2321fa1b8011540b2
   4.360 -1f1f6fc731216ec731216dc731216cc731216bc731216ac7312169c7312168c7312167c73121
   4.361 -66c7312165c7312164c7312163c7312162c7312161c7312160c731215fc731215ec731215dc7
   4.362 -31215cc731215bc731215ac7312159c7312158c7312157c7312156c7312155c7312154c73121
   4.363 -53c7312152c7312151c7312150c731214fc731214ec731214dc731214cc731214bc731214ac7
   4.364 -312149c7312148c7312147c7312146c7312145c7312144c73121b80137b26f0821b80136b26e
   4.365 -0821b80135b26d0821b80134b26c0821b80133b26b0821b80132b26a0821b80131b2690821b8
   4.366 -0130b2680821b8012fb2670821b8012eb2660821b8012db2650821b8012cb2640821b8012bb2
   4.367 -630821b8012ab2620821b80129b2610821b80128b2600821b80127b25f0821b80126b25e0821
   4.368 -b80125b25d0821b80124b25c0821b80123b25b0821b80122b25a0821b80121b2590821b80120
   4.369 -b2580821b8011fb2570821b8011eb2560821b8011db2550821b8011cb2540821b8011bb25308
   4.370 -21b8011ab2520821b80119b2510821b80118b2500821b80117b24f0821b80116b24e0821b801
   4.371 -15b24d0821b80114b24c0821b80113b24b0821b80112b24a0821b80111b2490821b80110b248
   4.372 -0821b8010fb2470821b8010eb2460821b8010db2450821b8010c40ff4408216957311f585731
   4.373 -1f5657311f5152311f4644311f4544311f4f4e311f4d4e311f2097309740975097043088010f
   4.374 -8c018f849f84af84bf84cf84058f689f68af680360697069028f5b018f5a017057018f509f50
   4.375 -af50bf50cf50058f519f51af51038f529f52af52033f7c4f7c02507b607b707b03704e01708f
   4.376 -01308f608f708f03008e01008e01408e708e02008e308e408e508e608e708e06107040700260
   4.377 -740160730170440100282800000012110840370f3fce16010fa21fa20218c7312114c731210e
   4.378 -c731210dc731210cc731210bc731210ac7312109c7312108c7312107c7312106c7312105c731
   4.379 -2104c7312103c7312102c7312101c73121407c00c73121e0180821dc140821d60e0821d50d08
   4.380 -21d40c0821d30b0821d20a0821d1090821d0080821cf070821ce060821cd050821cc040821cb
   4.381 -030821ca020821c9010821c8000821230e45220c45210a452008451f06451e04451d02451c00
   4.382 -451a08180816081408120810080e080c080a08080806080408020800084bb807ff524bb00850
   4.383 -5b58b101018e59b0124b004b5442b9000101ff858d2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   4.384 +000000000000000000000000000000c800cd00cd009600b400b400000000000000be00c800c8
   4.385 +008c00a0009b00960000000000be00c800c8000000aa00aa000000000064007d0082008c0096
   4.386 +00a00064007d0082008c009b00d20064007d0082008c009600a04036544b214a494847464544
   4.387 +434241403f3e3d3c3b3a39383736352f2e2d2c2826252423221f181411100f0d0b0a09080706
   4.388 +0504030201002c4523466020b02660b004262348482d2c452346236120b02661b00426234848
   4.389 +2d2c45234660b0206120b04660b004262348482d2c4523462361b0206020b02661b02061b004
   4.390 +262348482d2c45234660b0406120b06660b004262348482d2c4523462361b0406020b02661b0
   4.391 +4061b004262348482d2c0110203c003c2d2c20452320b0cd442320b8015a51582320b08d4423
   4.392 +5920b0ed51582320b04d44235920b0042651582320b00d44235921212d2c20204518684420b0
   4.393 +01602045b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b028
   4.394 +2370b101283e01b0282370b10228453ab10200080d2d2c2045b00325456164b050515845441b
   4.395 +2121592d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b0008b20b12cc08a
   4.396 +8cb8100062602b0c642364615c58b00361592d2c8a03458a8a87b0112bb0292344b0297ae418
   4.397 +2d2c4565b02c234445b02b23442d2c4b525845441b2121592d2c01b005251023208af500b001
   4.398 +6023edec2d2c01b005251023208af500b0016123edec2d2c01b0062510f500edec2d2c20b001
   4.399 +600110203c003c2d2c20b001610110203c003c2d2c00b00743b006430b2d2c21210c6423648b
   4.400 +b84000622d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c21b0c051580c
   4.401 +6423648bb81555621bb200802f2b59b002602d2c0c6423648bb84000626023212d2c45234560
   4.402 +23456023456023766818b08062202d2cb00426b00426b00425b0042545234520b00326606263
   4.403 +6820b0032661658a2344442d2c2045b0005458b040442045b04061441b2121592d2c45b1302f
   4.404 +4523456160b0016069442d2c4b5158b02f2370b01423421b2121592d2c4b515820b003254569
   4.405 +5358441b2121591b2121592d2c45b01443b0006063b0016069442d2cb02f45442d2c45232045
   4.406 +8a60442d2c45234560442d2c4b235158b90033ffe0b134201bb3330034005944442d2cb01643
   4.407 +58b00326458a586466b01f601b64b020606620581b21b04059b001615923586559b029234423
   4.408 +10b029e01b2121212121592d2cb0164358b004254564b020606620581b21b04059b001612358
   4.409 +6559b0292344b00425b00725082058021b0359b0052510b004252046b0042523423cb0072510
   4.410 +b006252046b00425b0016023423c2058011b0059b0052510b00425b029e0b0072510b00625b0
   4.411 +29e0b00425b00725082058021b0359b00425b003254348b00625b00325b0016043481b215921
   4.412 +2121212121212d2cb0164358b004254564b020606620581b21b04059b0016123581b6559b029
   4.413 +2344b00525b00825082058021b0359b0042510b005252046b0042523423cb00425b0072508b0
   4.414 +072510b006252046b00425b0016023423c2058011b0059b0042510b00525b029e0b029204565
   4.415 +44b0072510b00625b029e0b00525b00825082058021b0359b00525b003254348b00425b00725
   4.416 +08b00625b00325b0016043481b2159212121212121212d2c02b00425202046b004252342b005
   4.417 +2508b003254548212121212d2c02b0032520b0042508b0022543482121212d2c452320451820
   4.418 +b00050205823652359236820b040505821b04059235865598a60442d2c4b53234b515a582045
   4.419 +8a60441b2121592d2c208a08234b538a4b515a5823381b2121592d2c00208a49b0005158b040
   4.420 +23208a3812341b2121592d2c462346608a8a462320468a608a61b8ff8062232010238ab14b4b
   4.421 +8a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a2d2c208a2349648a235358
   4.422 +3c1b21592d2c4b505845441b2121592d2cb0024354584b53234b515a58381b2121591b212121
   4.423 +21592d2cb1020042b123018851b1400188535a58b910000020885458b202010243604259b124
   4.424 +01885158b920000040885458b2020202436042b12401885458b2022002436042004b014b5258
   4.425 +b2020802436042591bb940000080885458b202040243604259b94000008063b80100885458b2
   4.426 +02080243604259b94000010063b80200885458b202100243604259b94000020063b804008854
   4.427 +58b202400243604259595959592d000000010000000500006692d3ec5f0f3cf5001b08000000
   4.428 +0000ad61b71900000000c142e956ff50fde708a8078b0000000a000100000000000000010000
   4.429 +0783fe39000008e9ff50ff7808a80001000000000000000000000000000000160400008004c9
   4.430 +0050044b004106a40087045f007d045f00870248005003f6004104340050032c004f04760096
   4.431 +031c0096045d0041033d0041051b009605f4000f04090087040400500269000005ad0014040d
   4.432 +0096025c009600000028010201ca02d60374041604a4055a067c070407ae0820095809fe0aec
   4.433 +0bde0c5a0d600d600e780ed00f480000000100000016004d0007004b000500020010002f0055
   4.434 +000002f001ff00030001400a54bfa50140a5111546a4b8010cb2321fa1b8011540b21f1f6fc7
   4.435 +31216ec731216dc731216cc731216bc731216ac7312169c7312168c7312167c7312166c73121
   4.436 +65c7312164c7312163c7312162c7312161c7312160c731215fc731215ec731215dc731215cc7
   4.437 +31215bc731215ac7312159c7312158c7312157c7312156c7312155c7312154c7312153c73121
   4.438 +52c7312151c7312150c731214fc731214ec731214dc731214cc731214bc731214ac7312149c7
   4.439 +312148c7312147c7312146c7312145c7312144c73121b80137b26f0821b80136b26e0821b801
   4.440 +35b26d0821b80134b26c0821b80133b26b0821b80132b26a0821b80131b2690821b80130b268
   4.441 +0821b8012fb2670821b8012eb2660821b8012db2650821b8012cb2640821b8012bb2630821b8
   4.442 +012ab2620821b80129b2610821b80128b2600821b80127b25f0821b80126b25e0821b80125b2
   4.443 +5d0821b80124b25c0821b80123b25b0821b80122b25a0821b80121b2590821b80120b2580821
   4.444 +b8011fb2570821b8011eb2560821b8011db2550821b8011cb2540821b8011bb2530821b8011a
   4.445 +b2520821b80119b2510821b80118b2500821b80117b24f0821b80116b24e0821b80115b24d08
   4.446 +21b80114b24c0821b80113b24b0821b80112b24a0821b80111b2490821b80110b2480821b801
   4.447 +0fb2470821b8010eb2460821b8010db2450821b8010c40ff4408216957311f5857311f565731
   4.448 +1f5152311f4644311f4544311f4f4e311f4d4e311f2097309740975097043088010f8c018f84
   4.449 +9f84af84bf84cf84058f689f68af680360697069028f5b018f5a017057018f509f50af50bf50
   4.450 +cf50058f519f51af51038f529f52af52033f7c4f7c02507b607b707b03704e01708f01308f60
   4.451 +8f708f03008e01008e01408e708e02008e308e408e508e608e708e0610704070026074016073
   4.452 +0170440100282800000012110840370f3fce16010fa21fa20218c7312114c731210ec731210d
   4.453 +c731210cc731210bc731210ac7312109c7312108c7312107c7312106c7312105c7312104c731
   4.454 +2103c7312102c7312101c73121407c00c73121e0180821dc140821d60e0821d50d0821d40c08
   4.455 +21d30b0821d20a0821d1090821d0080821cf070821ce060821cd050821cc040821cb030821ca
   4.456 +020821c9010821c8000821230e45220c45210a452008451f06451e04451d02451c00451a0818
   4.457 +0816081408120810080e080c080a08080806080408020800084bb807ff524bb008505b58b101
   4.458 +018e59b0124b004b5442b9000101ff858d2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   4.459 +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b734201
   4.460 +1d4bb01b5358b0961d594bb0325358b0001db1160042594b20b0325323b096515a58b0301d59
   4.461 +2b0145695342014b5058b108004259435c58b1080042591610703eb13737456920b0005458b0
   4.462 +40605944b1300070b33200300019701870737373737373747473737373737373737373737373
   4.463 +737373732b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   4.464  2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   4.465 -2b7342011d4bb01b5358b0961d594bb0325358b0001db1160042594b20b0325323b096515a58
   4.466 -b0301d592b0145695342014b5058b108004259435c58b1080042591610703eb13737456920b0
   4.467 -005458b040605944b1300070b332003000197018707373737373737474737373737373737373
   4.468 -73737373737373732b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   4.469 -2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
   4.470 -2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b742b00000000>
   4.471 +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b742b00000000>
   4.472  ] def
   4.473  FontName currentdict end definefont pop
   4.474  %%Page: 1 1
   4.475  %%BeginPageSetup
   4.476 -%%PageBoundingBox: 0 0 253 124
   4.477 +%%PageBoundingBox: 0 0 157 122
   4.478  %%EndPageSetup
   4.479  q
   4.480  1 0 0 rg
   4.481  BT
   4.482 -7.831745 0 0 11.438301 99.162394 62.386055 Tm
   4.483 +7.831745 0 0 11.438301 3.162394 14.386058 Tm
   4.484  /f-0-0 1 Tf
   4.485  [<010203030405>-1<0607>-1<0809060205>]TJ
   4.486  1.350586 -1 Td
   4.487 @@ -504,112 +446,113 @@
   4.488  0 J
   4.489  0 j
   4.490  [] 0.0 d
   4.491 -4 M q 0 -1 -1 0 0 123.478271 cm
   4.492 -51.07 -156.605 m 74.77 -156.605 l 74.77 -96.715 l 51.07 -96.715 l h
   4.493 -51.07 -156.605 m S Q
   4.494 +4 M q 0 -1 -1 0 0 121.125 cm
   4.495 +96.715 -60.605 m 120.414 -60.605 l 120.414 -0.715 l 96.715 -0.715 l h
   4.496 +96.715 -60.605 m S Q
   4.497  1.6 w
   4.498 -q 1 0 0 -1 0 123.478271 cm
   4.499 -126.645 27.277 m 126.645 49.867 l S Q
   4.500 -130.516 81.982 m 126.66 71.494 l 122.801 81.982 l 125.078 80.306 
   4.501 -128.195 80.318 130.516 81.982 c h
   4.502 -130.516 81.982 m f*
   4.503 +q 1 0 0 -1 0 121.125 cm
   4.504 +62.652 108.891 m 94.406 108.891 l S Q
   4.505 +71.023 8.359 m 60.535 12.219 l 71.023 16.074 l 69.348 13.797 69.359 
   4.506 +10.68 71.023 8.359 c h
   4.507 +71.023 8.359 m f*
   4.508 +86.035 16.105 m 96.523 12.246 l 86.035 8.391 l 87.711 10.668 87.703 
   4.509 +13.785 86.035 16.105 c h
   4.510 +86.035 16.105 m f*
   4.511  1 0 0 rg
   4.512  BT
   4.513 -7.831745 0 0 11.438301 99.162394 110.386055 Tm
   4.514 +7.831745 0 0 11.438301 111.720735 14.386058 Tm
   4.515  /f-0-0 1 Tf
   4.516 -[<010203030405>-1<0607>-1<0809060205>]TJ
   4.517 -1.180664 -1 Td
   4.518 -<0e060b030f10080b0c>Tj
   4.519 +<0e0c090f020b10>Tj
   4.520  ET
   4.521  0 g
   4.522  1.440509 w
   4.523 -q 0 -1 -1 0 0 123.478271 cm
   4.524 -3.07 -156.605 m 26.77 -156.605 l 26.77 -96.715 l 3.07 -96.715 l h
   4.525 -3.07 -156.605 m S Q
   4.526 +q 0 -1 -1 0 0 121.125 cm
   4.527 +96.715 -156.605 m 120.414 -156.605 l 120.414 -96.715 l 96.715 -96.715 l 
   4.528 +h
   4.529 +96.715 -156.605 m S Q
   4.530  1.6 w
   4.531 -q 1 0 0 -1 0 123.478271 cm
   4.532 -61.09 19.379 m 82.613 19.379 82.613 19.188 82.613 19.188 c 82.613 
   4.533 -23.918 l 94.391 14.457 l 82.613 5.563 l 82.613 10.105 l 61.09 10.297 l 
   4.534 -h
   4.535 -61.09 19.379 m S Q
   4.536 -BT
   4.537 -10.591524 0 0 15.468973 12.234556 112.072925 Tm
   4.538 -/f-0-0 1 Tf
   4.539 -<111213140208150d>Tj
   4.540 --0.334961 -1 Td
   4.541 -<16060b030f10080b0c>Tj
   4.542 -ET
   4.543 -1.6 w
   4.544 -q 1 0 0 -1 0 123.478271 cm
   4.545 -158.652 63.246 m 190.406 63.246 l S Q
   4.546 -167.023 56.361 m 156.535 60.217 l 167.023 64.076 l 165.348 61.799 
   4.547 -165.359 58.681 167.023 56.361 c h
   4.548 -167.023 56.361 m f*
   4.549 -182.035 64.103 m 192.523 60.248 l 182.035 56.392 l 183.711 58.67 
   4.550 -183.703 61.783 182.035 64.103 c h
   4.551 -182.035 64.103 m f*
   4.552 +q 1 0 0 -1 0 121.125 cm
   4.553 +126.645 72.922 m 126.645 95.512 l S Q
   4.554 +122.77 39.832 m 126.629 50.32 l 130.484 39.832 l 128.207 41.508 125.094 
   4.555 +41.5 122.77 39.832 c h
   4.556 +122.77 39.832 m f*
   4.557 +130.516 33.98 m 126.66 23.492 l 122.801 33.98 l 125.078 32.309 128.195 
   4.558 +32.316 130.516 33.98 c h
   4.559 +130.516 33.98 m f*
   4.560  1 0 0 rg
   4.561  BT
   4.562 -7.831745 0 0 11.438301 207.720735 62.386055 Tm
   4.563 +7.831745 0 0 11.438301 120.845007 62.386058 Tm
   4.564  /f-0-0 1 Tf
   4.565 -<170c0910020b18>Tj
   4.566 +<09081112>Tj
   4.567 +-1.62207 -1 Td
   4.568 +[<0a>-1<0b0207>-1<0c0d>1<0d060511>]TJ
   4.569  ET
   4.570  0 g
   4.571  1.440509 w
   4.572 -q 0 -1 -1 0 0 123.478271 cm
   4.573 -51.07 -252.605 m 74.77 -252.605 l 74.77 -192.715 l 51.07 -192.715 l h
   4.574 -51.07 -252.605 m S Q
   4.575 +q 0 -1 -1 0 0 121.125 cm
   4.576 +48.715 -156.605 m 72.414 -156.605 l 72.414 -96.715 l 48.715 -96.715 l h
   4.577 +48.715 -156.605 m S Q
   4.578  1 0 0 rg
   4.579  BT
   4.580 -7.831745 0 0 11.438301 11.843087 62.386055 Tm
   4.581 +7.831745 0 0 11.438301 120.845007 110.386058 Tm
   4.582  /f-0-0 1 Tf
   4.583 -<1902070814131a0c03>Tj
   4.584 +<09081112>Tj
   4.585 +-0.330078 -1 Td
   4.586 +<130c03>Tj
   4.587  ET
   4.588  0 g
   4.589  1.440509 w
   4.590 -q 0 -1 -1 0 0 123.478271 cm
   4.591 -51.07 -60.605 m 74.77 -60.605 l 74.77 -0.715 l 51.07 -0.715 l h
   4.592 -51.07 -60.605 m S Q
   4.593 +q 0 -1 -1 0 0 121.125 cm
   4.594 +0.715 -156.605 m 24.414 -156.605 l 24.414 -96.715 l 0.715 -96.715 l h
   4.595 +0.715 -156.605 m S Q
   4.596  1.6 w
   4.597 -q 1 0 0 -1 0 123.478271 cm
   4.598 -62.652 63.246 m 94.406 63.246 l S Q
   4.599 -71.023 56.361 m 60.535 60.217 l 71.023 64.076 l 69.348 61.799 69.359 
   4.600 -58.681 71.023 56.361 c h
   4.601 -71.023 56.361 m f*
   4.602 -86.035 64.103 m 96.523 60.248 l 86.035 56.392 l 87.711 58.67 87.703 
   4.603 -61.783 86.035 64.103 c h
   4.604 -86.035 64.103 m f*
   4.605 +q 1 0 0 -1 0 121.125 cm
   4.606 +126.645 24.922 m 126.645 47.512 l S Q
   4.607 +122.77 87.832 m 126.629 98.32 l 130.484 87.832 l 128.207 89.508 125.094 
   4.608 +89.5 122.77 87.832 c h
   4.609 +122.77 87.832 m f*
   4.610 +130.516 81.98 m 126.66 71.492 l 122.801 81.98 l 125.078 80.309 128.195 
   4.611 +80.316 130.516 81.98 c h
   4.612 +130.516 81.98 m f*
   4.613  1 0 0 rg
   4.614  BT
   4.615 -7.831745 0 0 11.438301 117.487452 14.386055 Tm
   4.616 +7.831745 0 0 11.438301 21.181525 110.386058 Tm
   4.617  /f-0-0 1 Tf
   4.618 -<1b020b18>Tj
   4.619 --0.989258 -1 Td
   4.620 -[<0a>-1<0b0207>-1<0c0d>1<0d020b>]TJ
   4.621 +<140207081512>Tj
   4.622 +0.137695 -1 Td
   4.623 +<130c03>Tj
   4.624  ET
   4.625  0 g
   4.626  1.440509 w
   4.627 -q 0 -1 -1 0 0 123.478271 cm
   4.628 -99.07 -156.605 m 122.77 -156.605 l 122.77 -96.715 l 99.07 -96.715 l h
   4.629 -99.07 -156.605 m S Q
   4.630 +q 0 -1 -1 0 0 121.125 cm
   4.631 +0.715 -60.605 m 24.414 -60.605 l 24.414 -0.715 l 0.715 -0.715 l h
   4.632 +0.715 -60.605 m S Q
   4.633  1.6 w
   4.634 -q 1 0 0 -1 0 123.478271 cm
   4.635 -126.645 75.277 m 126.645 97.867 l S Q
   4.636 -122.77 39.834 m 126.629 50.322 l 130.484 39.834 l 128.207 41.51 125.094 
   4.637 -41.498 122.77 39.834 c h
   4.638 -122.77 39.834 m f*
   4.639 -130.516 33.982 m 126.66 23.494 l 122.801 33.982 l 125.078 32.306 
   4.640 -128.195 32.318 130.516 33.982 c h
   4.641 -130.516 33.982 m f*
   4.642 +q 1 0 0 -1 0 121.125 cm
   4.643 +30.645 26.969 m 30.645 95.512 l S Q
   4.644 +26.77 85.785 m 30.629 96.273 l 34.484 85.785 l 32.207 87.461 29.094 
   4.645 +87.453 26.77 85.785 c h
   4.646 +26.77 85.785 m f*
   4.647 +34.516 33.98 m 30.66 23.492 l 26.801 33.98 l 29.078 32.309 32.195 
   4.648 +32.316 34.516 33.98 c h
   4.649 +34.516 33.98 m f*
   4.650  1.6 w
   4.651 -q 1 0 0 -1 0 123.478271 cm
   4.652 -28.98 76.523 m 31.938 113.777 94.023 111.41 94.023 111.41 c S Q
   4.653 -25.781 38.306 m 28.797 49.068 l 33.473 38.916 l 31.07 40.408 27.965 
   4.654 -40.15 25.781 38.306 c h
   4.655 -25.781 38.306 m f*
   4.656 -85.516 15.619 m 96.141 12.166 l 85.809 7.912 l 87.395 10.248 87.266 
   4.657 -13.361 85.516 15.619 c h
   4.658 -85.516 15.619 m f*
   4.659 +q 1 0 0 -1 0 121.125 cm
   4.660 +63.238 105.551 m 100.363 80.809 110.176 74.492 110.176 74.492 c S Q
   4.661 +72.352 16.992 m 61.484 14.387 l 68.07 23.41 l 67.941 20.586 69.676 18 
   4.662 +72.352 16.992 c h
   4.663 +72.352 16.992 m f*
   4.664 +101.043 45.359 m 111.949 47.793 l 105.219 38.871 l 105.395 41.695 
   4.665 +103.699 44.309 101.043 45.359 c h
   4.666 +101.043 45.359 m f*
   4.667 +q 1 0 0 -1 0 121.125 cm
   4.668 +63.117 99.195 m 95.758 41.734 104.387 27.063 104.387 27.063 c S Q
   4.669 +70.617 27.293 m 62.082 20.078 l 63.91 31.102 l 65.063 28.52 67.777 
   4.670 +26.992 70.617 27.293 c h
   4.671 +70.617 27.293 m f*
   4.672 +96.805 88.813 m 105.449 95.898 l 103.457 84.898 l 102.344 87.5 99.652 
   4.673 +89.07 96.805 88.813 c h
   4.674 +96.805 88.813 m f*
   4.675  Q
   4.676  showpage
   4.677  %%Trailer
     5.1 --- a/0__Papers/Future_Architecture/figures/Speculation_HW_support.svg	Sun Apr 08 13:11:55 2012 -0700
     5.2 +++ b/0__Papers/Future_Architecture/figures/Speculation_HW_support.svg	Tue Apr 10 07:23:24 2012 -0700
     5.3 @@ -14,7 +14,7 @@
     5.4     id="svg2"
     5.5     sodipodi:version="0.32"
     5.6     inkscape:version="0.48.1 "
     5.7 -   sodipodi:docname="Separate_comm_processors.svg"
     5.8 +   sodipodi:docname="Speculation_HW_support.svg"
     5.9     inkscape:output_extension="org.inkscape.output.svg.inkscape"
    5.10     version="1.1">
    5.11    <defs
    5.12 @@ -861,7 +861,7 @@
    5.13       inkscape:pageshadow="2"
    5.14       inkscape:zoom="1.3528978"
    5.15       inkscape:cx="149.31397"
    5.16 -     inkscape:cy="922.22574"
    5.17 +     inkscape:cy="837.01483"
    5.18       inkscape:document-units="px"
    5.19       inkscape:current-layer="layer1"
    5.20       showgrid="false"
    5.21 @@ -878,7 +878,7 @@
    5.22          <dc:format>image/svg+xml</dc:format>
    5.23          <dc:type
    5.24             rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
    5.25 -        <dc:title></dc:title>
    5.26 +        <dc:title />
    5.27        </cc:Work>
    5.28      </rdf:RDF>
    5.29    </metadata>
    5.30 @@ -900,7 +900,7 @@
    5.31           y="376.30783"
    5.32           style="font-size:22.05818939px;text-align:center;text-anchor:middle" /></text>
    5.33      <g
    5.34 -       transform="matrix(0,1,-1,0,901.99308,-102.4247)"
    5.35 +       transform="matrix(0,1,-1,0,661.99308,-22.4247)"
    5.36         id="g3671">
    5.37        <text
    5.38           transform="matrix(0,-0.82746283,1.2085135,0,0,0)"
    5.39 @@ -929,73 +929,14 @@
    5.40           y="525.1496" />
    5.41      </g>
    5.42      <path
    5.43 -       sodipodi:nodetypes="cc"
    5.44 -       inkscape:connector-curvature="0"
    5.45 -       id="path4767"
    5.46 -       d="m 339.39155,116.38498 0,28.23719"
    5.47 -       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#marker12861)" />
    5.48 -    <g
    5.49 -       id="g3622"
    5.50 -       transform="matrix(0,1,-1,0,901.99308,-162.4247)">
    5.51 -      <text
    5.52 -         xml:space="preserve"
    5.53 -         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
    5.54 -         x="-680.24878"
    5.55 -         y="216.03394"
    5.56 -         id="text3624"
    5.57 -         sodipodi:linespacing="100%"
    5.58 -         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"><tspan
    5.59 -           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
    5.60 -           sodipodi:role="line"
    5.61 -           x="-680.24878"
    5.62 -           y="216.03394"
    5.63 -           id="tspan3626">Communication</tspan><tspan
    5.64 -           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
    5.65 -           sodipodi:role="line"
    5.66 -           x="-680.24878"
    5.67 -           y="227.8649"
    5.68 -           id="tspan3628">Firm-ware</tspan></text>
    5.69 -      <rect
    5.70 -         y="525.1496"
    5.71 -         x="248.55019"
    5.72 -         height="74.865425"
    5.73 -         width="29.62429"
    5.74 -         id="rect3630"
    5.75 -         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
    5.76 -    </g>
    5.77 -    <path
    5.78 -       inkscape:connector-curvature="0"
    5.79 -       id="path4964"
    5.80 -       d="m 257.4513,106.51265 c 26.90356,0 26.90356,-0.23653 26.90356,-0.23653 l 0,5.9134 14.72081,-11.82681 -14.72081,-11.117202 0,5.67687 -26.90356,0.23653 z"
    5.81 -       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
    5.82 -       sodipodi:nodetypes="cccccccc" />
    5.83 -    <text
    5.84 -       xml:space="preserve"
    5.85 -       style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
    5.86 -       x="267.51541"
    5.87 -       y="79.888756"
    5.88 -       id="text4966"
    5.89 -       sodipodi:linespacing="100%"
    5.90 -       transform="scale(0.82746283,1.2085135)"><tspan
    5.91 -         id="tspan4968"
    5.92 -         style="font-size:16px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
    5.93 -         sodipodi:role="line"
    5.94 -         x="267.51541"
    5.95 -         y="79.888756">OS loads</tspan><tspan
    5.96 -         style="font-size:16px;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1"
    5.97 -         sodipodi:role="line"
    5.98 -         x="267.51541"
    5.99 -         y="95.888756"
   5.100 -         id="tspan5599">firm-ware</tspan></text>
   5.101 -    <path
   5.102         style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)"
   5.103 -       d="m 379.40414,161.34717 39.68916,0"
   5.104 +       d="m 139.40414,241.34717 39.68916,0"
   5.105         id="path5013"
   5.106         inkscape:connector-curvature="0"
   5.107         sodipodi:nodetypes="cc" />
   5.108      <g
   5.109         id="g5015"
   5.110 -       transform="matrix(0,1,-1,0,1021.9931,-102.4247)">
   5.111 +       transform="matrix(0,1,-1,0,781.9931,-22.4247)">
   5.112        <text
   5.113           xml:space="preserve"
   5.114           style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   5.115 @@ -1017,25 +958,100 @@
   5.116           id="rect5023"
   5.117           style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   5.118      </g>
   5.119 +    <path
   5.120 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)"
   5.121 +       d="m 219.39155,196.38498 0,28.23719"
   5.122 +       id="path5323"
   5.123 +       inkscape:connector-curvature="0"
   5.124 +       sodipodi:nodetypes="cc" />
   5.125      <g
   5.126 -       transform="matrix(0,1,-1,0,781.99308,-102.4247)"
   5.127 -       id="g5303">
   5.128 +       transform="matrix(0,1,-1,0,781.99308,-82.4247)"
   5.129 +       id="g6727">
   5.130        <text
   5.131           transform="matrix(0,-0.82746283,1.2085135,0,0,0)"
   5.132           sodipodi:linespacing="100%"
   5.133 -         id="text5305"
   5.134 +         id="text6729"
   5.135           y="216.03394"
   5.136           x="-680.24878"
   5.137           style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   5.138           xml:space="preserve"><tspan
   5.139 -           id="tspan5307"
   5.140 +           id="tspan6731"
   5.141             y="216.03394"
   5.142 +           x="-678.46954"
   5.143 +           sodipodi:role="line"
   5.144 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">tag </tspan><tspan
   5.145 +           id="tspan6733"
   5.146 +           y="227.8649"
   5.147             x="-680.24878"
   5.148             sodipodi:role="line"
   5.149 -           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Local Mem</tspan></text>
   5.150 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Processing</tspan></text>
   5.151        <rect
   5.152           style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   5.153 -         id="rect5309"
   5.154 +         id="rect6735"
   5.155 +         width="29.62429"
   5.156 +         height="74.865425"
   5.157 +         x="248.55019"
   5.158 +         y="525.1496" />
   5.159 +    </g>
   5.160 +    <g
   5.161 +       id="g6737"
   5.162 +       transform="matrix(0,1,-1,0,781.99308,-142.4247)">
   5.163 +      <text
   5.164 +         xml:space="preserve"
   5.165 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   5.166 +         x="-680.24878"
   5.167 +         y="216.03394"
   5.168 +         id="text6739"
   5.169 +         sodipodi:linespacing="100%"
   5.170 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"><tspan
   5.171 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
   5.172 +           sodipodi:role="line"
   5.173 +           x="-678.46954"
   5.174 +           y="216.03394"
   5.175 +           id="tspan6741">tag </tspan><tspan
   5.176 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
   5.177 +           sodipodi:role="line"
   5.178 +           x="-680.24878"
   5.179 +           y="227.8649"
   5.180 +           id="tspan6743">Mem</tspan></text>
   5.181 +      <rect
   5.182 +         y="525.1496"
   5.183 +         x="248.55019"
   5.184 +         height="74.865425"
   5.185 +         width="29.62429"
   5.186 +         id="rect6745"
   5.187 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   5.188 +    </g>
   5.189 +    <path
   5.190 +       sodipodi:nodetypes="cc"
   5.191 +       inkscape:connector-curvature="0"
   5.192 +       id="path6747"
   5.193 +       d="m 219.39155,136.38498 0,28.23719"
   5.194 +       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)" />
   5.195 +    <g
   5.196 +       transform="matrix(0,1,-1,0,661.99308,-142.4247)"
   5.197 +       id="g6749">
   5.198 +      <text
   5.199 +         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"
   5.200 +         sodipodi:linespacing="100%"
   5.201 +         id="text6751"
   5.202 +         y="216.03394"
   5.203 +         x="-680.24878"
   5.204 +         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   5.205 +         xml:space="preserve"><tspan
   5.206 +           id="tspan6753"
   5.207 +           y="216.03394"
   5.208 +           x="-678.46954"
   5.209 +           sodipodi:role="line"
   5.210 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Local </tspan><tspan
   5.211 +           id="tspan6755"
   5.212 +           y="227.8649"
   5.213 +           x="-680.24878"
   5.214 +           sodipodi:role="line"
   5.215 +           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1">Mem</tspan></text>
   5.216 +      <rect
   5.217 +         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
   5.218 +         id="rect6757"
   5.219           width="29.62429"
   5.220           height="74.865425"
   5.221           x="248.55019"
   5.222 @@ -1044,48 +1060,19 @@
   5.223      <path
   5.224         sodipodi:nodetypes="cc"
   5.225         inkscape:connector-curvature="0"
   5.226 -       id="path5311"
   5.227 -       d="m 259.40414,161.34717 39.68916,0"
   5.228 +       id="path6759"
   5.229 +       d="m 99.39155,138.94328 0,85.67888"
   5.230         style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)" />
   5.231 -    <g
   5.232 -       id="g5313"
   5.233 -       transform="matrix(0,1,-1,0,901.99308,-42.4247)">
   5.234 -      <text
   5.235 -         xml:space="preserve"
   5.236 -         style="font-size:13.14551258px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Trebuchet MS;-inkscape-font-specification:Trebuchet MS"
   5.237 -         x="-680.24878"
   5.238 -         y="216.03394"
   5.239 -         id="text5315"
   5.240 -         sodipodi:linespacing="100%"
   5.241 -         transform="matrix(0,-0.82746283,1.2085135,0,0,0)"><tspan
   5.242 -           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
   5.243 -           sodipodi:role="line"
   5.244 -           x="-680.24878"
   5.245 -           y="216.03394"
   5.246 -           id="tspan5317">Work</tspan><tspan
   5.247 -           style="font-size:11.83096123px;text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1"
   5.248 -           sodipodi:role="line"
   5.249 -           x="-680.24878"
   5.250 -           y="227.8649"
   5.251 -           id="tspan5319">Processor</tspan></text>
   5.252 -      <rect
   5.253 -         y="525.1496"
   5.254 -         x="248.55019"
   5.255 -         height="74.865425"
   5.256 -         width="29.62429"
   5.257 -         id="rect5321"
   5.258 -         style="fill:none;stroke:#000000;stroke-width:1.80063593;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
   5.259 -    </g>
   5.260      <path
   5.261 -       style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)"
   5.262 -       d="m 339.39155,176.38498 0,28.23719"
   5.263 -       id="path5323"
   5.264 +       sodipodi:nodetypes="cc"
   5.265         inkscape:connector-curvature="0"
   5.266 -       sodipodi:nodetypes="cc" />
   5.267 +       id="path6761"
   5.268 +       d="m 140.13366,237.17107 c 46.40667,-30.92807 58.67508,-38.8246 58.67508,-38.8246"
   5.269 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)" />
   5.270      <path
   5.271         style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12861)"
   5.272 -       d="m 217.31131,177.94287 c 3.69577,46.56671 81.30695,43.61009 81.30695,43.61009"
   5.273 -       id="path5601"
   5.274 +       d="m 139.98179,229.22766 c 40.80286,-71.82863 51.5898,-90.16786 51.5898,-90.16786"
   5.275 +       id="path6763"
   5.276         inkscape:connector-curvature="0"
   5.277         sodipodi:nodetypes="cc" />
   5.278    </g>
     6.1 --- a/0__Papers/Future_Architecture/latex/Future_Architecture.aux	Sun Apr 08 13:11:55 2012 -0700
     6.2 +++ b/0__Papers/Future_Architecture/latex/Future_Architecture.aux	Tue Apr 10 07:23:24 2012 -0700
     6.3 @@ -1,30 +1,31 @@
     6.4  \relax 
     6.5  \bibstyle{plain}
     6.6  \@writefile{toc}{\contentsline {section}{\numberline {I}What parallel abstractions should the hardware provide?}{1}}
     6.7 -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces A special op-code is recognized by the decode stage, and triggers fetch of instructions from firm-ware. The firm-ware instrs are provided to the OS as a ``hardware driver", and implement the runtime behavior of a language. The application communicates to the runtime by placing pointers to data-structures into registers just before executing the ``switch to runtime" instruction, which starts the fetch from firm-ware. Helper instructions accelerate common runtime operations, such as hash-table lookups, communication, search-for-optimum, and so on. }}{1}}
     6.8 +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces A special \texttt  {switch} op-code is recognized by the decode stage, and triggers fetch of instructions from firm-ware. The firm-ware instrs are provided to the OS as a ``hardware driver", and implement the runtime behavior of a language. The application communicates to the runtime by placing pointers to data-structures into registers just before executing the ``switch to runtime" instruction, which starts the fetch from firm-ware. Helper instructions accelerate common runtime operations, such as hash-table lookups, communication, search-for-optimum, and so on. }}{1}}
     6.9  \newlabel{figTimeMapping}{{1}{1}}
    6.10 -\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-A}}Communications via firm-ware}{2}}
    6.11 -\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-B}}Communication via separate helper processors}{2}}
    6.12 -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Communication is performed between local memory and remote memories via a separate communication processor. This processor executes firm-ware that is loaded under OS control. For example, it may implement a software-cache or be scatter-gather code extracted from the application. }}{2}}
    6.13 +\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-A}}Soft-extension of instruction-set}{1}}
    6.14 +\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-B}}Communications via firm-ware}{2}}
    6.15 +\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-C}}Communication via separate helper processors}{2}}
    6.16 +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Communication is performed between local memory and remote memories via a separate communication processor. This processor executes firm-ware that is loaded under OS control. For example, it may run a standard software-cache or run scatter-gather code extracted from the application. }}{2}}
    6.17  \newlabel{figCommProcr}{{2}{2}}
    6.18 -\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-C}}Speculation and Fast Control Message Support}{2}}
    6.19 -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces  }}{2}}
    6.20 -\newlabel{figSpecHW}{{3}{2}}
    6.21 -\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-D}}Example}{3}}
    6.22 -\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {I-D}0a}setup and switch}{3}}
    6.23 -\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {I-D}0b}runtime internals}{3}}
    6.24 -\@writefile{toc}{\contentsline {section}{\numberline {II}Which should be the responsibility / functionality of the programmer, the runtime software, and the hardware?}{3}}
    6.25 -\@writefile{toc}{\contentsline {section}{\numberline {III}Specific Topics of Interest}{3}}
    6.26 +\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-D}}Speculation and Fast Control Message Support}{2}}
    6.27 +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Tag memory and tag processing are added to local memory. The tags have an extra field used by tag processing to filter lines. It can generate a list of all tags that match in the extra field, can compare a list coming from the network to tag memory, tell the communication processor which local memory lines match a boolean expression on the extra field, and so on. }}{3}}
    6.28 +\newlabel{figSpecHW}{{3}{3}}
    6.29 +\@writefile{toc}{\contentsline {subsection}{\numberline {\unhbox \voidb@x \hbox {I-E}}Example}{3}}
    6.30 +\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {I-E}0a}setup and switch}{3}}
    6.31 +\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {I-E}0b}runtime internals}{3}}
    6.32 +\@writefile{toc}{\contentsline {section}{\numberline {II}Which should be the responsibility / functionality of the programmer, the runtime software, and the hardware?}{4}}
    6.33 +\newlabel{secResponsibility}{{II}{4}}
    6.34 +\@writefile{toc}{\contentsline {section}{\numberline {III}Specific Topics of Interest}{4}}
    6.35  \@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0c}enabling future parallel programming models}{4}}
    6.36  \@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0d}innovative architectural execution models}{4}}
    6.37  \@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0e}novel memory hierarchies}{4}}
    6.38  \@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0f}simplified and scalable memory models}{4}}
    6.39  \@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0g}high-level constructs for on-chip communications}{4}}
    6.40 -\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0h}characterization of the runtime overheads of parallel applications}{4}}
    6.41 -\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0i}future directions in programming massively parallel systems}{4}}
    6.42 -\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0j}potential bottlenecks for future parallel systems}{4}}
    6.43 -\@writefile{toc}{\contentsline {section}{\numberline {IV}Conclusion}{5}}
    6.44 -\newlabel{secConclusion}{{IV}{5}}
    6.45 +\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0h}future directions in programming massively parallel systems}{4}}
    6.46 +\@writefile{toc}{\contentsline {paragraph}{\numberline {\unhbox \voidb@x \hbox {III-}0i}potential bottlenecks for future parallel systems}{5}}
    6.47  \bibdata{Bib_for_papers}
    6.48 +\@writefile{toc}{\contentsline {section}{\numberline {IV}Conclusion}{6}}
    6.49 +\newlabel{secConclusion}{{IV}{6}}
    6.50  \@writefile{toc}{\contentsline {section}{References}{6}}
    6.51  
     7.1 --- a/0__Papers/Future_Architecture/latex/Future_Architecture.blg	Sun Apr 08 13:11:55 2012 -0700
     7.2 +++ b/0__Papers/Future_Architecture/latex/Future_Architecture.blg	Tue Apr 10 07:23:24 2012 -0700
     7.3 @@ -5,7 +5,7 @@
     7.4  The top-level auxiliary file: Future_Architecture.aux
     7.5  The style file: plain.bst
     7.6  I couldn't open database file Bib_for_papers.bib
     7.7 ----line 28 of file Future_Architecture.aux
     7.8 +---line 27 of file Future_Architecture.aux
     7.9   : \bibdata{Bib_for_papers
    7.10   :                        }
    7.11  I'm skipping whatever remains of this command
     8.1 Binary file 0__Papers/Future_Architecture/latex/Future_Architecture.pdf has changed
     9.1 --- a/0__Papers/Future_Architecture/latex/Future_Architecture.tex	Sun Apr 08 13:11:55 2012 -0700
     9.2 +++ b/0__Papers/Future_Architecture/latex/Future_Architecture.tex	Tue Apr 10 07:23:24 2012 -0700
     9.3 @@ -278,21 +278,26 @@
     9.4  \begin{abstract}
     9.5  This is a position paper, whose purpose is to provide food for thought and a starting point for debate.  Although, the ideas are extrapolations from published work on runtime systems and hardware abstractions that have been implemented and successfully demonstrated.
     9.6  
     9.7 -The main premise is that no parallelism constructs should  be directly implemented in hardware, but rather separated into a new category of \emph{firmware} that is tightly integrated into the processor pipeline and managed by the OS.  We describe hardware structures that allow traditional thread constructs, domain-specific constructs, transactional memory,  and even consistency models be implemented with extremely low overhead, as well as cooperatively engage the language's runtime into pipeline-level  hardware-resource management.
     9.8 +The main premise is that no parallelism constructs should  be directly implemented in hardware, but rather separated into a new category of \emph{firmware} that is tightly integrated into the processor pipeline and managed by the OS.  We describe hardware structures that allow traditional thread constructs, domain-specific constructs, transactional memory,  and even consistency models be implemented as firm-ware, with extremely low overhead, as well as cooperatively engage the language's runtime into pipeline-level  hardware-resource management.
     9.9  
    9.10 -We further take the position that software should be organized into a stack, based around \emph{specialization} of source to target hardware. Each layer of the stack has a role in the specialization process, which spans the lifetime of application code as it goes through the stages of, development, transformation to hardware-specific form, installation, and execution.  Hence, specialization includes the toolchain, hand-tuning, auto-tuners, multi-kernels, profiling, and binary optimization. We describe infrastructure to encapsulate and organize these.
    9.11 +We further take the position that software should be organized into a stack, based around \emph{specialization} of source to target hardware. Each layer of the stack has a role in the specialization process, which spans the lifetime of application code as it goes through the stages of, development, transformation to hardware-specific form, installation, and execution.  Hence, specialization is viewed as including the toolchain, hand-tuning, auto-tuners, multi-kernels, profiling, and binary optimization. We describe the elements of a stack that encapsulates and organizes these.
    9.12  \end{abstract}
    9.13  
    9.14  
    9.15  
    9.16  \section{What parallel abstractions should the hardware provide?}
    9.17  
    9.18 +
    9.19  Our position is that the hardware should not directly supply any parallel abstractions.  Instead, it should supply a mechanism that elevates the language runtime to the status of a Hardware Abstraction Layer, which is separate from the executable and separate from the OS.  Thus, parallel abstractions are implemented as soft-extensions to the hardware.  With suitable support, many firmware-implemented parallel abstractions would require only a handful of instructions with a similarly low number of cycles of overhead.
    9.20  
    9.21 +This arrangement solves a number of problems currently facing language designers and runtime implementers, as shall be seen throughout the rest of the paper. First, it makes all application-resident information available to control the innermost level of hardware, right down to swapping contexts in and out of registers. Second it increases practicality of domain-specific languages, which is one main path to high programmer productivity. Third it improves portability directly and supports a software stack arrangement that  may be a viable long-term solution to portability.
    9.22 +These claims may not be apparent at this point, but support for them will be pointed out throughout the paper.
    9.23 +
    9.24 +Expanding on the first claim, the semantics of constructs, and information extracted by the toolchain can both be used by the runtime in decisions about task contents, which task to which core, and order of task assignment. The communication pattern that results determines how much communication is overlapped with useful work, the energy of the computation, throughput, and average utilization.
    9.25  
    9.26  \begin{figure}[ht]
    9.27   \center{
    9.28 - \includegraphics[width=3in, height=2in]{../figures/Substitute_instr_with_firm-ware.eps}
    9.29 + \includegraphics[width=2.5in, height=1.7in]{../figures/Substitute_instr_with_firm-ware.eps}
    9.30   }
    9.31   \caption
    9.32   {A special \texttt{switch} op-code is recognized by the decode stage, and triggers fetch of instructions from firm-ware. The firm-ware instrs are provided to the OS as a ``hardware driver", and implement the runtime behavior of a language. The application communicates to the runtime by placing pointers to data-structures into registers just before executing the ``switch to runtime" instruction, which starts the fetch from firm-ware. Helper instructions accelerate common runtime operations, such as hash-table lookups, communication, search-for-optimum, and so on.   
    9.33 @@ -301,15 +306,22 @@
    9.34  \end{figure}
    9.35  
    9.36  
    9.37 -Precedence for such soft-extensions to instruction sets exists. The Alpha chips from DEC provided firmware that implemented complex VAX instructions this way.  A VAX ``firmware" instruction was executed by switching fetch over to a special memory that contained normal Alpha instructions, which implemented the functionality of the VAX instruction.
    9.38 +Expanding on the second claim, domain-specific languages are expected by many to be the path to  high productivity, but currently, each language requires significant effort to create, and more importantly to port to each hardware target. The small user-base of each language cannot support such cost, making domain-specific languages impractical. We will show how such a firm-ware runtime supports a style of software stack that minimizes the creation and porting effort for domain-specific languages [HWSim and codec lang].
    9.39  
    9.40 -An analogous approach is illustrated in Figure \ref{figTimeMapping}. Here, one op-code is set aside as the ``invoke runtime" operation.  Its execution causes instructions to switch to fetching from the firm-ware. Information is communicated via register contents, which point to data-structures that include a hardware defined portion and a language defined portion. 
    9.41 +The third claim, portability, occupies most of section \ref{secResponsibility}. 
    9.42 +
    9.43 +
    9.44 +\subsection{Soft-extension of instruction-set}
    9.45 +
    9.46 +Precedence for soft-extensions to instruction sets exists. The Alpha chips from DEC executed complex VAX instructions  by switching fetch over to a special memory containing normal Alpha instructions, which implemented the functionality.
    9.47 +
    9.48 +An analogous approach is illustrated in Figure \ref{figTimeMapping}. Here, one op-code is set aside as the ``switch to runtime" operation.  Its execution causes instructions to switch to fetching from the firm-ware. Information is communicated via register contents, which point to data-structures that include a hardware defined portion and a language defined portion. 
    9.49  
    9.50  This firmware was written by the language-provider, so it is separate from the executable. It implements the behavior of parallelism constructs of the language.
    9.51  
    9.52 -Such an approach addresses security, portability, and efficiency. It is secure because the OS controls the firm-ware. It is portable because the executable only contains the \emph{interface} to the constructs (implementation is separate).  It is efficient because the firm-ware runs in user-space, and switching to it costs the same as a \texttt{call} . This also improves application performance, if the hardware gives the firm-ware control over low-level behaviors such as hardware-supported swapping of contexts and control of hybrid cache/scratchpad memory.
    9.53 +Such an approach addresses security, portability, and efficiency. It is secure because the OS controls the firm-ware. It is portable because the executable only contains the \emph{interface} to the constructs (implementation is separate).  It is efficient because the firm-ware runs in user-space, and switching to it costs the same as a \texttt{call}. This also improves application performance, because firm-ware has control over low-level behaviors such as hardware-supported swapping of contexts and control of hybrid cache/scratchpad memory.
    9.54  
    9.55 -An important feature is that application information can directly affect hardware-level scheduling, communication, and other resource management. This is because the runtime has hardware control and receives application information such as the semantics of the parallelism construct invoked, data consumed by a task, and explicit information inserted by the toolchain, for the runtime. These affect the choice of what resources to assign to a given task, and when to suspend and resume tasks.
    9.56 +The firm-ware runtime receives application information in the data-structures, such as construct semantics and information extracted by the toolchain for the runtime. The firm-ware runtime uses the application information to control swapping execution-contexts, initiating communications, and any other  resource management. 
    9.57  
    9.58  Portability improves because only the \emph{interface} to constructs is encoded in the executable. Implementation is free to change from one processor to another, or even from one level of a machine's hierarchy to another.
    9.59  
    9.60 @@ -317,21 +329,21 @@
    9.61  
    9.62  Another portability benefit is realized when firm-ware becomes the application gateway to communication. This lets parallelism constructs be application-oriented, merely implying communications, without specifying or controlling details.
    9.63  
    9.64 -Instead, the  firm-ware  controls activities such as marshalling data and invoking the hardware to communicate it, while linking the communication status to  creation, suspension, and resumption of tasks.
    9.65 +Instead, the  firm-ware  controls activities such as marshalling data and invoking the hardware to communicate it. With both communication and hardware controlled by the runtime, communication  is linked to   suspension and resumption of tasks.
    9.66  
    9.67 -Figure X illustrates the breakdown of responsibilities, and Figure X shows dynamically the steps of invoking the firmware, sending communications, and suspending and resuming virtual processors that animate the tasks.
    9.68 +
    9.69  
    9.70  
    9.71  
    9.72  \subsection{Communication via separate helper processors}
    9.73  
    9.74 -Placing communication inside the firm-ware  makes it practical to add separate helper processors that overlap communication with computation, as illustrated in Fig \ref{figCommProcr}. These processors execute separate firm-ware,  supplied  either by the OS, or as part of the  executable.
    9.75 +Controlling communication inside the firm-ware  improves the practicality of adding separate helper processors for communication. They overlap communication with computation, as illustrated in Fig \ref{figCommProcr}. These processors execute separate firm-ware,  supplied  either by the OS, or as part of the  executable.
    9.76   
    9.77  
    9.78  
    9.79  \begin{figure}[ht]
    9.80   \center{
    9.81 - \includegraphics[width=3in, height=1.5in]{../figures/Separate_comm_processors.eps}
    9.82 + \includegraphics[width=3in, height=1.5in]{../figures/Separate_comm_processors_2.eps}
    9.83   }
    9.84   \caption
    9.85   {Communication is performed between local memory and remote memories via a separate communication processor.  This processor executes firm-ware that is loaded under OS control. For example, it may run a standard software-cache or run scatter-gather code extracted from the application.   
    9.86 @@ -343,7 +355,7 @@
    9.87   
    9.88  A cogent example is an application with complex data structures that are communicated between long-running tasks. During a task, some portion of the data-structure is bundled up and sent to another task. 
    9.89  
    9.90 -The language provides constructs for rendez-vous style send and receive, and constructs that identify the bundle-data and unbundle-data code.  Send and receive are implemented as part of the language, as runtime firm-ware. In contrast, the bundle and unbundle code is extracted from the application by the toolchain and packaged into the executable. During the run, an OS call causes that bundle and unbundle \emph{communication} firm-ware to be linked into the communication processors.
    9.91 +The language used provides constructs for rendez-vous style send and receive, plus constructs that identify the bundle-data and unbundle-data code.  Send and receive are implemented as part of the language, as runtime firm-ware. In contrast, the bundle and unbundle code is extracted from the application by the toolchain and packaged into the executable. During the run, an OS call causes that bundle and unbundle \emph{communication} firm-ware to be linked into the communication processors.
    9.92  
    9.93  When a task executes send or receive, the firm-ware swaps the context out, suspending the task, and replaces it with a non-blocked task. Simultaneously, the firm-ware causes the communication processor to execute bundle or unbundle code.  When communication completes, the task is unblocked.
    9.94  
    9.95 @@ -355,52 +367,51 @@
    9.96   
    9.97  Such bundle/unbundle doesn't work as well in cases where the data consumed has little predictability, or the application doesn't provide gather-scatter or bundle-unbundle information. In this case, the OS can link standard software-cache firm-ware into the communication processors.
    9.98  
    9.99 -Such a cache has the advantage of being able to swap-out tasks when it misses.  If the hardware makes the cost of switching tasks be on the order of a normal function call, this scheme provides an efficient way to overlap cache misses with useful work, without the large area and energy overhead of out-of-order pipelines..
   9.100 +Such a cache has the advantage of being able to swap-out tasks when it misses.  If the hardware makes the cost of switching tasks be on the order of a normal function call, this scheme provides an efficient way to overlap cache misses with useful work, without the large area and energy overhead of out-of-order pipelines.
   9.101  
   9.102 -   Another potential advantage is adjusting the cache characteristics during the run to better match the application. The characteristics of the phase of computation can be measured, or the toolchain can insert the results of analysis.
   9.103 +   Another potential advantage is adjusting the cache characteristics during the run to better match the application. The characteristics can be measured, or the toolchain can insert the results of analysis.
   9.104  
   9.105 -This would ideally be coupled with scratch-pad memory that is augmented with hardware that can treat a section of the memory as tags.  Special op-codes are implemented in the communication-processor to configure the tag memory, and then to cause tag-comparisons, and so on.  Previous work suggests that such a software cache would be only slightly slower than normal hard-wired caches, with modest area and energy overhead [].
   9.106 +This would ideally be coupled with scratch-pad memory that is augmented with hardware that can treat a section of the memory as tags.  The communication-processor is given control to configure the tag memory, and then to cause tag-comparisons, and so on.  Previous work suggests that such a software cache would be only slightly slower than normal hard-wired caches, with modest area and energy overhead [].
   9.107  
   9.108  \subsection{Speculation and Fast Control Message Support}
   9.109  
   9.110 -Hardware support for speculation will work especially well with a firm-ware runtime. Transactional memory[], thread-level speculation[], and higher-level speculative constructs[] could be all supported by generic lower-level mechanisms, which are in turn invoked by the firm-ware runtime.
   9.111 +Hardware support for speculation will work especially well with a firm-ware runtime coupled to a communication processor. Transactional memory[], thread-level speculation[], and higher-level speculative constructs[] could each be supported by generic lower-level mechanisms, which are in turn invoked by the firm-ware runtime.
   9.112  
   9.113 -This arrangement has the benefit of isolating hardware from a language's consistency-model and execution-model. There is no  longer a large penalty for mis-match.  To get this decoupling, hardware is simplified, by factoring the semantics out, leaving only  generic ``ordering'' primitives.   
   9.114 +This arrangement isolates hardware from the language consistency-model and execution-model. There is no  longer a large penalty for mis-match.  To get this decoupling, hardware is simplified, by factoring the semantics out, leaving only  generic ``ordering'' primitives.   
   9.115  
   9.116  
   9.117  
   9.118  \begin{figure}[ht!]
   9.119   \center
   9.120 - { \includegraphics[width=3in, height=1.5in]{../figures/Speculation_HW_support.eps}
   9.121 + { \includegraphics[width=2.3in, height=1.1in]{../figures/Speculation_HW_support.eps}
   9.122   }
   9.123   \caption
   9.124 - {  
   9.125 + {Tag memory and tag processing are added to local memory. The tags have an extra field used by tag processing to filter lines. It can generate a list of all tags that match in the extra field, can compare a list coming from the network to tag memory, tell the communication processor which local memory lines match a boolean expression on the extra field, and so on.  
   9.126    }
   9.127  \label{figSpecHW}
   9.128  \end{figure}
   9.129  
   9.130  
   9.131  
   9.132 -Fig \ref{figSpecHW} Illustrates such a refactoring, with hardware support for consistency and speculation. Example primitives include check-pointing, sand-boxing, and tie-points [cite web with tie-point videos], none of which imply application-visible semantics. Rather, they are used inside the firm-ware runtime to build transactional memory, thread-level speculation, and consistency models such as acquire-release, or flush-on-command.
   9.133 +Fig \ref{figSpecHW} shows a step towards such a refactoring. Hardware support is added in the form of tags plus processing, which can be used for check-pointing, sand-boxing, and speculative tie-points [cite tie-point videos]. They don't imply application-visible semantics. Rather, they are used inside the firm-ware  to build transactional memory, thread-level speculation, and consistency models such as acquire-release, or flush-on-command.
   9.134  
   9.135 -For check-pointing, local memory has tags, just as in caches, but with an additional field that holds a check-point number. Writes are only performed to lines with the same check-point number, and if none exist, a read is performed, of either the most recent previous check-point or fresh from remote memory. The hardware supports sending and comparing lists of lines with the same check-point number, as well as sending the lines from a particular checkpoint. This efficiently supports Thread-Level Speculation, with simple roll-back and commit.
   9.136 +For example, for check-pointing, the tags are just as in caches, but an additional field holds a check-point number. Writes are only performed to lines with the same check-point number, and if none exist, a read is performed, of either the most recent previous check-point or fresh from remote memory. The hardware supports sending and comparing lists of lines with the same check-point number, as well as sending only lines from a particular checkpoint. This efficiently supports Thread-Level Speculation, with roll-back and commit.
   9.137  
   9.138 -Sandboxes use the same hardware, except  instead of storing the check-point number, the extra tag holds the sandbox ID.  For transactional memory, each transaction started gets its own sandbox ID. This supports the TCC style transactional memory implementation[cite Lujan].
   9.139 +Sandboxes use the same hardware, except  instead of storing the check-point number, the extra tag field holds the sandbox ID.  For transactional memory, each transaction started gets its own sandbox ID. This supports the TCC style transactional memory implementation[cite Lujan].
   9.140  
   9.141 -Checkpoints may also be used to support shared-memory style consistency models, but speculatively.  New check-points are periodically generated, while previous ones are examined for conflicts. Examination takes place in communication processors, supported by hardware for comparing lists of tags. Conflicts cause roll-back, and restart with updated state from one of the conflicting local memories.
   9.142 +Checkpoints may also be used to support shared-memory style consistency models, but speculatively.  New check-points are periodically generated, while previous ones are examined for conflicts. Examination takes place in the communication processors, supported by hardware for comparing lists of tags. Conflicts cause roll-back, and restart with updated state from one of the conflicting local memories.
   9.143  
   9.144 - Such hardware can also be used to turn off the tight consistency of current snooping-based protocols for the bulk of computation, saving time and energy in the code that doesn't need it. Such consistency is only enabled for the few specialized portions of code that implement synchronization and communication using shared-variables, essentially for passing control-messages, such as in software-based mutex algorithms.
   9.145 + Such hardware can also be used to turn off the tight consistency of current snooping-based protocols for the bulk of computation, saving time and energy for the code that doesn't need it. Such consistency is only enabled for the few specialized portions of code, those that use shared variables as control-messages, such as in software-based mutex algorithms.
   9.146  
   9.147 -Another alternative is to only update shared memory when synchronization constructs indicate handoff of ownership.   This uses the sandbox hardware to track individual objects or data structures. The synchronization construct in the runtime firm-ware triggers the communication firm-ware to update all objects on the core gaining ownership, from modifications made on the core giving up ownership. This not only eliminates the time and energy lost to snooping and directory protocols, but also simplifies the programming model and removes non-portable shared-memory code from executables.
   9.148 +Another alternative is to only update shared memory when synchronization constructs imply handoff of ownership.   This uses the tag hardware to track individual objects or data structures. The synchronization construct in the runtime firm-ware triggers the communication firm-ware to update all objects on the core that gains ownership, from modifications made on the core giving up ownership. The tag-processing comparison functions make this fast and efficient. This not only eliminates the time and energy lost to snooping and directory protocols, but also simplifies the programming model and removes non-portable shared-memory code from executables.
   9.149  
   9.150 -These approaches rely upon having fast control messages that communicate lists of tags between cores, and allow the firm-ware runtimes to use only local data.
   9.151 -Runtime performance is highest when each core has its own local runtime state. Specialized high-speed ``control'' messages in hardware also let the local runtimes communicate constraint updates, and explicitly send task-stubs, for load-balance, to each other. 
   9.152 +These approaches rely upon having fast control messages that communicate things like lists of tags. Fast control messages allow each core to have its own runtime, with purely local state, which is the highest performance runtime approach. They use the high-speed control messages to communicate constraint updates,  explicitly send tasks to load-balance, etc. 
   9.153  
   9.154 -Such internal-to-runtime messages have only small amounts of data, while their latency is crucial to the runtime's responsiveness.  A slowly responding runtime will leave its core idle more often, because the rate of handling internal bookkeeping about tasks is slower than the rate of finishing those tasks. It is in this case that fast control messages become crucial [Charm++ runtime paper].
   9.155 +Such internal-to-runtime messages have only small amounts of data, but their latency is crucial to the runtime's responsiveness.  A slowly responding runtime will leave its core idle more often, because the rate of handling internal bookkeeping about tasks is slower than the rate of finishing those tasks. It is in this case that fast control messages become crucial [Charm++ runtime paper].
   9.156  
   9.157  \subsection{Example}
   9.158  
   9.159 -To illustrate such hardware in action, we walk through an application binary invoking the ``acquire mutex''  parallelism construct:  
   9.160 +To illustrate such hardware in action, we walk through an application binary as it invokes the ``acquire mutex''  parallelism construct:  
   9.161  \paragraph{setup and switch}
   9.162  At the appropriate place in the binary, instructions load one register with the pointer to a mutex structure, and another register with the pointer to the virtual-processor (VP) requesting the mutex-lock. Next, the \texttt{switch} instruction executes, which  switches fetch over to the firm-ware of the runtime, while saving the stack and frame pointers into the data-struct of the requesting VP.
   9.163  
   9.164 @@ -415,14 +426,14 @@
   9.165  
   9.166  The speculative access would be verified while computation continues. If memory consistency is performed only upon command of the runtime, and hardware supports check-point and rollback, such as in Lujan's work[] then computation can continue without speed penalty.
   9.167  
   9.168 -Notice that no atomic memory instructions have been used. Further, the executable contains nothing but interfaces to high-level constructs.  All operations have been local and fast, despite maintaining global consistency of  global address space.  
   9.169 +Notice that no atomic memory instructions have been used. Further, the application binary contains only \emph{interfaces} to high-level constructs.  All operations have been local and fast, despite maintaining global consistency of  global address space.  
   9.170  
   9.171  
   9.172  
   9.173 -\section{Which should be the responsibility / functionality of the programmer, the runtime software, and the hardware?}
   9.174 +\section{Which should be the responsibility / functionality of the programmer, the runtime software, and the hardware?} \label{secResponsibility}
   9.175  
   9.176  
   9.177 -With such a hardware arrangement, the responsibilities naturally break down along the lines of a software stack []. The goal of it is to support specialization, which is the process of transforming the original source into a form that is highly efficient on the target hardware. 
   9.178 +With such a hardware arrangement, the responsibilities naturally break down along the lines of a software stack []. The goal of it is to support specialization, which is the process of transforming the original source into a form that is highly efficient on the target hardware. This is the heart of portability.
   9.179  
   9.180  Each layer of the stack has some role in the specialization process, while the application, on top, provides the information that the rest of the stack needs while performing the specialization.  Ideally, the application must not expose hardware assumptions nor hinder specializations for particular targets.
   9.181  
   9.182 @@ -437,7 +448,7 @@
   9.183  
   9.184  In addition, high-quality specialization requires certain ``helpers"[].  These  enable: 1) modifying the layout and order of access of data, 2) modifying the size of a task, both the data consumed and code executed by it, and 3) predicting both execution-time  and data consumed by each task. An example is DKU [], which provides task-size-modification helpers.
   9.185  
   9.186 -The helpers are either derived by the toolchain, or encoded directly in the application via suitable constructs.  Either way, the domain-specific constructs must be designed such that the information is captured, and convenient for the tools to extract.
   9.187 +The helpers are either derived by the toolchain, or encoded directly in the application via suitable constructs.  Either way, domain-specific constructs must be designed such that the information is captured, and convenient for the tools to extract.
   9.188  
   9.189  One last concern is the creation of all these firm-ware runtimes.  It would be good to uniform-ize  them as much as possible. That reduces the work of creating one for a particular language, by reusing the interface over many languages. An example is the Virtualized Master-Slave interface[]. 
   9.190  
   9.191 @@ -450,12 +461,12 @@
   9.192  \paragraph{enabling future parallel programming models}
   9.193   \texttt{switch}-to-runtime supports current and enables foreseeable future parallel programming models.  It maintains very low overhead for them, by embedding the switch mechanism in the pipeline, and by providing hardware support for common runtime constraint-management and assignment operations like hash tables and context swapping. The combination of software flexibility, with efficiency, and the added bonus of bringing application information into the lowest-hardware-level resource management  appears strong.
   9.194  
   9.195 -\paragraph{innovative architectural execution models} Our position advocates isolating the architectural execution model from the programming model.  \texttt{switch}-to-runtime lets widely different hardware all implement the same programming model. This gives hardware freedom to explore, without code legacy constraining it.
   9.196 +\paragraph{innovative architectural execution models} Innovative architectural execution models are more practical when isolated from the programming model.  \texttt{switch}-to-runtime lets widely different hardware all implement the same programming model efficiently. This gives hardware freedom to explore without code legacy constraining it.
   9.197  However, high-speed internal-to-runtime messages, speculation support, and decoupled communication processors  may be considered elements of an architectural execution model advocated by our position.
   9.198  
   9.199 -\paragraph{novel memory hierarchies} Our position suggests that memories be coupled with their own communication processor that performs all movement of data to remote memories. Also that memories be configurable, to have tags that include check-point and sandbox IDs, along with hardware for sending lists of tags that have a given ID, and ability to check tags against such a list.
   9.200 +\paragraph{novel memory hierarchies} This would be coupling memories to their own communication processor that performs all movement of data to remote memories. Also that memories be configurable, to have tags that include check-point and sandbox IDs, along with hardware for sending lists of tags that have a given ID, and ability to check tags against such a list.
   9.201  Together, these features should efficiently implement transactional memory, thread-level speculation, acquire-release, and speculative implementation of the tighter variations on sequential consistency.
   9.202 -\paragraph{simplified and scalable memory models} The communication processor plus speculation hardware can support a wide variety of consistency models, including simplified high-level ones implied by domain-specific constructs. The speculation and linkage to the context-swapping allows memory consistency and communication to overlap work in the work processor. The scalability is left to communication firm-ware.
   9.203 +\paragraph{simplified and scalable memory models} The communication processor plus speculation hardware can support a wide variety of consistency models, including simplified high-level ones implied by domain-specific constructs. The speculation and linkage to context-swapping allows memory consistency and communication to be overlapped by work. Scalability is in the hands of communication firm-ware.
   9.204  
   9.205  \paragraph{high-level constructs for on-chip communications} Essentially any high-level communication construct can be implemented in firm-ware of the communication processors. Further, linkage between communication processor and  runtime in the work processor brings pipeline-level hardware control into the high-level constructs. High-level constructs can cause virtual-processors to be swapped out of hardware during communication, so that it is overlapped with useful work from a different context. 
   9.206  
   9.207 @@ -562,6 +573,29 @@
   9.208  
   9.209  -] should provide as much of what the abstraction layer contains as is reasonable.  Whether HW implements everything, and so replaces the abstraction layer, or some set of helpers that simplify and speed up the abstraction layer depends on how mature the abstraction is and area/energy/design-time/performance tradeoffs.
   9.210  
   9.211 +?
   9.212 +
   9.213 +Outline:
   9.214 +-] Premise: Runtime impls constrs in firm-ware, no constr in HW, RT supp in HW
   9.215 +
   9.216 +Because solves problems currently have, and enables big-three goals not possible with specific constructs in HW (if buy the domain-specific lang and custom construct vision)
   9.217 +
   9.218 +Problems to be solved: 
   9.219 +1)
   9.220 +2) 
   9.221 +3)
   9.222 +
   9.223 +
   9.224 +-] What want -- productivity (from domain-specific, and wide variety of constructs), portability (from unit-define, plus constraints, plus helpers, and no HW implications in progr model.. CnC is example), adoptability (current tools work with new, debugging, similar work-flow, separation of concerns ((perf tuning separated from app dev -- enough info in constructs that don't need separate app understanding)) )
   9.225 +-] Here is how current works: libGomp, pthreads based, message lib based, runtime as part of app (MPI, threads, TBB, -- contrast to CnC)
   9.226 +-] Problems with current -- isolates HW manage from app info, so penalty in utilization, throughput, and energy -- prob with constr in HW, prob w/atomic in HW, prob with current SW threads -- can't get wants 1, 2, and 3 because X
   9.227 +-] How new addresses the problems -- clears problems by X and Y -- achieves wants 1,2, and 3 by X -- runtime is hierarchical, matching hardware -- at bottom, every processor spends part time on runtime, part on work -- above that, runtime makes inter-node decisions.. it's treated as work by lower-level runtimes -- above that, runtime makes decisions about inter-rack.. decision is parallel work divided among the nodes.. their runtimes schedule as work -- shoot for 10% runtime overhead or so -- runtime complexity and sophistication increases as get higher in HW hierarchy (work sizes get bigger, so 10% allows much more optimization work as part of decision making)..
   9.228 +-] Benefits with new, not possible with old -- achieved via key difference 1, 2, and 3
   9.229 +1) Benefits: all constructs get lowest-level HW support -- what need to bring app info into task creation, content, assignment, resulting in comm pattern and overlap pattern -- constructs have to be able to control placement, suspension, swapping in and out of active work-processor, pattern of comm, and overlap..  suggested approach gives all that -- construct in HW doesn't -- construct in HW only makes sense if buy into idea that one set of constructs fits all..
   9.230 +
   9.231 +====================
   9.232 +
   9.233 +
   9.234  
   9.235  \section{Conclusion}\label{secConclusion}
   9.236  
    10.1 --- a/0__Papers/Future_Architecture/latex/Future_Architecture.tex.Backup	Sun Apr 08 13:11:55 2012 -0700
    10.2 +++ b/0__Papers/Future_Architecture/latex/Future_Architecture.tex.Backup	Tue Apr 10 07:23:24 2012 -0700
    10.3 @@ -259,7 +259,7 @@
    10.4  \bibliographystyle{plain}
    10.5  %
    10.6  
    10.7 -\title{Position:  Provide Hardware Support for Runtimes, Rather than Specific Parallelism Constructs}
    10.8 +\title{Position:  Support Runtimes in Hardware,\\  Rather than Specific Parallelism Constructs}
    10.9  
   10.10  \author
   10.11  {
   10.12 @@ -280,7 +280,7 @@
   10.13  
   10.14  The main premise is that no parallelism constructs should  be directly implemented in hardware, but rather separated into a new category of \emph{firmware} that is tightly integrated into the processor pipeline and managed by the OS.  We describe hardware structures that allow traditional thread constructs, domain-specific constructs, transactional memory,  and even consistency models be implemented with extremely low overhead, as well as cooperatively engage the language's runtime into pipeline-level  hardware-resource management.
   10.15  
   10.16 -We further take the position that software should be organized, into a stack, based around \emph{specialization} of source to target hardware. Each layer of the stack has a role in the specialization process, which spans the lifetime of application code as it goes through the stages of, development, transformation to hardware-specific form, installation, and execution.  Hence, the toolchain, hand-tuning, auto-tuners, multi-kernels, profiling, and binary optimization are all viewed as part of specialization. We describe infrastructure to encapsulate and organize these.
   10.17 +We further take the position that software should be organized into a stack, based around \emph{specialization} of source to target hardware. Each layer of the stack has a role in the specialization process, which spans the lifetime of application code as it goes through the stages of, development, transformation to hardware-specific form, installation, and execution.  Hence, specialization includes the toolchain, hand-tuning, auto-tuners, multi-kernels, profiling, and binary optimization. We describe infrastructure to encapsulate and organize these.
   10.18  \end{abstract}
   10.19  
   10.20  
   10.21 @@ -303,15 +303,15 @@
   10.22  
   10.23  Precedence for such soft-extensions to instruction sets exists. The Alpha chips from DEC provided firmware that implemented complex VAX instructions this way.  A VAX ``firmware" instruction was executed by switching fetch over to a special memory that contained normal Alpha instructions, which implemented the functionality of the VAX instruction.
   10.24  
   10.25 -An analogous approach is illustrated in Figure \ref{figTimeMapping}. Here, one op-code is set aside as the ``invoke runtime" operation.  Its execution causes instructions to switch to fetching from the firm-ware. Information is communicated via register contents, which point to data-structures that include a hardware defined portion, and a language defined portion. 
   10.26 +An analogous approach is illustrated in Figure \ref{figTimeMapping}. Here, one op-code is set aside as the ``invoke runtime" operation.  Its execution causes instructions to switch to fetching from the firm-ware. Information is communicated via register contents, which point to data-structures that include a hardware defined portion and a language defined portion. 
   10.27  
   10.28  This firmware was written by the language-provider, so it is separate from the executable. It implements the behavior of parallelism constructs of the language.
   10.29  
   10.30 -Such an approach addresses security, portability, and efficiency. It is secure because the OS controls the firm-ware. It is portable because the executable only contains the \emph{interface} to the constructs (implementation is separate).  It is efficient because the firm-ware runs in user-space, while a switch costs the same as the \texttt{call} instruction. It also improves application performance, if the hardware gives the firm-ware control over low-level behaviors, such as hardware-supported swapping of contexts and control of hybrid cache/scratchpad memory.
   10.31 +Such an approach addresses security, portability, and efficiency. It is secure because the OS controls the firm-ware. It is portable because the executable only contains the \emph{interface} to the constructs (implementation is separate).  It is efficient because the firm-ware runs in user-space, and switching to it costs the same as a \texttt{call} . This also improves application performance, if the hardware gives the firm-ware control over low-level behaviors such as hardware-supported swapping of contexts and control of hybrid cache/scratchpad memory.
   10.32  
   10.33 -An important feature, currently sought after, is that application information can directly affect hardware-level scheduling, communication, and other resource management. This is because they take place inside the runtime which receives application information each time it is invoked. Such application information includes the semantics of the parallelism construct invoked, data consumed by a task, and explicit information inserted by the toolchain, for use by the runtime. These affect the choice, of what resources to assign to a given task, and when to suspend and resume tasks.
   10.34 +An important feature is that application information can directly affect hardware-level scheduling, communication, and other resource management. This is because the runtime has hardware control and receives application information such as the semantics of the parallelism construct invoked, data consumed by a task, and explicit information inserted by the toolchain, for the runtime. These affect the choice of what resources to assign to a given task, and when to suspend and resume tasks.
   10.35  
   10.36 -Portability improves because only the interface to constructs is encoded in the executable. Implementation is free to change from one processor to another, or even from one level of a machine's hierarchy to another.
   10.37 +Portability improves because only the \emph{interface} to constructs is encoded in the executable. Implementation is free to change from one processor to another, or even from one level of a machine's hierarchy to another.
   10.38  
   10.39  \subsection{Communications via firm-ware}
   10.40  
   10.41 @@ -325,11 +325,25 @@
   10.42  
   10.43  \subsection{Communication via separate helper processors}
   10.44  
   10.45 -Placing communication inside the firm-ware  makes it practical to add separate helper processors that overlap communication with computation. These processors execute separate firm-ware,  supplied  either by the OS, or as part of the  executable.
   10.46 +Placing communication inside the firm-ware  makes it practical to add separate helper processors that overlap communication with computation, as illustrated in Fig \ref{figCommProcr}. These processors execute separate firm-ware,  supplied  either by the OS, or as part of the  executable.
   10.47   
   10.48 -A cogent example is an application with complex data structures that are communicated between long-running tasks. During the task, some portion of the data-structure is bundled up and sent to another task. 
   10.49  
   10.50 -The language provides rendez-vous style send and receive constructs, along with constructs that identify the bundle-data and unbundle-data code.  The send and receive are implemented as firm-ware, and supplied as language ``drivers" that the OS loads.  In contrast, the bundle and unbundle code is processed by the toolchain and translated into firm-ware that is packaged into the executable. During the run, the bundle and unbundle firm-ware is linked into the communication processors via an OS call.
   10.51 +
   10.52 +\begin{figure}[ht]
   10.53 + \center{
   10.54 + \includegraphics[width=3in, height=1.5in]{../figures/Separate_comm_processors.eps}
   10.55 + }
   10.56 + \caption
   10.57 + {Communication is performed between local memory and remote memories via a separate communication processor.  This processor executes firm-ware that is loaded under OS control. For example, it may run a standard software-cache or run scatter-gather code extracted from the application.   
   10.58 +  }
   10.59 +\label{figCommProcr}
   10.60 +\end{figure}
   10.61 +
   10.62 + 
   10.63 + 
   10.64 +A cogent example is an application with complex data structures that are communicated between long-running tasks. During a task, some portion of the data-structure is bundled up and sent to another task. 
   10.65 +
   10.66 +The language provides constructs for rendez-vous style send and receive, and constructs that identify the bundle-data and unbundle-data code.  Send and receive are implemented as part of the language, as runtime firm-ware. In contrast, the bundle and unbundle code is extracted from the application by the toolchain and packaged into the executable. During the run, an OS call causes that bundle and unbundle \emph{communication} firm-ware to be linked into the communication processors.
   10.67  
   10.68  When a task executes send or receive, the firm-ware swaps the context out, suspending the task, and replaces it with a non-blocked task. Simultaneously, the firm-ware causes the communication processor to execute bundle or unbundle code.  When communication completes, the task is unblocked.
   10.69  
   10.70 @@ -343,7 +357,7 @@
   10.71  
   10.72  Such a cache has the advantage of being able to swap-out tasks when it misses.  If the hardware makes the cost of switching tasks be on the order of a normal function call, this scheme provides an efficient way to overlap cache misses with useful work, without the large area and energy overhead of out-of-order pipelines..
   10.73  
   10.74 -   Another potential advantage is adjusting the cache characteristics during the run to better match the application. The characteristics of the phase of computation can be gathered, or the toolchain insert the results of analysis.
   10.75 +   Another potential advantage is adjusting the cache characteristics during the run to better match the application. The characteristics of the phase of computation can be measured, or the toolchain can insert the results of analysis.
   10.76  
   10.77  This would ideally be coupled with scratch-pad memory that is augmented with hardware that can treat a section of the memory as tags.  Special op-codes are implemented in the communication-processor to configure the tag memory, and then to cause tag-comparisons, and so on.  Previous work suggests that such a software cache would be only slightly slower than normal hard-wired caches, with modest area and energy overhead [].
   10.78  
   10.79 @@ -351,15 +365,36 @@
   10.80  
   10.81  Hardware support for speculation will work especially well with a firm-ware runtime. Transactional memory[], thread-level speculation[], and higher-level speculative constructs[] could be all supported by generic lower-level mechanisms, which are in turn invoked by the firm-ware runtime.
   10.82  
   10.83 -This arrangement has the benefit of isolating hardware from language's consistency-model and execution-model. There is no  longer a penalty for mis-match.  To get this decoupling, hardware is simplified, by factoring the semantics out, leaving only  generic ``ordering'' primitives. 
   10.84 +This arrangement has the benefit of isolating hardware from a language's consistency-model and execution-model. There is no  longer a large penalty for mis-match.  To get this decoupling, hardware is simplified, by factoring the semantics out, leaving only  generic ``ordering'' primitives.   
   10.85  
   10.86 -Example primitives include check-pointing, sand-boxing, and tie-points [cite web with tie-point videos], none of which imply application-visible semantics. Rather, they are used inside the firm-ware runtime to build transactional memory, thread-level speculation, and consistency models such as acquire-release, or flush-on-command.
   10.87  
   10.88 - In this way, the tight consistency of current snooping-based protocols can be turned off for the bulk of computation, saving time and energy in the code that doesn't need it. Such consistency is only enabled for the few specialized portions of code that implement synchronization and communication using shared-variables, essentially for passing control-messages, such as in  Lamport's bakery algorithm.
   10.89  
   10.90 -An alternative to snooping based consistency is to implement all communications and constructs that rely on consistency inside the firm-ware.  This not only simplifies hardware, but also removes non-portable code from executables.
   10.91 +\begin{figure}[ht!]
   10.92 + \center
   10.93 + { \includegraphics[width=3in, height=1.5in]{../figures/Speculation_HW_support.eps}
   10.94 + }
   10.95 + \caption
   10.96 + {  
   10.97 +  }
   10.98 +\label{figSpecHW}
   10.99 +\end{figure}
  10.100  
  10.101 -Runtime performance improves when each core has its own local runtime state. This works best with the addition of specialized high-speed ``control'' messages to the hardware.  The local runtimes communicate constraint updates, and explicitly send task-stubs, among themselves. 
  10.102 +
  10.103 +
  10.104 +Fig \ref{figSpecHW} Illustrates such a refactoring, with hardware support for consistency and speculation. Example primitives include check-pointing, sand-boxing, and tie-points [cite web with tie-point videos], none of which imply application-visible semantics. Rather, they are used inside the firm-ware runtime to build transactional memory, thread-level speculation, and consistency models such as acquire-release, or flush-on-command.
  10.105 +
  10.106 +For check-pointing, local memory has tags, just as in caches, but with an additional field that holds a check-point number. Writes are only performed to lines with the same check-point number, and if none exist, a read is performed, of either the most recent previous check-point or fresh from remote memory. The hardware supports sending and comparing lists of lines with the same check-point number, as well as sending the lines from a particular checkpoint. This efficiently supports Thread-Level Speculation, with simple roll-back and commit.
  10.107 +
  10.108 +Sandboxes use the same hardware, except  instead of storing the check-point number, the extra tag holds the sandbox ID.  For transactional memory, each transaction started gets its own sandbox ID. This supports the TCC style transactional memory implementation[cite Lujan].
  10.109 +
  10.110 +Checkpoints may also be used to support shared-memory style consistency models, but speculatively.  New check-points are periodically generated, while previous ones are examined for conflicts. Examination takes place in communication processors, supported by hardware for comparing lists of tags. Conflicts cause roll-back, and restart with updated state from one of the conflicting local memories.
  10.111 +
  10.112 + Such hardware can also be used to turn off the tight consistency of current snooping-based protocols for the bulk of computation, saving time and energy in the code that doesn't need it. Such consistency is only enabled for the few specialized portions of code that implement synchronization and communication using shared-variables, essentially for passing control-messages, such as in software-based mutex algorithms.
  10.113 +
  10.114 +Another alternative is to only update shared memory when synchronization constructs indicate handoff of ownership.   This uses the sandbox hardware to track individual objects or data structures. The synchronization construct in the runtime firm-ware triggers the communication firm-ware to update all objects on the core gaining ownership, from modifications made on the core giving up ownership. This not only eliminates the time and energy lost to snooping and directory protocols, but also simplifies the programming model and removes non-portable shared-memory code from executables.
  10.115 +
  10.116 +These approaches rely upon having fast control messages that communicate lists of tags between cores, and allow the firm-ware runtimes to use only local data.
  10.117 +Runtime performance is highest when each core has its own local runtime state. Specialized high-speed ``control'' messages in hardware also let the local runtimes communicate constraint updates, and explicitly send task-stubs, for load-balance, to each other. 
  10.118  
  10.119  Such internal-to-runtime messages have only small amounts of data, while their latency is crucial to the runtime's responsiveness.  A slowly responding runtime will leave its core idle more often, because the rate of handling internal bookkeeping about tasks is slower than the rate of finishing those tasks. It is in this case that fast control messages become crucial [Charm++ runtime paper].
  10.120  
  10.121 @@ -372,13 +407,13 @@
  10.122  In this example, the hardware specifies a ``virtual processor'' (VP) data structure. It begins with a hardware defined portion that the \texttt{switch} instr automatically manages.
  10.123  
  10.124  \paragraph{runtime internals}
  10.125 -Runtime code now executes from the protected firm-ware location. The code for mutex-acquire expects a pointer to a mutex struct in a particular register, checks the ``current owner'' field, if empty writes the pointer to the VP (held in another register) into it, and marks the VP as unblocked. Similarly, if the mutex is already owned, it places the VP into the mutex struct's queue.
  10.126 +After \texttt{switch}, runtime code executes from the protected firm-ware. The code for mutex-acquire expects a pointer to a mutex struct to be in a particular register, checks the ``current owner'' field, and if empty writes the pointer to the VP (held in another register) into it. It then marks the VP as unblocked. Similarly, if the mutex is already owned, it places the VP into the mutex struct's queue, where it remains blocked.
  10.127  
  10.128  Most importantly, if the mutex is already owned, the runtime swaps the requesting VP out from the hardware context. It swaps in an unblocked VP.
  10.129  
  10.130 -The execution time can be on the order of 10 cycles. Such speed requires  hardware support for swapping VPs in and out, such as set-aside cache or scratch-pad memory with a wide port to registers, and speculative access to the mutex data-structure. This makes all memory operations local and fast.  
  10.131 +The execution time of this can be on the order of 10 cycles. Such speed requires  hardware support for swapping VPs in and out, such as set-aside cache or scratch-pad memory with a wide port to registers, and speculative access to the mutex data-structure. This makes all memory access local and fast.  
  10.132  
  10.133 -The speculative access would be verified while computation continues. If memory consistency is performed only upon command of the runtime, and hardware supports check-points and rollback, such as in Lujan's work[] then computation can continue without speed penalty.
  10.134 +The speculative access would be verified while computation continues. If memory consistency is performed only upon command of the runtime, and hardware supports check-point and rollback, such as in Lujan's work[] then computation can continue without speed penalty.
  10.135  
  10.136  Notice that no atomic memory instructions have been used. Further, the executable contains nothing but interfaces to high-level constructs.  All operations have been local and fast, despite maintaining global consistency of  global address space.  
  10.137  
  10.138 @@ -387,37 +422,42 @@
  10.139  \section{Which should be the responsibility / functionality of the programmer, the runtime software, and the hardware?}
  10.140  
  10.141  
  10.142 -With such a hardware arrangement, the responsibilities naturally break down along the lines of a software stack. The goal of it is to support specialization, which is the process of transforming the original source into a form that is highly efficient on the target hardware. 
  10.143 +With such a hardware arrangement, the responsibilities naturally break down along the lines of a software stack []. The goal of it is to support specialization, which is the process of transforming the original source into a form that is highly efficient on the target hardware. 
  10.144  
  10.145  Each layer of the stack has some role in the specialization process, while the application, on top, provides the information that the rest of the stack needs while performing the specialization.  Ideally, the application must not expose hardware assumptions nor hinder specializations for particular targets.
  10.146  
  10.147 -The proposed hardware naturally supports such a stack. The bottom layer is the set of firm-ware runtime implementations.
  10.148 -
  10.149 -The application only exposes the interface to such runtimes. This alone doesn't ensure portability, but it goes a long way towards that goal, by removing the largest source of hardware-specific information.
  10.150 +The proposed hardware naturally supports such a stack. The bottom layer is an interface to simplify creation of the firm-ware runtime implementations. The set of runtimes themselves forms the next layer above that. Above the runtimes is the set of toolchains that generate the executables that talk to the runtimes. Above the toolchains is the set of language-interfaces, and above that, at the top, is the set of applications.
  10.151 + 
  10.152 +The applications only expose constructs, ones designed to avoid hardware implications. Languages with such constructs include CnC[], WorkTable[] and HWSim []. The concurrency constructs are implemented by the runtimes. This alone doesn't ensure portability, but it goes a long way towards that goal, by removing the largest source of hardware-specific information.
  10.153  
  10.154   
  10.155 -Such a stack supports high productivity through domain-specific languages, making them simple to create, easy to port across hardware, and high performance. The application programmer is responsible only for application-relevant concepts, reducing their learning curve and matching their mental model to the language.  They have domain-specific parallelism constructs provided, either embedded-style as library calls, or with compiler support.
  10.156 +Such a stack supports high productivity through domain-specific languages, such as HWSim, making them simple to create, easy to port across hardware, and high performance. The application programmer is responsible only for application-relevant concepts, reducing their learning curve and matching their mental model to the language.  They have domain-specific parallelism constructs provided, either embedded-style as library calls, or with compiler support.
  10.157  
  10.158  The constructs help specialization by identifying the tasks, the constraints on scheduling the tasks, and the data to be communicated between tasks.
  10.159  
  10.160 -In addition, high-quality specialization requires certain ``helpers"[].  These  enable: 1) modifying the layout and order of access of data, 2) modifying the size of a task, both the data consumed and code executed by it, and 3) predicting both execution-time  and data consumed by each task.
  10.161 +In addition, high-quality specialization requires certain ``helpers"[].  These  enable: 1) modifying the layout and order of access of data, 2) modifying the size of a task, both the data consumed and code executed by it, and 3) predicting both execution-time  and data consumed by each task. An example is DKU [], which provides task-size-modification helpers.
  10.162  
  10.163  The helpers are either derived by the toolchain, or encoded directly in the application via suitable constructs.  Either way, the domain-specific constructs must be designed such that the information is captured, and convenient for the tools to extract.
  10.164  
  10.165 +One last concern is the creation of all these firm-ware runtimes.  It would be good to uniform-ize  them as much as possible. That reduces the work of creating one for a particular language, by reusing the interface over many languages. An example is the Virtualized Master-Slave interface[]. 
  10.166 +
  10.167 +
  10.168 +
  10.169  
  10.170  
  10.171  \section{Specific Topics of Interest}
  10.172  Now that a position has been stated, let us examine how it applies to the topics of interest, to check its consistency and usefulness.
  10.173  \paragraph{enabling future parallel programming models}
  10.174 - The concept of  switch-to-runtime appears to be fully general, such that it supports all current and any foreseeable parallel programming models.  It maintains very low overhead for them, by embedding the switch mechanism in the pipeline and providing hardware support for common runtime constraint-management and assignment operations. The combination of software flexibility, with efficiency, and the added bonus of bringing application information into the lowest-hardware-level resource management  appears strong.
  10.175 + \texttt{switch}-to-runtime supports current and enables foreseeable future parallel programming models.  It maintains very low overhead for them, by embedding the switch mechanism in the pipeline, and by providing hardware support for common runtime constraint-management and assignment operations like hash tables and context swapping. The combination of software flexibility, with efficiency, and the added bonus of bringing application information into the lowest-hardware-level resource management  appears strong.
  10.176  
  10.177 -\paragraph{innovative architectural execution models} Our position doesn't necessarily advocate a particular architectural execution model.  However, the concept of switch-to-runtime cleanly separates the hardware execution model from the programming model, which is a benefit because it gives hardware more freedom to explore, without code legacy constraining it. However, high-speed internal-to-runtime messages, speculation support, and decoupled communication processors  may be considered elements of an architectural execution model.
  10.178 +\paragraph{innovative architectural execution models} Our position advocates isolating the architectural execution model from the programming model.  \texttt{switch}-to-runtime lets widely different hardware all implement the same programming model. This gives hardware freedom to explore, without code legacy constraining it.
  10.179 +However, high-speed internal-to-runtime messages, speculation support, and decoupled communication processors  may be considered elements of an architectural execution model advocated by our position.
  10.180  
  10.181 -\paragraph{novel memory hierarchies} -- helper cores run code for movement
  10.182 +\paragraph{novel memory hierarchies} Our position suggests that memories be coupled with their own communication processor that performs all movement of data to remote memories. Also that memories be configurable, to have tags that include check-point and sandbox IDs, along with hardware for sending lists of tags that have a given ID, and ability to check tags against such a list.
  10.183 +Together, these features should efficiently implement transactional memory, thread-level speculation, acquire-release, and speculative implementation of the tighter variations on sequential consistency.
  10.184 +\paragraph{simplified and scalable memory models} The communication processor plus speculation hardware can support a wide variety of consistency models, including simplified high-level ones implied by domain-specific constructs. The speculation and linkage to context swapping allows memory consistency and communication to overlap work in the work processor. The scalability is left to communication firm-ware.
  10.185  
  10.186 -\paragraph{simplified and scalable memory models} -- name-space idea
  10.187 -
  10.188 -\paragraph{high-level constructs for on-chip communications} -- implemented in plugin
  10.189 +\paragraph{high-level constructs for on-chip communications} The communication processors, with their own firm-ware, enable efficient implementation of essentially any high-level construct. Further, linkage between communication processor and firm-ware runtime in the work processor brings pipeline-level hardware control into the high-level constructs. As a result, high-level constructs can not only imply communications, but cause virtual-processors to be swapped out of hardware during communication so that it is overlapped with useful work from a different context. 
  10.190  
  10.191  \paragraph{characterization of the runtime overheads of parallel applications}
  10.192  
  10.193 @@ -436,9 +476,7 @@
  10.194  
  10.195  -] "speculative exclusive access to local memory-line"
  10.196  
  10.197 --] ultra-fast control messages between cores for use *inside runtime* only
  10.198  
  10.199 --] Fast context switching.. either a reserved HW ctxt that is just for the runtime or else HW support for saving a ctxt check-point and later restoring it (in universal runtime, save ctxt checkpoint before using that ctxt to do runtime code)
  10.200  
  10.201  -] HW to create a "soft" ctxt (a virtual processor with stack), checkpoint it and restore a checkpoint..
  10.202  
  10.203 @@ -450,20 +488,14 @@
  10.204  
  10.205  -] HW to support "namespace", which is a chunk of allocated memory that a virtual-processor sees..  all pointers within a namespace are offsets from the start of the namespace.. so have a reserved register that holds namespace base addr, and pointers are added to that to get final addr.  Makes pointers equivalent to global, but relocatable.  A namespace is essentially a stack with only one frame.  When access an out-of-namespace pointer, the target namespace is accessed, the data brought over, added to the end (or malloc'd into the namespace), and pointers within the data are translated to new offsets.  This provides automated HW management of distributed memories.  If out-of-namespace pointer is within same addr-space, then it is directly accessed -- HW has a number of base-addr regs, which it can swap in and out 
  10.206  
  10.207 --] HW for tracking changes in local memories (whether cache or scratch-pad, HW support for "this unit contains changes from previous mark-point" -- for cache, means "line is dirty", for scrath-pad, means "line has been written since previous check-point") 
  10.208  
  10.209 --] HW support for speculation.. transactional memory is a speculation mechanism
  10.210 -
  10.211 --] HW support for independent code that manages memory transfers, such as scatter-gather, fill namespace from remote memory (runs in separate context, moves data between local memory and remote, including main-memory -- the context has access to the "changed" markers) -- this code performs translation of pointers from previous memory-space to new memory-space.. so pointers become base plus offset where base is start of the memory-space)
  10.212 +-] HW support for independent code  performs translation of pointers from previous memory-space to new memory-space.. so pointers become base plus offset where base is start of the memory-space
  10.213  
  10.214  -] HW support for memory spaces.. all data is viewed as existing within a memory-space, where that memory-space is a HW entity.. it has a start address and a length, so all pointers are offsets from the start addr (goes back to early main-frame ideas)  In code, no difference from shared-memory -- all data is within a data-struct or array, and data-structs contain pointers -- difference is that code is supplied either by language-impl or by programmer that translates the pointers when data is copied or moved to a different memory-space.  Each memory-space exists inside an addr-space, but is fully repositionable just by changing the base pointer..  Thinking one memory-space per virtual processor (SW ctxt)?  
  10.215  
  10.216 -======================
  10.217 +=======================================
  10.218  
  10.219 -Vision: app invoking a parallelism construct equals switch over to runtime HW ctxt (or checkpoint current), then perform construct semantics using the high-speed comm.. As an example, to implement the CAS instr, would switch to runtime, perform "exclusive access to memory-line" instr then compare, brch, write, etc
  10.220 -
  10.221 -===================================
  10.222 -Taking a software stack as the organization of parallel software, with application code at the top, held within development tools, and resting upon a language interface.. (PStack picture)  note, the runtime is separate from the executable, in this stack.  The separation allows a single executable to run without modification on several versions of hardware, even though the runtime uses specialized hardware instructions.
  10.223 +application code at the top, held within development tools, the runtime is separate from the executable, in this stack.  The separation allows a single executable to run without modification on several versions of hardware, even though the runtime uses specialized hardware instructions.
  10.224  
  10.225  The end point is the triple goal: Productivity, Performant-Portability, and Adoptability.
  10.226  
  10.227 @@ -488,7 +520,8 @@
  10.228  
  10.229  
  10.230  -] provide for toolchain to manipulate data-size of work-unit and code-content of work-unit, provide for data ancestry ("data footprint") to be tracked among work-units, provide for prediction of execution time of a work-unit, for real-time provide stating real-time related constraints on scheduling of units (latency, deadlines, quality relationship)
  10.231 --- note, these don't all have to be language constructs, but could be, for example, code-snippets supplied to the language, via a construct.  The snippets are then used either in the toolchain or in the runtime.  Examples: DKU for task re-sizing, WorkTable for dynamic dependencies (H264 wait-unitl example)
  10.232 +
  10.233 +-- note, these don't all have to be language constructs, but could be, for example, code-snippets supplied to the language, via a construct.  The snippets are then used either in the toolchain or in the runtime.  Examples: DKU for task re-sizing, WorkTable for dynamic dependencies (H264 wait-until example)
  10.234  -- purpose of each is in terms of the specialization process.  Specialization is the embodiment of performant portability -- the term means any changes to UCC done for purposes of performance (define UCC).
  10.235  
  10.236  Toolchain Layer: 
  10.237 @@ -532,15 +565,6 @@
  10.238  
  10.239  
  10.240  
  10.241 -=============================
  10.242 -Process technology is rapidly approaching multiple fundamental physical limits that combine to increase the cost of producing chips faster than the increase in density.  Whether or not process technology continues to shrink, the economics will slow the demand for chips from future processes.  This will, for the first time, shift the design decisions from being shortest time-to-market towards being the greatest efficiency per transistor -- either in computation delivered towards the goal end-user measurement such as throughput, or in energy per operation.
  10.243 -  
  10.244 -The implication for processor architecture is to accelerate the trend away from "easy to program" structures such as out-of-order pipelines and coherent shared memory, and towards hierarchical designs that force application information to be exploited in explicitly managing the placement and movement of data, in order to keep it as local for as much of the computation as possible.  The cost of communication will be the dominant factor driving the shape of future architectures, both from a computation-bottleneck cost and an energy per operation cost.
  10.245 -
  10.246 -Integration will be pushed towards the third dimension in order to mitigate the communication costs -- indeed main memories have long been on that path.  This approach will hasten the development of 3 dimensional integration processes.  The architecture implication is that 
  10.247 -
  10.248 -
  10.249 -==========
  10.250  
  10.251  \bibliography{Bib_for_papers}
  10.252