retagged by
435 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.
retagged by

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

0 votes
0 votes
0 answers
1
pream sagar asked Jan 1, 2019
347 views
Which type of hazards mitigate by data forwardingwar and waw bothwar onlywaw onlynone of above