I found:
(Sandy Bridge)
Pattern recognition for indirect jumps and calls
Indirect jumps and indirect calls (but not returns) are predicted using the same two-level predictor as branch instructions.
here on page 27:
http://www.agner.org/optimize/microarchitecture.pdf
I do not understand how conditional and unconditional branches can both use a 2-bit predictor? I thought unconditional branches would use a Branch Target Buffer (BTB). How can unconditional branches be predicted using a 2-bit predictor?!
Could somebody please explain, say for a recent Intel CPU, how the branch prediction works for conditional and unconditional branches with regards to predictors, history tables and BTB caches? I am uncertain if they work together, for both types of branches, or they both exist but only handle different branch types??