6 ms·
Sounds like survivorship bias. x86's longevity is due to the amount of money thrown at the problem. You could surely start with a much cleaner instruction set
by setpatchaddress 7y ago
Sounds like survivorship bias.
x86's longevity is due to the amount of money thrown at the problem. You could surely start with a much cleaner instruction set like the M68k and wind up with a same-or-better result after spending billions on multiple projects to invent new ways of ameliorating the complexity of the ISA, some in parallel, over time.
Or you can start by eliminating most of the decode complexity and not spend those billions, like ARM.
- jcranmer 7y agoThe decoder doesn't actually take all that much space in the hardware, though. It's going to be smaller than the normal OoO logic, which means it's a pretty minor tax at best for actual hardware.
- baybal2 7y agoSaw die shots of Atom? Decoder makes more than half of the core, and there is no instruction cache. In a loop, you will be spending more joules on decoding than actual computations.
- darkmighty 7y agoInstruction complexities can be used to save bandwidth/delay (and related energy consumption) at the cost of decoder size. Communication limitations are increasingly dominant in processors afaik; so the analysis is not so simple as to decoder size either.
- jabl 7y agoCompressed RISC ISA's (e.g. RISC-V C extension) achieve density comparable to x86, with a much simpler decoder.
- adwn 7y ago> It's going to be smaller than the normal OoO logic, which means it's a pretty minor tax at best for actual hardware. But it's a major tax for designing that hardware, and a potential source of bugs (the more complex, the more difficult to debug and verify).
- spc476 7y agoAs much as I like the M68k, I don't think it would be easy to extend it to 64 bits. I'm looking at the MOVE instruction, encoded as: 00ssRRRmmmMMMrrr ss = size 01 = 8 bits 10 = 32 bits 11 = 16 bits RRR = src register mmm = src mode MMM = dest mode rrr = dest register The obvious choice of setting the size bits to '00' for 64 bits is out of the question, because that overlaps many instructions (bit manipulations, bounds checking, several specialized move instructions). The whole instruction set is like this---where you would expect 64-bits to specified are a bunch of instructions instead.