US2020285473A1PendingUtilityA1

Synchronisation of execution threads on a multi-threaded processor

Assignee: IMAGINATION TECH LTDPriority: Jul 4, 2006Filed: May 26, 2020Published: Sep 10, 2020
Est. expiryJul 4, 2026(expired)· nominal 20-yr term from priority
Inventors:Yoong Chert Foo
G06F 9/3888G06F 9/3851G06F 9/30087G06F 9/522G06F 9/3009G06F 9/30145G06F 9/461G06F 9/524G06F 8/458
69
PatentIndex Score
0
Cited by
0
References
0
Claims

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.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . 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 of the plurality of threads on the multi-threaded processor when the first thread reaches a synchronisation point, until all other threads of the plurality of threads with which the first thread is intended to be synchronised reach a corresponding synchronisation point, 
 determine resources available for processing the first thread and all the other threads of the plurality of threads with which the first thread is intended to be synchronised, and 
 cause execution to subsequently resume based on the determined resources. 
   
     
     
         2 . The apparatus of  claim 1 , in which the controller is further configured to cause execution of threads to subsequently resume in a cyclic manner. 
     
     
         3 . The apparatus of  claim 1 , in which the controller is further configured to cause execution of at least two of: the first thread and the other threads of the plurality of threads with which the first thread is intended to be synchronised to subsequently resume. 
     
     
         4 . The apparatus of  claim 1 , in which the controller is further configured to determine whether any other thread has a higher priority for execution than the first thread and all the other threads of the plurality of threads with which the first thread is intended to be synchronised, and to cause execution to subsequently resume based on that determination. 
     
     
         5 . The apparatus of  claim 1  in which the controller is further configured to cause execution of the first thread to be paused in a wait for synchronisation start state. 
     
     
         6 . The apparatus of  claim 1 , in which the controller is further configured to pause execution of a second thread of the plurality of threads on the multi-threaded processor at a branch target following a branch which branches over a section of code for execution by threads of the plurality of threads which includes the synchronisation point, the branching of the second thread thereby avoiding the synchronisation point, until at least one of the other threads reaches the branch target. 
     
     
         7 . The apparatus of  claim 6 , in which the controller is further configured to cause execution of the second thread to be paused in a wait for synchronisation end state. 
     
     
         8 . The apparatus of  claim 1 , in which the controller is further configured to repeatedly check whether the threads with which the paused first thread is to be synchronised have also paused. 
     
     
         9 . The apparatus of  claim 6 , in which the controller is further configured to repeatedly check whether the threads with which the paused second thread is to be synchronised have also paused. 
     
     
         10 . The apparatus of  claim 8 , in which the controller is further configured to check the status of at least one bit in a status register for each of the threads. 
     
     
         11 . The apparatus of  claim 9 , in which the controller is further configured to check the status of at least one bit in a status register for each of the threads. 
     
     
         12 . The apparatus of  claim 6 , in which the controller is further configured to pause execution of the second thread until at least one of the other threads reaches the branch target without branching. 
     
     
         13 . The apparatus of  claim 1 , in which the controller is further configured to switch the paused first thread with another thread of the plurality of threads which is available for execution. 
     
     
         14 . The apparatus of  claim 6 , in which the controller is further configured to switch the paused second thread with another thread of the plurality of threads which is available for execution. 
     
     
         15 . The apparatus of  claim 1 , in which the controller is further configured to switch two or more paused threads with other threads of the plurality of threads which are available for execution, the controller being configured to switch threads of the two or more paused threads on each clock cycle of a clock accessible to the controller. 
     
     
         16 . 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 of the plurality of threads on the multi-threaded processor when the first thread reaches a synchronisation point;   waiting for all other threads of the plurality of threads with which the first thread is intended to be synchronised to reach a corresponding synchronisation point;   determining resources available for processing the first thread and all the other threads of the plurality of threads with which the first thread is intended to be synchronised; and   subsequently resuming execution based on the determined resources.   
     
     
         17 . The method of  claim 16 , further comprising subsequently resuming execution of threads in a cyclic manner. 
     
     
         18 . The method of  claim 16 , further comprising subsequently resuming execution of at least two of: the first thread and the other threads of the plurality of threads with which the first thread is intended to be synchronised. 
     
     
         19 . The method of  claim 16 , further comprising determining whether any other thread has a higher priority for execution than the first thread and all the other threads of the plurality of threads with which the first thread is intended to be synchronised, and subsequently resuming execution based on that determination. 
     
     
         20 . The method of  claim 16 , further comprising, when the first thread is paused, switching the paused thread with another thread of the plurality of threads which is available for execution.

Join the waitlist — get patent alerts

Track US2020285473A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.