in CO and Architecture retagged by
418 views
0 votes
0 votes

Which of the following statements is true?

  1. Write after Read $\text{(WAR)}$ hazard can be mitigated by data forwarding.
  2. Both $\text{WAW}$ and $\text{WAR}$ hazards can be mitigated by data forwarding.
  3. None of the above
  4. Write after Write $\text{(WAW)}$ hazard can be mitigated by data forwarding.
in CO and Architecture retagged by
by
418 views

1 comment

I think ans should be A.

Because by the help of data forwarding(operand forwarding) we can mitigate WAR dependency.

Though we can not remove WAR dependency  completely by the help of data forwarding.(for memory instruction)

But as in question they did not mention completely so ans should be A. As we can remove some WAR dependency by operand forwarding.

0
0

1 Answer

2 votes
2 votes

Data Hazard

(1) RAW (Read after write)

A Flow dependency, also known as a data dependency or true dependency or read-after-write (RAW), occurs when an instruction depends on the result of a previous instruction:

1. A = 3
2. B = A
3. C = B

Instruction 3 is truly dependent on instruction 2, as the final value of C depends on the instruction updating B. Instruction 2 is truly dependent on instruction 1, as the final value of B depends on the instruction updating A. Since instruction 3 is truly dependent upon instruction 2 and instruction 2 is truly dependent on instruction 1, instruction 3 is also truly dependent on instruction 1.

Solution of RAW: DATA FORWARDING

(2) WAR (write after read)

An anti-dependency, also known as write-after-read (WAR), occurs when an instruction requires a value that is later updated. In the following example, instruction 2 anti-depends on instruction 3 — the ordering of these instructions cannot be changed, nor can they be executed in parallel (possibly changing the instruction ordering), as this would affect the final value of A.

1. B = 3
2. A = B + 1
3. B = 7

An anti-dependency is an example of a name dependency. That is, renaming of variables could remove the dependency, as in the next example:

1. B = 3
N. B2 = B
2. A = B2 + 1
3. B = 7

A new variable, B2, has been declared as a copy of B in a new instruction, instruction N. The anti-dependency between 2 and 3 has been removed, meaning that these instructions may now be executed in parallel. However, the modification has introduced a new dependency: instruction 2 is now truly dependent on instruction N, which is truly dependent upon instruction 1. As flow dependencies, these new dependencies are impossible to safely remove. 

solution of WAR: renaming of variable

(3) WAW (write after write)

An output dependency, also known as write-after-write (WAW), occurs when the ordering of instructions will affect the final output value of a variable. In the example below, there is an output dependency between instructions 3 and 1 — changing the ordering of instructions in this example will change the final value of A, thus these instructions cannot be executed in parallel.

1. B = 3
2. A = B + 1
3. B = 7

As with anti-dependencies, output dependencies are name dependencies. That is, they may be removed through renaming of variables, as in the below modification of the above example:

1. B2 = 3
2. A = B2 + 1
3. B = 7

source: wiki

 

Answer:

Related questions