GATE CSE 2012 | Question: 20, ISRO2016-23
in CO and Architecture edited by
34 votes

Register renaming is done in pipelined processors:

  1. as an alternative to register allocation at compile time
  2. for efficient access to function parameters and local variables
  3. to handle certain kinds of hazards
  4. as part of address translation
in CO and Architecture edited by

Subscribe to GO Classes for GATE CSE 2022

2 Answers

52 votes
Best answer

Register renaming is done to eliminate WAR (Write after Read) and WAW (Write after Write) dependency between instructions which could have caused pipieline stalls. Hence, (C) is the answer.


I1: Read $A$ to $B$
I2: Write $C$ to $A$

Here, there is a WAR dependency and pipeline would need stalls. In order to avoid it register renaming is done and 

Write $C$ to $A$
will be 
Write $C$ to $A$' 

WAR dependency is actually called anti-dependency and there is no real dependency except the fact that both uses same memory location. Register renaming can avoid this. Similarly WAW also.

edited by


edited by
1. I understand the output of the example on the 2nd page of the pdf but steps are not given for it. Can you explain how that renaming is done with the help of that table?

2. Also is Tomasulo algo important?

3. Can you also explain example on page:

4. Any resource, especially reference book explaining this in detail?

By using register renaming can we eliminate all stalls created by a name dependency?

I think NO, bcz for a large program it requires large number of registers which may be  limited to some processor.

reena why are saying register renaming does not eliminate all name dependency in all this type of question if you read some where then share  reference
@arjun sir link is not working.
2 votes
→ Register renaming is used to eliminate hazards that arise due to WAR (Write After Read) and WAW(Write After Write) dependencies.

Related questions