5 ms·
x86 should be taught as a follow-up course in the following semester as an example of how not to design a CPU architecture, specifically from the long term evol
by inkyoto 3y ago
x86 should be taught as a follow-up course in the following semester as an example of how not to design a CPU architecture, specifically from the long term evolution perspective.
It would have been fine if x86 ceased to exist after 80486 or 80586, yet it has persevered and has continued to cause trouble with an incessant stream of extensions supplanting the previous generations, or expanding or «enhancing» them: MMX, then SSE (plus a further extension to the extension courtesy of amd64), SSE2, SSE3, SSSE3, then AVX, AVX2 and AVX512, and now AVX10 that is an overhaul of all previous extensions.
With a little bit of the design thinking and future proofing in mind, that hairy abominable mess could have been replaced with a single, scalable vector extension that would have not required a complete code rewrite over the next 30 years. Yet, MBA's over at Intel continued to milk the already ailing cow.
- anonymoushn 3y agoSVE didn't standardize a shuffle usable for processing strings without specializing your code to a specific vector width until October 2022, so it seems a bit unreasonable to expect Intel to have had it in 1997.
- inkyoto 3y agoShuffle is different, it is not a foundational SIMD instruction, it is actually a good example of an extension that can be added later as an add-on that does not require a complete code rewrite. Whereas each of the MMX, SSE and AVX extensions was effectively a new instruction set, AND each had its own register set – 64, 128, 256 and 512 bit registers. Later generations (i.e. AVX2 and AVX-512) are better thought out, but, e.g. MMX – I do not think anyone uses it today, yet it is present in the silicon as the dead space. Prior art existed long before – Cray had vector instructions first, so it is not like Intel had to invent them from scratch.
- creshal 3y agoIs MMX even still present in silicon, or just shunted away to some microcode?
- bobim 3y agoTo my understanding Intel tried to move from x86 with Itanium. That's the consumers who wanted it to linger around.
- creshal 3y agoFor some obscure reason, consumers preferred working compilers and higher performance hardware.
- bobim 3y agoI could not use the Itanium server we had at work as it was reserved for the elite. I can say that my 32 bits single core P4 computer was not faster at number crunching.
- cdf 3y agoAs someone who was working on Itanium systems at the time, I can confidently say that "consumers" never had a chance to choose Itanium. It was only available on server hardware and Windows ... will there as a version for it but it was slow ... all the compatibility and performance downsides of M1 Macs, and more power hungry too... practically no upside. It is still a common belief Intel created the Itanium to fool the proprietary unix vendors into thinking they can stop developing their own RISC CPU, but as soon as it happened, Intel gave up on Itanium as well. Solaris lasted a little bit longer only because Sun gave up early on Itanium.
- moonchild 3y agoI won't make the argument against variable-length vectors here, but I will note that, although some of the extensions you mention do change the vector length, for none of them is the vector length change the most interesting aspect; you could keep the vector length fixed, and they would all still be interesting. (The exception is avx10, but that is basically forwards-compatible and barely an 'extension', so.) Contrariwise, although I think some of amd's choices in the initial design of amd64 have hurt its longevity—they could have made more breaks from 32-bit x86, although it is understandable why they didn't at the time—intel has been very careful and has done an extremely good job of playing the hand it's been dealt.