[Info-vax] Dave Cutler, Prism, DEC, Microsoft, etc.
John Reagan
johnrreagan at earthlink.net
Mon Nov 30 14:24:22 EST 2009
"John Wallace" <johnwallace4 at yahoo.co.uk> wrote in message
news:d6cc754e-de17-4506-8460-eb282a1e7d2c at m35g2000vbi.googlegroups.com...
On Nov 27, 5:47 am, "John Reagan" <johnrrea... at earthlink.net> wrote:
>"you get all the loop optimization, routine inlining, dataflow
>analysis, etc. that you get on Alpha."
>Whilst these may have been leading edge once upon a time, surely
>surely surely (?) they are fairly standard stuff these days, no? Does
>gcc 4 do those to any useful extent, for example? Does Visual Studio
>do those (either on x86 or on IA64)?
I was commenting on a statement that our Itanium code-generator is less than
the Alpha version. It isn't.
Yes such optimizations are often common but on most Unix systems I've seen
such optimizations are off by default.
GEM also does various forms of loop analysis, software pipelining, some
limited speculation on Alpha (where there isn't any hardware support like
Itanium's data speculation and NaTs).
>And with IA64 you also afaict get a variety of often unavoidable run-
>time penalties (alignment faults etc being the classic example) which
>were largely things that Alpha users didn't need to worry too much
>about, and are things that AMD64 users don't need to worry too much
>about.
Unavoidable? Just align your data or tell the compiler the data isn't
aligned.
Remember that except for compiler bugs, alignment faults comes from the user
lying to the compiler. The compiler thinks the data is aligned but the
program cheated and violated a rule (like stuffing some odd-byte address
into an "int*"). Either align the data or if you can't, tell the compiler
what you did and we'll avoid the alignment fault.
Those alignment faults even on AMD64 cost time and hardware. They just cost
time on Alpha since there is no hardware support to deal with them. They
ALL get sent at least to the PAL code. On Itanium, the hardware can fix up
some if they fall in the same quadword or get sent to the OS as there is no
PAL code. All of the slowdown for alignment faults on Itanium is not due to
the chip, but due to all the overhead that OpenVMS has to do to resolve the
misaligned memory reference. If Alpha didn't have low-level PAL code, it
would be just as bad if not worse.
John
More information about the Info-vax
mailing list