News for hackers. Stuff that matters.
Re:AMD ymm registers are rolling back by mort96 on Wednesday March 01, 2023 @03:40AM (#34980118)
Only a very small part of the CPU actually understands the "x86_64 language" (the "ISA", Instruction Set Architecture). Most of the CPU executes a completely different, much simpler language, where instructions are called "micro-operations" (or µops). There's a hardware component called the front-end which is responsible for parsing the x86_64 instructions and emitting these µops. One x86_64 instruction often produces multiple µops.

You can change the mapping from x86_64 instruction to sequence of micro-operations during boot on modern CPUs. That's what we mean by updating the microcode.

At least that's my understanding, as someone who has implemented a few toy CPUs in digital logic simulation tools and has consumed a bunch of material on the topic as hobbyist but have no actual knowledge of the particulars of how AMD and Intel does stuff.

Re:AMD ymm registers are rolling back by alex_duf on Wednesday March 01, 2023 @05:15AM (#34980697)
that makes a lot more sense now, thanks!
Re:AMD ymm registers are rolling back by nomercy400 on Wednesday March 01, 2023 @06:50AM (#34981305)
So the decoder is like an emulator. If so it would theoretically be possible to provide a different ISA and have it execute by the cops as well. Not saying it would be fast, or practically possible due to how locked down it is.
Re:AMD ymm registers are rolling back by nick__m on Wednesday March 01, 2023 @07:27AM (#34981600)
Transmeta tried that approach, but it wasn't enough of a competitive edge for it to prosper.
Re:AMD ymm registers are rolling back by imtringued on Wednesday March 01, 2023 @08:30AM (#34982135)
Transmeta couldn't bring their product fast enough to the market because Intel was suing them. It had nothing to do with the quality of the product itself.
Re:AMD ymm registers are rolling back by Symmetry on Wednesday March 01, 2023 @09:21AM (#34982676)
Then NVidia re-used their design on ARM as Project Denver.
Re:AMD ymm registers are rolling back by JosephRedfern on Wednesday March 01, 2023 @07:46AM (#34981756)
Is this kinda what thumb mode on (some) ARM chips is?
Re:AMD ymm registers are rolling back by Const-me on Wednesday March 01, 2023 @08:01AM (#34981875)
Micro-ops aren’t simpler than the AMD64 instructions, the complexity is about the same. For instance, the following instruction

    vfmadd231ps     ymm3, ymm1, YMMWORD PTR [rax-256]
does quite a few things (memory load, and 8-wide fused multiply+accumulate), yet it decodes into a single micro-op.

Most AMD64 instructions decode into a single micro-op. Moreover, there’s a thing called “macro-ops fusion”, when two AMD64 instructions are fused into a single micro-op. For example, scalar comparison + conditional jump instructions are typically fused when decoding.

Re:AMD ymm registers are rolling back by mort96 on Wednesday March 01, 2023 @10:21AM (#34983322)
That's an important detail, not all macro-ops are more complex than micro-ops, and most of our everyday x86 instructions are simpler than the more complex micro-ops.

But we can agree that the complexity ceiling is much higher on macro-ops than micro-ops, right? The µop you mentioned does one (vector) FMA operation on two (vector) registers and stores the result to RAM. While in x86, we have things like the rep instruction which repeats an action until ECX is zero, or the ENTER and LEAVE instructions to set up and tear down a stack frame. Those are undoubtedly implemented in terms of lots of micro-ops.

Re:AMD ymm registers are rolling back by Const-me on Thursday March 02, 2023 @03:02AM (#34993252)
> complexity ceiling is much higher on macro-ops than micro-ops, right?

Other examples are crc32, sha1rnds4, aesdec, aeskeygenassist - the math they do is rather complicated, yet on modern CPUs they are single micro-op each.

> one (vector) FMA operation on two (vector) registers and stores the result to RAM.

It loads from there.

> Those are undoubtedly implemented in terms of lots of micro-ops.

Indeed, but I don't think it's complexity. I think they use microcode for 2 things: instructions which load or store more than 1 value (a value is up to 32 bytes on AVX, 64 bytes on AVX512 processors), or rarely used instructions.