%PDF-1.4 %ÐÔÅØ 5 0 obj << /S /GoTo /D (section.1) >> endobj 8 0 obj (1 Introduction) endobj 9 0 obj << /S /GoTo /D (subsection.1.1) >> endobj 12 0 obj (1.1 Background) endobj 13 0 obj << /S /GoTo /D (subsection.1.2) >> endobj 16 0 obj (1.2 Document notes) endobj 17 0 obj << /S /GoTo /D (section.2) >> endobj 20 0 obj (2 Preliminary information) endobj 21 0 obj << /S /GoTo /D (subsection.2.1) >> endobj 24 0 obj (2.1 Transputers) endobj 25 0 obj << /S /GoTo /D (subsection.2.2) >> endobj 28 0 obj (2.2 Processes) endobj 29 0 obj << /S /GoTo /D (subsection.2.3) >> endobj 32 0 obj (2.3 The transputer / host development relationship) endobj 33 0 obj << /S /GoTo /D (subsection.2.4) >> endobj 36 0 obj (2.4 Why port to a transputer?) endobj 37 0 obj << /S /GoTo /D (subsection.2.5) >> endobj 40 0 obj (2.5 Different categories of application porting) endobj 41 0 obj << /S /GoTo /D (subsubsection.2.5.1) >> endobj 44 0 obj (2.5.1 Transputer software development tools) endobj 45 0 obj << /S /GoTo /D (section.3) >> endobj 48 0 obj (3 Altering the application as little as possible) endobj 49 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 52 0 obj (3.1 The scenario) endobj 53 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 56 0 obj (3.2 Suitable applications) endobj 57 0 obj << /S /GoTo /D (subsubsection.3.2.1) >> endobj 60 0 obj (3.2.1 Requirements) endobj 61 0 obj << /S /GoTo /D (subsubsection.3.2.2) >> endobj 64 0 obj (3.2.2 Good candidates) endobj 65 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 68 0 obj (3.3 Identifying the best transputer for your application) endobj 69 0 obj << /S /GoTo /D (subsection.3.4) >> endobj 72 0 obj (3.4 Some potential porting difficulties) endobj 73 0 obj << /S /GoTo /D (subsection.3.5) >> endobj 76 0 obj (3.5 An implementation overview) endobj 77 0 obj << /S /GoTo /D (subsection.3.6) >> endobj 80 0 obj (3.6 Porting example: SPICE) endobj 81 0 obj << /S /GoTo /D (subsubsection.3.6.1) >> endobj 84 0 obj (3.6.1 About SPICE) endobj 85 0 obj << /S /GoTo /D (subsubsection.3.6.2) >> endobj 88 0 obj (3.6.2 Performance) endobj 89 0 obj << /S /GoTo /D (subsection.3.7) >> endobj 92 0 obj (3.7 Porting example: TeX) endobj 93 0 obj << /S /GoTo /D (subsubsection.3.7.1) >> endobj 96 0 obj (3.7.1 About TeX) endobj 97 0 obj << /S /GoTo /D (subsubsection.3.7.2) >> endobj 100 0 obj (3.7.2 Performance) endobj 101 0 obj << /S /GoTo /D (subsection.3.8) >> endobj 104 0 obj (3.8 Further work) endobj 105 0 obj << /S /GoTo /D (section.4) >> endobj 108 0 obj (4 Parallelizing the application) endobj 109 0 obj << /S /GoTo /D (subsection.4.1) >> endobj 112 0 obj (4.1 Types of parallelism) endobj 113 0 obj << /S /GoTo /D (subsection.4.2) >> endobj 116 0 obj (4.2 Why parallelize?) endobj 117 0 obj << /S /GoTo /D (subsection.4.3) >> endobj 120 0 obj (4.3 Definitions) endobj 121 0 obj << /S /GoTo /D (subsection.4.4) >> endobj 124 0 obj (4.4 The stages in modularizing) endobj 125 0 obj << /S /GoTo /D (subsection.4.5) >> endobj 128 0 obj (4.5 Modules) endobj 129 0 obj << /S /GoTo /D (subsubsection.4.5.1) >> endobj 132 0 obj (4.5.1 Module properties) endobj 133 0 obj << /S /GoTo /D (subsubsection.4.5.2) >> endobj 136 0 obj (4.5.2 Modules provided by the INMOS tools) endobj 137 0 obj << /S /GoTo /D (subsubsection.4.5.3) >> endobj 140 0 obj (4.5.3 Instancing modules) endobj 141 0 obj << /S /GoTo /D (subsubsection.4.5.4) >> endobj 144 0 obj (4.5.4 Module structure) endobj 145 0 obj << /S /GoTo /D (subsubsection.4.5.5) >> endobj 148 0 obj (4.5.5 Module communication requirements) endobj 149 0 obj << /S /GoTo /D (subsubsection.4.5.6) >> endobj 152 0 obj (4.5.6 Module communication protocol) endobj 153 0 obj << /S /GoTo /D (subsection.4.6) >> endobj 156 0 obj (4.6 Guidelines on dividing an application into modules) endobj 157 0 obj << /S /GoTo /D (section.5) >> endobj 160 0 obj (5 Implementing modules) endobj 161 0 obj << /S /GoTo /D (subsection.5.1) >> endobj 164 0 obj (5.1 The technique) endobj 165 0 obj << /S /GoTo /D (subsubsection.5.1.1) >> endobj 168 0 obj (5.1.1 Overview) endobj 169 0 obj << /S /GoTo /D (subsubsection.5.1.2) >> endobj 172 0 obj (5.1.2 Benefits) endobj 173 0 obj << /S /GoTo /D (subsection.5.2) >> endobj 176 0 obj (5.2 Example of module implementation) endobj 177 0 obj << /S /GoTo /D (subsection.5.3) >> endobj 180 0 obj (5.3 Implementation notes) endobj 181 0 obj << /S /GoTo /D (subsection.5.4) >> endobj 184 0 obj (5.4 Some coding examples) endobj 185 0 obj << /S /GoTo /D (subsection.5.5) >> endobj 188 0 obj (5.5 Software methods of increasing performance) endobj 189 0 obj << /S /GoTo /D (subsubsection.5.5.1) >> endobj 192 0 obj (5.5.1 Good ideas) endobj 193 0 obj << /S /GoTo /D (subsubsection.5.5.2) >> endobj 196 0 obj (5.5.2 Bad ideas) endobj 197 0 obj << /S /GoTo /D (subsection.5.6) >> endobj 200 0 obj (5.6 Further work) endobj 201 0 obj << /S /GoTo /D (section.6) >> endobj 204 0 obj (6 Using transputers with other processors) endobj 205 0 obj << /S /GoTo /D (subsection.6.1) >> endobj 208 0 obj (6.1 Suitable applications) endobj 209 0 obj << /S /GoTo /D (subsection.6.2) >> endobj 212 0 obj (6.2 Software support for mixed processor systems) endobj 213 0 obj << /S /GoTo /D (subsubsection.6.2.1) >> endobj 216 0 obj (6.2.1 Accommodating architectural differences) endobj 217 0 obj << /S /GoTo /D (subsubsection.6.2.2) >> endobj 220 0 obj (6.2.2 Using services provided by another processor) endobj 221 0 obj << /S /GoTo /D (subsection.6.3) >> endobj 224 0 obj (6.3 Hardware support for mixed processor systems) endobj 225 0 obj << /S /GoTo /D (subsection.6.4) >> endobj 228 0 obj (6.4 Communication mechanisms) endobj 229 0 obj << /S /GoTo /D (subsubsection.6.4.1) >> endobj 232 0 obj (6.4.1 Communication by explicit polling) endobj 233 0 obj << /S /GoTo /D (subsubsection.6.4.2) >> endobj 236 0 obj (6.4.2 Communication by explicit DMA) endobj 237 0 obj << /S /GoTo /D (subsubsection.6.4.3) >> endobj 240 0 obj (6.4.3 Communication by device drivers) endobj 241 0 obj << /S /GoTo /D (subsubsection.6.4.4) >> endobj 244 0 obj (6.4.4 Increasing data exchange bandwidth by software means) endobj 245 0 obj << /S /GoTo /D (subsection.6.5) >> endobj 248 0 obj (6.5 Implementation strategy) endobj 249 0 obj << /S /GoTo /D (subsection.6.6) >> endobj 252 0 obj (6.6 Testing strategy) endobj 253 0 obj << /S /GoTo /D (subsection.6.7) >> endobj 256 0 obj (6.7 Further work) endobj 257 0 obj << /S /GoTo /D (subsection.6.8) >> endobj 260 0 obj (6.8 Mixed processor example) endobj 261 0 obj << /S /GoTo /D (section.7) >> endobj 264 0 obj (7 Farming an application) endobj 265 0 obj << /S /GoTo /D (subsection.7.1) >> endobj 268 0 obj (7.1 Suitable applications) endobj 269 0 obj << /S /GoTo /D (subsection.7.2) >> endobj 272 0 obj (7.2 General farm discussion) endobj 273 0 obj << /S /GoTo /D (subsubsection.7.2.1) >> endobj 276 0 obj (7.2.1 The software components) endobj 277 0 obj << /S /GoTo /D (subsubsection.7.2.2) >> endobj 280 0 obj (7.2.2 The farm protocol) endobj 281 0 obj << /S /GoTo /D (subsection.7.3) >> endobj 284 0 obj (7.3 Interfacing to the farm) endobj 285 0 obj << /S /GoTo /D (subsubsection.7.3.1) >> endobj 288 0 obj (7.3.1 Interfacing to another transputer process) endobj 289 0 obj << /S /GoTo /D (subsubsection.7.3.2) >> endobj 292 0 obj (7.3.2 Interfacing to a process on a non-transputer processor) endobj 293 0 obj << /S /GoTo /D (subsection.7.4) >> endobj 296 0 obj (7.4 Performance issues) endobj 297 0 obj << /S /GoTo /D (subsubsection.7.4.1) >> endobj 300 0 obj (7.4.1 Linearity) endobj 301 0 obj << /S /GoTo /D (subsubsection.7.4.2) >> endobj 304 0 obj (7.4.2 Priority) endobj 305 0 obj << /S /GoTo /D (subsubsection.7.4.3) >> endobj 308 0 obj (7.4.3 Protocol) endobj 309 0 obj << /S /GoTo /D (subsubsection.7.4.4) >> endobj 312 0 obj (7.4.4 Overheads) endobj 313 0 obj << /S /GoTo /D (subsubsection.7.4.5) >> endobj 316 0 obj (7.4.5 Buffering) endobj 317 0 obj << /S /GoTo /D (subsubsection.7.4.6) >> endobj 320 0 obj (7.4.6 Load balancing) endobj 321 0 obj << /S /GoTo /D (subsubsection.7.4.7) >> endobj 324 0 obj (7.4.7 General farming principles) endobj 325 0 obj << /S /GoTo /D (subsection.7.5) >> endobj 328 0 obj (7.5 Farming part of an application) endobj 329 0 obj << /S /GoTo /D (subsubsection.7.5.1) >> endobj 332 0 obj (7.5.1 Scenario) endobj 333 0 obj << /S /GoTo /D (subsubsection.7.5.2) >> endobj 336 0 obj (7.5.2 Implementation) endobj 337 0 obj << /S /GoTo /D (subsection.7.6) >> endobj 340 0 obj (7.6 Farming an entire application) endobj 341 0 obj << /S /GoTo /D (subsubsection.7.6.1) >> endobj 344 0 obj (7.6.1 Scenario) endobj 345 0 obj << /S /GoTo /D (subsubsection.7.6.2) >> endobj 348 0 obj (7.6.2 Implementation) endobj 349 0 obj << /S /GoTo /D (subsubsection.7.6.3) >> endobj 352 0 obj (7.6.3 Alternative implementation) endobj 353 0 obj << /S /GoTo /D (subsection.7.7) >> endobj 356 0 obj (7.7 Farming a heterogeneous processor application) endobj 357 0 obj << /S /GoTo /D (subsubsection.7.7.1) >> endobj 360 0 obj (7.7.1 Scenario) endobj 361 0 obj << /S /GoTo /D (subsubsection.7.7.2) >> endobj 364 0 obj (7.7.2 Implementation) endobj 365 0 obj << /S /GoTo /D (subsubsection.7.7.3) >> endobj 368 0 obj (7.7.3 Alternative implementation) endobj 369 0 obj << /S /GoTo /D (subsection.7.8) >> endobj 372 0 obj (7.8 Part port farm example: Second Sight) endobj 373 0 obj << /S /GoTo /D (subsubsection.7.8.1) >> endobj 376 0 obj (7.8.1 About Second Sight) endobj 377 0 obj << /S /GoTo /D (subsubsection.7.8.2) >> endobj 380 0 obj (7.8.2 Performance) endobj 381 0 obj << /S /GoTo /D (subsection.7.9) >> endobj 384 0 obj (7.9 Further work) endobj 385 0 obj << /S /GoTo /D (subsubsection.7.9.1) >> endobj 388 0 obj (7.9.1 Flood-filling a transputer network) endobj 389 0 obj << /S /GoTo /D (subsubsection.7.9.2) >> endobj 392 0 obj (7.9.2 Extraordinary use of transputer links) endobj 393 0 obj << /S /GoTo /D (subsubsection.7.9.3) >> endobj 396 0 obj (7.9.3 Overcoming I/O bottlenecks) endobj 397 0 obj << /S /GoTo /D (subsubsection.7.9.4) >> endobj 400 0 obj (7.9.4 Comparison between farms and application pipelining) endobj 401 0 obj << /S /GoTo /D (subsubsection.7.9.5) >> endobj 404 0 obj (7.9.5 Farms of farms) endobj 405 0 obj << /S /GoTo /D (subsubsection.7.9.6) >> endobj 408 0 obj (7.9.6 Dynamic link switching) endobj 409 0 obj << /S /GoTo /D (section.8) >> endobj 412 0 obj (8 Planning the structure of a new application) endobj 413 0 obj << /S /GoTo /D (section.9) >> endobj 416 0 obj (9 Summary and Conclusions) endobj 417 0 obj << /S /GoTo /D (section*.2) >> endobj 420 0 obj (References) endobj 421 0 obj << /S /GoTo /D [422 0 R /Fit ] >> endobj 424 0 obj << /Length 406 /Filter /FlateDecode >> stream xÚuR»nÜ0ìõ[J…Ö\>D²´ ?bÀ6«sR:ÝY€ŽRD©È߇<^ŒØˆ+¸;»Ã28 ƒ»‚}q^µÅÅ-iàµÑíc(@Zƒ¤9´;x-_¦c_ÕB«raëÃûêgû µ”ØÄ5·hŒÉŒÐ ½¯•ëðƒ‘ìêÑùÃæ}¦4 ­2)nžÇ¡së0ù<Ž•Ó²þoœße>7Ø°Oü½[Žï[x‡ëâ|˜·µ_B"7mñ« øzD 7 ,CÞpèŽE*(­!XzØßÏ^Y ‰BÆÞäqD ª¡,äÛÓãóKÜ­XÙVQ@_EÔ½ù¡KÀ¹ô4­}FJœt}ŽæâVh †–ÙS.Ú 4j² ®ó®K¿û§QÞ»ãGGǧs.¤dŒG PI› ×)žL3ï2ÙžxÙúoï–i›3üûœ¯–!¬Ó˜ÆG'Ô¿êȪøƒø)fe^ö°I%YcÏÑi$NY”Êmš×íõ}Í”¨ý׋˜Ù¢­ endstream endobj 422 0 obj << /Type /Page /Contents 424 0 R /Resources 423 0 R /MediaBox [0 0 595.276 841.89] /Parent 431 0 R >> endobj 425 0 obj << /D [422 0 R /XYZ 117.828 740.002 null] >> endobj 426 0 obj << /D [422 0 R /XYZ 117.828 715.095 null] >> endobj 423 0 obj << /Font << /F17 427 0 R /F19 428 0 R /F37 429 0 R /F15 430 0 R >> /ProcSet [ /PDF /Text ] >> endobj 435 0 obj << /Length 707 /Filter /FlateDecode >> stream xÚuT[o›0~ϯð£#á²>¥YÚ2•¤K¨ª¨Ú!Nc bfȪþûÙ>& Ú&$Û|çœï\m½!ݏÜÿìT­.¢È§’Äò˜„^ŒÊzôkä’‰÷»}lÂ3vÖ}£ïêëùœžÐ¹`¼ÍG×wt‚’„^ˆò=¢4"±zA@"¡|‡^ñfûXœÆŽïû¸.Æ^Œ?ôO€¢û2þ‘;‡h@Ü9Š&ñ}0§d¨òêL‚gbì(¢ßk.×Ç݁éC€³¢c’U¸°ŸZ+WŠ5@û^Vû ”¼uÍd©@Øœdc|‰–]i(Á—vþèõ¶/u¬ˆúÄs}•%ÉdiìxÛT6yU+(03©B©‹cÉ,܃W ‘ÌÄØÕÍ°ÎÙ™®™Î¼Öl¥8)®…&ú­ÜŸi¨ŸR4&HÉßÆã0¡Êgä¬+¤5Uíä%kÁ`/E 0tFΝ1)¨ˆÿnv~àÊ>ð<¼Ó Žpyª™ ¯Ó0Åg1o;É·§Ží¬àãMa‹ÛãEOÑòΫ í¥¢”ý©R+€¾¤ùÃò97»ÃÎN›±¾øeL)ÅÓÕjºÈ77€½óî 4‰OCÌ êGA]ԁ×MÅuZç]«RÂLvý`*‰Øƒz6_itö ÜèQšÞ¦i¾„Bh}×îÒ|1_¯¡3wÚz¹É¶'C´ÒkžÎž§Vüô¼zZ®çäL®îzl{•.²åÚlšÁ)ÀËÙlšÙ¹’¶ñ,v¬.äO;&m¥àøÈk®zùéÈ'“ ¹p4PÞZ?öiQ÷Z ÊÖÌ é§«ó®ï׎je¶^.@#㥄Yc+;)Ž¼´qÞKqj†WÉvj6 endstream endobj 434 0 obj << /Type /Page /Contents 435 0 R /Resources 433 0 R /MediaBox [0 0 595.276 841.89] /Parent 431 0 R >> endobj 432 0 obj << /Type /XObject /Subtype /Image /Width 321 /Height 65 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 1728 /Filter /FlateDecode /DecodeParms << /Colors 3 /Columns 321 /BitsPerComponent 8 /Predictor 10 >> >> stream x^íœQšÛ „Ûû_¡‡éͶiRŠ@I{òíC“!ú%a§ûýëëë_T€ ì«À†|î‡öumèóZ‚¯‰ üüûšhóeêeµý»»â·1ô¹ñ²LÿÍ17ÔnM¡ë@»æpô¶dî€bçøm=†Gڍ䈇S7ñòT f5i xÈÛÃÃzd7S”›dÁ:l€M†'2°»)Ye‘ôBÛôÏ’ä®Á:ka2¼;YëüWêp]KͲܖo’eË]—b”áF'üˆ{ƒ:†_l`ä}ÖÅøVÒÏÃMQm:dÉv-˜´Üí®eå'ìà oê%–;R ÍçÍ©U¾mœÒnøgvÜÜZP'ÕŸ25ziìŠ °³_1.鮀ͰnË,H¶ËçÊ*¦}ÅÓyýùs×mïÓÿâd÷BÌKÀC#7Uà¢ã$耻ËÒÉÑr1û:½õZº}PÛT+2,¥3 îJÌ>hÜÌ2ù/Z‘a|/î7Òføˆ¼06ñ„ôŠ¦¬1ÆŠÛr:ž&ÿM·‘Ri®)¿"Ùà+2lžñêHŽè³’‹a¥û]T†á’^ÉðÍ°t]΃Öu 0¦g|ŽíÏaÓ›ã\ÁÁÛ)p†Á-Ùˆa0;tA ¶‘7g߉k2<*Å8Ƹ¹©wfXnIsVnÕ'[oä†“Þ ƒ½±^ “¦ØN1,o˜oÄ°’}̱]PÒa—dø-×5{i¥Jƒí´+8xGÊ°ÞfƒÏ®tŠpƐ'Cæ#nöÒ;â7Åç Ãemó9rÞÃ}ô˜wJø^¶#ÛŒdÄÇì¨ ÊpøY剃7uÍó$˜#¦Ÿ·Aÿõ4ºcPÒg—†»!uå:\ß[–¥,þái޾⿞wÌ`®áà‹+àcØ$¶{ļ u·vKÿ/‚t/© æß H†§Ÿ¬ &Ã'‡ —O*@†Ép2„8ýdÈ0>9¹|R2L†“!Äé'+@†ÉðÉ!Èå“ üf˜/*@öU`Ùdzæ\>6¿§ej˜@ýÏ×Aú¿3ðä°Lû#騏T7Ñ'@Žw #cÞ˜9Æß„1ñgacjÈYo}f™Sìa232õ1q]³È0vLL†Ép,rþÍbA1ôé^‘öÛÀ^Ú&g¸¹9i›æyÐ×0Örû©ø‰]¼kÖzéÔ°Îèuæú¤âÇEcl0æy89Œ#~bâºfqÈ°+`xOk×:Üõ[~ëEÙ~ý<£ë‚¨†œ—¤Ãõ'ï uše¤Fù¼»¢OŒÞc–i ¡pü4?¤ÿ„øÉHÎÕaÝ{„„‡0l •¯ó†Y9’XŽ0Ýž’ƒ>ªÿSV²@ÉÖ2îQ‡Í :Ĩ»Ö@0™u2p +—ÖçÓúdoÏI•‘éx®­åëÀ†Kׇ4²=SrÐñ«‘Ù¼>ŠÚ2°Â î#@ÀFiÎÌAgéŠöö2ì-¤fž¾ÃÓõñfÌ®zÊ„¹¿2ÇÕ‘†¤!Ã×Õ?©22ÇêŒYi‘ c¦©-ê°lsôæHgØÔ°BÂä2<…a³oÌÔI3ÉðuõOò‰L'Ãd‰“@J—\u˜w6ÑÌýÈ ¥WIn0r+Weº¨cfИ‹šç½úã¶9¥ë½hr‹É0ºG¬ÃSê0*w5Žô