%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 Document notes) endobj 13 0 obj << /S /GoTo /D (section.2) >> endobj 16 0 obj (2 Background information) endobj 17 0 obj << /S /GoTo /D (subsection.2.1) >> endobj 20 0 obj (2.1 Transputers) endobj 21 0 obj << /S /GoTo /D (subsection.2.2) >> endobj 24 0 obj (2.2 The transputer / host development relationship) endobj 25 0 obj << /S /GoTo /D (subsection.2.3) >> endobj 28 0 obj (2.3 Connecting transputers together) endobj 29 0 obj << /S /GoTo /D (subsection.2.4) >> endobj 32 0 obj (2.4 The other occam toolsets) endobj 33 0 obj << /S /GoTo /D (section.3) >> endobj 36 0 obj (3 The INMOS scientific-language compilers) endobj 37 0 obj << /S /GoTo /D (subsection.3.1) >> endobj 40 0 obj (3.1 The compilers) endobj 41 0 obj << /S /GoTo /D (subsubsection.3.1.1) >> endobj 44 0 obj (3.1.1 Features) endobj 45 0 obj << /S /GoTo /D (subsection.3.2) >> endobj 48 0 obj (3.2 Using the scientific-language compilers in the simplest case) endobj 49 0 obj << /S /GoTo /D (subsubsection.3.2.1) >> endobj 52 0 obj (3.2.1 Building a simple C program) endobj 53 0 obj << /S /GoTo /D (subsubsection.3.2.2) >> endobj 56 0 obj (3.2.2 Building a simple Pascal program) endobj 57 0 obj << /S /GoTo /D (subsubsection.3.2.3) >> endobj 60 0 obj (3.2.3 Building a simple FORTRAN program) endobj 61 0 obj << /S /GoTo /D (subsection.3.3) >> endobj 64 0 obj (3.3 Loading the tools) endobj 65 0 obj << /S /GoTo /D (subsection.3.4) >> endobj 68 0 obj (3.4 Rerunning the tools without reloading them) endobj 69 0 obj << /S /GoTo /D (subsection.3.5) >> endobj 72 0 obj (3.5 Running transputer bootable files as MS-DOS commands) endobj 73 0 obj << /S /GoTo /D (subsection.3.6) >> endobj 76 0 obj (3.6 The run-time libraries) endobj 77 0 obj << /S /GoTo /D (subsection.3.7) >> endobj 80 0 obj (3.7 Transputer memory allocation) endobj 81 0 obj << /S /GoTo /D (subsubsection.3.7.1) >> endobj 84 0 obj (3.7.1 The occam memory allocation map) endobj 85 0 obj << /S /GoTo /D (subsubsection.3.7.2) >> endobj 88 0 obj (3.7.2 The scientific-language memory allocation map) endobj 89 0 obj << /S /GoTo /D (subsection.3.8) >> endobj 92 0 obj (3.8 Implementation details) endobj 93 0 obj << /S /GoTo /D (subsubsection.3.8.1) >> endobj 96 0 obj (3.8.1 The runtime stack) endobj 97 0 obj << /S /GoTo /D (subsubsection.3.8.2) >> endobj 100 0 obj (3.8.2 The run-time heap) endobj 101 0 obj << /S /GoTo /D (subsubsection.3.8.3) >> endobj 104 0 obj (3.8.3 Selecting the run-time stack) endobj 105 0 obj << /S /GoTo /D (subsubsection.3.8.4) >> endobj 108 0 obj (3.8.4 Placement of the code) endobj 109 0 obj << /S /GoTo /D (subsubsection.3.8.5) >> endobj 112 0 obj (3.8.5 The static data area) endobj 113 0 obj << /S /GoTo /D (subsubsection.3.8.6) >> endobj 116 0 obj (3.8.6 The scientific-language process communications interface) endobj 117 0 obj << /S /GoTo /D (subsection.3.9) >> endobj 120 0 obj (3.9 Scientific-language channel I/O support) endobj 121 0 obj << /S /GoTo /D (subsubsection.3.9.1) >> endobj 124 0 obj (3.9.1 C support) endobj 125 0 obj << /S /GoTo /D (subsubsection.3.9.2) >> endobj 128 0 obj (3.9.2 Pascal support) endobj 129 0 obj << /S /GoTo /D (subsubsection.3.9.3) >> endobj 132 0 obj (3.9.3 FORTRAN support) endobj 133 0 obj << /S /GoTo /D (subsubsection.3.9.4) >> endobj 136 0 obj (3.9.4 Parallel C support) endobj 137 0 obj << /S /GoTo /D (subsubsection.3.9.5) >> endobj 140 0 obj (3.9.5 Parallel FORTRAN support) endobj 141 0 obj << /S /GoTo /D (subsection.3.10) >> endobj 144 0 obj (3.10 Additional support from Parallel C and Parallel FORTRAN) endobj 145 0 obj << /S /GoTo /D (subsection.3.11) >> endobj 148 0 obj (3.11 Transputer assembler inserts) endobj 149 0 obj << /S /GoTo /D (subsubsection.3.11.1) >> endobj 152 0 obj (3.11.1 Usage of assember) endobj 153 0 obj << /S /GoTo /D (subsubsection.3.11.2) >> endobj 156 0 obj (3.11.2 Local workspace allocation) endobj 157 0 obj << /S /GoTo /D (subsubsection.3.11.3) >> endobj 160 0 obj (3.11.3 Review of how the transputer implements procedure calls) endobj 161 0 obj << /S /GoTo /D (subsubsection.3.11.4) >> endobj 164 0 obj (3.11.4 The C assembler restrictions and capabilities) endobj 165 0 obj << /S /GoTo /D (subsection.3.12) >> endobj 168 0 obj (3.12 Mixing occam and non-occam compilation units within the same process) endobj 169 0 obj << /S /GoTo /D (subsubsection.3.12.1) >> endobj 172 0 obj (3.12.1 Parameter type compatabilities) endobj 173 0 obj << /S /GoTo /D (subsubsection.3.12.2) >> endobj 176 0 obj (3.12.2 Hidden parameters) endobj 177 0 obj << /S /GoTo /D (subsubsection.3.12.3) >> endobj 180 0 obj (3.12.3 Array parameters) endobj 181 0 obj << /S /GoTo /D (subsubsection.3.12.4) >> endobj 184 0 obj (3.12.4 Vectorspace) endobj 185 0 obj << /S /GoTo /D (subsubsection.3.12.5) >> endobj 188 0 obj (3.12.5 Occam parameter supersets) endobj 189 0 obj << /S /GoTo /D (subsubsection.3.12.6) >> endobj 192 0 obj (3.12.6 Calling an occam FUNCTION) endobj 193 0 obj << /S /GoTo /D (section.4) >> endobj 196 0 obj (4 The INMOS D705B occam-2 toolset) endobj 197 0 obj << /S /GoTo /D (subsection.4.1) >> endobj 200 0 obj (4.1 Software development using the D705B) endobj 201 0 obj << /S /GoTo /D (subsection.4.2) >> endobj 204 0 obj (4.2 File naming convention) endobj 205 0 obj << /S /GoTo /D (subsection.4.3) >> endobj 208 0 obj (4.3 Processor types) endobj 209 0 obj << /S /GoTo /D (subsection.4.4) >> endobj 212 0 obj (4.4 Error modes) endobj 213 0 obj << /S /GoTo /D (subsection.4.5) >> endobj 216 0 obj (4.5 The makefile generator) endobj 217 0 obj << /S /GoTo /D (subsection.4.6) >> endobj 220 0 obj (4.6 The occam compiler) endobj 221 0 obj << /S /GoTo /D (subsection.4.7) >> endobj 224 0 obj (4.7 The syntax checker) endobj 225 0 obj << /S /GoTo /D (subsection.4.8) >> endobj 228 0 obj (4.8 The librarian) endobj 229 0 obj << /S /GoTo /D (subsection.4.9) >> endobj 232 0 obj (4.9 The linker) endobj 233 0 obj << /S /GoTo /D (subsection.4.10) >> endobj 236 0 obj (4.10 Binary listen) endobj 237 0 obj << /S /GoTo /D (subsection.4.11) >> endobj 240 0 obj (4.11 The bootstrap tool) endobj 241 0 obj << /S /GoTo /D (subsection.4.12) >> endobj 244 0 obj (4.12 The configures) endobj 245 0 obj << /S /GoTo /D (subsection.4.13) >> endobj 248 0 obj (4.13 The debugger) endobj 249 0 obj << /S /GoTo /D (subsection.4.14) >> endobj 252 0 obj (4.14 The simulator) endobj 253 0 obj << /S /GoTo /D (subsection.4.15) >> endobj 256 0 obj (4.15 Supplementary tools) endobj 257 0 obj << /S /GoTo /D (section.5) >> endobj 260 0 obj (5 Handling non-occam processes) endobj 261 0 obj << /S /GoTo /D (subsection.5.1) >> endobj 264 0 obj (5.1 Equivalent occam process technology) endobj 265 0 obj << /S /GoTo /D (subsubsection.5.1.1) >> endobj 268 0 obj (5.1.1 The Type 1 interface) endobj 269 0 obj << /S /GoTo /D (subsubsection.5.1.2) >> endobj 272 0 obj (5.1.2 The Type 2 Interface) endobj 273 0 obj << /S /GoTo /D (subsubsection.5.1.3) >> endobj 276 0 obj (5.1.3 The Type 3 interface) endobj 277 0 obj << /S /GoTo /D (subsection.5.2) >> endobj 280 0 obj (5.2 D705B Processor classes) endobj 281 0 obj << /S /GoTo /D (subsection.5.3) >> endobj 284 0 obj (5.3 EOP Startup and shutdown overheads) endobj 285 0 obj << /S /GoTo /D (subsection.5.4) >> endobj 288 0 obj (5.4 Practical considerations for writing harnesses) endobj 289 0 obj << /S /GoTo /D (subsubsection.5.4.1) >> endobj 292 0 obj (5.4.1 Memory allocation by the standard scientific-language harness) endobj 293 0 obj << /S /GoTo /D (subsubsection.5.4.2) >> endobj 296 0 obj (5.4.2 Writing harnesses to allocate scientific-language workspace memory) endobj 297 0 obj << /S /GoTo /D (section*.2) >> endobj 300 0 obj ( One scientific-language process) endobj 301 0 obj << /S /GoTo /D (section*.3) >> endobj 304 0 obj ( Two scientific-language processes) endobj 305 0 obj << /S /GoTo /D (subsubsection.5.4.3) >> endobj 308 0 obj (5.4.3 Placing all EOP stacks below the code) endobj 309 0 obj << /S /GoTo /D (subsubsection.5.4.4) >> endobj 312 0 obj (5.4.4 Establishing EOP workspace requirements) endobj 313 0 obj << /S /GoTo /D (subsubsection.5.4.5) >> endobj 316 0 obj (5.4.5 Terminating the host file server) endobj 317 0 obj << /S /GoTo /D (subsubsection.5.4.6) >> endobj 320 0 obj (5.4.6 Re-running the application without reloading) endobj 321 0 obj << /S /GoTo /D (subsubsection.5.4.7) >> endobj 324 0 obj (5.4.7 Process priorities) endobj 325 0 obj << /S /GoTo /D (section.6) >> endobj 328 0 obj (6 D7058 debugging guidelines) endobj 329 0 obj << /S /GoTo /D (subsection.6.1) >> endobj 332 0 obj (6.1 Problems with conventional debugging techniques) endobj 333 0 obj << /S /GoTo /D (subsection.6.2) >> endobj 336 0 obj (6.2 Error mode considerations) endobj 337 0 obj << /S /GoTo /D (subsection.6.3) >> endobj 340 0 obj (6.3 Run-time debugging aids) endobj 341 0 obj << /S /GoTo /D (subsection.6.4) >> endobj 344 0 obj (6.4 Debugging processes that are not connected to the host server) endobj 345 0 obj << /S /GoTo /D (subsubsection.6.4.1) >> endobj 348 0 obj (6.4.1 Overview of technique) endobj 349 0 obj << /S /GoTo /D (subsubsection.6.4.2) >> endobj 352 0 obj (6.4.2 Implementation detail) endobj 353 0 obj << /S /GoTo /D (subsubsection.6.4.3) >> endobj 356 0 obj (6.4.3 What to do it you don't have a debugger) endobj 357 0 obj << /S /GoTo /D (section.7) >> endobj 360 0 obj (7 Using the D705B occam-2 toolset) endobj 361 0 obj << /S /GoTo /D (subsection.7.1) >> endobj 364 0 obj (7.1 About makefiles) endobj 365 0 obj << /S /GoTo /D (subsection.7.2) >> endobj 368 0 obj (7.2 Two communicating EOPs on one transputer) endobj 369 0 obj << /S /GoTo /D (subsubsection.7.2.1) >> endobj 372 0 obj (7.2.1 Operations overview) endobj 373 0 obj << /S /GoTo /D (subsubsection.7.2.2) >> endobj 376 0 obj (7.2.2 The root EOP) endobj 377 0 obj << /S /GoTo /D (subsubsection.7.2.3) >> endobj 380 0 obj (7.2.3 The remote EOP) endobj 381 0 obj << /S /GoTo /D (subsubsection.7.2.4) >> endobj 384 0 obj (7.2.4 The occam bits) endobj 385 0 obj << /S /GoTo /D (subsubsection.7.2.5) >> endobj 388 0 obj (7.2.5 Running the program) endobj 389 0 obj << /S /GoTo /D (subsubsection.7.2.6) >> endobj 392 0 obj (7.2.6 Rebuilding) endobj 393 0 obj << /S /GoTo /D (subsubsection.7.2.7) >> endobj 396 0 obj (7.2.7 Re-implementation of the EOPs) endobj 397 0 obj << /S /GoTo /D (subsection.7.3) >> endobj 400 0 obj (7.3 Two communicating EOPs on two transputers) endobj 401 0 obj << /S /GoTo /D (subsection.7.4) >> endobj 404 0 obj (7.4 Using the debugger with the twin EOP twin transputer system) endobj 405 0 obj << /S /GoTo /D (subsection.7.5) >> endobj 408 0 obj (7.5 Placing the EOPs in a library) endobj 409 0 obj << /S /GoTo /D (subsection.7.6) >> endobj 412 0 obj (7.6 Sharing code amongst EOPs in a system) endobj 413 0 obj << /S /GoTo /D (subsubsection.7.6.1) >> endobj 416 0 obj (7.6.1 The EOPs) endobj 417 0 obj << /S /GoTo /D (subsubsection.7.6.2) >> endobj 420 0 obj (7.6.2 The shared occam code) endobj 421 0 obj << /S /GoTo /D (subsubsection.7.6.3) >> endobj 424 0 obj (7.6.3 Linker symbol optimization) endobj 425 0 obj << /S /GoTo /D (subsubsection.7.6.4) >> endobj 428 0 obj (7.6.4 Calculating where specific modules are placed) endobj 429 0 obj << /S /GoTo /D (subsubsection.7.6.5) >> endobj 432 0 obj (7.6.5 Using on-chip RAM effectively) endobj 433 0 obj << /S /GoTo /D (subsection.7.7) >> endobj 436 0 obj (7.7 Hints and tips) endobj 437 0 obj << /S /GoTo /D (subsubsection.7.7.1) >> endobj 440 0 obj (7.7.1 Library usage guidelines) endobj 441 0 obj << /S /GoTo /D (subsubsection.7.7.2) >> endobj 444 0 obj (7.7.2 General usage guidelines) endobj 445 0 obj << /S /GoTo /D (section.8) >> endobj 448 0 obj (8 Some useful checklists) endobj 449 0 obj << /S /GoTo /D (subsection.8.1) >> endobj 452 0 obj (8.1 Setting things up for the D705B) endobj 453 0 obj << /S /GoTo /D (subsection.8.2) >> endobj 456 0 obj (8.2 What to do if a multiple EOP system won't run \(on one transputer\)) endobj 457 0 obj << /S /GoTo /D (subsection.8.3) >> endobj 460 0 obj (8.3 What to do if a multiple EOP system won't run \(on many transputers\)) endobj 461 0 obj << /S /GoTo /D (subsection.8.4) >> endobj 464 0 obj (8.4 A summary of performance maximization techniques) endobj 465 0 obj << /S /GoTo /D (section.9) >> endobj 468 0 obj (9 Summary and Conclusions) endobj 469 0 obj << /S /GoTo /D (section*.4) >> endobj 472 0 obj (References) endobj 473 0 obj << /S /GoTo /D [474 0 R /Fit ] >> endobj 476 0 obj << /Length 372 /Filter /FlateDecode >> stream xÚuRËNÃ0¼ç+ö˜HdñúÛGZ( "œ‡(MÛHiRÚ Äß³Žs $N;Z{vgư׉ø§.Êä|E¤Fë,A¹YHށv ¥tP®á5}9µý6Ë•5é¸k"¸´Â,²·òr)°Ð’«GçfÊÀ·(­ëj?óbcèNÍ;Ÿí¸‹|£ÐyúÍï‡>ÿ;£:º¶®ÆvèO™\•É{BlE ‘EÇŠµ0(Eõ> Ê8,ŒÞØ$O³q¤QéBãŠ$*"PN¢&ª¸}¸|æåF¤eÆ šŒQ½ëÛ:€ª‹GÃØDd̤ëoÎç+ez᧐­CΗ ¡¹‡]ýú‹§8•ÞTû–G‡ÖÇ„ˆ=ií(4\'²é3%Óñ8é`ÞœÏÄœ2šºÛãðq8‹xqlOãÐ…¡ìßüÔDšc“¼B:^Çw]ФTÊÂÏZ8[D)sLVæåò&ÿØçgúáO™Ã endstream endobj 474 0 obj << /Type /Page /Contents 476 0 R /Resources 475 0 R /MediaBox [0 0 595.276 841.89] /Parent 483 0 R >> endobj 477 0 obj << /D [474 0 R /XYZ 117.828 740.002 null] >> endobj 478 0 obj << /D [474 0 R /XYZ 117.828 715.095 null] >> endobj 475 0 obj << /Font << /F17 479 0 R /F19 480 0 R /F37 481 0 R /F15 482 0 R >> /ProcSet [ /PDF /Text ] >> endobj 487 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 486 0 obj << /Type /Page /Contents 487 0 R /Resources 485 0 R /MediaBox [0 0 595.276 841.89] /Parent 483 0 R >> endobj 484 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Žô