Floating Point Pipeline
For floating point operation, we have several functional units. Such as: adder, multiplier, divider, ALU (integer value)
These functional units can execute concurrently. For a floating point adder which take four cycles to complete, after its execution begins, another execution functional unit except itself could start(revised:for the adder it could also start because it's pipelined but for the divider it can not start).
Thus data hazard may happen, because several instruction may arrive at the MEM stage at the same time. We need to resolve this conflict by stall, we can detect the conflict in the ID stage before execution.
I do not know the specific method yet, I will find it latter.
These functional units can execute concurrently. For a floating point adder which take four cycles to complete, after its execution begins, another execution functional unit except itself could start(revised:for the adder it could also start because it's pipelined but for the divider it can not start).
Thus data hazard may happen, because several instruction may arrive at the MEM stage at the same time. We need to resolve this conflict by stall, we can detect the conflict in the ID stage before execution.
I do not know the specific method yet, I will find it latter.
评论