1. A method for prioritizing instructions in a data processing system comprising: assigning a first priority value to a first instruction thread and a second priority value to a second instruction thread; tagging each instruction from the first instruction thread with the first priority value so that the first hardware resource may be allocated based on the first priority value being part of each instruction; presenting a request from a first instruction in the first instruction thread to access a first hardware resource; and allocating the first hardware resource to the first instruction from the first instruction thread based on the first priority value.