US2017031729A1PendingUtilityA1

Generational Thread Scheduler

Assignee: INTEL CORPPriority: Dec 16, 2011Filed: Oct 11, 2016Published: Feb 2, 2017
Est. expiryDec 16, 2031(~5.4 yrs left)· nominal 20-yr term from priority
G06F 9/52G06F 2209/5014
49
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Disclosed herein is a generational thread scheduler. One embodiment may be used with processor multithreading logic to execute threads of executable instructions, and a shared resource to be allocated fairly among the threads of executable instructions contending for access to the shared resource. Generational thread scheduling logic may allocate the shared resource efficiently and fairly by granting a first requesting thread access to the shared resource allocating a reservation for the shared resource to each other requesting thread of the executing threads and then blocking the first thread from re-requesting the shared resource until every other thread that has been allocated a reservation, has been granted access to the shared resource. Generation tracking state may be cleared when each requesting thread of the generation that was allocated a reservation has had their request satisfied.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A method for sharing a resource in a multiprocessing system, the method comprising:
 receiving, from a first plurality of requesting entities in a processor, requests for a shared resource;   granting a first entity of the first plurality of requesting entities access to the shared resource;   allocating a reservation to other entities of the first plurality of requesting entities for the shared resource; and   blocking the first entity from re-requesting the shared resource at least until each entity of the first plurality of requesting entities has been granted access to the shared resource.   
     
     
         2 . The method of  claim 1  further comprising:
 granting a second entity of the first plurality of requesting entities access to the shared resource; and 
 blocking the second entity from re-requesting the shared resource at least until each entity of the first plurality of requesting entities has been granted access to the shared resource. 
 
     
     
         3 . The method of  claim 2  further comprising:
 allocating a reservation to each entity of a second plurality of requesting entities for the shared resource; and 
 blocking the first and second entity from re-requesting the shared resource at least until each entity of the second plurality of requesting entities has been granted access to the shared resource. 
 
     
     
         4 . An article of manufacture comprising:
 a machine-accessible medium including data and instructions for allocating a shared resource among a plurality of entities such that, when accessed by a machine, cause the machine to:
 grant a first requesting entity of the plurality of entities access to the shared resource; 
 allocate a reservation for the shared resource to each requesting entity of the first plurality of entities; and 
 block the first entity from re-requesting the shared resource at least until no entity of the plurality of entities has been allocated a reservation but has not yet been granted access to the shared resource. 
   
     
     
         5 . The article of manufacture of  claim 4 , said machine-accessible medium including data and instructions that, when accessed by a machine, cause the machine to:
 grant a second requesting entity of the plurality of entities access to the shared resource; and   block the first and second entities from re-requesting the shared resource at least until there are none of the plurality of entities that, after being allocated a reservation, were not then granted access to the shared resource.   
     
     
         6 . The article of manufacture of  claim 5 , said machine-accessible medium including data and instructions that, when accessed by a machine, cause the machine to:
 allocate a reservation for the shared resource to each requesting entity of the plurality of entities that has not already been granted access to the shared resource; and   clear a first state variable when each entity of the plurality of entities that was allocated a reservation has had their request satisfied.   
     
     
         7 . A processor comprising:
 multithreading logic to execute a plurality of threads of executable instructions;   a shared resource to be allocated fairly among threads of the plurality of threads of executable instructions contending for access to the shared resource;   a thread scheduling logic to allocate the shared resource among the plurality of threads of executable instructions by:
 granting a first requesting thread of the plurality of threads of executable instructions access to the shared resource; 
 allocating a reservation for the shared resource to requesting threads of the first plurality of threads of executable instructions; and 
 blocking the first thread from re-requesting the shared resource at least until every thread of the plurality of threads of executable instructions that has been allocated a reservation, has had their request satisfied. 
   
     
     
         8 . The processor of  claim 7 , said thread scheduling logic to further allocate the shared resource among the plurality of threads of executable instructions by:
 granting a second requesting thread of the plurality of threads of executable instructions access to the shared resource; and   blocking the first and second thread from re-requesting the shared resource at least until every thread of the plurality of threads of executable instructions that has been allocated a reservation, has been granted access to the shared resource.   
     
     
         9 . The processor of  claim 7 , said thread scheduling logic to further allocate the shared resource among the plurality of threads of executable instructions by:
 blocking all threads from re-requesting the shared resource until every thread of the plurality of threads of executable instructions that has been allocated a reservation, has been granted access to the shared resource.   
     
     
         10 . The processor of  claim 7 , said thread scheduling logic to further allocate the shared resource among the plurality of threads of executable instructions by:
 allocating a reservation for the shared resource to each requesting thread of the plurality of threads of executable instructions that has not already been granted access to the shared resource; and   clearing a first state variable for each thread of the plurality of threads of executable instructions that has been allocated a reservation if it has been granted access to the shared resource.   
     
     
         11 . The processor of  claim 10 , said thread scheduling logic to further allocate the shared resource among the plurality of threads of executable instructions by:
 maintaining the first state variable for each thread of the plurality of threads of executable instructions having an outstanding or completed request, until every thread that has been allocated a reservation, has been granted access to the shared resource.   
     
     
         12 . A processor comprising:
 simultaneous multithreading logic to execute a plurality of threads of executable instructions;   one or more cache memories to store a copy of one or more portions of data and/or executable instructions from an addressable memory, at least in part through the use of a shared resource;   a finite-state machine for allocating the shared resource among the plurality of threads of executable instructions, said finite-state machine to:
 grant a first requesting thread of the plurality of threads of executable instructions access to the shared resource; 
 allocate a reservation for the shared resource to requesting threads of the first plurality of threads of executable instructions; and 
 block the first thread from re-requesting the shared resource at least until no thread of the plurality of threads of executable instructions has been allocated a reservation but has not been granted access to the shared resource. 
   
     
     
         13 . The processor of  claim 12 , said finite-state machine to:
 block all threads from re-requesting the shared resource until every thread of the plurality of threads of executable instructions that has been allocated a reservation, has also been granted access to the shared resource.   
     
     
         14 . The processor of  claim 12 , said finite-state machine to:
 allocate a reservation for the shared resource to each requesting thread that has not already been granted access to the shared resource; and   clear a first state variable for each thread that has been allocated a reservation if it has been granted access to the shared resource.   
     
     
         15 . The processor of  claim 14 , said finite-state machine to:
 maintain the first state variable for each thread having an outstanding or completed request, until every thread that has been allocated a reservation, has been granted access to the shared resource.   
     
     
         16 . A computing system comprising:
 an addressable memory to store data and also to store executable instructions;   one or more cache memories to store a copy of one or more portions of the data and/or the executable instructions stored in the addressable memory, at least in part through the use of a shared resource;   a multiprocessor including simultaneous multithreading logic to execute a plurality of threads of executable instructions, the multiprocessor operatively coupled with the addressable memory and including a finite-state machine for allocating the shared resource among the plurality of threads of executable instructions, said finite-state machine to:
 grant a first requesting thread of the plurality of threads of executable instructions access to the shared resource; 
 allocate a reservation for the shared resource to requesting threads of the first plurality of threads of executable instructions; and 
 block the first thread from re-requesting the shared resource at least until no thread of the plurality of threads of executable instructions has been allocated a reservation but has not yet been granted access to the shared resource. 
   
     
     
         17 . The computing system of  claim 16 , said finite-state machine to:
 allocate a reservation for the shared resource to each requesting thread that has not already been granted access to the shared resource; and   clear a first state variable for each thread that has been allocated a reservation if it has been granted access to the shared resource.   
     
     
         18 . The computing system of  claim 17 , said finite-state machine to:
 maintain the first state variable for each thread having an outstanding or completed request, until every thread that has been allocated a reservation, has been granted access to the shared resource.   
     
     
         19 . The computing system of  claim 16 , finite-state machine to:
 grant a second requesting thread of the plurality of threads of executable instructions access to the shared resource; and   block the first and second thread from re-requesting the shared resource at least until every thread of the plurality of threads of executable instructions that has been allocated a reservation, has been granted access to the shared resource.   
     
     
         20 . The computing system of  claim 19 , said finite-state machine to:
 block all threads from re-requesting the shared resource until every thread of the plurality of threads of executable instructions that has been allocated a reservation, has also been granted access to the shared resource.

Join the waitlist — get patent alerts

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

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