It's like saying that programming language syntax/keywords are better than the other.
Everything is about compiler, lib, runtime, etc.
https://chipsandcheese.com/p/arm-or-x86-isa-doesnt-matter
Also some people say that RISC-V is the way to go
It's like saying that programming language syntax/keywords are better than the other.
Everything is about compiler, lib, runtime, etc.
https://chipsandcheese.com/p/arm-or-x86-isa-doesnt-matter
Also some people say that RISC-V is the way to go
When people say "ISA doesn't matter", they mean that the "legacy cruft" in x86 doesn't matter (that much) and that x86 remains competitive with other similar ISAs. It doesn't mean that the difference between VLIW and traditional ISAs doesn't matter. ISA paradigm still matters, just not the "syntax".
But let's be clear: Of course ISA matters. It's just as trivial to make a bad ISA as it is a bad syntax. But does the ISA of modern superscalar processors matter? Probably a bit, but certainly not a whole lot.
In this particular case: ia64 leaned hard into wide VLIW in an era where growing transistor budgets made it possible to decode and issue traditional instructions in parallel[1]. The Itaniums really were fine CPUs, they just weren't particularly advantageous relative to the P6 cores against which they were competing, so no one bought them.
[1] In some sense, VLIW won as a matter of pipeline architecture, it only lost as a design point in ISA specs. Your Macbook is issuing 10 arm64 instructions every cycle, and it doesn't need to futz with the instruction format to do it.
Isn't having fixed-size naturally-aligned instructions (like on 64-bit ARM) enough to get that advantage?
Really VLIW is a fine idea. It's just not that great an idea, and in practice it wasn't enough to save ia64. But it's not what killed it, either.
And by the way that's why open source makes such migrations much cheaper.
ld r1, [r2 + 10]
st [r3 + 4], r4
And then consider things like speculative execution.Either have a stupid ISA and do all the work ahead-of-time with way more compute time to optimize or don't optimize and have a higher level ISA, that also hs concepts like pointer provenance.
The current state seams like a local minima with both having ahead-of-time optimization, but the ISA does it's thing anyways and also the compiler throwing much of the information away with OoO analysis being time-critical.
Meanwhile the CPU probably can't do a loop invariant hoist in a reasonable way or understand high level semantics.