Patent ID: 9703614
Date: 2017-07-11
CPC Classifications: G06F,Y02D

Claim:
1. A computer program product for managing a free list of available resources in a processor, the computer program product comprising: a non-transitory storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising: identifying one or more available resources for execution by the processor; determining a maximum number of resources the processor can utilize in executing an instruction group; grouping the one or more available resources into one or more resource groups, wherein each of the one or more resource groups has a size equal to the maximum number; receiving a request from a decode logic for a number of resources for execution; dispatching one of the one or more resource groups in response to the request by providing the number of resources for execution to the processor and sending one or more remaining resources in the one of the one or more resource groups to a recycle queue, wherein the one or more remaining resources are sent to the recycle queue without being utilized by the processor and wherein the recycle queue has a size equal to twice the maximum number of resources the processor can utilize in executing the instruction group; holding one or more instruction groups, including the instruction group, in a held resource group queue, where the size of the held resource group queue is large enough to account for a latency between indicating a resource is available and resource allocation; receiving a second request from the decode logic for a second number of resources for execution; based on determining that the recycle queue contains fewer resources than the maximum number, obtaining additional available resources from both the recycle queue and the free list to create a new group of available resources; indicating to a dispatch stall logic that the one or more resource groups are available for dispatch; incrementing a resource group count for each of the one or more resource groups indicated; decrementing the resource group count for each dispatching resource group; and stalling dispatch based on a value of the resource group count.