[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Priorities in SPoC
On Mon, 1 Mar 1999, Adrian Lawrence wrote:
> Ah, so SPoC *does* have priority. Excellent. And that "critical error" is
> exactly the right behaviour when it hits a STOP. CSPP says the soft priority
> gives (a -->STOP) |~| (b --> STOP), and SPoC has done the second, hit the
> STOP, followed occam philosophy and warned of an error. Good old SPoC.
Less about the old...it's still under active development you know. Apart
from assorted bug fixes, we now have flattening (elimination of
replicators, PROCs and FUNCTIONs) working and can generate PIC assembler
with minimal per-process state. This will also make the SMV
model-checking feature work properly sometime soon.
With other people's work on occam to FPGA, we are close to a complete
integrated HW/SW codevelopment world for occam.
Anyway, the real reason for the message was to discuss SPoC's
implementation of PRI. The SPoC scheduler essentially uses coroutines; it
is not preemptive. When it gains control, which includes every
communication and PAR, it uses two queues, high and low priority, as in
the transputer. The high priority queue is always run if possible.
Without external communication, a high priority process can _only_ become
ready at a scheduling point, so this model ensures that there is never a
high priority process waiting on a low priority one. The scheduler has no
preemption, so this guarantee cannot be provided for _external_
communications triggering a high priority process.
ALTs are all PRI ALTs of the transputer sort, complete with the famous
three-way PRI ALT bug (feature). SPoC goes to great lengths to ensure
Denis A Nicole WWW: http://www.hpcc.ecs.soton.ac.uk/~dan
High Performance Computing Centre Email: dan@xxxxxxxxxxxxxxx
University of Southampton Phone: +44 1703 592703
UK. Fax: +44 1703 593903