Patent ID: 8087029

Claim:
A method for allocating a shared resource in a multithreaded processor that concurrently executes a plurality of threads, the method comprising: allocating, to each of a plurality of threads to be concurrently executed, an amount of a shared resource, wherein each thread is of one of a plurality of thread types including at least a first and a second thread type and wherein the allocation for each of the threads is based at least in part on the thread type of the thread; tracking, for each of the first and second thread types, an amount of the shared resource currently allocated to threads of that thread type; determining whether to allocate a first target amount of the shared resource to a first new thread of the first thread type, wherein the determination is made using a decision criterion based at least in part on the amount of the shared resource currently allocated to threads of the first thread type and a first reserved amount, the first reserved amount being an amount of the shared resource reserved for allocation to threads of the first thread type; generating per-thread-type feedback information in response to the determination; detecting an asymmetric use condition based on the feedback information; and in response to detecting the asymmetric use condition, dynamically modifying the decision criterion, and wherein detecting the asymmetric use condition includes detecting, based on the feedback information, that all of the first reserved amount is allocated at a time when less than all of the second reserved amount is allocated.