There are a few reasons. To put it simply, Rosetta 2 is a much more technically advanced translator.
1. It came out with 64-bit support right out the gate when Microsoft had spent over 2 years on their translator only supporting 32-bit apps, and only just recently rolled out 64-bit support for translation.
2. Unlike Microsoft's translator, Rosetta 2 scans the file ahead of time and essentially creates a small "map" of the binary to help speed things up. This results in a ~15-20 second delay you open an app in Rosetta 2 for the first time, but much faster performance afterward, while Microsoft's translator doesn't do any of this pre-mapping and has no idea what's coming next.
3. Apple's M1 SoC implements many "shortcuts" within the hardware, such as having native ability to remap Intel memory ordering. This means Rosetta 2 doesn't even have to convert x86 to ARM fully, but instead can convert x86 binaries into a hybrid of x86 and ARM together and can skip steps like memory reordering that Microsoft's translator has to do.
Some Windows fans initially said that comparing Microsoft's emulator to Rosetta 2 was unfair because Rosetta 2 "is cheating." Of course, this line of reasoning didn't last long because any cheats to get to the same end results are fair game.
> This means Rosetta 2 doesn't even have to convert x86 to ARM fully, but instead can convert x86 binaries into a hybrid of x86 and ARM together and can skip steps like memory reordering that Microsoft's translator has to do.
I mean, there's no real "hybrid" thing going on at all, it's just a matter of what instructions get emitted by the compiler to match the externally observable semantics. In fact are already ARM platforms that use sequential consistency (TSO) for the memory model besides the M1; Nvidia's Jetson platforms are one such example, and a Rosetta-like translation layer on that platform would be able to take advantage of it all the same.
I guess it's just a matter of wordsmithing at the end of the day, though!