Open In App
Related Articles

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

Improve Article
Improve
Save Article
Save
Like Article
Like

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


Answer: (B)

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


Quiz of this Question

Last Updated : 19 Nov, 2018
Like Article
Save Article
Similar Reads