One type of pipeline hazard that can occur is a branch hazard.
a. Explain what a branch hazard is, and what causes a branch hazard.
b. Provide a relevant example using MIPS instruction set architecture. Discuss the similarities and differences of the code will proceed it the branch is taken, vs if the branch is not taken, and explain how this affects the pipeline.
c. Fully describe at least TWO of the techniques, OTHER than stalling, that can be used (in an attempt) to overcome branch hazards.