1. A system comprising: a cache storing instructions of a computer program; and a processor; wherein the processor is configured to: replicate an original instruction of said instructions to create a copy of the original instruction, in response to determining the original instruction corresponds to a first instruction type; not replicate the original instruction of said instructions, in response to determining the original instruction corresponds to a second instruction type which is to be executed by a first functional unit, wherein there are M copies of the first functional unit, each copy corresponding to two or more threads of a plurality of threads; and execute the original instruction of the second instruction type, in response to determining a source operand is ready from a first thread and a source operand is ready from at least one other thread of the plurality of threads.