Consider the pipelined implementation (without forwarding and/or stalling) of the MIPS microprocessor.
(a) Explain how this pipelined implementation deals with I-type conditional branch instructions in the case the
branch is not taken and in the case the branch is taken.
(b) Explain why data dependency hazards may occur in this implementation.
(c) List all possible instruction sequences that may exhibit data dependency hazards.
(d) For each sequence in (c), give a software equivalent that does not suffer from the data dependency limitation.