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                 PROCESSOR1,1
         FORK worker2 (config,cnf?,res!)     stage3 (config, cnf?, ch!)
        Id=2                 PROCESSOR1,2
         …                   stage4 (config, ch?, res!)
:                           :
                    (a)                                       (c)