Article: AMD's Mobile Strategy
By: Seni (seniike.delete@this.hotmail.com), December 21, 2011 8:28 am
Room: Moderated Discussions
>There is simply no excuse to use 5 instructions for a 64-bit address constant,
Isn't it faster to do 5 ALU ops instead of one Load?
Loading a constant with ALU ops has no dependence on anything so can always be pulled way ahead by the OOO engine. It doesn't really cost anything except fetch/decode bandwidth.
But if you load a constant from a constant pool using a Load instruction then your OOO powers are limited by memory-ordering semantics, and it is likely that that load latency will become part of the program's critical path.
>that's a bad ABI plus a braindead compiler. With a constant pool you need a single
>load to get an address or any complex immediate, and any global can be accessed
>using a single load or store (without ever needing to setup the address).
>
>It's not like accessing globals on a RISC is an unsolved problem.
>
>Wilco
Isn't it faster to do 5 ALU ops instead of one Load?
Loading a constant with ALU ops has no dependence on anything so can always be pulled way ahead by the OOO engine. It doesn't really cost anything except fetch/decode bandwidth.
But if you load a constant from a constant pool using a Load instruction then your OOO powers are limited by memory-ordering semantics, and it is likely that that load latency will become part of the program's critical path.
>that's a bad ABI plus a braindead compiler. With a constant pool you need a single
>load to get an address or any complex immediate, and any global can be accessed
>using a single load or store (without ever needing to setup the address).
>
>It's not like accessing globals on a RISC is an unsolved problem.
>
>Wilco