1. A method of allocating resources between a plurality of threads in a processor, each thread being associated with a plurality of instructions, the method comprising: receiving, at a reservation station, a speculation metric for each thread of the plurality of threads, each speculation metric representing an extent to which the instructions associated with the thread are speculative; allocating, at the reservation station, functional unit resources to the plurality of threads based on the speculation metrics, comprising: comparing the speculation metrics to identify a thread with less speculative instructions; determining a difference between the speculation metric for the thread with less speculative instructions and a speculation metric for another thread; and in response to determining the difference exceeds a threshold, allocating additional functional unit resources to the thread with less speculative instructions; selecting, at the reservation station, instructions associated with the plurality of threads based on the allocation of functional unit resources; and issuing, at the reservation station, the selected instructions to the functional unit resources.