Search code examples
dependenciesmipspipeline

Dependency Types - MIPS/Pipelining


I need to determine the dependency types present in the following block of instructions. Unfortunately, the book I'm using is extremely unclear as to how to go about this. This is what I came up with:

SW R16, -100(R6)  --> RAW on R16
LW R4, 8(R16)     --> WAR on R16
ADD R5, R4, R4    --> RAW on R4

Am I on the right track? Can the first instruction have a Read-After-Write dependency type even though it is the first instruction in the pipe?


Solution

  • SW R16, -100(R6)  --> possible RAW on R6 and/or R16
    LW R4, 8(R16)     --> none: R16 was read in the previous instruction, 
                          so it can be read safely here
    
    ADD R5, R4, R4    --> RAW on R4