Inside the AMD Microcode ROM [video]
media.ccc.de
media.ccc.de
Custom microcode handling is a lot more brittle and chip- specific yet nearly equivalent to overloading in software your call to some avx512 op.
The "last time" this was done was in the x87 days, where if the math coprocessor wasn't installed you could trap the corresponding interrupt and handle it to emulate the instructions.
Wasn't Hackintosh (or getting new OS X running on too old hardware) also using this technology to "support" CPUs without the newest SSEx instruction sets?
Current Zen has actual 256-bit registers, it just doesn't have the execution units to process the whole register at once. It's not really the same thing.
[0]: https://en.wikichip.org/wiki/amd/microarchitectures/zen_2
Some of the commands cannot be translated to the silicon effectively or not at all.
e.g.: MIPS have 64 x 64bit registers. You can use any of them as a source or a destination, however x86 always designates EAX as the ALU accumulator. This has some profound effects on silicon design.
Actually no. After decoding there is nothing special in the aex register.
AMD at some point was going to release K10 which was basically Zen but with an ARM decoder. It got cancelled when Zen proved viable and AMD decided it was better to compete with Intel than all the ARM vendors.
The microcode, or specifically the modern x86 processors, are using register renaming to move things around, but the actual ASM commands imply that the results should end in EAX register. You cannot arbitrarily do a MUL and get the result from EBX for example [3]. i.e. x86 assembly dictates where the results should end in.
AMD played with two ideas: A pure ARM core, and a hybrid x86 core with ARM co-processor. The ARM core missed the performance targets [0], and they also abandoned the ARM accelerated x86 core [1], but I don't know why.
They never intended to go full TransMeta and transcode the x86 ASM into something proprietary or ARM.
Bonus: It seems they are still muling the idea of X86/ARM hybrid [2].
[0]: https://www.theregister.co.uk/2018/11/27/amazon_aws_graviton...
[1]: https://www.extremetech.com/computing/205078-amds-project-sk...
[2]: https://www.reddit.com/r/AMD_Stock/comments/8x4sba/the_retur...
They actually "released" (to one manufacturer it seems) the Opteron A1100. With stock Cortex-A57 cores, not "Zen with an ARM decoder".
In the GPU case I know the reason - it's the DRM garbage (HDCP and Co.). Support for DRM dictates for them to keep it closed. But even there, they could provide alternative firmware without DRM, and make it open. But for CPU, there is no real reason it seems.
On the contrary, Mesa is faster than their blob. AMD themselves are working on replacing blob with Mesa in the long term.
Firmware doesn't offer any acceleration advantages, it's used for different purposes.
Of course that's all sorta orthogonal because that's all not really microcode or firmware in the classic definition, but just "code for an embedded processor I don't want to document."