- May 11, 2008
- 20,139
- 1,149
- 126
I was reading about the predication of ARM instructions and was wondering how the out of order execution is implemented.
The thing is, to do out of order execution, the instruction following one and other cannot have dependencies.
I read that the 64 bit ARM instruction set no longer has predication bits. I am wondering if it has anything todo with the idea that predication might be a limiting factor for OoO execution.
With most instruction sets, only the branches are conditional, but with the ARM instruction set, any instruction can be made conditional. And it is often used.
For example this snippet, Registers r1 and r2 are tested for zero and the Z flag will be updated.
I wonder how this would work in an OoO cpu.
How would the schedular logic know that instruction 5and 6 are paired and instruction 7 and 8 are paired and that both pairs can be executed in parallel ?
Any thoughts ?
http://en.wikipedia.org/wiki/ARM_architecture#Conditional_execution
The thing is, to do out of order execution, the instruction following one and other cannot have dependencies.
I read that the 64 bit ARM instruction set no longer has predication bits. I am wondering if it has anything todo with the idea that predication might be a limiting factor for OoO execution.
With most instruction sets, only the branches are conditional, but with the ARM instruction set, any instruction can be made conditional. And it is often used.
For example this snippet, Registers r1 and r2 are tested for zero and the Z flag will be updated.
I wonder how this would work in an OoO cpu.
Code:
1 SUB r14, r14,#4
2 STMFD r13!, {r0-r7,r14}
3 LDR r0,=timer_address
4 LDMIA r0!,{r1-r10}
5 CMP r1, #0
6 SUBNE r1, r1, #1
7 CMP r2, #0
8 SUBNE r2, r2, #1
How would the schedular logic know that instruction 5and 6 are paired and instruction 7 and 8 are paired and that both pairs can be executed in parallel ?
Any thoughts ?
http://en.wikipedia.org/wiki/ARM_architecture#Conditional_execution
Last edited: