Rosetta 2 will not support virtualization using x86-64.
That statement isn't wrong, but I don't think thatit means what people think that it means. From
this Apple document:
However, Rosetta doesn’t translate the following executables:
- Kernel extensions
- Virtual Machine apps that virtualize x86_64 computer platforms
What that is saying is that
Rosetta won't run the x86 version of Parallels/VMWare etc. Which is kinda confirming the bathroom habits of forest-dwelling bears if you think about what that would entail.
It says nothing to deny the possibility of x86 emulation on Apple silicon (...go look at the youtube videos of iPads running x86 MacOS under QEMU), nothing to exclude ARM virtualisation (Parallels for ARM was shown running ARM Linux at WWDC - my guess is that it's based on the Hyopervisor kit built into window) and nothing to say that Apple couldn't adapt Rosetta
technology to allow MacOS's built-in hypervisor to run x86 hosts using some sort of just-in-time translation (...that's pure speculation and far more easily said than done, but no laws of Physics would be broken).
If Apple/Microsoft co-operate to allow Windows 10 for ARM to run as a VM (it's not going to 'just work' but if Apple/MS sort out the licensing it will be made to happen), then
that has x86-32 translation with x86-64 promised real soon now, and would probably be the best way of running x86 Windows apps on AS - because (like Rosetta) it's only translating/emulating the application, not the entire OS.
I did not say that A12....A14 don't/won't support virtualization. What I said was they won't have a separate virtualization core/block/whatever you want to call a separate, disctinct chunk of silicon.
The Apple A13 uses the ARMv8-4A instruction set (
link) and looking at
this Wikipedia page (link) there were several upgrades to virtualization support between v8-A (A12) and v8.4-A (...and I'm not saying that v8-A/A12
didn't have virtualization support, just that v8.4-A definitely
does).
Popek and Goldberg are talking about software. I am talking about hardware.
No, they're talking about "virtualization" in the modern sense of running code directly on the CPU and 'trapping' critical instructions to give the effect of a virtual machine. More to the point they're talking about the minimum requirements for doing it
efficiently (...and removing the need to pre-translate the guest code to add trap instructions). Hyoervisors for x86 (and
not old-school 'SoftPC'-style emulation software) appeared before Intel added the VT-x instructions to make it more efficient - and even "inefficient" virtualization blows emulation out of the water.