Rosetta2: x86-64 Translation Performance

The new Apple Silicon Macs being based on a new ISA means that the hardware isn’t capable of running existing x86-based software that has been developed over the past 15 years. At least, not without help.

Apple’s new Rosetta2 is a new ahead-of-time binary translation system which is able to translate old x86-64 software to AArch64, and then run that code on the new Apple Silicon CPUs.

So, what do you have to do to run Rosetta2 and x86 apps? The answer is pretty much nothing. As long as a given application has a x86-64 code-path with at most SSE4.2 instructions, Rosetta2 and the new macOS Big Sur will take care of everything in the background, without you noticing any difference to a native application beyond its performance.

Actually, Apple’s transparent handling of things are maybe a little too transparent, as currently there’s no way to even tell if an application on the App Store actually supports the new Apple Silicon or not. Hopefully this is something that we’ll see improved in future updates, serving also as an incentive for developers to port their applications to native code. Of course, it’s now possible for developers to target both x86-64 and AArch64 applications via “universal binaries”, essentially just glued together variants of the respective architecture binaries.

We didn’t have time to investigate what software runs well and what doesn’t, I’m sure other publications out there will do a much better job and variety of workloads out there, but I did want to post some more concrete numbers as to how the performance scales across different time of workloads by running SPEC both in native, and in x86-64 binary form through Rosetta2:

SPECint2006 - Rosetta2 vs Native Score %

In SPECint2006, there’s a wide range of performance scaling depending on the workloads, some doing quite well, while other not so much.

The workloads that do best with Rosetta2 primarily look to be those which have a more important memory footprint and interact more with memory, scaling perf even above 90% compared to the native AArch64 binaries.

The workloads that do the worst are execution and compute heavy workloads, with the absolute worst scaling in the L1 resident 456.hmmer test, followed by 464.h264ref.

SPECfp2006(C/C++) - Rosetta2 vs Native Score %

In the fp2006 workloads, things are doing relatively well except for 470.lbm which has a tight instruction loop.

SPECint2017(C/C++) - Rosetta2 vs Native Score %

In the int2017 tests, what stands out is the horrible performance of 502.gcc_r which only showcases 49.87% performance of the native workload – probably due to high code complexity and just overall uncommon code patterns.

SPECfp2017(C/C++) - Rosetta2 vs Native Score %

Finally, in fp2017, it looks like we’re again averaging in the 70-80% performance scale, depending on the workload’s code.

Generally, all of these results should be considered outstanding just given the feat that Apple is achieving here in terms of code translation technology. This is not a lacklustre emulator, but a full-fledged compatibility layer that when combined with the outstanding performance of the Apple M1, allows for very real and usable performance of the existing software application repertoire in Apple’s existing macOS ecosystem.

SPEC2017 - Multi-Core Performance Conclusion & First Impressions
Comments Locked


View All Comments

  • Der Keyser - Tuesday, November 17, 2020 - link

    This release is going to be an interesting change in the industry
  • Kevin G - Tuesday, November 17, 2020 - link

    There is also the business side of it too which is gonna be full of Game of Thones-like drama with nVidia attempting to acquire ARM. Apple and nVidia notoriously don't get along. Apple's relationship with Imagination Technologies is also strained but they've seemingly made up so that Apple can gain access to some ray tracing acceleration designs. Apple still seems to be on good terms with AMD but moving away from them as a supplier on the Mac side right now due to the ARM transition in general.
  • YesYesNo - Tuesday, November 17, 2020 - link

    Thankfully chaos is a ladder.
  • helios24 - Tuesday, November 17, 2020 - link

    Apple has an Architecture License with ARM. Basically the broadest license that ARM sells. If you didn't know this, ARM was founded as a joint venture between Apple and Acorn. Apple's license is also perpetual. That is the reason why Apple isn't interested in acquiring ARM. Apple does not use ARM designs, they use certain principles present in the ARM architecture and the ISA. Apple then makes cpus that can run ARM instruction set, that is the reason why you see big difference between apple designed SoC vs Qualcomm or ARM design.
  • Tams80 - Tuesday, November 17, 2020 - link

    Apple's not interested in buying ARM mainly because it would never be allowed to happen (without Apple splitting up), so trying to do so would be a complete waste of time.
  • dejuknow - Tuesday, November 17, 2020 - link

    Nope. Apple would still have no reason to purchase ARM even if it were allowed to happen. helios24 is completely correct. Apple has no interest in licensing technology to third parties.
  • nevernotmaybe - Friday, November 20, 2020 - link

    Apple cares about nothing other than making money, if they could have a subsidiary printing money while they continue as normal they would do it instantly. The idea they wouldn't is laughable.
  • skingers - Monday, November 23, 2020 - link

    Not laughable at all. Apple have tonnes of free cash that they could use to buy something they don't really need that makes money, but they don't do it. Instead they buy back their own stock. The other commenters here are correct, Apple already have, in perpetuity, what they need for their chip designs and they are backing themselves to be best in the business at it.
  • helpmeoutnow - Thursday, November 26, 2020 - link

    but they were never the best in the business, so how come?
  • alysdexia - Monday, December 28, 2020 - link

    die, troll

Log in

Don't have an account? Sign up now