Subject: Re: Jaguar Paper for Java Grande Special Issue Resent-Date: Tue, 26 Oct 1999 18:07:32 -0400 Resent-From: Geoffrey Fox Resent-To: p_gcf@npac.syr.edu Date: Tue, 26 Oct 1999 15:08:52 -0700 From: Matt Welsh To: Geoffrey Fox Geoffrey, Here is the final version of the Jaguar paper in PostScript form. If you need to get this from the Web, it's at: http://www.cs.berkeley.edu/~mdw/papers/jaguar-journal.ps.gz I incorporated almost all of the reviewer's comments. There were two major suggestions which I decided were infeasible: 1) To actually run VIA over JNI is actually quite a bit of work, given the current structure of the code and the complexity of writing JNI methods in the first place. I am quite confident that my estimations of VIA-over-JNI performance are adequate for the discussion here. At any rate, I have shown that even if my estimations were an order of magnitude off, JNI would still seriously underperform Jaguar! 2) One suggestion was to compare Jaguar with Microsoft's J/Direct. Unfortunately there is very little information available on the internals of J/Direct and I do not wish to use or evaluate Microsoft products in my research. If either of these seem like serious problems to you, let me know, and I will work to resolve them. However, I don't think they are central to the point of this paper. Thanks much! Matt Welsh -------------------- %!PS-Adobe-2.0 %%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com) %%Title: jaguar-journal.dvi %%Pages: 14 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%EndComments %DVIPSCommandLine: dvips -o jaguar-journal.ps jaguar-journal %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 1999.10.25:2154 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} forall round exch round exch]setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} {adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] }if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[ (Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale true def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 39158280 55380996 1000 600 600 (jaguar-journal.dvi) @start %DVIPSBitmapFont: Fa cmmi10 10 1 /Fa 1 23 df22 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fb cmtt10 10 42 /Fb 42 123 df<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80EB7F0013FE485A485A 5B12075B120F5B485AA2123F90C7FCA25A127EA312FE5AAC7E127EA3127F7EA27F121FA2 6C7E7F12077F12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8EB03FC130113001438 164272B92C>40 D<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E6C7E137F7F1480131F 14C0130FEB07E0A214F01303A214F81301A314FC1300AC130114F8A3130314F0A2130714 E0A2EB0FC0131F1480133F14005B13FE485A485A485A485AEA3FC0485A48C7FC5A5A1270 164279B92C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46 D<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390381F83F0A590383F01F8 A490387E00FCA549137E90B512FEA34880A29038F8003FA34848EB1F80A4000715C04913 0FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>65 D<007FB512E015F8B612FE6C 8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF80 90B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501ED00FCA216FE167EA616FE16 FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE0015F027337FB22C>I<02FF 13700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848131FD807F0130F1507 485A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E127EA3007F15F06CEC 01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB3FC03A00FF81FF806D B512006D5B010F5B6D13F00100138025357DB32C>I<007FB5FCB612C015F0816C803907 E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F81501A4ED00FCACED01F8 A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE007FB55AB65A5D15C06C 91C7FC26337EB22C>I<007FB512F8B612FCA36C14F839000FC000B3B3A5007FB512F8B6 12FCA36C14F81E3379B22C>73 D<0107B512804914C0A36D148090390003F000B3AF1218 127EA2B4FCA24A5A48130F007F131F9038C07FC06CB55A6C91C7FC6C5B000313F838007F C022347BB22C>I77 D79 D<007FB512C0B612F88115FF6C15802603F00013C015 3FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90B612801600 15FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<387FFFFCB67E15E015F8 6C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC01FE140790B55A 5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF0081 5E6C486D5AC8EA01F029347EB22C>82 D<90381FF80790B5EA0F804814CF000714FF5A38 1FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F00007E91C7FC127F7F EA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F9038007FFEEC07FF0200 1380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F806D133F01E0EB7F00 9038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357CB32C>I<007FB612FC B712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2497F6D5BA227337EB22C >I86 DI<3801FF F0000713FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3EC FFFE131F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB80 03383FE01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>97 DI<903803FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848 131890C9FC5A127EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE 03FF6CB55A6C5C6C6C5B011F13E0010390C7FC21247AA32C>IIIIII<1307 EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512 FCB612FEA36C14FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA7 48B512804814C0A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFFFC6C 5B5C001F5B000790C7FC1A467CB32C>II<387FFFE0B57EA37EEA0003B3B3A5007FB612 80B712C0A36C158022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF 13FF91B57E3A07FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7F FC3FF87FF0027F13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01F E039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA2 5BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>II<397FF01FE039FF F8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE091380007F049EB03F85BED 01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138 E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA3 2C>I114 D<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F1400 13F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00 FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC 0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0 A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I< 3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7 FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C 15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC 013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA2 6D5A147C27247EA32C>II<3A3FFF03 FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E09038 0FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB 0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514 FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0 000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F 815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E14 7CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA 07E027367EA32C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A00 3C495AC7485A4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49C8FC4848 EB01E04848EB03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fc cmtt9 9 62 /Fc 62 127 df40 D<127012F812FE7E6C7E6C7EEA0FE0 6C7E12037F6C7E1200137EA27FA2EB1F80A3EB0FC0A4EB07E0ACEB0FC0A4EB1F80A3EB3F 00A2137EA25B1201485A5B1207485AEA3FC0485A48C7FC5A12F81270133A7AB327>I<13 0F497EA60078EB81E000FEEB87F000FF138FEBDFBF6CB512E06C14C0000F1400000313FC C613F0A2000313FC000F13FF003F14C04814E039FFDFBFF0EB1F8F00FE13870078EB81E0 0000EB8000A66DC7FC1C207BA627>I<007FB512F8B612FCA46C14F81E067C9927>45 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A728927>I<1538157C15FCA2140115F8 140315F0140715E0140F15C0141F1580143F1500A25C147E14FE5C13015C13035C13075C 130F5CA2131F5C133F91C7FC5B137E13FE5B12015B12035BA212075B120F5B121F5B123F 90C8FC5A127E12FE5AA25A12781E3A7CB327>II<130E131FA25B 5BA25B5A5A127FB5FCA213BFEA7E3F1200B3AA003FB512805A15C01580A21A2F79AE27> II52 D<14FF010713C0011F13F04913F890B5FC48EB81FC3803FE0113F8EA07F0EA0FE090 38C000F8001F1400485A90C8FCA25A127EEB0FF838FE3FFE48B51280B612C015E09038F8 0FF09038E007F890388001FC90C7FC15FE48147E157F153FA3127EA3127F6C147F157E6C 6C13FE9038C001FC120F9038F007F83907F81FF06CB512E06C14C06C148090383FFE00EB 0FF820307DAE27>54 D56 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E 00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A20729F27>I<120FEA3FC0A2EA7F E0A4EA3FC0A2EA0F00C7FCAC120FEA3F8013C0127F13E0A3123FA2120F120713C0120FA2 EA3F80EA7F005A5A12F812700B2A739F27>I65 D<007FB5FCB612C08115F87E3907E003FCEC00FE157E157F81A6157EA25D1403EC0FF890 B55A15C015F081819038E000FE157FED3F80151FA2ED0FC0A6151F1680153FED7F004A5A 007FB55AB65A5D15E06C1480222E7FAD27>I<903803F80E90381FFE1F90383FFFBF90B6 FC5A3803FE0F3807F803497E48487E485A49137FA248C7123FA25A127E151E150012FE5A AA7E127EA2151E007F143F7EA26C7E157F6D137E6C6C13FE3907F001FCEBF8033903FE0F F86CB512F06C14E0013F13C06D1300EB03F820307DAE27>I<387FFFFC14FFB612C06C80 813907E00FF81407EC01FC6E7EA2157E157F811680151FA316C0150FABED1F80A3153F16 00A25D15FEA24A5A4A5A140F007FB55A5DB65A6C91C7FC14FC222E7FAD27>I<007FB612 80B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91 C8FCA4ED03C0ED07E0A7007FB6FCB7FCA36C15C0232E7FAD27>I<007FB61280B712C0A3 7E3907E0000FA6ED078092C7FCA4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCAC387F FF80B57EA36C5B222E7EAD27>I<007FB512E0B612F0A36C14E039001F8000B3B2007FB5 12E0B612F0A36C14E01C2E7BAD27>73 D<90381FFFF84913FCA36D13F89038001F80B3AC 127CA212FEA2EC3F005C387F81FE13FF6C5B6C5B000713E0C690C7FC1E2F7BAD27>I77 D79 D<007FB5FCB612E081816C803907E003FEEC00FF81ED3F80151F16C0150FA6151F168015 3FED7F005DEC03FE90B55A5D5D5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27> II<387FFFF0B512FE6E7E816C803907E01FF014076E7E1401811400A514015D14034A5A 141F90B55A5D5DA281EBE01F6E7E14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016 E06C48EB7FC0C8EA1F00252F7FAD27>I<90387FC0E03901FFF1F0000713FF5A5AEA3FE0 EB801F387F000F007E130712FE5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E 6C13F86C13FE6CEBFF80C614C0010F13E0010013F0140FEC07F81403140115FC14001278 12FCA46CEB01F8A26C130390388007F09038F01FE090B5FC15C0150000F85B38701FF81E 307CAE27>I<007FB61280B712C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512 C04880A36C5C222E7EAD27>I<3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3 AB6D133F00031500A26D5B0001147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D 5BD901FEC7FC262F80AD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E 00A46C6C5BA4EBF80100015CA46C6C485AA490387E07E0A56D485AA4011F5B149FA3010F 90C7FCA5EB07FEA46D5AA26D5A242F7FAD27>I<007FB512F8B612FCA46C14F81E067C7E 27>95 D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB 0FFF137F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB6 12806C15C07E000313F1C69038807F8022207C9F27>97 DIIIII<15 3F90391FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB80 0F48486C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA2 7F6CB5FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C14 0F007C1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC 23337EA027>II<130F 497E497EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F8 15F07E1D2F7BAE27>I<143C147E14FFA4147E143C1400A73801FFFE4813FFA37EC7123F B3B0147E1238007C13FE38FE01FC1303B512F814F06C13E06C13803807FE0018407CAE27 >II<387FFF 80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF 9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001C01300A3EB80 3EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801C313002920819F27>I<38 7FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83 FFE0B500C713F0A36C018313E024207F9F27>II<387FE0FFD8FFF313C090B512F0816C800003EB81FE49C67E49EB3F 8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEBFF009038FF83 FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B23317F9F27>I<90 380FF03C90383FFE7E90B5FC000314FE5A380FFC1F381FE007EBC003383F800148C7FC12 7EA200FE147E5AA67E007E14FEA2007F1301EA3F80EBC003381FE007380FF81F6CB5FC7E 6C147E38007FFCEB0FF090C7FCAC91381FFFF8A24A13FC6E13F8A226317E9F27>I<397F FC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002 004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>I<9038FFF3800007 EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC00 0713FF00011480D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0 EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0 B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E00103 13C0010013001F297EA827>I<397FE01FF8486C487EA3007F131F00031300B21401A214 03EBFC0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27>I<3A7FFC0FFF80486C48 13C0A36C486C13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390 387C0F80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7F FE07FFE000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F839 03E3FC7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F 9F27>I<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D 5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00 016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF 80486C4813C0A36C486C13803A07E000F800000313015D13F00001130301F85B1200A26D 485A137CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301 A25CA213035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C0 22317E9F27>I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF0001EEB1FE0C7 EA3FC0EC7F80ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E4848133F48 5A485A485A485AB7FCA46C14FE20207E9F27>II125 D<3901F003803903FC07C0000F130F381FFE1F393FFF7F80397FBFFF0038FE1FFE486C5A 00F813F0387003E01A0A7AAD27>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fd cmmi9 9 1 /Fd 1 23 df<1307D90FC01338011F147C16FC5CA2013F1301A202005BA2491303A2017E 5CA201FE1307A2495CA20001140FA2495C17800003021F13C016C149EC8180A20007EC3F 836D017F130016034B5A3A0FFC03CF869039FE070F8E9039DFFE07FC9039C3F801F0D81F C0C9FCA25BA2123FA290CAFCA25AA2127EA212FEA25A12382A327FA02E>22 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fe cmbx9 9 29 /Fe 29 122 df<1507ED0F80A2151F1600A25D153E157E157CA215FC5D14015DA214035D 14075DA2140F5D141F92C7FCA25C143E147E147CA214FC5C13015CA213035C13075CA213 0F5C131F91C8FCA25B133E137E137CA213FC5B12015BA212035B12075BA2120F5B121F90 C9FCA25A123E127E127CA212FC5AA21270214B7BB72C>47 D 66 DI73 D<010FB512FEA4D900031380B3AE1206EA1F80EA3FC0EA7FE0EAFFF0A44A13 0001E05B387FC00F6C48485A391FE07FF86CB512E00003148026007FF8C7FC27347FB22E >I77 DI83 D<003FB812F8A4D9F003EB801FD87F80ED03FC01001501007E1600007C177CA20078173C A400F8173E48171EA4C71600B3A9011FB612F0A437327DB13E>I97 DI<903807FF80013F13F090B512 FC3903FE01FE4848487EEA0FF8EA1FF0EA3FE0A2007F6D5A496C5A153000FF91C7FCA912 7F7FA2003FEC07807F6C6C130F000FEC1F00D807FE133E3903FF80FCC6EBFFF8013F13E0 010790C7FC21217DA027>II<903803FF80013F13F090B512FC48EB03FE3907FC007F4848EB3F804848EB1FC0 5B003FEC0FE0127F5B16F012FF150790B6FCA301C0C8FCA4127F7F123F16F06C7E000F14 016C6CEB03E0D803FEEB0FC03A01FF807F806C6CB51200011F13FC010313E024217EA029 >II104 DI107 DI<2703F803 FEEB03FE00FF903B1FFFC01FFFC0027FD9E07F7F913BF81FF0F81FF0903CF9E00FF9E00F F8260FFBC0EBFBC06CB4486CB4486C7E02001400495CA3495CB2B500E0B500E0B512E0A4 43217CA04A>I<3901F803FF00FF010F13C0023F13F09138FC0FF89039F9E007FC380FFB C06CB4486C7E1400A25BA25BB2B539E07FFFF0A42C217DA031>I<903803FF80011F13F0 90B512FE48EB01FF3A07FC007FC0D80FF0EB1FE0001F15F049130F003F15F8491307007F 15FCA300FF15FEA8007F15FCA26D130F003F15F8001F15F06D131F6C6CEB3FE06C6CEB7F C03A01FF01FF006CEBFFFE013F13F80103138027217EA02C>I<3901FC07FC00FF90387F FF8001FDB512E09039FFF01FF89138C007FC000790380003FE4980496D1380A26F13C0A3 EE7FE0A9EEFFC0A34B1380A26D4913006D495A9138C00FFC9138F03FF801FDB512E0D9FC 7F1380DA0FF8C7FC91C9FCABB512E0A42B307EA031>I<3901F81F8000FFEB7FF0ECFFF8 9038F9E3FC9038FBC7FE380FFF876C1307A213FEEC03FCEC01F8EC0060491300B1B512F0 A41F217EA024>114 D<9038FFE1C0000713FF5A383F803F387E000F14075A14037EA26C 6CC7FC13FCEBFFE06C13FC806CEBFF80000F14C06C14E0C6FC010F13F0EB007F140F00F0 130714037EA26C14E06C13076CEB0FC09038C01F8090B5120000F913FC38E03FE01C217D A023>I<133CA5137CA313FCA21201A212031207001FB51280B6FCA3D807FCC7FCB0EC03 C0A79038FE078012033901FF0F006C13FEEB3FFCEB0FF01A2F7EAE22>I118 DI121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff cmtt8 8 25 /Ff 25 127 df<123E127FEAFF80A5EA7F00123E0909738823>46 DI<123E127FEAFF80A5EA7F00123EC7FCAB 123E127FEAFF80A5EA7F00123E091D739C23>58 D<3803FFF0000F13FC487F487FA2397F 807F80387E001F007C130FA200FC14C0481307B3A46C130FA2007C1480A2007E131F387F 807F6CB51200A26C5B6C5B000313F01A2B7CA923>79 D<9038FF83800003EBE3C04813FF 121F5AEA7FC0EB003F00FE131F48130FA25A1407A26CEB038091C7FC127E127FEA3FF06C B4FC6C13F06C13FC00017F39001FFF80010113C0EB001FEC0FE01407EC03F0A200701301 12F8A36C1303A26CEB07E06C130F9038E03FC090B5FC15005C00F15B38703FE01C2B7DA9 23>83 D<3803FF80000F13E04813F8487F80EB80FFEC3F80381F001FC7FC140F14FF137F 0003B5FC120F5A387FF00F130012FCA25A141F7E6C133F387F81FF90B512FC6C14FE7E00 0713C73901FE01FC1F1D7D9C23>97 DIIII103 DI<14E0EB03F8A5EB00E01400A63803FFF048 13F8A37EC7FCB3AB13011238387C03F012FEEB0FE0B5FC14C06C13006C5AEA0FF815397D A923>106 DII<397E1F01F039FF7FC7FC9038FFEFFE14FF6C80390FE1 FE1FEBC1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF13F0A3267FE3FE13E024 1D819C23>I<133F3801FFE0487F487F487F381FC0FE383F807F383E001F007E1480007C 130F00FC14C0481307A66C130FA2007C1480007E131F6CEB3F006D5A381FE1FE6CB45A6C 5B6C5B6C5BD8003FC7FC1A1D7C9C23>111 D<38FF81FCEBC7FF01DF13C090B512E015F0 3907FE0FF8EBF8039038F001FCEBE000A249137EA2153EA5157E7F15FC7F14019038F803 F89038FE0FF090B5FC15E001DF138001CF1300EBC3F801C0C7FCAAEAFFFEA51F2C7F9C23 >I<397FF00FE039FFF87FF8ECFFFC13FB6CB5FCC613F8ECC078EC800091C7FC5BA25BA3 5BAA387FFFFCB57EA36C5B1E1D7E9C23>114 D<3801FF9C000F13FE5A127FA2EAFF0000 FC137E48133EA26C131C6C1300EA7FF0383FFF80000F13E06C13F838007FFCEB01FEEB00 7F0070133F00F8131F7E143F7E38FF80FFEBFFFE14FC14F814F000701380181D7B9C23> I<137013F8A7007FB51280B612C0A36C1480D800F8C7FCACEC01C0EC03E0A3EBFC07140F 9038FE1FC0EB7FFF158090383FFE00EB0FFCEB07F01B257EA423>I<39FF807FC001C013 E0A400071303B01407140FEBE03F90B6FC7EA2C613F3EB3FC1201D7F9C23>I<397FF00F FE39FFF81FFFA3397FF00FFE001FC712F86C14F0A57F390783E1E0EB87F1A3EB8FF90003 EB79C013CFA2EBDF7BA2EBDE3B00011480EBFE3FA2EBFC1FA23900F80F00201D7F9C23> 119 D<39FFF03FFCA539078007C0158013C00003130F1500EA01E05CEBF01E1200A26D5A 1378A26D5AA3EB1E7014F0130EEB0FE0A213075CA35CA2130F91C7FCA2EA3E1FEA7F1E13 3EEA7CFC127F5B6C5A6C5AEA0F801E2C7E9C23>121 D<3803C038380FF07C381FF8FCEA 3FFF4813F8B512F038FC7FE038F83FC038700F0016097AA823>126 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fg cmti8 8 22 /Fg 22 122 df<387FFFC0A2B5FCA26C130012057A901A>45 D<16E01501821503A21507 150FA2151FA2153B157B157315E382EC01C114031581EC0701A2140EA2141C143C143802 707F15005C13015C49B5FCA249C7FCA2130E131E131C4980167E5B13F0485AA21203D80F F014FFD8FFFC011F13F0A22C2F7CAE35>65 D<03FF1318020FEBC03891393F00F07802F8 EB38F8D903F0131CD907C0EB0FF0EB1F8049C71207137E49EC03E0485A485AA2484815C0 485AA2485A178048CAFCA25A127EA312FE5AA292B512E0A2923801FE006F5A15015EA300 7C14035E127E123E001E1407001F5D6C6C130F6C6C133F6C6C13793A00F803F1C090383F FF80D907FCC8FC2D2F75AD37>71 D<91387FFFE0A2913800FE00A25DA214015DA314035D A314075DA3140F5DA3141F5DA3143F92C7FCA35CA2147EA2003C13FE127E00FE5BA2495A EAFC0300F05B48485A38700FC0D8781FC8FCEA1FFCEA07F0232E7AAC25>74 D<011FB512E016FC903900FE003FEE0FC04AEB07E016030101EC01F0A24A14F8A21303EE 03F05CA20107EC07E017C04AEB0F80EE1F00010F143E16FC9138C007F091B512805B9138 C00FE091388003F06F7E133F6F7E91C7FCA2491301A2017E5CA201FE1303A2495C170800 01163C17384914E0EEF07800031670B5D8C00113E09238007FC0C9EA1F002E2E7BAC34> 82 D<3B3FFFF007FFF0A2D801FCC7EA7F00163C5B16380003157816705BA2000715F05E 5BA2000F14015E5BA2001F14035E5BA2003F140793C7FC90C7FCA2485C150E127EA2151E 00FE141C5A153C153815781570007C5C1401007E495A003E495A6C49C8FC6C133C3807C0 F83801FFE06C6CC9FC2C2E72AC35>85 D97 D99 D<153EEC07FEA2EC007EA2157C A215FCA215F8A21401A215F0A21403EB07C390381FF3E0EB7C3BEBF81FEA01F03903E00F C0EA07C0120FEA1F801580EA3F00141F5A007E1400A25C12FE48133EA2EC7E1815384813 7CA214FCD878011378397C03F870A2393C0F78E0381E1E3D390FF81FC03903E00F001F2F 79AD24>II<14F8EB03FE90380F 873890381F03F8137EEB7C0113F81201EA03F015F0EA07E01403120F01C013E0A2140712 1F018013C0A2140FA21580141F120F143FEC7F006C6C5AEA03C33801FFBF38007E3E1300 147EA2147CA214FC00385BEAFC015C495A48485A38F01F80D87FFEC7FCEA1FF01D2C7C9D 21>103 D<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA21201147E9038F3 FF809038F787C03903FE03E013FC13F8A2EA07F013E0A213C0000F130715C01380A2001F 130F15801300141F481406150E003E133F143E007E141EEC7E1C007C137CEC3C3812FC15 7048EB1FE00070EB07801F2F7BAD24>I<130E131FEB3F80A2EB1F00130E90C7FCA9EA03 E0EA0FF0EA1E78EA1C7C12381278127013FCEAF0F812E012E1EAC1F0120112035B12075B A2120F13831387121F13075BEA3F0E123EEA1E1C133C1338EA0FF0EA03C0112E7AAC16> I<137CEA0FFCA21200A213F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380 A2121FA21300A25AA2123EA2127EA2127CA2EAFC30137012F8A213F013E012F012F113C0 12FBEA7F80EA1E000E2F7AAD12>108 D<3907801FC0391FE07FF0393DF1E0F83938F3C0 783978FF007CEA70FEA2EAF1FCEAE1F8A25B00C314FC00035C5BA2000713015D13C01403 000FECE0C015E1EB800715C1001F14C3020F13800100138391380787005A158E003EEB03 FC001CEB00F0221F7A9D28>110 DI< 3807803E391FE0FF80393CF3C1C03938F781E03878FF07EA70FE13FC12F139E1F8038091 C7FC5B12C312035BA21207A25BA2120FA25BA2121FA290C8FCA25AA2123E121C1B1F7A9D 1E>114 DI<131C133EA2137EA2137CA2 13FCA25BA21201A2B512E0A23803F000A25BA21207A25BA2120FA25BA2121FA290C7FCA2 4813C01301123E130314801307003C1300130E131E6C5AEA0FF0EA07C0132B7AA918>I< EA03C0D80FF01338D81E78137CD81C7C13FC003814F812781270EBFC01D8F0F813F012E0 12E138C1F003000114E0120313E01407000714C013C0A2EC0FC3000F14871380A2141F15 8F0007EB3F0E147F01C0131C3903E1E7BC3901FF83F839007E01E0201F7A9D26>I<3903 C001C0390FF003E0391E7807F0EA1C7C1238007813030070130113FCD8F0F813E012E000 E1130038C1F001000114C0120313E014030007148013C0A2EC0700120F1380140EA25C12 076D5A00035B6D5AC6B45A013FC7FC1C1F7A9D21>I121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fh cmr8 8 45 /Fh 45 123 df<14FF010713E090381F80F090383E003849137C4913FC485A1203491378 153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A7FFF0FFFE0A2232F7FAE27 >12 DI<91397F800FF0903A03FFE07FFE 903A1FC079F80F903B3E001FE003804990393FC007C04990387F800F48481400A2484801 7EEB0780033EEB030094C7FCA7EF07C0B9FCA23B03E0003E000F1707B3A5486C017FEB0F E03C7FFF07FFF0FFFEA2372F7FAE3B>I<123C127EB4FCA21380A2127F123D1201A31203 1300A25A1206120E5A5A5A126009157A8714>44 DI<123C127E 12FFA4127E123C08087A8714>I<123C127E12FFA4127E123C1200AD123C127E12FE12FF A3127F123F1203A312071206A2120E120C121C1218123812701260082A7A9C14>59 D<4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70FEEC607EA24A7EA349486C7E A2010380EC000FA201066D7EA3496D7EA2011FB57EA29038180001496D7EA349147EA201 E0147F4980A20001ED1F801203000716C0D80FF0EC3FE0D8FFFC0103B5FCA2302F7EAE35 >65 DI70 D73 D<90387FFFF0A201001300147EB3AD123812FEA314FE5C1278387001F86C485A381E07E0 3807FF80D801FCC7FC1C2E7DAC24>I78 DII<90383F80303901FFF0703807C07C390F000EF0001E13074813034813011400 127000F01470A315307EA26C1400127E127FEA3FE013FE381FFFE06C13FC6C13FF000114 80D8003F13E013039038003FF0EC07F81401140015FC157C12C0153CA37EA215787E6C14 706C14F06CEB01E039F78003C039E3F00F0038E07FFE38C00FF01E2F7CAD27>83 D<007FB712F8A29039000FC003007C150000701638A200601618A200E0161CA248160CA5 C71500B3A94A7E011FB512E0A22E2D7EAC33>I86 DI<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7F C7FCA4EB07FF137F3801FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E00 7E137F007FEBEF8C391F83C7FC390FFF03F83901FC01E01F207D9E23>97 DII<15F8141FA2 14011400ACEB0FE0EB7FF83801F81E3803E0073807C003380F8001EA1F00481300123E12 7EA25AA9127C127EA2003E13017EEB8003000F13073903E00EFC3A01F03CFFC038007FF0 90391FC0F800222F7EAD27>III<013F13F89038FFC3FE3903E1FF1E3807807C000F140C391F003E00A200 3E7FA76C133EA26C6C5A00071378380FE1F0380CFFC0D81C3FC7FC90C8FCA3121E121F38 0FFFF814FF6C14C04814F0391E0007F848130048147C12F848143CA46C147C007C14F86C EB01F06CEB03E03907E01F803901FFFE0038003FF01F2D7E9D23>III<130FEB1F80EB3FC0A4EB1F80EB0F00 90C7FCA8EB07C013FFA2130F1307B3AD1230127838FC0F80A21400485AEA783EEA3FF8EA 07E0123C83AD16>III<2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C0FCE01F8 E01F803B07DC00F9C00F01F8D9FF8013C04990387F000749137EA249137CB2486C01FEEB 0FE03CFFFE0FFFE0FFFEA2371E7E9D3C>I<3807C0FE39FFC3FF809038C703E0390FDE01 F0EA07F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27>II<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC49137E 49133E49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC01F090 38CE07E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>I<90380FE0 1890387FF8383801F81C3903E00E783807C007390F8003F8001F1301EA3F00A2007E1300 A212FE5AA8127EA36C13017EEB8003380FC0073803E00E3801F03C38007FF0EB1FC090C7 FCA94A7E91381FFFC0A2222B7E9D25>I<380781F838FF87FEEB8E3FEA0F9CEA07B813B0 EBF01EEBE000A45BB0487EB5FCA2181E7E9D1C>I<3801FE183807FFB8381E01F8EA3C00 481378481338A21418A27E7EB41300EA7FF06CB4FC6C13C06C13F0000113F838001FFC13 0138C0007E143EA26C131EA27EA26C133CA26C137838FF01F038E3FFC000C0130017207E 9E1C>I<1360A413E0A312011203A21207121FB512F0A23803E000AF1418A714383801F0 3014703800F860EB3FE0EB0F80152A7FA81B>II<3AFFFC01FFC0A23A0FE0007E000007147C15380003143015706C6C1360A26C6C5BA3 90387C0180A26D48C7FCA2EB3F07EB1F06A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D 5A221E7F9C25>I<3BFFFC3FFE07FFA23B0FE003F001F801C09038E000F00007010114E0 812603E00314C0A2913807F8012701F006781380A29039F80E7C030000D90C3C1300A290 397C181E06A2151F6D486C5AA2168C90391F600798A216D890390FC003F0A36D486C5AA3 6DC75A301E7F9C33>I<3AFFFC07FF80A23A0FF003FC000003EB01F0000114C06D485A00 0091C7FCEB7C06EB3E0E6D5A14B8EB0FB0EB07E013036D7E497E1307EB067C497EEB1C1F 01387FEB700F496C7E6E7ED803C07F00076D7E391FE003FC3AFFF007FFC0A2221D7F9C25 >I<3AFFFC01FFC0A23A0FE0007E000007147C1538000314306D137000011460A26C6C5B A2EBFC01017C5BEB7E03013E90C7FCA2EB1F06A2148EEB0F8CA2EB07D8A2EB03F0A36D5A A26D5AA2495AA2130391C8FC1278EAFC06A25B131CEA7838EA7070EA3FE0EA0F80222B7F 9C25>I<003FB51280A2EB003F003C14000038137E00305BEA700100605B495A495A130F 00005B495A49C7FC5B137E9038FC0180EA01F8120313F03807E003EA0FC0001F14001380 48485A007E5B00FE133FB6FCA2191D7E9C1F>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fi cmr6 6 5 /Fi 5 54 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49 DI<13FF000313C0380F03E0381C00F014F800 3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00 F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF C00001130018227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1 EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFF A218227DA11E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513 FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A2147848 13F8006013F0387001E01238381E07803807FF00EA01F816227CA01E>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fj cmr7 7 5 /Fj 5 54 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49 D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15 005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003 0012065A001FB5FC5A485BB5FCA219267DA521>I<13FF000313E0380F01F8381C007C00 30137E003C133E007E133FA4123CC7123E147E147C5C495AEB07E03801FF8091C7FC3800 01E06D7E147C80143F801580A21238127C12FEA21500485B0078133E00705B6C5B381F01 F03807FFC0C690C7FC19277DA521>I<1438A2147814F81301A2130313071306130C131C 131813301370136013C012011380EA03005A120E120C121C5A12305A12E0B612E0A2C7EA F800A7497E90383FFFE0A21B277EA621>I<0018130C001F137CEBFFF85C5C1480D819FC C7FC0018C8FCA7137F3819FFE0381F81F0381E0078001C7F0018133EC7FC80A21580A212 30127C12FCA3150012F00060133E127000305B001C5B380F03E03803FFC0C648C7FC1927 7DA521>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmti10 10 40 /Fk 40 123 df<387FFFF8A2B5FCA214F0150579941E>45 D<120EEA3F80127F12FFA313 00127E123C0909778819>I65 D<0107B612FCEFFF8018C0903B000FF0001FF04BEB07F81703021F15FC17014B14FEA202 3F1400A24B1301A2147F18FC92C7120318F84A140718F04AEC0FE0EF1FC00101ED3F80EF 7F004AEB01FEEE07F849B612E05F9139F80007F0EE01FC01076E7E177F4AEC3F80A2010F 16C0171F5CA2131F173F5CA2133FEF7F805C1800017F5D4C5A91C7485A5F49140FEE1FE0 494A5A00014AB45AB748C7FC16F816C037397BB83A>II<0107B8FCA3903A000FF000034BEB00 7F183E141F181E5DA2143FA25D181C147FA29238000380A24A130718004A91C7FC5E1301 5E4A133E167E49B512FEA25EECF8000107147C163C4A1338A2010F147818E04A13701701 011F16C016004A14031880013F150718004A5CA2017F151E173E91C8123C177C4915FC4C 5A4914070001ED7FF0B8FCA25F38397BB838>69 D<0107B712FEA3903A000FF000074B13 00187C021F153CA25DA2143FA25D1838147FA292C8FCEE03804A130718004A91C7FCA201 015CA24A131E163E010314FE91B5FC5EA2903807F800167C4A1378A2130FA24A1370A201 1F14F0A24A90C8FCA2133FA25CA2137FA291CAFCA25BA25B487EB6FCA337397BB836>I< 0103B512F8A390390007F8005DA2140FA25DA2141FA25DA2143FA25DA2147FA292C7FCA2 5CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137F A291C8FC497EB6FCA25C25397CB820>73 D<0207B512F0A391390007FC006F5AA215075E A3150F5EA3151F5EA3153F5EA3157F93C7FCA35D5DA314015DA314035DA31407A25DA214 0FA2003F5C5A141F485CA24A5A12FC00E049C8FC14FE00705B495A6C485A381E0FC06CB4 C9FCEA01F82C3B78B82C>I<902603FFF891B512E0A281D90007923807F8006F6E5A6102 0F5E81DA0E7F5DA2021E6D1307033F92C7FC141C82DA3C1F5C70130EEC380FA202786D13 1E0307141C147082DAF003143C70133814E0150101016E1378030014705C8201036E13F0 604A1480163F010715C1041F5B91C7FC17E149EC0FE360010E15F31607011E15FF95C8FC 011C80A2013C805F1338160013785F01F8157CEA03FC267FFFE0143CB51538A243397CB8 3E>78 DI<0107B612F817FF1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC5DA2023F15 FEA25DA2147FEF03FC92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC3F80EFFE00 01034A5AEE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25CA2133FA25C A2137FA291CAFCA25BA25B1201B512FCA337397BB838>I<92383FC00E913901FFF01C02 0713FC91391FC07E3C91393F001F7C027CEB0FF84A130749481303495A4948EB01F0A249 5AA2011F15E091C7FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D6D7E6D 14E0010080023F7F14079138007FFC150F15031501A21500A2167C120EA3001E15FC5EA3 003E4A5AA24B5AA2007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F07FFFE0 D8E01F138026C003FCC8FC2F3D7ABA2F>83 D<0007B812E0A25AD9F800EB001F01C049EB 07C0485AD900011403121E001C5C003C17801403123800785C00701607140700F0170048 5CA2140FC792C7FC5DA2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301A25CA2 1303A25CA21307A25CA2130FA25CEB3FF0007FB512F8B6FCA2333971B83B>I86 D<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C 5A485A120FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0 A2141F15831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE 03FC3901F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA31203 5BA31207EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81FC013F0A213 80A2123F1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C147E5C 387801F8007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F 903803FFC090380FC1E090381F0070017E13784913383901F801F83803F003120713E012 0FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C14F0007EEB 01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426>II< 147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A120F4913F8001F14 F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA21530007C1438 1578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7FC1D26 77A426>IIIII<150E153F157FA3157E151C1500ABEC 1F80EC7FC0ECF1F0EB01C090380380F813071401130F130E131EEB1C03133C013813F0A2 EB0007A215E0A2140FA215C0A2141FA21580A2143FA21500A25CA2147EA214FEA25CA213 01A25CA213035C121C387E07E0A238FE0FC05C49C7FCEAF83EEA787CEA3FF0EA0FC02048 83B619>IIIII<147F90 3803FFC090380FC1F090381F00F8017E137C5B4848137E4848133E0007143F5B120F485A A2485A157F127F90C7FCA215FF5A4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C 14C0007EEB1F80003EEB3F00147E6C13F8380F83F03803FFC0C648C7FC202677A42A>I< 9039078007C090391FE03FF090393CF0787C903938F8E03E9038787FC00170497EECFF00 D9F0FE148013E05CEA01E113C15CA2D80003143FA25CA20107147FA24A1400A2010F5C5E 5C4B5A131F5EEC80035E013F495A6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F 8001FEC9FCA25BA21201A25BA21203A25B1207B512C0A3293580A42A>I<3903C003F039 0FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F800078150000701300151C D8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3123F90 C9FC120E212679A423>114 D<14FE903807FF8090380F83C090383E00E04913F0017813 7001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F6D1380 7F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012E06C133E00705B6C5B 381E03E06CB45AD801FEC7FC1C267AA422>II<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C0038140F 131F007815C01270013F131F00F0130000E015805BD8007E133FA201FE14005B5D120149 137EA215FE120349EBFC0EA20201131E161C15F813E0163CD9F003133814070001ECF070 91381EF8F03A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F0130ED803 FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E140000E0 8013FEC6485B150E12015B151E0003141C5BA2153C000714385B5DA35DA24A5A14030003 5C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A426>I<01F01507D803FC903903 801F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F49EC800F00701607A2 49133FD8F07E168000E0ED000313FEC64849130718000001147E5B03FE5B0003160E495B A2171E00070101141C01E05B173C1738A217781770020314F05F0003010713016D486C48 5A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0322679A437>I< 903907E007C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C01F018013 C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214FEA25CA2 1301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F1307010EEB 0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427>I<13F0D803FCEB01 C0D8071EEB03E0D80E1F1307121C123C0038140F4914C01270A249131FD8F07E148012E0 13FEC648133F160012015B5D0003147E5BA215FE00075C5BA214015DA314035D14070003 130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C48133F92C7FC147E14 7C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F0233679A428>I<9039 03C0038090380FF007D91FF81300496C5A017F130E9038FFFE1E9038F83FFC3901F007F8 49C65A495B1401C7485A4A5A4AC7FC141E5C5C5C495A495A495A49C8FC131E5B49131C5B 4848133C48481338491378000714F8390FF801F0391FFF07E0383E1FFFD83C0F5B00785C D8700790C7FC38F003FC38E000F021267BA422>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fl cmbx12 12 43 /Fl 43 123 df45 D49 DII<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F 87EC1F07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A48 5A485A120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038 >I<0007150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0 C9FCAAEC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D 13804915C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D 6C4815E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6C B612F0C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13 FC49B6FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A14 00485A120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000 FF017F13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13 E0A24915F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D491380 6C018014006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D 427BC038>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA 3F00007C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A1403 5D14074A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F 447AC238>I65 DIII70 D73 D<0107B7FCA590C7001F1300B3B3A9EA1FE0487E487EA2487EA44B 5AA26C48495A495C6C4813FF6C48485B260FFC0713C06CB65A6C4AC7FCC66C13F8010F13 8030457DC33A>I77 D<923807FFC092B512FE0207ECFFC0021F15F091267FFE0013FC902601FFF0EB1FFF0107 0180010313C04990C76C7FD91FFC6E6C7E49486F7E49486F7E01FF8348496F7E48496F13 80A248496F13C0A24890C96C13E0A24819F04982003F19F8A3007F19FC49177FA400FF19 FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0A26E5D6C19E0A26C6D4B13C06C19806E 5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C4A5B6D01C001075B6D01F0011F5B0101 01FE90B5C7FC6D90B65A023F15F8020715C002004AC8FC030713C047467AC454>79 DI82 D I86 DI<903801FFE0 011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F 6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F13 80381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF 80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 DIIIIII<137C 48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7F FFA512037EB3AFB6FCA518467CC520>105 DIII< 90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E4880913D87 F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F 02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I< 90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F000390399F 000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314E0 02CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C 7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913 006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA53640 7DAC3E>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE6C 13BC14F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E> 114 D<90391FFC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E 00FE140FA215077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C80000380 6C15806C7E010F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C14 1FA26DEB3F8001E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7C AD2C>IIII<001FB71280A49026FC001F130001E049 5A5B49495A90C7485A48495B123E4A5B4A5B003C495BA24A90C7FC4A5A4A5AC7FC4A5A49 5B495BA2495B499038800780491300A2495A4948130F49481400A2485B48495B485BA248 495B4890C75A48485C15034848EB1FFEB7FCA4292C7DAB32>122 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fm cmti9 9 55 /Fm 55 123 df<923803FF80031F13F092383F00F803F8133C4A48133E4A48137E17FE4A 5A17FC17384A481300A3141F92C8FCA55C143E011FB612E0A217C09039007E0007147C16 0F1780A214FC4A131F1700A301015C4A133EA3167E0103147C5C1718EEFC1CEEF83C0107 15385C1778177016F0010F15F04AEBF8E01679EE3FC0011FEC0F0093C7FC91C9FCA3133E A21238EA7E3C137CEAFE7812FC485AEA79E0EA3FC0000FCAFC2F4582B42B>12 D I39 D<1560EC01E0EC03C0EC0700140E5C143C5C5C495A495A13075C49 C7FC5B131E5B137C137813F85B12015B12035B1207A25B120FA290C8FC5AA2121E123EA3 123C127CA31278A212F8A35AAF12701278A21238A2123C121CA27EA27E6C7E12011B4A75 B71F>I<14301438A28080A2140F801580A2140315C0A4140115E0A81403A415C0A31407 A31580140FA315005CA3141E143EA2143C147CA25CA25C13015C13035C13075C130F91C7 FC131E133E133C5B5B485AA2485A485A48C8FC121E5A12705A5A1B4A7EB71F>I<151815 3CA2157CA21578A215F8A25DA21401A25DA21403A25DA21407A2B812F817FCA217F8C700 0FC8FCA25CA2141EA2143EA2143CA2147CA21478A214F8A25CA21301A26D5A2E2E75A93B >43 DII<121C127F12FFA412FE123808 08778718>I49 D<010614C090380FC00F91B5128016 0015FC4913F015C0D91CFEC7FC91C8FC133C1338A313781370A313F0EBE0FE9038E3FF80 9038EF03C03901FC01E001F87FEBF000497F485A5BC8FCA41401A4003C130300FC5CA34A 5A5A00E0495AA24A5A4AC7FC6C137E00705B387801F8383E07F0381FFFC06C90C8FCEA03 F8223478B127>53 D 56 DI<161C163CA2167C16FCA21501821503A2ED077E150F150E151CA21538A2157015F015 E0EC01C0A2913803807F82EC0700A2140E141E141C5CA25CA25C49B6FCA25B913880003F 49C7EA1F80A2130E131E131C133C13385B13F05B12011203D80FF0EC3FC0D8FFFE903807 FFFEA32F367BB539>65 D67 D<0107B612C04915F017FC903A003F8001FEEE007FEF1F8092C7EA0FC0EF07E05CEF03F0 147E170102FE15F8A25CA21301A25CA2130317035CA2130718F04A1407A2130F18E04A14 0F18C0011F151F18805CEF3F00133F177E91C85AA2494A5A4C5A017E4A5A4C5A01FE4A5A 047EC7FC49495A0001EC0FF8007FB612E0B7C8FC15F835337BB23A>I<92391FE0018092 38FFF8030207EBFE07913A1FF01F0F0091393F80079F9139FE0003DFD901F86DB4FCD907 F05C49481300495A4948147E49C8127C137E13FE485A48481578A2485AA248481570A248 5A94C7FC123F5BA3127F90CBFCA400FE91383FFFFCA25F9238003F8094C7FCA2007E5DA2 167EA2007F15FE7E5E6C6C1301A26C6C495A6D13076C6CEB0F786C6C133E3A00FF01FC30 90387FFFF0011F01C0C8FCD903FEC9FC313775B43B>71 D<0107B548B512C0495CA2903C 003FC0000FF0004B5CA292C75BA24A141F60147EA202FE143F95C7FC5CA201015D177E5C A2010315FE5F5C91B6FC5B5F9138E00001A2010F14035F5CA2011F14075F5CA2013F140F 5F91C7FCA249141F5F137EA201FE143F94C8FC5B00015D3B7FFFF01FFFFCB55BA23A337B B239>I<010FB51280A216009038003FC05DA292C7FCA25CA2147EA214FEA25CA21301A2 5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCA25BA2137EA213FE A25B1201B512F8A25C21337BB21E>I<91381FFFFE5C16FC9138003F80A31600A25D157E A315FE5DA314015DA314035DA314075DA3140F5DA3141F5DA3143F92C7FCA2121C007E5B 00FE137EA214FE485BEAF80100E05B495A387007E038780FC06C48C8FCEA1FFCEA07F027 3579B228>I<0107B512C05BA29026003FC0C7FC5DA292C8FCA25CA2147EA214FEA25CA2 1301A25CA21303A25CA21307A25CA2130FA25C17E0011F140117C05C1603013F15801607 91C7FCEE0F005B5E017E143EA201FE5CED01FC4913030001EC1FF8007FB6FCB7FC5E2B33 7CB230>76 D<902607FFC0ED7FFC4917FF81D9003F4B1300611803023BED077CA2027BED 0EFC610273151C1838DAF1F01439F071F014E118E10101ED01C36102C1EC0383EF070301 031607050E5BEC80F8171C0107ED380F6102001470A249EDE01FDC01C090C7FC130EEE03 80011E017C5C933807003E011C140EA2013C4A137E187C01385C5E017816FC6F485B1370 ED3FC001F0EC80016000011500D807F81503277FFF803E90B512C0B5EB3C01151C46337B B245>I<902607FF8090383FFFC0496D5BA2D9001F913803F8004A6C6D5A6060EC3BF002 7B140360EC71F8A202F11407DAF0FC91C7FC14E0A20101017E5B170E14C0810103151EEE 801CEC801FA20107ECC03C030F1338140016E049010713781770010E14F01503011E15F0 705A011C1301A2013C14FD03005B133816FF0178147F5F0170143FA213F070C8FC1201EA 07F8267FFF807FB5140EA23A337BB239>II<0107B612C04915F883903A003F8001FEEE003FEF1F8092C713C0170F5C18E0147EA2 14FEEF1FC05CA201011680173F4A1500177E010315FE5F4AEB03F8EE07E00107EC3FC091 B6C7FC16F802E0C9FC130FA25CA2131FA25CA2133FA291CAFCA25BA2137EA213FEA25B12 01387FFFF0B5FCA233337CB234>I<0107B512FE49ECFFC017F0903A003F8007F8EE01FC EE007E92C7127F835C1880147EA214FEEF7F005CA2010115FE5F4A13015F01034A5AEE0F C04A495A04FEC7FC49B512F016C09138E003E0ED01F8010F6D7E167C4A137EA2131FA25C A2013F14FEA291C7FCA24913015E137EEF01C001FE150318805B00011607277FFFF00014 00B5ECFE0EEE7E1CC9EA1FF8EE07E032357BB238>82 D<913901FC018091380FFF03023F 13C791387E07EF903A01F801FF0049487E4A7F495A4948133E131F91C7FC5B013E143CA3 137E1638A293C7FC137FA26D7E14E014FE90381FFFC06D13F86D7F01017F6D6C7E020F7F 1400153F6F7E150FA4120EA2001E5D121CA2151F003C92C7FCA2003E143E5D127E007F5C 6D485A9038C007E039F3F80FC000F0B5C8FC38E03FFC38C00FF029377AB42B>I<0003B8 12C05A1880903AF800FC003F260FC001141F0180150F01005B001EEE07001403121C003C 4A5BA200380107140E127800705CA2020F141E00F0161CC74990C7FCA2141FA25DA2143F A292C9FCA25CA2147EA214FEA25CA21301A25CA21303A25CA21307A25C497E001FB512F0 5AA2323374B237>I<3B3FFFF801FFFE485CA2D801FEC7EA1FC049EC0F80170049140EA2 161E120349141CA2163C1207491438A21678120F491470A216F0121F495CA21501123F90 C75BA215035A007E5DA2150712FE4892C7FCA25D150E48141E151C153C153815786C5C5D 007C1301007E495A003EEB0F806C011EC8FC380FC0FC6CB45A000113E06C6CC9FC2F3570 B239>III97 D<137EEA0FFE121F5B1200A35BA2 1201A25BA21203A25BA21207A2EBC3E0EBCFF8380FDC3EEBF81F497E01E01380EA1FC013 8015C013005AA2123EA2007E131F1580127CA2143F00FC14005AA2147EA25CA2387801F8 5C495A6C485A495A6C48C7FCEA0FFCEA03F01A3578B323>I<14FCEB07FF90381F078090 383E03C0EBFC013801F8033803F0073807E00F13C0120F391F80070091C7FC48C8FCA35A 127EA312FE5AA4007C14C0EC01E0A2EC03C06CEB0F80EC1F006C137C380F81F03803FFC0 C648C7FC1B2278A023>III< 151FED7FC0EDF0E0020113F0EC03E3A2EC07C316E0EDC1C091380FC0005DA4141F92C7FC A45C143E90381FFFFEA3D9007EC7FC147CA414FC5CA513015CA413035CA413075CA3130F A25CA3131F91C8FCA35B133E1238EA7E3CA2EAFE7812FC485AEA78E0EA3FC0000FC9FC24 4582B418>I<143FECFF80903803E1E6903807C0FF90380F807FEB1F00133E017E133F49 133EA24848137EA24848137CA215FC12074913F8A21401A2D80FC013F0A21403120715E0 1407140F141F3903E03FC00001137FEBF0FF38007FCF90381F0F801300141FA21500A25C 143E1238007E137E5C00FE5B48485A387803E0387C0F80D81FFFC7FCEA07F820317CA023 >III<1538157C15FCA315701500AB143EECFF 80903801E3C090380383E0EB0701130FEB0E03131C133C133814071378013013C0130014 0FA21580A2141FA21500A25CA2143EA2147EA2147CA214FCA25CA21301A25CA213035C12 38387E07C0A238FE0F804848C7FCEAF83EEA787CEA3FF0EA0F801E4283B118>II<133FEA07FF5A13FE EA007EA3137CA213FCA213F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380 A2121FA21300A25AA2123EA2127EA2127C1318EAFC1C133CEAF838A21378137012F013F0 EAF8E01279EA3FC0EA0F00103579B314>I<2703C003F8137F3C0FF00FFE01FFC03C1E78 3C1F07C1E03C1C7CF00F8F01F03B3C3DE0079E0026383FC001FC7FD97F805B007001005B 5E137ED8F0FC90380FC00100E05FD860F8148012000001021F130360491400A200034A13 076049013E130FF081800007027EEC83C0051F138049017C1403A2000F02FC1407053E13 0049495CEF1E0E001F01015D183C010049EB0FF0000E6D48EB03E03A227AA03F>I<3903 C007F0390FF01FFC391E787C1E391C7CF01F393C3DE00F26383FC01380EB7F8000781300 EA707EA2D8F0FC131F00E01500EA60F8120000015C153E5BA20003147E157C4913FCEDF8 180007153C0201133801C013F0A2000F1578EDE070018014F016E0001FECE1C015E390C7 EAFF00000E143E26227AA02B>I<14FCEB07FF90381F07C090383E03E09038FC01F0EA01 F83903F000F8485A5B120F484813FCA248C7FCA214014814F8127EA2140300FE14F05AA2 EC07E0A2007CEB0FC01580141FEC3F006C137E5C381F01F0380F83E03803FF80D800FCC7 FC1E2278A027>I<011E137C90387F81FF9039F3C387C09039E3EF03E03901E1FE01D9C1 FC13F0EBC3F8000313F0018314F814E0EA07871307000313C01200010F130316F01480A2 011F130716E01400A249EB0FC0A2013EEB1F80A2017EEB3F00017F133E5D5D9038FF81F0 9038FDC3E09038F8FF80027EC7FC000190C8FCA25BA21203A25BA21207A25BB5FCA32530 7FA027>I<3903C00FC0390FF03FF0391E78F078391C7DE03C393C3FC0FC00381380EB7F 00007814F8D8707E13701500EAF0FC12E0EA60F812001201A25BA21203A25BA21207A25B A2120FA25BA2121FA290C8FC120E1E227AA020>114 DI<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387F FFF8A2B5FC3800F800A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014 E01300130114C01303001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>II<01F01338D803FC13FCEA0F1E120E121C123C0038147CEA783E0070143C A2137ED8F07C1338EA60FCC65A1578000114705BA215F0000314E05BA2EC01C0A2EBC003 158014071500EBE00EA26C6C5A3800F878EB7FE0EB1F801E227AA023>II<13F0D803FC1307D80F1E130F00 0E141F121C123C0038143FD8783E133E1270A2017E137ED8F07C137CEA60FCC65A15FC00 0114F85BA21401000314F013E0A2140315E0EA07C0A20003130715C0EBE00F141F000113 3F9038F07F8038007FEFEB1F8FEB001F1500A25C003E133E007E137E147C5C007C5BEA70 01495A38380780D83C1FC7FCEA0FFCEA07F020317AA025>121 D<903807801C90381FE0 3C90383FF038017F13789038FFF8F03901F07CE0EBE01F3903C003C09038800780EC0F00 C7121E141C143C5C5C495AEB07C0495A011EC7FC5B5B4913704913F0000114E0485A3807 8001390FC003C0381FF80790383E0F80393C1FFF00127838700FFE38F007F838E001E01E 227CA01F>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fn cmr9 9 75 /Fn 75 123 df<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A 3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3 A7486C497EB50083B5FCA32F357FB42D>11 DII I<137813FCA212011203EA07F813E0EA0FC0EA1F801300123C5A5A12400E0E71B326>19 D<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C121C5A5A1260 09177AB315>39 D<14C01301EB0380EB0F00130E5B133C5B5BA2485A485AA212075B120F 90C7FC5AA2121E123EA3123C127CA55AB0127CA5123C123EA3121E121FA27E7F12077F12 03A26C7E6C7EA213787F131C7F130FEB0380EB01C01300124A79B71E>I<12C07E127012 3C121C7E120F6C7E6C7EA26C7E6C7EA27F1378137C133C133EA2131E131FA37F1480A5EB 07C0B0EB0F80A514005BA3131E133EA2133C137C137813F85BA2485A485AA2485A48C7FC 120E5A123C12705A5A124A7CB71E>I<123C127EB4FCA21380A2127F123D1201A4120313 00A25A1206120E120C121C5A5A126009177A8715>44 DI<123C 127E12FFA4127E123C08087A8715>I<1530157815F8A215F01401A215E01403A215C014 07A21580140FA215005CA2143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2 495AA291C7FC5BA2131E133EA2133C137CA2137813F8A25B1201A25B1203A2485AA25B12 0FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12601D4B7CB726>II<13075B5B137FEA07FFB5FC13BFEA F83F1200B3B3A2497E007FB51280A319327AB126>IIII<000C14C0380FC00F 90B5128015005C5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038 001F80EC0FC0120E000CEB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8 006014E01270EC0FC06C131F003C14806CEB7F00380F80FE3807FFF8000113E038003F80 1D347CB126>I<14FE903807FF80011F13E090383F00F0017C13703901F801F8EBF003EA 03E01207EA0FC0EC01F04848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F 809038E007C039FFC003E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14 FCA26C1301018013F8000F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB 3FFCEB0FE01F347DB126>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430 157015E04814C01401EC0380C7EA07001406140E5C141814385CA25CA2495A1303A3495A A2130FA3131F91C7FCA25BA55BA9131C20347CB126>III<123C127E12FFA4127E123C1200 B0123C127E12FFA4127E123C08207A9F15>I<15E0A34A7EA24A7EA34A7EA3EC0DFE140C A2EC187FA34A6C7EA202707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301 066D7EA2010E80010FB5FCA249800118C77EA24981163FA2496E7EA3496E7EA200018216 07487ED81FF04A7ED8FFFE49B512E0A333367DB53A>65 DIIIIIIII<017FB5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F 805A0060140000705B6C13FE6C485A380F03F03803FFC0C690C7FC20357DB227>IIIIIII82 D<90381FE00390387FFC0748B5FC3907F01FCF390F8003FF48C7FC003E80814880A20078 8000F880A46C80A27E92C7FC127F13C0EA3FF013FF6C13F06C13FF6C14C06C14F0C68001 3F7F01037F9038003FFF140302001380157F153FED1FC0150F12C0A21507A37EA26CEC0F 80A26C15006C5C6C143E6C147E01C05B39F1FC03F800E0B512E0011F138026C003FEC7FC 22377CB42B>I<007FB712FEA390398007F001D87C00EC003E0078161E0070160EA20060 160600E01607A3481603A6C71500B3AB4A7E011FB512FCA330337DB237>IIII89 D<003FB612FCA39039F80007F813C090C7 EA0FF0003EEC1FE0123C0038EC3FC00078EC7F801270EDFF004A5AA20060495AA24A5A4A 5AC7FC4A5A4A5AA24A5A4AC7FCA2495A495AA2495A495AA24948130C495AA2495A49C7FC A24848141CA2485A485A1638485A4848147816F84848130148481307153FB7FCA326337C B22F>II93 D97 DII<153FEC0FFFA3EC007F81AEEB07F0EB3FFCEBFC0F3901F0 03BF3907E001FF48487E48487F8148C7FCA25A127E12FEAA127E127FA27E6C6C5BA26C6C 5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0130026357DB32B>III<151F90391FC07F809039FFF8E3C03901F07FC73907E03F033A0FC0 1F83809039800F8000001F80EB00074880A66C5CEB800F000F5CEBC01F6C6C48C7FCEBF0 7C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFEECFFC06C14F06C14FC4880381F 0001003EEB007F4880ED1F8048140FA56C141F007C15006C143E6C5C390FC001F83903F0 07E0C6B51280D91FFCC7FC22337EA126>IIIIII<2703F01FE013FF00FF90267FF80313C0903BF1E07C 0F03E0903BF3803E1C01F02807F7003F387FD803FE1470496D486C7EA2495CA2495CB348 6C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F01FC000FFEB7FF09038F1E0FC 9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F80B538C7FFFCA326217EA02B >II<3903F03F8000FFEBFF E09038F3C0F89038F7007ED807FE7F6C48EB1F804914C049130F16E0ED07F0A3ED03F8A9 150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC9038F381F89038F1FFE0D9F0 7FC7FC91C8FCAA487EB512C0A325307EA02B>I<903807F00390383FFC07EBFC0F3901F8 038F3807E001000F14DF48486CB4FC497F123F90C77E5AA25A5AA9127FA36C6C5B121F6D 5B000F5B3907E003BF3903F0073F3800F81EEB3FF8EB0FE090C7FCAAED7F8091380FFFFC A326307DA029>I<3803E07C38FFE1FF9038E38F809038E71FC0EA07EEEA03ECA29038FC 0F8049C7FCA35BB2487EB512E0A31A217FA01E>II<1330A51370A313F0A21201A212031207381FFFFEB5FCA23803F000 AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0182F7FAD1E>IIIII<3A7FFF807FF8A33A07F8001FC00003EC0F800001EC070015066C6C5BA26D13 1C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA2903807E180A214F3010390C7FC 14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A1278D8FC03C8FCA21306130EEA 701CEA7838EA1FF0EA0FC025307F9F29>I<003FB512F0A2EB000F003C14E00038EB1FC0 0030EB3F800070137F1500006013FE495A13035CC6485A495AA2495A495A49C7FC153013 FE485A12035B48481370485A001F14604913E0485A387F000348130F90B5FCA21C207E9F 22>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fo cmbx10 10.95 47 /Fo 47 122 df46 D<140F143F5C495A130F48B5FCB6FCA313F7EAFE071200B3B3A8B712F0A5 243C78BB34>49 D<903803FF80013F13F890B512FE00036E7E4881260FF80F7F261FC003 7F4848C67F486C6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A0007C7FCC8FC4B13 00A25E153F5E4B5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A4A5A9139FF000F80 EB01FC495A4948EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A5A5A5A5AB7FC5EA4 293C7BBB34>I<903801FFE0010F13FE013F6D7E90B612E04801817F3A03FC007FF8D807 F06D7E82D80FFC131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC4B5A5E4B5A4A5B02 0F5B902607FFFEC7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E6F7E1780A26F13C0 A217E0EA0FC0487E487E487E487EA317C0A25D491580127F49491300D83FC0495A6C6C49 5A3A0FFE01FFF86CB65A6C5DC61580013F49C7FC010313E02B3D7CBB34>II<00071538D80FE0EB01F801FE133F90 B6FC5E5E5E5E93C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC0018713FC019F13FF90B6 7E020113E09039F8007FF0496D7E01C06D7E5B6CC77FC8120F82A31780A21207EA1FC048 7E487E12FF7FA21700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0495A260FFC075B6C B65A6C92C7FCC614FC013F13F0010790C8FC293D7BBB34>I<90381FFF8090B512F00003 14FC000F14FF261FF8071380263FC00113C0018014E0486C7E486C14F07FA56C5A4A13E0 EA3FC0260F000313C0C714804A13004A5A4A5A15F04A5A4A5A5D92C7FC14FE5C13015CA2 5CAA90C9FCA8EB03F0497E497E497E497EA66D5A6D5A6D5A6D5A24407ABF31>63 D<16FCA24B7EA24B7EA34B7FA24B7FA34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180 EDF03F0203804B7E02078115C082020F814B7E021F811500824A81023E7F027E81027C7F A202FC814A147F49B77EA34982A2D907E0C7001F7F4A80010F835C83011F8391C87E4983 133E83017E83017C81B500FC91B612FCA5463F7CBE4F>65 DI<922607FFC0130E92B500FC131E02 0702FF133E023FEDC07E91B7EAE1FE01039138803FFB499039F80003FF4901C01300013F 90C8127F4948151FD9FFF8150F48491507485B4A1503481701485B18004890CAFC197E5A 5B193E127FA349170012FFAC127F7F193EA2123FA27F6C187E197C6C7F19FC6C6D16F86C 6D150119F06C6D15036C6DED07E0D97FFEED0FC06D6CED3F80010F01C0ECFF006D01F8EB 03FE6D9039FF801FFC010091B55A023F15E002071580020002FCC7FC030713C03F407ABE 4C>III73 D<0103B612F8A590C7383FFC00B3B3A4EA1FE0487E487EA2487EA3157F5EA26C48495A49 5C263FE0035B261FF80F5B6CB6C7FC000314FCC614F0011F90C8FC2D3F7EBD36>I76 D79 DI82 D<903A03FFC001C0011FEBF803017F EBFE0748B6128F4815DF48010013FFD80FF8130F48481303497F4848EB007F127F49143F 161F12FF160FA27F1607A27F7F01FC91C7FCEBFF806C13F8ECFFC06C14FCEDFF806C15E0 16F86C816C816C816C16806C6C15C07F010715E0EB007F020714F0EC003F1503030013F8 167F163F127800F8151FA2160FA27EA217F07E161F6C16E06D143F01E015C001F8EC7F80 01FEEB01FF9026FFE00713004890B55A486C14F8D8F81F5CD8F00314C027E0003FFEC7FC 2D407ABE3A>I<003FB912FCA5903BFE003FFE003FD87FF0EE0FFE01C0160349160190C7 1500197E127EA2007C183EA400FC183F48181FA5C81600B3AF010FB712F8A5403D7CBC49 >I86 DI<903807FFC0013F13F848B6FC48812607FE03 7F260FF8007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91B5FC130F13 7F3901FFFE0F4813E0000F1380381FFE00485A5B485A12FF5BA4151F7F007F143F6D9038 7BFF806C6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD91FF890C7FC2F2B7DA9 33>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF8113F09139FC 003FF802F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E1880A218005E 6E5C6E495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FCD9E00713FCC7 000113C033407DBE3A>IIIII<903A03FF 8007F0013F9038F83FF8499038FCFFFC48B712FE48018313F93A07FC007FC34848EB3FE1 001FEDF1FC4990381FF0F81700003F81A7001F5DA26D133F000F5D6C6C495A3A03FF83FF 8091B5C7FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16F016FC6C15FF 17806C16C06C16E01207001F16F0393FE000034848EB003F49EC1FF800FF150F90C81207 A56C6CEC0FF06D141F003F16E001F0147FD81FFC903801FFC02707FF800F13006C90B55A C615F8013F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED1FF8EDFFFE02 036D7E4A80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8FE0FB512E0A5 333F7CBE3A>III<13FFB5FCA512077EB092380FFFFEA5DB01FEC7FC4B5AED07F0ED1FE04B5A 4B5A4BC8FCEC03FC4A5A4A5A141FEC7FF84A7EA2818102E77F02C37F148102007F826F7E 6F7E151F6F7E826F7F6F7F816F7FB5D8FC07EBFFC0A5323F7DBE37>I<13FFB5FCA51207 7EB3B3AFB512FCA5163F7CBE1D>I<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13 FE4A6E487FDA0FE09026F07F077F91261F003FEBF8010007013EDAF9F0806C0178ECFBC0 4A6DB4486C7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858> I<01FFEB1FF8B5EBFFFE02036D7E4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5C A25CA35CB3A4B5D8FE0FB512E0A533297CA83A>II<01FFEBFFE0B5000713FC021FEBFF80027F80DAFF8113F09139FC007FF8 000301F06D7E4A6D7E4A130F4A6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E 6E5C6E495A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC028713FC028113C00280C9 FCACB512FEA5333B7DA83A>II<3901 FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF8000713F8000313F0EBFFE0A2 9138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FCA525297DA82B>I<90383FFC 1E48B512BE000714FE5A381FF00F383F800148C7FC007E147EA200FE143EA27E7F6D90C7 FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C61580131F1300020713C0140000 78147F00F8143F151F7EA27E16806C143F6D140001E013FF9038F803FE90B55A15F0D8F8 7F13C026E00FFEC7FC222B7DA929>IIII III E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fp cmr10 10 80 /Fp 80 125 df11 DI14 D<001C131C007F137F39FF80FF80A26D13C0A3 007F137F001C131C00001300A40001130101801380A20003130301001300485B00061306 000E130E485B485B485B006013601A197DB92A>34 D<017C166048B416F02607C3801401 260F81C01403D900E04A5A001E01784A5A003E6D141F003C013FEC7F80007C90271BE003 FFC7FC0218B512BF007891381FFC3E00F8011CC75A020C14FC5F4C5A16035F4C5A160F5F 4CC8FC021C5B00780118133E007C5D16FC003C01385B003E90383001F0001EEB70036C01 E05B903981C007C03907C3800F2601FF005BD8007C49C9FC90C748EB07C0033EEB1FF04B EB3C3803FCEBF81C4B497E913A01F001E00602030103130703E0497E912607C007148002 0F15011580DA1F00018013C04A010F1300143E5C14FC5C495A13035C495A130F4A010713 0149C701C013805B013E1603490203140001FC6F5A49020113064848913800F00E000370 5A49ED3C3849ED1FF06C48ED07C03A437BBD45>37 D<121C127FEAFF80A213C0A3127F12 1C1200A412011380A2120313005A1206120E5A5A5A12600A1979B917>39 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FC A25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E 1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F 6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0 B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7 FC120E5A5A5A5A5A13527CBD20>I<15301578B3A6007FB812F8B912FCA26C17F8C80078 C8FCB3A6153036367BAF41>43 D<121C127FEAFF80A213C0A3127F121C1200A412011380 A2120313005A1206120E5A5A5A12600A19798817>II<121C127F EAFF80A5EA7F00121C0909798817>I<150C151E153EA2153C157CA2157815F8A215F014 01A215E01403A215C01407A21580140FA215005CA2141E143EA2143C147CA2147814F8A2 5C1301A25C1303A2495AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B 1201A25B1203A25B1207A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A 12601F537BBD2A>IIIII<1538A2157815F8A2140114031407A2140F141F141B14331473146314C313011483EB 030313071306130C131C131813301370136013C01201EA038013005A120E120C5A123812 305A12E0B712F8A3C73803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD80780 133C9038F003F890B5FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE903878 0F803907E007E090388003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490 C71300485C12E000605C12700030495A00385C6C1303001E495A6C6C485A3907E03F8000 01B5C7FC38007FFCEB1FE0213A7CB72A>II<123012 38123E003FB612E0A316C05A168016000070C712060060140E5D151800E01438485C5D5D C712014A5A92C7FC5C140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495A A3133FA5137FA96DC8FC131E233B7BB82A>III<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C09 2479A317>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201 A412031300A25A1206A2120E5A121812385A1260093479A317>I<007FB812F8B912FCA2 6C17F8CCFCAE007FB812F8B912FCA26C17F836167B9F41>61 D64 D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC18 0FA202387FEC3007A202707FEC6003A202C07F1501A2D901807F81A249C77F167FA20106 810107B6FCA24981010CC7121FA2496E7EA3496E7EA3496E7EA213E0707E1201486C81D8 0FFC02071380B56C90B512FEA3373C7DBB3E>II<913A01FF800180 020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F 80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2485A1703123F5B00 7F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C7E5F6C7E17066C6C 150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF80 3FC7FC9039007FFFFC020F13F002011380313D7BBA3C>IIIIIII<013FB512E0A39039001FFC00EC07F8 B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49C7FC380781 FC3801FFF038007F80233B7DB82B>IIIIII IIII<00 3FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A300601730A4 00E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>IIII91 D<39018001800003130339 07000700000E130E485B0018131800381338003013300070137000601360A200E013E048 5BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F80390E000E001A1974B92A> II97 DIIII<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213 FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I< ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0 10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38 060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048 C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB 0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>IIIIII<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380 3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348 6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90 39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280 A329257EA42E>II<3903F01FE000FFEB7FF89038F1E07E9039F3801F 803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3 ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF F8EC1FC091C8FCAB487EB512C0A328357EA42E>II<3807E01F00FFEB7FC09038E1E3 E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512 F0A31C257EA421>II<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215 C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>IIIIII<003FB5 12FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F15 0014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B 4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>I124 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fq cmsy10 10 3 /Fq 3 104 df15 D102 D<12FCEAFFC0EA07F0EA01FCEA00 7E7F80131F80130FB3A7801307806D7E6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A49 5A495A5C130F5CB3A7131F5C133F91C7FC137E485AEA07F0EAFFC000FCC8FC1D537ABD2A >I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fr cmti12 12 17 /Fr 17 122 df<13F0EA03FC1207A2EA0FFEA4EA07FCEA03CCEA000C131C1318A2133813 301370136013E0EA01C013801203EA0700120E5A5A5A5A5A0F1D7A891E>44 D<91B712FCF0FF8019E00201903980001FF06E90C7EA07F84A6F7E727E4B81841A800203 167F5DA314075D19FFA2020F17004B5C611803021F5E4B4A5A180F4E5A023F4B5A4BEC7F 804EC7FCEF03FC027FEC0FF84BEBFFC092B6C8FC18E0913AFF800007F892C7EA01FC717E 187F49834A6F7EA30103835CA313075CA3010F5F4A157FA24E5A131F4A4A90C7FC601703 013F4B5A4A4A5A4D5A017F4B5A4D5A4A4948C8FC01FFEC0FFEB812F817C04CC9FC41447A C345>66 DI< 001FB500F090383FFFFCA326003FF0C7000113806D48913800FE00013F167C18785C1870 18F0017F5E5CA2170101FF5E91C8FCA21703485F5BA21707000394C7FC5BA25F0007160E 5BA2171E120F49151CA2173C121F491538A21778123F491570A217F0127F495DA2160100 FF5E90C8FCA216035F16074893C8FC5E160E161E5E007E1538007F15785E6C4A5A6D495A 001F4A5A6D49C9FC6C6C133E6C6C13F83903FC07F0C6B512C0013F90CAFCEB07F83E466D C348>85 D97 D 101 DI<143C147E14FE1301A3EB00FC14701400AE137C48B4FC3803C780380703C0 000F13E0120E121C13071238A21278EA700F14C0131F00F0138012E0EA003F1400A25B13 7EA213FE5B12015BA212035B141E0007131C13E0A2000F133CEBC038A21478EB807014F0 14E0EB81C0EA0783EBC7803803FE00EA00F8174378C11E>105 D<14FE137FA3EB01FC13 001301A25CA21303A25CA21307A25CA2130FA25CA2131FA25C167E013F49B4FC92380783 C09138000E07ED3C1F491370ED603F017E13E0EC01C09026FE03801380913907000E00D9 FC0E90C7FC5C00015B5C495AEBF9C03803FB8001FFC9FCA214F03807F3FCEBF07F9038E0 1FC06E7E000F130781EBC003A2001F150FA20180140EA2003F151E161C010013E0A2485D A2007E1578167000FE01015B15F1489038007F800038021FC7FC2A467AC42D>107 DI110 DI114 DI<1470EB01F8A313035CA313075CA3130F5CA313 1F5CA2007FB512E0B6FC15C0D8003FC7FCA25B137EA313FE5BA312015BA312035BA31207 5BA3120F5BA2EC0780001F140013805C140E003F131EEB001C143C14385C6C13F0495A6C 485AEB8780D807FEC7FCEA01F81B3F78BD20>I<017C143848B414FC3A03C78001FE3807 03C0000F13E0120E001C14000107147E1238163E1278D8700F141E5C131F00F049131C12 E0EA003F91C7123C16385B137E167801FE14705BA216F0000115E05B150116C0A24848EB 0380A2ED0700A2150E12015D6D5B000014786D5B90387C01E090383F0780D90FFFC7FCEB 03F8272D78AB2D>118 D<137C48B414072603C780EB1F80380703C0000F7F000E153F00 1C1600130712385E0078157EEA700F5C011F14FE00F0495B12E0EA003FEC00015E5B137E 150301FE5C5BA2150700015D5BA2150F00035D5BA2151F5EA2153F12014BC7FC6D5B0000 5BEB7C0390383E0F7EEB1FFEEB03F090C712FE5DA214015D121F397F8003F0A24A5A4848 485A5D48131F00F049C8FC0070137E007813F8383801F0381E07C06CB4C9FCEA01FC2940 78AB2F>121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fs cmr12 12 16 /Fs 16 119 df67 DI77 D87 D97 D<167FED3FFFA315018182B3EC7F80903803FFF090380FC07C9038 3F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA2127FA290C8FC5AAB7E 7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C010E13C0013F011C13 FE90380FC0F8903803FFE09026007F0013002F467DC436>100 DI104 DI108 D<3901FC01FE00FF903807FFC091381E07 F091383801F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A848 6CECFF80B5D8F83F13FEA32F2C7DAB36>110 D<3903F803F000FFEB1FFCEC3C3EEC707F 0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA320 2C7DAB26>114 D<90383FE0183901FFFC383907E01F78390F0003F8001E130148130000 7C1478127800F81438A21518A27EA27E6C6C13006C7E13FC383FFFE06C13FC6C13FF6C14 C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE1400157E7E153EA27EA36C143C 6C147C15786C14F86CEB01F039F38003E039F1F00F8039E07FFE0038C00FF01F2E7DAC26 >I<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2C648C7FCB3A4 150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E0903801FFC0903800 7F001E3E7EBC26>III E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ft cmbx12 14.4 23 /Ft 23 119 df14 D47 D58 D<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F92B8EA803F0203 DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901 F8824949824949824949824949824990CA7E494883A2484983485B1B7F485B481A3FA248 49181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D19 80A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A 6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE0 01FFF0020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC525479D261>67 D69 D73 D<027FB71280A591C76C90C7FCB3B3B3EA07F0EA1FFC487E487EA2B57EA44C5AA34A485B 7E49495BD83FF8495BD81FE05DD80FFC011F5B2707FF807F90C8FC000190B512FC6C6C14 F0011F14C0010101F8C9FC39537DD145>I<93380FFFC00303B6FC031F15E092B712FC02 03D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901 E0ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A83 481B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C 1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B 6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0 011F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E0 565479D265>79 D97 DI<913801FFF8021FEBFF8091B612F0010315FC010F9038C00FFE903A1FFE 0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F138091C7FC486F130070 5A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C 6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF0010390B55A01001580023F49 C7FC020113E033387CB63C>I<4DB47E0407B5FCA5EE001F1707B3A4913801FFE0021F13 FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC0101B5FC49487F4849143F48 4980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D 5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE 0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0023F13FC49B6FC010715C0 4901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E48178048497F18C048 8191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6127FA27F7EA218E06C EE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB 03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F034387CB63D>I103 D<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7 FC90C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>105 D108 DII<913801FFE0021F13FE91B612C0010315F0010F9038 807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C8 6C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA2 6C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF80 7FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<90397FE003FEB590380F FF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF 150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114 D<143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426 003FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF8 6D6C5B021F5B020313802A4D7ECB34>116 DII E %EndDVIPSBitmapFont end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%PaperSize: A4 %%EndSetup %%Page: 1 1 1 0 bop 186 315 a Ft(Jaguar:)61 b(Enabling)45 b(E\016cien)l(t)h(Comm)l (unication)h(and)d(I/O)i(in)e(Ja)l(v)-7 b(a)1300 556 y Fs(Matt)33 b(W)-8 b(elsh)32 b(and)h(Da)m(vid)f(Culler)1214 672 y Fr(University)j(of)g(California,)e(Berkeley)1394 789 y Fq(f)p Fp(mdw,culler)p Fq(g)p Fp(@cs.b)r(erk)n(eley)-7 b(.edu)0 1114 y Fo(Abstract)100 1309 y Fn(Implemen)n(ting)68 b(e\016cien)n(t)j(comm)n(unication)e(and)h(I/O)0 1408 y(mec)n(hanisms)36 b(in)h(Ja)n(v)l(a)g(requires)h(b)r(oth)e(fast)j (access)f(to)f(lo)n(w-)0 1508 y(lev)n(el)f(system)f(resources)h(\(suc)n (h)f(as)h(net)n(w)n(ork)g(and)f(ra)n(w)h(disk)0 1607 y(in)n(terfaces\))c(and)f(direct)g(manipulation)g(of)h(memory)d (regions)0 1707 y(external)f(to)h(the)f(Ja)n(v)l(a)g(heap)h(\(suc)n(h)e (as)i(comm)n(unication)e(and)0 1807 y(I/O)36 b(bu\013ers\).)68 b(Ja)n(v)l(a)37 b(nativ)n(e)f(metho)r(ds)g(are)h(to)r(o)h(exp)r(ensiv)n (e)0 1906 y(to)23 b(p)r(erform)g(these)g(op)r(erations)h(and)f(raise)h (serious)g(protection)0 2006 y(concerns.)63 b(W)-6 b(e)35 b(presen)n(t)f Fm(Jaguar)p Fn(,)39 b(a)d(new)f(mec)n(hanism)e(that)0 2106 y(pro)n(vides)f(Ja)n(v)l(a)h(applications)h(with)e(e\016cien)n(t)h (access)h(to)e(sys-)0 2205 y(tem)22 b(resources)j(while)f(retaining)g (the)f(protection)h(of)h(the)e(Ja)n(v)l(a)0 2305 y(en)n(vironmen)n(t.) 73 b(This)40 b(is)f(accomplished)h(through)e(compile-)0 2404 y(time)19 b(translation)h(of)h(certain)f(Ja)n(v)l(a)f(b)n(yteco)r (des)h(to)f(inlined)h(ma-)0 2504 y(c)n(hine)i(co)r(de)h(segmen)n(ts.)33 b(W)-6 b(e)22 b(demonstrate)f(the)h(use)h(of)g(Jaguar)0 2604 y(through)34 b(a)h(Ja)n(v)l(a)h(in)n(terface)f(to)g(the)g(VIA)e (fast)j(comm)n(unica-)0 2703 y(tions)25 b(la)n(y)n(er,)g(whic)n(h)f(ac) n(hiev)n(es)h(nearly)f(iden)n(tical)h(p)r(erformance)0 2803 y(to)32 b(that)f(of)i(C,)g(and)e Fm(Pr)l(e-Serialize)l(d)k(Obje)l (cts)p Fn(,)f(a)f(mec)n(hanism)0 2903 y(whic)n(h)c(greatly)h(reduces)f (the)f(cost)i(of)g(Ja)n(v)l(a)f(ob)t(ject)h(serializa-)0 3002 y(tion.)0 3313 y Fl(1)112 b(In)m(tro)s(duction)100 3507 y Fp(The)19 b(Ja)n(v)-5 b(a)19 b(programming)e(en)n(vironmen)n(t)i ([7)o(])h(has)f(made)0 3607 y(signi\014can)n(t)h(headw)n(a)n(y)f(in)i (supp)r(ort)f(of)h(a)f(wide)h(arra)n(y)d(of)j(ap-)0 3706 y(plication)h(areas,)g(including)h(mobile)g(agen)n(t)f(systems)g([21)o (],)0 3806 y(distributed)47 b(programming)e(mo)r(dels)i([18)o(],)52 b(en)n(terprise-)0 3906 y(wide)28 b(information)f(pro)r(cessing)g([15)o (],)h(and)g(scien)n(ti\014c)f(and)0 4005 y(n)n(umerical)46 b(computing)h([22)o(].)95 b(As)47 b(Ja)n(v)-5 b(a's)45 b(p)r(opularit)n(y)0 4105 y(gro)n(ws,)32 b(so)h(will)g(the)g(demands)g (placed)g(up)r(on)g(it)g(to)g(sup-)0 4204 y(p)r(ort)f(ev)n(en)g(more)f (div)n(erse)g(computing)i(platforms,)f(from)0 4304 y(em)n(b)r(edded)27 b(systems)g([19)o(])g(to)g(w)n(orkstation)e(clusters)h([27)o(].)0 4404 y(If)i(w)n(e)f(wish)g(to)h(bring)e(Ja)n(v)-5 b(a)26 b(to)i(b)r(ear)f(on)g(large)f(problems,)0 4503 y(it)f(seems)g(natural)f (that)h(Ja)n(v)-5 b(a)23 b(should)i(tak)n(e)f(adv)-5 b(an)n(tage)23 b(of)0 4603 y(the)j(resources)e(of)h(large-scale)e(serv) n(ers,)h(including)i(m)n(ulti-)0 4703 y(pro)r(cessors,)f(high-sp)r(eed) j(net)n(w)n(orks,)e(and)h(fast)h(I/O.)100 4802 y(A)19 b(great)f(deal)h(of)g(previous)g(w)n(ork)e(has)i(addressed)f(prob-)0 4902 y(lems)33 b(with)g(Ja)n(v)-5 b(a)32 b(pro)r(cessor)f(p)r (erformance,)i(namely)-7 b(,)34 b(ef-)0 5001 y(\014ciency)j(of)g (compiled)f(co)r(de,)k(thread)c(sync)n(hronization,)0 5101 y(and)43 b(garbage)e(collection)h(algorithms)g([16)o(,)h(20)o(].) 83 b(Ja)n(v)-5 b(a)0 5201 y(compilers,)31 b(including)g(b)r(oth)h (static)f(and)f(\\just-in-time")0 5300 y(\(JIT\))23 b(compilers,)g(are) e(no)n(w)i(capable)e(of)i(generating)e(co)r(de)0 5400 y(whic)n(h)34 b(riv)-5 b(als)33 b(lo)n(w)n(er-lev)n(el)e(languages)h (suc)n(h)h(as)g(C++)g(in)2010 1114 y(p)r(erformance)f([12)o(].)54 b(Ho)n(w)n(ev)n(er,)33 b(in)h(a)e(large)g(serv)n(er)g(en)n(vi-)2010 1214 y(ronmen)n(t,)21 b(high-p)r(erformance)d(comm)n(unication)h(and)h (I/O)2010 1313 y(pla)n(y)25 b(a)g(dominan)n(t)h(role.)35 b(These)26 b(asp)r(ects)f(of)h(Ja)n(v)-5 b(a)24 b(p)r(erfor-)2010 1413 y(mance)j(remain)g(largely)f(unaddressed.)2110 1513 y(Implemen)n(ting)40 b(e\016cien)n(t)h(comm)n(unication)f(and)g(I/O) 2010 1612 y(generally)51 b(requires)g(the)i(application)f(to)h(in)n(v)n (ok)n(e)e(op-)2010 1712 y(erating)39 b(system)h(calls,)j(p)r(erform)c (direct)h(manipulation)2010 1812 y(of)e(memory)f(\(e.g.,)j(use)e(p)r (oin)n(ters\))g(to)g(access)e(memory-)2010 1911 y(mapp)r(ed)46 b(I/O)f(and)g(net)n(w)n(ork)g(devices,)50 b(and)45 b(so)g(forth.)2010 2011 y(Unfortunately)-7 b(,)26 b(these)f(op)r(erations)f(are)g (inexpressible)h(as)2010 2110 y(mac)n(hine-indep)r(enden)n(t)30 b(Ja)n(v)-5 b(a)29 b(b)n(yteco)r(des.)45 b(Rather)30 b(than)2010 2210 y(exp)r(osing)19 b(lo)n(w-lev)n(el)f(\(and)i(hence)g (unsafe\))g(mac)n(hine)g(op)r(er-)2010 2310 y(ations)f(directly)h(to)g (the)g(Ja)n(v)-5 b(a)19 b(application,)i(it)f(is)g(desirable)2010 2409 y(to)40 b(abstract)f(a)n(w)n(a)n(y)f(the)i Fk(ac)l(c)l(ess)h(me)l (chanisms)48 b Fp(required)2010 2509 y(for)24 b(comm)n(unication)f(and) h(I/O)f(as)g(a)h(Ja)n(v)-5 b(a)23 b(ob)5 b(ject)23 b(replete)2010 2609 y(with)36 b(t)n(yp)r(e-safe)f(metho)r(ds)h(and)f(\014elds.)61 b(Op)r(erations)34 b(on)2010 2708 y(these)21 b(Ja)n(v)-5 b(a)20 b(ob)5 b(jects)20 b(should)h(translate)f(in)n(to)h(e\016cien)n (t)g(and)2010 2808 y(direct)30 b(\(as)g(m)n(uc)n(h)g(as)g(p)r (ossible\))g(access)f(to)h(the)h(lo)n(w-lev)n(el)2010 2907 y(mac)n(hine)41 b(resources)d(they)k(represen)n(t,)h(while)e (retaining)2010 3007 y(the)28 b(protection)f(of)g(the)h(Ja)n(v)-5 b(a)27 b(en)n(vironmen)n(t.)2110 3107 y(Ja)n(v)-5 b(a)31 b(pro)n(vides)h(so-called)g(\\nativ)n(e)g(metho)r(ds")h(whic)n(h)2010 3206 y(enable)24 b(co)r(de)g(implemen)n(ted)h(in)f(another)g(language)e (\(suc)n(h)2010 3306 y(as)d(C\))i(to)e(b)r(e)i(in)n(v)n(ok)n(ed)d(from) i(Ja)n(v)-5 b(a.)33 b(This)20 b(is)g(t)n(ypically)f(used)2010 3406 y(to)36 b(abstract)f(O/S)h(calls)f(and)i(other)e(functions)i(as)e (Ja)n(v)-5 b(a)2010 3505 y(classes.)34 b(Ho)n(w)n(ev)n(er,)23 b(nativ)n(e)h(metho)r(ds)g(incur)g(a)f(high)h(o)n(v)n(er-)2010 3605 y(head,)38 b(requiring)d(that)h(data)g(b)r(e)g(copied)g(b)r(et)n (w)n(een)g(Ja)n(v)-5 b(a)2010 3704 y(and)34 b(nativ)n(e)h(co)r(de;)j (in)c(addition,)j(implemen)n(ting)e(nativ)n(e)2010 3804 y(metho)r(ds)c(in)g(a)g(lo)n(w-lev)n(el)e(language)g(is)i(error-prone)c (and)2010 3904 y(p)r(oten)n(tially)21 b(negates)e(the)j(safet)n(y)e (guaran)n(tees)e(of)j(the)g(Ja)n(v)-5 b(a)2010 4003 y(sandb)r(o)n(x.)35 b(Considering)23 b(these)h(p)r(erformance)f(and)h(safet)n(y)2010 4103 y(limitations,)i(w)n(e)f(b)r(eliev)n(e)h(nativ)n(e)f(metho)r(ds)g (are)g(ill-suited)2010 4203 y(to)20 b(enable)g(high-p)r(erformance)f (comm)n(unication)h(and)g(I/O)2010 4302 y(in)28 b(Ja)n(v)-5 b(a.)2110 4402 y(W)e(e)27 b(presen)n(t)f(an)g(alternate)g(approac)n(h,) f Fk(Jaguar)p Fp(,)3653 4372 y Fj(1)3718 4402 y Fp(that)2010 4501 y(enables)g(direct,)i(protected)e(access)g(to)g(system)h (resources)2010 4601 y(represen)n(ted)34 b(as)g(Ja)n(v)-5 b(a)33 b(ob)5 b(jects.)58 b(This)34 b(is)h(accomplished)2010 4701 y(through)48 b(compile-time)h(co)r(de)g(transformation)e(whic)n(h) 2010 4800 y(maps)34 b(certain)f(Ja)n(v)-5 b(a)33 b(b)n(yteco)r(des)g (to)h(short,)h(inlined)g(ma-)2010 4900 y(c)n(hine)44 b(co)r(de)g(segmen)n(ts.)86 b(This)44 b(approac)n(h)e(retains)i(the) 2010 5000 y(t)n(yp)r(e-safet)n(y)52 b(and)h(protection)g(of)g(the)h(Ja) n(v)-5 b(a)52 b(en)n(viron-)2010 5099 y(men)n(t)20 b(while)g(allo)n (wing)e(applications)g(to)i(directly)f(lev)n(erage)p 2010 5165 744 4 v 2102 5219 a Fi(1)2137 5242 y Fh(Jaguar)32 b(is)f(an)h(acron)n(ym)g(for)e Fg(Java)k(A)l(c)l(c)l(ess)g(to)f (Generic)g(Un-)2010 5321 y(derlying)27 b(A)n(r)l(chite)l(ctur)l(al)i(R) l(esour)l(c)l(es)p Fh(.)38 b(F)-6 b(or)26 b(more)e(information,)g(see) 2010 5400 y Ff(http://www.cs.berkeley.)q(edu/)q(~md)q(w/pr)q(oj/)q (jagu)q(ar)p Fh(.)p eop %%Page: 2 2 2 1 bop 0 83 a Fp(serv)n(er)35 b(resources)h(suc)n(h)h(as)f (memory-mapp)r(ed)g(net)n(w)n(ork)0 183 y(in)n(terfaces,)31 b(ra)n(w)f(disk)h(I/O,)f(and)h(so)g(forth.)47 b(W)-7 b(e)31 b(demon-)0 282 y(strate)26 b(Jaguar)f(through)h(t)n(w)n(o)g (examples:)36 b Fk(JaguarVIA)p Fp(,)26 b(a)0 382 y(Ja)n(v)-5 b(a)32 b(binding)i(to)g(the)g(VIA)g([23)o(])g(fast)g(comm)n(unications) 0 482 y(substrate,)28 b(and)g Fk(Pr)l(e-Serialize)l(d)33 b(Obje)l(cts)p Fp(,)28 b(a)h(mec)n(hanism)0 581 y(that)i(greatly)d (reduces)i(the)h(cost)e(of)i(rendering)e(Ja)n(v)-5 b(a)29 b(ob-)0 681 y(jects)h(in)g(an)g(externalized)f(form)g(for)h(comm)n (unication)f(or)0 780 y(I/O.)f(W)-7 b(e)28 b(b)r(eliev)n(e)h(that)f (the)h(approac)n(h)e(tak)n(en)g(in)i(Jaguar)0 880 y(is)h(general)f (enough)h(to)g(capture)g(a)g(large)f(range)g(of)i(addi-)0 980 y(tional)c(uses.)100 1081 y(This)54 b(pap)r(er)f(mak)n(es)g(three)h (ma)5 b(jor)53 b(con)n(tributions.)0 1181 y(First,)36 b(w)n(e)f(presen)n(t)f(a)g(no)n(v)n(el)g(approac)n(h)e(to)j(enabling)f (ef-)0 1280 y(\014cien)n(t)41 b(and)h(safe)f(utilization)g(of)g(serv)n (er)f(hardw)n(are)f(re-)0 1380 y(sources)28 b(from)h(Ja)n(v)-5 b(a.)40 b(Second,)30 b(w)n(e)f(presen)n(t)f Fk(JaguarVIA)p Fp(,)0 1480 y(whic)n(h)34 b(obtains)g(the)h(same)f(VIA)h(comm)n (unications)e(p)r(er-)0 1579 y(formance)20 b(as)g(C.)h(Third,)h(w)n(e)f (presen)n(t)f(Pre-Serialized)f(Ob-)0 1679 y(jects,)25 b(and)g(demonstrate)e(ho)n(w)h(their)g(use,)h(as)f(enabled)g(b)n(y)0 1779 y(Jaguar,)f(can)h(eliminate)h(the)g(high)f(o)n(v)n(erhead)e(of)j (Ja)n(v)-5 b(a)23 b(ob-)0 1878 y(ject)28 b(serialization.)100 1980 y(The)48 b(organization)f(of)i(the)g(rest)f(of)h(this)g(pap)r(er)f (is)0 2079 y(as)37 b(follo)n(ws.)64 b(Section)38 b(2)f(pro)n(vides)e (bac)n(kground)h(on)h(the)0 2179 y(issues)50 b(faced)g(b)n(y)g(Jaguar)e (and)i(related)f(w)n(ork.)103 b(Sec-)0 2278 y(tion)35 b(3)f(describ)r(es)f(the)i(design)f(and)h(implemen)n(tation)f(of)0 2378 y(Jaguar,)24 b(and)i(Section)g(4)f(demonstrates)g(its)h(use)g (through)0 2478 y(a)e(fast)f(Ja)n(v)-5 b(a)23 b(binding)h(to)g(VIA.)h (Section)f(5)f(describ)r(es)g(Pre-)0 2577 y(Serialized)c(Ob)5 b(jects.)35 b(Section)20 b(6)g(discusses)f(directions)h(for)0 2677 y(future)28 b(w)n(ork)e(and)i(Section)f(7)g(concludes.)0 2998 y Fl(2)112 b(Motiv)-6 b(ation)36 b(and)i(Bac)m(kground)100 3203 y Fp(In)31 b(this)h(section,)h(w)n(e)e(motiv)-5 b(ate)32 b(the)g(approac)n(h)e(tak)n(en)0 3302 y(b)n(y)g(Jaguar)e(b)n (y)h(lo)r(oking)g(more)h(closely)f(at)g(the)i(problems)0 3402 y(that)d(it)g(addresses.)100 3503 y(A)k(n)n(um)n(b)r(er)g(of)f(p)r (erformance)g(issues)h(arise)e(when)i(one)0 3603 y(considers)40 b(implemen)n(ting)i(large-scale)d(serv)n(er)h(applica-)0 3703 y(tions)d(in)g(Ja)n(v)-5 b(a.)65 b(These)37 b(can)f(b)r(e)i (roughly)e(divided)h(in)n(to)0 3802 y(t)n(w)n(o)26 b(categories:)35 b(CPU-related)26 b(issues)g(and)h(I/O-related)0 3902 y(issues.)51 b(In)32 b(terms)h(of)f(the)h(CPU,)f(p)r(erformance)f(of)i (com-)0 4002 y(piled)22 b(Ja)n(v)-5 b(a)21 b(co)r(de)h(is)g(the)h (paramoun)n(t)e(concern,)h(but)h(other)0 4101 y(factors)34 b(|)h(including)g(garbage)d(collection)j(and)g(thread)0 4201 y(sync)n(hronization)22 b(|)i(m)n(ust)g(b)r(e)g(considered)f(as)h (w)n(ell.)35 b(F)-7 b(or-)0 4300 y(tunately)g(,)31 b(a)f(great)e(deal)i (of)g(previous)f(w)n(ork)f(has)i(in)n(v)n(esti-)0 4400 y(gated)25 b(this)g(problem)g(domain,)h(for)f(Ja)n(v)-5 b(a)24 b([16)o(,)h(20)o(])h(as)e(w)n(ell)0 4500 y(as)j(other)g(ob)5 b(ject-orien)n(ted)26 b(languages)g([2)o(,)i(5].)100 4601 y(Ja)n(v)-5 b(a)25 b(I/O)i(p)r(erformance)f(remains)g(largely)g (unin)n(v)n(esti-)0 4701 y(gated.)48 b(A)32 b(primary)f(goal)f(is)i(to) f(giv)n(e)g(Ja)n(v)-5 b(a)30 b(applications)0 4800 y(e\016cien)n(t)19 b(access)f(to)i(lo)n(w-lev)n(el)d(system)i(resources)f(\(suc)n(h)h(as)0 4900 y(fast)31 b(net)n(w)n(ork)f(in)n(terfaces,)h(I/O)f(and)h(RAID)h (con)n(trollers,)0 5000 y(and)39 b(so)g(forth\);)45 b(suc)n(h)39 b(access)f(is)h(necessary)e(for)i(imple-)0 5099 y(men)n(ting)23 b(high-p)r(erformance)e(comm)n(unication)g(and)i(I/O.)0 5199 y(It)42 b(is)g(this)g(set)g(of)g(problems)f(that)h(Jaguar)e(in)n (tends)i(to)0 5299 y(solv)n(e.)100 5400 y(T)-7 b(raditionally)g(,)22 b(the)g(op)r(erating)f(system)g(is)h(resp)r(onsible)2010 83 y(for)e(pro)n(viding)g(applications)g(access)g(to)h(hardw)n(are,)f (either)2010 183 y(through)46 b(high-lev)n(el)f(in)n(terfaces)h(\(suc)n (h)h(as)e(\014lesystems)2010 282 y(and)22 b(so)r(c)n(k)n(ets\))f(or)h (lo)n(w)n(er-lev)n(el)e(mec)n(hanisms)h(\(suc)n(h)i(as)e(ra)n(w)2010 382 y(disk)29 b(I/O)f(calls\).)42 b(Ho)n(w)n(ev)n(er,)28 b(in)h(man)n(y)g(cases)f(it)i(is)f(desir-)2010 482 y(able)k(to)f (circum)n(v)n(en)n(t)g(the)h(op)r(erating)f(system)h(to)f(obtain)2010 581 y(higher)27 b(p)r(erformance.)36 b(In)27 b(the)h(case)f(of)g(fast)h (net)n(w)n(orking,)2010 681 y(user-lev)n(el)37 b(net)n(w)n(ork)g(in)n (terfaces)g(pro)n(vide)g(lo)n(w-o)n(v)n(erhead)2010 780 y(comm)n(unication)23 b(while)h(allo)n(wing)e(m)n(ultiple)j(pro)r (cesses)d(to)2010 880 y(safely)d(share)g(the)h(net)n(w)n(ork)e(in)n (terface)h(\(NI\).)i(Applications)2010 980 y(circum)n(v)n(en)n(t)g(the) h(op)r(erating)e(system)i(k)n(ernel)f(and)g(directly)2010 1079 y(access)h(net)n(w)n(ork)f(in)n(terface)h(resources,)g(suc)n(h)g (as)g(memory-)2010 1179 y(mapp)r(ed)h(data)e(structures)h(or)f (\\protected")g(NI)i(registers.)2010 1279 y(Doing)d(so)f(eliminates)g (con)n(text)h(switc)n(h)f(o)n(v)n(erhead)f(and)i(the)2010 1378 y(cost)25 b(of)g(cop)n(ying)f(data)h(b)r(et)n(w)n(een)g(user)f (and)h(k)n(ernel)g(space.)2010 1478 y(A)k(large)d(n)n(um)n(b)r(er)i(of) g(user-lev)n(el)f(net)n(w)n(ork)g(in)n(terface)g(pro-)2010 1577 y(tot)n(yp)r(es)38 b(ha)n(v)n(e)f(demonstrated)g(this)h (principle,)j(suc)n(h)d(as)2010 1677 y(Activ)n(e)d(Messages)e([4])i (and)g(U-Net)h([25)o(];)j(VIA)c([23)o(])h(is)e(a)2010 1777 y(recen)n(t)27 b(e\013ort)g(to)h(standardize)e(these)i(in)n (terfaces.)2110 1881 y(A)46 b(related)f(requiremen)n(t)g(for)h(comm)n (unication)f(and)2010 1981 y(I/O)d(is)g(the)h(use)f(of)g (explicitly-managed)f(memory)h(re-)2010 2080 y(gions.)75 b(F)-7 b(or)40 b(example,)k(user-lev)n(el)39 b(net)n(w)n(ork)g(in)n (terfaces)2010 2180 y(often)25 b(require)f(that)h(comm)n(unication)f (bu\013ers)h(b)r(e)h(pinned)2010 2279 y(to)21 b(ph)n(ysical)f(memory)g (for)g(direct)h(access)e(b)n(y)i(the)g(NI)g(hard-)2010 2379 y(w)n(are;)30 b(these)g(pages)f(m)n(ust)i(b)r(e)f(allo)r(cated)g (from)g(a)f(sp)r(ecial)2010 2479 y(p)r(o)r(ol)h(or)f(pinned)i (dynamically)f(b)n(y)g(the)g(O/S)g(or)f(NI)i([26)o(].)2010 2578 y(Memory-mapp)r(ed)36 b(\014les)g(are)g(often)h(used)g(for)f(I/O,) g(and)2010 2678 y(ra)n(w)17 b(disk)h(in)n(terfaces)g(usually)g(ha)n(v)n (e)f(sp)r(ecial)h(requiremen)n(ts)2010 2778 y(for)45 b(bu\013er)g(allo)r(cation.)89 b(Ho)n(w)n(ev)n(er,)48 b(this)e(requiremen)n(t)2010 2877 y(runs)37 b(coun)n(ter)g(to)h(the)g (existing)g(Ja)n(v)-5 b(a)36 b(mo)r(del)i(in)g(whic)n(h)2010 2977 y(all)g(ob)5 b(jects)39 b(and)f(arra)n(ys)e(are)i(allo)r(cated)g (from)g(a)h(single)2010 3076 y(heap,)27 b(managed)g(b)n(y)g(the)h (JVM's)g(garbage)d(collector.)2010 3289 y Fo(2.1)105 b(Related)35 b(W)-9 b(ork)2110 3503 y Fp(E\016cien)n(t)47 b(I/O)h(and)f(comm)n(unication)h(in)g(Ja)n(v)-5 b(a)47 b(has)2010 3602 y(b)r(een)21 b(in)n(v)n(estigated)e(through)h(t)n(w)n (o)f(primary)h(a)n(v)n(en)n(ues:)31 b(im-)2010 3702 y(plemen)n(ting)47 b(fast)h(ob)5 b(ject)47 b(serialization,)k(and)c(binding)2010 3801 y(fast)e(net)n(w)n(ork)f(in)n(terfaces)h(to)g(the)h(Ja)n(v)-5 b(a)44 b(en)n(vironmen)n(t.)2010 3901 y(In)36 b(terms)f(of)h (serialization,)g([14])f(describ)r(es)h(a)f(more)g(ef-)2010 4001 y(\014cien)n(t)j(implemen)n(tation)f(of)h(Ja)n(v)-5 b(a)36 b(remote)h(metho)r(d)h(in-)2010 4100 y(v)n(o)r(cation)h(\(RMI\)) j(whic)n(h)e(is)h(based)f(on)g(careful)g(co)r(ding)2010 4200 y(and)h(a)g(new)g(serialization)f(algorithm,)j(co)r(ded)f(en)n (tirely)2010 4300 y(in)e(Ja)n(v)-5 b(a.)74 b(Man)n(ta)39 b([10)o(])i(tak)n(es)e(the)i(more)e(extreme)h(ap-)2010 4399 y(proac)n(h)k(of)h(translating)g(the)h(en)n(tire)f(Ja)n(v)-5 b(a)44 b(application)2010 4499 y(to)38 b(C,)h(generating)e(sp)r (ecialized)h(p)r(er-class)f(serialization)2010 4598 y(co)r(de.)i(While) 29 b(this)f(mo)n(v)n(es)f(m)n(uc)n(h)h(of)g(the)h(run-time)f(o)n(v)n (er-)2010 4698 y(head)e(of)g(comm)n(unication)g(to)g(compile)g(time,)h (this)g(neces-)2010 4798 y(sitates)21 b(a)h(reengineering)e(of)i(the)g (Ja)n(v)-5 b(a)20 b(run-time,)j(and)f(the)2010 4897 y(resultan)n(t)31 b(en)n(vironmen)n(t)f(is)i(arguably)e(something)h(other)2010 4997 y(than)d(\\true")e(Ja)n(v)-5 b(a.)2110 5101 y(Sev)n(eral)50 b(pro)5 b(jects)50 b(ha)n(v)n(e)g(attempted)i(to)f(bind)h(fast)2010 5201 y(comm)n(unication)46 b(la)n(y)n(ers)f(in)n(to)h(the)i(Ja)n(v)-5 b(a)45 b(en)n(vironmen)n(t)2010 5300 y(through)28 b(the)h(use)f(of)h (nativ)n(e)f(metho)r(ds.)40 b(Nativ)n(e)29 b(metho)r(d)2010 5400 y(bindings)37 b(to)f(MPI)g([6])h(and)f(PVM)h([24)o(])g(ha)n(v)n(e) e(b)r(een)i(de-)p eop %%Page: 3 3 3 2 bop 0 12 3993 4 v -2 103 4 92 v 50 76 a Fe(Benc)n(hmark)p 1462 103 V 1025 w(Ja)n(v)-5 b(a)28 b(Nativ)n(e)h(In)n(terface)p 2389 103 V 100 w(Comparable)h(C)g(co)r(de)p 3255 103 V 100 w(Slo)n(wdo)n(wn)g(factor)p 3991 103 V 0 106 3993 4 v -2 198 4 92 v 50 170 a Fn(v)n(oid)25 b(arg,)i(v)n(oid)e(return)g (nativ)n(e)h(metho)r(d)e(call)p 1462 198 V 119 w(.909)j Fd(\026)p Fn(sec)p 2389 198 V 620 w(0.038)h Fd(\026)p Fn(sec)p 3255 198 V 521 w(23.9)p 3991 198 V -2 289 V 50 262 a(v)n(oid)d(arg,)i Fc(int)f Fn(return)f(nativ)n(e)h(metho)r(d)e (call)p 1462 289 V 142 w(.932)j Fd(\026)p Fn(sec)p 2389 289 V 620 w(0.042)h Fd(\026)p Fn(sec)p 3255 289 V 521 w(22.2)p 3991 289 V -2 380 V 50 353 a Fc(int)e Fn(arg,)h Fc(int)f Fn(return)f(nativ)n(e)h(metho)r(d)e(call)p 1462 380 V 165 w(.985)j Fd(\026)p Fn(sec)p 2389 380 V 620 w(0.049)h Fd(\026)p Fn(sec)p 3255 380 V 521 w(20.1)p 3991 380 V -2 472 V 50 444 a(4-)p Fc(int)e Fn(arg,)h Fc(int)f Fn(return)f(nativ)n(e)h(metho)r(d)e(call)p 1462 472 V 101 w(1.31)j Fd(\026)p Fn(sec)p 2389 472 V 620 w(0.072)h Fd(\026)p Fn(sec)p 3255 472 V 521 w(18.2)p 3991 472 V 0 475 3993 4 v -2 566 4 92 v 50 539 a(10-b)n(yte)d(C-to-Ja)n (v)l(a)h(arra)n(y)g(cop)n(y)p 1462 566 V 485 w(3.0)h Fd(\026)p Fn(sec)p 2389 566 V 658 w(0.354)h Fd(\026)p Fn(sec)e(\()p Fc(memcpy)p Fn(\))p 3255 566 V 201 w(8.47)p 3991 566 V -2 658 V 50 630 a(1024-b)n(yte)g(C-to-Ja)n(v)l(a)g(arra)n(y) f(cop)n(y)p 1462 658 V 409 w(18.0)i Fd(\026)p Fn(sec)p 2389 658 V 620 w(1.68)h Fd(\026)p Fn(sec)e(\()p Fc(memcpy)p Fn(\))p 3255 658 V 239 w(10.7)p 3991 658 V -2 749 V 50 721 a(102400-b)n(yte)g(C-to-Ja)n(v)l(a)g(arra)n(y)g(cop)n(y)p 1462 749 V 332 w(1706.0)i Fd(\026)p Fn(sec)p 2389 749 V 543 w(432.5)g Fd(\026)p Fn(sec)e(\()p Fc(memcpy)p Fn(\))p 3255 749 V 201 w(3.94)p 3991 749 V 0 752 3993 4 v -2 844 4 92 v 50 816 a(10-b)n(yte)f(Ja)n(v)l(a-to-C)h(arra)n(y)g(cop)n(y)p 1462 844 V 485 w(7.0)h Fd(\026)p Fn(sec)p 2389 844 V 658 w(0.354)h Fd(\026)p Fn(sec)e(\()p Fc(memcpy)p Fn(\))p 3255 844 V 201 w(19.8)p 3991 844 V -2 935 V 50 907 a(1024-b)n(yte)g(Ja) n(v)l(a-to-C)g(arra)n(y)f(cop)n(y)p 1462 935 V 409 w(272.0)i Fd(\026)p Fn(sec)p 2389 935 V 582 w(1.68)h Fd(\026)p Fn(sec)e(\()p Fc(memcpy)p Fn(\))p 3255 935 V 239 w(161.9)p 3991 935 V -2 1026 V 50 999 a(102400-b)n(yte)g(Ja)n(v)l(a-to-C)g(arra)n (y)g(cop)n(y)p 1462 1026 V 332 w(27274.0)i Fd(\026)p Fn(sec)p 2389 1026 V 505 w(432.5)g Fd(\026)p Fn(sec)e(\()p Fc(memcpy)p Fn(\))p 3255 1026 V 201 w(63.1)p 3991 1026 V 0 1029 3993 4 v 620 1261 a Fp(Figure)h(1:)36 b Fk(A)30 b(c)l(omp)l(arison)h(b)l(etwe)l(en)e(Java)i(Native)f(Interfac)l(e)g (and)g(C)h(overhe)l(ads.)0 1527 y Fp(scrib)r(ed,)37 b(ho)n(w)n(ev)n (er,)f(neither)g(of)f(these)h(ha)n(v)n(e)e(considered)0 1626 y(p)r(erformance)22 b(issues)g(with)h(resp)r(ect)g(to)f(obtaining) h(lo)n(w)f(la-)0 1726 y(tency)34 b(or)g(high)g(bandwidth.)58 b(The)34 b(approac)n(h)f(tak)n(en)g(b)n(y)0 1826 y(Ja)n(via)19 b([3])i(is)g(closest)f(to)g(that)i(in)f(Jaguar,)f(whic)n(h)h(describ)r (es)0 1925 y(mo)r(di\014cations)j(to)h(a)f(static)g(Ja)n(v)-5 b(a)23 b(compiler)h(to)h(enable)f(ef-)0 2025 y(\014cien)n(t)34 b(bindings)h(to)f(a)f(commercial)g(VIA)i(implemen)n(ta-)0 2124 y(tion.)i(Here,)27 b(nativ)n(e)g(metho)r(ds)h(w)n(ere)f(used)g(to) h(in)n(v)n(ok)n(e)e(the)0 2224 y(C-based)33 b(VIA)i(library)-7 b(,)34 b(while)h(comm)n(unication)e(bu\013ers)0 2324 y(w)n(ere)39 b(exp)r(osed)g(to)h(Ja)n(v)-5 b(a)38 b(through)h(sp)r (ecially-generated)0 2423 y(co)r(de)20 b(from)g(a)f(mo)r(di\014ed)i (compiler.)34 b(While)20 b(this)h(addresses)0 2523 y(most)h(of)g(the)h (p)r(erformance)e(issues)g(with)i(implemen)n(ting)f(a)0 2623 y(fast)f(Ja)n(v)-5 b(a)19 b(VIA)i(in)n(terface,)g(the)g(approac)n (h)e(do)r(es)h(not)h(co)n(v)n(er)0 2722 y(e\016cien)n(t)28 b(access)e(to)i(hardw)n(are)d(resources)h(in)h(general.)0 2915 y Fo(2.2)105 b(Are)35 b(nativ)m(e)g(metho)s(ds)f(adequate?)100 3109 y Fp(Ja)n(v)-5 b(a)32 b(nativ)n(e)h(metho)r(ds)h(can)f(pro)n(vide) f(access)h(to)g(lo)n(w-)0 3208 y(lev)n(el)49 b(system)f(functions,)55 b(alb)r(eit)50 b(at)e(high)h(cost:)80 b(the)0 3308 y(o)n(v)n(erhead)42 b(of)i(in)n(v)n(oking)f(nativ)n(e)g(metho)r(ds,)49 b(and)44 b(trans-)0 3407 y(ferring)39 b(data)g(b)r(et)n(w)n(een)g(Ja)n(v)-5 b(a)39 b(and)g(nativ)n(e)g(co)r(de,)k(often)0 3507 y(out)n(w)n(eighs)37 b(their)i(utilit)n(y)-7 b(.)71 b(This)39 b(is)g(of)f(particular)g(con-) 0 3607 y(cern)c(for)g(\014ne-grained)g(op)r(erations)f(suc)n(h)i(as)f (manipula-)0 3706 y(tion)29 b(of)h(net)n(w)n(ork)e(in)n(terface)g(data) h(structures.)41 b(Suc)n(h)30 b(op-)0 3806 y(erations)35 b(are)h(p)r(erformance-critical)e(and)j(should)f(incur)0 3906 y(as)d(little)h(o)n(v)n(erhead)d(as)i(p)r(ossible.)54 b(Additionally)-7 b(,)35 b(nativ)n(e)0 4005 y(co)r(de)21 b(requires)g(that)h(data)f(b)r(e)h(copied)f(b)r(et)n(w)n(een)h(sp)r (ecially-)0 4105 y(managed)k(memory)f(regions)g(\(suc)n(h)i(as)f(net)n (w)n(ork)f(bu\013ers\))0 4204 y(and)d(the)g(Ja)n(v)-5 b(a)20 b(heap,)j(again)e(resulting)g(in)h(high)g(o)n(v)n(erhead.)100 4304 y(Figure)32 b(1)g(details)h(the)g(o)n(v)n(erhead)e(of)i(nativ)n(e) f(co)r(de)h(in-)0 4404 y(v)n(o)r(cation)25 b(from)g(Ja)n(v)-5 b(a.)35 b(These)26 b(measuremen)n(ts)f(w)n(ere)f(p)r(er-)0 4503 y(formed)40 b(on)g(a)f(350)g(MHz)h(P)n(en)n(tium)g(I)r(I)h (running)e(Lin)n(ux)0 4603 y(2.2.5)22 b(using)g(Sun)i(JVM)f(1.1.7.)34 b(Here,)24 b(the)f(standard)f(Ja)n(v)-5 b(a)0 4703 y(Nativ)n(e)44 b(In)n(terface)h(\(JNI\))g([17)o(])g(w)n(as)f(emplo)n(y)n(ed,)k(whic)n (h)0 4802 y(abstracts)35 b(a)n(w)n(a)n(y)g(details)h(of)g(the)h(JVM)g (structure)e(from)0 4902 y(nativ)n(e)j(co)r(de;)43 b(the)38 b(in)n(ten)n(t)h(is)f(to)g(allo)n(w)f(nativ)n(e)g(co)r(de)h(to)0 5001 y(b)r(e)d(p)r(orted)f(across)e(di\013eren)n(t)j(JVM)f(arc)n (hitectures.)56 b(F)-7 b(or)0 5101 y(comparison,)22 b(similar)f(tests)h (conducted)h(in)f(C)h(are)e(sho)n(wn;)0 5201 y(all)34 b(compiler)f(optimizations)h(w)n(ere)f(disabled)h(for)g(the)g(C)0 5300 y(b)r(enc)n(hmark.)h(As)25 b(the)g(results)f(sho)n(w,)h(use)f(of)h (JNI)f(is)h(quite)0 5400 y(exp)r(ensiv)n(e,)43 b(requiring)c(nearly)g (a)h(microsecond)f(just)i(to)2010 1527 y(p)r(erform)28 b(a)h(nativ)n(e)f(metho)r(d)i(call)e(and)h(return.)41 b(More)28 b(se-)2010 1626 y(rious)23 b(is)h(the)h(arra)n(y-cop)n(y)20 b(o)n(v)n(erhead)i(whic)n(h)i(w)n(ould)g(surely)2010 1726 y(limit)h(the)g(p)r(erformance)f(of)h(an)n(y)e(fast)i(comm)n (unication)f(or)2010 1826 y(I/O)j(system)g(implemen)n(ted)h(using)g (nativ)n(e)f(metho)r(ds.)2110 1954 y(Regardless)e(of)j(p)r(erformance,) f(ho)n(w)n(ev)n(er,)e(nativ)n(e)i(co)r(de)2010 2054 y(is)c(a)h(blun)n (t)g(instrumen)n(t)f(with)h(whic)n(h)g(to)f(enable)h(lo)n(w-lev)n(el) 2010 2154 y(op)r(erations)32 b(in)h(Ja)n(v)-5 b(a.)52 b(Nativ)n(e)33 b(co)r(de)g(m)n(ust)g(b)r(e)h(as)e(trust-)2010 2253 y(w)n(orth)n(y)g(as)h(the)g(JVM)h(and)f(compiler,)h(y)n(et)g(its)f (p)r(o)n(w)n(er)f(is)2010 2353 y(e\013ectiv)n(ely)i(unlimited:)50 b(a)33 b(nativ)n(e)g(metho)r(d)i(can)e(spin)h(in)2010 2452 y(an)i(in\014nite)g(lo)r(op,)i(access)d(an)n(y)g(memory)g(lo)r (cation,)i(and)2010 2552 y(crash)27 b(the)h(virtual)f(mac)n(hine.)37 b(It)28 b(is)f(up)h(to)g(programmers)2010 2652 y(to)22 b(exercise)g(prop)r(er)f(discipline)i(when)g(implemen)n(ting)g(na-)2010 2751 y(tiv)n(e)h(metho)r(ds,)h(but)f(this)g(discipline)g(cannot)f(b)r (e)i(enforced)2010 2851 y(b)n(y)37 b(the)h(system)f(in)g(an)n(y)g(w)n (a)n(y)-7 b(.)65 b(Lik)n(ewise,)39 b(b)r(ecause)e(na-)2010 2951 y(tiv)n(e)42 b(co)r(de)g(is)g(generally)f(implemen)n(ted)h(in)h(a) f(lo)n(w-lev)n(el)2010 3050 y(language)25 b(suc)n(h)i(as)f(C,)h(it)h (is)f(b)r(oth)g(error-prone)d(and)j(non-)2010 3150 y(p)r(ortable;)46 b(it)40 b(is)g(di\016cult)h(to)f(con)n(vince)f(oneself)h(that)g(a)2010 3250 y(piece)c(of)g(nativ)n(e)f(co)r(de)h(will)g(w)n(ork)e(as)i(adv)n (ertised.)60 b(The)2010 3349 y(problem)18 b(is)h(exacerbated)f(b)n(y)h (the)g(fact)g(that)g(nativ)n(e)g(meth-)2010 3449 y(o)r(ds)37 b(m)n(ust)h(generally)e(do)h(a)g(large)g(amoun)n(t)g(of)g(w)n(ork)f(to) 2010 3548 y(amortize)28 b(the)h(cost)f(of)h(their)g(in)n(v)n(o)r (cation.)39 b(This)29 b(concern)2010 3648 y(is)i(a)g(serious)f(one,)h (as)g(it)g(is)g(the)h(robustness)e(of)h(the)g(Ja)n(v)-5 b(a)2010 3748 y(en)n(vironmen)n(t)29 b(that)i(mak)n(es)e(the)i (language)e(attractiv)n(e)g(in)2010 3847 y(the)f(\014rst)f(place.)2110 3976 y(The)i(Jaguar)e(approac)n(h)g(is)h(motiv)-5 b(ated)30 b(b)n(y)e(the)i(obser-)2010 4076 y(v)-5 b(ation)25 b(that)g(the)h(sort) e(of)i(lo)n(w-lev)n(el)d(op)r(erations)h(required)2010 4175 y(for)34 b(enabling)g(high-p)r(erformance)f(comm)n(unication)h (and)2010 4275 y(I/O)22 b(are)h(generally)e(short)i(and)g(easily)f (expressed)g(as)h(a)g(se-)2010 4375 y(quence)k(of)h(simple)f (instructions)g(\(e.g.,)g(accessing)f(a)h(par-)2010 4474 y(ticular)g(memory)f(address,)h(or)f(in)n(v)n(oking)g(a)h(system)g (call\).)2010 4574 y(This)37 b(suggests)f(that)i(suc)n(h)f(op)r (erations)f(can)g(b)r(e)i Fk(inline)l(d)2010 4673 y Fp(in)n(to)29 b(the)i(compiled)e(Ja)n(v)-5 b(a)29 b(b)n(yteco)r(de)g(stream)g(for)g (p)r(erfor-)2010 4773 y(mance,)f(and)g(that)h(some)f(form)g(of)g (static)g(analysis)f(could)2010 4873 y(b)r(e)d(p)r(erformed)g(to)g (guaran)n(tee)e(safet)n(y)h(or)g(t)n(yp)r(e-exactness.)2010 4972 y(Suc)n(h)35 b(an)g(approac)n(h)f(is)h(tan)n(tamoun)n(t)f(to)i (extending)f(the)2010 5072 y(Ja)n(v)-5 b(a)32 b(run)n(time)h(with)g (new,)i(safe)e(primitiv)n(es)f(whic)n(h)h(p)r(er-)2010 5172 y(form)25 b(sp)r(ecialized)h(op)r(erations)e(on)h(b)r(ehalf)h(of)g (an)f(applica-)2010 5271 y(tion.)2110 5400 y(This)38 b(situation)g(is)h(depicted)g(in)g(Figure)e(2.)70 b(Rather)p eop %%Page: 4 4 4 3 bop 246 956 a @beginspecial 0 @llx 0 @lly 318 @urx 218 @ury 1674 @rwi @setspecial %%BeginDocument: ./figures/primitives.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: primitives.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Wed Aug 4 15:50:00 1999 %%For: mdw@satori.boycott-ms.org (Matt Welsh,,,,) %%Orientation: Portrait %%BoundingBox: 0 0 318 218 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {0.620 0.620 0.620 srgb} bind def end save -40.0 234.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 4892 m -1000 -1000 l 6953 -1000 l 6953 4892 l cp clip 0.06000 0.06000 sc % Polyline 15.000 slw n 900 1800 m 2700 1800 l 2700 3300 l 900 3300 l cp gs col0 s gr % Polyline n 900 300 m 2700 300 l 2700 1500 l 900 1500 l cp gs col0 s gr /Helvetica-Bold ff 270.00 scf sf 1800 825 m gs 1 -1 sc (Java) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 1800 1170 m gs 1 -1 sc (Application) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 4800 1200 m gs 1 -1 sc (Java) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 4800 1545 m gs 1 -1 sc (Application) dup sw pop 2 div neg 0 rm col0 sh gr % Polyline n 4275 2700 m 4575 2700 l 4575 3000 l 4275 3000 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline n 3900 300 m 5700 300 l 5700 2325 l 3900 2325 l cp gs col0 s gr % Polyline n 3900 2700 m 4200 2700 l 4200 3000 l 3900 3000 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline n 4650 2700 m 4950 2700 l 4950 3000 l 4650 3000 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline n 5025 2700 m 5325 2700 l 5325 3000 l 5025 3000 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline n 5400 2700 m 5700 2700 l 5700 3000 l 5400 3000 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 4167 2599 m 4056 2819 l 4050 2573 l 3985 2866 l 4102 2892 l cp clip n 4200 2175 m 4050 2850 l gs col4 s gr gr % arrowhead n 4167 2599 m 4056 2819 l 4050 2573 l col4 s % Polyline gs clippath 4485 2579 m 4425 2819 l 4365 2579 l 4365 2880 l 4485 2880 l cp clip n 4425 2175 m 4425 2850 l gs col4 s gr gr % arrowhead n 4485 2579 m 4425 2819 l 4365 2579 l col4 s % Polyline gs clippath 5205 2574 m 5171 2819 l 5085 2587 l 5119 2886 l 5238 2873 l cp clip n 5100 2175 m 5175 2850 l gs col4 s gr gr % arrowhead n 5205 2574 m 5171 2819 l 5085 2587 l col4 s % Polyline gs clippath 5550 2573 m 5543 2819 l 5433 2599 l 5498 2892 l 5615 2866 l cp clip n 5400 2175 m 5550 2850 l gs col4 s gr gr % arrowhead n 5550 2573 m 5543 2819 l 5433 2599 l col4 s % Polyline gs clippath 4860 2579 m 4800 2819 l 4740 2579 l 4740 2880 l 4860 2880 l cp clip n 4800 2175 m 4800 2850 l gs col4 s gr gr % arrowhead n 4860 2579 m 4800 2819 l 4740 2579 l col4 s % Polyline 60.000 slw gs clippath 1894 1676 m 1800 2051 l 1706 1676 l 1706 2250 l 1894 2250 l cp clip n 1800 1350 m 1800 2175 l gs col4 s gr gr % arrowhead n 1894 1676 m 1800 2051 l 1706 1676 l col4 s /Helvetica-Bold ff 270.00 scf sf 4800 3300 m gs 1 -1 sc (Jaguar Primitives) dup sw pop 2 div neg 0 rm col0 sh gr /Helvetica-Bold ff 270.00 scf sf 1800 2625 m gs 1 -1 sc (Native Code) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 1800 3825 m gs 1 -1 sc (\(a\) Using Native Code) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 240.00 scf sf 4800 3825 m gs 1 -1 sc (\(b\) Using Jaguar) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 128 1222 a Fp(Figure)27 b(2:)37 b Fk(Native)30 b(c)l(o)l(de)g(and)h(Jaguar)e(c)l(omp)l(ar)l(e)l(d.)0 1489 y Fp(than)24 b(binding)h(a)f(large)e(amoun)n(t)i(of)g(nativ)n(e)g (co)r(de)g(to)g(Ja)n(v)-5 b(a,)0 1588 y(Jaguar)21 b(allo)n(ws)h(the)i (Ja)n(v)-5 b(a)22 b(run)n(time)h(to)g(b)r(e)h(extended)g(with)0 1688 y(a)d(set)h(of)g(new,)h(simple)f(primitiv)n(es.)35 b(Because)21 b(use)g(of)h(these)0 1788 y(primitiv)n(es)42 b(is)h(inexp)r(ensiv)n(e,)k(nearly)41 b(all)i(functionalit)n(y)-7 b(,)0 1887 y(including)37 b(complex)g(system)g(soft)n(w)n(are,)h(can)e (b)r(e)i(imple-)0 1987 y(men)n(ted)20 b(in)g(Ja)n(v)-5 b(a,)20 b(leading)f(to)g(more)g(robust)g(applications.)0 2086 y(The)41 b(use)g(of)g(Jaguar)f(lends)h(itself)g(to)g(a)g (programming)0 2186 y(st)n(yle)31 b(that)g(uses)g(mostly)g(Ja)n(v)-5 b(a)30 b(and)h(a)g(small)f(amoun)n(t)h(of)0 2286 y(nativ)n(e)c(co)r (de,)h(rather)e(than)i(the)g(con)n(v)n(erse.)0 2603 y Fl(3)112 b(Jaguar)27 b(Design)e(and)i(Implemen)m(tation)100 2805 y Fp(Jaguar)33 b(allo)n(ws)h(the)i(Ja)n(v)-5 b(a)34 b(run)n(time)i(to)f(b)r(e)h(extended)0 2904 y(with)47 b(new)f(primitiv)n(e)g(op)r(erations)e(whic)n(h)i(enable)g(e\016-)0 3004 y(cien)n(t)40 b(access)f(to)h(hardw)n(are)e(resources.)72 b(These)39 b(primi-)0 3104 y(tiv)n(es)32 b(are)g(sp)r(eci\014ed)h(as)f (short)f(mac)n(hine)i(co)r(de)f(segmen)n(ts)0 3203 y(whic)n(h)40 b(are)f(directly)h(inlined)g(in)n(to)g(the)h(Ja)n(v)-5 b(a)38 b(b)n(yteco)r(de)0 3303 y(as)i(it)i(is)e(compiled.)77 b(The)41 b(fundamen)n(tal)g(op)r(eration)f(of)0 3402 y(a)f(Ja)n(v)-5 b(a)39 b(compiler)g(is)h(to)g(translate)f(sequences)g (of)g(Ja)n(v)-5 b(a)0 3502 y(b)n(yteco)r(des)25 b(\(whic)n(h)g (manipulate)g(Ja)n(v)-5 b(a)24 b(ob)5 b(jects\))25 b(in)n(to)g(na-)0 3602 y(tiv)n(e)33 b(mac)n(hine)g(co)r(de)g(\(whic)n(h)g(manipulate)g (analogues)e(of)0 3701 y(those)50 b(ob)5 b(jects)49 b(on)h(the)g (actual)f(hardw)n(are\).)102 b(Jaguar)0 3801 y(builds)39 b(up)r(on)h(this)f(concept)g(b)n(y)g(in)n(tro)r(ducing)g(an)g(addi-)0 3901 y(tional)d(set)f(of)h(b)n(yteco)r(de-to-mac)n(hine)f(co)r(de)g (translation)0 4000 y(rules)e(in)n(to)g(the)h(compiler,)g(transforming) e(certain)h(b)n(yte-)0 4100 y(co)r(de)k(sequences)f(directly)h(to)g(op) r(erations)f(on)h(lo)n(w-lev)n(el)0 4199 y(hardw)n(are)26 b(resources.)100 4300 y(There)48 b(are)f(t)n(w)n(o)h(primary)g (concepts)g(em)n(b)r(o)r(died)h(in)0 4399 y(Jaguar:)35 b Fk(c)l(o)l(de)30 b(mappings)36 b Fp(and)28 b Fk(External)h(Obje)l (cts)p Fp(.)0 4601 y Fo(3.1)105 b(Co)s(de)35 b(mappings)100 4802 y Fp(Sp)r(ecifying)29 b(new)h(Ja)n(v)-5 b(a)27 b(b)n(yteco)r(des)i (to)g(represen)n(t)f(lo)n(w-)0 4902 y(lev)n(el)33 b(mac)n(hine)f(op)r (erations)g(w)n(ould)h(necessitate)f(mo)r(di\014-)0 5001 y(cations)i(to)i(the)f Fb(javac)e Fp(compiler)i(and)g(p)r(erhaps)g(to)g (the)0 5101 y(Ja)n(v)-5 b(a)25 b(language)g(itself.)37 b(Rather,)27 b(w)n(e)f(ha)n(v)n(e)f(c)n(hosen)h(to)h(ap-)0 5201 y(ply)41 b(the)g(concept)f(of)h Fk(c)l(o)l(de)h(mappings)49 b Fp(whic)n(h)40 b(describ)r(e)0 5300 y(transformations)h(from)h(Ja)n (v)-5 b(a)42 b(b)n(yteco)r(de)g(sequences)g(to)0 5400 y(inlined)48 b(mac)n(hine)g(co)r(de.)97 b(In)48 b(this)g(w)n(a)n(y)-7 b(,)51 b(pre-existing)2010 83 y(b)n(yteco)r(des)35 b(\(sa)n(y)-7 b(,)38 b(metho)r(d)e(calls)f(or)g(\014eld)h(accesses\))f(are)2010 183 y(translated)20 b(to)g(sp)r(ecialized)g(op)r(erations)g(at)g (compile)h(time.)2010 282 y(This)30 b(approac)n(h)e(a\013ords)h(a)h(v)n (ery)f(natural)g(programming)2010 382 y(mo)r(del:)47 b(lo)n(w-lev)n(el)31 b(mac)n(hine)h(op)r(erations)f(are)g(expressed) 2010 482 y(as)f(op)r(erations)g(on)h(regular)e(Ja)n(v)-5 b(a)30 b(ob)5 b(jects.)47 b(Accessing)30 b(a)2010 581 y(\014eld)f(or)g(calling)f(a)h(metho)r(d)h(ma)n(y)e(transparen)n(tly)g (trigger)2010 681 y(an)f(alternativ)n(e)g(sequence)g(of)g(mac)n(hine)g (ev)n(en)n(ts.)2110 787 y(While)19 b(Jaguar)d(co)r(de)i(mappings)g(are) f(similar)h(in)h(nature)2010 887 y(to)27 b(nativ)n(e)h(metho)r(ds,)f (there)h(are)e(t)n(w)n(o)h(ma)5 b(jor)27 b(di\013erences:)2093 1074 y Fq(\017)41 b Fp(Jaguar)32 b(co)r(de)h(mappings)g(ma)n(y)g(b)r(e) i(applied)e(to)h(vir-)2176 1173 y(tually)28 b(an)n(y)e(b)n(yteco)r(de)i (sequence)f(\(suc)n(h)g(as)g(\014eld)h(ac-)2176 1273 y(cesses,)47 b(op)r(erators,)f(and)d(so)g(forth\))h(while)g(nativ)n(e) 2176 1372 y(co)r(de)27 b(is)f(limited)i(to)f(metho)r(d)g(in)n(v)n(o)r (cation.)35 b(As)27 b(suc)n(h,)2176 1472 y(Jaguar)48 b(enables)i(m)n(uc)n(h)h(greater)d(expressiv)n(eness:)2176 1572 y(mac)n(hine)32 b(resources)e(can)i(b)r(e)g(represen)n(ted)f(b)n (y)h(Ja)n(v)-5 b(a)2176 1671 y(ob)5 b(jects,)31 b(with)h(metho)r(ds,)g (\014elds,)f(or)f(op)r(erators)f(b)r(e-)2176 1771 y(ing)41 b(used)g(as)g(appropriate)f(to)h(describ)r(e)g(lo)n(w-lev)n(el)2176 1871 y(op)r(erations.)2093 2064 y Fq(\017)g Fp(Jaguar)34 b(primitiv)n(es)h(consist)g(of)g(short,)i(limited)g(se-)2176 2164 y(quences)f(of)h(mac)n(hine)f(co)r(de)g(rather)g(than)g(C)h(func-) 2176 2263 y(tions)k(of)g(arbitrary)e(complexit)n(y)-7 b(.)76 b(This)41 b(prop)r(ert)n(y)2176 2363 y(mak)n(es)30 b(it)i(easier)e(to)h(v)n(erify)f(that)i(the)f(implemen)n(ta-)2176 2463 y(tion)39 b(of)f(a)g(Jaguar)f(primitiv)n(e)h(is)g(correct.)68 b(It)39 b(also)2176 2562 y(inheren)n(tly)24 b(limits)i(Jaguar)c(co)r (de)j(mappings)f(to)g(pro-)2176 2662 y(vide)i(basic,)g(lo)n(w-lev)n(el) e(op)r(erations)h(rather)g(than)h(ex-)2176 2762 y(tensiv)n(e)k (functionalit)n(y)-7 b(.)46 b(In)30 b(this)h(w)n(a)n(y)-7 b(,)30 b(applications)2176 2861 y(can)36 b(b)r(e)h(written)g(almost)f (en)n(tirely)h(in)g(Ja)n(v)-5 b(a,)37 b(aided)2176 2961 y(b)n(y)25 b(a)h(few)g(simple)g(primitiv)n(es)f(pro)n(vided)g(b)n(y)g (Jaguar.)2010 3181 y Fo(3.2)105 b(External)34 b(Ob)6 b(jects)2110 3401 y Fp(Jaguar)33 b(allo)n(ws)h(Ja)n(v)-5 b(a)33 b(applications)i(to)g(directly)g(ma-)2010 3500 y(nipulate)30 b(memory)f(outside)h(of)g(the)g(Ja)n(v)-5 b(a)29 b(heap,)h(suc)n(h)g(as)2010 3600 y(sp)r(ecially-allo)r(cated)41 b(bu\013ers)h(for)g(comm)n(unication)g(and)2010 3699 y(I/O.)23 b(Jaguar)f(co)r(de)i(mappings)f(are)g(used)h(to)g(rewrite)f (\014eld)2010 3799 y(accesses)29 b(on)h(certain)g(Ja)n(v)-5 b(a)29 b(ob)5 b(jects)31 b(to)f(directly)g(manip-)2010 3899 y(ulate)44 b(this)g(\\external")e(memory;)51 b(w)n(e)44 b(call)f(the)h(result)2010 3998 y Fk(External)35 b(Obje)l(cts)p Fp(.)53 b(External)32 b(Ob)5 b(jects)33 b(are)f(treated)g(b)n(y)2010 4098 y(the)k(application)g(as)f(regular)f(Ja)n(v)-5 b(a)35 b(ob)5 b(jects,)38 b(the)e(mem-)2010 4198 y(ory)24 b(storage)e(for)i (whic)n(h)h(happ)r(ens)f(to)h(b)r(e)g(lo)r(cated)f(outside)2010 4297 y(of)38 b(the)g(Ja)n(v)-5 b(a)36 b(heap.)67 b(This)37 b(eliminates)h(the)g(exp)r(ense)f(of)2010 4397 y(cop)n(ying)23 b(data)h(b)r(et)n(w)n(een)h(Ja)n(v)-5 b(a)23 b(and)h(external)g(memory) g(as)2010 4496 y(required)j(b)n(y)g(nativ)n(e)g(co)r(de.)2110 4603 y(External)f(Ob)5 b(jects)26 b(ha)n(v)n(e)g(n)n(umerous)g(uses.)36 b(They)27 b(can)2010 4703 y(b)r(e)h(used)f(to)g(map)h(Ja)n(v)-5 b(a)26 b(ob)5 b(ject)27 b(references)f(on)n(to)g(shared-)2010 4802 y(memory)21 b(segmen)n(ts,)h(memory-mapp)r(ed)f(\014les,)i(comm)n (uni-)2010 4902 y(cation)32 b(and)h(I/O)f(bu\013ers,)i(and)f(ev)n(en)f (memory-mapp)r(ed)2010 5001 y(hardw)n(are)k(devices.)67 b(Because)37 b(\014eld)h(accesses)e(are)h(pro-)2010 5101 y(cessed)31 b(b)n(y)h(Jaguar)e(using)h(kno)n(wledge)g(of)h(b)r(oth)g(a) g(\014eld's)2010 5201 y(name)38 b(and)g(t)n(yp)r(e,)j(di\013eren)n(t)d (b)r(eha)n(viors)f(can)g(b)r(e)i(imple-)2010 5300 y(men)n(ted)c(for)f (di\013eren)n(t)h(\014elds.)58 b(F)-7 b(or)34 b(example,)i(one)f (\014eld)2010 5400 y(in)29 b(an)g(ob)5 b(ject)29 b(ma)n(y)f(reference)g (a)h(comm)n(unication)f(bu\013er)p eop %%Page: 5 5 5 4 bop 0 83 a Fp(while)28 b(another)e(references)h(the)h(net)n(w)n (ork)e(in)n(terface)h(with)0 183 y(whic)n(h)h(it)g(is)f(asso)r(ciated.) 0 405 y Fo(3.3)105 b(Implemen)m(tation)100 627 y Fp(Our)18 b(protot)n(yp)r(e)g(of)h(Jaguar)e(is)i(implemen)n(ted)h(as)f(a)f(Ja)n (v)-5 b(a)0 726 y(just-in-time)48 b(compiler)e(whic)n(h)h(has)f(b)r (een)i(augmen)n(ted)0 826 y(with)g(a)g(set)g(of)f(transformation)g (rules)g(implemen)n(ting)0 926 y(Jaguar)c(co)r(de)j(mappings.)90 b(Eac)n(h)44 b(suc)n(h)h(mapping)g(de-)0 1025 y(scrib)r(es)38 b(a)g(particular)f(b)n(yteco)r(de)h(sequence)f(and)h(a)g(cor-)0 1125 y(resp)r(onding)25 b(mac)n(hine)h(co)r(de)f(sequence)h(whic)n(h)g (should)g(b)r(e)0 1224 y(generated)36 b(when)h(this)g(b)n(yteco)r(de)f (is)h(encoun)n(tered)f(dur-)0 1324 y(ing)k(compilation.)73 b(An)41 b(example)e(of)h(suc)n(h)g(a)f(mapping)0 1424 y(migh)n(t)22 b(b)r(e)h(to)f(transform)g(the)g(b)n(yteco)r(de)g Fb(invokevirtual)0 1523 y(SomeClass.someMe)o(tho)o(d\()o(\))43 b Fp(in)n(to)48 b(a)g(sp)r(ecialized)h(ma-)0 1623 y(c)n(hine)37 b(co)r(de)f(fragmen)n(t)g(whic)n(h)h(directly)g(manipulates)f(a)0 1723 y(hardw)n(are)26 b(resource)f(in)j(some)f(w)n(a)n(y)-7 b(.)100 1830 y(Our)67 b(protot)n(yp)r(e)f(JIT)i(compiles)f(Ja)n(v)-5 b(a)66 b(b)n(yteco)r(de)0 1929 y(to)f(mac)n(hine)g(co)r(de)g(b)n(y)g(p) r(erforming)f(a)h(straigh)n(tfor-)0 2029 y(w)n(ard)53 b(translation)g(from)g(eac)n(h)g(b)n(yteco)r(de)h(to)g(a)f(par-)0 2129 y(ticular)65 b(mac)n(hine)g(co)r(de)g(template.)151 b(Jaguar)63 b(co)r(de)0 2228 y(mappings)54 b(are)g(implemen)n(ted)h(b)n (y)g(rewriting)f(certain)0 2328 y(Ja)n(v)-5 b(a)21 b(b)n(yteco)r(des)i (as)f(Jaguar-sp)r(eci\014c)e(\\meta-b)n(yteco)r(des")0 2427 y(during)55 b(the)g(\014rst)g(pass)g(of)g(the)g(compiler;)69 b(mac)n(hine)0 2527 y(co)r(de)48 b(templates)g(for)f(eac)n(h)g(suc)n(h) h(meta-b)n(yteco)r(de)f(are)0 2627 y(pro)n(vided)68 b(whic)n(h)h (implemen)n(t)g(new)g(Jaguar)e(primi-)0 2726 y(tiv)n(es.)59 b(F)-7 b(or)35 b(example,)i(the)e(op)r(eration)f Fb(invokevirtual)0 2826 y(SomeClass.someMe)o(tho)o(d)22 b Fp(migh)n(t)27 b(b)r(e)h(translated)f(to)h(the)0 2926 y(meta-b)n(yteco)r(de)49 b Fb(opc)p 715 2926 27 4 v 30 w(do)p 833 2926 V 31 w(somemethod)p Fp(,)i(and)e(the)i(ma-)0 3025 y(c)n(hine)27 b(co)r(de)f(template)h(for) f Fb(opc)p 1012 3025 V 31 w(do)p 1131 3025 V 30 w(somemethod)d Fp(will)k(b)r(e)0 3125 y(inlined)j(in)n(to)f(the)h(compiled)f(co)r(de)g (sequence)g(during)g(the)0 3224 y(compiler's)e(second)g(pass.)100 3332 y(Jaguar)19 b(co)r(de)i(mappings)f(can)h(b)r(e)h(applied)f(to)g (virtually)0 3431 y(an)n(y)h(b)n(yteco)r(de)h(sequence;)h(ho)n(w)n(ev)n (er,)e(they)h(are)f(limited)i(in)0 3531 y(t)n(w)n(o)j(fundamen)n(tal)h (w)n(a)n(ys:)83 3720 y Fq(\017)41 b Fp(The)35 b(system)f(m)n(ust)g(ha)n (v)n(e)g(enough)f(information)h(to)166 3819 y(determine)c(whether)f (the)h(mapping)f(should)h(b)r(e)g(ap-)166 3919 y(plied)j(at)f(compile)g (time.)51 b(This)32 b(has)g(an)g(impact)g(on)166 4019 y(the)h(use)f(of)h(b)n(yteco)r(de)f(transformation)f(for)h(virtual)166 4118 y(metho)r(ds)c(\(see)f(b)r(elo)n(w\).)83 4315 y Fq(\017)41 b Fp(Recognizing)47 b(the)i(application)f(of)g(certain)g (map-)166 4414 y(pings)28 b(is)g(easier)f(than)h(others.)37 b(F)-7 b(or)28 b(example,)g(map-)166 4514 y(ping)h(a)f(complex)g (sequence)g(of)h Fb(arrayref)d Fp(and)i Fb(add)166 4613 y Fp(b)n(yteco)r(des)e(to,)h(sa)n(y)-7 b(,)27 b(a)f(fast)h(v)n (ector-add)e(instruction)166 4713 y(w)n(ould)d(certainly)f(b)r(e)h (more)f(di\016cult)i(than)f(recogniz-)166 4813 y(ing)27 b(a)h(metho)r(d)g(call)f(to)g(a)h(particular)e(ob)5 b(ject.)100 5001 y(In)40 b(our)f(curren)n(t)g(protot)n(yp)r(e,)k(these)d (transformation)0 5101 y(rules)25 b(m)n(ust)h(b)r(e)h(compiled)f(in)n (to)f(the)i(JIT)e(compiler)h(itself;)0 5201 y(ho)n(w)n(ev)n(er,)43 b(w)n(e)e(are)f(curren)n(tly)g(w)n(orking)g(on)h(a)g(new)g(im-)0 5300 y(plemen)n(tation)25 b(\(based)f(on)h(the)g(Op)r(enJIT)f([11])g (compiler\))0 5400 y(whic)n(h)30 b(allo)n(ws)e(new)h(co)r(de)h (mappings)f(to)g(b)r(e)h(sp)r(eci\014ed)g(at)2010 83 y(run)n(time.)48 b(Suc)n(h)31 b(an)g(approac)n(h)e(presen)n(ts)h(n)n (umerous)h(op-)2010 183 y(p)r(ortunities)f(for)e(dynamic)i(co)r(de)f (sp)r(ecialization)f(b)r(ey)n(ond)2010 282 y(the)g(scop)r(e)f(of)h (this)g(pap)r(er.)2110 386 y(Jaguar)46 b(runs)j(on)f(the)h(In)n(tel)g (x86)f(platform)g(under)2010 485 y(Lin)n(ux)27 b(2.2.5)g(and)g(Sun)h (JDK)g(1.1.7.)2010 695 y Fo(3.4)105 b(Discussion)2110 906 y Fp(Apart)22 b(from)g(the)g(mec)n(hanisms)g(emplo)n(y)n(ed)f(b)n (y)h(Jaguar,)2010 1005 y(b)n(y)32 b(far)f(the)i(most)f(imp)r(ortan)n(t) g(asp)r(ect)g(of)g(this)g(approac)n(h)2010 1105 y(is)26 b(the)h(programming)e(mo)r(del)h(whic)n(h)h(it)f(enables.)36 b(By)27 b(ex-)2010 1205 y(tending)g(the)g(Ja)n(v)-5 b(a)25 b(en)n(vironmen)n(t)g(with)i(the)g(minimal)g(set)2010 1304 y(of)k(necessary)e(primitiv)n(es,)j(it)g(is)f(p)r(ossible)f(to)h (implemen)n(t)2010 1404 y(complex)i(system)h(soft)n(w)n(are)e(en)n (tirely)i(in)g(Ja)n(v)-5 b(a.)54 b(F)-7 b(or)34 b(ex-)2010 1504 y(ample,)25 b(high-lev)n(el)f(messaging)f(proto)r(cols)g(or)g (disk)i(bu\013er)2010 1603 y(allo)r(cation)38 b(strategies)g(can)h(b)r (e)h(implemen)n(ted)g(in)f(Ja)n(v)-5 b(a,)2010 1703 y(with)41 b(only)g(the)g(lo)n(w)n(est-lev)n(el)e(system)i(functions)g(aided)2010 1802 y(b)n(y)27 b(Jaguar)e(co)r(de)h(mappings.)37 b(This)26 b(helps)h(to)g(ensure)g(the)2010 1902 y(safet)n(y)i(and)g(robustness)f (of)i(suc)n(h)f(system)g(soft)n(w)n(are,)f(and)2010 2002 y(is)c(preferable)f(to)h(wrapping)g(a)f(complex,)i(un)n(wieldy)f(piece) 2010 2101 y(of)k(C)f(co)r(de)h(up)g(as)e(a)i(set)f(of)h(Ja)n(v)-5 b(a)26 b(nativ)n(e)h(metho)r(ds.)2110 2205 y(Because)18 b(our)h(protot)n(yp)r(e)g(sp)r(eci\014es)h(co)r(de)g(mappings)f(as)2010 2304 y(mac)n(hine)h(co)r(de)g(segmen)n(ts,)h(it)f(is)g(necessary)f(to)h (trust)g(these)2010 2404 y(co)r(de)32 b(mappings)h(as)f(one)g(w)n(ould) g(trust)h(the)g(compiler)f(or)2010 2503 y(JVM.)26 b(In)h(some)e(sense,) h(this)h(is)f(more)f(viable)h(than)g(trust-)2010 2603 y(ing)h(nativ)n(e)g(metho)r(ds;)h(it)g(is)g(far)f(easier)f(to)h(con)n (vince)g(one-)2010 2703 y(self)k(that)g(a)f(short)g(piece)h(of)f(mac)n (hine)h(co)r(de)f(will)h(b)r(eha)n(v)n(e)2010 2802 y(correctly)j(and)i (main)n(tain)f(protection)g(than)h(a)g(complex)2010 2902 y(set)26 b(of)h(functions)g(co)r(ded)f(in)h(C.)f(W)-7 b(e)27 b(are)f(curren)n(tly)f(in)n(v)n(es-)2010 3002 y(tigating)j(the)g(use)g(of)h(a)e(higher-lev)n(el)g(language)g(in)h (whic)n(h)2010 3101 y(to)e(represen)n(t)f(co)r(de)h(mappings,)g(whic)n (h)g(ma)n(y)g(allo)n(w)f(auto-)2010 3201 y(matic)j(t)n(yp)r(e-c)n(hec)n (king)e(and)h(v)n(eri\014cation.)2110 3304 y(There)32 b(is)h(an)g(issue)g(with)h(resp)r(ect)f(to)g(applying)f(co)r(de)2010 3404 y(mappings)25 b(to)h(virtual)g(metho)r(d)g(in)n(v)n(o)r(cations.) 35 b(Normally)-7 b(,)2010 3503 y(the)39 b(Ja)n(v)-5 b(a)38 b(run)n(time)h(resolv)n(es)d(virtual)j(metho)r(d)g(calls)f(at)2010 3603 y(run)i(time,)45 b(dispatc)n(hing)40 b(them)h(to)g(the)g(correct)e (imple-)2010 3703 y(men)n(tation)h(based)h(on)f(the)h(t)n(yp)r(e)g(of)f (the)i(ob)5 b(ject)40 b(b)r(eing)2010 3802 y(in)n(v)n(ok)n(ed.)80 b(Jaguar)40 b(curren)n(tly)i(do)r(es)g(not)g(p)r(erform)g(an)n(y)2010 3902 y(run-time)28 b(t)n(yp)r(e)f(c)n(hec)n(ks)g(for)g(virtual)g(metho) r(d)h(co)r(de)g(map-)2010 4002 y(pings,)39 b(meaning)e(that)g(an)g (\\incorrect")e(co)r(de)i(transfor-)2010 4101 y(mation)31 b(ma)n(y)f(b)r(e)i(applied)f(to)g(an)g(ob)5 b(ject)31 b(if)h(it)f(is)g(cast)g(to)2010 4201 y(one)h(of)g(its)g(sup)r (erclasses)f(at)h(run)n(time.)51 b(While)33 b(it)f(is)h(fea-)2010 4300 y(sible)k(to)f(incorp)r(orate)f(co)r(de)i(transformations)d(in)n (to)j(the)2010 4400 y(run-time)26 b(\\jump)g(table")g(used)g(b)n(y)g (the)g(JVM)g(for)g(virtual)2010 4500 y(metho)r(d)21 b(resolution,)g(a)g (w)n(ork)-5 b(around)18 b(in)j(the)g(curren)n(t)f(pro-)2010 4599 y(tot)n(yp)r(e)32 b(is)h(to)f(limit)h(transformations)e(to)h (virtual)g(meth-)2010 4699 y(o)r(ds)e(whic)n(h)h(are)e(mark)n(ed)g(as)h Fb(private)d Fp(or)j Fb(final)p Fp(,)f(whic)n(h)2010 4799 y(prohibit)k(o)n(v)n(erloading.)51 b(Use)33 b(of)g(static)g(metho) r(ds)g(is)g(un-)2010 4898 y(problematic.)2110 5001 y(Quite)24 b(similar)f(to)g(Jaguar)f(co)r(de)i(mappings)f(is)h Fk(seman-)2010 5101 y(tic)h(inlining)d Fp([28)o(],)h(a)f(tec)n(hnique)f(whic)n(h)h (extends)g(the)g(com-)2010 5201 y(piler)27 b(to)g(treat)g(certain)g(op) r(erators)f(and)h(metho)r(d)h(calls)f(as)2010 5300 y(new)40 b(Ja)n(v)-5 b(a)39 b(primitiv)n(es)h(whic)n(h)g(are)f(inlined.)75 b(Seman)n(tic)2010 5400 y(inlining)36 b(has)g(b)r(een)h(used)f(to)g (implemen)n(t)g(fast)h(complex)p eop %%Page: 6 6 6 5 bop 0 83 a Fp(arithmetic)26 b(\(b)n(y)g(inlining)h(op)r(erators)d (on)i(ob)5 b(jects)26 b(of)g(t)n(yp)r(e)0 183 y Fb(Complex)p Fp(\))36 b(as)i(w)n(ell)g(as)g(e\016cien)n(t)h(m)n(ultidimensional)f (ar-)0 282 y(ra)n(ys.)58 b(While)36 b(the)g(mec)n(hanism)e(has)h(m)n (uc)n(h)g(in)h(common)0 382 y(with)29 b(Jaguar,)d(its)i(fo)r(cus)g(has) g(b)r(een)g(on)g(the)g(needs)g(of)g(n)n(u-)0 482 y(merical)35 b(computing)g(rather)g(than)h(enabling)f(fast)h(com-)0 581 y(m)n(unication)d(and)g(I/O.)g(As)h(suc)n(h,)g(Jaguar)e(raises)g (issues)0 681 y(with)27 b(safely)g(exp)r(osing)f(lo)n(w-lev)n(el)f (resources)g(to)i(Ja)n(v)-5 b(a)26 b(ap-)0 780 y(plications)40 b(whic)n(h)h(seman)n(tic)g(inlining)g(alone)f(do)r(es)h(not)0 880 y(address.)100 989 y(The)36 b(next)g(t)n(w)n(o)g(sections)f(ev)-5 b(aluate)36 b(Jaguar)e(through)0 1089 y(t)n(w)n(o)61 b(applications:)104 b(a)62 b(fast)g(Ja)n(v)-5 b(a)60 b(binding)i(to)g(the)0 1188 y(VIA)37 b(comm)n(unications)f(arc)n (hitecture,)i(as)f(w)n(ell)f(as)g(Pre-)0 1288 y(Serialized)i(Ob)5 b(jects,)41 b(a)d(mec)n(hanism)g(whic)n(h)g(eliminates)0 1387 y(Ja)n(v)-5 b(a)35 b(ob)5 b(ject)37 b(serialization)e(o)n(v)n (erhead)f(for)i(comm)n(unica-)0 1487 y(tion)28 b(and)f(I/O.)0 1830 y Fl(4)112 b(JaguarVIA)100 2057 y Fp(As)59 b(an)f(example)h(use)g (of)g(Jaguar)e(enabling)h(e\016-)0 2157 y(cien)n(t)35 b(access)f(to)h(lo)n(w-lev)n(el)e(resources,)i(w)n(e)g(ha)n(v)n(e)f (imple-)0 2256 y(men)n(ted)g Fk(JaguarVIA)p Fp(,)f(a)f(Ja)n(v)-5 b(a)32 b(in)n(terface)h(to)g(the)h(Berk)n(e-)0 2356 y(ley)44 b(Virtual)f(In)n(terface)g(Arc)n(hitecture)h(\(VIA\))h(comm)n(u-)0 2456 y(nications)36 b(la)n(y)n(er)e([1].)63 b(VIA)37 b([23)o(])f(is)h(an)f(emerging)f(stan-)0 2555 y(dard)30 b(for)h(user-lev)n(el)e(net)n(w)n(ork)h(in)n(terfaces)g(whic)n(h)g (enable)0 2655 y(high-bandwidth)23 b(and)g(lo)n(w-latency)f(comm)n (unication)h(for)0 2754 y(w)n(orkstation)g(clusters)h(o)n(v)n(er)f(b)r (oth)i(sp)r(ecialized)f(and)h(com-)0 2854 y(mo)r(dit)n(y)c(in)n (terconnects.)33 b(This)21 b(is)f(accomplished)g(b)n(y)g(elim-)0 2954 y(inating)44 b(data)g(copies)g(on)g(the)g(critical)g(path)h(and)f (cir-)0 3053 y(cum)n(v)n(en)n(ting)35 b(the)g(op)r(erating)g(system)g (for)g(direct)g(access)0 3153 y(to)j(the)h(net)n(w)n(ork)e(in)n (terface)h(hardw)n(are;)j(VIA)e(de\014nes)f(a)0 3253 y(standard)32 b(API)g(for)g(applications)g(to)h(in)n(teract)f(with)h (the)0 3352 y(net)n(w)n(ork)h(la)n(y)n(er.)60 b(Berk)n(eley)34 b(VIA)j(is)e(implemen)n(ted)i(o)n(v)n(er)0 3452 y(the)i(Myrinet)f (system)f(area)g(net)n(w)n(ork,)i(whic)n(h)g(pro)n(vides)0 3551 y(ra)n(w)g(link)h(sp)r(eeds)f(of)h(1.2)f(Gbps;)46 b(generally)-7 b(,)42 b(the)e(e\013ec-)0 3651 y(tiv)n(e)i(bandwidth)h (to)g(applications)e(is)i(limited)g(b)n(y)f(I/O)0 3751 y(bus)48 b(bandwidth.)100 b(The)49 b(Myrinet)f(net)n(w)n(ork)f(in)n (terface)0 3850 y(used)22 b(in)g(Berk)n(eley)f(VIA)i(has)e(a)h (programmable)e(on-b)r(oard)0 3950 y(con)n(troller,)42 b(the)f(LanAI,)g(and)g(1)f(megab)n(yte)g(of)g(SRAM)0 4050 y(whic)n(h)28 b(is)g(used)h(for)e(program)g(storage)f(and)i(pac)n (k)n(et)f(stag-)0 4149 y(ing.)74 b(The)40 b(implemen)n(tation)g (describ)r(ed)g(here)g(emplo)n(ys)0 4249 y(the)31 b(PCI)f(Myrinet)g(in) n(terface)g(b)r(oard)f(on)h(dual)h(450)e(MHz)0 4348 y(P)n(en)n(tium)e (I)r(I)h(systems)f(running)h(Lin)n(ux)f(2.2.5.)0 4575 y Fo(4.1)105 b(The)35 b(Berk)m(eley)g(VIA)g(arc)m(hitecture)100 4802 y Fp(The)d(Berk)n(eley)e(VIA)j(arc)n(hitecture)e(is)h(sho)n(wn)f (in)i(Fig-)0 4902 y(ure)d(3.)45 b(Eac)n(h)30 b(user)g(pro)r(cess)f(ma)n (y)h(con)n(tain)g(a)g(n)n(um)n(b)r(er)g(of)0 5001 y(Virtual)f(In)n (terfaces)f(\(VIs\),)h(eac)n(h)f(of)h(whic)n(h)g(corresp)r(onds)0 5101 y(to)23 b(a)f(p)r(eer-to-p)r(eer)f(comm)n(unications)h(link.)35 b(Eac)n(h)22 b(VI)h(has)0 5201 y(a)30 b(pair)f(of)i(transmit)f(and)g (receiv)n(e)f(descriptor)g(queues)h(as)0 5300 y(w)n(ell)f(as)g(a)g (transmit)g(and)h(receiv)n(e)e Fk(do)l(orb)l(el)t(l)40 b Fp(corresp)r(ond-)0 5400 y(ing)27 b(to)h(eac)n(h)f(queue.)2256 889 y @beginspecial 0 @llx 0 @lly 510 @urx 325 @ury 1674 @rwi @setspecial %%BeginDocument: ./figures/via-arch.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: via-arch.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Mon Aug 2 15:20:06 1999 %%For: mdw@bhikku (Matt Welsh) %%Orientation: Portrait %%BoundingBox: 0 0 510 325 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {0.780 0.780 0.780 srgb} bind def /col33 {0.969 0.969 0.969 srgb} bind def end save -4.0 330.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6497 m -1000 -1000 l 9563 -1000 l 9563 6497 l cp clip 0.06000 0.06000 sc % Polyline 15.000 slw n 98 368 m 8541 368 l 8541 3202 l 98 3202 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3600 3525 m 7200 3525 l 7200 5325 l 3600 5325 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline 7.500 slw n 3420 759 m 4105 759 l 4105 1932 l 3420 1932 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 7623 759 m 8307 759 l 8307 1932 l 7623 1932 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 293 759 m 3323 759 l 3323 1443 l 293 1443 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4495 759 m 7525 759 l 7525 1443 l 4495 1443 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3675 3600 m 4200 3600 l 4200 4500 l 3675 4500 l cp gs col33 1.00 shd ef gr gs col0 s gr % Polyline n 4275 3600 m 4800 3600 l 4800 4500 l 4275 4500 l cp gs col33 1.00 shd ef gr gs col0 s gr % Polyline n 4875 3600 m 5400 3600 l 5400 4500 l 4875 4500 l cp gs col33 1.00 shd ef gr gs col0 s gr % Polyline n 5475 3600 m 6000 3600 l 6000 4500 l 5475 4500 l cp gs col33 1.00 shd ef gr gs col0 s gr % Polyline n 6075 3600 m 6600 3600 l 6600 4500 l 6075 4500 l cp gs col33 1.00 shd ef gr gs col0 s gr % Polyline n 509 1150 m 900 1150 l 900 1345 l 509 1345 l cp gs col0 s gr % Polyline n 884 1155 m 1275 1155 l 1275 1350 l 884 1350 l cp gs col0 s gr % Polyline n 1259 1155 m 1650 1155 l 1650 1350 l 1259 1350 l cp gs col0 s gr % Polyline n 1634 1155 m 2025 1155 l 2025 1350 l 1634 1350 l cp gs col0 s gr % Polyline n 2009 1155 m 2400 1155 l 2400 1350 l 2009 1350 l cp gs col0 s gr % Polyline n 2384 1155 m 2775 1155 l 2775 1350 l 2384 1350 l cp gs col0 s gr % Polyline n 509 850 m 900 850 l 900 1045 l 509 1045 l cp gs col0 s gr % Polyline n 884 855 m 1275 855 l 1275 1050 l 884 1050 l cp gs col0 s gr % Polyline n 1259 855 m 1650 855 l 1650 1050 l 1259 1050 l cp gs col0 s gr % Polyline n 1634 855 m 2025 855 l 2025 1050 l 1634 1050 l cp gs col0 s gr % Polyline n 2009 855 m 2400 855 l 2400 1050 l 2009 1050 l cp gs col0 s gr % Polyline n 2384 855 m 2775 855 l 2775 1050 l 2384 1050 l cp gs col0 s gr % Polyline n 4709 1150 m 5100 1150 l 5100 1345 l 4709 1345 l cp gs col0 s gr % Polyline n 5084 1155 m 5475 1155 l 5475 1350 l 5084 1350 l cp gs col0 s gr % Polyline n 5459 1155 m 5850 1155 l 5850 1350 l 5459 1350 l cp gs col0 s gr % Polyline n 5834 1155 m 6225 1155 l 6225 1350 l 5834 1350 l cp gs col0 s gr % Polyline n 6209 1155 m 6600 1155 l 6600 1350 l 6209 1350 l cp gs col0 s gr % Polyline n 6584 1155 m 6975 1155 l 6975 1350 l 6584 1350 l cp gs col0 s gr % Polyline n 4709 850 m 5100 850 l 5100 1045 l 4709 1045 l cp gs col0 s gr % Polyline n 5084 855 m 5475 855 l 5475 1050 l 5084 1050 l cp gs col0 s gr % Polyline n 5459 855 m 5850 855 l 5850 1050 l 5459 1050 l cp gs col0 s gr % Polyline n 5834 855 m 6225 855 l 6225 1050 l 5834 1050 l cp gs col0 s gr % Polyline n 6209 855 m 6600 855 l 6600 1050 l 6209 1050 l cp gs col0 s gr % Polyline n 6584 855 m 6975 855 l 6975 1050 l 6584 1050 l cp gs col0 s gr % Polyline n 3750 3675 m 3900 3675 l 3900 3825 l 3750 3825 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 3975 3675 m 4125 3675 l 4125 3825 l 3975 3825 l cp gs col12 1.00 shd ef gr gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 3750 4050 m gs 1 -1 sc (T R) col4 sh gr /Helvetica-Bold ff 180.00 scf sf 3750 4275 m gs 1 -1 sc (X X) col4 sh gr % Polyline n 4350 3675 m 4500 3675 l 4500 3825 l 4350 3825 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 4575 3675 m 4725 3675 l 4725 3825 l 4575 3825 l cp gs col12 1.00 shd ef gr gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 4350 4050 m gs 1 -1 sc (T R) col4 sh gr /Helvetica-Bold ff 180.00 scf sf 4350 4275 m gs 1 -1 sc (X X) col4 sh gr % Polyline n 4950 3675 m 5100 3675 l 5100 3825 l 4950 3825 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 5175 3675 m 5325 3675 l 5325 3825 l 5175 3825 l cp gs col12 1.00 shd ef gr gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 4950 4050 m gs 1 -1 sc (T R) col4 sh gr /Helvetica-Bold ff 180.00 scf sf 4950 4275 m gs 1 -1 sc (X X) col4 sh gr % Polyline n 5550 3675 m 5700 3675 l 5700 3825 l 5550 3825 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 5775 3675 m 5925 3675 l 5925 3825 l 5775 3825 l cp gs col12 1.00 shd ef gr gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 5550 4050 m gs 1 -1 sc (T R) col4 sh gr /Helvetica-Bold ff 180.00 scf sf 5550 4275 m gs 1 -1 sc (X X) col4 sh gr % Polyline n 6150 3675 m 6300 3675 l 6300 3825 l 6150 3825 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 6375 3675 m 6525 3675 l 6525 3825 l 6375 3825 l cp gs col12 1.00 shd ef gr gs col0 s gr /Helvetica-Bold ff 180.00 scf sf 6150 4050 m gs 1 -1 sc (T R) col4 sh gr /Helvetica-Bold ff 180.00 scf sf 6150 4275 m gs 1 -1 sc (X X) col4 sh gr % Polyline 15.000 slw [90] 0 sd n 7650 750 m 6075 3600 l gs col4 s gr [] 0 sd % Polyline [90] 0 sd n 6600 4500 m 8325 1950 l gs col4 s gr [] 0 sd % Polyline 7.500 slw n 293 1834 m 782 1834 l 782 2616 l 293 2616 l cp gs col12 1.00 shd ef gr gs col0 s gr % Polyline n 1466 1736 m 1955 1736 l 1955 2518 l 1466 2518 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 661 1625 m 596 1773 l 583 1612 l 545 1842 l 622 1855 l cp clip n 684 1248 m 586 1834 l gs col4 s gr gr % arrowhead 30.000 slw n 661 1625 m 596 1773 l 583 1612 l 622 1619 l 661 1625 l cp gs col4 1.00 shd ef gr col4 s % Polyline 7.500 slw gs clippath 1561 1538 m 1623 1686 l 1499 1585 l 1639 1771 l 1701 1725 l cp clip n 1075 955 m 1661 1736 l gs col4 s gr gr % arrowhead 30.000 slw n 1561 1538 m 1623 1686 l 1499 1585 l 1530 1561 l 1561 1538 l cp gs col4 1.00 shd ef gr col4 s % Polyline 7.500 slw n 4789 1834 m 5277 1834 l 5277 2616 l 4789 2616 l cp gs col12 1.00 shd ef gr gs col0 s gr % Polyline n 5375 1834 m 5864 1834 l 5864 2616 l 5375 2616 l cp gs col12 1.00 shd ef gr gs col0 s gr % Polyline n 6157 1639 m 6645 1639 l 6645 2420 l 6157 2420 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 4987 1612 m 4973 1773 l 4909 1625 l 4948 1855 l 5025 1842 l cp clip n 4886 1248 m 4984 1834 l gs col4 s gr gr % arrowhead 30.000 slw n 4987 1612 m 4973 1773 l 4909 1625 l 4948 1619 l 4987 1612 l cp gs col4 1.00 shd ef gr col4 s % Polyline 7.500 slw gs clippath 5507 1621 m 5542 1778 l 5437 1656 l 5542 1865 l 5612 1830 l cp clip n 5277 1248 m 5570 1834 l gs col4 s gr gr % arrowhead 30.000 slw n 5507 1621 m 5542 1778 l 5437 1656 l 5472 1639 l 5507 1621 l cp gs col4 1.00 shd ef gr col4 s % Polyline 7.500 slw gs clippath 6302 1423 m 6327 1582 l 6230 1454 l 6322 1668 l 6394 1637 l cp clip n 6059 955 m 6352 1639 l gs col4 s gr gr % arrowhead 30.000 slw n 6302 1423 m 6327 1582 l 6230 1454 l 6266 1438 l 6302 1423 l cp gs col4 1.00 shd ef gr col4 s % Polyline 15.000 slw n 7200 3900 m 7275 3900 l 7275 4725 l 7200 4725 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline 7.500 slw n 3518 857 m 3714 857 l 3714 1052 l 3518 1052 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 3811 857 m 4007 857 l 4007 1052 l 3811 1052 l cp gs col12 1.00 shd ef gr gs col0 s gr % Polyline n 7720 857 m 7916 857 l 7916 1052 l 7720 1052 l cp gs col19 1.00 shd ef gr gs col0 s gr % Polyline n 8014 857 m 8209 857 l 8209 1052 l 8014 1052 l cp gs col12 1.00 shd ef gr gs col0 s gr % Polyline 15.000 slw n 5550 5325 m 7050 5325 l 7050 5475 l 5550 5475 l cp gs col32 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 7670 4485 m 7429 4425 l 7670 4365 l 7245 4365 l 7245 4485 l cp clip n 8100 4425 m 7275 4425 l gs col18 s gr gr % arrowhead 75.000 slw n 7670 4485 m 7429 4425 l 7670 4365 l 7670 4425 l 7670 4485 l cp gs col18 1.00 shd ef gr col18 s % Polyline 15.000 slw gs clippath 7705 3990 m 7945 4050 l 7705 4110 l 8130 4110 l 8130 3990 l cp clip n 7275 4050 m 8100 4050 l gs col18 s gr gr % arrowhead 75.000 slw n 7705 3990 m 7945 4050 l 7705 4110 l 7705 4050 l 7705 3990 l cp gs col18 1.00 shd ef gr col18 s /Helvetica-Bold ff 270.00 scf sf 4593 661 m gs 1 -1 sc (VI #1) col8 sh gr /Helvetica-Bold ff 210.00 scf sf 3750 2820 m gs 1 -1 sc (NIC SRAM\)) dup sw pop 2 div neg 0 rm col8 sh gr /Helvetica-Bold ff 210.00 scf sf 3600 1350 m gs 1 -1 sc (T) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 3600 1605 m gs 1 -1 sc (X) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 3900 1350 m gs 1 -1 sc (R) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 3900 1605 m gs 1 -1 sc (X) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 7800 1350 m gs 1 -1 sc (T) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 7800 1605 m gs 1 -1 sc (X) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 8100 1350 m gs 1 -1 sc (R) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 8100 1605 m gs 1 -1 sc (X) dup sw pop 2 div neg 0 rm col4 sh gr /Helvetica-Bold ff 210.00 scf sf 2925 1050 m gs 1 -1 sc (TX) col4 sh gr /Helvetica-Bold ff 210.00 scf sf 2925 1305 m gs 1 -1 sc (RX) col4 sh gr /Helvetica-Bold ff 210.00 scf sf 7125 1050 m gs 1 -1 sc (TX) col4 sh gr /Helvetica-Bold ff 210.00 scf sf 7125 1305 m gs 1 -1 sc (RX) col4 sh gr /Helvetica-Bold ff 270.00 scf sf 4575 4800 m gs 1 -1 sc (Doorbells ) col8 sh gr /Helvetica-Bold ff 270.00 scf sf 3750 2250 m gs 1 -1 sc (Doorbells) dup sw pop 2 div neg 0 rm col8 sh gr /Helvetica-Bold ff 210.00 scf sf 3750 2535 m gs 1 -1 sc (\(Mapped from) dup sw pop 2 div neg 0 rm col8 sh gr /Helvetica-Bold ff 270.00 scf sf 391 661 m gs 1 -1 sc (VI #0) col8 sh gr /Helvetica-Bold ff 270.00 scf sf 2175 1725 m gs 1 -1 sc (Queues) col8 sh gr /Helvetica-Bold ff 210.00 scf sf 4350 5100 m gs 1 -1 sc (\(one pair per VI\)) col8 sh gr /Helvetica-Bold ff 210.00 scf sf 1350 3075 m gs 1 -1 sc (\(in pinned RAM\)) dup sw pop 2 div neg 0 rm col8 sh gr /Helvetica-Bold ff 270.00 scf sf 1350 2850 m gs 1 -1 sc (Buffers) dup sw pop 2 div neg 0 rm col8 sh gr /Helvetica-Bold ff 270.00 scf sf 7425 4875 m gs 1 -1 sc (Network) col10 sh gr /Helvetica-Bold ff 270.00 scf sf 3450 3900 m gs 1 -1 sc (Myrinet NIC) dup sw pop neg 0 rm col10 sh gr /Helvetica-Bold ff 210.00 scf sf 3450 4275 m gs 1 -1 sc (\(1Mb SRAM, 37Mhz CPU\)) dup sw pop neg 0 rm col10 sh gr /Helvetica-Bold ff 270.00 scf sf 6675 300 m gs 1 -1 sc (User Process) col10 sh gr $F2psEnd rs %%EndDocument @endspecial 2266 1155 a(Figure)g(3:)36 b Fk(Berkeley)c(VIA)d(A)n(r)l (chite)l(ctur)l(e.)2110 1424 y Fp(T)-7 b(o)40 b(transmit)g(data,)k(the) d(user)f(builds)h(a)f(descriptor)2010 1524 y(on)c(the)g(appropriate)f (transmit)h(queue,)i(indicating)e(the)2010 1623 y(lo)r(cation)19 b(and)h(size)g(of)g(the)h(message)d(to)i(send,)i(and)e(\\rings")2010 1723 y(the)38 b(transmit)g(do)r(orb)r(ell)g(b)n(y)f(writing)h(a)f(p)r (oin)n(ter)h(to)g(the)2010 1823 y(new)27 b(transmit)f(queue)h(en)n(try) -7 b(.)36 b(In)26 b(order)g(to)g(receiv)n(e)g(data,)2010 1922 y(the)i(user)e(pushes)i(a)f(descriptor)f(to)h(a)g(free)g(bu\013er) h(in)f(host)2010 2022 y(memory)j(on)n(to)g(the)h(receiv)n(e)f(queue)g (and)h(similarly)f(rings)2010 2121 y(the)e(receiv)n(e)e(do)r(orb)r (ell.)2110 2223 y(The)f(LanAI)f(pro)r(cessor)f(on)h(the)i(NI)f(is)g (resp)r(onsible)f(for)2010 2323 y(p)r(olling)j(the)h(do)r(orb)r(ells)f (and)h(taking)f(appropriate)f(action)2010 2422 y(to)g(transmit)h(or)f (receiv)n(e)f(data)h(on)g(b)r(ehalf)h(of)g(the)g(\(p)r(oten-)2010 2522 y(tially\))33 b(m)n(ultiple)g(user)f(pro)r(cesses)f(sharing)g(the) i(net)n(w)n(ork)2010 2622 y(in)n(terface.)2110 2723 y(T)-7 b(ransmit)39 b(and)h(free)g(pac)n(k)n(et)f(bu\013ers)h(m)n(ust)h (\014rst)f(b)r(e)2010 2823 y Fk(r)l(e)l(gister)l(e)l(d)23 b Fp(with)g(the)g(net)n(w)n(ork)e(in)n(terface)h(b)r(efore)g(they)h (are)2010 2923 y(used;)31 b(this)f(op)r(eration,)f(p)r(erformed)h(b)n (y)f(a)g(k)n(ernel)g(system)2010 3022 y(call,)37 b(pins)e(them)h(to)f (ph)n(ysical)g(memory)-7 b(.)59 b(The)35 b(net)n(w)n(ork)2010 3122 y(in)n(terface)21 b(p)r(erforms)g(virtual-to-ph)n(ysical)f (address)g(trans-)2010 3222 y(lation)25 b(b)n(y)g(consulting)f(page)g (maps)h(in)h(host)f(memory)-7 b(,)24 b(us-)2010 3321 y(ing)19 b(an)g(on-b)r(oard)f(translation)g(lo)r(ok)-5 b(aside)18 b(bu\013er)i(to)f(cac)n(he)2010 3421 y(address)26 b(mappings.)2110 3523 y(The)38 b(C)h(API)f(pro)n(vided)g(b)n(y)g(VIA)h (includes)g(routines)2010 3622 y(suc)n(h)27 b(as)g(the)h(follo)n(wing:) 2093 3795 y Fq(\017)41 b Fb(VipPostSend\(\))p Fp(,)26 b(p)r(ost)31 b(a)f(bu\013er)h(on)f(the)h(transmit)2176 3894 y(queue;)2093 4069 y Fq(\017)41 b Fb(VipPostRecv\(\))p Fp(,)e(p)r(ost)i(a)g(bu\013er)g(on)g(the)g(receiv)n(e)2176 4168 y(queue;)2093 4343 y Fq(\017)g Fb(VipSendWait\(\))p Fp(,)22 b(w)n(ait)28 b(for)f(a)g(pac)n(k)n(et)f(to)i(b)r(e)g(sen)n(t;) 2093 4517 y Fq(\017)41 b Fb(VipRecvWait\(\))p Fp(,)j(w)n(ait)h(for)f(a) h(pac)n(k)n(et)f(to)h(b)r(e)g(re-)2176 4617 y(ceiv)n(ed;)2010 4790 y(as)39 b(w)n(ell)h(as)f(routines)h(to)f(handle)h(VI)h (setup/teardo)n(wn,)2010 4889 y(memory)27 b(registration,)f(and)h(so)g (forth.)2010 5095 y Fo(4.2)105 b(JaguarVIA)35 b(Implemen)m(tation)2110 5300 y Fp(Implemen)n(ting)g(an)f(e\016cien)n(t)h(Ja)n(v)-5 b(a)34 b(binding)h(to)f(VIA,)2010 5400 y(then,)28 b(relies)f(up)r(on)h (t)n(w)n(o)f(ma)5 b(jor)26 b(requiremen)n(ts:)p eop %%Page: 7 7 7 6 bop 60 83 a Fp(1.)41 b(The)25 b(abilit)n(y)f(to)h(e\016cien)n(tly)f (manipulate)h(VIA)g(do)r(or-)166 183 y(b)r(ells)j(and)f(queues;)h(and) 60 339 y(2.)41 b(The)g(abilit)n(y)g(to)h(directly)f(access)f (registered)f(VIA)166 438 y(data)27 b(bu\013ers,)h(without)g(a)f(cop)n (y)-7 b(.)100 584 y(JaguarVIA)49 b(is)i(implemen)n(ted)h(using)f(t)n(w) n(o)g(comp)r(o-)0 684 y(nen)n(ts:)67 b(\014rst,)47 b(a)42 b(Ja)n(v)-5 b(a)41 b(library)h(duplicating)h(the)g(func-)0 783 y(tionalit)n(y)30 b(of)g(the)h(C-based)f(library)f(whic)n(h)i(pro)n (vides)e(the)0 883 y(VIA)37 b(API;)g(and)f(second,)i(a)e(set)h(of)g (Jaguar)d(co)r(de)j(map-)0 983 y(pings)e(whic)n(h)g(translate)f(lo)n (w-lev)n(el)g(op)r(erations)g(on)g(VIA)0 1082 y(descriptor)e(queues,)j (do)r(orb)r(ells,)f(and)f(data)g(bu\013ers)g(in)n(to)0 1182 y(fast)c(mac)n(hine)g(co)r(de)g(segmen)n(ts.)41 b(Th)n(us,)30 b(the)f(ma)5 b(jorit)n(y)28 b(of)0 1282 y(JaguarVIA)i(is)i(implemen)n(ted)g(in)g(Ja)n(v)-5 b(a)31 b(itself,)i(and)e(only)0 1381 y(the)43 b(barest)f(essen)n(tials)g(are)g (handled)h(through)f(Jaguar)0 1481 y(co)r(de)27 b(transformations.)100 1572 y(Let)20 b(us)h(consider)e(the)i(op)r(eration)e(of)i(the)g Fb(VipPostSend)0 1663 y Fp(metho)r(d,)31 b(con)n(tained)d(in)i(the)g Fb(VIA)p 1086 1663 27 4 v 30 w(VI)f Fp(class.)42 b(Here)29 b(is)h(the)0 1755 y(Ja)n(v)-5 b(a)26 b(source)h(co)r(de:)0 1892 y Fc(public)41 b(int)f(VipPostSend\(VIA_Descr)k(descr\))c({)78 1984 y(/*)g(Queue)h(management)g(omitted)g(...)f(*/)78 2075 y(while)h(\(TxDoorbell.isBusy\(\)\))j(/*)c(spin)g(*/;)78 2166 y(TxDoorbell.set\(descr\);)78 2258 y(return)h(VIP_SUCCESS;)0 2349 y(})100 2495 y Fp(Its)22 b(essen)n(tial)g(function)i(is)e(to)h(p)r (oll)g(the)g(transmit)f(do)r(or-)0 2595 y(b)r(ell)29 b(un)n(til)h(it)f(is)f(ready)g(to)h(b)r(e)g(written,)g(and)g(then)g (set)g(its)0 2694 y(v)-5 b(alue)27 b(to)h(p)r(oin)n(t)f(to)h(the)g (transmit)f(descriptor)f(sp)r(ecifying)0 2794 y(the)g(data)f(to)g(b)r (e)h(sen)n(t.)707 2764 y Fj(2)781 2794 y Fp(Here,)f Fb(TxDoorbell)d Fp(is)j(a)g(priv)-5 b(ate)0 2893 y(\014eld)35 b(in)f(the)h Fb(VIA)p 577 2893 V 30 w(VI)e Fp(class)h(represen)n(ting)f(the)h (transmit)0 2993 y(do)r(orb)r(ell)d(for)g(this)g(VI,)h(and)f Fb(Descr)f Fp(is)h(an)g(ob)5 b(ject)31 b(of)h(the)0 3093 y(t)n(yp)r(e)42 b Fb(VIA)p 338 3093 V 30 w(Descr)d Fp(represen)n(ting)h (the)i(descriptor-queue)0 3192 y(en)n(try)27 b(for)g(the)h(pac)n(k)n (et)f(to)g(b)r(e)h(sen)n(t.)100 3292 y(The)g(la)n(y)n(out)g(of)h(the)g (do)r(orb)r(ell)f(structure,)h(as)f(mapp)r(ed)0 3392 y(from)42 b(the)h(SRAM)g(of)f(the)g(net)n(w)n(ork)f(in)n(terface,)46 b(is)c(t)n(w)n(o)0 3491 y(32-bit)f(w)n(ords:)63 b(the)42 b(\014rst)f(is)h(a)f(p)r(oin)n(ter)g(to)g(the)h(trans-)0 3591 y(mit)c(descriptor)e(itself,)k(and)d(the)g(second)g(is)g(a)f Fk(memory)0 3690 y(hand)t(le)p Fp(,)29 b(an)e(opaque)f(v)-5 b(alue)26 b(that)i(is)f(asso)r(ciated)e(with)j(the)0 3790 y(registered)d(memory)g(region)g(in)h(whic)n(h)g(the)g(descriptor) f(is)0 3890 y(con)n(tained.)69 b(T)-7 b(o)39 b(p)r(oll)g(the)g(do)r (orb)r(ell)f(it)h(is)f(su\016cien)n(t)h(to)0 3989 y(test)31 b(whether)g(the)g(\014rst)g(w)n(ord)f(is)h(non-zero.)45 b(T)-7 b(o)31 b(up)r(date)0 4089 y(the)d(do)r(orb)r(ell,)f(b)r(oth)h(v) -5 b(alues)27 b(m)n(ust)h(b)r(e)f(written)h(\(\014rst)g(the)0 4189 y(memory)c(handle,)h(then)h(the)f(descriptor)e(p)r(oin)n(ter\))i (as)f(vir-)0 4288 y(tual)19 b(addresses)d(in)j(the)g(pro)r(cess)e (address)g(space;)k(ho)n(w)n(ev)n(er,)0 4388 y(the)k(Ja)n(v)-5 b(a)23 b(application)h(has)h(no)f(means)g(b)n(y)h(whic)n(h)f(to)h(gen-) 0 4487 y(erate)32 b(or)h(use)g(virtual)g(addresses)e(directly)-7 b(.)54 b(In)34 b(fact,)g(w)n(e)0 4587 y(wish)e(to)g(prev)n(en)n(t)f (the)h(application)f(from)h(sp)r(ecifying)f(an)0 4687 y(arbitrary)21 b(address)g(as)i(a)f(transmit)h(or)f(receiv)n(e)f (descriptor)0 4786 y(\(sa)n(y\),)30 b(as)f(this)h(w)n(ould)f(allo)n(w)g (the)h(application)f(to)g(access)0 4886 y(or)37 b(corrupt)g(an)n(y)g (virtual)g(memory)g(address,)i(including)0 4986 y(memory)27 b(in)n(ternal)g(to)g(the)h(JVM.)100 5085 y(The)120 b(metho)r(ds)g Fb(VIA)p 927 5085 V 30 w(Doorbell.isBusy)114 b Fp(and)0 5185 y Fb(VIA)p 137 5185 V 30 w(Doorbell.set)100 b Fp(are)k(implemen)n (ted)h(through)p 0 5244 744 4 v 92 5298 a Fi(2)127 5321 y Fh(Additional)25 b(co)r(de)g(to)h(main)n(tain)d(a)i(link)n(ed)g(list) f(of)g(outstanding)0 5400 y(transmit)f(descriptors)g(has)h(b)r(een)h (omitted)e(for)g(space)i(reasons.)2010 83 y Fp(Jaguar)90 b(co)r(de)h(mappings,)108 b(as)91 b(sho)n(wn)g(in)h(Fig-)2010 183 y(ure)45 b(4.)89 b(Jaguar)44 b(recognizes)f(the)j(b)n(yteco)r(de)f (sequence)2010 282 y Fb(invokevirtual)38 b(VIA)p 2757 282 27 4 v 30 w(Doorbell.isBusy)32 b Fp(\(as)37 b(w)n(ell)g(as)2010 382 y(for)43 b Fb(VIA)p 2290 382 V 30 w(Doorbell.set)p Fp(\))c(and)k(inlines)g(mac)n(hine)g(co)r(de)2010 482 y(whic)n(h)59 b(p)r(erforms)f(the)i(do)r(orb)r(ell)e(p)r(olling)h(and)g (write)2010 581 y(functions,)35 b(resp)r(ectiv)n(ely)-7 b(.)54 b(In)34 b(the)g(case)f(of)g Fb(isBusy)p Fp(,)g(the)2010 681 y(mac)n(hine)k(co)r(de)h(segmen)n(t)f(simply)g(tests)h(the)g (\014rst)f(w)n(ord)2010 780 y(of)43 b(the)g(do)r(orb)r(ell)g(for)f(a)h (non-zero)e(v)-5 b(alue,)46 b(and)d(pushes)2010 880 y(a)52 b Fb(true)e Fp(or)h Fb(false)f Fp(v)-5 b(alue)52 b(on)n(to)g(the)g(Ja)n (v)-5 b(a)51 b(stac)n(k)g(as)2010 980 y(appropriate.)f(In)32 b(the)h(case)f(of)g Fb(set)p Fp(,)g(the)h(mac)n(hine)f(co)r(de)2010 1079 y(segmen)n(t)43 b(writes)g(the)g(t)n(w)n(o)g(w)n(ords)f(of)h(the)h (do)r(orb)r(ell)f(in)2010 1179 y(the)30 b(appropriate)e(order.)42 b(The)30 b(address)f(of)g(the)i(do)r(orb)r(ell)2010 1279 y(itself)d(\(as)f(mapp)r(ed)h(from)f(the)h(LanAI)f(SRAM\))i(is)e (stored)2010 1378 y(in)36 b(a)f(priv)-5 b(ate)36 b(\014eld)g(within)g (the)g(do)r(orb)r(ell)g(class,)h(and)e(is)2010 1478 y(extracted)23 b(from)g(the)g(do)r(orb)r(ell)g(ob)5 b(ject)23 b(b)n(y)g(the)h (generated)2010 1577 y(mac)n(hine)33 b(co)r(de.)54 b(Similarly)-7 b(,)35 b(the)e(address)g(and)g(memory)2010 1677 y(handle)47 b(of)g(the)h Fb(VIA)p 2711 1677 V 30 w(Descriptor)43 b Fp(ob)5 b(ject)47 b(are)f(stored)2010 1777 y(in)38 b(priv)-5 b(ate)37 b(\014elds)h(of)f(that)h(class.)66 b(The)37 b(use)h(of)f(priv)-5 b(ate)2010 1876 y(\014elds)36 b(ensures)f(that)h(only)f(trusted)h(co)r(de)f(is)h(capable)f(of)2010 1976 y(accessing)30 b(those)h(v)-5 b(alues)31 b(|)g(in)h(this)f(case,)h (constructors)2010 2076 y(whic)n(h)38 b(create)f(do)r(orb)r(ell)g(and)h (descriptor)e(ob)5 b(jects,)40 b(and)2010 2175 y(the)28 b(Jaguar)d(co)r(de)j(mappings)f(whic)n(h)h(op)r(erate)e(on)i(them.)2110 2309 y(VIA)c(pac)n(k)n(et)f(bu\013ers)h(are)f(an)h(example)g(of)g (Jaguar)e(Ex-)2010 2408 y(ternal)33 b(Ob)5 b(jects)34 b(at)g(w)n(ork.)54 b(They)34 b(are)f(implemen)n(ted)i(as)2010 2508 y(the)41 b(class)e Fb(VIA)p 2510 2508 V 30 w(Databuffer)p Fp(,)g(whic)n(h)h(represen)n(ts)f(a)h(re-)2010 2607 y(gion)29 b(of)h(registered)e(virtual)i(memory)-7 b(.)43 b(The)30 b(data)f(bu\013er)2010 2707 y(ma)n(y)g(b)r(e)g(manipulated)h(in)f(a)g (manner)g(similar)f(to)i(a)e(Ja)n(v)-5 b(a)2010 2807 y(arra)n(y)e(,)34 b(through)g(the)h(metho)r(ds)f Fb(readByte)p Fp(/)p Fb(writeByt)o(e)p Fp(,)2010 2906 y Fb(readInt)p Fp(/)p Fb(writeInt)o Fp(,)50 b(and)f(so)g(forth.)103 b(These)50 b(meth-)2010 3006 y(o)r(ds)d(are)f(implemen)n(ted)h(through) g(Jaguar)e(co)r(de)i(map-)2010 3106 y(pings)26 b(whic)n(h)g(directly)f (manipulate)h(the)g(con)n(ten)n(ts)g(of)g(the)2010 3205 y(bu\013er)39 b(in)g(virtual)g(memory)-7 b(.)70 b(The)40 b(class)e(con)n(tains)g(the)2010 3305 y(priv)-5 b(ate)40 b(\014elds)g Fb(vaddr)p Fp(,)i Fb(size)p Fp(,)g(and)e Fb(memhandle)d Fp(whic)n(h)2010 3404 y(k)n(eep)j(trac)n(k)g(of)g(the)i (bu\013er's)e(address,)j(size,)h(and)c(VIA)2010 3504 y(memory)g(handle,)k(resp)r(ectiv)n(ely)-7 b(.)76 b(A)41 b Fb(VIA)p 3409 3504 V 30 w(Databuffer)2010 3604 y Fp(is)c(created)e (through)h(a)h(sp)r(ecial)f(constructor)f(whic)n(h)i(al-)2010 3703 y(lo)r(cates)32 b(a)h(memory)f(region)f(outside)i(of)g(the)g(JVM)g (heap)2010 3803 y(and)28 b(registers)f(\(pins\))i(it)f(through)g(the)g (appropriate)f(sys-)2010 3903 y(tem)19 b(call;)i(this)e(memory)f(is)g (not)h(managed)e(directly)h(b)n(y)h(the)2010 4002 y(JVM.)34 b(The)f(class)g(can)g(also)f(b)r(e)i(used)f(as)g(a)g(\\con)n(tainer") 2010 4102 y(for)k(Jaguar)f(Pre-Serialized)f(Ob)5 b(jects,)40 b(as)d(describ)r(ed)h(in)2010 4201 y(Section)28 b(5.)2010 4502 y Fo(4.3)105 b(JaguarVIA)35 b(P)m(erformance)2110 4802 y Fp(T)-7 b(o)23 b(demonstrate)g(the)h(e\016ciency)g(of)g(this)g (approac)n(h)e(to)2010 4902 y(mapping)29 b(VIA)i(resources)c(in)n(to)i (Ja)n(v)-5 b(a,)29 b(w)n(e)g(implemen)n(ted)2010 5001 y(t)n(w)n(o)48 b(standard)g(VIA)i(microb)r(enc)n(hmarks:)78 b Fb(pingpong)p Fp(,)2010 5101 y(whic)n(h)53 b(measures)e(round-trip)g (latency)i(for)f(messages)2010 5201 y(of)41 b(v)-5 b(arying)40 b(sizes,)j(and)e Fb(bandwidth)p Fp(,)g(whic)n(h)f(measures)2010 5300 y(the)47 b(bandwidth)g(obtained)f(when)h(streaming)e(pac)n(k)n (ets)2010 5400 y(through)h(the)h(net)n(w)n(ork)e(in)n(terfaces)g(at)h (the)h(maxim)n(um)p eop %%Page: 8 8 8 7 bop 691 1310 a @beginspecial 0 @llx 0 @lly 680 @urx 354 @ury 3018 @rwi @setspecial %%BeginDocument: ./figures/jaguar-ex.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: jaguar-ex.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Mon Aug 2 15:22:03 1999 %%For: mdw@bhikku (Matt Welsh) %%Orientation: Portrait %%BoundingBox: 0 0 680 354 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def /col32 {0.969 0.969 0.969 srgb} bind def end save -3.0 362.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Courier /Courier-iso isovec ReEncode /Helvetica-Narrow-BoldOblique /Helvetica-Narrow-BoldOblique-iso isovec ReEncode /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 7022 m -1000 -1000 l 12370 -1000 l 12370 7022 l cp clip 0.06000 0.06000 sc % Polyline 15.000 slw n 525 3075 m 5100 3075 l 5100 5625 l 525 5625 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 75 450 m 5775 450 l 5775 2100 l 75 2100 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6450 2700 m 10875 2700 l 10875 3675 l 6450 3675 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 6450 4650 m 11025 4650 l 11025 6000 l 6450 6000 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline gs clippath 2760 2804 m 2700 3044 l 2640 2804 l 2640 3105 l 2760 3105 l cp clip n 2700 2100 m 2700 3075 l gs col4 s gr gr % arrowhead n 2760 2804 m 2700 3044 l 2640 2804 l 2700 2804 l 2760 2804 l cp gs col4 1.00 shd ef gr col4 s % Polyline gs clippath 6173 3089 m 6420 3083 l 6205 3205 l 6495 3125 l 6463 3009 l cp clip n 4275 3675 m 6450 3075 l gs col4 s gr gr % arrowhead n 6173 3089 m 6420 3083 l 6205 3205 l 6189 3147 l 6173 3089 l cp gs col4 1.00 shd ef gr col4 s % Polyline gs clippath 6265 5302 m 6494 5395 l 6248 5421 l 6546 5464 l 6563 5345 l cp clip n 4425 5100 m 6525 5400 l gs col4 s gr gr % arrowhead n 6265 5302 m 6494 5395 l 6248 5421 l 6257 5362 l 6265 5302 l cp gs col4 1.00 shd ef gr col4 s /Courier-iso ff 210.00 scf sf 225 750 m gs 1 -1 sc (public int VipPostSend\(VIA_Descr descr\) {) col0 sh gr /Courier-iso ff 210.00 scf sf 225 990 m gs 1 -1 sc ( /* ... */) col0 sh gr /Courier-iso ff 210.00 scf sf 225 1230 m gs 1 -1 sc ( while \(TxDoorbell.isBusy\(\)\) ; // poll) col0 sh gr /Courier-iso ff 210.00 scf sf 225 1470 m gs 1 -1 sc ( TxDoorbell.set\(descr\);) col0 sh gr /Courier-iso ff 210.00 scf sf 225 1710 m gs 1 -1 sc ( return VIP_SUCCESS;) col0 sh gr /Courier-iso ff 210.00 scf sf 225 1950 m gs 1 -1 sc (}) col0 sh gr /Courier-iso ff 210.00 scf sf 600 3330 m gs 1 -1 sc (43 aload_0) col0 sh gr /Courier-iso ff 210.00 scf sf 600 3570 m gs 1 -1 sc (44 getfield ) col0 sh gr /Courier-iso ff 210.00 scf sf 600 3810 m gs 1 -1 sc (47 invokevirtual ) col0 sh gr /Courier-iso ff 210.00 scf sf 600 4050 m gs 1 -1 sc (50 ifne 43) col0 sh gr /Courier-iso ff 210.00 scf sf 600 4290 m gs 1 -1 sc (53 aload_0) col0 sh gr /Courier-iso ff 210.00 scf sf 600 4530 m gs 1 -1 sc (54 getfield ) col0 sh gr /Courier-iso ff 210.00 scf sf 600 4770 m gs 1 -1 sc (57 aload_1) col0 sh gr /Courier-iso ff 210.00 scf sf 600 5010 m gs 1 -1 sc (58 invokevirtual ) col0 sh gr /Courier-iso ff 210.00 scf sf 600 5250 m gs 1 -1 sc (61 iconst_0) col0 sh gr /Courier-iso ff 210.00 scf sf 600 5490 m gs 1 -1 sc (62 return) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 4920 m gs 1 -1 sc (set: %ebx <- Doorbell.vaddr;) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 5160 m gs 1 -1 sc ( %eax <- Descr.memhandle;) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 5640 m gs 1 -1 sc ( %eax <- Descr.vaddr;) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 5880 m gs 1 -1 sc ( movl %eax,4\(%ebx\);) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 5400 m gs 1 -1 sc ( movl %eax,0\(%ebx\); ) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 2895 m gs 1 -1 sc (isBusy: %eax <- Doorbell.vaddr;) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 3135 m gs 1 -1 sc ( movl $0, %edx;) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 3375 m gs 1 -1 sc ( cmpl $0, 4\(%eax\);) col0 sh gr /Courier-iso ff 210.00 scf sf 6525 3615 m gs 1 -1 sc ( setne %dl;) col0 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 5175 3675 m gs 1 -1 sc (Jaguar) col4 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 5175 3930 m gs 1 -1 sc (JIT +) col4 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 5175 4185 m gs 1 -1 sc (code rewrite) col4 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 6525 2625 m gs 1 -1 sc (isBusy x86 code) col1 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 6525 4575 m gs 1 -1 sc (set x86 code) col1 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 150 300 m gs 1 -1 sc (Java Sourcecode) col1 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 600 3000 m gs 1 -1 sc (Java Bytecode) col1 sh gr /Helvetica-Narrow-BoldOblique-iso ff 210.00 scf sf 2850 2550 m gs 1 -1 sc (javac) col4 sh gr $F2psEnd rs %%EndDocument @endspecial 1108 1575 a Fp(Figure)27 b(4:)36 b Fk(Jaguar)30 b(VIA)f(Co)l(de)i(T)-6 b(r)l(ansformations.)180 3041 y @beginspecial 0 @llx 0 @lly 527 @urx 300 @ury 2089 @rwi 1620 @rhi @setspecial %%BeginDocument: ./figures/jaguar-via-bench/pingpong.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: pingpong.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Thu Jul 29 12:25:18 1999 %%For: mdw@bhikku (Matt Welsh) %%Orientation: Portrait %%BoundingBox: 0 0 527 300 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -11.0 324.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Times-Roman /Times-Roman-iso isovec ReEncode /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6385 m -1000 -1000 l 9955 -1000 l 9955 6385 l cp clip 0.06000 0.06000 sc % Polyline 7.500 slw n 1985 767 m 2517 767 l gs col0 s gr % Polyline n 1985 945 m 2517 945 l gs col1 s gr % Polyline [15 60] 60 sd n 1054 4883 m 8735 4883 l gs col0 s gr [] 0 sd % Polyline n 1054 4883 m 1161 4883 l gs col0 s gr % Polyline n 8735 4883 m 8627 4883 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 4481 m 8735 4481 l gs col0 s gr [] 0 sd % Polyline n 1054 4481 m 1161 4481 l gs col0 s gr % Polyline n 8735 4481 m 8627 4481 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 4080 m 8735 4080 l gs col0 s gr [] 0 sd % Polyline n 1054 4080 m 1161 4080 l gs col0 s gr % Polyline n 8735 4080 m 8627 4080 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 3678 m 8735 3678 l gs col0 s gr [] 0 sd % Polyline n 1054 3678 m 1161 3678 l gs col0 s gr % Polyline n 8735 3678 m 8627 3678 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 3277 m 8735 3277 l gs col0 s gr [] 0 sd % Polyline n 1054 3277 m 1161 3277 l gs col0 s gr % Polyline n 8735 3277 m 8627 3277 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 2875 m 8735 2875 l gs col0 s gr [] 0 sd % Polyline n 1054 2875 m 1161 2875 l gs col0 s gr % Polyline n 8735 2875 m 8627 2875 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 2474 m 8735 2474 l gs col0 s gr [] 0 sd % Polyline n 1054 2474 m 1161 2474 l gs col0 s gr % Polyline n 8735 2474 m 8627 2474 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 2072 m 8735 2072 l gs col0 s gr [] 0 sd % Polyline n 1054 2072 m 1161 2072 l gs col0 s gr % Polyline n 8735 2072 m 8627 2072 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 1671 m 8735 1671 l gs col0 s gr [] 0 sd % Polyline n 1054 1671 m 1161 1671 l gs col0 s gr % Polyline n 8735 1671 m 8627 1671 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 1270 m 8735 1270 l gs col0 s gr [] 0 sd % Polyline n 1054 1270 m 1161 1270 l gs col0 s gr % Polyline n 8735 1270 m 8627 1270 l gs col0 s gr % Polyline [15 60] 60 sd n 8629 868 m 8735 868 l gs col0 s gr [] 0 sd % Polyline n 1054 868 m 1161 868 l gs col0 s gr % Polyline n 8735 868 m 8627 868 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 467 m 8735 467 l gs col0 s gr [] 0 sd % Polyline n 1054 467 m 1161 467 l gs col0 s gr % Polyline n 8735 467 m 8627 467 l gs col0 s gr % Polyline [15 60] 60 sd n 1054 4883 m 1054 467 l gs col0 s gr [] 0 sd % Polyline n 1054 4883 m 1054 4775 l gs col0 s gr % Polyline n 1054 467 m 1054 574 l gs col0 s gr % Polyline [15 60] 60 sd n 1907 4883 m 1907 467 l gs col0 s gr [] 0 sd % Polyline n 1907 4883 m 1907 4775 l gs col0 s gr % Polyline n 1907 467 m 1907 574 l gs col0 s gr % Polyline [15 60] 60 sd n 2761 4883 m 2761 467 l gs col0 s gr [] 0 sd % Polyline n 2761 4883 m 2761 4775 l gs col0 s gr % Polyline n 2761 467 m 2761 574 l gs col0 s gr % Polyline [15 60] 60 sd n 3614 4883 m 3614 467 l gs col0 s gr [] 0 sd % Polyline n 3614 4883 m 3614 4775 l gs col0 s gr % Polyline n 3614 467 m 3614 574 l gs col0 s gr % Polyline [15 60] 60 sd n 4467 4883 m 4467 467 l gs col0 s gr [] 0 sd % Polyline n 4467 4883 m 4467 4775 l gs col0 s gr % Polyline n 4467 467 m 4467 574 l gs col0 s gr % Polyline [15 60] 60 sd n 5322 4883 m 5322 467 l gs col0 s gr [] 0 sd % Polyline n 5322 4883 m 5322 4775 l gs col0 s gr % Polyline n 5322 467 m 5322 574 l gs col0 s gr % Polyline [15 60] 60 sd n 6175 4883 m 6175 467 l gs col0 s gr [] 0 sd % Polyline n 6175 4883 m 6175 4775 l gs col0 s gr % Polyline n 6175 467 m 6175 574 l gs col0 s gr % Polyline [15 60] 60 sd n 7028 4883 m 7028 467 l gs col0 s gr [] 0 sd % Polyline n 7028 4883 m 7028 4775 l gs col0 s gr % Polyline n 7028 467 m 7028 574 l gs col0 s gr % Polyline [15 60] 60 sd n 7882 4883 m 7875 555 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 7882 574 m 7882 467 l gs col0 s gr [] 0 sd % Polyline n 7882 4883 m 7882 4775 l gs col0 s gr % Polyline n 7882 467 m 7882 574 l gs col0 s gr % Polyline [15 60] 60 sd n 8735 4883 m 8735 467 l gs col0 s gr [] 0 sd % Polyline n 8735 4883 m 8735 4775 l gs col0 s gr % Polyline n 8735 467 m 8735 574 l gs col0 s gr % Polyline n 1054 4883 m 8735 4883 l 8735 467 l 1054 467 l 1054 4883 l cp gs col0 s gr % Polyline n 1061 4626 m 1088 4603 l 1115 4581 l 1143 4573 l 1170 4478 l 1197 4472 l 1224 4445 l 1252 4458 l 1279 4441 l 1306 4425 l 1333 4412 l 1361 4402 l 1388 4399 l 1415 4409 l 1442 4417 l 1471 4407 l 1498 4398 l 1525 4355 l 1553 4356 l 1580 4348 l 1607 4229 l 1634 4212 l 1662 4202 l 1689 4200 l 1716 4209 l 1743 4207 l 1771 4191 l 1798 4154 l 1825 4146 l 1852 4143 l 1879 4176 l 1907 4174 l 1934 4160 l 1961 4137 l 1988 4093 l 2017 3985 l 2044 3972 l 2072 3995 l 2099 3966 l 2126 3949 l 2153 3962 l 2181 3942 l 2208 3929 l 2235 3910 l 2262 3908 l 2289 3908 l 2317 3931 l 2344 3929 l 2371 3872 l 2398 3867 l 2426 3866 l 2453 3774 l 2480 3741 l 2507 3741 l 2535 3711 l 2563 3710 l 2591 3713 l 2618 3720 l 2645 3715 l 2672 3672 l 2700 3672 l 2727 3651 l 2754 3698 l 2781 3687 l 2808 3675 l 2836 3629 l 2863 3652 l 2890 3528 l 2917 3522 l 2945 3503 l 2972 3505 l 2999 3506 l 3026 3489 l 3054 3473 l 3082 3467 l 3110 3442 l 3137 3440 l 3164 3479 l 3191 3462 l 3218 3440 l 3246 3396 l 3273 3390 l 3300 3387 l 3327 3274 l 3355 3261 l 3382 3265 l 3409 3251 l 3436 3254 l 3464 3242 l 3491 3229 l 3518 3202 l 3545 3204 l 3573 3198 l 3600 3251 l 3628 3241 l 3656 3198 l 3683 3178 l 3710 3175 l 3737 3060 l 3765 3062 l 3792 3053 l 3819 3047 l 3846 3037 l 3874 3053 l 3901 3023 l 3928 3014 l 3955 2977 l 3983 2973 l 4010 2970 l 4037 2979 l 4064 2987 l 4092 2940 l 4119 2938 l 4146 2921 l 4175 2831 l 4202 2824 l 4229 2817 l 4256 2792 l 4284 2792 l 4311 2791 l 4338 2782 l 4365 2762 l 4393 2753 l 4420 2738 l 4447 2743 l 4474 2781 l 4502 2772 l 4529 2726 l 4556 2591 l 4583 2596 l 4610 2544 l 4638 2503 l 4665 2528 l 4694 2510 l 4721 2518 l 4748 2501 l 4775 2434 l 4803 2432 l 4830 2425 l 4857 2404 l 4884 2425 l 4912 2468 l 4939 2392 l 4966 2374 l 4993 2352 l 5021 2362 l 5048 2318 l 5075 2282 l 5102 2287 l 5129 2308 l 5157 2310 l 5184 2283 l 5211 2210 l 5240 2181 l 5267 2203 l 5294 2171 l 5322 2193 l 5349 2200 l 5376 2179 l 5403 2147 l 5431 2143 l 5458 2088 l 5485 2108 l 5512 2042 l 5539 2052 l 5567 2051 l 5594 2058 l 5621 2075 l 5648 1959 l 5676 1943 l 5703 1962 l 5730 1955 l 5757 1968 l 5786 1929 l 5813 1916 l 5841 1905 l 5868 1906 l 5895 1859 l 5922 1867 l 5949 1842 l 5977 1822 l 6004 1797 l 6031 1832 l 6058 1816 l 6086 1751 l 6113 1714 l 6140 1694 l 6167 1684 l 6195 1721 l 6222 1717 l 6249 1684 l 6276 1644 l 6304 1691 l 6332 1629 l 6359 1595 l 6387 1585 l 6414 1581 l 6441 1578 l 6468 1582 l 6496 1523 l 6523 1513 l 6550 1506 l 6577 1503 l 6605 1515 l 6632 1515 l 6659 1480 l 6686 1452 l 6714 1429 l 6741 1444 l 6768 1403 l 6795 1383 l 6823 1356 l 6851 1381 l 6878 1380 l 6906 1361 l 6933 1294 l 6960 1278 l 6987 1274 l 7015 1265 l 7042 1257 l 7069 1278 l 7096 1265 l 7124 1214 l 7151 1188 l 7178 1165 l 7205 1163 l 7233 1133 l 7260 1139 l 7287 1115 l 7314 1142 l 7341 1122 l 7369 1072 l 7397 1044 l 7425 1040 l 7452 1040 l 7479 1043 l 7506 1022 l 7534 1006 l 7561 997 l 7588 963 l 7615 943 l 7643 938 l 7670 908 l 7697 897 l 7724 940 l 7752 923 l 7779 913 l 7806 814 l 7833 798 l 7860 804 l 7888 798 l 7915 812 l 7944 786 l 7971 772 l 7998 736 l 8025 765 l gs col0 s gr % Polyline n 1061 4622 m 1402 4421 l 1743 4220 l 2084 4019 l 2426 3879 l 2767 3738 l 3110 3498 l 3451 3237 l 3792 3036 l 4133 2915 l 4474 2715 l 4815 2534 l 5157 2414 l 5498 2173 l 5841 1912 l 6182 1751 l 6523 1591 l 6864 1390 l 7205 1209 l 7547 968 l 7888 828 l gs col1 s gr % Polyline [15 60] 60 sd n 1054 870 m 8625 870 l gs col0 s gr [] 0 sd /Times-Roman-iso ff 210.00 scf sf 1879 1034 m gs 1 -1 sc (Jaguar) dup sw pop neg 0 rm col1 sh gr /Times-Roman-iso ff 210.00 scf sf 1879 856 m gs 1 -1 sc (C) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 4971 m gs 1 -1 sc (60) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 4570 m gs 1 -1 sc (80) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 4169 m gs 1 -1 sc (100) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 3767 m gs 1 -1 sc (120) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 3366 m gs 1 -1 sc (140) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 2964 m gs 1 -1 sc (160) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 2563 m gs 1 -1 sc (180) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 2161 m gs 1 -1 sc (200) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 1760 m gs 1 -1 sc (220) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 1358 m gs 1 -1 sc (240) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 957 m gs 1 -1 sc (260) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 948 556 m gs 1 -1 sc (280) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1054 5149 m gs 1 -1 sc (0) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1907 5149 m gs 1 -1 sc (500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 2761 5149 m gs 1 -1 sc (1000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 3614 5149 m gs 1 -1 sc (1500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4467 5149 m gs 1 -1 sc (2000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 5322 5149 m gs 1 -1 sc (2500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 6175 5149 m gs 1 -1 sc (3000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7028 5149 m gs 1 -1 sc (3500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7882 5149 m gs 1 -1 sc (4000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 8735 5149 m gs 1 -1 sc (4500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 346 2763 m gs 1 -1 sc 90.0 rot (Round-trip time, usec) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4894 5327 m gs 1 -1 sc (Message size, bytes) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1797 w @beginspecial 0 @llx 0 @lly 529 @urx 298 @ury 2089 @rwi 1620 @rhi @setspecial %%BeginDocument: ./figures/jaguar-via-bench/window.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: window.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Thu Jul 29 17:06:50 1999 %%For: mdw@bhikku (Matt Welsh) %%Orientation: Portrait %%BoundingBox: 0 0 529 298 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -10.0 323.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6369 m -1000 -1000 l 9978 -1000 l 9978 6369 l cp clip 0.06000 0.06000 sc % Polyline 7.500 slw n 8100 2982 m 8206 2877 l gs col5 s gr % Polyline n 7890 2930 m 8418 2930 l gs col5 s gr % Polyline n 8100 2877 m 8206 2982 l gs col5 s gr % Polyline n 7890 4254 m 8418 4254 l gs col4 s gr % Polyline n 8100 4306 m 8206 4306 l 8206 4200 l 8100 4200 l 8100 4306 l cp gs col4 s gr % Polyline n 7890 824 m 8418 824 l gs col0 s gr % Polyline n 8100 824 m 8153 877 l 8206 824 l 8153 772 l 8100 824 l cp gs col0 s gr % Polyline n 7890 1001 m 8418 1001 l gs col1 s gr % Polyline n 8100 1001 m 8206 1001 l gs col1 s gr % Polyline n 8153 1054 m 8153 948 l gs col1 s gr % Polyline [15 60] 60 sd n 1068 4869 m 8704 4869 l gs col0 s gr [] 0 sd % Polyline n 1068 4869 m 1174 4869 l gs col0 s gr % Polyline n 8704 4869 m 8597 4869 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 4431 m 8704 4431 l gs col0 s gr [] 0 sd % Polyline n 1068 4431 m 1174 4431 l gs col0 s gr % Polyline n 8704 4431 m 8597 4431 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 3992 m 8704 3992 l gs col0 s gr [] 0 sd % Polyline n 1068 3992 m 1174 3992 l gs col0 s gr % Polyline n 8704 3992 m 8597 3992 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 3552 m 8704 3552 l gs col0 s gr [] 0 sd % Polyline n 1068 3552 m 1174 3552 l gs col0 s gr % Polyline n 8704 3552 m 8597 3552 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 3114 m 8704 3114 l gs col0 s gr [] 0 sd % Polyline n 1068 3114 m 1174 3114 l gs col0 s gr % Polyline n 8704 3114 m 8597 3114 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 2674 m 8704 2674 l gs col0 s gr [] 0 sd % Polyline n 1068 2674 m 1174 2674 l gs col0 s gr % Polyline n 8704 2674 m 8597 2674 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 2236 m 8704 2236 l gs col0 s gr [] 0 sd % Polyline n 1068 2236 m 1174 2236 l gs col0 s gr % Polyline n 8704 2236 m 8597 2236 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 1796 m 8704 1796 l gs col0 s gr [] 0 sd % Polyline n 1068 1796 m 1174 1796 l gs col0 s gr % Polyline n 8704 1796 m 8597 1796 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 1357 m 8704 1357 l gs col0 s gr [] 0 sd % Polyline n 1068 1357 m 1174 1357 l gs col0 s gr % Polyline n 8704 1357 m 8597 1357 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 918 m 8625 900 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 8599 918 m 8704 918 l gs col0 s gr [] 0 sd % Polyline n 1068 918 m 1174 918 l gs col0 s gr % Polyline n 8704 918 m 8597 918 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 479 m 8704 479 l gs col0 s gr [] 0 sd % Polyline n 1068 479 m 1174 479 l gs col0 s gr % Polyline n 8704 479 m 8597 479 l gs col0 s gr % Polyline [15 60] 60 sd n 1068 4869 m 1068 479 l gs col0 s gr [] 0 sd % Polyline n 1068 4869 m 1068 4762 l gs col0 s gr % Polyline n 1068 479 m 1068 586 l gs col0 s gr % Polyline [15 60] 60 sd n 2159 4869 m 2159 479 l gs col0 s gr [] 0 sd % Polyline n 2159 4869 m 2159 4762 l gs col0 s gr % Polyline n 2159 479 m 2159 586 l gs col0 s gr % Polyline [15 60] 60 sd n 3249 4869 m 3249 479 l gs col0 s gr [] 0 sd % Polyline n 3249 4869 m 3249 4762 l gs col0 s gr % Polyline n 3249 479 m 3249 586 l gs col0 s gr % Polyline [15 60] 60 sd n 4340 4869 m 4340 479 l gs col0 s gr [] 0 sd % Polyline n 4340 4869 m 4340 4762 l gs col0 s gr % Polyline n 4340 479 m 4340 586 l gs col0 s gr % Polyline [15 60] 60 sd n 5432 4869 m 5432 479 l gs col0 s gr [] 0 sd % Polyline n 5432 4869 m 5432 4762 l gs col0 s gr % Polyline n 5432 479 m 5432 586 l gs col0 s gr % Polyline [15 60] 60 sd n 6523 4869 m 6525 525 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 6523 586 m 6523 479 l gs col0 s gr [] 0 sd % Polyline n 6523 4869 m 6523 4762 l gs col0 s gr % Polyline n 6523 479 m 6523 586 l gs col0 s gr % Polyline [15 60] 60 sd n 7614 4869 m 7620 480 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 7614 586 m 7614 479 l gs col0 s gr [] 0 sd % Polyline n 7614 4869 m 7614 4762 l gs col0 s gr % Polyline n 7614 479 m 7614 586 l gs col0 s gr % Polyline [15 60] 60 sd n 8704 4869 m 8704 479 l gs col0 s gr [] 0 sd % Polyline n 8704 4869 m 8704 4762 l gs col0 s gr % Polyline n 8704 479 m 8704 586 l gs col0 s gr % Polyline n 1068 4869 m 8704 4869 l 8704 479 l 1068 479 l 1068 4869 l cp gs col0 s gr % Polyline n 1069 4854 m 1069 4840 l 1071 4814 l 1076 4758 l 1082 4649 l 1096 4446 l 1123 4061 l 1179 3474 l 1292 2815 l 1515 2018 l 1962 1384 l 2854 941 l 4643 683 l 8217 541 l gs col0 s gr % Polyline n 1017 4854 m 1069 4907 l 1122 4854 l 1069 4801 l 1017 4854 l cp gs col0 s gr % Polyline n 1065 4854 m 1073 4854 l gs col0 s gr % Polyline n 1017 4840 m 1069 4892 l 1122 4840 l 1069 4787 l 1017 4840 l cp gs col0 s gr % Polyline n 1065 4840 m 1073 4840 l gs col0 s gr % Polyline n 1018 4814 m 1071 4867 l 1123 4814 l 1071 4761 l 1018 4814 l cp gs col0 s gr % Polyline n 1067 4814 m 1075 4814 l gs col0 s gr % Polyline n 1022 4758 m 1076 4811 l 1128 4758 l 1076 4706 l 1022 4758 l cp gs col0 s gr % Polyline n 1072 4758 m 1080 4758 l gs col0 s gr % Polyline n 1029 4649 m 1082 4702 l 1135 4649 l 1082 4596 l 1029 4649 l cp gs col0 s gr % Polyline n 1078 4649 m 1086 4649 l gs col0 s gr % Polyline n 1044 4446 m 1096 4498 l 1149 4446 l 1096 4392 l 1044 4446 l cp gs col0 s gr % Polyline n 1092 4446 m 1100 4446 l gs col0 s gr % Polyline n 1071 4061 m 1123 4115 l 1176 4061 l 1123 4008 l 1071 4061 l cp gs col0 s gr % Polyline n 1119 4061 m 1127 4061 l gs col0 s gr % Polyline n 1127 3474 m 1179 3527 l 1231 3474 l 1179 3421 l 1127 3474 l cp gs col0 s gr % Polyline n 1175 3474 m 1183 3474 l gs col0 s gr % Polyline n 1238 2815 m 1292 2868 l 1345 2815 l 1292 2763 l 1238 2815 l cp gs col0 s gr % Polyline n 1288 2815 m 1296 2815 l gs col0 s gr % Polyline n 1463 2018 m 1515 2070 l 1568 2018 l 1515 1964 l 1463 2018 l cp gs col0 s gr % Polyline n 1511 2018 m 1519 2018 l gs col0 s gr % Polyline n 1908 1384 m 1962 1437 l 2014 1384 l 1962 1332 l 1908 1384 l cp gs col0 s gr % Polyline n 1958 1384 m 1966 1384 l gs col0 s gr % Polyline n 2802 941 m 2854 993 l 2908 941 l 2854 888 l 2802 941 l cp gs col0 s gr % Polyline n 2850 941 m 2858 941 l gs col0 s gr % Polyline n 4589 683 m 4643 736 l 4695 683 l 4643 631 l 4589 683 l cp gs col0 s gr % Polyline n 4639 683 m 4647 683 l gs col0 s gr % Polyline n 8163 541 m 8217 595 l 8270 541 l 8217 489 l 8163 541 l cp gs col0 s gr % Polyline n 8213 541 m 8221 541 l gs col0 s gr % Polyline n 1069 4857 m 1069 4844 l 1071 4823 l 1076 4776 l 1082 4683 l 1096 4509 l 1123 4151 l 1179 3610 l 1292 3012 l 1515 2212 l 1962 1591 l 2854 1076 l 4643 762 l 8217 583 l gs col1 s gr % Polyline n 1017 4857 m 1122 4857 l gs col1 s gr % Polyline n 1069 4910 m 1069 4804 l gs col1 s gr % Polyline n 1017 4844 m 1122 4844 l gs col1 s gr % Polyline n 1069 4896 m 1069 4792 l gs col1 s gr % Polyline n 1018 4823 m 1123 4823 l gs col1 s gr % Polyline n 1071 4875 m 1071 4770 l gs col1 s gr % Polyline n 1022 4776 m 1128 4776 l gs col1 s gr % Polyline n 1076 4828 m 1076 4723 l gs col1 s gr % Polyline n 1029 4683 m 1135 4683 l gs col1 s gr % Polyline n 1082 4735 m 1082 4631 l gs col1 s gr % Polyline n 1044 4509 m 1149 4509 l gs col1 s gr % Polyline n 1096 4561 m 1096 4457 l gs col1 s gr % Polyline n 1071 4151 m 1176 4151 l gs col1 s gr % Polyline n 1123 4204 m 1123 4099 l gs col1 s gr % Polyline n 1127 3610 m 1231 3610 l gs col1 s gr % Polyline n 1179 3662 m 1179 3556 l gs col1 s gr % Polyline n 1238 3012 m 1345 3012 l gs col1 s gr % Polyline n 1292 3065 m 1292 2960 l gs col1 s gr % Polyline n 1463 2212 m 1568 2212 l gs col1 s gr % Polyline n 1515 2265 m 1515 2160 l gs col1 s gr % Polyline n 1908 1591 m 2014 1591 l gs col1 s gr % Polyline n 1962 1644 m 1962 1538 l gs col1 s gr % Polyline n 2802 1076 m 2908 1076 l gs col1 s gr % Polyline n 2854 1129 m 2854 1024 l gs col1 s gr % Polyline n 4589 762 m 4695 762 l gs col1 s gr % Polyline n 4643 814 m 4643 709 l gs col1 s gr % Polyline n 8163 583 m 8270 583 l gs col1 s gr % Polyline n 1069 4860 m 1069 4850 l 1071 4836 l 1076 4808 l 1082 4770 l 1096 4726 l 1123 4683 l 1179 4655 l 1292 4640 l 1515 4628 l 1962 4624 l 2854 4622 l 4643 4620 l 8217 4619 l gs col4 s gr % Polyline n 1017 4912 m 1122 4912 l 1122 4807 l 1017 4807 l 1017 4912 l cp gs col4 s gr % Polyline n 1065 4860 m 1073 4860 l gs col4 s gr % Polyline n 1017 4903 m 1122 4903 l 1122 4797 l 1017 4797 l 1017 4903 l cp gs col4 s gr % Polyline n 1065 4850 m 1073 4850 l gs col4 s gr % Polyline n 1018 4888 m 1123 4888 l 1123 4783 l 1018 4783 l 1018 4888 l cp gs col4 s gr % Polyline n 1067 4836 m 1075 4836 l gs col4 s gr % Polyline n 1022 4861 m 1128 4861 l 1128 4756 l 1022 4756 l 1022 4861 l cp gs col4 s gr % Polyline n 1072 4808 m 1080 4808 l gs col4 s gr % Polyline n 1029 4823 m 1135 4823 l 1135 4718 l 1029 4718 l 1029 4823 l cp gs col4 s gr % Polyline n 1078 4770 m 1086 4770 l gs col4 s gr % Polyline n 1044 4778 m 1149 4778 l 1149 4673 l 1044 4673 l 1044 4778 l cp gs col4 s gr % Polyline n 1092 4726 m 1100 4726 l gs col4 s gr % Polyline n 1071 4735 m 1176 4735 l 1176 4631 l 1071 4631 l 1071 4735 l cp gs col4 s gr % Polyline n 1119 4683 m 1127 4683 l gs col4 s gr % Polyline n 1127 4707 m 1231 4707 l 1231 4601 l 1127 4601 l 1127 4707 l cp gs col4 s gr % Polyline n 1175 4655 m 1183 4655 l gs col4 s gr % Polyline n 1238 4693 m 1345 4693 l 1345 4588 l 1238 4588 l 1238 4693 l cp gs col4 s gr % Polyline n 1288 4640 m 1296 4640 l gs col4 s gr % Polyline n 1463 4682 m 1568 4682 l 1568 4576 l 1463 4576 l 1463 4682 l cp gs col4 s gr % Polyline n 1511 4628 m 1519 4628 l gs col4 s gr % Polyline n 1908 4677 m 2014 4677 l 2014 4572 l 1908 4572 l 1908 4677 l cp gs col4 s gr % Polyline n 1958 4624 m 1966 4624 l gs col4 s gr % Polyline n 2802 4674 m 2908 4674 l 2908 4569 l 2802 4569 l 2802 4674 l cp gs col4 s gr % Polyline n 2850 4622 m 2858 4622 l gs col4 s gr % Polyline n 4589 4673 m 4695 4673 l 4695 4568 l 4589 4568 l 4589 4673 l cp gs col4 s gr % Polyline n 4639 4620 m 4647 4620 l gs col4 s gr % Polyline n 8163 4671 m 8270 4671 l 8270 4566 l 8163 4566 l 8163 4671 l cp gs col4 s gr % Polyline n 8213 4619 m 8221 4619 l gs col4 s gr % Polyline n 1069 4857 m 1069 4844 l 1071 4824 l 1076 4782 l 1082 4699 l 1096 4556 l 1123 4312 l 1179 4021 l 1292 3782 l 1515 3544 l 1962 3402 l 2854 3307 l 4643 3255 l 8217 3228 l gs col5 s gr % Polyline n 1017 4910 m 1122 4804 l gs col5 s gr % Polyline n 1017 4804 m 1122 4910 l gs col5 s gr % Polyline n 1017 4896 m 1122 4792 l gs col5 s gr % Polyline n 1017 4792 m 1122 4896 l gs col5 s gr % Polyline n 1018 4876 m 1123 4771 l gs col5 s gr % Polyline n 1018 4771 m 1123 4876 l gs col5 s gr % Polyline n 1022 4834 m 1128 4729 l gs col5 s gr % Polyline n 1022 4729 m 1128 4834 l gs col5 s gr % Polyline n 1029 4751 m 1135 4647 l gs col5 s gr % Polyline n 1029 4647 m 1135 4751 l gs col5 s gr % Polyline n 1044 4608 m 1149 4503 l gs col5 s gr % Polyline n 1044 4503 m 1149 4608 l gs col5 s gr % Polyline n 1071 4364 m 1176 4258 l gs col5 s gr % Polyline n 1071 4258 m 1176 4364 l gs col5 s gr % Polyline n 1127 4074 m 1231 3969 l gs col5 s gr % Polyline n 1127 3969 m 1231 4074 l gs col5 s gr % Polyline n 1238 3835 m 1345 3729 l gs col5 s gr % Polyline n 1238 3729 m 1345 3835 l gs col5 s gr % Polyline n 1463 3596 m 1568 3492 l gs col5 s gr % Polyline n 1463 3492 m 1568 3596 l gs col5 s gr % Polyline n 1908 3456 m 2014 3350 l gs col5 s gr % Polyline n 1908 3350 m 2014 3456 l gs col5 s gr % Polyline n 2802 3359 m 2908 3253 l gs col5 s gr % Polyline n 2802 3253 m 2908 3359 l gs col5 s gr % Polyline n 4589 3308 m 4695 3201 l gs col5 s gr % Polyline n 4589 3201 m 4695 3308 l gs col5 s gr % Polyline n 8163 3280 m 8270 3175 l gs col5 s gr % Polyline n 8163 3175 m 8270 3280 l gs col5 s gr /Times-Roman ff 210.00 scf sf 7784 3018 m gs 1 -1 sc (JNI simulated \(10x\)) dup sw pop neg 0 rm col5 sh gr /Times-Roman ff 210.00 scf sf 7784 4341 m gs 1 -1 sc (JNI simulated) dup sw pop neg 0 rm col4 sh gr /Times-Roman ff 210.00 scf sf 7784 1089 m gs 1 -1 sc (Jaguar) dup sw pop neg 0 rm col1 sh gr /Times-Roman ff 210.00 scf sf 7800 900 m gs 1 -1 sc (C) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 4958 m gs 1 -1 sc (0) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 4519 m gs 1 -1 sc (50) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 4080 m gs 1 -1 sc (100) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 3642 m gs 1 -1 sc (150) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 3201 m gs 1 -1 sc (200) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 2763 m gs 1 -1 sc (250) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 2323 m gs 1 -1 sc (300) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 1885 m gs 1 -1 sc (350) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 1446 m gs 1 -1 sc (400) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 1006 m gs 1 -1 sc (450) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 962 568 m gs 1 -1 sc (500) dup sw pop neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 1068 5135 m gs 1 -1 sc (0) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 2159 5135 m gs 1 -1 sc (5000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 3249 5135 m gs 1 -1 sc (10000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 4340 5135 m gs 1 -1 sc (15000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 5432 5135 m gs 1 -1 sc (20000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 6523 5135 m gs 1 -1 sc (25000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 7614 5135 m gs 1 -1 sc (30000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 8704 5135 m gs 1 -1 sc (35000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 363 2763 m gs 1 -1 sc 90.0 rot (Bandwidth, Mbits/sec) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman ff 210.00 scf sf 4886 5312 m gs 1 -1 sc (Message size, bytes) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1101 3307 a Fp(Figure)27 b(5:)37 b Fk(JaguarVIA)29 b(micr)l(ob)l(enchmark)i(r)l(esults.)0 3572 y Fp(rate.)167 3542 y Fj(3)100 3671 y Fp(The)d(results)g(of)h(these)g(microb)r(enc)n (hmarks)d(for)j(C)f(and)0 3771 y(Ja)n(v)-5 b(a)48 b(are)g(sho)n(wn)g (in)i(Figure)e(5.)101 b(The)49 b(Ja)n(v)-5 b(a)48 b(and)h(C)0 3871 y Fb(pingpong)20 b Fp(b)r(enc)n(hmarks)j(obtain)g(iden)n(tical)g (p)r(erformance)0 3970 y(with)29 b(a)f(minimal)h(round-trip)f(time)h (of)f(70)g(microseconds)0 4070 y(for)c(small)g(messages.)35 b Fb(bandwidth)21 b Fp(in)j(Ja)n(v)-5 b(a)24 b(obtains)g(99\045)0 4170 y(of)42 b(the)g(bandwidth)g(ac)n(hiev)n(ed)e(b)n(y)h(C,)h(p)r (eaking)f(at)g(488)0 4269 y(megabits/sec)30 b(for)g(32Kb)g(pac)n(k)n (ets.)47 b(The)31 b(lost)g(e\016ciency)0 4369 y(is)e(due)h(to)g(higher) f(lo)r(op)g(and)g(metho)r(d-call)h(o)n(v)n(erheads)d(in)0 4468 y(Ja)n(v)-5 b(a.)34 b(More)23 b(aggressiv)n(e)d(optimization)k(in) g(the)f(JIT)h(com-)0 4568 y(piler)40 b(used)h(b)n(y)f(Jaguar)f(should)h (b)r(e)h(able)g(to)f(o)n(v)n(ercome)0 4668 y(these)28 b(issues.)100 4767 y(T)-7 b(o)30 b(highligh)n(t)g(the)g(adv)-5 b(an)n(tage)29 b(of)i(using)f(Jaguar)e(o)n(v)n(er)0 4867 y(the)36 b(Ja)n(v)-5 b(a)35 b(nativ)n(e)h(co)r(de)g(in)n(terface,)h(w)n (e)f(ha)n(v)n(e)f(estimated)p 0 4929 744 4 v 92 4982 a Fi(3)127 5006 y Fh(Note)30 b(that)g(Berk)n(eley)f(VIA)g(itself)f(do)r (es)i(not)f(implemen)n(t)f(\015o)n(w)0 5085 y(con)n(trol)e(or)f (reliable)f(deliv)n(ery;)i(applications)g(are)f(exp)r(ected)i(to)f(im-) 0 5163 y(plemen)n(t)i(their)g(o)n(wn)g(proto)r(cols)g(o)n(v)n(er)h(the) f(ra)n(w)g(transp)r(ort)g(mec)n(ha-)0 5242 y(nisms)18 b(pro)n(vided.)30 b(Therefore,)21 b(the)f(bandwidth)h(b)r(enc)n(hmark)f (mak)n(es)0 5321 y(no)34 b(presumption)g(ab)r(out)h(the)g(\015o)n (w-con)n(trol)g(proto)r(col)g(used,)h(and)0 5400 y(assumes)22 b(that)j(data)f(is)f(receiv)n(ed)h(as)f(rapidly)g(as)g(it)h(is)e (transmitted.)2010 3572 y Fp(the)h(p)r(erformance)f(of)g(the)h Fb(bandwidth)d Fp(b)r(enc)n(hmark)h(if)j(the)2010 3671 y(Ja)n(v)-5 b(a)38 b(Nativ)n(e)h(In)n(terface)g(\(JNI\))h(w)n(ere)e (used)i(to)f(pro)n(vide)2010 3771 y(VIA)e(functionalit)n(y)f(in)h(Ja)n (v)-5 b(a.)61 b(In)37 b(the)f(estimation,)j(the)2010 3871 y(o)n(v)n(erhead)34 b(of)i(using)g(JNI)g(\(from)g(Figure)g(1\))g (w)n(as)f(added)2010 3970 y(to)j(the)h(measured)e(p)r(er-message)f (cost)i(and)g(the)h(result-)2010 4070 y(ing)33 b(bandwidth)g (recalculated.)53 b(W)-7 b(e)33 b(assume)g(that)g(eac)n(h)2010 4170 y(nativ)n(e)40 b(metho)r(d)g(call)g(costs)f(1.0)g Fa(\026)p Fp(sec)h(and)g(that)g(cop)n(y-)2010 4269 y(ing)e(data)f(from) g(Ja)n(v)-5 b(a)37 b(to)g(nativ)n(e)g(co)r(de)h(costs)f(270)f Fa(\026)p Fp(sec)2010 4369 y(p)r(er)27 b(kilob)n(yte.)36 b(F)-7 b(our)27 b(nativ)n(e)g(metho)r(d)h(calls)f(are)f(required)2010 4468 y(p)r(er)21 b(message)f(transmitted.)35 b(The)22 b(estimated)g(bandwidth)2010 4568 y(p)r(eaks)g(at)h(28.55)e (megabits/sec,)h(a)g(factor)g(of)h(17)f(less)g(than)2010 4668 y(JaguarVIA.)33 b(Ev)n(en)g(if)i(the)g(p)r(erformance)e(of)h(the)h (nativ)n(e)2010 4767 y(in)n(terface)29 b(w)n(ere)g(a)g(factor)f(of)i (10)f(faster,)g(the)h(p)r(eak)f(band-)2010 4867 y(width)39 b(w)n(ould)f(b)r(e)h(only)f(187)f(megabits/sec,)j(far)d(b)r(elo)n(w) 2010 4967 y(that)28 b(obtained)f(with)h(Jaguar.)2110 5101 y(These)g(results)g(clearly)g(sho)n(w)g(the)h(p)r(erformance)f(b)r (en-)2010 5201 y(e\014t)38 b(of)g(the)h(Jaguar)c(approac)n(h.)66 b(VIA)39 b(comm)n(unication)2010 5300 y(requires)21 b(sev)n(eral)g (\014ne-grained)h(manipulations)g(of)h(NI)g(re-)2010 5400 y(sources)30 b(\(do)r(orb)r(ells)g(and)h(descriptor)f(queues\))h (p)r(er)f(mes-)p eop %%Page: 9 9 9 8 bop 0 83 a Fp(sage,)40 b(for)f(whic)n(h)f(the)i(cost)e(of)h(the)g (nativ)n(e)f(co)r(de)h(in)n(ter-)0 183 y(face)30 b(w)n(ould)g(b)r(e)h (prohibitiv)n(e.)45 b(F)-7 b(urthermore,)30 b(the)h(use)f(of)0 282 y(Jaguar)19 b(External)h(Ob)5 b(jects)21 b(pro)n(vides)f(a)h(thin)h (in)n(terface)e(to)0 382 y(VIA)25 b(pac)n(k)n(et)f(bu\013ers,)h (enabling)g(zero-cop)n(y)d(comm)n(unica-)0 482 y(tion.)0 801 y Fl(5)112 b(Pre-Serialized)36 b(Ob)6 b(jects)100 1004 y Fp(JaguarVIA)40 b(allo)n(ws)g(arbitrary)g(sequences)h(of)g(b)n (ytes)0 1104 y(to)59 b(b)r(e)h(transferred)e(o)n(v)n(er)f(the)j(net)n (w)n(ork,)66 b(using)59 b(the)0 1204 y Fb(VIA)p 137 1204 27 4 v 30 w(Databuffer)16 b Fp(class)k(to)g(represen)n(t)f(a)h (registered)f(com-)0 1303 y(m)n(unication)28 b(bu\013er.)39 b(The)28 b(metho)r(ds)h(on)f(this)g(class)f(treat)0 1403 y(the)f(bu\013er)g(as)e(a)h(simple)h(arra)n(y;)e(ho)n(w)n(ev)n(er,)g (it)i(is)f(desirable)0 1502 y(to)d(allo)n(w)f(more)h(structured)f(Ja)n (v)-5 b(a)21 b(ob)5 b(jects)22 b(to)g(b)r(e)h(comm)n(u-)0 1602 y(nicated)28 b(o)n(v)n(er)d(VIA.)100 1703 y(The)41 b(traditional)f(approac)n(h)f(to)i(comm)n(unicating)f(or)0 1803 y(storing)29 b(Ja)n(v)-5 b(a)28 b(ob)5 b(jects)30 b(is)g(to)g(use)g(Ja)n(v)-5 b(a)28 b(ob)5 b(ject)30 b(serializa-)0 1902 y(tion,)45 b(whic)n(h)c(writes)g(out)g(the)g(state)g(of)g(a)g(set) g(of)g(Ja)n(v)-5 b(a)0 2002 y(ob)5 b(jects)35 b(as)g(a)f(string)h(of)g (b)n(ytes.)60 b(Ja)n(v)-5 b(a)34 b(ob)5 b(jects)35 b(ma)n(y)g(b)r(e)0 2102 y(later)j Fk(r)l(e)l(c)l(over)l(e)l(d)h Fp(from)g(this)g(string)f (of)g(b)n(ytes,)k(meaning)0 2201 y(that)36 b(the)h(b)n(ytes)f(are)f (retriev)n(ed)g(from)h(the)h(disk)f(or)f(net-)0 2301 y(w)n(ork)26 b(and)i(con)n(v)n(erted)e(in)n(to)h(a)g(set)h(of)f(new)h (Ja)n(v)-5 b(a)26 b(ob)5 b(jects.)100 2402 y(Standard)41 b(implemen)n(tations)g(of)h(Ja)n(v)-5 b(a)40 b(serialization)0 2501 y(are)21 b(quite)i(costly)-7 b(,)23 b(although)f(alternativ)n(es)f (ha)n(v)n(e)g(b)r(een)i(de-)0 2601 y(v)n(elop)r(ed)e([14)o(].)35 b(These)21 b(alternativ)n(es,)g(ho)n(w)n(ev)n(er,)g(rely)g(up)r(on)0 2701 y(making)28 b(a)h(cop)n(y)f(of)g(the)i(data)e(con)n(tained)g (within)i(a)e(Ja)n(v)-5 b(a)0 2800 y(ob)5 b(ject)26 b(and)f(all)h(ob)5 b(jects)25 b(referred)f(to)i(b)n(y)g(it.)36 b(E\016cien)n(t)26 b(se-)0 2900 y(rialization)e(is)h(the)h(k)n(ey)e(problem)h(to)g(o)n(v)n (ercome)e(in)j(imple-)0 3000 y(men)n(ting)g(high-p)r(erformance)e(comm) n(unication)i(and)f(p)r(er-)0 3099 y(sistence)40 b(mo)r(dels)f(in)h(Ja) n(v)-5 b(a,)42 b(suc)n(h)e(as)f(Remote)h(Metho)r(d)0 3199 y(In)n(v)n(o)r(cation)26 b([10)o(].)100 3300 y(A)48 b(sp)r(ecial)g(use)g(of)h(Jaguar)d(co)r(de)i(mappings)g(is)g(to)0 3399 y(implemen)n(t)e Fk(Pr)l(e-serialize)l(d)i(Obje)l(cts)p Fp(,)h(or)44 b(PSOs.)89 b(Ab-)0 3499 y(stractly)-7 b(,)43 b(a)c(PSO)h(can)g(b)r(e)g(though)n(t)g(of)g(as)g(a)g(Ja)n(v)-5 b(a)39 b(ob-)0 3599 y(ject)25 b(for)g(whic)n(h)f(the)i(memory)e (represen)n(tation)f(is)i(already)0 3698 y(serialized.)48 b(PSOs)31 b(eliminate)h(the)g(cop)n(y)f(and)g(reference-)0 3798 y(tra)n(v)n(ersal)j(steps)j(in)g(serialization)e(and)i (de-serialization)0 3898 y(b)n(y)i(requiring)f(that)h(the)h(ob)5 b(ject)38 b(b)r(e)i(stored)e(in)i(a)e(\\pre-)0 3997 y(pac)n(k)-5 b(aged")36 b(form,)k(ready)d(for)g(storage)f(or)h(comm)n(unica-)0 4097 y(tion.)f(Sending)26 b(the)g(PSO)f(o)n(v)n(er)f(a)h(comm)n (unications)g(link,)0 4196 y(therefore,)c(requires)d(nothing)i(more)f (than)h(directly)f(trans-)0 4296 y(mitting)32 b(the)g(pre-serialized)d (ob)5 b(ject)31 b(bu\013er)h(in)g(memory)-7 b(.)0 4396 y(On)29 b(the)h(receiv)n(er,)f(the)h(bu\013er)f(in)n(to)h(whic)n(h)f (data)g(w)n(as)g(re-)0 4495 y(ceiv)n(ed)c(need)h(only)f(b)r(e)h(p)r (oin)n(ted)f(to)h(b)n(y)f(a)g(new)g(PSO)g(refer-)0 4595 y(ence.)0 4798 y Fo(5.1)105 b(PSO)35 b(Implemen)m(tation)100 5001 y Fp(PSOs)77 b(are)h(implemen)n(ted)h(through)e(sp)r(ecialized)0 5101 y(Jaguar)40 b(co)r(de)j(mappings)f(whic)n(h)g(recognize)f Fb(putfield)0 5201 y Fp(and)60 b Fb(getfield)d Fp(accesses)h(to)i(the)h (ob)5 b(ject)59 b(in)i(ques-)0 5300 y(tion,)49 b(marshaling)43 b(ob)5 b(ject)45 b(data)f(in)n(to)g(and)h(out)f(of)h(its)0 5400 y(pre-serialized)k(form.)107 b(A)n(tomic)51 b(\014elds)g(\()p Fb(byte)p Fp(,)56 b Fb(long)p Fp(,)2010 83 y(and)40 b(so)f(forth\))i (are)e(stored)g(using)h(a)g(simple)g(mac)n(hine-)2010 183 y(indep)r(enden)n(t)f(represen)n(tation.)67 b(The)38 b(p)r(osition)g(of)g(eac)n(h)2010 282 y(\014eld)43 b(within)h(the)f (PSO)f(bu\013er)h(region)f(is)h(determined)2010 382 y(in)38 b(a)f(manner)f(similar)h(to)g(that)h(of)f(a)g(C)h Fb(struct)p Fp(:)54 b(eac)n(h)2010 482 y(\014eld)21 b(is)f(stored)f(at)i(a)f(lo)r (cation)f(that)i(main)n(tains)f(alignmen)n(t)2010 581 y(constrain)n(ts)30 b(on)g(common)h(arc)n(hitectures)f(\(for)g (example,)2010 681 y(that)c(a)g(32-bit)g(v)-5 b(alue)26 b(m)n(ust)g(b)r(e)h(stored)e(on)h(a)g(32-bit)f(w)n(ord)2010 780 y(b)r(oundary\).)2110 989 y(Figure)42 b(6)h(sho)n(ws)f(co)r(de)i (for)e(a)h(simple)h(user-de\014ned)2010 1088 y(PSO)g(t)n(yp)r(e)g(and)h (the)g(memory)e(la)n(y)n(out)h(of)g(three)g(suc)n(h)2010 1188 y(PSOs)27 b(with)h(references)e(b)r(et)n(w)n(een)i(them.)2110 1397 y(Ob)5 b(ject)32 b(references)g(are)g(handled)h(b)n(y)f(requiring) g(that)2010 1496 y(eac)n(h)37 b(PSO)g(ha)n(v)n(e)f(an)h(asso)r(ciated)f Fk(c)l(ontainer)p Fp(,)41 b(a)c(Jaguar)2010 1596 y(External)26 b(Ob)5 b(ject)28 b(acting)f(as)g(the)h(bac)n(king)f(store)g(for)g(the) 2010 1695 y(ob)5 b(ject's)42 b(pre-serialized)f(form.)82 b(Multiple)44 b(PSOs)e(ma)n(y)2010 1795 y(share)g(the)h(same)g(con)n (tainer,)j(and)c(con)n(tainers)g(can)h(b)r(e)2010 1895 y(nested.)37 b(\(The)27 b(JaguarVIA)f Fb(VIA)p 3068 1895 V 30 w(Databuffer)d Fp(class)j(im-)2010 1994 y(plemen)n(ts)45 b(a)f(PSO)f(con)n(tainer,)48 b(allo)n(wing)43 b(PSOs)g(to)i(b)r(e)2010 2094 y(stored)38 b(within)h(VIA)g(comm)n(unication)f(bu\013ers.\))70 b(Eac)n(h)2010 2194 y(PSO)25 b(can)g(b)r(e)h(though)n(t)g(of)g(as)f(o)r (ccup)n(ying)g(a)g(certain)g(lo)r(ca-)2010 2293 y(tion)32 b(in)h(its)f(con)n(tainer,)g(with)h(an)f(asso)r(ciated)f(o\013set)h (and)2010 2393 y(size.)50 b(The)32 b(PSO's)f(con)n(tainer)f(and)i (o\013set)g(are)f(stored)g(as)2010 2492 y(priv)-5 b(ate)26 b(\014elds)h(in)g(the)h(PSO)e(itself,)h(and)g(are)f(accessed)f(b)n(y) 2010 2592 y(the)j(Jaguar)d(co)r(de)j(mappings)f(whic)n(h)h(implemen)n (t)g(PSOs.)2110 2801 y(When)35 b(a)g(reference)f(to)h(another)f(PSO)g (is)h(stored)f(us-)2010 2900 y(ing)41 b(the)i Fb(putfield)38 b Fp(b)n(yteco)r(de,)45 b(if)d(the)g(t)n(w)n(o)f(PSOs)g(are)2010 3000 y(within)31 b(the)h(same)e(con)n(tainer,)g(then)i(the)f (referenced)f(ob-)2010 3099 y(ject's)22 b(o\013set)f(in)n(to)h(that)f (con)n(tainer)f(is)i(stored.)34 b(Otherwise,)2010 3199 y(a)23 b(sp)r(ecial)f(n)n(ull)i(v)-5 b(alue)23 b(is)g(stored,)g (indicating)g(that)g(the)h(ob-)2010 3299 y(ject)h(reference)e(cannot)h (b)r(e)h(reco)n(v)n(ered)c(externally)j(to)g(this)2010 3398 y(JVM.)31 b(Note,)h(ho)n(w)n(ev)n(er,)e(that)h(references)f(to)g (PSOs)g(out-)2010 3498 y(side)37 b(of)h(the)g(con)n(tainer)e(and)h(to)h (non-PSO)e(ob)5 b(jects)37 b(are)2010 3598 y(p)r(ermitted;)23 b(suc)n(h)18 b(references)g(are)f(stored)h(within)i(the)f(\014eld)2010 3697 y(slot)34 b(of)h(the)g(Ja)n(v)-5 b(a)33 b(ob)5 b(ject)34 b(corresp)r(onding)e(to)j(the)g(PSO.)2010 3797 y(Ho)n(w)n(ev)n(er,)24 b(these)g(references)g(are)g(unreco)n(v)n(erable)e(outside)2010 3896 y(of)g(this)h(JVM)f(\(e.g.,)h(b)n(y)f(the)h(receiv)n(er)d(of)j(a)e (PSO)h(sen)n(t)g(o)n(v)n(er)2010 3996 y(a)27 b(comm)n(unications)g(c)n (hannel\).)2110 4204 y(The)j(\014rst)h(time)g(an)f(ob)5 b(ject)30 b(reference)g(is)g(read)g(\(using)2010 4304 y(the)f Fb(getfield)c Fp(b)n(yteco)r(de\),)j(a)g(new)g(Ja)n(v)-5 b(a)27 b(PSO)g(ob)5 b(ject)28 b(is)2010 4404 y(created)d(whic)n(h)i (maps)e(on)n(to)h(the)g(con)n(tainer)f(at)h(the)h(giv)n(en)2010 4503 y(o\013set.)54 b(If)33 b(the)h(stored)e(o\013set)i(is)f(n)n(ull)g (or)f(outside)h(of)h(the)2010 4603 y(range)19 b(of)h(the)h(con)n (tainer,)f(the)h(sp)r(ecial)f(Ja)n(v)-5 b(a)18 b Fb(null)h Fp(v)-5 b(alue)20 b(is)2010 4703 y(returned.)50 b(Subsequen)n(t)32 b Fb(getfield)c Fp(accesses)j(will)h(yield)2010 4802 y(the)38 b(PSO)f(reference)g(created)g(during)g(the)h(original)e(ac-) 2010 4902 y(cess,)23 b(whic)n(h)h(is)f(stored)f(in)h(the)h(actual)e(Ja) n(v)-5 b(a)22 b(ob)5 b(ject)23 b(corre-)2010 5001 y(sp)r(onding)d(to)f (the)i(PSO.)e(Th)n(us,)i(ob)5 b(ject)20 b(references)e(within)2010 5101 y(a)24 b(PSO)f(are)g(resolv)n(ed)g(\\lazily)-7 b(,")24 b(that)g(is,)h(only)f(up)r(on)g(their)2010 5201 y(\014rst)j(use.)36 b(This)27 b(has)f(the)i(adv)-5 b(an)n(tage)25 b(that)i(if)h(a)e (reference)2010 5300 y(within)i(a)f(receiv)n(ed)f(PSO)h(con)n(tainer)f (is)h(nev)n(er)f(tra)n(v)n(ersed,)2010 5400 y(a)h(Ja)n(v)-5 b(a)26 b(ob)5 b(ject)28 b(reference)f(will)g(nev)n(er)g(b)r(e)h (created)f(for)g(it.)p eop %%Page: 10 10 10 9 bop 138 349 a Fc(public)41 b(class)f(MyObject)h(extends)g(PSO)f({) 217 441 y(public)g(static)h(int)f(getPSOSize\(\))i({)295 532 y(/*)e(Jaguar)g(redirected)i(*/)217 623 y(})217 715 y(/*)d(Fields)i(*/)217 806 y(public)f(int)g(someInt;)277 b(//)39 b(Offset)i(0)217 897 y(public)f(byte)g(someByte;)199 b(//)39 b(Offset)i(4)217 989 y(public)f(MyObject)h(someRef;)81 b(//)39 b(Offset)i(8)138 1080 y(})1786 b @beginspecial 0 @llx 0 @lly 333 @urx 186 @ury 2089 @rwi 1296 @rhi @setspecial %%BeginDocument: ./figures/pso-ex.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: pso-ex.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Tue Aug 3 18:40:49 1999 %%For: mdw@bhikku (Matt Welsh) %%Orientation: Portrait %%BoundingBox: 0 0 333 186 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -15.0 199.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 4307 m -1000 -1000 l 6797 -1000 l 6797 4307 l cp clip 0.06000 0.06000 sc /Helvetica-Narrow-BoldOblique ff 210.00 scf sf 1395 3120 m gs 1 -1 sc 90.0 rot (Obj3) col1 sh gr /Helvetica-Narrow-BoldOblique ff 210.00 scf sf 1380 2220 m gs 1 -1 sc 90.0 rot (Obj2) col1 sh gr /Helvetica-Narrow-BoldOblique ff 210.00 scf sf 1380 1320 m gs 1 -1 sc 90.0 rot (Obj1) col1 sh gr /Courier-Oblique ff 180.00 scf sf 3585 765 m gs 1 -1 sc (someInt) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3585 1080 m gs 1 -1 sc (someByte) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3600 1365 m gs 1 -1 sc (someRef) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3585 1695 m gs 1 -1 sc (someInt) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3585 2010 m gs 1 -1 sc (someByte) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3600 2295 m gs 1 -1 sc (someRef) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3585 2580 m gs 1 -1 sc (someInt) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3585 2895 m gs 1 -1 sc (someByte) col0 sh gr /Courier-Oblique ff 180.00 scf sf 3600 3180 m gs 1 -1 sc (someRef) col0 sh gr % Polyline 15.000 slw n 4830 2670 m 5160 2670 l gs col0 s gr % Polyline n 4905 2730 m 5100 2730 l gs col0 s gr % Polyline n 4950 2790 m 5040 2790 l gs col0 s gr % Polyline gs clippath 5055 2369 m 4995 2609 l 4935 2369 l 4935 2670 l 5055 2670 l cp clip n 4455 2220 m 4995 2220 l 4995 2640 l gs col4 s gr gr % arrowhead n 5055 2369 m 4995 2609 l 4935 2369 l 4995 2369 l 5055 2369 l cp gs col4 1.00 shd ef gr col4 s % Polyline n 1125 1470 m 3495 1470 l gs col0 s gr % Polyline n 1110 525 m 3510 525 l 3510 3285 l 1110 3285 l cp gs col0 s gr % Polyline n 1125 2370 m 3495 2370 l gs col0 s gr % Polyline gs clippath 4696 797 m 4455 737 l 4696 677 l 4395 677 l 4395 797 l cp clip n 4455 3120 m 5775 3122 l 5775 737 l 4425 737 l gs col4 s gr gr % arrowhead n 4696 797 m 4455 737 l 4696 677 l 4696 737 l 4696 797 l cp gs col4 1.00 shd ef gr col4 s % Polyline gs clippath 719 2445 m 959 2505 l 719 2565 l 1020 2565 l 1020 2445 l cp clip n 1042 1312 m 510 1312 l 510 2505 l 990 2505 l gs col4 s gr gr % arrowhead n 719 2445 m 959 2505 l 719 2565 l 719 2505 l 719 2445 l cp gs col4 1.00 shd ef gr col4 s /Courier-Bold ff 270.00 scf sf 1530 825 m gs 1 -1 sc (38 7f 00 00) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 1725 m gs 1 -1 sc (38 80 00 00) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 2025 m gs 1 -1 sc (43 00 00 00) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 2325 m gs 1 -1 sc (ff ff ff ff) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 2625 m gs 1 -1 sc (38 81 00 00) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 2925 m gs 1 -1 sc (44 00 00 00) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 3225 m gs 1 -1 sc (00 00 00 00) col0 sh gr /Helvetica-Narrow-BoldOblique ff 210.00 scf sf 1635 390 m gs 1 -1 sc (Container Data) col1 sh gr /Courier-Bold ff 270.00 scf sf 1530 1125 m gs 1 -1 sc (42 00 00 00) col0 sh gr /Courier-Bold ff 270.00 scf sf 1530 1425 m gs 1 -1 sc (24 00 00 00) col0 sh gr /Courier ff 180.00 scf sf 405 2895 m gs 1 -1 sc 90.0 rot (Obj1.someRef = Obj3;) col0 sh gr /Courier ff 180.00 scf sf 5655 2955 m gs 1 -1 sc 90.0 rot (Obj3.someRef = Obj1;) col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1006 1346 a Fp(Figure)27 b(6:)37 b Fk(A)n(n)29 b(example)h(PSO)f(and)i(its)e(memory)i(layout.)0 1611 y Fo(5.2)105 b(Limitations)100 1823 y Fp(Pre-serialized)41 b(Ob)5 b(jects)43 b(ha)n(v)n(e)f(sev)n(eral)g(limitations.)0 1923 y(The)54 b(\014rst)f(is)h(that)g(arbitrary)d(Ja)n(v)-5 b(a)52 b(ob)5 b(jects)54 b(cannot)0 2023 y(b)r(e)44 b(represen)n(ted)f (as)h(PSOs;)51 b(the)44 b(implemen)n(tation)g(de-)0 2122 y(p)r(ends)59 b(up)r(on)h(the)f(use)g(of)g(Jaguar)e(co)r(de)i(mappings) 0 2222 y(for)50 b Fb(putfield)p Fp(/)p Fb(getfiel)o(d)44 b Fp(op)r(erations)49 b(on)h(particular)0 2321 y(classes)22 b(\(in)i(this)g(case,)f(an)n(y)g(sub)r(classes)f(of)i Fb(Jaguar.PSO)p Fp(\).)0 2421 y(It)c(w)n(ould)g(b)r(e)g(p)r(ossible,)i (ho)n(w)n(ev)n(er,)d(to)h(in)n(tegrate)f(the)h(use)g(of)0 2521 y(a)27 b(standard)g(Ja)n(v)-5 b(a)27 b(ob)5 b(ject)27 b(serializer)f(with)j(PSOs,)e(allo)n(w-)0 2620 y(ing)37 b(those)f(p)r(ortions)h(of)g(the)g(ob)5 b(ject)37 b(not)g (pre-serialized)0 2720 y(b)n(y)g(Jaguar)f(to)h(b)r(e)h(serialized)e (and)i(deserialized)e(in)i(the)0 2820 y(standard)27 b(w)n(a)n(y)f (\(alb)r(eit)i(at)g(higher)f(cost\).)100 2924 y(A)43 b(second)g(limitation)h(is)f(that)g(only)g(atomic)g(t)n(yp)r(es)0 3023 y(and)29 b(references)e(to)i(other)f(PSOs)g(within)h(the)h(same)e (con-)0 3123 y(tainer)37 b(are)g(reco)n(v)n(erable)d(from)j(a)g(PSO's)g (memory)g(rep-)0 3222 y(resen)n(tation.)88 b(This)45 b(is)g(not)g(as)f(limiting)h(as)g(it)g(migh)n(t)0 3322 y(seem.)i(First,)31 b(Ja)n(v)-5 b(a)30 b(arra)n(ys)e(can)j(b)r(e)g(sim) n(ulated)g(through)0 3422 y(a)37 b(generic)e Fb(PSOArray)f Fp(class)i(whic)n(h)h(p)r(ermits)g(arra)n(y-lik)n(e)0 3521 y(op)r(erations)c(on)g(a)h(con)n(tainer)f(using)g(metho)r(d)i (calls)e(suc)n(h)0 3621 y(as)j Fb(readByte)e Fp(and)j Fb(writeInt)p Fp(.)62 b(Secondly)-7 b(,)40 b(w)n(e)c(b)r(eliev)n(e)0 3721 y(that)j(the)g(e\016ciency)f(a\013orded)g(b)n(y)g(PSOs)f(will)i (mak)n(e)f(it)0 3820 y(w)n(orth)n(while)27 b(for)g(programmers)d(to)k (manage)e(PSO)h(cross-)0 3920 y(references)33 b(within)i(the)f(same)f (con)n(tainer.)55 b(Finding)35 b(the)0 4019 y(righ)n(t)k(balance)g(of)h (programming)e(generalit)n(y)g(and)i(e\016-)0 4119 y(ciency)27 b(in)h(this)g(case)f(is)g(an)h(op)r(en)f(researc)n(h)f(issue.)1602 4089 y Fj(4)100 4223 y Fp(The)40 b(curren)n(t)g(implemen)n(tation)h(of) g(PSOs)f(do)r(es)g(not)0 4323 y(enco)r(de)64 b(an)n(y)f(t)n(yp)r(e)i (information)e(in)i(the)f(serialized)0 4422 y(PSOBu\013er.)52 b(Hence,)35 b(it)e(is)g(necessary)e(for)i(applications)0 4522 y(to)23 b(determine)h(b)n(y)f(con)n(v)n(en)n(tion)f(the)i(t)n(yp)r (e)g(of)f(the)h(PSO)f(ob-)0 4622 y(jects)g(to)f(map)h(on)n(to)e(a)h (giv)n(en)g(PSOBu\013er.)34 b(A)23 b(straigh)n(tfor-)0 4721 y(w)n(ard)c(extension)h(to)h(our)e(protot)n(yp)r(e)h(w)n(ould)g(b) r(e)g(to)h(include)0 4821 y(t)n(yp)r(e)j(information)g(in)h(the)f (PSOBu\013er,)g(in)h(the)f(form)g(of)g(a)0 4921 y(string)29 b(sp)r(ecifying)h(a)g(class)f(name.)44 b(Note)30 b(that)g(standard)p 0 5007 744 4 v 92 5061 a Fi(4)127 5085 y Fh(Supp)r(orting)41 b(cross-con)n(tainer)f(PSO)f(references)h(is)f(feasible,)0 5163 y(but)22 b(unsupp)r(orted)i(b)n(y)e(our)f(curren)n(t)h(protot)n (yp)r(e.)33 b(W)-6 b(e)22 b(ha)n(v)n(e)h(decided)0 5242 y(to)d(retain)g(the)g(simplicit)n(y)e(and)i(p)r(erformance)f(of)g(this) h(design)g(rather)0 5321 y(than)k(building)e(a)h(more)f(general,)h(and) g(less)f(e\016cien)n(t,)i(implemen)n(ta-)0 5400 y(tion.)2010 1611 y Fp(Ja)n(v)-5 b(a)25 b(ob)5 b(ject)25 b(serialization)f(dep)r (ends)j(up)r(on)f(applications)2010 1710 y(to)h(correctly)f(in)n (terpret)h(the)g(t)n(yp)r(e)h(information)e(enco)r(ded)2010 1810 y(in)36 b(an)f(ob)5 b(ject's)35 b(serialized)g(form,)i(and)e(as)g (suc)n(h)h(cannot)2010 1910 y(enforce)g(the)g(assignmen)n(t)g(of)g (deserialized)f(data)h(to)h(the)2010 2009 y(correct)18 b(t)n(yp)r(e.)34 b(In)20 b(this)g(regard)d(PSOs)i(main)n(tain)g(the)h (same)2010 2109 y(t)n(yp)r(e)28 b(guaran)n(tees)d(as)i(standard)g(Ja)n (v)-5 b(a)26 b(serialization.)2010 2309 y Fo(5.3)105 b(PSO)35 b(P)m(erformance)2110 2510 y Fp(W)-7 b(e)44 b(measure)f(the)h(p)r(erformance)e(of)i(Pre-Serialized)2010 2609 y(Ob)5 b(jects)37 b(in)h(three)g(w)n(a)n(ys:)56 b(a)37 b(set)h(of)g(microb)r(enc)n(hmarks)2010 2709 y(sho)n(wing)d (basic)h(p)r(erformance,)h(a)f(b)r(enc)n(hmark)g(compar-)2010 2809 y(ing)28 b(PSOs)e(to)i(ob)5 b(ject)27 b(serialization)g(for)g (comm)n(unication)2010 2908 y(o)n(v)n(er)g(VIA,)j(and)f(a)g(b)r(enc)n (hmark)g(demonstrating)f(the)h(use)2010 3008 y(of)f(PSOs)e(for)h (high-p)r(erformance)f(disk)i(I/O.)p 2010 3132 1604 4 v 2008 3224 4 92 v 2060 3196 a Fe(Benc)n(hmark)p 3167 3224 V 719 w(Time)p 3612 3224 V 2010 3227 1604 4 v 2008 3318 4 92 v 2060 3291 a Fn(Create)e(PSO)g(ob)t(ject)p 3167 3318 V 524 w(9.24)i Fd(\026)p Fn(sec)p 3612 3318 V 2008 3410 V 2060 3382 a(Reco)n(v)n(er)d(PSO)g(reference)p 3167 3410 V 393 w(8.9)i Fd(\026)p Fn(sec)p 3612 3410 V 2008 3501 V 2060 3474 a(F)-6 b(ollo)n(w)27 b(reco)n(v)n(ered)f(PSO)f (reference)p 3167 3501 V 100 w(0.305)j Fd(\026)p Fn(sec)p 3612 3501 V 2010 3504 1604 4 v 2008 3596 4 92 v 2060 3568 a(Assign)e(PSO)f Fc(int)i Fn(\014eld)p 3167 3596 V 447 w(0.033)h Fd(\026)p Fn(sec)p 3612 3596 V 2008 3687 V 2060 3660 a(Assign)e(Ja)n(v)l(a)g Fc(int)g Fn(\014eld)p 3167 3687 V 452 w(0.023)i Fd(\026)p Fn(sec)p 3612 3687 V 2010 3690 1604 4 v 2008 3782 4 92 v 2060 3754 a(W)-6 b(rite)25 b Fc(int)40 b(PSOArray)28 b Fn(elemen)n(t)p 3167 3782 V 189 w(0.053)g Fd(\026)p Fn(sec)p 3612 3782 V 2008 3873 V 2060 3846 a(Read)d Fc(int)40 b(PSOArray)27 b Fn(elemen)n(t)p 3167 3873 V 206 w(0.049)h Fd(\026)p Fn(sec)p 3612 3873 V 2008 3964 V 2060 3937 a(W)-6 b(rite)25 b Fc(int)i Fn(arra)n(y)e(elemen)n(t)p 3167 3964 V 342 w(0.041)j Fd(\026)p Fn(sec)p 3612 3964 V 2008 4056 V 2060 4028 a(Read)d Fc(int)h Fn(arra)n(y)g(elemen)n(t)p 3167 4056 V 358 w(0.043)i Fd(\026)p Fn(sec)p 3612 4056 V 2010 4059 1604 4 v 2042 4208 a Fp(Figure)f(7:)36 b Fk(Pr)l(e-Serialize)l(d)c(Obje)l(ct)d(micr)l(ob)l(enchmarks.)2110 4403 y Fp(Figure)i(7)g(sho)n(ws)g(results)g(for)g(a)g(simple)h(microb)r (enc)n(h-)2010 4503 y(mark)40 b(of)h(Pre-serialized)d(Ob)5 b(ject)41 b(p)r(erformance.)75 b(This)2010 4603 y(b)r(enc)n(hmark)26 b(creates)h(a)f(link)n(ed)h(list)h(of)f(ob)5 b(jects,)27 b(with)h(the)2010 4702 y(same)e(structure)h(as)f Fb(MyObject)e Fp(sho)n(wn)i(in)h(Figure)f(6,)h(\014ll-)2010 4802 y(ing)g(a)h (one-megab)n(yte)d(con)n(tainer.)2110 4902 y(First,)34 b(the)f(b)r(enc)n(hmark)f(creates)f(eac)n(h)h(ob)5 b(ject)33 b(in)g(the)2010 5001 y(list)48 b(and)g(\014lls)f(in)h(eac)n(h)f (\014eld)h(in)g(the)h(ob)5 b(ject.)97 b(Next,)2010 5101 y(reco)n(v)n(ery)40 b(of)i(the)g(list)h(from)f(the)h(pre-serialized)d (bu\013er)2010 5201 y(is)d(sim)n(ulated)g(b)n(y)h(\\forgetting")d(the)j (original)e(list)h(head)2010 5300 y(and)28 b(mapping)f(a)h(new)g(PSO)f (on)n(to)g(the)h(b)r(eginning)g(of)g(the)2010 5400 y(bu\013er.)38 b(Eac)n(h)27 b(list)i(en)n(try)e(is)h(tra)n(v)n(ersed)e(b)n(y)i(follo)n (wing)f(the)p eop %%Page: 11 11 11 10 bop 180 968 a @beginspecial 0 @llx 0 @lly 524 @urx 298 @ury 2089 @rwi 1161 @rhi @setspecial %%BeginDocument: ./figures/pso-via-bench.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: pso-via-bench.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Tue Aug 3 18:31:09 1999 %%For: mdw@bhikku (Matt Welsh) %%Orientation: Portrait %%BoundingBox: 0 0 524 298 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -12.0 323.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Times-Roman /Times-Roman-iso isovec ReEncode /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6369 m -1000 -1000 l 9924 -1000 l 9924 6369 l cp clip 0.06000 0.06000 sc % Polyline 7.500 slw n 7140 4001 m 7669 4001 l gs col1 s gr % Polyline n 7351 4001 m 7457 4001 l gs col1 s gr % Polyline n 7404 4054 m 7404 3948 l gs col1 s gr % Polyline n 7140 4275 m 7669 4275 l gs col0 s gr % Polyline n 7351 4275 m 7404 4327 l 7457 4275 l 7404 4222 l 7351 4275 l cp gs col0 s gr % Polyline n 4665 1628 m 5194 1628 l gs col4 s gr % Polyline n 4876 1680 m 4982 1680 l 4982 1575 l 4876 1575 l 4876 1680 l cp gs col4 s gr % Polyline [15 60] 60 sd n 1279 4870 m 8705 4870 l gs col0 s gr [] 0 sd % Polyline n 1279 4870 m 1386 4870 l gs col0 s gr % Polyline n 8705 4870 m 8598 4870 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 4138 m 8705 4138 l gs col0 s gr [] 0 sd % Polyline n 1279 4138 m 1386 4138 l gs col0 s gr % Polyline n 8705 4138 m 8598 4138 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 3405 m 8705 3405 l gs col0 s gr [] 0 sd % Polyline n 1279 3405 m 1386 3405 l gs col0 s gr % Polyline n 8705 3405 m 8598 3405 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 2674 m 8705 2674 l gs col0 s gr [] 0 sd % Polyline n 1279 2674 m 1386 2674 l gs col0 s gr % Polyline n 8705 2674 m 8598 2674 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 1943 m 8705 1943 l gs col0 s gr [] 0 sd % Polyline n 1279 1943 m 1386 1943 l gs col0 s gr % Polyline n 8705 1943 m 8598 1943 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 1211 m 8705 1211 l gs col0 s gr [] 0 sd % Polyline n 1279 1211 m 1386 1211 l gs col0 s gr % Polyline n 8705 1211 m 8598 1211 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 479 m 8705 479 l gs col0 s gr [] 0 sd % Polyline n 1279 479 m 1386 479 l gs col0 s gr % Polyline n 8705 479 m 8598 479 l gs col0 s gr % Polyline [15 60] 60 sd n 1279 4870 m 1279 479 l gs col0 s gr [] 0 sd % Polyline n 1279 4870 m 1279 4763 l gs col0 s gr % Polyline n 1279 479 m 1279 586 l gs col0 s gr % Polyline [15 60] 60 sd n 2104 4870 m 2104 479 l gs col0 s gr [] 0 sd % Polyline n 2104 4870 m 2104 4763 l gs col0 s gr % Polyline n 2104 479 m 2104 586 l gs col0 s gr % Polyline [15 60] 60 sd n 2929 4870 m 2929 479 l gs col0 s gr [] 0 sd % Polyline n 2929 4870 m 2929 4763 l gs col0 s gr % Polyline n 2929 479 m 2929 586 l gs col0 s gr % Polyline [15 60] 60 sd n 3754 4870 m 3754 479 l gs col0 s gr [] 0 sd % Polyline n 3754 4870 m 3754 4763 l gs col0 s gr % Polyline n 3754 479 m 3754 586 l gs col0 s gr % Polyline [15 60] 60 sd n 4580 4870 m 4580 479 l gs col0 s gr [] 0 sd % Polyline n 4580 4870 m 4580 4763 l gs col0 s gr % Polyline n 4580 479 m 4580 586 l gs col0 s gr % Polyline [15 60] 60 sd n 5404 4870 m 5404 479 l gs col0 s gr [] 0 sd % Polyline n 5404 4870 m 5404 4763 l gs col0 s gr % Polyline n 5404 479 m 5404 586 l gs col0 s gr % Polyline [15 60] 60 sd n 6229 4870 m 6225 525 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 6229 586 m 6229 479 l gs col0 s gr [] 0 sd % Polyline n 6229 4870 m 6229 4763 l gs col0 s gr % Polyline n 6229 479 m 6229 586 l gs col0 s gr % Polyline [15 60] 60 sd n 7054 4870 m 7050 540 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 7054 586 m 7054 479 l gs col0 s gr [] 0 sd % Polyline n 7054 4870 m 7054 4763 l gs col0 s gr % Polyline n 7054 479 m 7054 586 l gs col0 s gr % Polyline [15 60] 60 sd n 7880 4870 m 7875 540 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 7880 586 m 7880 479 l gs col0 s gr [] 0 sd % Polyline n 7880 4870 m 7880 4763 l gs col0 s gr % Polyline n 7880 479 m 7880 586 l gs col0 s gr % Polyline [15 60] 60 sd n 8705 4870 m 8705 479 l gs col0 s gr [] 0 sd % Polyline n 8705 4870 m 8705 4763 l gs col0 s gr % Polyline n 8705 479 m 8705 586 l gs col0 s gr % Polyline n 1279 4870 m 8705 4870 l 8705 479 l 1279 479 l 1279 4870 l cp gs col0 s gr % Polyline n 1332 4858 m 1753 4857 l 2177 4854 l 2599 4852 l 3022 4849 l 3444 4847 l 3866 4843 l 4289 4841 l 4711 4838 l 5134 4835 l 5556 4832 l 5979 4830 l 6402 4827 l 6824 4826 l 7247 4823 l 7669 4820 l gs col0 s gr % Polyline n 1279 4858 m 1332 4911 l 1385 4858 l 1332 4806 l 1279 4858 l cp gs col0 s gr % Polyline n 1328 4858 m 1336 4858 l gs col0 s gr % Polyline n 1700 4857 m 1753 4910 l 1807 4857 l 1753 4804 l 1700 4857 l cp gs col0 s gr % Polyline n 1749 4857 m 1757 4857 l gs col0 s gr % Polyline n 2124 4854 m 2177 4907 l 2230 4854 l 2177 4801 l 2124 4854 l cp gs col0 s gr % Polyline n 2173 4854 m 2181 4854 l gs col0 s gr % Polyline n 2547 4852 m 2599 4904 l 2652 4852 l 2599 4798 l 2547 4852 l cp gs col0 s gr % Polyline n 2595 4852 m 2603 4852 l gs col0 s gr % Polyline n 2970 4849 m 3022 4901 l 3075 4849 l 3022 4796 l 2970 4849 l cp gs col0 s gr % Polyline n 3018 4849 m 3026 4849 l gs col0 s gr % Polyline n 3392 4847 m 3444 4899 l 3497 4847 l 3444 4794 l 3392 4847 l cp gs col0 s gr % Polyline n 3440 4847 m 3448 4847 l gs col0 s gr % Polyline n 3814 4843 m 3866 4896 l 3919 4843 l 3866 4790 l 3814 4843 l cp gs col0 s gr % Polyline n 3862 4843 m 3870 4843 l gs col0 s gr % Polyline n 4237 4841 m 4289 4894 l 4342 4841 l 4289 4788 l 4237 4841 l cp gs col0 s gr % Polyline n 4285 4841 m 4293 4841 l gs col0 s gr % Polyline n 4659 4838 m 4711 4891 l 4764 4838 l 4711 4786 l 4659 4838 l cp gs col0 s gr % Polyline n 4707 4838 m 4715 4838 l gs col0 s gr % Polyline n 5082 4835 m 5134 4888 l 5187 4835 l 5134 4783 l 5082 4835 l cp gs col0 s gr % Polyline n 5130 4835 m 5138 4835 l gs col0 s gr % Polyline n 5504 4832 m 5556 4885 l 5609 4832 l 5556 4780 l 5504 4832 l cp gs col0 s gr % Polyline n 5552 4832 m 5560 4832 l gs col0 s gr % Polyline n 5926 4830 m 5979 4882 l 6031 4830 l 5979 4777 l 5926 4830 l cp gs col0 s gr % Polyline n 5975 4830 m 5983 4830 l gs col0 s gr % Polyline n 6349 4827 m 6402 4879 l 6454 4827 l 6402 4774 l 6349 4827 l cp gs col0 s gr % Polyline n 6398 4827 m 6406 4827 l gs col0 s gr % Polyline n 6771 4826 m 6824 4878 l 6876 4826 l 6824 4773 l 6771 4826 l cp gs col0 s gr % Polyline n 6820 4826 m 6828 4826 l gs col0 s gr % Polyline n 7194 4823 m 7247 4875 l 7299 4823 l 7247 4770 l 7194 4823 l cp gs col0 s gr % Polyline n 7243 4823 m 7251 4823 l gs col0 s gr % Polyline n 7616 4820 m 7669 4873 l 7721 4820 l 7669 4767 l 7616 4820 l cp gs col0 s gr % Polyline n 7665 4820 m 7673 4820 l gs col0 s gr % Polyline n 1286 4860 m 1615 4857 l 1946 4855 l 2276 4854 l 2606 4854 l 2935 4853 l 3266 4852 l 3596 4849 l 3926 4847 l 4257 4847 l 4586 4846 l 4916 4844 l 5245 4843 l 5577 4841 l 5906 4840 l 6236 4838 l 6567 4837 l 6896 4835 l 7227 4834 l 7556 4832 l 7887 4831 l gs col1 s gr % Polyline n 1233 4860 m 1339 4860 l gs col1 s gr % Polyline n 1286 4913 m 1286 4807 l gs col1 s gr % Polyline n 1563 4857 m 1668 4857 l gs col1 s gr % Polyline n 1615 4910 m 1615 4804 l gs col1 s gr % Polyline n 1893 4855 m 1999 4855 l gs col1 s gr % Polyline n 1946 4908 m 1946 4803 l gs col1 s gr % Polyline n 2222 4854 m 2328 4854 l gs col1 s gr % Polyline n 2276 4907 m 2276 4801 l gs col1 s gr % Polyline n 2553 4854 m 2658 4854 l gs col1 s gr % Polyline n 2606 4907 m 2606 4801 l gs col1 s gr % Polyline n 2882 4853 m 2988 4853 l gs col1 s gr % Polyline n 2935 4905 m 2935 4800 l gs col1 s gr % Polyline n 3214 4852 m 3319 4852 l gs col1 s gr % Polyline n 3266 4904 m 3266 4798 l gs col1 s gr % Polyline n 3544 4849 m 3649 4849 l gs col1 s gr % Polyline n 3596 4901 m 3596 4796 l gs col1 s gr % Polyline n 3873 4847 m 3978 4847 l gs col1 s gr % Polyline n 3926 4899 m 3926 4794 l gs col1 s gr % Polyline n 4204 4847 m 4309 4847 l gs col1 s gr % Polyline n 4257 4899 m 4257 4794 l gs col1 s gr % Polyline n 4533 4846 m 4639 4846 l gs col1 s gr % Polyline n 4586 4898 m 4586 4793 l gs col1 s gr % Polyline n 4864 4844 m 4969 4844 l gs col1 s gr % Polyline n 4916 4897 m 4916 4791 l gs col1 s gr % Polyline n 5193 4843 m 5298 4843 l gs col1 s gr % Polyline n 5245 4896 m 5245 4790 l gs col1 s gr % Polyline n 5524 4841 m 5629 4841 l gs col1 s gr % Polyline n 5577 4894 m 5577 4788 l gs col1 s gr % Polyline n 5853 4840 m 5958 4840 l gs col1 s gr % Polyline n 5906 4893 m 5906 4787 l gs col1 s gr % Polyline n 6183 4838 m 6289 4838 l gs col1 s gr % Polyline n 6236 4891 m 6236 4786 l gs col1 s gr % Polyline n 6515 4837 m 6620 4837 l gs col1 s gr % Polyline n 6567 4890 m 6567 4785 l gs col1 s gr % Polyline n 6844 4835 m 6949 4835 l gs col1 s gr % Polyline n 6896 4888 m 6896 4783 l gs col1 s gr % Polyline n 7174 4834 m 7280 4834 l gs col1 s gr % Polyline n 7227 4887 m 7227 4782 l gs col1 s gr % Polyline n 7503 4832 m 7609 4832 l gs col1 s gr % Polyline n 7556 4885 m 7556 4780 l gs col1 s gr % Polyline n 7834 4831 m 7940 4831 l gs col1 s gr % Polyline n 7887 4884 m 7887 4779 l gs col1 s gr % Polyline n 1332 4651 m 1753 4444 l 2177 4194 l 2599 3943 l 3022 3698 l 3444 3450 l 3866 3199 l 4289 2947 l 4711 2691 l 5134 2452 l 5556 2201 l 5979 1953 l 6402 1708 l 6824 1430 l 7247 1194 l 7669 941 l gs col4 s gr % Polyline n 1279 4703 m 1385 4703 l 1385 4597 l 1279 4597 l 1279 4703 l cp gs col4 s gr % Polyline n 1328 4651 m 1336 4651 l gs col4 s gr % Polyline n 1700 4496 m 1807 4496 l 1807 4391 l 1700 4391 l 1700 4496 l cp gs col4 s gr % Polyline n 1749 4444 m 1757 4444 l gs col4 s gr % Polyline n 2124 4247 m 2230 4247 l 2230 4141 l 2124 4141 l 2124 4247 l cp gs col4 s gr % Polyline n 2173 4194 m 2181 4194 l gs col4 s gr % Polyline n 2547 3996 m 2652 3996 l 2652 3891 l 2547 3891 l 2547 3996 l cp gs col4 s gr % Polyline n 2595 3943 m 2603 3943 l gs col4 s gr % Polyline n 2970 3751 m 3075 3751 l 3075 3646 l 2970 3646 l 2970 3751 l cp gs col4 s gr % Polyline n 3018 3698 m 3026 3698 l gs col4 s gr % Polyline n 3392 3503 m 3497 3503 l 3497 3397 l 3392 3397 l 3392 3503 l cp gs col4 s gr % Polyline n 3440 3450 m 3448 3450 l gs col4 s gr % Polyline n 3814 3252 m 3919 3252 l 3919 3146 l 3814 3146 l 3814 3252 l cp gs col4 s gr % Polyline n 3862 3199 m 3870 3199 l gs col4 s gr % Polyline n 4237 2999 m 4342 2999 l 4342 2894 l 4237 2894 l 4237 2999 l cp gs col4 s gr % Polyline n 4285 2947 m 4293 2947 l gs col4 s gr % Polyline n 4659 2744 m 4764 2744 l 4764 2639 l 4659 2639 l 4659 2744 l cp gs col4 s gr % Polyline n 4707 2691 m 4715 2691 l gs col4 s gr % Polyline n 5082 2505 m 5187 2505 l 5187 2399 l 5082 2399 l 5082 2505 l cp gs col4 s gr % Polyline n 5130 2452 m 5138 2452 l gs col4 s gr % Polyline n 5504 2254 m 5609 2254 l 5609 2149 l 5504 2149 l 5504 2254 l cp gs col4 s gr % Polyline n 5552 2201 m 5560 2201 l gs col4 s gr % Polyline n 5926 2006 m 6031 2006 l 6031 1901 l 5926 1901 l 5926 2006 l cp gs col4 s gr % Polyline n 5975 1953 m 5983 1953 l gs col4 s gr % Polyline n 6349 1761 m 6454 1761 l 6454 1655 l 6349 1655 l 6349 1761 l cp gs col4 s gr % Polyline n 6398 1708 m 6406 1708 l gs col4 s gr % Polyline n 6771 1482 m 6876 1482 l 6876 1377 l 6771 1377 l 6771 1482 l cp gs col4 s gr % Polyline n 6820 1430 m 6828 1430 l gs col4 s gr % Polyline n 7194 1247 m 7299 1247 l 7299 1142 l 7194 1142 l 7194 1247 l cp gs col4 s gr % Polyline n 7243 1194 m 7251 1194 l gs col4 s gr % Polyline n 7616 993 m 7721 993 l 7721 888 l 7616 888 l 7616 993 l cp gs col4 s gr % Polyline n 7665 941 m 7673 941 l gs col4 s gr /Times-Roman-iso ff 210.00 scf sf 7035 4090 m gs 1 -1 sc (Original JaguarVia) dup sw pop neg 0 rm col1 sh gr /Times-Roman-iso ff 210.00 scf sf 7035 4363 m gs 1 -1 sc (Using PSOs) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4560 1716 m gs 1 -1 sc (Using serialization) dup sw pop neg 0 rm col4 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 4958 m gs 1 -1 sc (0) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 4227 m gs 1 -1 sc (5000) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 3494 m gs 1 -1 sc (10000) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 2763 m gs 1 -1 sc (15000) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 2032 m gs 1 -1 sc (20000) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 1299 m gs 1 -1 sc (25000) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1173 567 m gs 1 -1 sc (30000) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1279 5135 m gs 1 -1 sc (0) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 2104 5135 m gs 1 -1 sc (500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 2929 5135 m gs 1 -1 sc (1000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 3754 5135 m gs 1 -1 sc (1500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4580 5135 m gs 1 -1 sc (2000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 5404 5135 m gs 1 -1 sc (2500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 6229 5135 m gs 1 -1 sc (3000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7054 5135 m gs 1 -1 sc (3500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7880 5135 m gs 1 -1 sc (4000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 8705 5135 m gs 1 -1 sc (4500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 363 2763 m gs 1 -1 sc 90.0 rot (Round-trip time, usec) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4992 5312 m gs 1 -1 sc (Message size, bytes) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1797 w @beginspecial 0 @llx 0 @lly 527 @urx 299 @ury 2089 @rwi 1161 @rhi @setspecial %%BeginDocument: ./figures/pso-via-bench-2.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: pso-via-bench-2.eps %%Creator: fig2dev Version 3.2 Patchlevel 1 %%CreationDate: Wed Aug 4 11:07:18 1999 %%For: mdw@satori.boycott-ms.org (Matt Welsh,,,,) %%Orientation: Portrait %%BoundingBox: 0 0 527 299 %%Pages: 0 %%BeginSetup %%EndSetup %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -12.0 324.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /reencdict 12 dict def /ReEncode { reencdict begin /newcodesandnames exch def /newfontname exch def /basefontname exch def /basefontdict basefontname findfont def /newfont basefontdict maxlength dict def basefontdict { exch dup /FID ne { dup /Encoding eq { exch dup length array copy newfont 3 1 roll put } { exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall newfont /FontName newfontname put newcodesandnames aload pop 128 1 255 { newfont /Encoding get exch /.notdef put } for newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat newfontname newfont definefont pop end } def /isovec [ 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde 8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis 8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron 8#220 /dotlessi 8#230 /oe 8#231 /OE 8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling 8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis 8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot 8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus 8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph 8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine 8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf 8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute 8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring 8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute 8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute 8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve 8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply 8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex 8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave 8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring 8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute 8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute 8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve 8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide 8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex 8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def /Times-Roman /Times-Roman-iso isovec ReEncode /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog $F2psBegin 10 setmiterlimit n -1000 6397 m -1000 -1000 l 9975 -1000 l 9975 6397 l cp clip 0.06000 0.06000 sc % Polyline 7.500 slw n 6106 856 m 6638 856 l gs col0 s gr % Polyline n 6318 856 m 6371 909 l 6424 856 l 6371 803 l 6318 856 l cp gs col0 s gr % Polyline n 6367 856 m 6375 856 l gs col0 s gr % Polyline n 7516 3014 m 8048 3014 l gs col1 s gr % Polyline n 7781 3067 m 7781 2961 l gs col1 s gr % Polyline [15 60] 60 sd n 1073 4895 m 8755 4895 l gs col0 s gr [] 0 sd % Polyline n 1073 4895 m 1181 4895 l gs col0 s gr % Polyline n 8755 4895 m 8648 4895 l gs col0 s gr % Polyline [15 60] 60 sd n 1073 4159 m 8755 4159 l gs col0 s gr [] 0 sd % Polyline n 1073 4159 m 1181 4159 l gs col0 s gr % Polyline n 8755 4159 m 8648 4159 l gs col0 s gr % Polyline [15 60] 60 sd n 1073 3423 m 8755 3423 l gs col0 s gr [] 0 sd % Polyline n 1073 3423 m 1181 3423 l gs col0 s gr % Polyline n 8755 3423 m 8648 3423 l gs col0 s gr % Polyline n 1073 2687 m 1181 2687 l gs col0 s gr % Polyline n 8755 2687 m 8648 2687 l gs col0 s gr % Polyline [15 60] 60 sd n 1073 1952 m 8755 1952 l gs col0 s gr [] 0 sd % Polyline n 1073 1952 m 1181 1952 l gs col0 s gr % Polyline n 8755 1952 m 8648 1952 l gs col0 s gr % Polyline [15 60] 60 sd n 1073 1215 m 8755 1215 l gs col0 s gr [] 0 sd % Polyline n 1073 1215 m 1181 1215 l gs col0 s gr % Polyline n 8755 1215 m 8648 1215 l gs col0 s gr % Polyline [15 60] 60 sd n 1073 480 m 8755 480 l gs col0 s gr [] 0 sd % Polyline n 1073 480 m 1181 480 l gs col0 s gr % Polyline n 8755 480 m 8648 480 l gs col0 s gr % Polyline [15 60] 60 sd n 1073 4895 m 1073 480 l gs col0 s gr [] 0 sd % Polyline n 1073 4895 m 1073 4787 l gs col0 s gr % Polyline n 1073 480 m 1073 587 l gs col0 s gr % Polyline [15 60] 60 sd n 1926 4895 m 1926 480 l gs col0 s gr [] 0 sd % Polyline n 1926 4895 m 1926 4787 l gs col0 s gr % Polyline n 1926 480 m 1926 587 l gs col0 s gr % Polyline [15 60] 60 sd n 2781 4895 m 2781 480 l gs col0 s gr [] 0 sd % Polyline n 2781 4895 m 2781 4787 l gs col0 s gr % Polyline n 2781 480 m 2781 587 l gs col0 s gr % Polyline [15 60] 60 sd n 3634 4895 m 3634 480 l gs col0 s gr [] 0 sd % Polyline n 3634 4895 m 3634 4787 l gs col0 s gr % Polyline n 3634 480 m 3634 587 l gs col0 s gr % Polyline [15 60] 60 sd n 4487 4895 m 4487 480 l gs col0 s gr [] 0 sd % Polyline n 4487 4895 m 4487 4787 l gs col0 s gr % Polyline n 4487 480 m 4487 587 l gs col0 s gr % Polyline [15 60] 60 sd n 5342 4895 m 5342 480 l gs col0 s gr [] 0 sd % Polyline n 5342 4895 m 5342 4787 l gs col0 s gr % Polyline n 5342 480 m 5342 587 l gs col0 s gr % Polyline [15 60] 60 sd n 6195 4895 m 6195 510 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 6195 587 m 6195 480 l gs col0 s gr [] 0 sd % Polyline n 6195 4895 m 6195 4787 l gs col0 s gr % Polyline n 6195 480 m 6195 587 l gs col0 s gr % Polyline [15 60] 60 sd n 7048 4895 m 7050 510 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 7048 587 m 7048 480 l gs col0 s gr [] 0 sd % Polyline n 7048 4895 m 7048 4787 l gs col0 s gr % Polyline n 7048 480 m 7048 587 l gs col0 s gr % Polyline [15 60] 60 sd n 7902 4895 m 7905 495 l gs col0 s gr [] 0 sd % Polyline [15 60] 60 sd n 7902 587 m 7902 480 l gs col0 s gr [] 0 sd % Polyline n 7902 4895 m 7902 4787 l gs col0 s gr % Polyline n 7902 480 m 7902 587 l gs col0 s gr % Polyline [15 60] 60 sd n 8755 4895 m 8755 480 l gs col0 s gr [] 0 sd % Polyline n 8755 4895 m 8755 4787 l gs col0 s gr % Polyline n 8755 480 m 8755 587 l gs col0 s gr % Polyline n 1073 4895 m 8755 4895 l 8755 480 l 1073 480 l 1073 4895 l cp gs col0 s gr % Polyline n 1128 4512 m 1565 4291 l 2002 4026 l 2440 3732 l 2876 3526 l 3313 3276 l 3750 2938 l 4187 2746 l 4625 2481 l 5061 2201 l 5498 1936 l 5935 1657 l 6372 1377 l 6810 1142 l 7246 877 l 7683 612 l gs col0 s gr % Polyline n 1075 4512 m 1128 4565 l 1181 4512 l 1128 4459 l 1075 4512 l cp gs col0 s gr % Polyline n 1124 4512 m 1132 4512 l gs col0 s gr % Polyline n 1512 4291 m 1565 4344 l 1618 4291 l 1565 4238 l 1512 4291 l cp gs col0 s gr % Polyline n 1561 4291 m 1569 4291 l gs col0 s gr % Polyline n 1949 4026 m 2002 4079 l 2055 4026 l 2002 3973 l 1949 4026 l cp gs col0 s gr % Polyline n 1998 4026 m 2006 4026 l gs col0 s gr % Polyline n 2387 3732 m 2440 3785 l 2493 3732 l 2440 3679 l 2387 3732 l cp gs col0 s gr % Polyline n 2436 3732 m 2444 3732 l gs col0 s gr % Polyline n 2822 3526 m 2876 3579 l 2929 3526 l 2876 3473 l 2822 3526 l cp gs col0 s gr % Polyline n 2872 3526 m 2880 3526 l gs col0 s gr % Polyline n 3260 3276 m 3313 3329 l 3366 3276 l 3313 3223 l 3260 3276 l cp gs col0 s gr % Polyline n 3309 3276 m 3317 3276 l gs col0 s gr % Polyline n 3697 2938 m 3750 2991 l 3803 2938 l 3750 2885 l 3697 2938 l cp gs col0 s gr % Polyline n 3746 2938 m 3754 2938 l gs col0 s gr % Polyline n 4134 2746 m 4187 2799 l 4240 2746 l 4187 2693 l 4134 2746 l cp gs col0 s gr % Polyline n 4183 2746 m 4191 2746 l gs col0 s gr % Polyline n 4572 2481 m 4625 2534 l 4678 2481 l 4625 2428 l 4572 2481 l cp gs col0 s gr % Polyline n 4621 2481 m 4629 2481 l gs col0 s gr % Polyline n 5007 2201 m 5061 2254 l 5114 2201 l 5061 2148 l 5007 2201 l cp gs col0 s gr % Polyline n 5057 2201 m 5065 2201 l gs col0 s gr % Polyline n 5445 1936 m 5498 1989 l 5551 1936 l 5498 1883 l 5445 1936 l cp gs col0 s gr % Polyline n 5494 1936 m 5502 1936 l gs col0 s gr % Polyline n 5882 1657 m 5935 1710 l 5988 1657 l 5935 1603 l 5882 1657 l cp gs col0 s gr % Polyline n 5931 1657 m 5939 1657 l gs col0 s gr % Polyline n 6319 1377 m 6372 1430 l 6425 1377 l 6372 1324 l 6319 1377 l cp gs col0 s gr % Polyline n 6368 1377 m 6376 1377 l gs col0 s gr % Polyline n 6757 1142 m 6810 1195 l 6863 1142 l 6810 1089 l 6757 1142 l cp gs col0 s gr % Polyline n 6806 1142 m 6814 1142 l gs col0 s gr % Polyline n 7193 877 m 7246 930 l 7299 877 l 7246 824 l 7193 877 l cp gs col0 s gr % Polyline n 7242 877 m 7250 877 l gs col0 s gr % Polyline n 7630 612 m 7683 665 l 7736 612 l 7683 558 l 7630 612 l cp gs col0 s gr % Polyline n 7679 612 m 7687 612 l gs col0 s gr % Polyline n 1080 4556 m 1422 4409 l 1763 4263 l 2104 4115 l 2445 4012 l 2787 3909 l 3129 3732 l 3471 3540 l 3812 3394 l 4153 3305 l 4494 3159 l 4835 3025 l 5177 2938 l 5518 2760 l 5861 2570 l 6202 2452 l 6543 2335 l 6884 2187 l 7225 2055 l 7567 1877 l 7908 1774 l gs col1 s gr % Polyline n 1027 4556 m 1134 4556 l gs col1 s gr % Polyline n 1080 4609 m 1080 4503 l gs col1 s gr % Polyline n 1369 4409 m 1475 4409 l gs col1 s gr % Polyline n 1422 4462 m 1422 4356 l gs col1 s gr % Polyline n 1710 4263 m 1816 4263 l gs col1 s gr % Polyline n 1763 4316 m 1763 4210 l gs col1 s gr % Polyline n 2051 4115 m 2157 4115 l gs col1 s gr % Polyline n 2104 4168 m 2104 4062 l gs col1 s gr % Polyline n 2392 4012 m 2498 4012 l gs col1 s gr % Polyline n 2445 4065 m 2445 3959 l gs col1 s gr % Polyline n 2734 3909 m 2840 3909 l gs col1 s gr % Polyline n 2787 3962 m 2787 3855 l gs col1 s gr % Polyline n 3076 3732 m 3182 3732 l gs col1 s gr % Polyline n 3129 3785 m 3129 3679 l gs col1 s gr % Polyline n 3417 3540 m 3524 3540 l gs col1 s gr % Polyline n 3471 3593 m 3471 3487 l gs col1 s gr % Polyline n 3759 3394 m 3865 3394 l gs col1 s gr % Polyline n 3812 3447 m 3812 3341 l gs col1 s gr % Polyline n 4100 3305 m 4206 3305 l gs col1 s gr % Polyline n 4153 3358 m 4153 3252 l gs col1 s gr % Polyline n 4441 3159 m 4547 3159 l gs col1 s gr % Polyline n 4494 3212 m 4494 3106 l gs col1 s gr % Polyline n 4782 3025 m 4888 3025 l gs col1 s gr % Polyline n 4835 3079 m 4835 2972 l gs col1 s gr % Polyline n 5124 2938 m 5230 2938 l gs col1 s gr % Polyline n 5177 2991 m 5177 2885 l gs col1 s gr % Polyline n 5465 2760 m 5571 2760 l gs col1 s gr % Polyline n 5518 2813 m 5518 2707 l gs col1 s gr % Polyline n 5808 2570 m 5914 2570 l gs col1 s gr % Polyline n 5861 2623 m 5861 2517 l gs col1 s gr % Polyline n 6149 2452 m 6255 2452 l gs col1 s gr % Polyline n 6202 2505 m 6202 2399 l gs col1 s gr % Polyline n 6490 2335 m 6596 2335 l gs col1 s gr % Polyline n 6543 2388 m 6543 2282 l gs col1 s gr % Polyline n 6831 2187 m 6937 2187 l gs col1 s gr % Polyline n 6884 2240 m 6884 2134 l gs col1 s gr % Polyline n 7172 2055 m 7279 2055 l gs col1 s gr % Polyline n 7225 2108 m 7225 2002 l gs col1 s gr % Polyline n 7514 1877 m 7620 1877 l gs col1 s gr % Polyline n 7567 1930 m 7567 1824 l gs col1 s gr % Polyline n 7855 1774 m 7961 1774 l gs col1 s gr % Polyline n 7908 1827 m 7908 1721 l gs col1 s gr % Polyline [15 60] 60 sd n 1073 2687 m 8755 2687 l gs col0 s gr [] 0 sd /Times-Roman-iso ff 210.00 scf sf 6000 945 m gs 1 -1 sc (Using PSOs) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7410 3103 m gs 1 -1 sc (Original JaguarVia) dup sw pop neg 0 rm col1 sh gr /Times-Roman-iso ff 210.00 scf sf 967 4984 m gs 1 -1 sc (50) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 967 4248 m gs 1 -1 sc (100) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 967 3511 m gs 1 -1 sc (150) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 967 2776 m gs 1 -1 sc (200) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 967 2041 m gs 1 -1 sc (250) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 967 1304 m gs 1 -1 sc (300) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 967 569 m gs 1 -1 sc (350) dup sw pop neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1073 5161 m gs 1 -1 sc (0) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 1926 5161 m gs 1 -1 sc (500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 2781 5161 m gs 1 -1 sc (1000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 3634 5161 m gs 1 -1 sc (1500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4487 5161 m gs 1 -1 sc (2000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 5342 5161 m gs 1 -1 sc (2500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 6195 5161 m gs 1 -1 sc (3000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7048 5161 m gs 1 -1 sc (3500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 7902 5161 m gs 1 -1 sc (4000) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 8755 5161 m gs 1 -1 sc (4500) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 365 2776 m gs 1 -1 sc 90.0 rot (Round-trip time, usec) dup sw pop 2 div neg 0 rm col0 sh gr /Times-Roman-iso ff 210.00 scf sf 4914 5339 m gs 1 -1 sc (Message size, bytes) dup sw pop 2 div neg 0 rm col0 sh gr $F2psEnd rs %%EndDocument @endspecial 1137 1234 a Fp(Figure)27 b(8:)36 b Fk(PSO-over-VIA)29 b(b)l(enchmark)i(r)l(esults.)0 1499 y Fb(someRef)c Fp(reference)i(to)h (the)g(next)g(list)g(elemen)n(t;)i(this)e(re-)0 1599 y(quires)21 b(that)g(the)h(next)f(list)h(elemen)n(t)f(b)r(e)h(reco)n(v) n(ered,)e(creat-)0 1698 y(ing)i(a)g(new)g(PSO)g(instance)g(mapping)g (on)n(to)g(the)g(con)n(tainer)0 1798 y(at)j(the)h(appropriate)d (o\013set.)37 b(Next,)26 b(the)f(b)r(enc)n(hmark)g(tra-)0 1897 y(v)n(erses)32 b(eac)n(h)h(list)h(elemen)n(t)g(a)g(second)f(time,) j(whic)n(h)d(uses)0 1997 y(the)f(cac)n(hed)f(PSO)h(references)e (created)i(during)f(the)h(\014rst)0 2097 y(tra)n(v)n(ersal.)100 2199 y(Times)h(are)f(sho)n(wn)g(for)g(creating)g(a)h(PSO,)f(for)h(reco) n(v-)0 2299 y(ering)38 b(a)g(PSO)g(from)h(its)g(pre-serialized)e(form,) k(and)e(for)0 2399 y(reading)26 b(a)h(pre-reco)n(v)n(ered)d(PSO)i (reference.)36 b(Also)27 b(sho)n(wn)0 2498 y(is)i(the)g(time)g(to)g (write)g(a)f(PSO)g(\014eld)h(of)g(t)n(yp)r(e)g Fb(int)p Fp(,)f(whic)n(h)0 2598 y(is)22 b(compared)e(to)i(writing)f(an)h Fb(int)e Fp(\014eld)i(to)g(a)f(regular)f(Ja)n(v)-5 b(a)0 2698 y(ob)5 b(ject.)100 2800 y(Also)35 b(sho)n(wn)g(in)h(Figure)f(7)g (are)f(timings)i(for)f(reading)0 2900 y(and)23 b(writing)g(ev)n(ery)f (elemen)n(t)i(of)f(the)h(one-megab)n(yte)e(con-)0 3000 y(tainer)27 b(as)f(a)h Fb(PSOArray)p Fp(,)d(whic)n(h)j(treats)f(the)i (con)n(tainer)e(as)0 3099 y(a)21 b(simple)h(arra)n(y)e(of)h Fb(int)p Fp(.)34 b(These)22 b(v)-5 b(alues)21 b(are)g(compared)f(to)0 3199 y(accessing)28 b(elemen)n(ts)h(of)h(a)f(Ja)n(v)-5 b(a)28 b Fb(int)g Fp(arra)n(y)-7 b(.)41 b Fb(PSOArrays)0 3298 y Fp(are)31 b(only)g(sligh)n(tly)g(more)g(exp)r(ensiv)n(e)g(than)h (regular)d(Ja)n(v)-5 b(a)0 3398 y(arra)n(ys,)37 b(due)g(to)g(higher)f (b)r(ounds-c)n(hec)n(king)g(cost)g(in)i(the)0 3498 y(Jaguar)26 b(co)r(de)h(mappings)g(implemen)n(ting)h Fb(PSOArrays)p Fp(.)100 3600 y(Pre-Serialized)44 b(Ob)5 b(jects)46 b(eliminate)h(the)g (high)g(cost)0 3700 y(of)31 b(Ja)n(v)-5 b(a)30 b(ob)5 b(ject)31 b(serialization)f(for)h(comm)n(unication)f(and)0 3800 y(I/O.)56 b(T)-7 b(o)56 b(demonstrate)g(this,)65 b(w)n(e)56 b(ha)n(v)n(e)g(augmen)n(ted)0 3899 y(the)25 b(original)e(JaguarVIA)g Fb(pingpong)e Fp(b)r(enc)n(hmark)j(\(from)0 3999 y(Figure)37 b(5\))g(to)h(transmit)f(a)g(link)n(ed)h(list)f(of)h (simple)f(Ja)n(v)-5 b(a)0 4099 y(ob)5 b(jects)37 b(consisting)h(of)f (nine)i(\014elds:)57 b(four)38 b Fb(bytes)p Fp(,)g(four)0 4198 y Fb(ints)p Fp(,)26 b(and)h(a)g(reference)g(to)g(the)h(next)g(ob)5 b(ject)27 b(in)h(the)g(list.)100 4301 y(There)51 b(are)f(t)n(w)n(o)h(v) -5 b(ariations)50 b(on)i(this)g(b)r(enc)n(hmark.)0 4401 y(The)40 b(\014rst)g(uses)f(Pre-Serialized)f(Ob)5 b(jects)40 b(to)g(store)f(ob-)0 4500 y(ject)20 b(data)g(directly)f(in)n(to)g(a)h (VIA)g(comm)n(unications)f(bu\013er.)0 4600 y(The)31 b(second)g(uses)g(standard)g(Ja)n(v)-5 b(a)30 b(ob)5 b(ject)31 b(serialization)0 4699 y(to)40 b(write)h(the)g(link)n(ed)f (list)h(in)n(to)g(the)g(bu\013er.)76 b(The)40 b(lat-)0 4799 y(ter)49 b(w)n(as)f(accomplished)g(b)n(y)h(implemen)n(ting)g(a)g (simple)0 4899 y(class,)g Fb(ViaOutputStream)p Fp(,)43 b(whic)n(h)j(writes)e(b)n(ytes)h(in)n(to)0 4998 y(a)e(VIA)h(comm)n (unications)f(bu\013er.)85 b(A)44 b(standard)e(Ja)n(v)-5 b(a)0 5098 y Fb(ObjectOutputStre)o(am)p Fp(,)32 b(whic)n(h)k(p)r (erforms)f(ob)5 b(ject)36 b(seri-)0 5198 y(alization,)30 b(is)g(created)g(whic)n(h)g(writes)g(serialized)f(data)h(to)0 5297 y(the)e Fb(ViaOutputStream)p Fp(.)100 5400 y(T)-7 b(o)19 b(simplify)h(b)r(oth)g(b)r(enc)n(hmarks,)h(serialization)d(is)h (p)r(er-)2010 1499 y(formed)30 b(only)g(b)n(y)g(the)h(transmitter;)g (no)f(de-serialization)2010 1599 y(\(or)54 b(mapping)h(of)g(PSO)f(ob)5 b(jects)54 b(on)n(to)g(the)h(receiv)n(ed)2010 1698 y(pac)n(k)n(et\))35 b(is)g(p)r(erformed)g(b)n(y)g(the)g(receiv)n(er.)59 b(In)35 b(the)h(PSO)2010 1798 y(v)n(ersion)25 b(of)i(the)g(b)r(enc)n(hmark,)f (the)h(time)g(to)f(assign)f(v)-5 b(alues)2010 1897 y(to)19 b(eac)n(h)f(\014eld)h(of)g(eac)n(h)f(PSO)g(in)i(the)f(link)n(ed)g(list) g(is)g(included)2010 1997 y(in)43 b(the)g(measuremen)n(t,)j(whic)n(h)d (represen)n(ts)e(the)j(w)n(orst-)2010 2097 y(case)36 b(p)r(erformance:)55 b(a)37 b(real)f(application)g(ma)n(y)h(b)r(e)g (able)2010 2196 y(to)31 b(eliminate)h(this)g(o)n(v)n(erhead)d(b)n(y)i (re-using)f(a)i(PSO)e(m)n(ul-)2010 2296 y(tiple)i(times.)50 b(In)33 b(the)f(ob)5 b(ject)32 b(serialization)e(b)r(enc)n(hmark,)2010 2396 y(only)20 b(the)h(time)h(to)e(create)g(a)h(new)f Fb(ObjectOutputStrea)o(m)p Fp(,)2010 2495 y(and)34 b(call)g Fb(writeObject)c Fp(with)35 b(the)g(head)f(of)g(the)h(link)n(ed)2010 2595 y(list)30 b(as)f(an)h(argumen)n(t,)f(are)g(included.)43 b(This)30 b(is)g(the)g(min-)2010 2694 y(im)n(um)g(amoun)n(t)g(of)f(w)n (ork)g(required)g(to)g(serialize)g(a)g(set)h(of)2010 2794 y(ob)5 b(jects.)2290 2764 y Fj(5)2110 2902 y Fp(Figure)40 b(8)g(sho)n(ws)f(the)i(round-trip)f(time)h(as)f(a)g(func-)2010 3002 y(tion)d(of)f(the)h(message)e(size)h(for)g(the)h(use)g(of)f(PSOs)g (o)n(v)n(er)2010 3102 y(VIA,)46 b(ob)5 b(ject)45 b(serialization)e(o)n (v)n(er)g(VIA,)j(and)f(the)g(ra)n(w)2010 3201 y(JaguarVIA)19 b(timings)h(\(from)g(Figure)g(5\).)34 b(The)20 b(righ)n(t-hand)2010 3301 y(plot)27 b(do)r(es)f(not)h(include)h(the)f(ob)5 b(ject)27 b(serialization)e(times,)2010 3400 y(as)19 b(these)i(dw)n(arf)e(the)h(PSO)g(and)g(ra)n(w)e(VIA)j(measuremen)n(ts.) 2010 3500 y(It)28 b(is)f(clear)f(that)i(Pre-Serialized)d(Ob)5 b(jects)27 b(eliminate)h(the)2010 3600 y(high)21 b(o)n(v)n(erhead)e(of) i(ob)5 b(ject)21 b(serialization:)32 b(transmitting)21 b(a)2010 3699 y(link)n(ed)28 b(list)g(of)g(128)f(PSOs)g(\014lling)h(a)f (four-kilob)n(yte)g(bu\013er)2010 3799 y(has)38 b(a)h(round-trip)f (latency)g(of)h(341)e Fa(\026)p Fp(sec,)k(while)e(using)2010 3899 y(Ja)n(v)-5 b(a)31 b(ob)5 b(ject)31 b(serialization)f(costs)h (26843)f Fa(\026)p Fp(sec,)i(a)g(factor)2010 3998 y(of)c(78)e(higher.) 2110 4107 y(F)-7 b(or)46 b(comparison,)k(transmitting)c(an)h(empt)n(y)g (4)f(Kb)2010 4206 y(bu\013er)28 b(using)g(JaguarVIA)e(has)i(a)f (round-trip)g(latency)h(of)2010 4306 y(262)37 b Fa(\026)p Fp(sec;)45 b(\014lling)38 b(the)i(bu\013er)f(using)f(PSOs)g(adds)g (only)2010 4405 y(39.5)30 b Fa(\026)p Fp(sec)g(eac)n(h)g(w)n(a)n(y)-7 b(,)31 b(or)f(\(39.5)f Fa(\026)p Fp(sec)i(/)f(128)g(ob)5 b(jects\))30 b(=)2010 4505 y(0.30)36 b Fa(\026)p Fp(sec)h(p)r(er)g(ob)5 b(ject.)66 b(If)37 b(the)h(bu\013er)g(w)n(ere)e(\014lled)h(us-)2010 4605 y(ing)c(the)g Fb(PSOArray)d Fp(mec)n(hanism)j(describ)r(ed)g(ab)r (o)n(v)n(e,)g(the)2010 4704 y(cost)22 b(w)n(ould)h(b)r(e)g(\(0.053)e Fa(\026)p Fp(sec)h(p)r(er)h(w)n(ord)f(/)g(1024)f(w)n(ords\))g(=)2010 4804 y(54.2)26 b Fa(\026)p Fp(sec.)37 b(Note)28 b(that)g(accessing)e (\014elds)i(of)f(a)g(PSO)g(do)r(es)2010 4904 y(not)39 b(require)f(an)n(y)h(b)r(ounds-c)n(hec)n(king)e(to)i(b)r(e)h(done:)60 b(the)p 2010 5007 744 4 v 2102 5061 a Fi(5)2137 5085 y Fh(It)28 b(is)f(necessary)i(to)f(create)h(a)f(new)g Ff(ObjectOutputStream)33 b Fh(for)2010 5163 y(eac)n(h)27 b(message;)f(otherwise,)g(the)g(stream)f(will)f(serialize)h(the)i(link) n(ed)2010 5242 y(list)f(just)h(once,)i(for)d(the)i(\014rst)f(pac)n(k)n (et,)i(and)e(for)g(subsequen)n(t)h(pac)n(k-)2010 5321 y(ets)33 b(will)d(store)j(a)f(reference)h(to)g(the)g (previously-serialized)e(state.)2010 5400 y(Because)25 b(eac)n(h)g(pac)n(k)n(et)g(is)e(indep)r(enden)n(t,)j(this)d(is)g (unacceptable.)p eop %%Page: 12 12 12 11 bop 0 83 a Fp(c)n(hec)n(k)34 b(is)h(p)r(erformed)g(when)g(the)h (PSO)e(is)i(created)e(\(and)0 183 y(mapp)r(ed)k(on)n(to)f(an)h (underlying)f(con)n(tainer\).)67 b(Ho)n(w)n(ev)n(er,)0 282 y(the)28 b Fb(PSOArray)c Fp(m)n(ust)k(b)r(ounds-c)n(hec)n(k)e(eac)n (h)h(access.)p 0 412 1945 4 v -2 503 4 92 v 50 476 a Fe(Benc)n(hmark)p 1043 503 V 605 w(Time)p 1416 503 V 172 w(MByte/sec)p 1943 503 V 0 506 1945 4 v -2 598 4 92 v 50 570 a Fc(DataInputStream)p 1043 598 V 459 w Fn(4910)h(ms)p 1416 598 V 98 w(0.203)p 1943 598 V -2 689 V 50 662 a Fc(DataInputStream)h Fn(\(bu\013ered\))p 1043 689 V 98 w(488)e(ms)p 1416 689 V 137 w(0.672)p 1943 689 V -2 780 V 50 753 a(Jaguar)g Fc(PSOArray)p 1043 780 V 479 w Fn(28)g(ms)p 1416 780 V 175 w(35.71)p 1943 780 V -2 872 V 50 844 a(C)f(\(un)n (bu\013ered)e Fc(read)p Fn(\))p 1043 872 V 367 w(771)j(ms)p 1416 872 V 137 w(1.32)p 1943 872 V -2 963 V 50 936 a(C)f(\()p Fc(mmap)p Fn(\))p 1043 963 V 747 w(23)h(ms)p 1416 963 V 175 w(43.47)p 1943 963 V 0 966 1945 4 v 349 1157 a Fp(Figure)g(9:)37 b Fk(File-sc)l(an)30 b(b)l(enchmarks.)100 1362 y Fp(T)-7 b(o)31 b(ev)-5 b(aluate)31 b(the)h(use)g(of)f (Pre-Serialized)f(Ob)5 b(ject)31 b(ar-)0 1462 y(ra)n(ys)k(to)h (implemen)n(t)h(e\016cien)n(t)g(disk)g(I/O)e(in)i(Ja)n(v)-5 b(a,)38 b(Fig-)0 1561 y(ure)c(9)g(sho)n(ws)f(results)h(for)f(a)h (simple)h(b)r(enc)n(hmark)e(whic)n(h)0 1661 y(scans)22 b(a)h(one-megab)n(yte)e(\014le)j(of)f(random)f(in)n(tegers)g(for)h(the) 0 1761 y(maxim)n(um)42 b(v)-5 b(alue.)80 b(This)42 b(not)g(only)g (stresses)e(the)j(I/O)0 1860 y(comp)r(onen)n(t)33 b(of)h(the)g(system)f (but)h(brings)f(the)h(data)f(in)n(to)0 1960 y(the)28 b(application)f(to)g(p)r(erform)h(simple)f(analysis.)100 2064 y(There)65 b(are)g(sev)n(eral)f(v)-5 b(ariations)64 b(on)i(the)g(b)r(enc)n(h-)0 2163 y(mark.)142 b(The)63 b(\014rst)g(t)n(w)n(o)f(use)h(the)g(standard)f(Ja)n(v)-5 b(a)0 2263 y Fb(DataInputStream)24 b Fp(class,)31 b(b)r(oth)f(with)h (and)g(without)f(an)0 2362 y(underlying)i Fb(BufferedInputStre)o(am)o Fp(.)47 b(The)33 b(third)g(uses)0 2462 y(the)53 b(Jaguar)e Fb(PSOArray)f Fp(class)i(to)h(treat)g(a)f(memory-)0 2562 y(mapp)r(ed)35 b(\014le)g(as)f(an)h(arra)n(y)d(of)j(b)n(ytes)g(or)f(in) n(tegers.)57 b(The)0 2661 y(\014nal)39 b(t)n(w)n(o)f(results)h(sho)n(w) f(the)h(same)f(b)r(enc)n(hmark)h(in)g(C,)0 2761 y(using)30 b(un)n(bu\013ered)h Fb(read)e Fp(system)h(calls)g(as)g(w)n(ell)g(as)g Fb(mmap)0 2861 y Fp(to)d(access)g(the)h(\014le.)100 2964 y(As)35 b(the)g(results)g(sho)n(w,)h(only)f(the)g(Jaguar)e Fb(PSOArray)0 3064 y Fp(and)c(C-based)g Fb(mmap)f Fp(b)r(enc)n(hmarks)h (obtain)g(go)r(o)r(d)g(p)r(erfor-)0 3164 y(mance)f(\(23)g(and)g(28)f (milliseconds,)h(resp)r(ectiv)n(ely\).)38 b(Both)0 3263 y(of)44 b(these)f(op)r(erate)g(on)h(memory-mapp)r(ed)f(\014les,)k(so)c (w)n(e)0 3363 y(should)c(exp)r(ect)g(p)r(erformance)f(to)h(b)r(e)h (higher)e(than)i(the)0 3462 y(use)25 b(of)h(\014le)g(I/O.)e(The)i (additional)f(cost)g(of)g(the)h Fb(PSOArray)0 3562 y Fp(o)n(v)n(er)39 b(direct)i(use)g(of)h Fb(mmap)d Fp(from)i(C)g(is)g (due)h(to)f(sev)n(eral)0 3662 y(factors:)69 b(the)45 b Fb(PSOArray)c Fp(metho)r(ds)j(p)r(erform)g(b)r(ounds-)0 3761 y(c)n(hec)n(king)38 b(while)i(the)g(C)f(co)r(de)g(do)r(es)g(not,)k (and)c(the)h(op-)0 3861 y(timizations)34 b(in)h(our)f(protot)n(yp)r(e)g (JIT)g(compiler)g(are)g(not)0 3961 y(as)27 b(adv)-5 b(anced)27 b(as)g(in)h(the)g(C)f(compiler.)100 4064 y(External)19 b(Ob)5 b(jects)21 b(and)f(PSOs)g(are)g(a)g(p)r(o)n(w)n(erful)h(means)0 4164 y(of)31 b(enabling)g(e\016cien)n(t)g(I/O)g(in)g(Ja)n(v)-5 b(a.)47 b(They)31 b(pro)n(vide)f(di-)0 4263 y(rect)40 b(access)e(to)i(memory-mapp)r(ed)f(\014les)h(and)g(a)g(means)0 4363 y(to)c(reduce)g(the)g(cost)g(of)g(ob)5 b(ject)36 b(serialization.)60 b(W)-7 b(e)37 b(b)r(e-)0 4463 y(liev)n(e)21 b(these)h(results)g(indicate)g(that)g(higher-lev)n(el)e(I/O)h(and)0 4562 y(comm)n(unication)e(mec)n(hanisms)f(\(suc)n(h)i(as)e(p)r (ersisten)n(t)i(data)0 4662 y(structures)i(and)g(RPC\))h(can)f(b)r(e)h (e\016cien)n(tly)f(implemen)n(ted)0 4762 y(using)27 b(Jaguar.)0 5089 y Fl(6)112 b(Issues)38 b(and)h(F)-9 b(uture)37 b(W)-9 b(ork)100 5300 y Fp(Our)27 b(initial)h(exp)r(erience)f(with)h(Jaguar)e (has)h(indicated)0 5400 y(a)35 b(n)n(um)n(b)r(er)g(of)g(p)r(ossible)g (a)n(v)n(en)n(ues)e(for)i(further)g(researc)n(h.)2010 83 y(While)g(our)f(protot)n(yp)r(e)f(has)h(pro)n(vided)g(encouraging)e (re-)2010 183 y(sults,)55 b(w)n(e)50 b(are)f(in)n(terested)g(in)h(the)h (extension)e(of)h(the)2010 282 y(Jaguar)26 b(approac)n(h)f(to)j(other)f (application)g(areas.)2110 389 y(One)i(ma)5 b(jor)28 b(concern)g(is)i(protection.)42 b(Curren)n(tly)-7 b(,)29 b(the)2010 489 y(user)f(m)n(ust)h(trust)g(Jaguar)e(co)r(de)h (extensions)g(\(built-in)i(to)2010 589 y(the)39 b(JIT)f(compiler)g(as)g (a)h(set)f(of)h(b)n(yteco)r(de-to-mac)n(hine)2010 688 y(co)r(de)22 b(transformation)g(rules\))g(as)g(m)n(uc)n(h)g(as)g(the)h (JVM)g(and)2010 788 y(the)37 b(compiler)f(itself.)66 b(As)37 b(discussed)f(previously)-7 b(,)38 b(ho)n(w-)2010 887 y(ev)n(er,)23 b(this)g(is)f(p)r(erhaps)g(b)r(etter)h(than)g(the)g (use)g(of)f(arbitrary)2010 987 y(nativ)n(e)k(metho)r(ds,)g(whic)n(h)g (ha)n(v)n(e)f(the)i(same)e(trust)h(require-)2010 1087 y(men)n(ts)i(but)g(far)f(greater)f(complexit)n(y)h(in)h(general.)2110 1194 y(Ho)n(w)n(ev)n(er,)21 b(it)i(is)f(still)h(desirable)e(to)i (express)e(extensions)2010 1293 y(to)h(the)h(Ja)n(v)-5 b(a)20 b(en)n(vironmen)n(t)h(in)i(a)f(w)n(a)n(y)e(whic)n(h)i(enables)g (cer-)2010 1393 y(tain)37 b(prop)r(erties)f(to)h(b)r(e)g(v)n (eri\014ed,)i(suc)n(h)d(as)h(t)n(yp)r(e-safet)n(y)-7 b(,)2010 1493 y(b)r(ounded)26 b(execution)g(time,)g(and)g(limited)g (impact)g(on)g(the)2010 1592 y(Ja)n(v)-5 b(a)30 b(protection)g(mo)r (del.)48 b(One)31 b(approac)n(h)e(w)n(ould)i(b)r(e)g(to)2010 1692 y(use)22 b(a)g(higher-lev)n(el)e(language)g(to)i(represen)n(t)f (Jaguar)f(co)r(de)2010 1791 y(mappings;)26 b(t)n(yp)r(ed)g(assem)n(bly) f(language)f([13)o(])i(is)f(one)h(can-)2010 1891 y(didate,)37 b(but)e(other)f(languages)f(are)h(p)r(ossible.)57 b(The)35 b(use)2010 1991 y(of)30 b(suc)n(h)f(a)h(language)e(should)h(mak)n(e)g (it)h(p)r(ossible)g(to)f(stat-)2010 2090 y(ically)45 b(v)n(erify)f(imp)r(ortan)n(t)h(prop)r(erties)f(ab)r(out)h(Jaguar's) 2010 2190 y(co)r(de)40 b(mappings)f(|)h(while)f(this)h(ma)n(y)f(not)h (p)r(ermit)g(en-)2010 2290 y(tirely)31 b(un)n(trusted)g(Ja)n(v)-5 b(a)30 b(extensions,)i(the)g(goal)e(is)h(rather)2010 2389 y(to)24 b(raise)g(the)g(degree)g(of)g(trust)n(w)n(orthiness)f(suc) n(h)h(that)h(new)2010 2489 y(co)r(de)i(mappings)g(do)h(not)f(ha)n(v)n (e)g(unexp)r(ected)h(b)r(eha)n(vior.)2110 2596 y(Use)41 b(of)h(a)f(limited)i(extension)e(language)f(ma)n(y)h(ha)n(v)n(e)2010 2695 y(the)j(secondary)d(e\013ect)j(that)g(it)g(inheren)n(tly)f(limits) h(the)2010 2795 y(set)36 b(of)h(actions)e(that)i(can)f(b)r(e)h (implemen)n(ted)f(as)g(Jaguar)2010 2895 y(co)r(de)44 b(mappings.)87 b(F)-7 b(or)44 b(example,)k(lo)r(ops,)g(un)n(b)r(ounded) 2010 2994 y(branc)n(hes,)31 b(and)f(ill-formed)h(Ja)n(v)-5 b(a)29 b(stac)n(k)h(and)h(ob)5 b(ject)31 b(op-)2010 3094 y(erations)g(ma)n(y)h(b)r(e)g(restricted)g(b)n(y)g(the)h(seman)n(tics)e (of)i(the)2010 3194 y(language.)i(This)28 b(is)f(desirable)g(as)g(it)h (prev)n(en)n(ts)f(the)h(abuse)2010 3293 y(of)20 b(the)g(Jaguar)e(co)r (de)i(mapping)g(tec)n(hnique)g(to)g(inline)g(large)2010 3393 y(amoun)n(ts)h(of)i(lo)n(w-lev)n(el)d(co)r(de)i(as)g(a)g(single)f (Ja)n(v)-5 b(a)21 b(primitiv)n(e;)2010 3492 y(the)f(philosoph)n(y)g(of) g(Jaguar)e(is)i(to)g(build)g(in)h(only)e(the)i(mini-)2010 3592 y(mal)e(set)g(of)g(extensions)f(needed)h(to)g(pro)n(vide)f (e\016cien)n(t)h(Ja)n(v)-5 b(a)2010 3692 y(access)26 b(to)i(some)f(serv)n(er)f(resource.)2110 3799 y(Pre-Serialized)31 b(Ob)5 b(jects)33 b(presen)n(t)f(sev)n(eral)g(un)n(tapp)r(ed)2010 3898 y(opp)r(ortunities.)j(The)22 b(\014rst)g(is)g(to)g(exploit)h(PSOs) e(to)h(imple-)2010 3998 y(men)n(t)27 b(an)f(e\016cien)n(t)g(RPC)h(and)f (data-p)r(ersistence)f(mec)n(ha-)2010 4098 y(nism)g(for)f(Ja)n(v)-5 b(a;)25 b(com)n(bining)f(the)h(use)g(of)g(JaguarVIA)e(and)2010 4197 y(PSOs)d(should)h(enable)g(a)g(high-p)r(erformance)f(RPC)h(mec)n (h-)2010 4297 y(anism)33 b(for)g(w)n(orkstation)f(clusters.)54 b(W)-7 b(e)33 b(are)g(also)f(in)n(v)n(es-)2010 4396 y(tigating)g(the)h (use)g(of)f(PSOs)g(to)g(implemen)n(t)i(distributed)2010 4496 y(data)18 b(structures)g(for)g(cluster-based)g(In)n(ternet)g (services)f([8])2010 4596 y(and)27 b(databases)g([9)o(].)2110 4703 y(The)33 b(protot)n(yp)r(e)f(implemen)n(tation)h(of)g (Pre-Serialized)2010 4802 y(Ob)5 b(jects)24 b(has)h(sev)n(eral)e(imp)r (ortan)n(t)h(limitations.)36 b(The)25 b(fact)2010 4902 y(that)44 b(cross-PSO)e(references)h(are)g(only)g(reco)n(v)n(erable)f (if)2010 5001 y(b)r(oth)26 b(PSOs)g(are)f(within)h(the)h(same)e(\\con)n (tainer")f(implies)2010 5101 y(an)30 b(informed)g(programming)e(mo)r (del)i(whic)n(h)h(mak)n(es)e(this)2010 5201 y(limitation)35 b(explicit.)61 b(Curren)n(tly)-7 b(,)36 b(it)g(is)f(up)g(to)h(the)f (pro-)2010 5300 y(grammer)d(to)h(arrange)e(for)h(m)n(ultiple)i(PSOs)e (to)h(coreside)2010 5400 y(in)38 b(a)g(single)f(con)n(tainer)g(if)h (their)g(ob)5 b(ject)37 b(references)g(are)p eop %%Page: 13 13 13 12 bop 0 83 a Fp(to)28 b(b)r(e)g(reco)n(v)n(ered.)36 b(While)29 b(it)g(is)f(p)r(ossible)f(to)h(remo)n(v)n(e)f(this)0 183 y(limitation,)22 b(doing)e(so)g(w)n(ould)g(in)n(v)n(olv)n(e)f (considerable)g(com-)0 282 y(plexit)n(y)-7 b(.)49 b(W)-7 b(e)32 b(b)r(eliev)n(e)f(that)h(programmers)d(who)i(require)0 382 y(the)26 b(p)r(erformance)f(a\013orded)g(b)n(y)h(PSOs)f(are)g (willing)h(to)g(go)0 482 y(to)34 b(the)g(trouble)f(to)h(carefully)f (main)n(tain)g(PSO)g(relation-)0 581 y(ships;)46 b(w)n(e)40 b(in)n(tend)g(to)g(test)g(this)h(claim)e(b)n(y)h(dev)n(eloping)0 681 y(applications)27 b(whic)n(h)g(use)h(this)g(feature.)100 780 y(Jaguar)20 b(is)i(a)f(general)g(solution)g(for)h(e\016cien)n(tly)g (binding)0 880 y(Ja)n(v)-5 b(a)23 b(application)h(co)r(de)h(to)f(hardw) n(are)f(resources.)34 b(There)0 980 y(are)41 b(m)n(yriad)h(p)r(oten)n (tial)g(uses)g(for)g(this)g(mec)n(hanism,)k(of)0 1079 y(whic)n(h)36 b(w)n(e)g(ha)n(v)n(e)f(y)n(et)h(explored)f(but)i(a)f (few.)63 b(Other)36 b(in-)0 1179 y(teresting)27 b(uses)g(include:)83 1342 y Fq(\017)41 b Fp(F)-7 b(ast)40 b(access)f(to)h(devices)g(suc)n(h) g(as)f(ra)n(w)g(disk)h(I/O,)166 1442 y(framebu\013ers,)67 b(and)59 b(NUMA-st)n(yle)g(memory-bus)166 1542 y(net)n(w)n(ork)26 b(in)n(terfaces;)83 1706 y Fq(\017)41 b Fp(T)-7 b(ransparen)n(t)35 b(data)i(p)r(ersistence,)i(using)d(a)h(mec)n(ha-)166 1806 y(nism)24 b(similar)e(to)h(Pre-Serialized)f(Ob)5 b(jects.)35 b(Certain)166 1906 y(Ja)n(v)-5 b(a)40 b(ob)5 b(jects)40 b(could)h(b)r(e)h(tagged)e(as)g(\\p)r(ersisten)n(t")166 2005 y(|)27 b(Jaguar)d(co)r(de)j(mappings)f(could)h(directly)f(imple-) 166 2105 y(men)n(t)i(reten)n(tion)f(of)h(suc)n(h)f(ob)5 b(jects')27 b(state.)83 2270 y Fq(\017)41 b Fp(Use)30 b(of)g(Jaguar)e(co)r(de)i(mappings)g(to)g(access)f(shared)166 2369 y(memory)22 b(segmen)n(ts)h(in)g(a)g(m)n(ultipro)r(cessor)e(mac)n (hine,)166 2469 y(or)54 b(to)h(implemen)n(t)h(distributed)f(shared)g (ob)5 b(jects)166 2568 y(across)26 b(a)h(net)n(w)n(ork.)0 2732 y(Because)39 b(Jaguar)f(can)i(b)r(e)g(applied)g(so)g(generally)-7 b(,)42 b(it)e(is)0 2832 y(imp)r(ortan)n(t)d(to)f(strik)n(e)g(the)h (righ)n(t)f(balance)h(b)r(et)n(w)n(een)f(de-)0 2931 y(v)n(elopmen)n(t) 31 b(of)g(new)g(Ja)n(v)-5 b(a)30 b(primitiv)n(es)h(and)g(applications)0 3031 y(whic)n(h)f(utilize)h(those)e(primitiv)n(es.)44 b(Our)29 b(claim)h(is)g(that)h(it)0 3130 y(is)25 b(undesirable)g(to)g (extend)h(the)g(Ja)n(v)-5 b(a)24 b(en)n(vironmen)n(t)g(arbi-)0 3230 y(trarily;)33 b(just)f(what)g(the)g(limits)g(are)f(should)h(b)r(e) g(brough)n(t)0 3330 y(out)c(b)n(y)f(further)g(exp)r(erimen)n(tation.)0 3644 y Fl(7)112 b(Conclusion)100 3842 y Fp(Jaguar)42 b(bridges)i(the)i(gap)e(b)r(et)n(w)n(een)h(Ja)n(v)-5 b(a)43 b(applica-)0 3941 y(tions)28 b(and)g(the)g(underlying)f(serv)n (er)g(resources)f(that)i(they)0 4041 y(wish)23 b(to)h(exploit.)35 b(This)23 b(is)h(accomplished)e(b)n(y)h(translating)0 4141 y(Ja)n(v)-5 b(a)34 b(b)n(yteco)r(des)i(to)f(inlined)i(mac)n(hine)e (co)r(de)h(sequences)0 4240 y(at)d(compile)f(time;)k(the)d(abilit)n(y)f (to)h(abstract)e(system)i(re-)0 4340 y(sources)40 b(as)i(Ja)n(v)-5 b(a)40 b(ob)5 b(jects)42 b(pro)n(vides)e(b)r(oth)j(safet)n(y)e(and)0 4440 y(high)g(p)r(erformance.)76 b(The)42 b(programming)d(mo)r(del)i (pre-)0 4539 y(sen)n(ted)c(b)n(y)f(Jaguar)f(allo)n(ws)g(lo)n(w-lev)n (el)g(system)i(soft)n(w)n(are)0 4639 y(to)f(b)r(e)g(co)r(ded)g(almost)g (en)n(tirely)f(in)h(Ja)n(v)-5 b(a,)37 b(aided)f(b)n(y)g(the)0 4738 y(minimal)25 b(set)h(of)f(additional)f(primitiv)n(es)h(required)f (for)h(di-)0 4838 y(rect)i(access)g(to)g(hardw)n(are)f(resources.)100 4938 y(Jaguar)i(addresses)i(t)n(w)n(o)g(primary)f(concerns)h(that)h (are)0 5037 y(essen)n(tial)20 b(for)h(enabling)g(high-p)r(erformance)e (comm)n(unica-)0 5137 y(tions)27 b(and)h(I/O)f(from)g(Ja)n(v)-5 b(a:)60 5300 y(1.)41 b(E\016cien)n(t,)c(protected)f(access)e(to)h(lo)n (w-lev)n(el)f(system)166 5400 y(resources;)26 b(and)2070 83 y(2.)41 b(Direct)33 b(manipulation)g(of)g(memory)f(regions)f(exter-) 2176 183 y(nal)c(to)h(the)g(Ja)n(v)-5 b(a)26 b(heap.)2110 366 y(W)-7 b(e)31 b(ha)n(v)n(e)f(describ)r(ed)h Fk(JaguarVIA)p Fp(,)g(an)g(e\016cien)n(t)g(Ja)n(v)-5 b(a)2010 466 y(binding)20 b(to)h(the)f(VIA)h(comm)n(unications)e(arc)n(hitecture)g(us-)2010 565 y(ing)28 b(Jaguar)f(co)r(de)h(mappings)g(to)g(pro)n(vide)f(fast)i (access)e(to)2010 665 y(VIA)21 b(queues,)g(do)r(orb)r(ell)f(registers,) g(and)g(sp)r(ecially-pinned)2010 764 y(data)31 b(bu\013ers.)48 b(JaguarVIA)30 b(obtains)h(iden)n(tical)g(comm)n(u-)2010 864 y(nication)38 b(p)r(erformance)f(to)h(VIA)g(as)f(accessed)g(from)h (C.)2010 964 y(Pre-Serialized)43 b(Ob)5 b(jects)44 b(are)g(another)g (application)g(of)2010 1063 y(Jaguar)19 b(co)r(de)i(mappings)g(whic)n (h)g(reduce)g(the)g(cost)g(of)g(Ja)n(v)-5 b(a)2010 1163 y(ob)5 b(ject)36 b(serialization)f(b)n(y)h(rewriting)f(ob)5 b(ject)36 b(\014eld)h(refer-)2010 1263 y(ences)28 b(to)h(directly)f (access)g(an)g(externalized)g(form)g(of)h(the)2010 1362 y(ob)5 b(ject's)27 b(state.)2110 1468 y(W)-7 b(e)38 b(b)r(eliev)n(e)h (that)f(the)h(approac)n(h)d(tak)n(en)i(b)n(y)g(Jaguar)2010 1567 y(can)23 b(b)r(e)h(extended)f(in)h(a)f(n)n(um)n(b)r(er)g(of)g(w)n (a)n(ys,)g(b)r(oth)h(in)f(terms)2010 1667 y(of)h(applications)f(\(suc)n (h)h(as)f(applying)g(Pre-Serialized)f(Ob-)2010 1766 y(jects)j(to)g (implemen)n(t)g(a)f(fast)h(RPC)f(la)n(y)n(er\))g(as)g(w)n(ell)g(as)g (pro-)2010 1866 y(tection)k(\(b)n(y)f(expressing)f(Jaguar)g(co)r(de)h (transformations)2010 1966 y(in)22 b(a)f(higher-lev)n(el)f(language\).) 34 b(Jaguar)20 b(is)h(a)h(general)e(solu-)2010 2065 y(tion)f(that)g(co) n(v)n(ers)e(a)i(wide)g(range)e(of)i(application)f(demands)2010 2165 y(on)31 b(the)h(Ja)n(v)-5 b(a)30 b(en)n(vironmen)n(t.)46 b(As)32 b(suc)n(h,)g(it)f(is)g(imp)r(ortan)n(t)2010 2265 y(to)f(consider)f(the)i(p)r(erformance)e(and)h(complexit)n(y)g(trade-) 2010 2364 y(o\013s)21 b(of)f(extending)h(Ja)n(v)-5 b(a)20 b(with)h(new)g(primitiv)n(e)f(op)r(erations)2010 2464 y(in)28 b(this)g(w)n(a)n(y)-7 b(.)2010 2680 y Fo(Ac)m(kno)m(wledgemen)m (ts)2110 2897 y Fp(W)g(e)33 b(are)f(indebted)i(to)f(Kazuyuki)g(Sh)n (udo)g(of)g(W)-7 b(aseda)2010 2996 y(Univ)n(ersit)n(y)g(,)40 b(Japan,)f(for)f(pro)n(viding)e(us)i(with)g(the)h Fk(Shu-)2010 3096 y(JIT)50 b Fp(just-in-time)g(compiler)g(up)r(on)g(whic)n(h)f (Jaguar)f(is)2010 3196 y(based.)34 b(Philip)21 b(Buonadonna)e(pro)n (vided)h(the)h(original)e(im-)2010 3295 y(plemen)n(tation)26 b(of)f(Berk)n(eley)f(VIA)j(used)e(in)h(our)f(measure-)2010 3395 y(men)n(ts.)51 b(Stev)n(e)33 b(Gribble)f(pro)n(vided)f(v)-5 b(aluable)32 b(commen)n(ts)2010 3494 y(on)25 b(this)g(pap)r(er,)g(and)g (Jo)r(e)f(Hellerstein)h(con)n(tributed)g(feed-)2010 3594 y(bac)n(k)18 b(during)h(the)g(early)f(stages)g(of)h(Jaguar's)e(design.) 33 b(This)2010 3694 y(w)n(ork)22 b(is)h(supp)r(orted)g(b)n(y)f(D)n(ARP) -7 b(A)24 b(gran)n(t)e(D)n(ABT63-98-C-)2010 3793 y(0038,)38 b(NSF)f(gran)n(t)f(EIA-9802069,)f(and)i(an)g(equipmen)n(t)2010 3893 y(donation)28 b(b)n(y)h(In)n(tel)g(Corp)r(oration.)40 b(Matt)29 b(W)-7 b(elsh)29 b(is)g(sup-)2010 3993 y(p)r(orted)e(b)n(y)h (a)f(NSF)h(Graduate)f(Studen)n(t)h(F)-7 b(ello)n(wship.)2010 4325 y Fl(References)2048 4533 y Fn([1])43 b(P)-6 b(.)23 b(Buonadonna,)i(A.)e(Gew)n(ek)n(e,)h(and)f(D.)g(Culler.)32 b(An)22 b(im-)2171 4625 y(plemen)n(tation)28 b(and)h(analysis)h(of)f (the)g(Virtual)g(In)n(terface)2171 4716 y(Arc)n(hitecture.)53 b(In)31 b Fm(Pr)l(o)l(c)l(e)l(e)l(dings)36 b(of)d(SC'98)p Fn(,)h(No)n(v)n(em)n(b)r(er)2171 4807 y(1998.)2048 4943 y([2])43 b(Craig)g(Cham)n(b)r(ers)e(and)g(Da)n(vid)g(Ungar.)81 b(Customiza-)2171 5035 y(tion:)62 b(Optimizing)39 b(compiler)h(tec)n (hnology)f(for)i(SELF,)2171 5126 y(a)30 b(dynamically-t)n(yp)r(ed)d(ob) t(ject-orien)n(ted)j(programming)2171 5217 y(language.)73 b(In)37 b Fm(Pr)l(o)l(c)l(e)l(e)l(dings)42 b(of)c(the)i(SIGPLAN)f(1989) 2171 5309 y(Confer)l(enc)l(e)30 b(on)e(Pr)l(o)l(gr)l(amming)h(L)l (anguage)h(Design)e(and)2171 5400 y(Implementation)p Fn(,)e(June)g(1989.)p eop %%Page: 14 14 14 13 bop 38 83 a Fn([3])43 b(Chi-Chao)29 b(Chang)g(and)g(Thorsten)g(v) n(on)e(Eic)n(k)n(en.)43 b(In)n(ter-)161 174 y(facing)29 b(Ja)n(v)l(a)e(with)h(the)f(virtual)g(in)n(terface)h(arc)n(hitecture.) 161 266 y(In)22 b Fm(A)n(CM)j(Java)h(Gr)l(ande)h(Confer)l(enc)l(e)f (1999)p Fn(,)f(June)e(1999.)38 401 y([4])43 b(B.)33 b(Ch)n(un,)h(A.)f (Main)n(w)n(aring,)j(and)d(D.)f(Culler.)57 b(Virtual)161 492 y(net)n(w)n(ork)32 b(transp)r(ort)g(proto)r(cols)i(for)e(Myrinet.) 54 b(In)31 b Fm(Pr)l(o-)161 583 y(c)l(e)l(e)l(dings)e(of)e(Hot)h(Inter) l(c)l(onncts)j(V)p Fn(,)26 b(August)f(1997.)38 718 y([5])43 b(Je\013rey)53 b(Dean.)115 b(Whole-program)53 b(optimization)g(of)161 810 y(ob)t(ject-orien)n(ted)30 b(languages.)47 b(In)29 b Fm(PhD)i(thesis,)h(Univer-)161 901 y(sity)c(of)f(Washington,)h(Se)l (attle,)h(Washington)p Fn(,)e(1996.)38 1036 y([6])43 b(Vladimir)34 b(Geto)n(v,)k(Susan)c(Flynn-Hummel,)g(and)g(Sa)n(v)l(a) 161 1127 y(Min)n(tc)n(hev.)27 b(High-p)r(erformance)22 b(parallel)h(programming)161 1219 y(in)k(Ja)n(v)l(a:)38 b(Exploiting)28 b(nativ)n(e)f(libraries.)40 b(In)27 b Fm(A)n(CM)h(1998)161 1310 y(Workshop)k(on)e(Java)h(for)f (High-Performanc)l(e)i(Network)161 1401 y(Computing)p Fn(,)27 b(1998.)38 1536 y([7])43 b(J.)31 b(Gosling,)j(B.)d(Jo)n(y)-6 b(,)32 b(and)e(G.)h(Steele.)49 b Fm(The)32 b(Java)h(L)l(an-)161 1628 y(guage)22 b(Sp)l(e)l(ci\014c)l(ation)p Fn(.)j(Addison-W)-6 b(esley)g(,)19 b(Reading,)i(MA,)161 1719 y(1996.)38 1854 y([8])43 b(Stev)n(en)34 b(Gribble.)62 b(Simplifying)35 b(Cluster-Based)h(In)n(ter-)161 1945 y(net)22 b(Service)h(Construction) h(with)f(Scalable)g(Distributed)161 2037 y(Data)28 b(Structures.)40 b Fc(http://www.cs.berkeley.edu/-)161 2128 y (~gribble/papers/quals/sdds-cl)q(uster)q(.ppt)q Fn(.)38 2263 y([9])j(Jo)r(e)37 b(Hellerstein,)j(Eric)d(Brew)n(er,)j(and)c(Mik)n (e)g(F)-6 b(ranklin.)161 2354 y(T)g(elegraph:)64 b(A)40 b(Univ)n(ersal)g(System)f(for)i(Information.)161 2446 y Fc(http://db.cs.berkeley.edu/tel)q(egrap)q(h/)p Fn(.)0 2581 y([10])i(Jason)57 b(Maassen,)66 b(Rob)55 b(v)l(an)g(Nieu)n(wp)r(o) r(ort,)65 b(Ronald)161 2672 y(V)-6 b(eldema,)34 b(Henri)e(E.)h(Bal,)j (and)d(Ask)n(e)f(Plaat.)56 b(An)32 b(e\016-)161 2763 y(cien)n(t)23 b(implemen)n(tation)f(of)i(Ja)n(v)l(a's)g(Remote)f(Metho) r(d)g(In-)161 2855 y(v)n(o)r(cation.)35 b(In)25 b Fm(Pr)l(o)l(c)l(e)l (e)l(dings)30 b(of)d(PPoPP'99)p Fn(,)f(Ma)n(y)g(1999.)0 2990 y([11])43 b(S.)32 b(Matsuok)l(a,)i(H.)d(Oga)n(w)n(a,)k(K.)d(Shim)n (ura,)g(Y.)g(Kim)n(ura,)161 3081 y(K.)g(Hotta,)i(and)e(H.)g(T)-6 b(ak)l(agi.)55 b(Op)r(enJIT:)33 b(A)f(Re\015ectiv)n(e)161 3172 y(Ja)n(v)l(a)43 b(JIT)h(Compiler.)87 b(In)43 b Fm(Pr)l(o)l(c.)h (of)f(OOPSLA)h('98,)161 3264 y(Workshop)28 b(on)f(R)l(e\015e)l(ctive)h (Pr)l(o)l(gr)l(amming)f(in)f(C++)g(and)161 3355 y(Java)p Fn(.)35 b Fc(http://openjit.is.titech.ac.)q(jp/)p Fn(.)0 3490 y([12])43 b(Jos)n(\023)-36 b(e)94 b(Moreira,)111 b(Sam)92 b(Midki\013,)109 b(and)92 b(Manish)161 3581 y(Gupta.)145 b(F)-6 b(rom)61 b(\015op)i(to)g(mega\015ops:)108 b(Ja)n(v)l(a)63 b(for)161 3673 y(tec)n(hnical)j(computing.)152 b(In)65 b Fm(Pr)l(o)l(c)l(e)l(e)l(dings)h(of)e(the)161 3764 y(11th)83 b(Workshop)g(on)f(L)l(anguages)i(and)e(Compil-)161 3855 y(ers)61 b(for)g(Par)l(al)t(lel)f(Computing)i(\(LCPC'98\))p Fn(,)71 b(1998.)161 3947 y Fc(http://www.research.ibm.com/n)q(inja/)q Fn(.)0 4082 y([13])43 b(Greg)21 b(Morrisett,)i(Karl)d(Crary)-6 b(,)21 b(Neal)g(Glew,)h(Dan)e(Gross-)161 4173 y(man,)51 b(Ric)n(hard)45 b(Sam)n(uels,)52 b(F)-6 b(rederic)n(k)45 b(Smith,)51 b(Da)n(vid)161 4264 y(W)-6 b(alk)n(er,)24 b(Stephanie)g(W)-6 b(eiric)n(h,)24 b(,)g(and)g(Stev)n(e)f(Zdancewic.) 161 4356 y(T)-6 b(ALx86:)44 b(A)29 b(realistic)j(t)n(yp)r(ed)d(assem)n (bly)h(language.)50 b(In)161 4447 y Fm(1999)25 b(A)n(CM)f(SIGPLAN)g (Workshop)i(on)e(Compiler)g(Sup-)161 4538 y(p)l(ort)29 b(for)e(System)i(Softwar)l(e)p Fn(,)e(Ma)n(y)f(1999.)0 4673 y([14])43 b(Christian)e(Nester,)j(Mic)n(hael)d(Philippsen,)j(and) 39 b(Bern-)161 4765 y(hard)32 b(Haumac)n(her.)51 b(A)32 b(more)f(e\016cien)n(t)h(RMI)g(for)g(Ja)n(v)l(a.)161 4856 y(In)22 b Fm(A)n(CM)j(Java)h(Gr)l(ande)h(Confer)l(enc)l(e)f(1999)p Fn(,)f(June)e(1999.)0 4991 y([15])43 b(Sun)17 b(Microsystems)i(Inc.)j (En)n(terprise)c(Ja)n(v)l(a)h(Beans)g(T)-6 b(ec)n(h-)161 5082 y(nology)g(.)35 b Fc(http://java.sun.com/products/ej)q(b/)p Fn(.)0 5217 y([16])43 b(Sun)25 b(Microsystems)i(Inc.)35 b(Ja)n(v)l(a)27 b(HotSp)r(ot)e(P)n(erformance)161 5309 y(Engine.)152 b Fc(http://java.sun.com/product)q(s/ho)q(t-)161 5400 y(spot/index.html)p Fn(.)2010 83 y([17])43 b(Sun)67 b(Microsystems)i(Inc.)161 b(Ja)n(v)l(a)68 b(Nativ)n(e)g(In)n(ter-)2171 174 y(face)57 b(Sp)r(eci\014cation.)127 b Fc(http://java.sun.com/pro-) 2171 266 y(ducts/jdk/1.2/docs/guide/jni/)q(index)q(.htm)q(l)p Fn(.)2010 390 y([18])43 b(Sun)17 b(Microsystems)i(Inc.)j(Jini)d (Connection)f(T)-6 b(ec)n(hnology)g(.)2171 482 y Fc (http://www.sun.com/jini/)p Fn(.)2010 606 y([19])43 b(Sun)36 b(Microsystems,)41 b(Inc.)67 b(The)38 b(K)e(Virtual)h(Mac)n(hine)2171 697 y(\(KVM\).)d Fc(http://java.sun.com/products/k)q(vm/)p Fn(.)2010 822 y([20])43 b(Sun)169 b(Microsystems)i(Labs.)465 b(The)2171 913 y(Exact)240 b(Virtual)g(Mac)n(hine)h(\(EVM\).)2171 1005 y Fc(http://www.sunlabs.com/resear)q(ch/ja)q(va-t)q(opic)q(s/)p Fn(.)2010 1129 y([21])43 b(Hiromitsu)48 b(T)-6 b(ak)l(agi,)55 b(Satoshi)49 b(Matsuok)l(a,)55 b(Hidemoto)2171 1220 y(Nak)l(ada,)37 b(Satoshi)f(Sekiguc)n(hi,)h(Mitsuhisa)f(Satoh,)h(and)2171 1312 y(Ump)r(ei)d(Nagashima.)65 b(Nin\015et:)53 b(A)35 b(migratable)i(paral-)2171 1403 y(lel)g(ob)t(jects)f(framew)n(ork)h (using)f(Ja)n(v)l(a.)65 b(In)35 b Fm(A)n(CM)h(1998)2171 1494 y(Workshop)c(on)e(Java)h(for)f(High-Performanc)l(e)i(Network)2171 1586 y(Computing)p Fn(,)g(1998.)50 b Fc(http://www.cs.ucsb.edu/con-) 2171 1677 y(ferences/java98/papers/ninfle)q(t.pdf)q Fn(.)2010 1802 y([22])43 b(The)140 b(Ja)n(v)l(a)h(Grande)f(F)-6 b(orum.)375 b(The)2171 1893 y(Ja)n(v)l(a)267 b(Grande)g(F)-6 b(orum)265 b(Charter.)2171 1984 y Fc(http://www.javagrande.org/jgf)q (chart)q(er.h)q(tml)p Fn(.)2010 2109 y([23])43 b(The)22 b(VIA)e(Consortium.)28 b(The)21 b(Virtual)h(In)n(terface)g(Arc)n(hi-) 2171 2200 y(tecture.)34 b Fc(http://www.viarch.org)p Fn(.)2010 2325 y([24])43 b(D.A.)19 b(Th)n(urman.)24 b(jPVM:)c(The)g(Ja) n(v)l(a)g(to)g(PVM)g(in)n(terface.)2171 2416 y Fc (http://www.isye.gatech.edu/ch)q(msr/J)q(avaP)q(VM)p Fn(.)2010 2540 y([25])43 b(T.)30 b(v)n(on)e(Eic)n(k)n(en,)i(A.)f(Basu,) i(V.)e(Buc)n(h,)h(and)f(W.)g(V)-6 b(ogels.)2171 2632 y(U-Net:)47 b(A)32 b(user-lev)n(el)h(net)n(w)n(ork)f(in)n(terface)i (for)f(parallel)2171 2723 y(and)f(distributed)g(computing.)53 b(In)31 b Fm(Pr)l(o)l(c)l(e)l(e)l(dings)36 b(of)d(the)2171 2814 y(15th)21 b(A)n(nnual)f(Symp)l(osium)g(on)g(Op)l(er)l(ating)h (System)g(Prin-)2171 2906 y(ciples)p Fn(,)26 b(Decem)n(b)r(er)f(1995.) 2010 3030 y([26])43 b(M.)32 b(W)-6 b(elsh,)33 b(A.)f(Basu,)i(and)d(T.)h (v)n(on)f(Eic)n(k)n(en.)52 b(Incorp)r(o-)2171 3122 y(rating)19 b(memory)e(managemen)n(t)g(in)n(to)i(user-lev)n(el)g(net)n(w)n(ork)2171 3213 y(in)n(terfaces.)49 b(In)29 b Fm(Pr)l(o)l(c)l(e)l(e)l(dings)34 b(of)e(Hot)g(Inter)l(c)l(onne)l(cts)j(V)p Fn(,)2171 3304 y(August)25 b(1997.)2010 3429 y([27])43 b(A.)29 b(W)-6 b(o)r(o,)30 b(Z.)f(Mao,)i(and)e(H.)g(So.)44 b(The)29 b(Berk)n(eley)g(JA)-9 b(WS)2171 3520 y(Pro)t(ject.)99 b Fc(http://www.cs.berkeley.edu/~)q(awoo)q(/-)2171 3611 y(cs262/jaws.html)p Fn(.)2010 3736 y([28])43 b(P)n(eng)105 b(W)-6 b(u,)124 b(Sam)104 b(Midki\013,)125 b(Jos)n(\023)-36 b(e)106 b(Moreira,)2171 3827 y(and)h(Manish)h(Gupta.)279 b(Impro)n(ving)106 b(Ja)n(v)l(a)2171 3919 y(P)n(erformance)135 b(Through)h(Seman)n(tic)e(Inlining.)2171 4010 y Fc (http://www.research.ibm.com/n)q(inja/)q Fn(.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF