![](http://datasheet.mmic.net.cn/370000/ST20GP1_datasheet_16733510/ST20GP1_20.png)
ST20-GP1
20/116
Figure 4.2 Linked process list
Each process runs until it has completed its action or is descheduled. In order for several
processes 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
timeslicing 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,
including startp(start process) and endp(end process). When a main process executes a parallel
construct, 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 processes already on the same list.
The correct termination of a parallel construct is assured by use of the endpinstruction. This uses
a data structure that includes a counter of the parallel construct components which have still to
terminate. The counter is initialized to the number of components before the processes are started.
Each component ends with an endpinstruction which decrements and tests the counter. For all but
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
P
Q
R
S
FptrReg1
Local Data
Registers
Program
BptrReg1
pw.Iptr
pw.Link
pw.Iptr
pw.Link
pw.Iptr
Wptr
IptrReg
Areg
Breg
Creg