Register Renaming used to avoid unnecessary serialization of program operations caused by the reuse of registers by those operations, in order to enable out-of-order execution