%!PS-Adobe-2.0 %%Creator: dvips 5.526 Copyright 1986, 1994 Radical Eye Software %%Title: am_report.dvi %%CreationDate: Tue Feb 7 16:06:10 1995 %%Pages: 17 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips am_report.dvi -o am_report.ps %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1995.02.07:1508 %%BeginProcSet: tex.pro /TeXDict 250 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 4 get round 4 exch put dup dup 5 get round 5 exch put 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 add]{ ch-image}imagemask restore}B /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 showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 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 product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{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 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 false 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 40258431 52099146 1000 300 300 (/a/rudolph/snow/homes/mucci/am/report/am_report.dvi) @start /Fa 25 121 df<60F0F06004047D830A>46 D<60F0F06000000000000060F0F0 60040E7D8D0A>58 D<7FFFF8603818403808403808803804803804803804003800003800 003800003800003800003800003800003800003800003800003800003800003800003800 00380003FF8016177F9619>84 D<3FC0706070302038003803F81E3830387038E039E039 E07970FF1F1E100E7F8D12>97 DI<07F01838303870106000E000E000E000E000 600070083008183007C00D0E7F8D10>I<003E00000E00000E00000E00000E00000E0000 0E00000E00000E0007CE001C3E00300E00700E00600E00E00E00E00E00E00E00E00E0060 0E00700E00301E00182E0007CF8011177F9614>I<0FC0186030307038E018FFF8E000E0 00E000600070083010183007C00D0E7F8D10>I<03E006700E701C201C001C001C001C00 1C00FF801C001C001C001C001C001C001C001C001C001C001C001C007F800C1780960B> I<0F9E18E33060707070707070306018C02F80200060003FE03FF83FFC600EC006C006C0 06600C38380FE010157F8D12>II<307878300000000000F83838383838383838 38383838FE07177F960A>I107 DIII<07 C018303018600C600CE00EE00EE00EE00EE00E701C3018183007C00F0E7F8D12>II<07C2001C260038 1E00700E00600E00E00E00E00E00E00E00E00E00600E00700E00301E001C2E0007CE0000 0E00000E00000E00000E00000E00003F8011147F8D13>II<1F4060C0C040C040E000FF007F 801FC001E080608060C060E0C09F000B0E7F8D0E>I<080008000800180018003800FFC0 380038003800380038003800380038403840384038401C800F000A147F930E>II119 DI E /Fb 1 50 df<187898181818181818181818181818FF08107D8F0F>49 D E /Fc 29 120 df<78FCFCFCFC7806067D850D>46 D<00600001E0000FE000FFE000F3 E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003 E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A 18>49 D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007 C00007C0000F80001F00001E0000380000700000E0000180600300600600600800E01FFF C03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<07F8001FFE003C1F003C0F807C07C07E 07C07C07C03807C0000F80000F80001E00003C0003F800001E00000F800007C00007C000 07E03007E07807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A18>I< 000180000380000780000F80001F80003F80006F8000CF80008F80018F80030F80060F80 0C0F80180F80300F80600F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80 000F8000FFF800FFF8151B7F9A18>I<00038000000380000007C0000007C0000007C000 000FE000000FE000001FF000001BF000003BF8000031F8000031F8000060FC000060FC00 00E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F8007001FC006000FC0 06000FC00C0007E00C0007E0FF803FFEFF803FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000 607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000 007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC 00001FE0001B1C7D9B22>67 DI70 D73 D77 DI<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060 E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>84 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07 C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<03FC000E0E001C1F00 3C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C0180 1C03000E0E0003F80011127E9115>99 D<000FF0000FF00001F00001F00001F00001F000 01F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0F8 01F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C 1B>I<03FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000 F800007800007800603C00601E00C00F038001FC0013127F9116>I<007F0001E38003C7 C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80 007FF0007FF000121D809C0F>I 104 D<1E003F003F003F003F001E000000000000000000000000007F007F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F00FFC0FFC00A1E7F9D0E>I107 DIII<01FC000F07801C 01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800F87800F07800F03C 01E01E03C00F078001FC0015127F9118>II114 D<0300030003000300070007000F00 0F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F080798 03F00E1A7F9913>116 D119 D E /Fd 42 122 df<000FF83F00007FFD FFC001F81FE3E003E03F87E007C03F87E00F803F07E00F803F03C00F801F00000F801F00 000F801F00000F801F00000F801F00000F801F0000FFFFFFFC00FFFFFFFC000F801F0000 0F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F 801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F80 1F00000F801F00000F801F00007FF0FFF0007FF0FFF00023237FA221>11 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFF E07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8 FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E00003800 00700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF0 15207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03 F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00 FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C >I<0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001 C7E00187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFFFFFFFF00 07E00007E00007E00007E00007E00007E00007E000FFFF00FFFF18207E9F1C>I<300020 3E01E03FFFC03FFF803FFF003FFE003FF80033C00030000030000030000030000031FC00 37FF003E0FC03807E03003E00003F00003F00003F80003F83803F87C03F8FE03F8FE03F8 FC03F0FC03F07007E03007C03C1F800FFF0003F80015207D9F1C>I<001F8000FFE003E0 7007C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80 F0FF00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E00 7C1E00F80F00F00783E003FFC000FF0017207E9F1C>I<000070000000007000000000F8 00000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE00 0000067F000000067F0000000C7F8000000C3F8000000C3F800000181FC00000181FC000 00301FE00000300FE00000700FF000006007F000006007F00000C007F80000FFFFF80001 FFFFFC00018001FC00018001FC00030001FE00030000FE00070000FF000600007F000600 007F00FFE007FFF8FFE007FFF825227EA12A>65 DI68 DI72 D77 DI80 D82 D<01FE0207FF861F01FE3C007E7C001E78000E78000EF80006F80006FC0006FC00 00FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F0000 3F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF801822 7DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E0 03F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F8000001FFFFF00001FFFFF00022227EA127 >II<0F FC003FFF807E07C07E03E07E01E07E01F03C01F00001F00001F0003FF003FDF01FC1F03F 01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC00 00FC0000FC0000FC00007C00007E00007E00003E00181F00300FC06007FFC000FF001516 7E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E 0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E 003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E 00FC003E00FC003E007C003E007C003E003E007E001F00FE000F83BE0007FF3FC001FC3F C01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FF FFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000 FF0015167E951A>I<001FC0007FE000F1F001E3F003E3F007C3F007C1E007C00007C000 07C00007C00007C00007C000FFFE00FFFE0007C00007C00007C00007C00007C00007C000 07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000 3FFC003FFC00142380A211>I<01FE0F0007FFBF800F87C7801F03E7801E01E0003E01F0 003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C0000FFF800009FE00 0018000000180000001C0000001FFFE0000FFFF80007FFFE001FFFFF003C003F0078000F 80F0000780F0000780F0000780F000078078000F003C001E001F007C000FFFF80001FFC0 0019217F951C>II<1C003E007F007F007F003E001C000000000000000000000000 000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F00FFE0FFE00B247EA310>I107 DIII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC00 7EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FF C000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007FF8003F FE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011 167E9516>I<0180000180000180000180000380000380000780000780000F80003F8000 FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F81800F81800F81800F81800F81800F830007C30003FE0000F80011207F9F16> II119 DII E /Fe 2 59 df<0600C00700E00E01C00E01C00E01 C00E01C01C03801C03801C03801C03803807203807203807203C0F207C334077C1C07000 00700000E00000E00000E00000E00000C0000013177F8F17>22 D<60F0F06004047D830B >58 D E /Ff 36 122 df45 D<03C00C301818300C300C700E60 066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E30 0C300C18180C3007E0101D7E9B15>48 D<010007003F00C7000700070007000700070007 0007000700070007000700070007000700070007000700070007000700070007000700FF F80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C 001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07 E01830201C201C781E780E781E381E001C001C00180030006007C00030001C001C000E00 0F000F700FF80FF80FF80FF00E401C201C183007C0101D7E9B15>I<000C00000C00001C 00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C 00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C 0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E02C3030 18301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E 9B15>I<00F0030C04040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006 E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<400000 7FFF807FFF007FFF00400200800400800400800800001000001000002000006000004000 00C00000C00001C000018000018000038000038000038000038000078000078000078000 078000078000078000030000111D7E9B15>I<03E00C301008200C200660066006700670 067C0C3E183FB01FE007F007F818FC307E601E600FC007C003C003C003C0036002600430 0C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007 E0076007700F300F18170C2707C700060006000E300C780C78187018203010C00F80101D 7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<00060000000600 0000060000000F0000000F0000000F000000178000001780000037C0000023C0000023C0 000043E0000041E0000041E0000080F0000080F0000080F000010078000100780001FFF8 0002003C0002003C0002003C0004001E0004001E000C001F000C000F001E001F00FF00FF F01C1D7F9C1F>65 D70 D85 D<1FC000307000783800781C00301C00001C0000 1C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F870012 127E9115>97 DI<03F80C0C181E30 1E700C6000E000E000E000E000E000E00060007002300218040C1803E00F127F9112>I< 001F8000038000038000038000038000038000038000038000038000038000038003F380 0E0B80180780300380700380600380E00380E00380E00380E00380E00380E00380600380 7003803003801807800E1B8003E3F0141D7F9C17>I<07E00C301818300C700E6006E006 FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E06 1E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E007FE00F1D809C0D>I<00038007C4C01C78C03838803018 00701C00701C00701C00701C003018003838001C700027C0002000002000003000003FF8 001FFF001FFF802003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C 7F9215>II<18003C003C00180000 00000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C00FF80091D7F9C0C>I107 D III<03F0000E1C00180600300300700380600180E001C0 E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F 9115>II114 D<1F9020704030C010C010 E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<040004 00040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C101C 101C101C101C100C100E2003C00C1A7F9910>III121 D E /Fg 20 122 df<0180038006000C001C001800380070 0070007000E000E000E000E000E000E000E000E000E000700070007000380018001C000C 00060003800180091D799914>40 D<80C0603038181C0E0E0E0707070707070707070E0E 0E1C18383060C080081D7C9914>I<1FC0007FF000707800201800001C00001C0007FC00 1FFC003C1C00701C00E01C00E01C00E01C00707C003FFF800F8F8011107E8F14>97 D<03F80FFE1C0E380470006000E000E000E000E00060007000380E1C1E0FFC03F00F107E 8F14>99 D<007E00007E00000E00000E00000E00000E00000E0007CE000FFE001C3E0030 1E00700E00E00E00E00E00E00E00E00E00E00E00E00E00700E00301E00383E001FEFC007 CFC012177F9614>I<07E00FF01C38301C700CE00EE00EFFFEFFFEE00060007000380E1C 1E0FFC03F00F107E8F14>I<00FC01FE038E07040700070007007FFEFFFE070007000700 070007000700070007000700070007000700FFF8FFF80F177F9614>I<07CF001FFF8038 3B80301800701C00701C00701C003018003838003FF00037C0007000007000003FF8001F FC003FFE00700F00E00380E00380E00380E003807007003C1E001FFC0007F00011197F8F 14>I<06000F000F0006000000000000000000FF00FF0007000700070007000700070007 0007000700070007000700FFF8FFF80D187C9714>105 D107 DI II<07C01FF03C78701C701CE00EE00EE00E E00EE00EE00E701C783C3C781FF007C00F107E8F14>II114 D<0FD83FF86038C038C038F0007F803FF007F8001C60 06E006F006F81CFFF8CFE00F107E8F14>I<06000E000E000E000E007FFCFFFC0E000E00 0E000E000E000E000E000E000E0E0E0E0E0E0E1C07F801F00F157F9414>I118 D121 D E /Fh 47 122 df<0003FE000E03001C0700180600380000380000380000700000700000700007 FFFC00701C00E03800E03800E03800E03800E07001C07001C07001C07001C0E401C0E403 80E40380E4038068038030030000070000070000660000E60000CC000078000018218199 16>12 D<183C3C1C08080810204080060B78990C>39 D45 D<3078F06005047C830C>I<0000080000180000180000300000300000600000600000C0 0000C0000180000300000300000600000600000C00000C00001800003000003000006000 00600000C00000C0000180000300000300000600000600000C00000C0000180000180000 300000600000600000C0000080000015257F9B14>I<000800180030007001F00E7000E0 00E000E000E001C001C001C001C0038003800380038007000700070007000F00FFE00D18 7C9714>49 D<007C000186000703000E03000C03801C0380380380380380380380380780 380700380F001817000C270007CE00000E00000C00001C00001800E03000E0600080C000 C380003E000011187C9714>57 D<060F1E0C00000000000000003078F06008107C8F0C> I<0000200000600000E00000E00001E00001F00002700002700004700008700008700010 7000107000207000407000407000803800FFF80100380200380200380400380400380800 38180038FE01FF181A7E991D>65 D<03FFF800700E00700600700700E00700E00700E007 00E00701C00E01C01C01C03801C07003FFE003807803803803801C07001C07001C07001C 07001C0E00380E00380E00700E00E01C03C0FFFF00181A7D991B>I<000F8200706200C0 1603801E07000C0E000C1C000C18000C380008300008700000700000E00000E00000E000 00E00000E00020E00020E00020E000406000406000803001001006000C180003E000171A 7A991B>I<03FFF80000700E00007007000070030000E0018000E0018000E0018000E001 C001C001C001C001C001C001C001C001C003800380038003800380038003800300070007 000700070007000E0007000C000E001C000E0038000E0070000E00E0001C038000FFFE00 001A1A7D991D>I<03FFFF00700700700300700100E00100E00100E00100E00101C08001 C08001C08001C18003FF000381000381000381000702000700000700000700000E00000E 00000E00000E00001E0000FFC000181A7D9919>70 D<000FC100302100C01301800F0700 060E00060C0006180006380004300004700000700000E00000E00000E00000E007FEE000 70E00070E00070E000706000E06000E03000E01801E00C064003F840181A7A991E>I<03 FF1FF800700380007003800070038000E0070000E0070000E0070000E0070001C00E0001 C00E0001C00E0001C00E0003FFFC0003801C0003801C0003801C00070038000700380007 003800070038000E0070000E0070000E0070000E0070001C00E000FF87FC001D1A7D991D >I<03FF00700070007000E000E000E000E001C001C001C001C003800380038003800700 0700070007000E000E000E000E001C00FF80101A7D990F>I<00FFC0000E00000E00000E 00001C00001C00001C00001C000038000038000038000038000070000070000070000070 0000E00000E00000E00000E00061C000E1C000E180008380004700003C0000121A7C9914 >I<03FF0000700000700000700000E00000E00000E00000E00001C00001C00001C00001 C0000380000380000380000380000700000700100700100700200E00200E00600E00400E 00C01C0380FFFF80141A7D9918>76 D<03F8001FC00078003C000078003C000078005C00 00B800B80000B800B800009C013800009C013800011C027000011C027000011C04700001 1C087000021C08E000021C10E000021C10E000021C20E000041C41C000041C41C000041C 81C000041C81C000080F038000080F038000080E038000180C038000180C070000FE083F E000221A7D9922>I<03F007F8007800C00078008000780080009C0100009C0100009C01 00008E0100010E02000106020001070200010702000203840002038400020384000201C4 000401C8000401C8000400E8000400E8000800F000080070000800700018007000180020 00FE0020001D1A7D991D>I<001F8000706001C03003001806001C0E000C1C000C18000E 38000E30000E70000E70000EE0001CE0001CE0001CE00038E00038E00030E00070E000E0 E000C06001807003003806001C1C0007E000171A7A991D>I<03FFF800701C0070060070 0700E00700E00700E00700E00701C00E01C00E01C01C01C03803806003FF800380000380 000700000700000700000700000E00000E00000E00000E00001C0000FF8000181A7D991A >I<003F1000609001807001007003002006002006002006002006000007000007C00003 F80001FE00007F00000F8000038000018000018020018020018060030060030060060070 0C00C8180087E000141A7D9916>83 D<3FFFFC381C0C201C04401C044038048038048038 0480380400700000700000700000700000E00000E00000E00000E00001C00001C00001C0 0001C000038000038000038000038000078000FFF800161A79991B>I<7FE0FF0E00180E 00100E00101C00201C00201C00201C002038004038004038004038004070008070008070 0080700080E00100E00100E00100E00200E00200E004006008006010003860000F800018 1A78991D>I<03CC0E2E181C381C301C701CE038E038E038E038C072C072C07260F26134 1E180F107C8F14>97 D<01E006180C181838301070006000E000E000E000E000E008E010 602030C01F000D107C8F12>99 D<001F8000038000038000038000070000070000070000 0700000E00000E0003CE000E2E00181C00381C00301C00701C00E03800E03800E03800E0 3800C07200C07200C0720060F2006134001E1800111A7C9914>I<01E00E181C08380870 087010FFE0E000E000E000E000E0086010602030C01F000D107C8F12>I<000700000980 001B80003B0000380000300000700000700000700000700007FF0000E00000E00000E000 00E00000E00001C00001C00001C00001C00001C000038000038000038000038000030000 070000070000060000660000E40000CC0000700000112181990C>I<00F300038B800607 000E07000C07001C0700380E00380E00380E00380E00301C00301C00301C00183C001878 0007B800003800003800007000607000E0E000C1C0007F000011177E8F12>I<1F800003 80000380000380000700000700000700000700000E00000E00000E7C000F86001E07001E 07001C07001C0700380E00380E00380E00381C00701C80701C80703880703900E0190060 0E00111A7E9914>I<030706000000000000384C4E8E9C9C1C3838707272E2E464380819 7C980C>I<1F8003800380038007000700070007000E000E000E0E0E131C271C431C801F 003C003F8039C038E070E270E270E270E4E0646038101A7E9912>107 D<1F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E4E830081A7D990A>I<307C 1E00598663009E0783809E0703809C0703809C070380380E0700380E0700380E0700380E 0E00701C0E40701C0E40701C1C40701C1C80E0380C80601807001A107C8F1F>I<307C00 5986009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C80703880 703900E01900600E0011107C8F16>I<01F006180C0C180E300E700E600EE00EE00EE00C E01CE018E030606030C01F000F107C8F14>I<030F000590C009E0C009C06009C06009C0 600380E00380E00380E00380E00701C00701800703800703000E8E000E78000E00000E00 001C00001C00001C00001C0000FF00001317808F14>I<30F05D189E389C189C009C0038 003800380038007000700070007000E00060000D107C8F10>114 D<03E004300830187018601C001F801FC00FE000E00060E060E06080C041803E000C107D 8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800700070007000 7000E100E100E100E200E40038000A177C960D>I<38064C074E0E8E0E9C0E9C0E1C1C38 1C381C381C7039703970393079389A0F0C10107C8F15>I<38184C1C4E1C8E0C9C0C9C0C 1C08380838083810701070107020304018C00F000E107C8F12>I<380C104C0E384E1C38 8E1C189C1C189C1C181C381038381038381038381070702070702070704030704018B880 0F0F0015107C8F19>I<078F0008D18010F38020E18020E00020E00001C00001C00001C0 0001C000038200038200C38200E78400C5880078F00011107E8F12>I<38064C074E0E8E 0E9C0E9C0E1C1C381C381C381C703870387038307838F00F700070006060E0E1C0C18047 003C0010177C8F13>I E /Fi 36 123 df<000E00001E00007E0007FE00FFFE00FFFE00 F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 00FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003FC0FF003F E0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F 000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00 E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFF C0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFF8000F81FE00 1F00FE003F80FF003F807F803F807F803F807F801F807F800F007F800000FF000000FF00 0000FE000001FC000001F8000007F00000FFC00000FFF0000001FC000000FE0000007F00 00007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0 FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF80001B277DA6 22>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000 077E00000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003 807E0007007E000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FF FFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 00FE00003FFFF8003FFFF8003FFFF81D277EA622>I<080003001F803F001FFFFE001FFF FC001FFFF8001FFFF0001FFFE0001FFF80001FFE00001C0000001C0000001C0000001C00 00001C0000001C0000001C7FC0001DFFF8001F80FC001E003E0008003F0000003F800000 1FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE00 1FC0FC001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B27 7DA622>I<0007F800003FFE0000FFFF0001FC078003F00F8007E01FC00FC01FC01FC01F C01F801FC03F800F803F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF8 00FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001F E07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F 0007E07E0003FFFC0000FFF000003FC0001B277DA622>I<000003800000000007C00000 000007C0000000000FE0000000000FE0000000000FE0000000001FF0000000001FF00000 00003FF8000000003FF8000000003FF80000000073FC0000000073FC00000000F3FE0000 0000E1FE00000001E1FF00000001C0FF00000001C0FF00000003C0FF80000003807F8000 0007807FC0000007003FC0000007003FC000000E001FE000000E001FE000001E001FF000 001C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000780007FC0000700003FC00 00F00003FE0000E00001FE0000E00001FE0001E00001FF0001C00000FF0003C00000FF80 FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 D<00003FF001800003FFFE 0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F00000 1F800FF000000F801FE0000007801FE0000007803FC0000007803FC0000003807FC00000 03807F80000003807F8000000000FF8000000000FF8000000000FF8000000000FF800000 0000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F800000 00007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE00000 07000FF00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007 E000000FFFFFC0000003FFFF000000003FF8000029297CA832>67 D73 D77 DI<0000FFE000000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003 F80007F00001FC000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC00000 7F807FC000007FC07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF800000 3FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF800000 3FE0FF8000003FE0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC00000 7F803FC000007F801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003 F80001FC0007F00000FF001FE000003FC07F8000000FFFFE00000000FFE000002B297CA8 34>II82 D<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003 C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000 E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>84 D<03FF80000FFFF0001F01F8003F807E003F807E003F803F001F003F800E003F8000003F 8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F 80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03 FC1E1B7E9A21>97 D<003FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F 007F000E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000 00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E 0000FFFC00003FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800001FE3F80000FFFBF80003F83FF80007 E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF00 03F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003 F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03FFF 8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80 1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC0 01C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F8 7F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFF C0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF 807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F00 7E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80 FC000FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFF FF001FFFFF800FFFFFC007FFFFE01FFFFFF03C0007F07C0001F8F80000F8F80000F8F800 00F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22> II<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0 FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800F C03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007 F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800F C00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FE0000FFE0007FFE007FFF 803FFFE01FFFF007FFF800FFF80007FC6000FCE0007CE0003CF0003CF00038F80038FC00 70FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000 F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807 F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>IIII<3FFFFF803FFFFF803F007F003C00FE003801FE0078 03FC007803F8007007F800700FF000700FE000001FC000003FC000007F8000007F000000 FF000001FE038001FC038003F8038007F803800FF007800FE007801FE007003FC00F003F 801F007F007F00FFFFFF00FFFFFF00191B7E9A1F>122 D E /Fj 80 125 df<00FE7C0381C60603CE0E03841C03801C03801C03801C03801C03801C0380FF FFF01C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C 03801C03801C0380FF8FF0171A809916>11 D<00FE000381000601800E03801C01001C00 001C00001C00001C00001C0000FFFF801C03801C03801C03801C03801C03801C03801C03 801C03801C03801C03801C03801C03801C03801C0380FF8FF0141A809915>I<00FF8003 83800603800E03801C03801C03801C03801C03801C03801C0380FFFF801C03801C03801C 03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF 9FF0141A809915>I<007E1F8001C170400703C060060380E00E0380400E0380000E0380 000E0380000E0380000E038000FFFFFFE00E0380E00E0380E00E0380E00E0380E00E0380 E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380E00E0380 E07F8FE3FC1E1A809920>I<60C0F1E0F9F068D008100810081010201020204040800C0B 7F9913>34 D<60F0F86808080810102040050B7D990B>39 D<00800100020004000C0008 0018003000300030006000600060006000E000E000E000E000E000E000E000E000E000E0 006000600060006000300030003000180008000C00040002000100008009267D9B0F>I< 8000400020001000180008000C0006000600060003000300030003000380038003800380 03800380038003800380038003000300030003000600060006000C000800180010002000 4000800009267E9B0F>I<60F0F07010101020204040040B7D830B>44 DI<60F0F06004047D830B>I<0004000C00180018001800300030 003000600060006000C000C000C00180018001800300030003000600060006000C000C00 0C00180018001800300030003000600060006000C000C0000E257E9B13>I<07E01C3838 1C300C700E60066006E007E007E007E007E007E007E007E007E007E00760066006700E30 0C381C1C3807E010187F9713>I<03000700FF0007000700070007000700070007000700 0700070007000700070007000700070007000700070007007FF80D187D9713>I<0F8010 6020304038803CC01CE01C401C003C003800380070006000C00180010002000404080410 0430083FF87FF8FFF80E187E9713>I<07E01838201C601E700E201E001E001C001C0038 007007E00038001C000E000F000FE00FE00FC00F400E601C183807E010187F9713>I<00 1800180038007800F800B8013802380238043808381838103820384038C038FFFF003800 38003800380038003803FF10187F9713>I<30183FF03FE03F8020002000200020002000 2FC03060203000380018001C001C401CE01CE01C80184038403030E00F800E187E9713> I<01F807040C06180E300E300070006000E000E3E0E418E80CF00EE006E007E007E00760 0760077006300E180C0C3807E010187F9713>I<40007FFF7FFE7FFE4004800880108010 002000400040008001800100030003000700060006000E000E000E000E000E0004001019 7E9813>I<07E01818300C2006600660067006780C3E181F3007C003E00CF8307C601E60 0FC007C003C003C00360022004181807E010187F9713>I<07E01C303018700C600EE006 E006E007E007E0076007700F3017182707C700070006000E000C700C7018603030600F80 10187F9713>I<60F0F060000000000000000060F0F06004107D8F0B>I<60F0F060000000 000000000060F0F0701010102020404004177D8F0B>I<60F0F060000000002060606060 606060606060F0F0F0F0F0F060041A7D920B>I<06000F000F0006000000000000000000 0200020004000400040004000C000800180030007000E000E038E038E018601030601F80 0D1A7E9212>62 D<000C0000000C0000000C0000001E0000001E0000002F000000270000 002700000043800000438000004380000081C0000081C0000181E0000100E0000100E000 03FFF000020070000200700004003800040038000400380008001C0008001C003C001E00 FF00FFC01A1A7F991D>65 DI<003F0201C0C603002E0E00 1E1C000E1C0006380006780002700002700002F00000F00000F00000F00000F00000F000 007000027000027800023800041C00041C00080E000803003001C0C0003F00171A7E991C >IIII<003F020001 C0C60003002E000E001E001C000E001C00060038000600780002007000020070000200F0 000000F0000000F0000000F0000000F0000000F001FFC070000E0070000E0078000E0038 000E001C000E001C000E000E000E000300160001C06600003F82001A1A7E991E>I II<0FFE00700070007000700070 007000700070007000700070007000700070007000700070007000704070E070E07040E0 61C01F000F1A7E9914>IIIII<007F00 0001C1C000070070000E0038001C001C003C001E0038000E0078000F0070000700F00007 80F0000780F0000780F0000780F0000780F0000780F0000780F000078078000F0078000F 0038000E003C001E001C001C000E0038000700700001C1C000007F0000191A7E991E>I< FFFF800E01E00E00700E00780E00380E003C0E003C0E003C0E003C0E00380E00780E0070 0E01E00FFF800E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000 0E0000FFE000161A7F991A>I82 D<0FC21836200E6006C006C002C002C002E00070 007E003FE01FF803FC007E000E00070003800380038003C002C006E004D81887E0101A7E 9915>I<7FFFFF00701C0700401C0100401C0100C01C0180801C0080801C0080801C0080 001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C0000 001C0000001C0000001C0000001C0000001C0000001C0000001C0000001C000003FFE000 191A7F991C>IIIIII91 D<2040204040804080810081008100E1 C0F1E0F1E060C00B0B7A9913>II<1FC000387000383800101C00001C 00001C0003FC001E1C00381C00701C00E01C00E01C80E01C80E03C80705F801F8F001110 7F8F13>97 DI<07F81C1C381C70087000E000E000E000E0 00E000E0007000700438081C1807E00E107F8F11>I<003F000007000007000007000007 0000070000070000070000070000070003E7000C1700180F00300700700700E00700E007 00E00700E00700E00700E00700600700700700380F001C370007C7E0131A7F9915>I<07 C01C3030187018600CE00CFFFCE000E000E000E0006000700438081C1807E00E107F8F11 >I<01F007180E381C101C001C001C001C001C001C00FFC01C001C001C001C001C001C00 1C001C001C001C001C001C001C001C00FF800D1A80990C>I<0FCF001871803030007038 007038007038007038003030001860002FC0006000006000007000003FF0003FFC001FFE 00600F00C00300C00300C00300C00300600600381C0007E00011187F8F13>II<183C3C18000000000000FC1C1C1C1C1C1C1C1C1C1C1C1C1C1CFF08 1A80990A>I<018003C003C001800000000000000000000000000FC001C001C001C001C0 01C001C001C001C001C001C001C001C001C001C001C001C001C001C041C0E180E3007E00 0A2182990C>IIIII<07E01C38300C700E6006E0 07E007E007E007E007E0076006700E381C1C3807E010107F8F13>II<03E1000C 1300180B00300F00700700E00700E00700E00700E00700E00700E0070070070070070038 0F001C370007C700000700000700000700000700000700000700003FE013177F8F14>I< FC781D9C1E1C1E081C001C001C001C001C001C001C001C001C001C001C00FF800E10808F 0F>I<1F2060E04020C020C020F0007F003FC01FE000F080708030C030C020F0408F800C 107F8F0F>I<0800080008000800180018003800FFC03800380038003800380038003800 3800382038203820382018201C4007800B177F960F>IIIIIII124 D E /Fk 7 117 df<000300000007800000078000000FC000000FC000000FC000001BE000 001BE000003BF0000031F0000031F0000060F8000060F80000E0FC0000C07C0000C07C00 01803E0001FFFE0003FFFF0003001F0007001F8006000F8006000F800C0007C0FF803FFC FF803FFC1E1A7F9921>65 D<1FF000383C007C1E007C0F007C0F00380F00000F0000FF00 0FCF003E0F007C0F00F80F00F80F00F80F00F817007C27E01FC3E013117F9015>97 DI<03FC000F0E001C1F003C1F00781F00780E00F80000F8 0000F80000F80000F800007800007800003C01801C03000F060003FC0011117F9014>I< F8F0F9383A7C3A7C3C7C3C383C003C003C003C003C003C003C003C003C00FF80FF800E11 7E9012>114 D<1FD820784018C018C018F000FF807FE03FF007F8003CC00CC00CE00CE0 08F830CFE00E117F9011>I<06000600060006000E000E001E003FF0FFF01E001E001E00 1E001E001E001E001E001E181E181E181E181E180F3003E00D187F9711>I E /Fl 16 118 df<3078FCFC7830060676851A>46 D<003E0001FF8003FFC007C1E00F00 E01E0F703C3FF0387FF07070F870E07870E078E1C038E1C038E1C038E1C038E1C038E1C0 38E1C038E1C03870E07070E0707070E0387FE03C3FC01E0F000F003807C0F803FFF001FF E0003F00151E7E9D1A>64 D<1FF0003FFC007FFE00780F00300700000380000380007F80 07FF801FFF803F8380780380700380E00380E00380E00380700780780F803FFFFC1FFDFC 07F0FC16157D941A>97 D<00FF8003FFC00FFFE01F01E03C00C0780000700000700000E0 0000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003FFC000 FE0014157D941A>99 D<000FC0001FC0000FC00001C00001C00001C00001C00001C00001 C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0E001 C0E001C0E001C07003C07003C03807C03E0FC01FFFF807FDFC01F1F8161E7E9D1A>I<01 F80007FF000FFF801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFFF0E0 00007000007000007800703C00701F01F00FFFE003FF8000FE0014157D941A>I<01F87C 07FFFE0FFFFE1E078C1C03803801C03801C03801C03801C03801C01C03801E07801FFF00 1FFE0039F8003800003800001C00001FFF801FFFE03FFFF878007C70001CE0000EE0000E E0000EE0000E70001C78003C3E00F81FFFF007FFC001FF0017217F941A>103 D<00C00001E00001E00000C0000000000000000000000000000000000000007FE0007FE0 007FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0 0000E00000E00000E00000E0007FFF80FFFFC07FFF80121F7C9E1A>105 D107 D<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C 001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C 007F1F1F00FFBFBF807F1F1F00191580941A>109 D<7E3E00FEFF807FFFC00FC1C00F80 E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00 E00E00E07FC3FCFFE7FE7FC3FC17157F941A>I<01F00007FC001FFF003E0F803C078078 03C07001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E 0F801FFF0007FC0001F00013157D941A>I<7F81F8FF8FFC7F9FFE03FE1E03F80C03E000 03E00003C000038000038000038000038000038000038000038000038000038000038000 7FFF00FFFF007FFF0017157F941A>114 D<07FB801FFF807FFF80780780E00380E00380 E003807800007FC0001FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC0780 FFFF00EFFE00E3F80012157C941A>I<0180000380000380000380000380000380000380 007FFFE0FFFFE0FFFFE00380000380000380000380000380000380000380000380000380 0003800003807003807003807003807001C1E001FFE000FF80003F00141C7F9B1A>I<7E 07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E 00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE00FCFC17157F941A>I E /Fm 24 118 df<70F8F8F87005057C840E>46 D<008003800F80F38003800380038003 800380038003800380038003800380038003800380038003800380038003800380038003 800380038003800380038007C0FFFE0F217CA018>49 D<00030000030000070000070000 0F0000170000170000270000670000470000870001870001070002070006070004070008 0700080700100700200700200700400700C00700FFFFF800070000070000070000070000 0700000700000700000F80007FF015217FA018>52 D<01F000060C000C06001807003803 80700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003 E03803E01805E00C05E00619E003E1E00001C00001C00001C00003800003803003807807 00780600700C002018001030000FC00013227EA018>57 D68 D<03FFE0001F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00 000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F00F80F00 F80F00F80E00F01E00401C0020380018700007C00013237EA119>74 D77 D80 D<1FE000303800780C00780E0030070000070000070000070000FF0007C7001E07003C07 00780700700700F00708F00708F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E001E0E00 1E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F001723 7FA21B>I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F0 0000F00000F00000F000007000007800403800401C00800C010007060001F80012157E94 16>I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E0 0000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0 F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE 17237EA21B>I<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F000 00F00000F00000F00000F000007000007800203800201C00400E008007030000FC001315 7F9416>I<00007003F1980E1E181C0E1838070038070078078078078078078078078038 07003807001C0E001E1C0033F0002000002000003000003800003FFE001FFFC00FFFE030 00F0600030C00018C00018C00018C000186000306000303800E00E038003FE0015217F95 18>103 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FF E7FF18237FA21B>I<1C003E003E003E001C00000000000000000000000000000000000E 007E001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E00FFC00A227FA10E>I<0E0000FE00001E00000E00000E00000E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E0400 0E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E0 0E00F00E00F8FFE3FE17237FA21A>107 D<0E00FE001E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E8072 01C00F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800 E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0 0E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E0 0F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070 0E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800 C03800E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800 F03800E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E 00380E003C0E003C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E 00380F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E 00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E 000E000E000E000E000E000E000E000E000F00FFF010157F9413>114 D<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>117 D E /Fn 18 119 df<000003000000000003000000000003000000000007800000000007 80000000000FC0000000000FC0000000000FC00000000017E00000000013E00000000013 E00000000023F00000000021F00000000021F00000000040F80000000040F80000000040 F800000000807C00000000807C00000001007E00000001003E00000001003E0000000200 3F00000002001F00000002001F00000004000F80000004000F80000004000F8000000800 07C00000080007C00000180007E000001FFFFFE000001FFFFFE00000200003F000002000 01F00000200001F00000400000F80000400000F80000400000F800008000007C00008000 007C00018000007E00010000003E00010000003E00030000003F00030000001F00070000 001F001F8000003F80FFE00001FFFCFFE00001FFFC2E327EB132>65 D77 D 80 D86 D<00FE00000303C0000C00E00010 007000100038003C003C003E001C003E001E003E001E0008001E0000001E0000001E0000 001E00000FFE0000FC1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8 001E04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E008F080F0307F003 FC03E01E1F7D9E21>97 D<0780000000FF80000000FF800000000F800000000780000000 078000000007800000000780000000078000000007800000000780000000078000000007 800000000780000000078000000007800000000780000000078000000007800000000781 FC00000786078000078801C000079000E00007A000700007C00038000780003C00078000 1E000780001E000780001F000780000F000780000F000780000F800780000F800780000F 800780000F800780000F800780000F800780000F800780000F000780000F000780001F00 0780001E000780001E000780003C0007C00038000720007000072000E000061801C00006 060700000401F8000021327EB125>I<001FC00000F0300001C00C00078002000F000200 0E000F001E001F003C001F003C001F007C00040078000000F8000000F8000000F8000000 F8000000F8000000F8000000F8000000F8000000F8000000780000007C0000003C000000 3C0000801E0000800E0001000F0001000780020001C00C0000F03000001FC000191F7E9E 1D>I<003F800000E0E0000380380007003C000E001E001E001E001C000F003C000F007C 000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8000000F8000000F8 000000F8000000F8000000780000007C0000003C0000003C0000801E0000800E0001000F 0002000700020001C00C0000F03000001FC000191F7E9E1D>101 D<0007E0001C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0 007FFF007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F00 78001E003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E00 3C001E003C000F007800070070000780E00009C1C000087F000018000000180000001800 000018000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC01800 01E0300000F070000070E0000038E0000038E0000038E0000038E0000038700000707000 0070380000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<0F001F801F801F 801F800F000000000000000000000000000000000000000000000007807F807F800F8007 800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800FC0FFF8FFF80D307EAF12>105 D<0780FF80FF800F800780 078007800780078007800780078007800780078007800780078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800780078007800FC0FFFCFFFC0E327EB112>108 D<0780FE0000FF830780 00FF8C03C0000F9001E00007A001E00007A000F00007C000F00007C000F000078000F000 078000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1F FF80211F7E9E25>110 D<001FC00000F0780001C01C00070007000F0007801E0003C01C 0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F8 0000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E 0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D1F7E9E21>I<0783 E0FF8418FF887C0F907C07A07C07A03807C00007C00007C0000780000780000780000780 000780000780000780000780000780000780000780000780000780000780000780000780 000780000780000780000FC000FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00 003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000 1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000 400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003 C01001C02001E02000E0400078C0001F00142C7FAB19>I118 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 373 482 a Fn(P)n(ossibilities)20 b(for)i(Activ)n(e)g(Messaging) f(in)g(PVM)814 602 y Fm(Philip)15 b(J.)h(Mucci)773 660 y Fl(mucci@cs.)o(ut)o(k.e)o(du)938 718 y Fm(and)822 776 y(Jac)o(k)g(Dongarra)734 834 y Fl(dongarra@c)o(s.u)o(tk.)o(ed)o(u)815 932 y Fm(Decem)o(b)q(er)e(1994)893 1078 y Fk(Abstract)423 1140 y Fj(Activ)o(e)f(messaging)i(is)f(a)f(comm)o(unications)j(mo)q (del)e(designed)h(around)f(the)f(in-)365 1186 y(teraction)j(of)e(a)h (net)o(w)o(ork)g(in)o(terface)g(and)g(its)g(driving)i(soft)o(w)o(are)e (in)g(an)g(op)q(erating)365 1231 y(system.)31 b(By)17 b(utilizin)q(g)j(this)e(mo)q(del,)i(the)d(user)h(can)g(design)h (applications)h(that)365 1277 y(mak)o(e)11 b(b)q(etter)h(use)f(of)f (the)h(a)o(v)n(ailable)j(computing)f(and)f(comm)o(unication)h (resources.)365 1323 y(Curren)o(tly)m(,)19 b(successful)f(implemen)o (tations)i(exist)e(only)g(for)f(a)f(certain)i(subset)g(of)365 1368 y(w)o(orkstations)f(and)e(net)o(w)o(ork)g(adapters.)24 b(This)15 b(pap)q(er)h(is)f(an)g(exploration)j(in)o(to)e(a)365 1414 y(p)q(ortable)f(implemen)o(tation)h(of)c(activ)o(e)i(messaging)g (for)f(p)q(ossible)i(inclusion)h(to)d(the)365 1460 y(PVM)g(suite,)h(a)f (generalized)i(framew)o(ork)e(for)g(distributed)j(computing.)365 1590 y Fi(1)69 b(In)n(tro)r(duction)365 1673 y Fj(Activ)o(e)16 b(messaging)h(w)o(as)e(\014rst)h(in)o(tro)q(duced)h(at)f(the)f(Univ)o (ersit)o(y)i(of)e(California)j(at)365 1719 y(Berk)o(eley)i(as)e(a)h (means)g(to)f(reduce)h(the)f(comm)o(unication)j(latency)f(inheren)o(t)g (in)365 1764 y(distributed)14 b(computing.)19 b(The)11 b(idea)i(w)o(as)e(driv)o(en)i(b)o(y)f(the)f(discrepancy)j(in)f(p)q (erfor-)365 1810 y(mance)i(b)q(et)o(w)o(een)g(traditional)i(m)o (ultiphase)g(comm)o(unication)g(proto)q(cols)f(and)g(the)365 1856 y(actual)d(access)e(time)h(of)f(the)g(net)o(w)o(ork)g(device.)18 b(The)11 b(concept)h(of)f(AM)f(is)i(as)f(elegan)o(t)365 1901 y(as)g(it)g(is)g(simple.)18 b(When)11 b(an)g(AM)g(arriv)o(es,)h (the)e(address)i(of)e(a)h(user-de\014ned)h(handler)365 1947 y(is)j(read)f(out)g(of)f(the)h(message's)g(header.)20 b(This)15 b(handler)g(is)g(then)f(in)o(v)o(ok)o(ed)h(with)g(a)365 1993 y(the)10 b(p)q(oin)o(ter)h(to)e(the)h(message)g(as)g(its)g (argumen)o(t.)16 b(This)10 b(handler)i(is)e(small)h(and)f(com-)365 2038 y(pact.)17 b(It)12 b(p)q(erforms)g(some)g(\014nite)h(amoun)o(t)g (of)e(w)o(ork,)h(whic)o(h)h(ma)o(y)f(include)i(sending)365 2084 y(a)j(reply)h(AM,)e(and)i(then)f(returns.)29 b(The)17 b(user's)f(program)i(can)f(then)g(con)o(tin)o(ue.)365 2130 y(\(This)f(pro)q(cess)g(is)g(similar)h(to)e(that)g(of)g(an)h(in)o (terrupt-driv)o(en)i(device)e(driv)o(er,)h(the)365 2175 y(critical)h(di\013erence)f(b)q(eing)g(that)f(the)f Fh(user's)f Fj(co)q(de)i(is)g(executed)h(up)q(on)f(reception)365 2221 y(of)e(an)h(in)o(terrupt)h(from)e(the)h(device.\))22 b(The)14 b(role)h(of)f(the)h(user-de\014ned)h(handler)g(is)365 2267 y(merely)f(to)e(\014ll)j(or)d(empt)o(y)h(the)g(data)g(from)g(the)f (net)o(w)o(ork's)h(bu\013ers.)20 b(Usually)c(this)365 2312 y(consists)d(of)d(a)h(simple)i Fg(read\(\))8 b Fj(or)j Fg(memcpy\(\))d Fj(and)j(the)g(setting)h(of)f(a)g(few)f(\015ags)h(that) 365 2358 y(are)16 b(p)q(olled)h(during)g(computation.)27 b(Activ)o(e)16 b(messages)g(are)f(in)o(tended)i(to)f(b)q(e)g(the)365 2403 y(primitiv)o(es)h(up)q(on)f(whic)o(h)f(all)h(other)e(comm)o (unication)j(op)q(erations)g(are)d(based.)22 b(It)365 2449 y(has)11 b(b)q(een)g(sho)o(wn)g(that)f(b)q(oth)h(the)g(t)o(w)o(o)f (phase)h(proto)q(col)h(used)f(in)g(most)f(net)o(w)o(orking)967 2574 y Ff(1)p eop %%Page: 2 2 2 1 bop 365 307 a Fj(stac)o(ks)13 b(and)f(the)g(less)h(common)f(three)g (phase)h(deadlo)q(c)o(k-free)g(proto)q(col)g(map)g(quite)365 353 y(naturally)j(to)c(the)h(AM)g(paradigm[17)r(].)j(This)e(mapping)g (implies)i(that)d(AM)f(m)o(uc)o(h)365 399 y(more)g(closely)i(resem)o (bles)f(the)f(underlying)j(comm)o(unication)f(mo)q(del)f(than)g(do)f (tra-)365 444 y(ditional)19 b(comm)o(unication)f(proto)q(cols.)26 b(Distributed)18 b(applicatio)q(ns)g(can)e(th)o(us)g(b)q(e)365 490 y(redesigned)h(with)e(AM)f(and)i(can)f(realize)h(signi\014can)o(t)h (impro)o(v)o(emen)o(t)f(in)f(e\013ectiv)o(e)365 535 y(bandwidth.)23 b(Activ)o(e)14 b(messages)h(are)f(not)h(the)f(same)g(as)g(remote)h(pro) q(cedure)g(calls)365 581 y(\(RPCs\).)29 b(RPCs)17 b(are)g(hea)o(vyw)o (eigh)o(t)h(pro)q(cedures)h(usually)g(consisting)h(of)c(man)o(y)365 627 y(system)i(calls.)33 b(RPCs)17 b(are)h(often)g(executed)g(in)h(a)e (di\013eren)o(t)j(pro)q(cess)e(from)g(the)365 672 y(one)d(that)f (services)i(the)e(net)o(w)o(ork.)21 b(Moreo)o(v)o(er,)15 b(RPCs)f(are)g(designed)i(to)e(p)q(erform)365 718 y(a)k(signi\014can)o (t)i(n)o(um)o(b)q(er)f(of)e(computations)j(in)f(the)e(user's)h(program) h(only)g(up)q(on)365 764 y(reception)d(of)e(a)g(message.)20 b(A)14 b(program)h(using)g(activ)o(e)g(messaging,)h(on)e(the)g(other) 365 809 y(hand,)e(is)g(w)o(orking)f(all)i(the)d(time)i(and)f(is)h(in)o (terrupted)g(only)g(when)f(there)g(is)h(data)f(to)365 855 y(b)q(e)g(exc)o(hanged.)18 b(The)10 b(job)h(of)f(the)h(handler)h (sp)q(eci\014ed)h(in)e(the)g(message)g(is)g(simply)i(to)365 901 y(extract)f(the)f(data)h(from)f(the)h(net)o(w)o(ork)g(and)g(in)o (tegrate)g(it)g(in)o(to)g(the)g(compute)g(lo)q(op.)365 946 y(In)i(this)g(w)o(a)o(y)m(,)f(computation)i(and)f(comm)o(unication) i(can)e(b)q(e)g(o)o(v)o(erlapp)q(ed|hid)q(in)q(g)365 992 y(m)o(uc)o(h)h(of)f(the)h(latency)h(encoun)o(tered)g(when)f(using)h (to)q(da)o(y's)f(net)o(w)o(orks)g(and)g(their)365 1038 y(asso)q(ciated)g(access)f(metho)q(ds.)423 1083 y(In)c(this)h(pap)q(er) g(w)o(e)f(explore)i(the)e(feasibili)q(t)o(y)j(of)d(dev)o(eloping)j(a)d (PVM-AM)g(la)o(y)o(er.)365 1129 y(An)o(y)j(addition)h(to)e(the)g(PVM)g (suite)h(m)o(ust)g(b)q(e)f(p)q(ortable)i(to)e(a)g(wide)g(range)h(of)f (plat-)365 1175 y(forms.)27 b(Unfortunately)m(,)18 b(the)f(p)q (ortabilit)o(y)i(of)d(a)g(piece)i(of)e(soft)o(w)o(are)g(is)h(often)f (in-)365 1220 y(v)o(ersely)c(prop)q(ortional)i(to)c(its)h(p)q (erformance)h(in)f(driving)i(the)e(hardw)o(are)g(e\016cien)o(tly)m(.) 365 1266 y(Here,)17 b(w)o(e)f(equate)h(go)q(o)q(d)g(p)q(erformance)g (with)g(ac)o(hieving)i(a)d(high)i(p)q(ercen)o(tage)f(of)365 1312 y(the)g(hardw)o(are's)h(theoretical)h(bandwidth.)31 b(F)m(or)17 b(an)g(e\013ectiv)o(e)i(implemen)o(tation)365 1357 y(of)14 b(activ)o(e)g(messaging)i(in)e(PVM,)f(then,)h(a)g (tradeo\013)g(m)o(ust)g(b)q(e)g(made:)k(minimizin)q(g)365 1403 y(net)o(w)o(ork)12 b(access)g(latency)h(while)g(main)o(taining)i (a)d(signi\014can)o(t)i(lev)o(el)f(of)e(p)q(ortabilit)o(y)m(.)365 1534 y Fi(2)69 b(The)23 b(Net)n(w)n(ork)g(In)n(terface)365 1617 y Fj(Activ)o(e)16 b(messages)g(w)o(ere)g(designed)h(to)e(b)q(e)h (as)g(close)g(to)f(the)h(hardw)o(are)g(mo)q(del)h(as)365 1662 y(p)q(ossible.)31 b(In)16 b(this)i(w)o(a)o(y)m(,)f(proto)q(col)h (pro)q(cessing)g(is)g(minimized,)h(ev)o(en)f(when)f(the)365 1708 y(net)o(w)o(ork)c(is)g(somewhat)g(unreliabl)q(e.)19 b(All)14 b(implemen)o(tations)i(assume)d(that)g(a)f(v)o(ery)365 1754 y(small)g(p)q(ercen)o(tage)g(of)e(pac)o(k)o(ets)h(will)h(b)q(e)f (dropp)q(ed)h(\(as)e(a)g(result)i(of)e(collision)q(s,)j(prop-)365 1799 y(agation)18 b(dela)o(y)m(,)g(media)f(qualit)o(y)m(,)h(etc)p Fe(:)6 b(:)g(:)h Fj(\).)26 b(The)16 b(ob)r(jectiv)o(e)h(is)g(to)f(pa)o (y)g(a)h(p)q(erfor-)365 1845 y(mance)12 b(p)q(enalt)o(y)h(only)g(in)g (the)e(infrequen)o(t)i(ev)o(en)o(t)f(that)g(a)g(pac)o(k)o(et)g(is)g (lost.)17 b(Hence,)12 b(a)365 1891 y(v)o(ery)g(simple)g (request-and-reply)i(proto)q(col)e(will)h(su\016ce)e(to)g(get)g(the)g (data)h(through)365 1936 y(reliably)m(.)20 b(This)13 b(proto)q(col)i(will)f(b)q(e)g(co)o(v)o(ered)f(later)h(in)g(the)f(pap)q (er.)423 1982 y(In)h(theory)m(,)g(the)g(AM)g(la)o(y)o(er)h(has)f (direct)h(access)f(to)g(the)g(net)o(w)o(ork)g(device's)h(FI-)365 2028 y(F)o(Os)j(and)h(receiv)o(es)h(in)o(terrupts)f(up)q(on)h(pac)o(k)o (et)e(reception.)34 b(On)19 b(the)f(CM5)g(and)365 2073 y(similar)e(arc)o(hitectures)f(where)e(net)o(w)o(ork)h(in)o(terrupts)h (are)f(not)f(a)o(v)n(ailable,)j(the)e(AM)365 2119 y(la)o(y)o(er)j(p)q (olls)h(the)e(in)o(terface)h(for)f(a)o(v)n(ailable)j(data.)26 b(Unfortunately)m(,)18 b(direct)f(access)365 2165 y(to)f(the)f(net)o(w) o(ork)h(is)g(often)g(v)o(ery)g(di\016cult)h(to)e(ac)o(hiev)o(e.)26 b(In)16 b(fact,)f(man)o(y)h(AM)f(im-)365 2210 y(plemen)o(tations)i (consist)e(of)f(large)h(k)o(ernel)g(patc)o(hes)g(to)f(mak)o(e)h(suc)o (h)f(access)h(easier.)365 2256 y(When)f(using)f(an)g(unreliable)j (transp)q(ort,)d(additional)j(problems)d(m)o(ust)g(b)q(e)g(solv)o(ed.) 365 2302 y(These)e(include)h(\015o)o(w)f(con)o(trol,)h(error)e (detection,)i(pac)o(k)o(et)f(timeouts,)g(and)h(fragmen-)365 2347 y(tation.)18 b(All)13 b(of)g(these)f(problems,)i(as)f(w)o(ell)g (as)g(that)f(of)h(p)q(ortabilit)o(y)m(,)i(can)e(b)q(e)f(solv)o(ed)365 2393 y(b)o(y)17 b(using)h(the)e(op)q(erating)j(system's)d(net)o(w)o (orking)i(proto)q(cols.)29 b(These,)17 b(ho)o(w)o(ev)o(er,)365 2439 y(incur)c(signi\014can)o(t)g(o)o(v)o(erhead)g(and)e(th)o(us)h (limit)h(the)e(p)q(oten)o(tial)i(bandwidth.)19 b(Higher)967 2574 y Ff(2)p eop %%Page: 3 3 3 2 bop 365 307 a Fj(p)q(erformance)17 b(in)o(terfaces)f(are)g(a)o(v)n (ailable.)27 b(Unfortunately)17 b(one)f(m)o(ust)f(ha)o(v)o(e)h(ro)q(ot) 365 353 y(privileges)g(to)d(access)h(them)f(in)h(all)g(commercial)h (Unix)f(implemen)o(tations.)423 399 y(In)h(this)h(pap)q(er)g(w)o(e)f (explore)h(the)f(v)n(arious)i(alternativ)o(es)g(a)o(v)n(ailable)h(in)e (design-)365 444 y(ing)k(a)e(p)q(ortable)i(AM)e(la)o(y)o(er)h(to)g(b)q (e)f(incorp)q(orated)j(in)o(to)e(the)f(PVM)h(suite.)34 b(W)m(e)365 490 y(conclude)18 b(with)d(sp)q(eci\014c)i(suggestions)h (to)d(assist)i(the)e(dev)o(elop)q(er)j(in)e(ac)o(hieving)i(a)365 535 y(higher)d(net)o(w)o(ork)e(throughput.)365 646 y Fd(2.1)56 b(Unrestricted)17 b(Access)365 716 y Fj(The)d(privileged)j (user)e(has)f(basically)j(\014v)o(e)e(options)g(to)f(consider)i(in)f (terms)f(of)g(the)365 761 y(underlying)j(comm)o(unication)g(mec)o (hanism)f(used)e(for)g(activ)o(e)h(message)g(transmis-)365 807 y(sion.)28 b(Three)17 b(of)f(the)g(\014v)o(e)h(comm)o(unication)i (options)f(are)e(related)i(in)f(that)f(they)365 853 y(directly)k(con)o (trol)f(the)f(net)o(w)o(ork)g(device)h(while)g(the)f(other)g(t)o(w)o(o) g(are)g(abstracted)365 898 y(from)13 b(the)g(hardw)o(are.)365 1000 y Fc(2.1.1)48 b(Direct)14 b(Con)o(trol)g(of)h(the)g(Net)o(w)o(ork) 365 1070 y Fj(In)f(the)h(\014rst)f(option,)i(the)e(programmer)h(ma)o(y) f(w)o(ork)h(directly)h(with)e(the)g(net)o(w)o(ork)365 1116 y(in)o(terface's)f(device)f(driv)o(er.)18 b(The)12 b(small)h(o)o(v)o(erhead)f(required)i(to)d(send)h(and)h(receiv)o(e)365 1162 y(a)e(message)g(is)g(of)f(great)h(b)q(ene\014t.)17 b(Usually)12 b(this)f(consists)h(of)e(a)h(system)g(call)g(and)h(the)365 1207 y(time)e(to)f(cop)o(y)g(the)h(data)f(from)g(user)g(space)h(in)o (to)g(k)o(ernel)g(m)o(bufs.)16 b(Ho)o(w)o(ev)o(er,)9 b(a)g(device)365 1253 y(driv)o(er's)16 b Fg(ioctl\(\)s)11 b Fj(can)16 b(presen)o(t)f(quite)h(a)f(c)o(hallenge)i(to)d(the)h(dev)o (elop)q(er.)25 b(These)365 1299 y(calls)11 b(are)e(often)g(not)g(p)q (ortable)i(and)f(p)q(o)q(orly)g(do)q(cumen)o(ted.)18 b(The)9 b(net)o(w)o(ork)g(in)o(terface)365 1344 y(w)o(ould)14 b(b)q(e)g(ha)o(v)o(e)g(to)f(b)q(e)g(p)q(olled)i(for)e(data)h(b)q (ecause)g(most)f(op)q(erating)i(systems)f(will)365 1390 y(not)i(dispatc)o(h)g(hardw)o(are)g(in)o(terrupts)g(to)f(a)g(user)h (pro)q(cess.)24 b(The)14 b(net)o(w)o(ork)i(w)o(ould)365 1436 y(ha)o(v)o(e)i(to)g(b)q(e)g(dealt)g(with)g(on)g(a)g(pac)o(k)o (et-b)o(y-pac)o(k)o(et)h(basis,)g(with)f(fragmen)o(tation)365 1481 y(b)q(eing)f(done)e(b)o(y)h(the)f(user)g(of)g(the)g(AM)g(library)m (.)24 b(Most)16 b(imp)q(ortan)o(t,)g(co)q(de)g(w)o(ould)365 1527 y(ha)o(v)o(e)g(to)f(b)q(e)g(written)h(and)g(rewritten)f(for)g(eac) o(h)h(op)q(erating)h(system,)e(net)o(w)o(orking)365 1572 y(b)q(oard,)20 b(and)f(pac)o(k)o(et)g(format.)32 b(Giv)o(en)19 b(the)g(plethora)g(of)f(connectivit)o(y)j(options)365 1618 y(a)o(v)n(ailable)16 b(to)q(da)o(y)m(,)d(an)h(implemen)o(tation)i (of)d(this)g(t)o(yp)q(e)h(is)f(just)g(not)h(practical.)423 1664 y(Another)j(option)h(is)f(to)g(add)g(a)g(new)g(device)h(driv)o(er) f(in)o(to)h(the)f(k)o(ernel.)29 b(This)365 1709 y(mo)q(dule)15 b(could)g(consist)g(of)e(a)h(v)o(ector)g(of)f(stub)h(functions)h (referencing)g(a)e(real)i(net-)365 1755 y(w)o(ork)i(device's)h(v)o (ector)e(of)h(\014le)g(op)q(erations.)30 b(A)16 b(distributed)j (applicatio)q(n)g(could)365 1801 y(then)c(b)q(e)g(link)o(ed)h(with)f (an)g(AM)f(library)i(that)f(consisted)h(of)e(the)h(AM)f(formatting)365 1846 y(routines)j(and)f(a)f(few)f(customized)j(k)o(ernel)f(traps.)24 b(Once)15 b(suc)o(h)h(a)f(driv)o(er)h(w)o(as)f(in-)365 1892 y(stalled,)e(the)f(user)f(w)o(ould)h Fh(not)e Fj(need)i(to)f(ha)o (v)o(e)g(ro)q(ot)h(privileges)i(to)d(use)g(the)g(net)o(w)o(ork)365 1938 y(device.)26 b(Ob)o(viously)m(,)17 b(this)g(situation)g(presen)o (ts)f(a)g(signi\014can)o(t)i(securit)o(y)e(risk.)25 b(T)m(o)365 1983 y(o)o(v)o(ercome)15 b(suc)o(h)h(a)e(risk,)i(the)e(AM)h(library)h (and)f(the)g(new)f(driv)o(er)i(w)o(ould)g(ha)o(v)o(e)f(to)365 2029 y(incorp)q(orate)e(some)f(sort)f(of)g(authen)o(tication)j(and)d (protection)i(mec)o(hanism.)18 b(All)12 b(of)365 2075 y(the)i(problems)i(of)d(the)h(previous)i(approac)o(h)f(apply)h(here)e (as)g(w)o(ell.)20 b(The)14 b(di\016cult)o(y)365 2120 y(of)h(k)o(ernel)g(hac)o(king)i(and)e(widely)h(v)n(arying)g(formats)e (for)h(loadable)i(device)e(driv)o(ers)365 2166 y(w)o(ould)d(further)f (complicate)i(the)e(dev)o(elop)q(er's)i(job.)j(Ho)o(w)o(ev)o(er,)11 b(it)g(has)h(b)q(een)f(sho)o(wn)365 2212 y(that)f(this)g(approac)o(h)h (can)f(b)q(e)g(v)o(ery)g(successful)h(if)f(the)f(target)h(mac)o(hines)h (are)f(limited)365 2257 y(to)j(the)g(same)f(arc)o(hitecture,)i(op)q (erating)h(system,)d(and)h(net)o(w)o(orking)h(in)o(terface[15)r(].)423 2303 y(The)f(third)g(option)i(in)e(this)h(category)f(of)g(direct)g (device)h(con)o(trol)g(is)g(to)e Fg(mmap\(\))365 2349 y Fj(the)19 b(net)o(w)o(ork)g(in)o(terface)h(in)o(to)g(the)e(user's)h (address)h(space.)35 b(Dealing)21 b(with)f(the)365 2394 y(net)o(w)o(ork)f(w)o(ould)g(require)h(detailed)h(hardw)o(are)e(do)q (cumen)o(tation)h(and)g(complete)967 2574 y Ff(3)p eop %%Page: 4 4 4 3 bop 365 307 a Fj(net)o(w)o(ork)14 b(sp)q(eci\014cation)q(s.)22 b(Con)o(trol)15 b(w)o(ould)g(b)q(e)f(accomplished)j(through)e (register-)365 353 y(based)c(op)q(erations)h(and)e(could)h(p)q(ossibly) i(DMA)d(transfers.)16 b(In)10 b(addition)i(to)e(ha)o(ving)365 399 y(to)15 b(deal)h(with)g(all)g(the)f(problems)i(of)e(the)g(previous) i(t)o(w)o(o)d(approac)o(hes,)j(the)e(in)o(ter-)365 444 y(face)h(w)o(ould)h(ha)o(v)o(e)g(to)e(b)q(e)i(timeshared)g(among)g(m)o (ultiple)h(pro)q(cesses)f(p)q(erforming)365 490 y(net)o(w)o(ork)e(I/O.) e(Nev)o(ertheless,)i(a)f(successful)i(implemen)o(tation)h(of)c(this)i (approac)o(h)365 535 y(has)f(b)q(een)f(ac)o(hiev)o(ed)i(in)f (completely)h(homogeneous)g(en)o(vironmen)o(t[9)r(].)365 638 y Fc(2.1.2)48 b(An)16 b(A)l(TM)g(Implemen)o(tati)o(on)365 707 y Fj(Async)o(hronous)e(T)m(ransfer)d(Mo)q(de)h(\(A)m(TM\))e (consists)j(of)e(a)h(sp)q(eci\014cation)i(for)d(pac)o(k)o(et)365 753 y(format)f(and)g(net)o(w)o(ork)f(switc)o(hing.)18 b(Eac)o(h)10 b(A)m(TM)e(pac)o(k)o(et,)j(or)e(cell,)i(is)f(\014ft)o (y-six)h(b)o(ytes,)365 799 y(fort)o(y)g(of)f(whic)o(h)i(are)f(a)o(v)n (ailable)j(for)c(data.)17 b(A)m(TM)10 b(net)o(w)o(orks)h(ha)o(v)o(e)g (b)q(een)h(praised)g(for)365 844 y(their)h(promise)g(to)e(deliv)o(er)j (high)f(net)o(w)o(ork)f(bandwidth)h(up)q(on)g(demand.)18 b(It)11 b(should)365 890 y(b)q(e)g(noted)h(that)f(these)g(net)o(w)o (orks)g(do)g(not)g(pro)o(vide)h(an)o(y)f(form)g(of)f(reliabil)q(it)o(y) k(or)d(\015o)o(w)365 936 y(con)o(trol.)423 981 y(Activ)o(e)16 b(messaging)g(has)g(b)q(een)g(implemen)o(ted)h(on)f(an)f(A)m(TM)g(net)o (w)o(ork)g(b)o(y)h(us-)365 1027 y(ing)22 b(the)f(F)m(ore)f(Systems)i (SP)m(AR)o(Cstation)g(in)o(terface)f(and)g(140)g(Mb/sec)h(T)m(AXI)365 1073 y(\014b)q(er.)29 b(The)16 b(w)o(ork)h(w)o(as)f(done)i(at)e (Cornell)i(Univ)o(ersit)o(y)h(primarily)g(b)o(y)e(Thorsten)365 1118 y(v)o(on)i(Eic)o(k)o(en,)i(one)e(of)f(the)h(pioneers)h(of)e(activ) o(e)i(messaging.)35 b(V)m(on)18 b(Eic)o(k)o(en)i(and)365 1164 y(his)d(colleagues)h(ac)o(hiev)o(ed)f(a)e(maxim)o(um)i(bandwidth)g (of)e(5.5)h(MB/sec)g(using)h(the)365 1210 y(remote)h(memory)h(access)f (primitiv)o(es)j(outlined)f(in)f(Figure)g(1.2.)32 b(It)18 b(should)h(b)q(e)365 1255 y(noted,)12 b(ho)o(w)o(ev)o(er,)g(that)g (this)g(implemen)o(tation)j(w)o(as)c(highly)j(optimized.)19 b(Through)365 1301 y(co)q(op)q(eration)g(with)e(Sun)g(and)h(F)m(ore,)f (the)f(Cornell)i(group)g(patc)o(hed)f(SunOS)h(and)365 1347 y(installed)c(a)e(device)g(driv)o(er)g(that)g(allo)o(w)o(ed)h (direct)f(access)g(to)f(the)g(net)o(w)o(ork)h(device's)365 1392 y(FIF)o(Os.)30 b(T)m(ransmitting)19 b(a)e(message)h(consisted)h (of)e(formatting)h(a)f(cell,)i(writing)365 1438 y(it)d(to)f(the)g (card's)g(FIF)o(O,)f(and)i(trapping)g(to)f(the)g(k)o(ernel.)24 b(F)m(or)15 b(comparison)i(with)365 1484 y(less)d(optimized)i (strategies,)e(the)f(group)h(wrote)f(a)g(traditional)j(device)f(driv)o (er)f(and)365 1529 y(ac)o(hiev)o(ed)k(4.5)e(MB/sec.)27 b(This)17 b(result)g(agreed)g(quite)g(w)o(ell)h(with)e(F)m(ore)g (Systems')365 1575 y(o)o(wn)h(API,)e(whic)o(h)j(a)o(v)o(eraged)f (around)h(4)e(MB/sec.)28 b(It)16 b(w)o(as)g(found)h(through)h(ex-)365 1621 y(haustiv)o(e)13 b(pro\014ling)g(that)e(throughput)i(w)o(as)e (limited)i(almost)f(en)o(tirely)g(b)o(y)f(the)g(trap)365 1666 y(to)17 b(the)g(k)o(ernel.)29 b(This)17 b(result)h(is)f(not)g (surprising,)j(giv)o(en)e(the)f(small)h(pa)o(yload)h(of)365 1712 y(A)m(TM)13 b(pac)o(k)o(ets.)18 b(T)m(o)13 b(ac)o(hiev)o(e)i(an)o (ything)g(close)f(to)f(maxim)o(um)i(throughput)g(w)o(ould)365 1758 y(require)h(a)e(DMA)g(card)g(with)h(an)f(on)o(b)q(oard)h(pro)q (cessor)h(that)e(automated)h(cell)g(for-)365 1803 y(matting)h(and)g (transmission.)25 b(Also,)16 b(soft)o(w)o(are)f(w)o(ould)h(b)q(e)f (required)i(that)e(w)o(ould)365 1849 y(allo)o(w)i(the)f(user)g(to)f (initiate)j(these)e(ev)o(en)o(ts)g(without)g(su\013ering)i(the)d(o)o(v) o(erhead)i(of)365 1895 y(a)d(trap)g(to)g(the)g(k)o(ernel.)20 b(Despite)15 b(these)f(di\016culties,)i(the)e(p)q(erformance)h(ac)o (hiev)o(ed)365 1940 y(b)o(y)f(the)g(Cornell)h(group)g(is)f(quite)g (impressiv)o(e,)i(esp)q(ecially)h(when)d(compared)g(with)365 1986 y(traditional)i(t)o(wisted)e(pair)g(net)o(w)o(orks[15].)365 2088 y Fc(2.1.3)48 b(A)16 b(FDDI)f(Implemen)o(tati)o(on)365 2158 y Fj(Another)e(proto)q(col)i(gaining)g(in)e(p)q(opularit)o(y)j(is) d(the)g(\014b)q(er)g(optic)h(distributed)h(data)365 2203 y(in)o(terface)e(\(FDDI\).)e(The)g(curren)o(t)h(sp)q(eci\014cation)i (dictates)f(a)e(maxim)o(um)i(through-)365 2249 y(put)f(of)f(100)h (Mb/sec,)g(although)i(progress)e(is)g(b)q(eing)h(made)f(to)o(w)o(ard)g (a)f(200)h(Mb/sec)365 2295 y(sync)o(hronous)j(standard.)j(Eac)o(h)c (FDDI)f(pac)o(k)o(et)g(can)g(b)q(e)g(up)h(to)e(4,352)i(b)o(ytes)f (long,)365 2340 y(appro)o(ximately)18 b(20)d(of)f(whic)o(h)i(are)e(for) h(con)o(trol.)23 b(As)14 b(with)h(A)m(TM)f(and)h(Ethernet,)365 2386 y(FDDI)f(mak)o(es)f(no)h(pro)o(visions)i(for)d(guaran)o(teed)h (deliv)o(ery)h(or)e(data)h(in)o(tegrit)o(y)m(.)19 b(Un-)365 2432 y(lik)o(e)g(Ethernet)f(and)g(A)m(TM,)f(ho)o(w)o(ev)o(er,)h(FDDI)g (is)g(tok)o(en)g(based.)31 b(An)o(y)17 b(mac)o(hine)967 2574 y Ff(4)p eop %%Page: 5 5 5 4 bop 365 307 a Fj(wishing)21 b(to)d(transmit)i(a)e(message)h(m)o (ust)g(\014rst)f(acquire)i(the)f(tok)o(en)g(through)h(a)365 353 y(broadcast)d(op)q(eration.)25 b(Also,)16 b(messages)g(are)f (explicitly)j(forw)o(arded)e(from)f(no)q(de)365 399 y(to)f(no)q(de,)h (instead)g(of)f(b)q(eing)h(allo)o(w)o(ed)h(to)d(propagate)j(along)f (the)f(en)o(tire)h(medium.)365 444 y(This)h(strategy)g(has)g(the)g(p)q (ositiv)o(e)h(e\013ect)f(of)f(eliminating)k(collisions,)g(but)d(it)f (can)365 490 y(cause)f(higher)g(than)g(normal)g(latencies)h(for)e(net)o (w)o(orks)g(with)h(man)o(y)f(no)q(des.)423 535 y(Ric)o(hard)22 b(Martin)g(of)e(the)h(Univ)o(ersit)o(y)i(of)d(California)j(at)d(Berk)o (eley)i(imple-)365 581 y(men)o(ted)12 b(activ)o(e)g(messaging)h(on)e (an)h(FDDI)f(net)o(w)o(ork)g(of)g(four)g(HP)g(P)m(A-RISC)g(w)o(ork-)365 627 y(stations.)23 b(The)14 b(FDDI)h(card)g(in)g(eac)o(h)g(w)o (orkstation)h(w)o(as)e(memory)h(mapp)q(ed)h(in)o(to)365 672 y(eac)o(h)h(comm)o(unicating)i(pro)q(cess)e(and)g(a)g(sp)q(ecial)h (pro)q(cess)f(called)i(the)d(sc)o(heduler.)365 718 y(Through)c(m)o (utual)g(exclusion)i(constructs,)e(the)f(sc)o(heduler)h(allo)o(w)o(ed)h (only)f(one)f(user)365 764 y(pro)q(cess)j(to)f(access)h(the)f(b)q(oard) h(at)f(an)o(y)h(giv)o(en)g(time.)k(The)13 b(\\activ)o(e")h(user)g(pro)q (cess)365 809 y(forw)o(arded)19 b(an)o(y)g(pac)o(k)o(ets)f(not)h (destined)h(for)e(it)g(to)h(the)f(sc)o(heduler,)j(whic)o(h)e(dis-)365 855 y(tributed)d(them)f(accordingly)m(.)25 b(Outgoing)17 b(pac)o(k)o(ets)e(from)f(\\excluded")k(pro)q(cesses)365 901 y(w)o(ere)h(handled)i(in)f(a)f(similar)i(manner.)36 b(Mr.)f(Martin)20 b(ac)o(hiev)o(ed)h(a)e(sustained)365 946 y(transfer)d(rate)g(of)g(12)g(MB/sec)h(with)f(large)h(pac)o(k)o (ets)f(and)h(measured)g(round-trip)365 992 y(latencies)e(as)f(lo)o(w)f (as)h(29)f Fe(\026)p Fj(sec)g(for)g(pac)o(k)o(ets)h(with)g(no)g(pa)o (yload.)19 b(This)14 b(is)g(certainly)365 1038 y(quite)d(an)f (accomplishmen)o(t,)j(esp)q(ecially)f(when)e(compared)h(with)f(the)g(p) q(erformance)365 1083 y(of)k(in)o(terconnection)i(net)o(w)o(orks)e(on)g (to)q(da)o(y's)h(massiv)o(ely)g(parallel)i(pro)q(cessing)f(sys-)365 1129 y(tems.)22 b(Ev)o(en)15 b(though)g(the)g(co)q(de)g(is)g(virtually) i(unp)q(ortable,)g(the)d(algorithms)j(and)365 1175 y(proto)q(cols)e (are)e(univ)o(ersal)j(in)e(their)g(applicabil)q(i)q(t)o(y)m(.)20 b(These)13 b(will)i(b)q(e)e(outlined)j(later)365 1220 y(in)e(the)f(pap)q(er.)365 1323 y Fc(2.1.4)48 b(Indirect)14 b(Con)o(trol)g(of)h(the)g(Net)o(w)o(ork)365 1392 y Fj(Recen)o(tly)m(,) 20 b(OS)d(engineers)j(ha)o(v)o(e)e(started)g(to)f(address)i(the)e (problem)i(of)e(writing)365 1438 y(p)q(ortable)d(co)q(de)f(that)f (deals)i(directly)g(with)e(the)h(net)o(w)o(ork)f(in)o(terface.)18 b(T)m(o)11 b(this)i(end,)365 1484 y(the)f(Data)g(Link)g(Pro)o(vider)h (In)o(terface)f(\(DLPI\))f(w)o(as)h(in)o(tro)q(duced)h(in)f(the)g (System)g(V)365 1529 y(release)h(of)f(Unix.)18 b(Using)12 b(DLPI)h(consists)g(of)f(sp)q(ecifying)i(an)e(option)i(either)f(to)f (the)365 1575 y Fg(socket\(\))e Fj(call)15 b(or)e(through)i(an)e(API)g (of)g(its)h(o)o(wn.)k(DLPI)13 b(do)q(es)h(not)g(require)g(that)365 1621 y(the)d(op)q(erating)i(system)e(pro)o(vide)i(for)e(async)o (hronous)i(or)e(signal-driv)o(en)j(op)q(eration;)365 1666 y(ho)o(w)o(ev)o(er,)d(non)o(blo)q(c)o(kin)q(g)j(routines)e(are)f (part)g(of)f(its)i(sp)q(eci\014cation.)19 b(Unfortunately)m(,)365 1712 y(DLPI)11 b(w)o(as)f(not)h(adopted)h(b)o(y)f(those)g(companies)h (mark)o(eting)g(a)e(OS)h(that)g(w)o(as)f(not)h(a)365 1758 y(System)h(V)e(deriv)n(ativ)o(e.)19 b(Instead,)12 b(these)f(companies)i(c)o(hose)e(to)g(dev)o(elop)i(their)f(o)o(wn)365 1803 y(in)o(terface.)18 b(Nev)o(ertheless,)12 b(the)g(ideas)h(of)e (o\013ering)i(the)f(user)g(simple)h(and)g(complete)365 1849 y(access)18 b(to)f(the)g(media)h(as)f(w)o(ell)h(as)g(abilit)o(y)h (to)e(easily)i(switc)o(h)f(from)f(one)g(pac)o(k)o(et)365 1895 y(format)e(to)h(another)g(seem)f(to)g(ha)o(v)o(e)h(surviv)o(ed.)25 b(If)15 b(PVM)g(do)q(es)h(adopt)g(a)f(system)365 1940 y(daemon,)e(DLPI)e(and)i(its)f(non-System)h(V)e(analogues)i(ma)o(y)f(b) q(e)g(the)g(b)q(est)g(solution.)423 1986 y(An)d(ev)o(en)g(further)h (abstraction)g(from)f(the)g(hardw)o(are)h(is)g(the)f(IP)g(la)o(y)o(er.) 16 b(IP)9 b(o\013ers)365 2032 y(a)h(n)o(um)o(b)q(er)i(of)d(adv)n(an)o (tages.)18 b(F)m(or)10 b(instance,)i(it)f(p)q(erforms)f(a)g(header)h(c) o(hec)o(ksum)g(that)365 2077 y(is)i(essen)o(tially)i(free.)h(Its)c(so)q (c)o(k)o(ets)h(can)f(b)q(e)g(set)g(up)h(to)f(pro)o(vide)i(b)q(oth)e (async)o(hronous)365 2123 y(and)h(non)o(blo)q(c)o(king)i(op)q(eration.) k(And)12 b(most)g(imp)q(ortan)o(t,)h(an)o(y)g(la)o(y)o(er)g(written)f (using)365 2169 y(IP)i(w)o(ould)h(v)o(ery)f(p)q(ortable.)21 b(On)14 b(the)g(other)h(hand,)g(man)o(y)f(of)g(IP's)f(extra)h(features) 365 2214 y(come)g(with)f(a)g(heft)o(y)g(price)h(tag.)k(F)m(or)12 b(example,)j(fragmen)o(tation)f(and)g(reassem)o(bly)365 2260 y(mean)g(that)g(bu\013ering)i(is)f(p)q(erformed)f(in)h(the)f(k)o (ernel.)20 b(This)14 b(in)h(turn)f(means)g(that)365 2306 y(w)o(e)d(m)o(ust)g(incur)h(the)g(cost)f(of)g(allo)q(cating)j(and)d (cop)o(ying)i(blo)q(c)o(ks)g(of)e(memory)g(during)365 2351 y(eac)o(h)j(op)q(eration.)21 b(Another)14 b(feature,)g(\015o)o(w)f (con)o(trol,)i(can)f(a\013ect)g(p)q(erformance)g(b)o(y)365 2397 y(ha)o(ving)h Fh(to)n(o)c Fj(sophisticated)16 b(an)c(algorithm,)j (as)e(w)o(ell)g(as)g(b)o(y)g(\015o)q(o)q(ding)i(the)d(net)o(w)o(ork)365 2443 y(with)g(explicit)i(con)o(trol)e(messages.)17 b(F)m(urthermore,)12 b(these)g(t)o(w)o(o)f(features)g(can)h(cause)967 2574 y Ff(5)p eop %%Page: 6 6 6 5 bop 365 307 a Fj(a)9 b(pro)q(cess)h(to)g(blo)q(c)o(k,)h(th)o(us)e (further)h(a\013ecting)g(p)q(erformance)h(through)f(unnecessary)365 353 y(con)o(text)k(switc)o(hing)h(and)e(k)o(ernel)h(o)o(v)o(erhead.)365 462 y Fd(2.2)56 b(Restricted)17 b(Net)n(w)n(ork)h(Access)365 531 y Fj(T)m(raditionall)q(y)m(,)f(an)o(y)f(user-lev)o(el)g (application)i(that)d(needed)h(net)o(w)o(ork)f(access)g(had)365 577 y(t)o(w)o(o)j(c)o(hoices:)27 b(either)19 b(the)f(TCP)f(or)g(the)h (UDP)g(proto)q(col)h(stac)o(ks.)32 b(Both)18 b(are)g(a)365 623 y(standard)13 b(part)f(of)g(all)h(Unix)g(net)o(w)o(orking)g(pac)o (k)n(ages,)g(and)f(their)h(in)o(terfaces)g(follo)o(w)365 668 y(strict)19 b(guidelines.)35 b(TCP)17 b(and)i(UDP)f(are)g(b)q(oth)h (implemen)o(ted)h(on)f(top)f(of)g(the)365 714 y(IP)e(la)o(y)o(er.)28 b(This)18 b(means)e(that)h(once)g(a)f(pac)o(k)o(et)h(is)g(encapsulated) i(\(and)e(p)q(ossibly)365 760 y(fragmen)o(ted\),)11 b(it)g(is)g(passed) g(to)g(the)f(IP)g(stac)o(k)h(for)f(further)g(pro)q(cessing.)19 b(Both)10 b(TCP)365 805 y(and)17 b(UDP)g(supp)q(ort)g(non)o(blo)q(c)o (kin)q(g)i(op)q(eration)f(and)f(async)o(hronous)i(noti\014cation)365 851 y(up)q(on)f(deliv)o(ery)m(.)28 b(These)16 b(c)o(haracteristics)j (are)d(p)q(erhaps)i(their)f(only)g(similariti)q(es,)365 897 y(for)c(these)g(t)o(w)o(o)g(proto)q(cols)i(are)e(targeted)g(at)g (di\013eren)o(t)i(audiences.)423 942 y(The)h(TCP)g(stac)o(k)h(presen)o (ts)g(a)f(reliable,)k(connection-orien)o(ted)g(data)c(stream)365 988 y(to)g(the)g(application)q(.)28 b(It)16 b(accomplishes)i(complete)f (reliabil)q(it)o(y)i(through)e(v)n(arious)365 1034 y(tec)o(hniques,)i (most)d(of)g(whic)o(h)i(are)e(b)q(ey)o(ond)i(the)e(scop)q(e)h(of)f (this)h(pap)q(er.)28 b(Of)16 b(par-)365 1079 y(ticular)21 b(in)o(terest)f(to)f(us)h(here)f(is)h(the)g(amoun)o(t)g(of)f(o)o(v)o (erhead)h(caused)g(b)o(y)g(eac)o(h.)365 1125 y(In)o(ternal)13 b(bu\013ering,)g(dynamic)g(memory)f(allo)q(cation,)i(timeouts)f(for)e (b)q(oth)h(pac)o(k)o(ets)365 1171 y(and)17 b(bu\013ers,)g(state)e (tables,)i(and)f(explicit)j(con)o(trol)d(messages)h(all)g(require)f (extra)365 1216 y(cycles)i(to)e(manage)i(and)f(are)f(resp)q(onsible)k (for)c(a)g(signi\014can)o(t)j(amoun)o(t)f(of)e(dela)o(y)m(.)365 1262 y(Eac)o(h)g(send)g(p)q(erformed)h(using)g(a)e(deadlo)q(c)o(k-free) i(proto)q(col)g(requires)g(three)f(trips)365 1308 y(o)o(v)o(er)h(the)g (net)o(w)o(ork)g(b)q(efore)g(the)g(reader)g(can)h(con)o(tin)o(ue)g (\(<-)e(request)h(to)g(send,)h(->)365 1353 y(ready-to-receiv)o(e,)f(<-) d(data)h(and)g(->)f(ac)o(kno)o(wledge\).)24 b(Also,)15 b(eac)o(h)g(trip)h(requires)g(a)365 1399 y(message)g(of)f(di\013eren)o (t)h(comp)q(osition.)26 b(Connections)17 b(to)d(eac)o(h)i(host)f(m)o (ust)g(estab-)365 1445 y(lished)d(in)f(adv)n(ance)g(and)f(subsequen)o (tly)i(k)o(ept)e(activ)o(e,)h(placing)i(further)d(demand)g(on)365 1490 y(the)k(k)o(ernel)i(and)e(its)h(resources.)21 b(TCP)13 b(w)o(as)h(designed)i(for)d(comm)o(unicating)k(data)365 1536 y(streams)f(and)g(do)q(es)h(not)e(preserv)o(e)i(message)f(b)q (oundaries,)i(whereas)e(distributed)365 1582 y(computing)g(often)e(in)o (v)o(olv)o(es)j(infrequen)o(t)e(and)g(irregular)h(comm)o(unication)h (of)d(dis-)365 1627 y(crete)c(messages.)16 b(Explicit)c(state)d(of)g (the)h(in)o(terface)g(w)o(ould)g(ha)o(v)o(e)g(to)g(b)q(e)f(main)o (tained)365 1673 y(to)j(prev)o(en)o(t)g(the)g(user)g(from)g(receiving)i (con)o(trol)f(messages.)k(Otherwise,)12 b(incoming)365 1719 y(messages)i(w)o(ould)g(ha)o(v)o(e)f(to)g(b)q(e)g(scanned)i(for)d (headers)i(and)g(pro)q(cessed)g(piecemeal.)365 1764 y(On)h(man)o(y)f (PCs)g(and)h(w)o(orkstations,)h(using)g(TCP)d(can)i(sev)o(erely)g (limit)h(an)f(appli-)365 1810 y(cation's)f(net)o(w)o(ork)e(throughput.) 18 b(The)13 b(p)q(erformance)g(one)g(ac)o(hiev)o(es)g(is)g(frequen)o (tly)365 1856 y(limited)h(b)o(y)e(the)g(p)q(o)o(w)o(er)g(of)f(the)h (CPU)f(and)h(not)g(b)o(y)g(the)g(net)o(w)o(orking)h(device)g(or)f(the) 365 1901 y(sp)q(eed)g(of)f(the)g(medium.)18 b(F)m(or)11 b(our)g(purp)q(oses,)i(its)e(lev)o(el)i(of)e(functionalit)o(y)j(is)e (largely)365 1947 y(unnecessary)m(,)h(esp)q(ecially)i(considering)f (our)d(assumption)j(of)d(a)g(lo)o(w)h(rate)f(of)g(pac)o(k)o(et)365 1993 y(loss.)423 2038 y(The)h(UDP)g(stac)o(k)g(is)h(a)f (connectionless,)j(unreliable,)g(datagram-orien)o(ted)f(ser-)365 2084 y(vice.)j(In)11 b(fact,)g(UDP)g(adds)g(v)o(ery)h(little)g(to)f (IP's)f(functionalit)o(y)n(.)18 b(Its)11 b(only)h(additions)365 2130 y(are)h(an)f(optional)j(c)o(hec)o(ksum)e(of)g(the)f(data,)h(a)f (larger)h(pac)o(k)o(et)g(size)g(\(often)g(4k\),)f(and)365 2175 y(the)i(abilit)o(y)j(to)d(b)q(e)g(used)h(b)o(y)f(non-ro)q(ot)h (users.)20 b(UDP's)14 b(o)o(v)o(erhead)h(is)g(higher)g(than)365 2221 y(IP's,)h(primarily)j(due)d(to)g(the)g(computation)i(of)e(the)g(c) o(hec)o(ksum)g(and)h(the)f(subse-)365 2267 y(quen)o(t)g(formation)g(of) f(the)g(header.)24 b(F)m(or)15 b(the)g(situation)i(where)e(p)q (ortabilit)o(y)j(is)e(of)365 2312 y(the)11 b(utmost)g(imp)q(ortance)i (and)e(ro)q(ot)g(access)g(is)h(not)f(practical,)h(an)f(AM)g(implemen-) 365 2358 y(tation)j(using)h(a)e(UDP-lik)o(e)h(proto)q(col)h(o\013ers)e (the)h(b)q(est)f(c)o(hance)h(of)e(success.)423 2403 y(BSD)k(Unix)g(w)o (as)g(the)f(\014rst)h(to)g(mak)o(e)f(an)h(addition)i(to)d(these)h(t)o (w)o(o)f(proto)q(cols.)365 2449 y(Called)f(the)d(T)m(ransp)q(ort)i(La)o (y)o(er)f(In)o(terface)g(\(TLI\),)e(it)i(is)h(no)o(w)f(a)f(part)h(of)g (most)g(com-)967 2574 y Ff(6)p eop %%Page: 7 7 7 6 bop 365 307 a Fj(mercial)16 b(op)q(erating)g(systems.)21 b(The)14 b(TLI)g(is)g(another)h(lev)o(el)h(of)e(abstraction)i(from)365 353 y(the)10 b(In)o(ternet)g(proto)q(cols)i(and)e(their)h(addressing)h (formats.)j(It)10 b(pro)o(vides)h(the)f(abilit)o(y)365 399 y(to)15 b(implemen)o(t)h(another)g(proto)q(col)g(on)f(top)g(of)f (an)o(y)h(of)g(the)g(existing)h(stac)o(ks.)23 b(F)m(or)365 444 y(example,)14 b(a)d(new)h(proto)q(col)i(could)f(b)q(e)f(de\014ned)h (that)f(could)i(function)f(on)f(an)o(y)h(net-)365 490 y(w)o(ork)h(where)g(hosts)h(w)o(ere)e(sp)q(eaking)j(either)f(TCP)f(or)g (IPX.)f(Unfortunately)m(,)i(TLI)365 535 y(programming)f(in)o(v)o(olv)o (es)g(a)d(lot)i(of)e(co)q(de|particula)q(rly)k(in)e(the)e(area)h(of)g (state)f(con-)365 581 y(trol)k(and)f(main)o(tenance.)21 b(The)14 b(user)g(m)o(ust)g(form)o(ulate)g(a)g(state)g(mac)o(hine)h (capable)365 627 y(of)e(handling)k(an)o(y)d(condition)i(raised)e(from)f (the)h(lo)o(w)o(er)g(la)o(y)o(ers.)19 b(In)13 b(truth,)h(the)f(t)o(w)o (o)365 672 y(la)o(y)o(ers)j(a)o(v)n(ailable)h(to)e(the)f(nonro)q(ot)i (user)f(already)h(handle)g(this,)g(and)f(m)o(uc)o(h)g(w)o(ork)365 718 y(m)o(ust)d(b)q(e)g(duplicated.)19 b(Giv)o(en)13 b(its)f(co)q(ding)h(di\016cult)o(y)h(and)e(the)g(limited)i(n)o(um)o(b)q (er)e(of)365 764 y(proto)q(cols)i(with)f(whic)o(h)g(to)f(w)o(ork,)g (TLI)f(do)q(es)i(not)g(app)q(ear)g(to)f(b)q(e)g(a)g(viable)j(option.) 365 874 y Fd(2.3)56 b(Proto)r(col)18 b(P)n(erformance)365 944 y Fj(As)c(pro)q(cessor)g(sp)q(eeds)h(ha)o(v)o(e)f(increased,)i(the) d(time)i(sp)q(en)o(t)f(pro)q(cessing)i(comm)o(uni-)365 990 y(cation)f(proto)q(cols)f(has)g(b)q(ecome)f(less)h(signi\014can)o (t)i(in)e(terms)f(of)g(a\013ecting)h(net)o(w)o(ork)365 1035 y(throughput.)k(It)12 b(has)g(b)q(een)g(sho)o(wn)g(that)f(for)h (higher)h(sp)q(eed)f(net)o(w)o(orks)g(lik)o(e)h(FDDI,)365 1081 y(most)f(of)f(the)h(time)g(is)h(sp)q(en)o(t)f(in)h(the)e(the)h(k)o (ernel)h(p)q(erforming)g(m)o(buf)f(managemen)o(t,)365 1127 y(data)17 b(mo)o(v)o(emen)o(t)f(and)g(c)o(hec)o(ksum)h (computation.)27 b(Ka)o(y)16 b(and)h(P)o(asquale)g(demon-)365 1172 y(strated)e(that)g(UDP)g(p)q(erforms)g(only)h(ten)e(to)h (\014fteen)g(p)q(ercen)o(t)g(b)q(etter)g(than)g(TCP)365 1218 y(on)j(a)f(DecStation)i(5000[7)q(].)29 b(The)17 b(authors)h(o)o(wn)f(exp)q(erimen)o(ts)i(using)g Fg(netperf)365 1264 y Fj(con\014rmed)d(this)f(fact.)20 b(This)15 b(seems)g(to)f (indicate)i(a)e(fundamen)o(tal)j(problem)e(with)365 1309 y(the)f(w)o(a)o(y)g(data)g(is)g(exc)o(hanged)i(b)q(et)o(w)o(een)e(the)g (user,)g(the)f(k)o(ernel)i(and)g(the)f(comm)o(u-)365 1355 y(nication)h(device.)i(Most)c(op)q(erating)h(systems')e(net)o(w)o (orking)i(co)q(des)e(utilize)j(the)d(4.3)365 1401 y(BSD)i(release)g(of) f(Unix)h(as)f(a)g(reference)g(p)q(oin)o(t,)h(and)g(th)o(us)f(this)h(is) g(not)f(suprising.)423 1446 y(As)d(comm)o(unication)i(bandwidth)g (increases,)g(the)e(industry)i(is)e(slo)o(wly)h(starting)365 1492 y(to)e(realize)h(this)g(shortcoming)g(and)g(is)f(rectifying)i(it)e (through)h(v)n(arious)g(optimizations.[1)s(])365 1538 y(Un)o(til)15 b(these)e(c)o(hanges)h(are)g(made)f(public)j(and)d (applied)j(across)e(a)f(wide)h(v)n(ariet)o(y)g(of)365 1583 y(mac)o(hines,)20 b(the)d(user)g(has)h(but)f(one)g(c)o(hoice)h(to) f(guaran)o(tee)i(the)e(e\016cien)o(t)h(use)f(of)365 1629 y(the)f(mac)o(hines)h(resources.)24 b(That)16 b(is,)g(to)f(use)h(sp)q (ecialized)i(APIs)d(that)h(allo)o(w)h(the)365 1675 y(non-ro)q(ot)c (user)e(to)h(eliminate)h(m)o(uc)o(h)f(of)f(the)h(k)o(ernel)h(from)e (the)g(pro)q(cessing)j(lo)q(op)e(b)o(y)365 1720 y(con)o(trolling)k(the) d(net)o(w)o(ork)h(device)g(directly)m(.)365 1851 y Fi(3)69 b(An)23 b(Activ)n(e)f(Messaging)h(Proto)r(col)365 1934 y Fj(F)m(or)18 b(our)g(AM)f(implemen)o(tation,)k(an)d(N-w)o(a)o(y)f (request-and-reply)j(proto)q(col)f(will)365 1980 y(b)q(e)d(used)g(as)f (outlined)j(in)e(Ric)o(hard)h(Martin's)f(pap)q(er.)25 b(He)15 b(has)h(sho)o(wn)f(that)h(this)365 2025 y(mo)q(del)d(is)f (capable)h(of)f(ac)o(hieving)i(full)f(net)o(w)o(ork)e(bandwidth)j(when) e(using)h(e\016cien)o(t)365 2071 y(net)o(w)o(ork)h(access)h(metho)q(ds) g([9)o(].)k(Initially)n(,)d(a)e(one-w)o(a)o(y)g(mo)q(del)h(will)g(b)q (e)g(presen)o(ted)365 2117 y(for)c(clarit)o(y)m(.)18 b(This)12 b(mo)q(del)h(will)g(subsequen)o(tly)h(b)q(e)d(extended)i(to)e (N)g(w)o(a)o(ys)h(to)f(realize)365 2162 y(higher)k(p)q(erformance.)423 2208 y(The)9 b(request-and-reply)i(proto)q(col)f(dictates)g(that)f(t)o (w)o(o)f(messages)i(b)q(e)f(exc)o(hanged)365 2254 y(for)k(ev)o(ery)g (transaction:)19 b(a)13 b(request)g(and)h(a)e(reply)m(.)18 b(All)c(requests)g Fh(must)e Fj(send)h(a)g(re-)365 2299 y(ply)m(,)j(but)f(no)g(action)g(is)g(required)i(of)d(the)h(user:)20 b(the)15 b(AM)f(library)j(automatically)365 2345 y(sends)g(an)f(empt)o (y)g(ac)o(kno)o(wledgmen)o(t)i(if)e(none)h(is)f(sp)q(eci\014ed.)28 b(The)15 b(proto)q(col)j(also)365 2391 y(prev)o(en)o(ts)d(an)o(y)g (reply)h(handler)g(from)e(accessing)i(the)e(net)o(w)o(ork,)h (e\013ectiv)o(ely)h(elimi-)365 2436 y(nating)f(race)e(conditions.)967 2574 y Ff(7)p eop %%Page: 8 8 8 7 bop 423 307 a Fj(A)20 b(traditional)j(one-w)o(a)o(y)e (request-and-reply)h(proto)q(col)g(w)o(orks)e(as)h(follo)o(ws.)365 353 y(Giv)o(en)f(V)e(no)q(des,)i(eac)o(h)f(no)q(de)g(allo)q(cates)h(t)o (w)o(o)e(tables)i(of)e(length)h(V)f(for)g(outgo-)365 399 y(ing)e(messages.)23 b(The)14 b(\014rst)h(table)h(stores)f(request) g(AMs,)g(and)g(the)g(second)g(stores)365 444 y(replies)d(to)f(requests) g(made)g(from)f(the)g(other)h(no)q(des.)17 b(Eac)o(h)11 b(p)q(osition)i(in)e(eac)o(h)g(table)365 490 y(corresp)q(onds)k(to)e(a) f(\014xed,)i(unique)g(destination)i(address.)i(When)13 b(an)o(y)h(message)f(is)365 535 y(to)e(b)q(e)h(sen)o(t,)g(the)f (bu\013er)h(that)g(corresp)q(onds)h(to)e(its)h(t)o(yp)q(e)f(\(a)g (request)h(or)g(reply\))g(and)365 581 y(its)j(destination)i(address)e (is)g(examined.)22 b(If)13 b(that)h(bu\013er)i(is)e(free,)g(the)g (message)h(is)365 627 y(stamp)q(ed)g(with)f(an)g(instance)h(n)o(um)o(b) q(er)g(\(either)f(0)g(or)f(1\),)h(copied)h(in)o(to)f(the)g(bu\013er,) 365 672 y(and)f(injected)h(in)o(to)f(the)f(net)o(w)o(ork.)17 b(Otherwise,)c(the)f(message)h(will)h(stall)f(and)g(w)o(ait)365 718 y(for)k(the)g(bu\013er)h(to)f(b)q(ecome)h(a)o(v)n(ailable.)32 b(The)17 b(request)h(bu\013er)g(is)f(freed)g(when)h(a)365 764 y(reply)f(with)g(a)f(matc)o(hing)h(instance)h(n)o(um)o(b)q(er)e(is) h(receiv)o(ed.)27 b(The)16 b(reply)h(bu\013er)g(is)365 809 y(freed)g(when)g(a)g(request)h(with)f(a)g(new)f(instance)j(n)o(um)o (b)q(er)e(is)h(receiv)o(ed)g(from)f(the)365 855 y(asso)q(ciated)e(no)q (de.)j(This)13 b(new)g(request)g(means)h(that)f(the)g(previous)h(reply) g(w)o(as)f(re-)365 901 y(ceiv)o(ed)g(and)g(pro)q(cessed)f(b)o(y)g(the)g (sender;)h(hence)f(it)g(is)g(no)g(longer)h(of)f(an)o(y)g(use.)17 b(Note)365 946 y(that)12 b(this)g(proto)q(col)h(allo)o(ws)g(only)g(one) e(outstanding)j(request)e(and)h(reply)f(p)q(er)g(no)q(de)365 992 y(in)i(the)f(table.)18 b(Th)o(us,)13 b(the)g(instance)i(n)o(um)o(b) q(er)f(need)f(b)q(e)h(only)g(a)f(single)i(bit.)423 1038 y(One)i(adv)n(an)o(tage)i(to)e(using)h(a)g(split-phase)h(proto)q(col)g (is)f(that)f(it)h(completely)365 1083 y(eliminates)e(liv)o(elo)q(c)o(k) g(and)e(deadlo)q(c)o(k)h(among)f(comm)o(unicating)i(pro)q(cesses.)i(Ev) o(ery)365 1129 y(request)11 b(is)g(automaticall)q(y)i(paired)f(with)f (a)f(reply)m(.)17 b(Doing)12 b(so)f(a)o(v)o(oids)h(the)e(o)o(v)o (erhead)365 1175 y(caused)k(b)o(y)g(co)q(de)f(asso)q(ciated)i(with)e (the)h(detection)g(of)f(suc)o(h)g(conditions.)423 1220 y(Another)i(adv)n(an)o(tage)h(is)f(that)g(this)h(mo)q(del)g(pro)o (vides)g(a)f(simple)h(and)g(e\016cien)o(t)365 1266 y(form)c(of)f(\015o) o(w)g(con)o(trol.)18 b(An)12 b(o)q(ccupied)h(request)f(bu\013er)h (means)f(that)g(the)f(receiving)365 1312 y(no)q(de)k(has)f(not)h(y)o (et)e(pro)q(cessed)j(the)e(request)g(and)h(sen)o(t)f(the)g(reply)m(.)20 b(An)o(y)14 b(attempt)365 1357 y(to)g(send)g(a)g(request)g(to)g(this)h (no)q(de)f(will)h(stall)g(un)o(til)h(a)e(reply)g(is)h(receiv)o(ed.)20 b(Sophis-)365 1403 y(ticated)14 b(bu\013er)g(managemen)o(t)g(and)f(the) g(explicit)i(exc)o(hange)f(of)f(con)o(trol)h(messages)365 1449 y(are)d(unnecessary)m(.)17 b(The)11 b(b)q(ene\014ts)g(of)f(this)h (approac)o(h)h(will)g(b)q(ecome)f(apparen)o(t)h(up)q(on)365 1494 y(the)h(extension)i(of)e(the)g(mo)q(del.)423 1540 y(Reliabili)q(t)o(y)i(is)d(a)g(problem)h(only)f(when)g(comm)o (unicating)j(o)o(v)o(er)d(lo)q(cal)h(area)f(net-)365 1586 y(w)o(orks)19 b(\(LANs\),)g(since)g(all)h(MPPs)e(guaran)o(tee)i (pac)o(k)o(et)f(deliv)o(ery)h(and)f(data)g(in-)365 1631 y(tegrit)o(y)m(.)f(A)12 b(k)o(ey)h(item)g(to)g(remem)o(b)q(er)g(is)g (that)g(v)o(ery)g(lo)o(w)g(rates)g(of)f(pac)o(k)o(et)h(loss)h(and)365 1677 y(corruption)i(are)e(b)q(eing)h(assumed.)20 b(Reliabil)q(it)o(y)d (problems)e(can)f(b)q(e)g(solv)o(ed)i(b)o(y)e(us-)365 1723 y(ing)g(t)o(w)o(o)e(di\013eren)o(t)i(metho)q(ds.)j(P)o(ac)o(k)o (et)c(truncation)h(and)f(data)g(corruption)i(can)d(b)q(e)365 1768 y(detected)h(b)o(y)g(using)g(t)o(w)o(o)f(\014elds)i(in)f(the)f (message's)h(header:)k(a)c(pac)o(k)o(et)f(length)i(and)365 1814 y(a)f(c)o(hec)o(ksum.)k(P)o(ac)o(k)o(et)c(losses)h(can)e(b)q(e)h (detected)g(b)o(y)g(timestamping)h(the)f(outgoing)365 1860 y(request.)30 b(Up)q(on)17 b(eac)o(h)g(subsequen)o(t)i(op)q (eration)g(or)e(p)q(oll)h(of)f(the)g(net)o(w)o(ork)g(in)o(ter-)365 1905 y(face,)c(one)g(en)o(try)h(of)e(the)h(request)h(table)g(is)f (examined.)19 b(If)13 b(an)o(y)g(stale)h(requests)g(are)365 1951 y(found,)g(they)f(are)g(retransmitted.)19 b(Reply)c(AMs)e(are)g (not)g(stamp)q(ed.)18 b(If)13 b(a)g(reply)h(is)365 1997 y(dropp)q(ed,)i(the)e(resulting)i(action)f(is)g(to)f(retransmit)h(the)f (request.)20 b(This)15 b(presen)o(ts)365 2042 y(a)g(problem)h(b)q (ecause)g(the)f(corresp)q(onding)i(request)e(handler)i(could)f(b)q(e)f (executed)365 2088 y(t)o(wice.)27 b(The)16 b(solution)i(is)f(as)f (follo)o(ws:)24 b(when)17 b(an)f(in)o(v)n(alid)j(request)e(\(its)f (instance)365 2134 y(n)o(um)o(b)q(er)d(matc)o(hes)g(that)g(of)f(reply)h (bu\013er\))h(is)e(receiv)o(ed,)i(the)e(corresp)q(onding)k(reply)365 2179 y(is)e(simply)h(retransmitted)f(without)g(in)o(v)o(oking)i(the)d (handler[9)r(].)423 2225 y(Clearly)m(,)h(this)g(algorithm)i(allo)o(ws)e (only)h(one)f(outstanding)i(request)e(and)g(reply)365 2271 y(p)q(er)g(no)q(de.)k(As)13 b(a)g(result,)h(the)f(proto)q(col)i (is)f(not)f(capable)i(of)e(ac)o(hieving)i(maxim)o(um)365 2316 y(bandwidth.)j(The)10 b(goal)h(of)f(an)o(y)g(comm)o(unication)j (proto)q(col)e(is)f(to)g(hide)h(the)f(latency)365 2362 y(of)i(accessing)h(the)f(media)h(b)o(y)f(k)o(eeping)h(m)o(ultiple)h (messages)e Fh(in)g(the)g(network.)j Fj(This)365 2408 y(is)d(accomplished)j(here)c(b)o(y)h(replicating)j(the)c(one-w)o(a)o(y) h(proto)q(col)h(N)e(times)h(for)f(eac)o(h)967 2574 y Ff(8)p eop %%Page: 9 9 9 8 bop 365 307 a Fj(no)q(de,)11 b(where)e(N)h(corresp)q(onds)h(to)e (the)h(net)o(w)o(ork)g(depth.)16 b(This)10 b(v)n(alue)h(usually)h (needs)365 353 y(to)i(b)q(e)f(disco)o(v)o(ered)j(b)o(y)e(exp)q(erimen)o (tation)i(for)d(eac)o(h)h(net)o(w)o(orking)h(card,)f(op)q(erating)365 399 y(system,)f(and)g(access)g(metho)q(d.)k(F)m(or)c(example,)g (memory-mapp)q(ed)h(register)f(op)q(er-)365 444 y(ations)f(to)e(the)g (net)o(w)o(ork)h(device)g(are)g(m)o(uc)o(h)f(more)h(e\016cien)o(t)g (than)f(traps)h(to)f(a)g(k)o(ernel)365 490 y(net)o(w)o(orking)16 b(stac)o(k.)23 b(Since)16 b(pro)q(cessing)h(an)e(activ)o(e)h(message)f (requires)h(matc)o(hing)365 535 y(requests)f(with)f(replies)h(and)f (vice)g(v)o(ersa,)g(a)g(m)o(ultibit)h(instance)h(n)o(um)o(b)q(er)e(is)g (in)o(tro-)365 581 y(duced)k(to)f(the)f(message.)29 b(No)o(w,)17 b(for)f(eac)o(h)i(no)q(de)f(in)h(the)e(host)i(p)q(o)q(ol,)g(N)f (bu\013ers)365 627 y(are)h(allo)q(cated,)j(and)d(eac)o(h)g(is)g(asso)q (ciated)h(with)f(one)g(instance)h(of)f(the)f(one-w)o(a)o(y)365 672 y(proto)q(col.)365 803 y Fi(4)69 b(Implemen)n(tation)365 886 y Fj(This)18 b(section)h(addresses)g(sev)o(eral)g(issues)g(in)o(v)o (olv)o(ed)g(in)g(implemen)o(ting)h(the)e(AM)365 932 y(proto)q(col)d (e\016cien)o(tly)m(.)365 1042 y Fd(4.1)56 b(The)18 b(T)-5 b(ransp)r(ort)365 1112 y Fj(Before)15 b(an)o(y)f(co)q(de)h(is)g (written,)f(the)h(matter)f(of)g(the)g(underlying)j(comm)o(unication)365 1158 y(mec)o(hanism)k(m)o(ust)f(b)q(e)f(resolv)o(ed.)38 b(Since)21 b(further)e(exp)q(erimen)o(tation)j(is)e(neces-)365 1203 y(sary)f(to)e(determine)j(whic)o(h)e(of)g(the)g(ab)q(o)o(v)o(e)g (approac)o(hes)i(is)e(most)g(e\016cien)o(t)h(and)365 1249 y(p)q(ortable,)d(a)e(transp)q(ort)h(will)h(not)e(b)q(e)g (explicitly)k(named.)i(Instead,)15 b(t)o(w)o(o)f(require-)365 1295 y(men)o(ts)j(will)i(b)q(e)e(made)g(of)g(an)o(y)g(metho)q(d)h(c)o (hosen)g(as)f(the)g(basis)h(for)f(an)g(AM)f(im-)365 1340 y(plemen)o(tation.)28 b(First,)16 b(the)g(transp)q(ort)h(m)o(ust)f(b)q (e)g(connectionless.)27 b(One)16 b(that)g(is)365 1386 y(connection-oriented)j(do)q(es)f(not)f(map)g(w)o(ell)g(to)g(the)g (all-to-all)i(comm)o(unications)365 1432 y(mo)q(del)14 b(found)g(in)f(distributed)j(computing.)j(P)o(ersonalized)c(comm)o (unication)h(t)o(yp-)365 1477 y(ically)j(requires)f(man)o(y)f(system)g (resources)h(and)f(has)g(longer)h(startup)f(times.)28 b(A)365 1523 y(connectionless)16 b(mo)q(del)e(will)h(th)o(us)e(b)q(e)g (assumed|where)i(data)e(and)h(the)f(sender's)365 1569 y(address)d(app)q(ear)g(only)h(at)d(one)i(\\in)o(terface")g(to)f(the)g (net)o(w)o(ork.)16 b(The)9 b(second)h(require-)365 1614 y(men)o(t)j(is)h(that)f(the)h(comm)o(unication)h(la)o(y)o(er)f(pro)o (vide)h(for)e(non)o(blo)q(c)o(king)j(op)q(eration.)365 1660 y(Ov)o(erlapping)i(computation)f(and)f(comm)o(unication)i(are)d (cen)o(tral)h(in)g(activ)o(e)g(mes-)365 1706 y(saging)j(and)f(w)o(ould) g(simply)h(not)f(b)q(e)f(p)q(ossible)j(with)d(blo)q(c)o(king)j(comm)o (unication)365 1751 y(primitiv)o(es.)f(Note)11 b(that)g(async)o (hronous)j(noti\014cation)g(of)d(message)g(deliv)o(ery)j(is)d(not)365 1797 y(mandatory)m(.)21 b(This)15 b(can)f(b)q(e)g(accomplished,)j (sometimes)e(m)o(uc)o(h)f(more)g(e\016cien)o(tly)m(,)365 1843 y(through)g(explicit)i(p)q(olling)g(of)d(the)g(in)o(terface.)365 1953 y Fd(4.2)56 b(Di\013ering)17 b(Address)i(Space)365 2023 y Fj(In)14 b(PVM)h(and)f(similar)j(heterogeneous)f(computing)g(en) o(vironmen)o(ts,)g(a)e(pro)q(cess's)365 2068 y(address)e(space)f(is)g (not)f(necessarily)j(the)d(same)h(from)f(mac)o(hine)i(to)e(mac)o(hine.) 17 b(Giv)o(en)365 2114 y(this,)g(the)e(activ)o(e)h(messaging)h(library) g(m)o(ust)e(ha)o(v)o(e)h(some)g(mac)o(hine-indep)q(enda)q(n)o(t)365 2160 y(w)o(a)o(y)g(of)f(sp)q(ecifying)j(a)d(lo)q(cation)j(in)f(either)f (text)g(or)f(data)h(memory)m(.)25 b(A)15 b(common)365 2205 y(solution)22 b(to)d(this)h(problem)h(is)e(to)h(in)o(tro)q(duce)g (the)g(concept)g(of)f(a)g(binding.)38 b(A)365 2251 y(mac)o(hine-indep)r (endent)21 b(iden)o(ti\014er)f(can)f(b)q(e)f(\\b)q(ound")i(to)e(a)h(sp) q(eci\014c)g(address)h(a)365 2297 y(pro)q(cess)e(participatin)q(g)i(in) e(comm)o(unication.)32 b(In)17 b(order)h(to)f(a)o(v)o(oid)i(the)e(time) h(to)365 2342 y(searc)o(h)e(a)e(table,)i(the)f(AM)f(library)j(can)e (pro)o(vide)h(a)f(call)h(to)e(allo)q(cate)j(these)e(iden-)365 2388 y(ti\014ers)g(from)f(a)f(linear)j(progression)g(corresp)q(onding)h (to)c(the)h(indices)i(of)e(an)g(arra)o(y)m(.)365 2434 y(Before)f(an)o(y)f(comm)o(unication)j(is)e(done,)f(the)h(user)f(will)i (ha)o(v)o(e)f(to)f(store)g(the)g(desired)967 2574 y Ff(9)p eop %%Page: 10 10 10 9 bop 365 307 a Fj(address)16 b(in)o(to)f(the)g(arra)o(y)g(p)q (osition)h(p)q(oin)o(ted)g(to)f(b)o(y)g(the)f(iden)o(ti\014er.)24 b(In)14 b(this)h(w)o(a)o(y)m(,)365 353 y(the)j(address)g(will)g(b)q(e)g (b)q(ound.)30 b(An)o(y)17 b(incoming)j(message)e(wishing)h(to)e(write)g (in)365 399 y(the)f(lo)q(cal)h(hosts)f(memory)f(m)o(ust)h(deco)q(de)g (this)g(iden)o(ti\014er)i(in)o(to)e(the)f(corresp)q(ond-)365 444 y(ing)k(virtual)h(address.)32 b(Extending)20 b(this)e(concept,)i (three)e(separate)g(tables)h(can)365 490 y(b)q(e)e(main)o(tained:)25 b(one)17 b(for)f(the)g(addresses)h(of)f(request)h(handlers,)h(one)f (for)f(reply)365 535 y(handlers,)k(and)e(one)f(for)g(data)g(addresses.) 31 b(Th)o(us,)18 b(one)f(address)h(iden)o(ti\014er)h(can)365 581 y(b)q(e)c(asso)q(ciated)i(with)e(three)g(di\013eren)o(t)h (addresses)g(and)g(resolv)o(ed)g(b)o(y)f(the)g(con)o(text)365 627 y(in)g(whic)o(h)g(it)f(is)h(used.)20 b(C)14 b(macros)g(can)g(b)q(e) g(pro)o(vided)i(to)e(reference)g(eac)o(h)h(of)e(these)365 672 y(tables,)h(reducing)h(unnecessary)g(subroutine)g(calls.)365 783 y Fd(4.3)56 b(Handler)18 b(Execution)365 853 y Fj(In)c(the)f (traditional)j(net)o(w)o(orking)f(stac)o(ks,)f(async)o(hronous)i (noti\014cation)g(is)e(accom-)365 898 y(plished)20 b(b)o(y)d(using)i (signal)g(driv)o(en)g(I/O.)d(Up)q(on)i(arriv)n(al)h(of)e(a)g(message,)h (the)g(OS)365 944 y(can)c(deliv)o(er)i(a)e(previously)i(de\014ned)f (signal)h(to)e(designated)h(pro)q(cess.)20 b(In)14 b(the)g(AM)365 990 y(implemen)o(tation)q(,)f(this)f(pro)q(cess)g(will)h(register)f(an) f(activ)o(e)h(message)f(dispatc)o(h)i(han-)365 1035 y(dler.)31 b(This)18 b(handler)h(will)g(\014rst)e(c)o(hec)o(k)h(whether)g(data)f (is)h(w)o(aiting)h(to)e(b)q(e)h(read,)365 1081 y(since)g(an)o(y)o(one)g (could)g(ha)o(v)o(e)f(deliv)o(ered)h(the)f(signal.)30 b(Next,)17 b(it)g(will)h(lo)q(ok)g(up)f(the)365 1127 y(address)d(of)e(the)h(corresp)q(onding)i(request)e(handler,)h(using)g (the)f(address)g(iden)o(ti\014er)365 1172 y(as)h(an)g(o\013set)h(in)o (to)f(the)g(arra)o(y)h(of)e(request)i(handler)g(addresses.)21 b(If)13 b(the)h(tag)g(is)g(not)365 1218 y(b)q(ound)e(to)f(a)f(request)h (handler)h(function,)g(a)f(\\sink")h(function)g(should)g(b)q(e)f (executed)365 1264 y(that)16 b(simply)i(remo)o(v)o(es)f(the)f(pac)o(k)o (et)g(from)g(the)g(net)o(w)o(ork.)26 b(If)16 b(the)g(tag)g(is)h(b)q (ound,)365 1309 y(the)12 b(dispatc)o(her)h(in)o(v)o(ok)o(es)h(the)d (request)h(handler)i(with)e(an)o(y)g(argumen)o(ts)g(optionall)q(y)365 1355 y(pac)o(k)o(ed)k(in)o(to)g(the)f(message)g(and)g(a)g(p)q(oin)o (ter)h(to)f(the)g(message)g(itself.)24 b(The)14 b(user's)365 1401 y(handler)j(is)e(then)g(allo)o(w)o(ed)h(to)e(run)h(to)f (completion,)j(optionally)h(sending)e(a)f(reply)365 1446 y(AM)e(to)g(the)g(originator.)423 1492 y(It)g(is)h(conceiv)n(able)i (that)d(the)h(user)g(w)o(ould)g(wish)g(to)f(ha)o(v)o(e)h(option)h(of)e (declaring)365 1538 y(critical)i(sections.)k(This)13 b(is)h(esp)q(ecially)i(imp)q(ortan)o(t)e(to)f(consider)i(when)e(the)g (user's)365 1583 y(pro)q(cess)j(is)f(p)q(erforming)h(system)f(calls,)i (most)e(of)f(whic)o(h)i(can)f(b)q(e)g(in)o(terrupted)h(b)o(y)365 1629 y(a)e(signal.)23 b(Guarding)16 b(against)g(this)f(situation)h (usually)h(requires)e(w)o(atc)o(hing)h(for)e(a)365 1675 y(sp)q(ecial)f(return)e(co)q(de.)17 b(If)9 b(this)j(co)q(de)f(is)g (returned,)h(the)e(call)i(m)o(ust)f(b)q(e)g(in)o(v)o(ok)o(ed)h(un)o (til)365 1720 y(a)i(di\013eren)o(t)i(co)q(de)e(returned.)21 b(Systems)15 b(conforming)g(to)f(the)g(4.2)g(BSD)h(release)g(of)365 1766 y(Unix)f(do)f(this)g(automatically)n(.)19 b(Ho)o(w)o(ev)o(er,)12 b(giv)o(en)i(the)f(wide)g(v)n(ariet)o(y)h(of)f(platforms)365 1812 y(w)o(e)i(wish)g(to)g(supp)q(ort,)h(this)g(cannot)g(b)q(e)f (relied)i(up)q(on.)24 b(If)14 b(the)h(user)g(do)q(es)h(c)o(ho)q(ose)365 1857 y(to)j(mak)o(e)g(system)g(calls)h(while)g(comm)o(unication)h(is)e (taking)h(place,)h(those)e(calls)365 1903 y(m)o(ust)12 b(not)g(reference)g(an)o(y)h(bu\013er)f(whose)h(con)o(ten)o(ts)f(are)g (susp)q(ect.)17 b(Aside)c(from)f(the)365 1949 y(n)o(uisance)i(to)e(the) g(user,)g(rep)q(eated)g(system)g(calls)i(can)e(cause)g(unnecessary)i (pro)q(cess)365 1994 y(susp)q(ension)j(and)f(con)o(text)f(switc)o(hing) h(dela)o(ys.)23 b(Tw)o(o)14 b(solutions)i(to)f(this)g(problem)365 2040 y(are)9 b(a)o(v)n(ailable)q(.)18 b(The)9 b(\014rst)g(is)h(a)f (true)g(lo)q(c)o(k)o(out,)i(where)e(the)g(k)o(ernel)i(actually)g(prev)o (en)o(ts)365 2086 y(the)i(signal)i(from)d(b)q(eing)i(deliv)o(ered)h(un) o(til)f(the)f(user)g(indicates)i(that)e(it)g(is)g(ok)g(to)f(do)365 2131 y(so.)24 b(The)15 b(second)h(solution,)h(recommended)g(for)d (debugging)k(and)e(I/O-in)o(tensiv)o(e)365 2177 y(applicatio)q(ns,)e (is)e(to)f(do)g(a)o(w)o(a)o(y)g(with)h(async)o(hronous)h (noti\014cation)h(completely)f(and)365 2223 y(p)q(oll)e(for)d(all)j (messages.)16 b(Curren)o(tly)m(,)10 b(all)g(activ)o(e)g(messaging)h (implemen)o(tations)h(used)365 2268 y(p)q(olled)17 b(I/O,)d(mainly)j(b) q(ecause)f(the)f(p)q(olling)i(function)f(also)g(p)q(erforms)f(the)g(c)o (hec)o(k)365 2314 y(for)i(stale)g(requests.)28 b(Where)17 b(p)q(olling)j(is)d(c)o(hosen)g(o)o(v)o(er)g(in)o(terrupts,)h(the)f (request)365 2360 y(and)f(reply)g(calls)h(should)g(automatically)h(p)q (oll)1058 2344 y Fb(1)1093 2360 y Fj(the)d(net)o(w)o(ork)g(at)g(the)h (b)q(eginning)p 262 2393 573 2 v 308 2420 a Fb(1)325 2432 y Fa(T)m(o)c(p)q(oll)e(in)h(this)g(con)o(text)e(has)i(t)o(w)o(o)g (meanings:)i(to)e(c)o(hec)o(k)f(the)g(request)g(table)g(for)h(stale)f (en)o(tries)g(and)957 2574 y Ff(10)p eop %%Page: 11 11 11 10 bop 365 307 a Fj(and)17 b(end)f(of)g(ev)o(ery)g(call.)27 b(Ho)o(w)o(ev)o(er,)16 b(the)g(user)g(m)o(ust)g(b)q(e)h(careful)f(not)h (to)e(ignore)365 353 y(the)d(net)o(w)o(ork)g(in)g(computation-only)j (lo)q(ops.)j(Hence,)11 b(an)h(explicit)i(call)f(to)e(p)q(oll)j(the)365 399 y(in)o(terface)j(is)f(pro)o(vided.)26 b(T)m(o)15 b(ac)o(hiev)o(e)h(widespread)h(acceptance,)g(the)f(burden)g(on)365 444 y(the)g(user)g(of)g(AMs)g(m)o(ust)f(b)q(e)i(minimal.)27 b(Th)o(us,)17 b(a)e(function)i(could)h(b)q(e)e(pro)o(vided)365 490 y(that)c(can)g(register)h(an)f(alarm)h(handler)g(that)f(p)q (erforms)g(this)h(p)q(olling)i(on)d(a)f(regular)365 535 y(in)o(terv)n(al.)423 581 y(Theoretically)m(,)j(activ)o(e)g(messages)f (are)f(executed)h(immediately)i(up)q(on)e(arriv)n(al.)365 627 y(As)k(men)o(tioned)i(b)q(efore,)f(these)g(messages)f(simply)i (remo)o(v)o(e)f(the)f(data)h(from)f(the)365 672 y(net)o(w)o(ork)i(and)h (in)o(tegrate)g(it)f(in)o(to)h(the)f(ongoing)i(computation.)36 b(An)19 b(arbitrary)365 718 y(time)g(limit)i(could)f(b)q(e)e(imp)q (osed)j(on)e(the)f(handlers)j(to)d(prev)o(en)o(t)i(deadlo)q(c)o(k)g (and)365 764 y(aid)e(in)g(debugging.)32 b(Ho)o(w)o(ev)o(er,)17 b(this)h(should)h(b)q(e)e(a)o(v)n(ailable)j(only)f(as)e(a)g(compile)365 809 y(time)c(switc)o(h)g(to)f(the)h(library)m(,)h(since)f(the)g (managemen)o(t)g(of)f(man)o(y)h(alarms)h(is)f(quite)365 855 y(exp)q(ensiv)o(e.)365 966 y Fd(4.4)56 b(Reliabilit)n(y)365 1035 y Fj(T)m(o)10 b(realize)h(maxim)o(um)g(bandwidth)h(with)e(a)g(lo)o (w-lev)o(el)i(transp)q(ort)e(demands)h(a)f(sim-)365 1081 y(ple)16 b(and)f(e\016cien)o(t)g(implemen)o(tation)j(of)c(reliable)k (data)d(deliv)o(ery)m(.)23 b(When)16 b(using)g(a)365 1127 y(completely)h(unreliable)h(transp)q(ort,)e(timers)f(and)h(data)f (v)o(eri\014cation)i(\014elds)g(m)o(ust)365 1172 y(b)q(e)f(used)h(in)f (addition)i(to)e(those)g(for)g(proto)q(col)h(managemen)o(t.)26 b(The)16 b(ab)q(o)o(v)o(e)h(pro-)365 1218 y(to)q(col)h(requires)h(only) f(t)o(w)o(o)e(\014elds)j(in)f(the)f(header:)26 b(the)17 b(message)g(t)o(yp)q(e)h(and)g(the)365 1264 y(proto)q(col)f(instance)f (n)o(um)o(b)q(er.)24 b(The)14 b(t)o(yp)q(e)i(actually)h(requires)f (only)g(one)f(bit)h(indi-)365 1309 y(cating)e(whether)e(the)g(message)h (is)g(a)f(request)h(or)f(a)g(reply)m(.)17 b(The)c(proto)q(col)g (instance)365 1355 y(n)o(um)o(b)q(er)19 b(is)f(necessary)h(in)f(order)g (to)g(matc)o(h)g(a)f(reply)i(with)f(the)g(corresp)q(onding)365 1401 y(request.)i(Remem)o(b)q(er)15 b(that)f(with)g(the)g(N-w)o(a)o(y)f (proto)q(col,)i(m)o(ultiple)i(requests)d(can)365 1446 y(b)q(e)k(outstanding)i(for)e(the)f(same)h(no)q(de.)32 b(Explicit)20 b(alarms)f(can)f(b)q(e)g(a)o(v)o(oided)h(b)o(y)365 1492 y(timestamping)d(the)d(cop)o(y)h(of)e(eac)o(h)i(transmitted)g (request.)k(Note)13 b(that)h(the)f(ab)q(o)o(v)o(e)365 1538 y(proto)q(col)i(requires)g(that)f(only)h(outgoing)g(requests)g(b)q (e)f(stamp)q(ed,)g(since)h(they)f(are)365 1583 y(the)i(only)h(messages) g(b)q(eing)g(monitored)g(for)e(loss.)26 b(Timestamps)17 b(should)h(b)q(e)e(ob-)365 1629 y(tained)c(through)g(the)f(most)g (e\016cien)o(t)g(means)h(p)q(ossible.)18 b(This)11 b(is)h(often)f(v)o (ery)g(di\013er-)365 1675 y(en)o(t)k(from)f(platform)h(to)f(platform.) 21 b(On)15 b(some)f(platforms)h(for)f(example,)i(in)o(terv)n(al)365 1720 y(timers)c(are)e(less)i(exp)q(ensiv)o(e)h(to)d(read)h(compared)h (to)e(the)h Fg(gettimeofd)o(ay\()o(\))c Fj(system)365 1766 y(call)16 b([9].)21 b(The)15 b(in)o(terv)n(al)h(b)q(et)o(w)o(een)f (successiv)o(e)i(retransmission)g(of)d(stale)i(requests)365 1812 y(can)e(b)q(e)f(exp)q(onen)o(tial)j(with)d(an)h(arbitrary)g(limit) h(signifying)h(no)q(de)e(failure.)423 1857 y(T)m(o)g(main)o(tain)j (data)e(in)o(tegrit)o(y)h(requires)g(the)f(insertion)h(of)f(the)g (length)g(and)h(a)365 1903 y(pac)o(k)o(et-wide)g(c)o(hec)o(ksum)f(in)o (to)h(the)e(message's)h(header.)22 b(Up)q(on)15 b(reception,)h(if)f (the)365 1949 y(computed)g(v)n(alues)g(do)f(not)f(matc)o(h,)h(the)f (message)i(is)f(discarded.)20 b(This)14 b(approac)o(h)365 1994 y(ma)o(y)j(not)f(b)q(e)h(necessary)m(,)h(ho)o(w)o(ev)o(er,)f (since)g(man)o(y)g(net)o(w)o(ork)g(transp)q(orts)g(pro)o(vide)365 2040 y(this)d(service)g(automatically)n(.)365 2150 y Fd(4.5)56 b(Bu\013ering)365 2220 y Fj(Bu\013ering)16 b(is)e(often)f(the)h(cause)g(of)f(large)i(dela)o(ys)g(in)f(net)o(w)o (ork)f(computing.)21 b(There)365 2266 y(are)10 b(t)o(w)o(o)f(reasons)h (for)g(suc)o(h)g(dela)o(ys.)17 b(The)9 b(\014rst)h(is)g(that)g(the)g (data)g(from)f(the)g(net)o(w)o(ork)365 2311 y(is)15 b(not)f(pro)q (cessed)i(immediately)g(up)q(on)f(reception.)22 b(The)14 b(data)h(is)f(read)h(from)f(the)365 2357 y(device)g(and)e(held)h(in)g (k)o(ernel)g(space)g(un)o(til)g(the)f(user's)g(pro)q(cess)h(issues)g(a) f(read)h(trap.)p 262 2391 573 2 v 262 2429 a Fa(to)e(c)o(hec)o(k)f(the) g(net)o(w)o(ork)h(in)o(terface)e(for)i(data.)957 2574 y Ff(11)p eop %%Page: 12 12 12 11 bop 365 307 a Fj(The)14 b(second)g(reason)h(stems)e(from)h(the)g (problems)h(of)e(guaran)o(teed)i(data)f(deliv)o(ery)m(.)365 353 y(An)o(y)i(pro)q(cess)h(using)h(an)e(unreliable)j(transp)q(ort)e(m) o(ust)f(main)o(tain)i(a)e(cop)o(y)h(of)f(the)365 399 y(outgoing)c(pac)o(k)o(et)e(un)o(til)i(an)e(ac)o(kno)o(wledgemen)o(t)i (is)f(receiv)o(ed.)17 b(Curren)o(t)10 b(implemen-)365 444 y(tations)17 b(of)f(AM)f(o)o(v)o(er)h(LANs)f(solv)o(e)i(these)f (problems)h(b)o(y)f(and)g(b)o(y)g(preallo)q(catin)q(g)365 490 y(pac)o(k)o(et)e(bu\013ers)h(of)e(maxim)o(um)h(p)q(ermissible)j (size)d(on)f(the)h(device)h(itself.)k(It)12 b(is)i(left)365 535 y(to)i(the)h(user,)g(to)f(fragmen)o(t)g(and)h(order)g(the)f(data)h (accordingly)m(.)29 b(This)17 b(strategy)365 581 y(places)f(a)f(fairly) h(large)g(burden)g(up)q(on)g(the)e(user.)23 b(The)15 b(transp)q(ort)g(c)o(hosen)h(for)e(an)365 627 y(AM)i(la)o(y)o(er)h(ma)o (y)f(allo)o(w)h(an)f(unlimited)j(pac)o(k)o(et)d(length)h(but)g(still)g (not)g(guaran)o(tee)365 672 y(deliv)o(ery)m(.)27 b(A)15 b(true)h(solution)h(to)f(this)g(problem)h(do)q(es)f(not)g(curren)o(tly) h(exist.)26 b(The)365 718 y(only)17 b(option)g(the)e(implemen)o(ter)j (has)d(in)i(this)f(situation)h(is)f(to)g(pro)o(vide)h(the)e(user)365 764 y(with)e(a)f(call)h(to)f(sp)q(ecify)i(the)e(maxim)o(um)h(bu\013er)g (size)g(b)q(efore)f(an)o(y)h(comm)o(unication)365 809 y(is)18 b(allo)o(w)o(ed.)29 b(Dynamic)19 b(memory)e(allo)q(cation)i(up) q(on)f(message)f(reception)i(w)o(ould)365 855 y(in)o(tro)q(duce)c(to)q (o)e(m)o(uc)o(h)h(o)o(v)o(erhead.)365 966 y Fd(4.6)56 b(MPP)19 b(P)n(ortabilit)n(y)365 1035 y Fj(W)m(riting)d(an)d(AM)g(la)o (y)o(er)i(is)f(a)f(trivial)j(task)e(on)f(most)h(massiv)o(e)g(parallel)i (mac)o(hines.)365 1081 y(All)g(mac)o(hines)g(supp)q(orted)g(b)o(y)e (PVM)h(include)h(a)f(reliable)i(deliv)o(ery)f(in)o(terconnec-)365 1127 y(tion)11 b(net)o(w)o(ork)f(and)h(pro)o(vide)g(a)f(non)o(blo)q(c)o (king)j(send-and-receiv)o(e)g(API.)c(This)h(mak)o(es)365 1172 y(for)16 b(a)g(v)o(ery)h(simple)h(and)f(fast)f(p)q(ort)g(of)g(the) h(AM)f(library)m(,)i(mainly)g(consisting)h(of)365 1218 y Fg(ifdef)p Fj(ing)13 b(the)h(co)q(de)h(for)e(reliabili)q(t)o(y)m(.)22 b(As)14 b(a)g(b)q(on)o(us,)h(man)o(y)f(of)f(the)h(supp)q(orted)i(ar-) 365 1264 y(c)o(hitectures)h(come)f(furnished)i(with)e(an)g(optimized)h (AM)f(library)m(.)27 b(In)15 b(this)i(case,)365 1309 y(the)f(task)f(of)g(the)h(AM)f(implemen)o(ter)i(w)o(ould)f(simply)h(b)q (e)f(to)f(write)g(stubs)h(calling)365 1355 y(the)d(existing)j(AM)c (API.)365 1486 y Fi(5)69 b(Optimizati)o(on)365 1569 y Fj(In)12 b(order)g(to)f(reduce)h(the)g(cost)g(of)f(con)o(text)h(switc)o (hing)h(and)f(signal)i(deliv)o(ery)f(dela)o(ys)365 1614 y(in)f(the)g(k)o(ernel,)h(the)e(AM)g(dispatc)o(h)i(handler)h(can)d(b)q (e)h(optimized.)18 b(Once)12 b(the)f(user's)365 1660 y(handler)g(has)f(executed)g(and)g(returned)h(to)e(the)g(dispatc)o (her,)j(the)d(net)o(w)o(ork)h(in)o(terface)365 1706 y(is)g(again)h(c)o (hec)o(k)o(ed)f(for)f(data.)16 b(If)9 b(another)h(message)g(is)g (receiv)o(ed,)h(the)e(user's)h(handler)365 1751 y(will)i(again)f(b)q(e) f(called)i(and)e(the)g(en)o(tire)h(pro)q(cess)f(rep)q(eated.)17 b(If)9 b(no)h(data)h(is)f(a)o(v)n(ailable,)365 1797 y(the)j(user's)h (pro)q(cess)f(is)h(allo)o(w)o(ed)h(to)e(con)o(tin)o(ue)h(pro)q(cessing) h(where)e(it)h(left)f(o\013.)423 1843 y(A)h(nice)h(optimization)i(can)e (b)q(e)f(made)h(regarding)h(the)e(searc)o(h)h(of)f(the)g(request)365 1888 y(table)c(for)f(stale)g(timestamps.)17 b(Instead)10 b(of)e(scanning)j(the)e(en)o(tire)h(table)g(during)g(eac)o(h)365 1934 y(op)q(eration,)i(only)f(one)f(en)o(try)g(need)g(b)q(e)g (examined.)17 b(The)10 b(ma)r(jor)g(motiv)n(ation)h(is)f(that)365 1980 y(the)16 b(pattern)h(of)f(reference)g(to)g(this)h(table)g(is)g (cyclic)g(during)h(normal)f(op)q(eration.)365 2025 y(As)d(long)i(as)f (the)f(user)h(is)g(comm)o(unicating)i(or)e(p)q(erio)q(dicall)q(y)i(c)o (hec)o(king)f(this)g(table)365 2071 y(during)f(computation,)g(the)e (data)g(is)h(guaran)o(teed)g(to)f(b)q(e)g(deliv)o(ered.)423 2117 y(One)e(can)g(easily)h(imagine)h(a)d(situation)j(where)e(a)g (cluster)g(of)g(no)q(des)g(is)h(p)q(erform-)365 2162 y(ing)j(some)f(computation)i(and)e(then)g(pushing)i(data)e(to)g(eac)o (h)g(of)f(their)i(neigh)o(b)q(ors.)365 2208 y(This)f(t)o(yp)q(e)e(of)h (op)q(eration)h(requires)g(only)g(that)f(data)g(b)q(e)f(sen)o(t)h (during)h(the)f(request)365 2254 y(phase.)23 b(Ev)o(en)16 b(on)f(a)g(small)h(net)o(w)o(ork,)f(this)h(could)g(easily)g(result)g (in)g(considerable)365 2299 y(duplicate)k(pro)q(cessing)g(in)e(the)g (form)f(of)g(a)h(reply-request)h(lo)q(op,)h(with)e(eac)o(h)g(re-)365 2345 y(quiring)i(the)d(construction)i(of)e(a)g(separate)h(message.)29 b(A)17 b(simple)i(optimization)365 2391 y(is)d(to)g(\\piggybac)o(k")i (replies)f(whenev)o(er)f(p)q(ossible.)26 b(Th)o(us,)16 b(with)g(the)f(addition)j(of)957 2574 y Ff(12)p eop %%Page: 13 13 13 12 bop 365 307 a Fj(one)18 b(\014eld)h(to)e(the)h(request)g (message|the)h(reply)g(instance)g(n)o(um)o(b)q(er|w)o(e)f(ha)o(v)o(e) 365 353 y(reduced)c(the)f(message-formatting)i(w)o(ork)e(b)o(y)g(50)h (p)q(ercen)o(t.)365 484 y Fi(6)69 b(Conclusion)365 567 y Fj(Ov)o(erall,)15 b(activ)o(e)f(messaging)h(could)f(pro)o(v)o(e)g(to) f(b)q(e)g(a)g(w)o(orth)o(while)i(addition)g(to)f(the)365 612 y(PVM)i(suite)i(if)e(done)h(carefully)m(.)28 b(Ho)o(w)o(ev)o(er,)17 b(an)f(AM)g(implemen)o(tation)j Fh(wil)r(l)e(not)365 658 y Fj(pro)o(vide)g(an)f(o)o(v)o(erwhelming)h(\\out-of-the-b)q(o)o (x")g(impro)o(v)o(emen)o(t)g(o)o(v)o(er)e(PVM's)g(di-)365 704 y(rect)g(routed)g Fg(psend)e Fj(and)i Fg(precv)e Fj(APIs.)22 b(AM)14 b Fh(wil)r(l)g Fj(pro)o(vide)j(the)e(users)g(the)g (to)q(ols)365 749 y(to)d(redesign)i(their)f(applicati)q(ons)i(to)d (comm)o(unicate)i(more)f(e\016cien)o(tly)m(.)18 b(The)12 b(asyn-)365 795 y(c)o(hronous)19 b(nature)g(of)e(AM)h(com)o(bined)h (with)g(o)o(v)o(erlapp)q(ed)h(comm)o(unication)g(and)365 840 y(computation)e(can)e(lead)g(to)f(orders)h(of)g(magnitude)h(sp)q (eedup,)g(esp)q(ecially)h(on)e(al-)365 886 y(gorithms)f(that)f(in)o (terlea)o(v)o(e)h(massiv)o(e)g(data)f(mo)o(v)o(emen)o(t)g(and)h (computation)g(\(FFT)365 932 y(for)h(example\).)28 b(The)16 b(most)g(lik)o(ely)i(option)g(for)e(a)g(\014rst)g(implemen)o(tation)j (of)d(AM)365 977 y(w)o(ould)f(b)q(e)e(to)g(use)h(UDP)f(or)g(some)h (relativ)o(ely)i(simple)e(device-sp)q(eci\014c)j(API.)12 b(This)365 1023 y(w)o(ould)i(allo)o(w)g(detailed)g(study)g(and)f (suggest)g(further)g(optimizations)j(to)c(b)q(e)h(made)365 1069 y(to)j(the)g(mo)q(del)i(and)e(its)h(algorithms.)28 b(Successiv)o(e)18 b(exp)q(erimen)o(ts)g(could)f(then)f(b)q(e)365 1114 y(p)q(erformed)c(using)g(di\013eren)o(t)g(net)o(w)o(ork)f(access)g (metho)q(ds)g(un)o(til)i(an)e(acceptable)h(bal-)365 1160 y(ance)i(of)g(p)q(ortabilit)o(y)j(and)d(p)q(erformance)h(is)f (obtained.)21 b(If)13 b(it)h(can)g(b)q(e)g(sho)o(wn)g(that)365 1206 y(the)h(AM)f(mo)q(del)h(can)g(supp)q(ort)g(PVM's)f(lev)o(el)i(of)e (functionalit)o(y)j(and)e(that)g(activ)o(e)365 1251 y(messages)i (routinely)g(generate)g(more)e(robust)h(and)g(e\016cien)o(t)h (distributed)h(appli-)365 1297 y(cations,)i(then)e(the)g(issue)h(of)e (the)h(con)o(v)o(ersion)h(of)f(the)f(PVM)h(suite)g(to)g(use)g(this)365 1343 y(paradigm)d(should)g(b)q(e)e(seriously)i(considered.)957 2574 y Ff(13)p eop %%Page: 14 14 14 13 bop 365 307 a Fi(References)384 390 y Fj([1])21 b(Chran-Ham)c(Chang,)g(Ric)o(hard)h(Flo)o(w)o(er,)g(John)f(F)m (orecast,)g(Heather)g(Grey)m(,)446 436 y(William)22 b(R.)d(Ha)o(w)o(e,) g(K.)f(K.)h(Ramakrishnan,)k(Ashok)c(P)m(.)g(Nadharni,)i(Ut-)446 481 y(tam)h(N.)g(Shik)n(arpur,)27 b(and)d(Kathleen)g(M.)e(Wilde.)48 b(High)23 b(P)o(erformance)446 527 y(TCP/IP)14 b(and)i(UDP/IP)g(Net)o (w)o(orking)g(in)g(DEC)f(OSF/1)g(for)g(Alpha)h(AXP.)446 572 y Fh(Digital)c(T)m(e)n(chnic)n(al)f(Journal)p Fj(,)g(5\(1\),)i(Win) o(ter)h(1993.)384 629 y([2])21 b(Douglas)i(E.)f(Comer)g(and)g(Da)o(vid) h(L.)f(Stev)o(ens.)44 b Fh(Internetworking)18 b(with)446 675 y(TCP/IP)p Fj(,)12 b(v)o(olume)i(I)q(I.)j(Pren)o(tice)c(Hall,)h (Englew)o(o)q(o)q(d)h(Cli\013s,)f(NJ)e(07632,)h(2nd)446 720 y(edition,)h(1994.)384 777 y([3])21 b(Da)o(vid)29 b(Culler,)j(Ric)o(hard)e(Karp,)h(Da)o(vid)e(P)o(atterson,)j(Abhijit)d (Saha)o(y)m(,)446 823 y(Klaus)22 b(Erik)h(Sc)o(hauser,)i(Eunice)e(San)o (tos,)h(Ramesh)f(Subramonian,)j(and)446 868 y(Thorsten)18 b(v)o(on)g(Eic)o(k)o(en.)33 b(LogP:)18 b(T)m(o)o(w)o(ards)f(a)h (Realistic)i(Mo)q(del)f(of)f(P)o(aral-)446 914 y(lel)i(Computation.)37 b Fh(Pr)n(o)n(c)n(e)n(e)n(dings)17 b(of)i(the)f(F)m(ourth)g(A)o(CM)i (Symp)n(osium)e(on)446 960 y(Principles)11 b(and)i(Pr)n(actic)n(e)f(of) h(Par)n(al)r(lel)f(Pr)n(o)n(gr)n(amming)p Fj(,)f(Ma)o(y)j(1993.)384 1016 y([4])21 b(Da)o(vid)27 b(E.)d(Culler,)30 b(Kim)25 b(Keeton,)k(Cedric)d(Krum)o(b)q(ein,)j(Lok)d(T.)e(Liu,)446 1062 y(Alan)d(Main)o(w)o(aring,)j(Ric)o(hard)e(P)m(.)e(Martin,)j (Kristin)f(W)m(righ)o(t,)h(and)e(Chad)446 1107 y(Y)m(oshik)n(a)o(w)o (a.)29 b(Generic)18 b(Activ)o(e)g(Message)g(In)o(terface)e(Sp)q (eci\014cation)q(.)31 b(T)m(ec)o(h-)446 1153 y(nical)13 b(rep)q(ort,)e(Departmen)o(t)h(of)f(Computer)h(Science,)g(Univ)o(ersit) o(y)h(of)e(Califor-)446 1199 y(nia,)i(Berk)o(eley)m(,)h(No)o(v)o(em)o (b)q(er)g(1994.)384 1255 y([5])21 b(Digital)16 b(Equipmen)o(t)f(Corp)q (oration.)k Fh(OSF/1)13 b(Guide)g(to)g(the)g(Data)g(Link)g(In-)446 1301 y(terfac)n(e)p Fj(,)d(revision)16 b(1.2)d(edition,)h(1993.)384 1358 y([6])21 b(Information)13 b(Net)o(w)o(orks)f(Division,)j(Hewlett)d (P)o(ac)o(k)n(ard)h(Compan)o(y)m(.)j Fh(Netp)n(erf:)446 1403 y(A)f(Network)f(Performanc)n(e)g(Benchmark)p Fj(,)f(revision)k (1.9alpha)g(edition,)g(Au-)446 1449 y(gust)c(1994.)384 1505 y([7])21 b(Jonathan)g(Ka)o(y)f(and)g(Joseph)g(P)o(asquale.)39 b(A)20 b(P)o(erformance)g(Analysis)i(of)446 1551 y(TCP/IP)9 b(and)i(UDP/IP)f(Net)o(w)o(orking)g(Soft)o(w)o(are)g(for)f(the)h (DECstation)h(5000.)446 1597 y(T)m(ec)o(hnical)j(rep)q(ort,)g(Univ)o (ersit)o(y)g(of)f(California,)i(San)f(Diego,)g(1992.)384 1653 y([8])21 b(Lok)16 b(T.)e(Liu,)j(Alan)f(Main)o(w)o(aring,)j(and)d (Chad)g(Y)m(oshik)n(a)o(w)o(a.)25 b(White)17 b(P)o(ap)q(er)446 1699 y(on)11 b(Building)i(TCP/IP)d(Activ)o(e)i(Messages.)h(T)m(ec)o (hnical)g(rep)q(ort,)e(Departmen)o(t)446 1745 y(of)16 b(Computer)g(Science,)i(Univ)o(ersit)o(y)g(of)e(California,)j(Berk)o (eley)m(,)e(No)o(v)o(em)o(b)q(er)446 1790 y(1994.)384 1847 y([9])k(Ric)o(hard)15 b(P)m(.)f(Martin.)20 b(HP)m(AM:)14 b(An)f(Activ)o(e)i(Message)g(la)o(y)o(er)f(for)g(a)g(Net)o(w)o(ork)446 1892 y(of)d(HP)g(W)m(orkstations.)16 b(T)m(ec)o(hnical)d(rep)q(ort,)e (Departmen)o(t)h(of)f(Computer)h(Sci-)446 1938 y(ence,)h(Univ)o(ersit)o (y)i(of)d(California,)j(Berk)o(eley)m(,)f(1994.)365 1995 y([10])21 b(Neal)13 b(Nuc)o(k)o(olls.)19 b Fh(How)13 b(to)g(Use)g(DLPI)p Fj(.)j(In)o(ternet)e(Engineering,)h(June)e(1992.) 365 2051 y([11])21 b Fh(Pr)n(o)n(c)n(e)n(e)n(dings)8 b(of)j(the)g(19th)f(Internation)o(al)e(Symp)n(osium)i(of)h(Computer)f (A)o(r)n(chi-)446 2097 y(te)n(ctur)n(e)p Fj(,)g(Ma)o(y)k(1992.)365 2153 y([12])21 b(W.)d(Ric)o(hard)i(Stev)o(ens.)33 b Fh(Unix)17 b(Network)g(Pr)n(o)n(gr)n(amming)p Fj(.)32 b(Pren)o(tice)19 b(Hall,)446 2199 y(Englew)o(o)q(o)q(d)c(Cli\013s,)f(NJ)e(07632,)h (1990.)365 2256 y([13])21 b(UNIX)10 b(In)o(ternational,)k(OSI)d(W)m (ork)h(Group.)j Fh(Data)c(Link)g(Pr)n(ovider)g(Interfac)n(e)446 2301 y(Sp)n(e)n(ci\014c)n(ati)o(on)p Fj(,)e(revision)15 b(2.0.0)e(edition,)i(August)e(1991.)365 2358 y([14])21 b(Thorsten)15 b(v)o(on)f(Eic)o(k)o(en.)22 b(Buildin)q(g)17 b(P)o(arallel)f(Programming)g(Mo)q(dels)g(using)446 2403 y(Activ)o(e)10 b(Messages.)i(T)m(ec)o(hnical)f(rep)q(ort,)f(Departmen)o (t)h(of)e(Computer)h(Science,)446 2449 y(Cornell)k(Univ)o(ersit)o(y)m (,)h(1994.)957 2574 y Ff(14)p eop %%Page: 15 15 15 14 bop 365 307 a Fj([15])21 b(Thorsten)11 b(v)o(on)g(Eic)o(k)o(en,)i (V)m(eena)d(Avula,)i(Anindy)o(a)h(Basu,)e(and)h(Vineet)f(Buc)o(h.)446 353 y(Lo)o(w-Latency)g(Comm)o(unication)i(o)o(v)o(er)d(A)m(TM)g(Net)o (w)o(orks)h(using)h(Activ)o(e)f(Mes-)446 399 y(sages.)17 b Fh(Pr)n(o)n(c)n(e)n(e)n(dings)11 b(of)i(Hot)g(Inter)n(c)n(onne)n(c)o (ts)e(II)p Fj(,)h(August)h(1994.)365 461 y([16])21 b(Thorsten)13 b(v)o(on)g(Eic)o(k)o(en)h(and)f(Da)o(vid)h(E.)e(Culler.)18 b(Building)d(Comm)o(unication)446 506 y(P)o(aradigms)e(with)f(the)f (CM-5)g(Activ)o(e)h(Message)h(la)o(y)o(er)f(\(CMAM\).)i(T)m(ec)o (hnical)446 552 y(rep)q(ort,)k(Departmen)o(t)f(of)g(Computer)g (Science,)i(Univ)o(ersit)o(y)f(of)f(California,)446 598 y(Berk)o(eley)m(,)d(July)f(1992.)365 660 y([17])21 b(Thorsten)11 b(v)o(on)g(Eic)o(k)o(en,)h(Da)o(vid)g(E.)f(Cullerand)i(Seth)e(Cop)q(en) g(Goldstein,)i(and)446 706 y(Klaus)i(Erik)g(Sc)o(hauser.)20 b(Activ)o(e)15 b(Messages:)20 b(a)14 b(Mec)o(hanism)h(for)f(In)o (tegrated)446 751 y(Comm)o(unication)h(and)f(Computation.)k(In)13 b(pica)h([11].)957 2574 y Ff(15)p eop %%Page: 16 16 16 15 bop 312 384 a 21029112 28417720 6512394 7696465 33746042 44402688 startTexFig 312 384 a %%BeginDocument: get_put.ps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /l {lineto} bind def /m {moveto} bind def /s {stroke} bind def /n {newpath} bind def /gs {gsave} bind def /gr {grestore} bind def /clp {closepath} bind def /graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul setrgbcolor} bind def /col-1 {} def /col0 {0 0 0 setrgbcolor} bind def /col1 {0 0 1 setrgbcolor} bind def /col2 {0 1 0 setrgbcolor} bind def /col3 {0 1 1 setrgbcolor} bind def /col4 {1 0 0 setrgbcolor} bind def /col5 {1 0 1 setrgbcolor} bind def /col6 {1 1 0 setrgbcolor} bind def /col7 {1 1 1 setrgbcolor} bind def /col8 {.68 .85 .9 setrgbcolor} bind def /col9 {0 .39 0 setrgbcolor} bind def /col10 {.65 .17 .17 setrgbcolor} bind def /col11 {1 .51 0 setrgbcolor} bind def /col12 {.63 .13 .94 setrgbcolor} bind def /col13 {1 .75 .8 setrgbcolor} bind def /col14 {.7 .13 .13 setrgbcolor} bind def /col15 {1 .84 0 setrgbcolor} bind def end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 0 setlinecap 0 setlinejoin 59.0 751.0 translate 0.900 -0.900 scale 2.000 setlinewidth % Polyline n 199 114 m 329 114 l gs col-1 s gr % Polyline n 199 144 m 329 144 l gs col-1 s gr % Polyline n 199 174 m 329 174 l gs col-1 s gr % Polyline n 199 204 m 329 204 l gs col-1 s gr % Polyline n 203 234 m 329 234 l gs col-1 s gr % Polyline n 199 264 m 329 264 l gs col-1 s gr % Polyline n 199 234 m 208 234 l gs col-1 s gr % Polyline n 328 294 m 328 84 l 199 84 l 199 294 l clp gs col-1 s gr /Courier-Bold findfont 11.00 scalefont setfont 226 131 m gs 1 -1 scale (get handler) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 225 101 m gs 1 -1 scale (remote node) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 218 160 m gs 1 -1 scale (local address) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 224 191 m gs 1 -1 scale (data length) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 243 221 m gs 1 -1 scale (flags) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 225 252 m gs 1 -1 scale (local node) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 215 282 m gs 1 -1 scale (remote address) col-1 show gr 1.000 setlinewidth n 142.138 428.345 m 134.000 414.000 l 147.931 422.828 l gs 2 setlinejoin col-1 s gr [6.000000] 0 setdash n 274.000 280.667 193.333 43.603 136.397 arc gs col-1 s gr [] 0 setdash n 405.862 359.655 m 414.000 374.000 l 400.069 365.172 l gs 2 setlinejoin col-1 s gr [6.000000] 0 setdash n 274.000 507.333 193.333 -136.397 -43.603 arc gs col-1 s gr [] 0 setdash 2.000 setlinewidth % Polyline n 199 528 m 330 528 l gs col-1 s gr % Polyline n 199 557 m 330 557 l gs col-1 s gr % Polyline n 199 586 m 330 586 l gs col-1 s gr % Polyline n 199 617 m 330 617 l gs col-1 s gr % Polyline n 199 646 m 330 646 l gs col-1 s gr % Polyline n 330 704 m 330 499 l 199 499 l 199 704 l clp gs col-1 s gr % Polyline n 124 449 m 44 449 l 44 329 l 124 329 l clp gs 0.70 setgray fill gr gs col-1 s gr % Polyline n 504 449 m 424 449 l 424 330 l 504 330 l clp gs 0.70 setgray fill gr gs col-1 s gr /Courier-Bold findfont 11.00 scalefont setfont 216 575 m gs 1 -1 scale (remote address) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 226 518 m gs 1 -1 scale (remote node) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 224 605 m gs 1 -1 scale (data length) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 226 546 m gs 1 -1 scale (put handler) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 245 634 m gs 1 -1 scale (flags) col-1 show gr /Courier-Bold findfont 11.00 scalefont setfont 251 678 m gs 1 -1 scale (data) col-1 show gr /Helvetica-Bold findfont 18.00 scalefont setfont 54 319 m gs 1 -1 scale (Node 1) col-1 show gr /Helvetica-Bold findfont 18.00 scalefont setfont 434 319 m gs 1 -1 scale (Node 2) col-1 show gr /Helvetica findfont 14.00 scalefont setfont 264 334 m gs 1 -1 scale (Get) col-1 show gr /Helvetica findfont 14.00 scalefont setfont 269 464 m gs 1 -1 scale (Put) col-1 show gr showpage $F2psEnd %%EndDocument endTexFig 349 2276 a Ff(Figure)14 b(1:)k(Using)c(activ)o(e)f(messages)h(to)g (implemen)o(t)d(remote)j(memory)d(access)262 2321 y Fj([3)o(])957 2574 y Ff(16)p eop %%Page: 17 17 17 16 bop 190 672 a 24865506 19339837 7696465 16379658 32561971 35719495 startTexFig 190 672 a %%BeginDocument: 3phase.ps /$F2psDict 200 dict def $F2psDict begin $F2psDict /mtrx matrix put /l {lineto} bind def /m {moveto} bind def /s {stroke} bind def /n {newpath} bind def /gs {gsave} bind def /gr {grestore} bind def /clp {closepath} bind def /graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul setrgbcolor} bind def /col-1 {} def /col0 {0 0 0 setrgbcolor} bind def /col1 {0 0 1 setrgbcolor} bind def /col2 {0 1 0 setrgbcolor} bind def /col3 {0 1 1 setrgbcolor} bind def /col4 {1 0 0 setrgbcolor} bind def /col5 {1 0 1 setrgbcolor} bind def /col6 {1 1 0 setrgbcolor} bind def /col7 {1 1 1 setrgbcolor} bind def /col8 {.68 .85 .9 setrgbcolor} bind def /col9 {0 .39 0 setrgbcolor} bind def /col10 {.65 .17 .17 setrgbcolor} bind def /col11 {1 .51 0 setrgbcolor} bind def /col12 {.63 .13 .94 setrgbcolor} bind def /col13 {1 .75 .8 setrgbcolor} bind def /col14 {.7 .13 .13 setrgbcolor} bind def /col15 {1 .84 0 setrgbcolor} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y translate xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix } def end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def $F2psBegin 0 setlinecap 0 setlinejoin 72.0 604.0 translate 0.900 -0.900 scale 2.000 setlinewidth % Ellipse n 409 209 50 25 0 360 DrawEllipse gs 0.50 setgray fill gr gs col-1 s gr 0.000 setlinewidth % Polyline n 376 199 m 369 199 369 212 7 arcto 4 {pop} repeat 369 219 442 219 7 arcto 4 {pop} repeat 449 219 449 206 7 arcto 4 {pop} repeat 449 199 376 199 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr 2.000 setlinewidth % Ellipse n 409 144 50 25 0 360 DrawEllipse gs 0.50 setgray fill gr gs col-1 s gr 0.000 setlinewidth % Polyline n 376 134 m 369 134 369 147 7 arcto 4 {pop} repeat 369 154 442 154 7 arcto 4 {pop} repeat 449 154 449 141 7 arcto 4 {pop} repeat 449 134 376 134 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr % Polyline n 381 294 m 374 294 374 307 7 arcto 4 {pop} repeat 374 314 437 314 7 arcto 4 {pop} repeat 444 314 444 301 7 arcto 4 {pop} repeat 444 294 381 294 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr 2.000 setlinewidth % Ellipse n 409 304 40 55 0 360 DrawEllipse gs 0.50 setgray fill gr gs col-1 s gr % Polyline n 356 99 m 349 99 349 372 7 arcto 4 {pop} repeat 349 379 462 379 7 arcto 4 {pop} repeat 469 379 469 106 7 arcto 4 {pop} repeat 469 99 356 99 7 arcto 4 {pop} repeat clp gs col-1 s gr 0.000 setlinewidth % Polyline n 381 294 m 374 294 374 307 7 arcto 4 {pop} repeat 374 314 437 314 7 arcto 4 {pop} repeat 444 314 444 301 7 arcto 4 {pop} repeat 444 294 381 294 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr /Helvetica-Bold findfont 14.00 scalefont setfont 384 214 m gs 1 -1 scale (Receive) col-1 show gr /Helvetica-Bold findfont 14.00 scalefont setfont 379 149 m gs 1 -1 scale (Compute) col-1 show gr /Helvetica-Bold findfont 14.00 scalefont setfont 379 309 m gs 1 -1 scale (Compute) col-1 show gr /Helvetica-Bold findfont 18.00 scalefont setfont 379 89 m gs 1 -1 scale (Node 2) col-1 show gr 1.000 setlinewidth n 338.621 171.183 m 349.000 184.000 l 333.811 177.575 l gs 2 setlinejoin col-1 s gr [4.000000] 0 setdash n 259.000 303.583 149.667 -126.966 -53.034 arc gs 1.00 setgray fill gr gs col-1 s gr [] 0 setdash n 184.698 218.942 m 169.000 224.000 l 180.471 212.150 l gs 2 setlinejoin col-1 s gr [4.000000] 0 setdash n 315.897 460.034 278.012 -121.896 -83.162 arc gs 1.00 setgray fill gr gs col-1 s gr [] 0 setdash n 334.751 225.695 m 349.000 234.000 l 332.519 233.377 l gs 2 setlinejoin col-1 s gr [6.000000] 0 setdash n 237.378 618.189 400.076 -99.841 -73.799 arc gs col-1 s gr [] 0 setdash n 182.024 239.118 m 169.000 229.000 l 185.253 231.798 l gs 2 setlinejoin col-1 s gr [6.000000] 0 setdash n 265.122 11.106 238.154 69.378 113.804 arc gs col-1 s gr [] 0 setdash 2.000 setlinewidth % Ellipse n 109 144 50 25 0 360 DrawEllipse gs 0.50 setgray fill gr gs col-1 s gr % Ellipse n 109 334 50 25 0 360 DrawEllipse gs 0.50 setgray fill gr gs col-1 s gr % Ellipse n 109 239 40 55 0 360 DrawEllipse gs 0.50 setgray fill gr gs col-1 s gr 0.500 setlinewidth % Polyline n 409 169 m 409 184 l gs 1.00 setgray fill gr gs col-1 s gr n 411.000 176.000 m 409.000 184.000 l 407.000 176.000 l gs 2 setlinejoin col-1 s gr % Polyline n 409 234 m 409 249 l gs 1.00 setgray fill gr gs col-1 s gr n 411.000 241.000 m 409.000 249.000 l 407.000 241.000 l gs 2 setlinejoin col-1 s gr % Polyline n 109 169 m 109 184 l gs 1.00 setgray fill gr gs col-1 s gr n 111.000 176.000 m 109.000 184.000 l 107.000 176.000 l gs 2 setlinejoin col-1 s gr % Polyline n 109 294 m 109 309 l gs 1.00 setgray fill gr gs col-1 s gr n 111.000 301.000 m 109.000 309.000 l 107.000 301.000 l gs 2 setlinejoin col-1 s gr % Polyline n 109 359 m 109 394 l gs 1.00 setgray fill gr gs col-1 s gr n 111.000 386.000 m 109.000 394.000 l 107.000 386.000 l gs 2 setlinejoin col-1 s gr % Polyline n 109 99 m 109 119 l gs 1.00 setgray fill gr gs col-1 s gr n 111.000 111.000 m 109.000 119.000 l 107.000 111.000 l gs 2 setlinejoin col-1 s gr % Polyline n 409 99 m 409 119 l gs 1.00 setgray fill gr gs col-1 s gr n 411.000 111.000 m 409.000 119.000 l 407.000 111.000 l gs 2 setlinejoin col-1 s gr % Polyline n 409 359 m 409 394 l gs 1.00 setgray fill gr gs col-1 s gr n 411.000 386.000 m 409.000 394.000 l 407.000 386.000 l gs 2 setlinejoin col-1 s gr 0.000 setlinewidth % Polyline n 76 134 m 69 134 69 147 7 arcto 4 {pop} repeat 69 154 142 154 7 arcto 4 {pop} repeat 149 154 149 141 7 arcto 4 {pop} repeat 149 134 76 134 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr % Polyline n 81 229 m 74 229 74 242 7 arcto 4 {pop} repeat 74 249 137 249 7 arcto 4 {pop} repeat 144 249 144 236 7 arcto 4 {pop} repeat 144 229 81 229 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr % Polyline n 76 324 m 69 324 69 337 7 arcto 4 {pop} repeat 69 344 142 344 7 arcto 4 {pop} repeat 149 344 149 331 7 arcto 4 {pop} repeat 149 324 76 324 7 arcto 4 {pop} repeat clp gs 1.00 setgray fill gr 2.000 setlinewidth % Polyline n 56 99 m 49 99 49 372 7 arcto 4 {pop} repeat 49 379 162 379 7 arcto 4 {pop} repeat 169 379 169 106 7 arcto 4 {pop} repeat 169 99 56 99 7 arcto 4 {pop} repeat clp gs col-1 s gr 1.000 setlinewidth % Polyline n 249 254 m 249 284 l gs col-1 s gr n 253.000 268.000 m 249.000 284.000 l 245.000 268.000 l gs 2 setlinejoin col-1 s gr /Helvetica-Bold findfont 14.00 scalefont setfont 79 149 m gs 1 -1 scale (Compute) col-1 show gr /Helvetica-Bold findfont 14.00 scalefont setfont 94 244 m gs 1 -1 scale (Send) col-1 show gr /Helvetica-Bold findfont 14.00 scalefont setfont 84 339 m gs 1 -1 scale (Receive) col-1 show gr /Helvetica-Bold findfont 18.00 scalefont setfont 79 89 m gs 1 -1 scale (Node 1) col-1 show gr /Helvetica findfont 14.00 scalefont setfont 209 179 m gs 1 -1 scale (Ready to receive) col-1 show gr /Helvetica findfont 14.00 scalefont setfont 209 149 m gs 1 -1 scale (Request to send) col-1 show gr /Helvetica findfont 14.00 scalefont setfont 239 209 m gs 1 -1 scale (Data) col-1 show gr /Helvetica findfont 14.00 scalefont setfont 239 234 m gs 1 -1 scale (Ack.) col-1 show gr showpage $F2psEnd %%EndDocument endTexFig 326 1988 a Ff(Figure)14 b(2:)k(A)c(deadlo)q(c)o(k-free)g(blo)q(c)o (king)f(three-phase)j(comm)o(unicatio)o(n)11 b(proto)q(col)262 2034 y Fj([3)o(])957 2574 y Ff(17)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .