10-06-2014, 09:11 PM
Again, I know what out of order execution is. Instructions are performed in an arbitrary order, generally one that avoids conflicts. Problems arise from the same data conflicts as pipelining, but now the computer also needs to know which program line has priority on the conflict. So even though the previous arrangement might have had conflicts, the new one has different conflicts in different places, and some conflicts can not be avoided. Theoretically, this should have fewer holes in the execution due to cases being avoidable, but occasionally, this technique will actually be worse due to excessive overhead time spent finding the new order or the current arrangement already being the least conflicting in the pipeline to begin with.