1. A method for prioritizing instructions in a data processing system comprising: assigning a first priority value to instructions in a first instruction thread and a second priority value to instructions in a second instruction thread by tagging each instruction from the first instruction thread to include a first priority tag value and tagging each instruction from the second instruction thread to include a second priority tag value so that tagged instructions in the first and second instruction threads have different priority tag values; presenting to a first hardware resource a first tagged instruction request from the first instruction thread and a second tagged instruction request from the second instruction thread; extracting the first priority value and second priority value, respectively, from the first tagged instruction request and second tagged instruction request; and allocating the first hardware resource to the first tagged instruction request from the first instruction thread or the second tagged instruction request from the second instruction thread by determining at the first hardware resource which tagged instruction request has a higher priority tag value.