Research Article
Occam-pi for Programming of Massively Parallel Reconfigurable Architectures
Code Example 3
Source code illustrating (a) Configuration loader, (b) configuration monitor, and (c) worker process.
PROC loader (CHAN INT inp?, CHAN MOBILE INT cnf!, PROC monitor (CHAN INT res?, CHAN INT ack!, | CHAN INT ack?) CHAN INT outp!) | INT cstatus, value, id: INT status: | MOBILE INT config: VAL RECONFIG IS 255: | CHAN MOBILE INT cnf: WHILE TRUE | CHAN INT res: SEQ | VAL RECONFIG IS 255: res ? status | SEQ IF | FORKING status = RECONFIG | WHILE TRUE ack ! RECONFIG | SEQ status <> RECONFIG | inp ? value outp ! status | cnf ! value : | ack ? cstatus (b) | IF | cstatus = RECONFIG PROC worker2 (MOBILE INT config, | SEQ CHAN MOBILE INT cnf?, CHAN INT res!) | ack ? id CHAN INT ch: | IF PLACED PAR | id = 1 PROCESSOR 1,1 | FORK worker2 (config, cnf?, res!) stage3 (config, cnf?, ch!) | Id = 2 PROCESSOR 1,2 | … stage4 (config, ch?, res!) | : : | (a) (c) |
|