[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Synchronous Communication = Swap

On Sep 26,  4:23pm, M_Boosten wrote:
} Subject: Re: Synchronous Communication = Swap
} Hi,
} I was "clearly unclear" about the barier synchronisation idea.
} I'll try to clarify myself.
} The basic primitive "Sync" should:
} 1. Allow a number of processes to synchronise.
}    (Fundamentally, this is an event in CSP math)
} 2. Allow each of them to contribute data to the moment of
}    synchronisation.
} 3. Allow each of them to obtain the collection of contributed
}    data.
} One2One, One2All, and SwapChannel are special cases (semantical
} sugar) of this basic Sync primitive.  I think all these special
} cases can/are easily (be) modelled in CSP maths.
} I think x2Any is fundamentally different from Sync.  Has it already
} been modelled in CSP maths?
} Adrian:
} > And I don't think that this fits at all with the sorts of thing we do in
} > hardware compilation.
} I think the Sync primitive is also a fundamental primitive in
} hardware compilation.  The special cases One2One and One2All are
} widely used.  The more powerful primitives (SwapChannel, Sync) can
} probably `quite easily' be implemented.
} I think x2Any is much more difficult to implement in hardware than
} the Sync-based primitives because some arbitration mechanism needs
} to be implemented.
} Has x2Any been used in Hardware?
} Cheers,
} 	Marcel
}-- End of excerpt from M_Boosten

Marcel and all,
   When I first saw your swap, I immediately thought
of an implementation trick: If two variables or arrays
are not the product of aliasing, and the two proceses
share the same memory space in hardware, you can just
exchange pointers to the data.
   If they are the result of abbreviation, however,
a cleanup would be required before you could exit the
block enclosing the abbreviation.