ST20-GP6
Registers
FptrReg1
BptrReg1
Areg
Breg
Creg
Wptr
Iptr
Local data
Iptr.s
P Link.s
Iptr.s
Q Link.s
Iptr.s
R
S
Program
Figure 4.2 Linked process list
Function
High priority Low priority
Pointer to front of active process list
FptrReg0
FptrReg1
Pointer to back of active process list
BptrReg0
BptrReg1
Table 4.1 Priority queue control registers
Each process runs until it has completed its action or is descheduled. In order for several pro-
cesses to operate in parallel, a low priority process is only permitted to execute for a maximum of
two timeslice periods. After this, the machine deschedules the current process at the next timeslic-
ing point, adds it to the end of the low priority scheduling list and instead executes the next active
process. The timeslice period is 1ms.
There are only certain instructions at which a process may be descheduled. These are known as
descheduling points. A process may only be timesliced at certain descheduling points. These are
known as timeslicing points and are defined in such a way that the operand stack is always empty.
This removes the need for saving the operand stack when timeslicing. As a result, an expression
evaluation can be guaranteed to execute without the process being timesliced part way through.
Whenever a process is unable to proceed, its instruction pointer is saved in the process workspace
and the next process taken from the list.
The processor core provides a number of special instructions to support the process model, includ-
ing startp (start process) and endp (end process). When a main process executes a parallel con-
struct, startp is used to create the necessary additional concurrent processes. A startp instruction
creates a new process by adding a new workspace to the end of the scheduling list, enabling the
new concurrent process to be executed together with the ones already being executed. When a
process is made active it is always added to the end of the list, and thus cannot pre-empt pro-
cesses already on the same list.
The correct termination of a parallel construct is assured by use of the endp instruction. This uses
a data structure that includes a counter of the parallel construct components which have still to ter-
21/123