Some speculation on patent expirations:
AMD64 was "announced in 1999 with a full specification released in August 2000." Thus it is now off patent.
SSE2 was introduced with the Pentium 4. The P4 was launched November 20th, 2000. Thus, in six weeks, SSE2 is certainly off patent.
A few years back, there were rumors that 64 bit x86 emulation was being held back due to patent issues. The above two items show that some patent barriers are falling right now. This may provide a hint as to release dates!
And now I'm going to wildly speculate: What if Microsoft's 64 bit emulator/translator and Apple's 64 bit emulator/translator are one and the same? As in, perhaps it has been a joint effort.
Why would Apple work with Microsoft on this one? Apple doesn't like external dependencies for core technologies. They even got burned on emulation being an external dependency during the previous Mac CPU transition. (They licensed Rosetta 1 from Transitive, and the timeline for when they removed Rosetta 1 from Mac OS X matches up quite well with when IBM bought Transitive and stopped selling its software as a product.)
Also, the thread title concerns a future emulator. Microsoft's
current shipping emulator only runs 32-bit x86, Apple's Rosetta 2 only runs 64-bit x86. Not very similar.
The final nail in the coffin (that I know of, anyways) is a bit more technical. Apple's Rosetta 2 isn't software-only: they added a special feature to their ARM core which gives Rosetta 2 a huge boost.
This has to do with memory ordering - the rules which govern the order in which writes from one CPU to memory become visible to itself and other CPUs. x86 uses one of the more restrictive ordering models, known as x86-TSO (total store ordering). ARM's memory ordering model is considerably less restrictive.
This matters a lot because x86 software often takes shortcuts which (in a multiprocessor environment) would be bugs on other architectures with looser ordering rules, but aren't bugs on x86-TSO.
If you're writing an x86-on-ARM emulator, and you want it to support multiple CPUs with interprocess communication, you're going to have to do something about this. The only remedy available in a generic ARM CPU is to "fence" every write to memory to force it to complete in program order. Unfortunately, this hurts performance a lot - extra instructions, and they're slow ones.
So, Apple added a mode bit to their cores. (It's present in the A12Z already, which makes it clear that while A12Z is first and foremost an iPad chip, it was also planned as an ARM Mac testbed.) When set, the memory interface for that core obeys x86-TSO rules rather than the less restrictive ARM rules. Rosetta 2 takes advantage of this. That's a big part of why it's so fast.
Microsoft's emulator, however, has to run on generic ARM CPUs. It has to use slow software emulation of x86-TSO ordering. It also means there's going to be a ton of differences in emulator design compared to Rosetta 2.
Since when has an ISA ever been patented? You can patent a certain implementation or method but neither would be violated by a SW emulator.
Intel has tried to assert that its patents cover software emulation of x86. Might just be saber rattling, might not hold up in court if it comes to that. We'll see.
Programming news, technology, and just useful information
sudonull.com