# GATE | GATE-CS-2015 (Set 3) | Question 65

• Last Updated : 19 Nov, 2018

Consider the following code sequence having five instructions I1 to I5. Each of these instructions has the following format.

`    OP Ri, Rj, Rk `

where operation OP is performed on contents of registers Rj and Rk and the result is stored in register Ri.

```   I1 : ADD R1, R2, R3
I2 : MUL R7, R1, R3
I3 : SUB R4, R1, R5
I4 : ADD R3, R2, R4
I5 : MUL R7, R8, R9 ```

Consider the following three statements:

```S1: There is an anti-dependence between instructions I2 and I5.
S2: There is an anti-dependence between instructions I2 and I4.
S3: Within an instruction pipeline an anti-dependence always
creates one or more stalls. ```

Which one of above statements is/are correct?

(A) Only S1 is true
(B) Only S2 is true
(C) Only S1 and S2 are true
(D) Only S2 and S3 are true

Explanation: The given instructions can be written as below:

```I1: R1 = R2 + R3
I2: R7 = R1 * R3
I3: R4 = R1 - R5
I4: R3 = R2 + R4
I5: R7 = R8 * R9 ```

An anti-dependency, also known as write-after-read (WAR), occurs when an instruction requires a value that is later updated.

```S1: There is an anti-dependence between instructions I2 and I5.
False, I2 and I5 don't form any write after read situation.
They both write R7.

S2: There is an anti-dependence between instructions I2 and I4.
True, I2 reads R3 and I4 writes it.

S3: Within an instruction pipeline an anti-dependence always
creates one or more stalls.
Anti-dependency can be removed by renaming variables.
See following example.
1. B = 3
2. A = B + 1
3. B = 7
Renaming of variables could remove the dependency.
1. B = 3
N. B2 = B
2. A = B2 + 1
3. B = 7```
My Personal Notes arrow_drop_up