Difference between In-oder and Out-of-order execution in ARM architecture

arm, cpu-architecture

Solution

That's pretty much it. Out-of-order execution "greedily" executes every instruction it can as quickly as possible without waiting for previous instructions to finish unless they depend on the result of an as-yet unfinished instruction.

This is obviously mostly useful if an instruction waits for memory to be read. An in-order implementation would just stall until the data becomes available, whereas an out of order implementation can (provided there are instructions ahead that can't be executed independently) get something else done while the processor waits for the data to be delivered from memory.

Note that both compilers and (if the compiler is not clever enough) programmers can take advantage of this by moving potentially expensive reads from memory as far away as possible from the point where the data is actually used. This makes no difference for an in-order implementation but can help hiding memory latency in an out-of-order implementation and therefore makes the code run faster.

The downside is of course that out-of-order implementations tend to be more complex and more power hungry because of all the book-keeping involved.

Problem

As per my understanding in ARM processors, following are the features of In-order execution (1) Executes instructions in sequential order (2) Until current instruction is completed, it will not execute next instruction. (3) Have slower execution speed. Out-of order execution is just opposite behaviour of In-order. (1) Executes instructions in non-sequential order (2) Even if current instruction is NOT completed, it will execute next instruction. (This is done only if the next instruction does not depend on the result of current instruction) (3) Faster execution speed. Is there any other feature difference, other than the above mentioned ??

Original source