aPaperADay
3 Graphcore's Scheduling Processing summary

A Subtle Compromise

Paragraph [008] hints to a subtle compromise between a fully hardware approach to coordinating the execution of concurrent threads versus a fully programmatic software approach.

I believe their distinction lies primarily in the ISA to allow opcodes to dictate the current workers attachment to the execution unit. The two types of threads that can be attached to the execution unit are workers and supervisor. There is always provision in the context registers for the supervisor thread, and he always begins a timeslot.

The key are the opcodes which allow the threads to exit and relinquish. The supervisor always begins the timeslot, and has an opcode which allows it to give control up to a specific worker with a specific context via relinquish. The supervisor is the only thread permitted to execute that opcode. Similarly, the worker threads can give control back to the supervisor via exit.