4 ms·
> It's all microcode these days. I know we're splitting hairs here, but really the only difference between microcoded instructions and "native" instructions i
by titzer 3y ago
> It's all microcode these days.
I know we're splitting hairs here, but really the only difference between microcoded instructions and "native" instructions is that the instruction decoder directly produces u-ops versus doing a micro code table lookup. The microcode table lookup just ends up producing u-ops, and those all go through the rest of the out-of-order engine just the same. It's really just the frontend that is the difference. For CPUs that have a trace (u-op) cache, I think the results of microcoded instructions can also be stored there.
- dezgeg 3y agoI'd think it matters for the purposes of what behaviour can be changed by microcode updates, no?
- skissane 3y agoTrue, although microcode updates can still alter hardwired logic in a more limited way - it can’t fundamentally alter the logic, but (if designed to permit that) can reconfigure it - such as by disabling certain features. You just need some signals that change how the hardwired logic behaves, and a configuration register to feed them, and then allow the microcode to write to that configuration register.
- gpderetta 3y agoThey can alter the logic of instructions that are microcoded: it is literally the equivalent of a small program, with loops, conditionals, etc. Of course the ability to modify non-microcoded instructions is significantly smaller and limited to what was planned for at design time.
- dezgeg 3y agoYeah, I assume it's similar how ARM errata are often worked around - set some bit in an undocumented MSR to disable some microarchitectural optimization. A silicon vendor I worked at called them CYA (Cover Your Ass) bits :)
- gpderetta 3y agoThe difference is that you do not necessarily need dedicated opcodes to implement a specific instruction if you can implement it on term of other generi opcodes. With no dedicated hardware, the cost then is only negligible ROM space, and not so neglegible encoding space.