Apple has made two transitions while retaining compatibility, in one case with emulation of the old architecture being around the speed of the previous (68k to PPC) and in the other with emulation being faster than the previous architecture (PPC to x86). There's no ARM that's fast enough to emulate an x86 in the same power envelope, so right now any transition would either require all performance sensitive apps to be ported or would result in machines that were slower for many tasks.
Bear in mind that both previous transitions were due to the processor line Apple was using being effectively EOLed (explicitly in the case of 68k, more implicitly in PPC - nobody was interested in making CPUs that had the appropriate performance/power ratio for consumer machines). Apple is doing great things with ARM, but they're not /that/ far ahead of the rest of the industry that they can pull off a seamless transition in the near future.
Rosetta apps were not faster in emulation. This gets repeated a lot and while the Intel Macs were clearly faster at native apps, Power Macs were still faster clock for clock at their own PPC code. Barefeats did some head to heads; at least one benchmark has a Quad G5 beating a Mac Pro 3.0GHz on PPC software, then Apple's top of the line, and the 2.66GHz was clearly slower.
Yes, the Mac Pro was way faster on its own turf, but Rosetta's overhead wasn't overcome by that. Not until the wide availability of Universal apps was the speed advantage apparent.
> ...with emulation being faster than the previous architecture (PPC to x86).
This is not the history that I remember, at least with contemporary hardware. In my recollection, PPC emulation was generally slower, but it didn't necessarily really matter.
> There's no ARM that's fast enough to emulate an x86 in the same power envelope, so right now any transition would either require all performance sensitive apps to be ported or would result in machines that were slower for many tasks.
I don't think that's true, at least at the lower end.
Whether it is running x86 emulation or native, the Snapdragon 835 comes pretty close to the Celeron N3450, at least in terms of single-core performance. Both chips have a comparable power envelope.
>Emulation adds overhead of course, but it's worth noting that most ISAs are effectively emulated through micro-operations
That's not even remotely the same thing because that micro-code is optimized to the ISA of the processor and it's obviously specific to the microarchitecture of the processor which is again optimized for a specific ISA. It's like translating a Wikipedia article from normal English to simple English. You didn't cross a complicated language barrier.
If I may add my own comment: It's not worth noting at all because your ARM CPU still only implements ARM optimizations and your x86 CPU only implements x86 optimizations.
If you had proposed adding hardware acceleration to make emulation of a specific architecture faster then maybe one could have squinted and said it's emulation instead of secretly implementing a x86 CPU in your ARM CPU.
I don't think it's that different. Microcode can work efficiently with multiple ISAs. In practice, x86 and amd64 are actually fairly different targets. With amd64 you have far more registers and no x87 weirdness, for instance. ARM chips also generally support multiple ISAs.
Of course you have trade offs regarding optimizations, but that's true at multiple levels. For example, many exotic x86 instructions (like BCD) aren't as optimized as they could be.
> If you had proposed adding hardware acceleration to make emulation of a specific architecture faster then maybe one could have squinted and said it's emulation instead of secretly implementing a x86 CPU in your ARM CPU.
Of course I'm talking about hardware-level support. I'm talking about the things that already exist.
Do the ARM companies besides Apple even care about desktop long-term? There seems to be enough billions to be made in
Mobile and IoT that they can keep focusing on that indefinitely.
Apple also obsoletes hardware without making any transition or major software or hardware changes. I can develop for latest android is on my 2009 macbook but not for latest Mac or iOS.
I can probably install latest MacOS in virtual box on 2009 macbook but not on actual hardware...
Apple sells iPad Pros which they call “computers”. Those are powerful devices, but there is not much productivity software available, and UI is very different from traditional desktop interfaces.
Apple could offer an Air-class machine powered by ARM with a familiar macOS, and most developers would be able to support it in a matter of weeks, if not days.
I did say “mainstream”. Despite the HN bubble, development is not in the “mainstream”. Besides, personally, I can’t stand developing on just a laptop screen. I need at least one external monitor and preferably two.
If I had to do a lot of development on the go, I would have invest in a portable USB monitor or use my iPad as a second display.
From personal experience: the slowest PPC Mac the 6100/60 was about the speed of the LCIi (68030-16Mhz with a 16 bit bus) under emulation. It was much slower than my LCII with a 68030-40Mhz card. It wasn’t until Connectix came out with a better emulator that emulation approaches tte speed of my old accelerated LCII. It also didn’t help that parts of the operating system were still emulated.
Bear in mind that both previous transitions were due to the processor line Apple was using being effectively EOLed (explicitly in the case of 68k, more implicitly in PPC - nobody was interested in making CPUs that had the appropriate performance/power ratio for consumer machines). Apple is doing great things with ARM, but they're not /that/ far ahead of the rest of the industry that they can pull off a seamless transition in the near future.