1. An apparatus, comprising: a computer processor configured to execute instructions for a plurality of threads; wherein the computer processor is configured to assign tag values from a fixed set of tag values to instructions being executed by the computer processor, wherein the tag value assigned to a given instruction in a given thread being executed by the computer processor is usable to determine a program order for the given instruction relative to other instructions within the given thread; and wherein the computer processor is configured to dynamically allocate tag values in the fixed set of tag values between the plurality of threads.