From: Gavin Scott on
nmm1(a)cam.ac.uk wrote:
> The other problem with even native IA64 code was reliability. The
> skill needed to track down problems that might be code generation
> bugs or obscure race conditions was MUCH greater than that needed
> for other systems. So a lot of code was very unreliable.

At least under HP-UX this was not my experience. I've seen no more
compiler related issues under Itanium than I did under PA-RISC, though
we didn't really start doing significant work with it until customers
actually started having the machines in production so there were
probably more problems early on.

These days Itanium under HP-UX seems to be as stable and reliable a
development platform as any other.

> I should be interested if anyone used desktop GUIs and applications
> compiled natively, to know what they thought. The HPC people were
> distinctly unhappy - SGI got the Altix going, but several owners
> of 'ordinary' Linux Itanium boxes turned them off as unsupportable
> for an amount of effort that made them cost-effective.

The Itanium Linux project was reasonably well supported by HP, but
it didn't have anyhting like the mindshare it needed to get done well
and quickly, so IIRC it was mostly just a few guys in HP having to
figure out how to re-invent everything without very much help from
the Linux community at large.

G.
From: Tom on
"Andy \"Krazy\" Glew" <ag-news(a)patten-glew.net> wrote in
news:4AE3A728.3040001(a)patten-glew.net:

> nmm1(a)cam.ac.uk wrote:
>> In article <4AE12FA9.1000706(a)patten-glew.net>,
>> Andy \"Krazy\" Glew <ag-news(a)patten-glew.net> wrote:
>>> Robert Myers wrote:
>>>
>>> I am not aware of an Itanium shipped or proposed that had an "x86 core
>>> on the side".
>>
>> I am. I can't say how far the proposal got - it may never have got
>> beyond the back of the envelope stage, and then got flattened as a
>> project by management.
>
> I am reasonably certain that you are misremembering or misunderstanding
> a presentation that may have oversimplified things.

I worked in HP Labs (but nowhere near the Itanium) when
such an announcement was made. My reaction was "What?
WHAT? Bloody hell!"

It was about that time that I really became disenchanted
with the Itanium and made the decision that I would
consciously ignore it.

From: Gavin Scott on
"Andy \"Krazy\" Glew" <ag-news(a)patten-glew.net> wrote:
> Perhaps the problem is terminology: to me, and to people at Intel, "x86
> on the side" means that you have an x86 core right next to the Itanium
> core, connected at the bus, or perhaps the L1 or L2 cache.

Yes, I think we're all talking about the same thing, but being outside
the implementaiton world the difference between the "x86 on the side"
and the "x86 front end" is easy to miss/ignore.

G.
From: Gavin Scott on
Stephen Sprunk <stephen(a)sprunk.org> wrote:
> IIRC, HP's Dynamo, a run-time PA-RISC to PA-RISC binary translator, was
> able to achieve a significant performance gain over just running the
> binary natively. They also ported it to x86 under the name DynamoRIO,
> though I can't recall the performance results.

> DEC's binary translator (FX32?) made the Alpha, for a few months at
> least, the fastest "x86" machine in existence.

> MS's .NET stuff seems to run pretty fast, especially when you consider
> all the safety checks that it always does which are usually left out of
> native C/C++ binaries, garbage collection, etc. Some tests show that
> it's actually _faster_ than native code, once you subtract the start-up
> time hit.

> Apple seems to be committed to their LLVM stuff, which is already
> reaping huge graphics performance gains. Rosetta was pretty darn fast,
> enough to be useful and transparent, though not quite as fast as native
> code.

> Run-time translation seems to have a lot of success stories; the
> miserable failures of Transmeta and Intel may just be well-publicized
> anomalies.

Just to add to the list, when HP migrated their "Classic" stack-based
architecture that ran their HP-3000 servers of the day onto PA-RISC,
they provided very good binary compatibility via both static translation
and run-time emulation (neither really counts as dynamic translation
though).

I've told this story before, but the run-time emulator for the 16-bit
classic architecture consisted of hand-coded PA-RISC that managed to
do the emulation in something like an average of 7 PA-RISC instructions
per classic instruction. One of the engineers suggested to me that
they suspected there were cases where the emulated 16-bit code might
run faster than native PA-RISC due to the fact that the smaller 16-
bit code plus the emulator could entirely fit into the cache where
the 32-bit PA-RISC code might not.

The static translation version eliminated the instruction decode
step and could omit things like condition code generation when it
was not needed. The translated code was much larger than the original
though and got tacked onto the end of the original bianry file.

In any case it was very impressive and I can't help but think that
part of the problem with PA-RISC -> Itanium translation was that
they just didn't mange to get a small enough team of clever enough
people assigned to it.

G.
From: Gavin Scott on
Terje Mathisen <terje.wiig.mathisen(a)gmail.com> wrote:
> IA64 seemed to have a close to complete superset of all PA-RISC
> features/instructions, including some very funky address shift/
> combination operations specifically claimed to be there to support PS-
> RISC features.

Yes, and the virtual addressing scheme is practically identical to
PA-RISC 2.0.

There are some differences, like PA-RISC offering both pre- and post-
increment on memory ops, but it's the sort of thing translation should
not have had a big problem with.

Someone in HP did once say to me that they had changed the PA-RISC
compilers several years earlier to (allegedly) start scheduling for
optimal execution on Itanium (without telling anyone) long before
the Itanium sytems became available, which is a clever trick.

> The register set was so much larger that it could be mapped
> statically.

The low 32 non-rotating registers map pretty well to the PA-RISC
register set, but again some oddities like gr0 being read-only on
IPF (IIRC anyway).

I suspect that dealing with corner cases caused them more grief
than they expected, and the cost of switching between translated
code and handling exceptions that required falling back to
emulation of some sort might have been an issue, but that's just
speculation and I've never really tried to go look at what it's
doing.

G.