Static vs Dynamic Branch Prediction

What is the difference between static and dynamic branch prediction?

A

Static is more accurate because the compiler has more information

B

Static predicts at compile time using heuristics; dynamic predicts at runtime based on observed branch history

C

Static is used for direct branches; dynamic is used for indirect branches

D

Static uses hardware; dynamic uses software