03-23-2017, 12:47 PM
Its definately possible to do both conditional jumps and unconditional ones in the first stage. There would be no time difference between the two jumps and theres no branch penalty.
Taking out the jump instruction entirely in the code stream is very complex however
For a jump entry you would need to save
1. the jump source address to search for
2. the instruction it points to.
3. the condition you were looking for.
4. the prediction (2 bit+saturation counter?)
and besides that
1. PC recovery register if guessed taken, but not taken
2. some condition module that can work in parallel with the rest of the cpu
fun for experimentation, but you need alot of info for just 1 jump.
Taking out the jump instruction entirely in the code stream is very complex however
For a jump entry you would need to save
1. the jump source address to search for
2. the instruction it points to.
3. the condition you were looking for.
4. the prediction (2 bit+saturation counter?)
and besides that
1. PC recovery register if guessed taken, but not taken
2. some condition module that can work in parallel with the rest of the cpu
fun for experimentation, but you need alot of info for just 1 jump.
Don't thank me, thank my coffee machine