Synchronisation of execution threads on a multi-threaded processor
AssigneeImagination Technologies Limited
InventorYoong Chert Foo
Life of this patent
Estimating the term…
Abstract
Method and apparatus are provided for synchronising execution of a plurality of threads on a multi-threaded processor. A program executed by a thread can have a number of synchronisation points corresponding to points where execution is to be synchronised with another thread. Execution of a thread is paused when it reaches a synchronisation point until at least one other thread with which it is intended to be synchronised reaches a corresponding synchronisation point. Execution is subsequently resumed. A control core maintains status data for threads and can cause a thread that is ready to run to use execution resources that were occupied by a thread that is waiting for a synchronisation event.
Claims16
A method for synchronising execution of a plurality of threads on a multi-threaded processor, each thread being provided with a number of synchronisation points, the method comprising:
- pausing execution of a first thread when the first thread reaches a synchronisation point,
- waiting for all other threads with which the first thread is intended to be synchronised to reach a corresponding synchronisation point, and
- subsequently resuming execution,
- the method further comprising:
- pausing execution of a second thread at a branch target following a branch which branches over a section of code which includes the synchronisation point, until at least one of the other threads reaches the branch target.
Apparatus for synchronising execution of a plurality of threads on a multi-threaded processor, each thread being provided with a number of synchronisation points, the apparatus comprising:
- a controller configured to
- pause execution of a first thread when the first thread reaches a synchronisation point, until all other threads with which the first thread is intended to be synchronised reach a corresponding synchronisation point, and cause the first thread to subsequently resume execution,
- the controller being further configured to
- pause execution of a second thread at a branch target following a branch which branches over a section of code which includes the synchronisation point, until at least one of the other threads reaches the branch target.
Dependencies are inferred from the claim text.