News for hackers. Stuff that matters.
Re:AMD Killed the Itanium by FullyFunctional on Saturday February 04, 2023 @03:57AM (#34652926)
Yeah this isn't quite what happened. Firstly, Intel didn't start Itanium, HP did, as a successor to their HP Precision line. I forget how they got together, but it was a collaboration between Intel and HP, but HP started it and had largely the architecture defined before Intel got involved.

Secondly, it's true that AMD hammered the nails in the coffin, but AMD wouldn't have mattered if Itanic had been faster, cheap, and on time. Itanic was a disaster partly because of overly complicated design by committee and partly because of the fundamentally flawed assumption (that you don't need dynamic scheduling, AKA OoO processing).

I have an Itanium in the garage, a monument to hubris.

UPDATE: I forgot to mention that from the outside it might seem that Intel had a singular vision, but the reality is that there were massive political battles internally and the company was largely split into IA-64 and x86 camps.

UPDATE2: Itanium was massively successful in one thing: it killed off Alpha and a few other cpus, just based on what Intel claimed.

Re:AMD Killed the Itanium by throwawaymaths on Saturday February 04, 2023 @04:42AM (#34653158)
> fundamentally flawed assumption (that you don't need dynamic scheduling, AKA OoO processing)

I'm still unconvinced this is fundamental. It certainly was flawed back then, but compiler theory has improved a LOT since then, we have polyhedral optimization, e.g. that we didn't have access to... You could probably optimize delay line technology that way.

Re:AMD Killed the Itanium by JonChesterfield on Saturday February 04, 2023 @07:01AM (#34653814)
If you know how long data will take to go to/from memory then you can schedule pretty well.

If you don't know whether some value will hit in the L1 or the L3 cache there's wild variance on how long it'll take so you have to do something else in the meantime. On x64, that's the pipeline and speculation. On a GPU, you swap to another fibre/warp until the memory op finished.

Fundamentally the hardware knows how long the memory access took, the software can only guess how long it will take. That kills effective ahead of time scheduling on most architectures.

Re:AMD Killed the Itanium by throwawaymaths on Saturday February 04, 2023 @07:12AM (#34653874)
Iirc caches mostly exist to help keep pipelines full. You could maybe imagine an architecture with deterministic memory access times from specified regions.
Re:AMD Killed the Itanium by cwzwarich on Saturday February 04, 2023 @09:36AM (#34654790)
Such architectures exist (e.g. for signal processing). They just aren't good for running general-purpose software.
Re:AMD Killed the Itanium by Kon-Peki on Saturday February 04, 2023 @10:44AM (#34655279)
Itanium sold, barely, and still has people using it. But, as you can imagine, not with general-purpose software.

By the 2nd or 3rd generation, Intel had made some changes that really improved performance a lot. Was the final generation of Itanium the 4th generation?

Re:AMD Killed the Itanium by nordsieck on Saturday February 04, 2023 @11:32AM (#34655637)
> You could maybe imagine an architecture with deterministic memory access times from specified regions.

Sure.

But it's very easy to level down. And almost impossible to level up.

Re:AMD Killed the Itanium by anonymoushn on Saturday February 04, 2023 @07:03PM (#34659923)
> Iirc caches mostly exist to help keep pipelines full

You can find out by disabling the stride prefetcher and observing the 90+% performance regression in all your software!

Re:AMD Killed the Itanium by nullc on Saturday February 04, 2023 @09:20AM (#34654674)
I don't think building a threaded cpu that switches threads to hide memory latency would be philosophically incompatible with VLIW. I think the later generation itaniums were threaded too.

On x86 SMT gets a bad rap because its never been tremendously effective. It's much more effective in IBM's implementation on Power. It wouldn't be hard to imagine some Itanium SMT monster.

Re:AMD Killed the Itanium by yosefk on Saturday February 04, 2023 @09:39AM (#34654810)
How many threads would it take to hide 100ns of DRAM access latency and what serial performance would we get?
Re:AMD Killed the Itanium by nullc on Saturday February 04, 2023 @09:02PM (#34660859)
It doesn't have to be hidden completely, there are still caches.

With 2 unstalled threads you effectively halve it (in terms of throughput), 4 unstalled threads you effectively quarter it, etc.

Re:AMD Killed the Itanium by Kon-Peki on Saturday February 04, 2023 @10:46AM (#34655289)
> It wouldn't be hard to imagine some Itanium SMT monster.

Itanium did have SMT

Re:AMD Killed the Itanium by moonchild on Saturday February 04, 2023 @07:51AM (#34654074)
Applications tend to exhibit a lot of dynamic behaviour. Consider any graph munger. I do expect there is an interesting subset of applications, particularly those that have fairly narrow scope and that have been highly optimised, which could be effectively statically scheduled. But for general-purpose computation, I don't buy it.

Perhaps as part of the trend towards increasingly heterogeneous architectures, we'll see big VLIW coprocessors for power efficiency in certain serial workloads (GPUs are massively parallel but little VLIW coprocessors; however, they do have dynamic scheduling).

Re:AMD Killed the Itanium by killerstorm on Saturday February 04, 2023 @03:01PM (#34657611)
Itanium also does dynamic scheduling. It's not really VLIW - it is just optimized to decode and schedule a lot of instructions at once.
Re:AMD Killed the Itanium by FullyFunctional on Saturday February 04, 2023 @06:48PM (#34659763)
That’s not what dynamic scheduling means. What you need is to dynamically extract ILP so you can get good performance on single thread applications in light of branch mispredictions and cache misses. We are talking SPECint, not SPECfp nor throughput (threading). x86 chips and Apple Silicon show what you can do here and to do that with IA-64 would have beem harder, not easier.
Re:AMD Killed the Itanium by throw0101c on Saturday February 04, 2023 @08:19AM (#34654237)
> It certainly was flawed back then, but compiler theory has improved a LOT since then

Which would be fine if there was a time machine available to send back what we know now to the past. But at the time having sucky compilers for what you want to (try to) accomplish was a bad idea.

The same decision now may be good, but then it was a mistake. It'd be like trying to have a Moon landing project in the 1920s: we got there eventually, but certain things are only possible when the time 'is right'.

Re:AMD Killed the Itanium by FullyFunctional on Saturday February 04, 2023 @06:50PM (#34659780)
compiler technology doesn’t help when cache misses and branches aren’t predictable. That’s the fatal flaw.
Re:AMD Killed the Itanium by kjs3 on Sunday February 05, 2023 @01:37PM (#34667477)
Spot on. I think it's also important to point out that "the compiler will fix it" line wasn't new with Itanic. The Multiflow guys (for one) said the same thing for their Trace line of VLIW machines 15 years or so before HP & Intel, and that didn't work so well. So now, 40 years down the line, can the compiler really fix it, or do we acknowledge that maybe some things are theoretically nifty but don't work out in practice and move on? I don't know the answer to that, but I have my suspicions.
Re:AMD Killed the Itanium by ilyt on Saturday February 04, 2023 @10:16AM (#34655070)
Because even if you get compilers to optimize for your current VLIW, that makes it harder to make improvements down the line.

Current way, while arguably pretty wasteful on all the micro-optimizing CPU does on incoming bytecode, allows designers to nearly freely expand hardware to meet the needs without having compilers to produce different code.

Re:AMD Killed the Itanium by hajile on Saturday February 04, 2023 @06:38PM (#34659667)
The halting problem means that for typical programs, you can't prove control flow. Proving optimization means not only proving control flow, but then knowing which branches get taken most often so you can optimize. There may be a small subset of programs for which this is true, but the rest leave the compiler completely blinded.

OoO execution does an end run around this by examining the program as it runs and adapting to the current reality rather than a simulated reality. This is the same reason a JIT can do optimizations that a compiler cannot do. The ability to look 500-700 instruction into the future to bundle them together into a kind of VLIW dynamically is a very powerful feature.

As to compiler theory, it really isn't that advanced. Our "cutting edge" compilers are doing glorified find-and-replace for their final optimizations (peephole optimization).

Look at SIMD and auto-vectorization. There are so many potential questions the compiler can't prove the answer to that even trivial vectorization that any programmer would identify can't be used by the compiler to the point where the entire area of research has resulted in basically zero improvements in real-world code.

Re:AMD Killed the Itanium by therealcamino on Sunday February 05, 2023 @07:19PM (#34671490)
This is the same argument that was being made in the 90s, ironically, that compilers were now good enough that it would work.

The thing is, on regular, array-based codes, it's great. And it was then, too -- the polyhedral approach was all being developed at exactly that time, but maybe it's not clear in hindsight because the terminology hadn't settled yet. Ancourt and Irigoin's "Scanning Polyhedra With Do Loops" was published in 1991. Lots of the unification of loop optimization was labeled affine optimization or described as based on Presburger arithmetic. But that is the technology that they were depending on to make it work.

But most code we run is not Fortran in another guise. The dependences aren't known at compile time. That issue hasn't changed much.

The one change now is that workloads that were called "scientific computing" then are now being run for machine learning. But now it doesn't make sense to run regular, FP-intensive codes on a CPU at all, because of GPUs and ML accelerators. So what's left for CPUs that excel on that workload? I'm not sure there is a niche there.

Re:AMD Killed the Itanium by formerly_proven on Saturday February 04, 2023 @04:20AM (#34653045)
PA-RISC seemed fairly neat from the somewhat limited information you can find online (there’s a 1.1 and 2.0 ISA manual on kernel.org). Where there major issues with the ISA? Killing your entire product line and starting over of course rarely worked.
Re:AMD Killed the Itanium by rsaxvc on Saturday February 04, 2023 @08:41AM (#34654401)
The PA-RISC 1.1 ISA encoded specific implementation details that didn't age well, like the branch delay slot and instruction address queues. And required in-order memory accesses, because there wasn't support for cache coherent IO.
Re:AMD Killed the Itanium by ghaff on Saturday February 04, 2023 @09:29AM (#34654733)
And, at a higher level, Unix vendor-specific processor designs were on the way out. Designing and manufacturing a processor just for your relatively low volumes in the scheme of things Unix systems was just way too expensive.

One of the other problems with Itanium was that it was supposed to be an "industry standard" 64-bit processor. But Intel and HP were never quite able to square that with a situation where HP at least saw themselves as more equal than others given their role in the design.

Re:AMD Killed the Itanium by pjmlp on Saturday February 04, 2023 @09:50AM (#34654888)
HP-UX 11 was one of the UNIXes I worked on (1999 - 2002, 2005), and the only issue I had, at least during the first employer was their ongoing transition to 64 bits, and the C compiler we had available (aC) was a mix of K&R C with some ISO/ANSI C compliance.

I don't recall any issues with the ISA, and we really liked using its early container capabilities (HP Vault).

Re:AMD Killed the Itanium by inkyoto on Saturday February 04, 2023 @04:39AM (#34653143)
Itanium was a second Intel VLIW design. The first one was the i860, which was a mixed bag of either being eye popping fast, if instruction bundles were handcrafted by a human, or being as slow as a dog if it was a compiler that emitted the code.

Perhaps, there was a belief back then that compilers could be easily optimised or uplifted to generate fast and efficient code, and that did not turn out to be the case. Project management and mismanagement certainly did not help either.

I wonder how a VLIW architecture would pan out today given advances in compilers in last three decades, and whether a ML assisted VLIW backend could deliver on the old dream.

Re:AMD Killed the Itanium by pclmulqdq on Saturday February 04, 2023 @07:02AM (#34653821)
GPUs today have a more VLIW-like architecture than CPUs and almost every neural network accelerator is a VLIW chip of some kind. It's worked out really well.

The big problem is SMT, since it's hard to share a VLIW core between processes, while a superscalar core shares really well.

Re:AMD Killed the Itanium by inkyoto on Saturday February 04, 2023 @08:17AM (#34654218)
Indeed. RISC-V instruction fusion is a little bit VLIW like. I wonder how it handles the fused instruction transition across CPU cores tho (I have not looked into it).
Re:AMD Killed the Itanium by pclmulqdq on Saturday February 04, 2023 @11:07AM (#34655449)
Most superscalar cores do macro-op fusion, including ARM and x86. They don't transition the fused op - it usually executes in one cycle (which is the point of the fusion) so you transition either before or after it.
Re:AMD Killed the Itanium by cwzwarich on Saturday February 04, 2023 @09:41AM (#34654825)
> GPUs today have a more VLIW-like architecture than CPUs

Older GPUs seemed more VLIW-like because they were descended from fixed-function rendering pipelines and essentially just exposed the control signals via instruction encodings. Over time, shader cores have become less VLIW-like, e.g. look at any reverse engineering of recent Nvidia architectures.

This makes sense for the same reason you give for SMT: if you're trying to execute from multiple instruction streams on the same execution units, it makes more sense to use small individual instructions rather than large puzzle pieces.

Re:AMD Killed the Itanium by raphlinus on Saturday February 04, 2023 @10:09AM (#34655023)
I wouldn't describe a GPU architecture as VLIW-like, though there is some overlap. To me, the essence of VLIW is extracting instruction level parallelism by specifying lots of different operations in the same instruction word. To this end, the instruction word has to be quite big (128 bits on Itanium) to specify all those operations.

A modern CPU has the same goal of extracting ILP but accomplishes it in a very different way. The instruction stream is short instructions, each of which specifies a simple operation, and these are reassembled using sophisticated dynamic logic into micro-ops, which then get executed in a fairly similar fashion as a VLIW machine - there are a large number of ports (8 is fairly typical these days), each of which performs a separate operation such as arithmetic, load/store, branch, etc.

A GPU has a similar goal of extracting lots of parallelism but does it in a very different way to both VLIW and modern superscalar CPUs. Each instruction operates over a large SIMD vector - 32 is typical, but this varies from 8 (Intel SIMD-8) to 128 (Imagination & optionally Adreno). The instruction specifies many copies of the same operation, so doesn't have to be that big. On RDNA3 for example[1], the basic instruction size is 32 bits, but 64 bits is also common (see section 6.1 for a summary of scalar and 7.1 for a summary of vector encodings).

These instruction sizes are a bit bigger than typical for CPU, for two main reasons. First, there are a lot of registers (256 vector registers), so that needs a lot of bits to encode. Second, it's common to add extra operations such as negation or absolute value in the same operation. But these operations are generally fairly inexpensive modifications on existing data, not completely separate as in VLIW.

In general, execution on a GPU is in-order, so all the reorder buffers and other techniques of superscalar CPUs are not used. Instead of trying to extract as much parallelism as possible from a single thread, a GPU will use that transistor budget to splat more execution units (and thus more threads) on the chip.

[1]: https://developer.amd.com/wp-content/resources/RDNA3_Shader_...

Re:AMD Killed the Itanium by egorpv on Saturday February 04, 2023 @11:07AM (#34655446)
ATI/AMD used VLIW-based TeraScale sometime in 2007-2011 [1], although some stories claim it started even earlier [2], but in any case they later dropped it in favor of RISC-based GCN. And I'm not sure if Nvidia ever had anything VLIW-based at all.

[1] https://en.wikipedia.org/wiki/TeraScale_(microarchitecture)

[2] https://www.anandtech.com/show/4455/amds-graphics-core-next-...

Re:AMD Killed the Itanium by hinoki on Saturday February 04, 2023 @04:06AM (#34652975)
I thought the biggest problem with Itanium was the fact that it was optimising the wrong thing; it maximised single thread performance by going all in on speculative execution, but it turns out that optimising joules per instruction is much more important.
Re:AMD Killed the Itanium by ghaff on Saturday February 04, 2023 @09:09AM (#34654590)
Certainly one of the issues with Itanium was it was fighting the last war.

It was trying to optimize for instruction-level parallelism when power efficiency and thread level parallelism were coming into vogue. Arguably companies like Sun overoptimized for the latter too soon but it was the direction things were going.

A senior exec at Intel told me at the time the focus on frequency in the case of Netburst was driven by Microsoft being uncomfortable with highly multi-core designs--and I have no reason to doubt that was one of the drivers. There was a lot of discussion around the challenges of parallelism, especially on the desktop, at the time. It generally wasn't the problem the hand wringing suggested it would be.

Re:AMD Killed the Itanium by zozbot234 on Saturday February 04, 2023 @09:50AM (#34654891)
Parallelism is still very much underused on desktop. Most desktop CPU's are used much of their time for running single-threaded JavaScript from some clunky website - no parallelism whatsoever. It's only with the latest-gen CPU's that have things like big.LITTLE that it's becoming a real game changer.
Re:AMD Killed the Itanium by nomel on Saturday February 04, 2023 @10:38AM (#34655231)
How does big.LITTLE change anything related to your scenario? From my understanding, they’re just high efficiency cores that influence parallelism no differently than any other multi core CPU.
Re:AMD Killed the Itanium by hakfoo on Saturday February 04, 2023 @01:14PM (#34656618)
I think if you say to OS and software vendors "here are a bunch of toy cores, do something useful with them", it finally justifies a nudge towards smarter scheduling. With ordinary SMP, there's little reason not to just assign "first free core".

I always envisioned a day where we'd have devote the small cores to "parasitic load" tasks-- your media player, Slack/Discord/etc., and a thousand OS maintenance threads. They might run at 95% load to do not very much, but it's no big deal-- the actual software you cared about now has the big cores to itself, and context switching (along with cache and branch-prediction losses) are reduced. I could even imagine getting to the point where tasks could requisition cores on a "no disruptions until actually yielded by the main process" basis for real-time or maximum performance tasks.

Re:AMD Killed the Itanium by hedgehog on Saturday February 04, 2023 @01:56PM (#34656992)
In the last few years this is pretty much where we've gotten to. Sometimes I leave Activity Monitor open on my M1 Mac and the four little cores keep the big cores mostly idle until there's a lot of work to do (a build or sigh scrolling a web page).
Re:AMD Killed the Itanium by ghaff on Saturday February 04, 2023 @10:10AM (#34655031)
I think it's generally fair to say though that the applications that really need a lot of performance (e.g. multimedia) multi-thread pretty well and there are typically a lot of background tasks running that consume core cycles as well. What is probably more generally true is that a modern laptop or desktop is ridiculously overpowered for most of what we throw at it. I'm typing this on my downstairs 2015 MacBook and it's perfectly fine for the almost entirely browser-based tasks I throw at it.
Re:AMD Killed the Itanium by zdragnar on Saturday February 04, 2023 @11:21AM (#34655562)
My wife has only ever owned cheap Chromebooks, and has never complained that they were slow. I've used them with her streaming videos and such, and I agree- simple web browsing isn't slowing anything down on modern hardware.

Even on a modern ultralight laptop, I can run two chrome profiles, three instances of vscode running different projects, docker and a few other things and the CPU never gets pegged. There's a ton of memory pressure from a memory leak somewhere that I haven't bothered tracking down yet- I suspect the SWC compiler (thanks, rust) but haven't proven it yet. All that and I'm still getting 8+ hours of battery life.

Re:AMD Killed the Itanium by pas on Sunday February 05, 2023 @09:41AM (#34665252)
Which notebook model is this? Which OS are you running on it? Would you buy it again given the same budget today? (Or said in another way, is there something better now?)
Re:AMD Killed the Itanium by zdragnar on Monday February 06, 2023 @08:11PM (#34687133)
I'm running an lg gram, with the swaywm flavor of Manjaro. So far, everything hardware-wise has worked pretty flawlessly, though given the option, I'd rather have 32 gigs of ram than 16.

I'm really tempted by the idea of a Framework style laptop with user serviceable parts, but my work style has me moving a fair amount, so not having battery or thermal issues is such a boon I don't know that I could make the switch. In the last 6 hours I've written and compiled code, run tests, attended video calls, streamed video from websites, browsed the internet for recipes for dinner, chatted on slack and am still on 46% battery remaining. I have yet to hear the fans turn on.

The two areas this thing will fall down on is music and gaming. The speakers are pretty bad, and though it can run light games off of steam, I doubt it would do well with anything super graphically intense (though I haven't actually tried much, to be honest). Also, the built-in webcam sucks, but decent webcams and headphones are cheap, so it's really only games that you'd want something else for.

Re:AMD Killed the Itanium by pas on Wednesday February 08, 2023 @07:16AM (#34707052)
Thanks!

I've looked at the LG gram before (the 2021 model [0]), but wasn't convinced. And now after seeing a friend's new Lenovo legion 5 I'm even more uncertain of which one should I pick. (That Lenovo has a handy button to set the power envelope, which seems to actually work.)

I also usually move a lot, but I don't want to optimize for that. It's easier to find a power outlet than to cool a throttled laptop.

[0] https://www.rtings.com/laptop/reviews/lg/gram-17-2021

Re:AMD Killed the Itanium by zdragnar on Wednesday February 08, 2023 @06:01PM (#34716874)
I can't speak for how Windows behaves on it, but I've never noticed any throttling. The only time the fans have kicked on is when the battery is plugged in and charging. As I said before, though, I also don't really game on it.

I don't know if / how it runs linux, but I've got a friend with a legion, and was also happy with it.

If you'd rather have better graphical performance than battery life, definitely go with the legion. If you can't stand the thought of being tethered to a power cord every time you have to do something serious, then you might want to consider the gram.

I've had gaming laptops before, and after putting the battery through the ringer after awhile it was a struggle to get 4 hours unplugged, which I simply didn't want to deal with again.

Re:AMD Killed the Itanium by somat on Saturday February 04, 2023 @11:41AM (#34655732)
I suspect that long term big.little is not going to be all that important. It is more of a stepping stone along the way.

My logic goes something like "why have 4 small cores and 4 big cores when you could have 8 big cores". Then the argument goes "yes but the small cores use less power", to which my replay is "true, but the big cores finish faster and can spend more time sleeping, I think the power argument evens out ether way". The real gain is to have better power management for the cores, not by having weird small cores.

Re:AMD Killed the Itanium by andromeduck on Saturday February 04, 2023 @01:41PM (#34656857)
doesn't work as well if you're optimizing for latency
Re:AMD Killed the Itanium by hedgehog on Saturday February 04, 2023 @02:06PM (#34657096)
There are some wrinkles to this: First, big cores are less efficient per unit work because there's a lot of complexity in things like reordering, speculation, and pipelining and that complexity costs energy. A design optimized for peak throughput per time looks different than a design optimized for peak throughput per energy. Second, reducing area and energy for the cores allows spending those resources somewhere else like larger caches which, to a point, can reduce energy further. Third, realtime workloads can't really be delayed without compromising user experience so you're going to be waking some cores up constantly anyway. Might as well have a few efficiency-optimized cores and pile as much on them as possible to keep latency and energy consumption low.
Re:AMD Killed the Itanium by giantrobot on Saturday February 04, 2023 @02:27PM (#34657287)
Not all tasks can finish fast. They're just constant low level jobs waiting on IO most of the time. Operating systems are full of suck tasks. It's better to let them run on the LITTLE cores since integrated over time they'll use less power than the big cores.
Re:AMD Killed the Itanium by Narishma on Saturday February 04, 2023 @04:54PM (#34658781)
Small cores are much smaller, so the question is more "why have 4 small cores and 4 big cores when you could have 5 big cores".
Re:AMD Killed the Itanium by pjmlp on Saturday February 04, 2023 @02:47PM (#34657482)
It is heavily used by all those processes screaming for CPU attention, though.

One can really notice it on dual cores.

Re:AMD Killed the Itanium by hajile on Saturday February 04, 2023 @06:41PM (#34659699)
Fun fact: Intel had a couple CPUs codenamed Tejas that were going for 50-ish pipeline stages and 7-10GHz before being abandoned as basically impossible.

https://www.youtube.com/watch?v=qzZfkbHuB3U

Re:AMD Killed the Itanium by Findecanor on Saturday February 04, 2023 @05:55AM (#34653478)
I've heard a rumour that supposedly one of the lead designers of the IA-64 architecture had died prematurely mid-project. And that would have left the project without the man with the vision. Hence, design by committee.
Re:AMD Killed the Itanium by amrb on Saturday February 04, 2023 @07:47AM (#34654052)
Talk about bad omens!
Re:AMD Killed the Itanium by Findecanor on Thursday February 09, 2023 @10:41AM (#34725560)
Found where I heard it: <https://youtu.be/JS5hCjueqQ0?t=4054>
Re:AMD Killed the Itanium by _a_a_a_ on Saturday February 04, 2023 @01:51PM (#34656944)
Frank Dobberpuhl died in 2019.

Also the Alpha was the utter opposite of design by committee. A quick skim of the alpha ISA would show you that.

Re:AMD Killed the Itanium by mepian on Saturday February 04, 2023 @04:22PM (#34658425)
IA-64 is the Itanium, not the Alpha.
Re:AMD Killed the Itanium by _a_a_a_ on Saturday February 04, 2023 @05:42PM (#34659211)
You are right, I misread, my bad.
Re:AMD Killed the Itanium by jasoneckert on Saturday February 04, 2023 @09:32AM (#34654754)
I've always thought that killing off Alpha in favour of pushing Itanium was one of the worst things Intel/HP could have done. Not only was Alpha more advanced architecturally, it was actively implemented and mature. With active development by HP, it could have easily snowballed into the standard cloud hardware platform.
Re:AMD Killed the Itanium by ghaff on Saturday February 04, 2023 @09:55AM (#34654925)
What would become Itanium was publicly announced about eight years before HP acquired Compaq.
Re:AMD Killed the Itanium by jabl on Saturday February 04, 2023 @10:54AM (#34655346)
Alpha's fate, like the other proprietary RISC architectures that focused on the lucrative but in the end small workstation market, was sealed. With exponentially increasing R&D and manufacturing costs, massive industry consolidation was inevitable. That it was Itanium that delivered the coupe de grace to Alpha was but the final insult, but it would have happened anyway without Itanium.

And it wasn't like the Alpha was some embodiment of perfection either. E.g. that mindbogglingly crazy memory consistency model.

Re:AMD Killed the Itanium by runroader on Saturday February 04, 2023 @01:02PM (#34656502)
I don't disagree with the main points, but Alpha wasn't just focused on the small workstation market. Alpha for lots of us in the IT departments of SMBs was the go-to when your Exchange server couldn't handle the load anymore. DEC and by extension Alpha died as soon as Ken Olson was pushed out.
Re:AMD Killed the Itanium by _a_a_a_ on Saturday February 04, 2023 @01:46PM (#34656904)
> that focused on the lucrative but in the end small workstation market

I don't at all believe this was true.

> that mindbogglingly crazy memory consistency model

I guess the utterly competent designers were actually stupid eejits then? The memory consistency was AFAI could determine to reduce to the utmost the hardware guarantees and therefore hardware complexity. It was done for speed.

I have the greatest respect for the Alpha design team, they designed a thing of elegance and even beauty. You could learn a lot from it - I did.

Re:AMD Killed the Itanium by jabl on Sunday February 05, 2023 @04:07AM (#34663223)
> I guess the utterly competent designers were actually stupid eejits then?

No, I don't think that. But I don't think they had some superhuman foresight either, and they made some decisions that in retrospect were not correct. And with the memory consistency model, they made the classic RISC mistake of encoding an idiosyncrasy of their early implementation into the ISA (similar to delay slots on many early RISC's).

> You could learn a lot from it - I did.

I used Alpha workstations, servers and supercomputers for my work for several years back in the day. They were good, but not magical, and even back then it was quite clear there was no long term future for Alpha.

Re:AMD Killed the Itanium by _a_a_a_ on Sunday February 05, 2023 @06:01AM (#34663823)
I'm not a chip designer, far from it, but my understanding is that they really knew what they were doing and this was quite deliberate. See this comment https://news.ycombinator.com/item?id=17672467

I never suggested alphas were magical, but they did seem extremely good and they were designed for future expansion, it seemed to me they were killed off very much not by competitor supremacy.

Good answr, thanks

Re:AMD Killed the Itanium by Tuna-Fish on Sunday February 05, 2023 @06:53PM (#34671236)
It was a deliberate choice, but it was a poor one. It made implementing a fast cpu easier, but it also made the consistency model very hard for programmers to reason about, and required much more explicit barriers than any other consistency model.

These barriers also meant that correct multi-threaded alpha code was no longer particularly fast, because you have to insert expensive memory barriers basically everywhere.

Had Alpha not died early, they would absolutely have eventually moved towards a more strict memory model. As it was, it was essentially an irrelevant architecture by the time people started really hitting all the pitfalls.

Re:AMD Killed the Itanium by _a_a_a_ on Sunday February 05, 2023 @07:41PM (#34671677)
IIRC alpha-model memory barriers are still used in the linux kernel. That said, I can't find a clear statement of that.

> These barriers also meant that correct multi-threaded alpha code was no longer particularly fast, because you have to insert expensive memory barriers basically everywhere.

I don't buy it. MBs are for multi-core code, and in such code you typically do much work on a single core then have a quick chat with another core. So the MBs are there for the inter-core chatter only. In that case having fast monocore code is a big win.

Re:AMD Killed the Itanium by jabl on Monday February 06, 2023 @03:11AM (#34674657)
> IIRC alpha-model memory barriers are still used in the linux kernel. That said, I can't find a clear statement of that so I don't know if it is true or was, or just my own memory.

The various memory barriers and locking primitives are arch-specific code, and at least smp_read_barrier_depends() is a no-op on all architectures except Alpha. Apparently around the 4.15-4.16 kernels there was a bit of de-Alphafication going on which entailed removing much Alpha-specific code from core kernel code. Further in 5.9 {smp_,}read_barrier_depends() were removed from the core barriers, at the cost of making some of the remaining memory barriers on Alpha needlessly strong.

For more info, search for Alpha e.g. in

https://www.kernel.org/doc/Documentation/memory-barriers.txt

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

https://open-std.org/JTC1/SC22/WG21/docs/papers/2020/p0124r7...

https://mirrors.edge.kernel.org/pub/linux/kernel/people/paul...

Re:AMD Killed the Itanium by _a_a_a_ on Monday February 06, 2023 @03:42AM (#34674890)
Another cracking answer, I'll have a dive in this evening, thanks.
Re:AMD Killed the Itanium by hajile on Saturday February 04, 2023 @06:21PM (#34659520)
Intel bought Alpha from HP/Compaq.

The biggest reason Alpha was a "workstation" chip was margin and R&D issues. It was fast, but they couldn't manufacture in high volume which drove per-chip costs much higher than they could have been if paired with a company like Intel. Meanwhile, complete dependence on manual layout for everything pushed development cost and time to market too far out. Once again, Intel's design tools could have helped reduce this overhead.

Re:AMD Killed the Itanium by cesaref on Saturday February 04, 2023 @12:26PM (#34656178)
I seem to remember Alpha had some very weird memory coherency behaviour on multi-processor machines, but apart from that it was excellent.
Re:AMD Killed the Itanium by ptx on Saturday February 04, 2023 @10:16AM (#34655071)
> the fundamentally flawed assumption (that you don't need dynamic scheduling, AKA OoO processing)

Could this have worked better with JIT-compiled applications, e.g. Java given a sufficiently clever JVM, where assumptions can be dynamically adjusted at runtime?

Re:AMD Killed the Itanium by acdha on Saturday February 04, 2023 @10:31AM (#34655167)
This was the grand hope but it never panned out. It’s possible now that a sufficiently brilliant compiler could make a difference since there was nothing like LLVM at the time and GCC was far less sophisticated. One of the many acts of self-sabotage Intel committed was insisting on their hefty license fees for icc, which meant that almost all real-world comparisons were made using code compiled using GCC or MSVC, which were not as effective optimizing for Itanium. There’s no way they made enough in revenue to balance out all of those lost sales.

The other point in favor of this approach now is that far more code is using high-level libraries. Back then there was still the assumption that distributing packages was hard and open source was distrusted in many organizations so you had many codebases with hand rolled or obsolete snapshots of things we’d get from a package manager now. It’s hard to imagine that wouldn’t make a difference now if Intel was smart enough to contribute optimizations upstream.

Re:AMD Killed the Itanium by ghaff on Saturday February 04, 2023 @10:56AM (#34655365)
Yes. Open source, high-level libraries, SaaS/Cloud, good dynamic translation (e.g. Rosetta), etc. make the sort of backward-compatibility that Intel/HP failed so miserably in providing much less of a big deal today. One of the driving forces behind Itanium was that, not only was developing custom microprocessors and OSs for a single company expensive, but even once you'd made that investment, ISVs were reluctant to support your low volumes for any amount of love and money.
Re:AMD Killed the Itanium by acdha on Saturday February 04, 2023 @11:39AM (#34655707)
It’s definitely interesting looking at ARM now. It’s helped by having consistently had much better price/performance but also the fact that things like phones meant a ton of the primitives people would need to switch server applications were already taken care of. Intel really would have been better off cutting their marketing department and hiring 50 more developers to work on open source like GCC, OpenSSL, Linux, etc.
Re:AMD Killed the Itanium by ghaff on Saturday February 04, 2023 @11:55AM (#34655888)
Intel actually has a lot more software development than they're generally credited with. It's mostly "just" hardware enablement but when the Linux Foundation was still providing external numbers on Linux kernel contributions by company, Intel was one of the very top contributors.

With respect to ARM, Intel pretty much blew it, especially on mobile. They were so determined to exploit their x86 beachhead. I remember at an IDF, they were even trying to make a case for how it was important to run x86 everywhere so that Flash would run consistently.

Re:AMD Killed the Itanium by acdha on Saturday February 04, 2023 @12:06PM (#34655986)
I’ve often felt that Intel’s embrace of open source is someone wanting not to repeat the Itanium loses. They seem to have a much better relationship with key open source projects now.
Re:AMD Killed the Itanium by josefx on Saturday February 04, 2023 @10:58AM (#34655371)
Wasn't icc rather popular at some point? AMD later suffered in benchmarks where it came out that icc generated code ignored CPU feature flags when the CPU vendor id did not match Intel.
Re:AMD Killed the Itanium by acdha on Saturday February 04, 2023 @11:35AM (#34655658)
That depends on how you define popular. It was never used for a majority of compiler runs since e.g. no open source project could use it but performance-sensitive users definitely licensed it.

One concern I remember was correctness: one company I worked at didn’t find a benefit worth dealing with a second compiler’s quirks and IIRC some scientists I supported evaluated it but never used it because some of their model output varied (classic floating point drift).

Re:AMD Killed the Itanium by inkyoto on Sunday February 05, 2023 @12:23AM (#34662199)
> […] and GCC was far less sophisticated

With all due respect, this is simply not true. Especially for the time, GCC was the most sophisticated compiler out there, and the only one that could be easily retargeted to a new or another platform due to the use of the intermediate representation language (IRL). A new code generation backend could be boostrapped within days using the IRL. Cross-compilation for any supported target platform whilst running on the same host was also only possible with GCC. There were no other known precedents at the time (I am not counting pcc, the portable C compiler, due not being comparable to gcc).

In terms of the code generation, GCC was quite up there as well albeit performance and quality of the generated code varied across platforms, sometimes wildly. E.g. the native Sun C compiler generated consistently faster code for SPARC (although their C++ compiler that they had acquired from a third party was buggy as hell).

For Itanium, the GCC Itanium backend was not efficient, and it was a well known problem. On 32-bit x86, GCC generated faster and better code than most commercially available C/C++ compilers with a few exceptions being Intel and Metaware High C compilers (both of which not being widely available and being exorbitantly expensive for a average developer) and being comparable or faster to the Watcom C compiler (Watcom did have an edge over GCC on producing much faster floating point code and the default C struct alignment rules, and GCC had an edge due to allowing control over how many CPU registers could to pass input parameters into a function). Id Software, with the release of Quake 1, had ditched the Watcom C compiler and replaced it with GCC (DJGPP) due to GCC generating better code (I think John Carmack wrote about it at some point). GCC did not support Windows well, though.

GCC and LLVM have both been very sophisticated compilers albeit pursuing different objectives. LLVM appeared due to disagreements over the GCC licensing that RMS was insisting on – to preclude GCC from becoming extensible and allow 3rd parties to produce closed source plugins. So, LLVM was conceived as a modularised and extensible design being more conducive to research, experimentation and extensibility at the expense of supporting fewer platforms. GCC and LLVM have both eventually caught up and have now largely reached the feature parity with each other (with GCC still supporting a larger number of platforms and being a go to choice for embedded development).

Re:AMD Killed the Itanium by acdha on Sunday February 05, 2023 @07:55AM (#34664547)
My point in that sentence was that GCC in the late 90s was less sophisticated than it is now. As you noted it was also not the best for Itanium (also Power and, if memory serves, Alpha) which meant that the large amount of software which was compiled with it for compatibility & ease of support look disproportionately worse. For Itanium that was a huge problem since it relied so heavily on the compiler.
Re:AMD Killed the Itanium by jonhohle on Saturday February 04, 2023 @10:32AM (#34655183)
Wasn’t that always the issue with Itanium - that it could have been fast with a sufficiently clever compiler? The problem seemed to be no one was clever enough to write that compiler.
Re:AMD Killed the Itanium by ptx on Saturday February 04, 2023 @04:17PM (#34658390)
That's what I've heard as well. But a JIT compiler (like the JVM) might not have to be as clever as an AOT compiler, as it can change its optimization decisions later, so perhaps that might have been more feasible?
Re:AMD Killed the Itanium by rocket_surgeron on Saturday February 04, 2023 @10:53AM (#34655339)
>I have an Itanium in the garage, a monument to hubris.

I love monuments to hubris so I too have one in my garage-- a four-node SGI Altix 350.

Re:AMD Killed the Itanium by killerstorm on Saturday February 04, 2023 @02:56PM (#34657570)
If you look at SPEC CPU benchmark, Itanium was not bad at all in terms of instructions-per-cycle. IIRC in fp performance it could beat Netburst Pentium4 running twice its clock speed, and even compared favorably to Core. I.e. if Intel produced Itaniums which ran at the same clock speed as Core CPUs, it would be world's fastest single-threaded number cruncher.

So I don't really buy the "Itanium is bad architecture" story.

It's fate was probably decided around 1999-2000. At that point Itanium was still pretty good against Pentium 3 and Pentium 4. And name "IA-64" indicates Intel didn't plan to make 64-bit Pentiums. So eventually Pentiums would fill low-end segment while the rest would be occupied by 64-bit Itaniums.

AMD killed that plan by releasing AMD64 architecture. It was an obvious upgrade to x86, so it would clearly do better in the market than IA-64. So Intel decided to go for x86-64 too, and Itanium was doomed at that point. They didn't even bother making Itaniums with same clock speed as Xeons.

So it's definitely possible that if AMD decided to stick to 32 bits at that time, Intel would have pushed optimized IA-64. Also AMD64 could be worse than it is. E.g. if they decided to increase only register size but keep the number of registers the same, IA-64 could still come on top.

Re:AMD Killed the Itanium by giantrobot on Saturday February 04, 2023 @03:22PM (#34657841)
> AMD killed that plan by releasing AMD64 architecture. It was an obvious upgrade to x86, so it would clearly do better in the market than IA-64.

One of the best aspects of the Opteron was it also happened to be a fantastic 32-bit CPU in addition to AMD64. This was a period where a lot of software, even FOSS wasn't 64-bit clean. There was a lot of pointer arithmetic hiding deep in libraries that were assuming pointers would always be 32-bits.

The Opteron running a 32-bit OS at least as well as a 32-bit Athlon was a huge point in its favor. So your existing system running on new Opteron hardware ran fine and you could mix and match Xeon and Opterons in a fleet. Then switch over to 64-bit on the Opterons for (hopefully) better performance.

Re:AMD Killed the Itanium by acdha on Saturday February 04, 2023 @06:56PM (#34659852)
One thing to remember is that FP performance with well-scheduled code was by far its strongest performing area, and Intel put a lot of work into tuning their compiler for those specific tests. The problem was that it fell off heavily the less your code is like that, especially for the branchy code most business apps depend on.

The other big problem was that the x86 compatibility story was worse than the earlier hopes. That meant that it not only wasn’t competitive with the current generation competition but often even the previous or worse - note losing to the original Pentium or even a 486 here:

https://tweakers.net/reviews/204/8/intel-itanium-sneak-previ...

Now, they could have improved that but statistically nobody was going to pay considerably more for lower performance in the hopes that a future update would improve matters.

The Athlon and Opteron weren’t just fast, they also had flawless 32-bit support so even if your 64-bit software update never happened you could justify the purchase based on their price/performance.

Re:AMD Killed the Itanium by noNothing on Saturday February 04, 2023 @10:04PM (#34661333)
Itanium didn't kill off Alpha. Intel x86 pricing did. But the most important unheeded lesson in those days was software compatibilty. We went from the days of each computer having its own word length, instruction set, heck, even data format (remember the endian wars?) to source compatibility to binary compatibilty. We learned that for most useage, software stability that allowed taking advantage of Moores law, was seriously more valuable in most cases than gaining a bit more performance or price/performance by changing architectures.

Intel kept the X86 price at a point where no bean counter would favor investing in new architectures. Fortunately AMD broke the headlock on x86.

Re:AMD Killed the Itanium by sliken on Monday February 06, 2023 @01:49PM (#34682154)
Well Intel's original plan was to keep x86 32 bit, forcing anyone that needed more into IA64. Fortunately AMD came out with x86-64, and when it was clear that IA64 wasn't going to be competitive, Intel brought x86-64 to their chips.
Re:AMD Killed the Itanium by kjs3 on Sunday February 05, 2023 @01:26PM (#34667345)
but AMD wouldn't have mattered if Itanic had been faster, cheap, and on time

I dunno about that.

My own personal opinion is that Intel has never been able to re-architect their way out of the fact that the cornerstone of their success is that they are selling x86, and their customers mostly don't care about the theoretical advantages of the bright shiny new thing. They just want to run their software just like they always have. There's a reason why IA-64 has joined iAPX432, i860, StrongARM and i960 as Intel footnotes (outside of the embedded market).

When they were philosophizing about what Itanic should look like, the only thing that x86 obviously needed from a market perspective was a bigger address space. And AMD was smart enough to deliver on that, and here we are.