Linked by Thom Holwerda on Mon 12th Jun 2017 20:31 UTC, submitted by dionicio
Intel

You'd expect with Microsoft adding x86 emulation to its upcoming ARM-based windows 10 PCs all the possible licensing issues would be sorted. As ubiquitous as x86 is, it's easy to forget it's still a patent minefield guarded by Intel. And surprise, surprise, with the chipmaker under pressure from AMD and ARM, it felt the need to make that very, very clear. Dangling at the end of a celebratory PR blog post about 40 years of x86, Intel writes:

However, there have been reports that some companies may try to emulate Intel's proprietary x86 ISA without Intel's authorization. Emulation is not a new technology, and Transmeta was notably the last company to claim to have produced a compatible x86 processor using emulation ("code morphing") techniques. Intel enforced patents relating to SIMD instruction set enhancements against Transmeta's x86 implementation even though it used emulation. In any event, Transmeta was not commercially successful, and it exited the microprocessor business 10 years ago.

Only time will tell if new attempts to emulate Intel's x86 ISA will meet a different fate. Intel welcomes lawful competition, and we are confident that Intel's microprocessors, which have been specifically optimized to implement Intel's x86 ISA for almost four decades, will deliver amazing experiences, consistency across applications, and a full breadth of consumer offerings, full manageability and IT integration for the enterprise. However, we do not welcome unlawful infringement of our patents, and we fully expect other companies to continue to respect Intel's intellectual property rights. Strong intellectual property protections make it possible for Intel to continue to invest the enormous resources required to advance Intel's dynamic x86 ISA, and Intel will maintain its vigilance to protect its innovations and investments.

I'm assuming Microsoft has all this stuff licensed nice and proper, but it's interesting that Intel felt the need to emphasize this as strongly as they do here. Which companies is Intel referring to here? Maybe Apple?

Thread beginning with comment 645485
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: What about VirtualBox, then?
by galvanash on Mon 12th Jun 2017 22:09 UTC in reply to "What about VirtualBox, then?"
galvanash
Member since:
2006-01-25

Virtualbox is not an emulator... It is virtualization.

x86 Emulators (like Bochs) actually emulate the entire processor, as such they have to actually implement instruction decoding, execution, and what not (things the patents that Intel holds apply to). Bochs would technically need a license, but there is no money behind it so Intel seemingly doesn't bother to threaten them.

Virtualization does not do that. When you run stuff on Virtualbox your just running native x86 code directly on the underlying processor. Virtualbox emulates I/O devices, or more accurately proxies access to them so that the virtualized environment thinks it has its own dedicated I/O devices. It more or less acts as a traffic cop, marshaling access to the devices that need to be proxied. There is very little "emulation" involved with it (other than the device drivers themselves).

Intel doesn't require patent licenses for such software - they actually encourage use of virtualization - because you need an x86 processor to run it on...

Edited 2017-06-12 22:18 UTC

Reply Parent Score: 5

kurkosdr Member since:
2011-04-11

Virtualbox is not an emulator... It is virtualization.

x86 Emulators (like Bochs) actually emulate the entire processor, as such they have to actually implement instruction decoding, execution, and what not (things the patents that Intel holds apply to). Bochs would technically need a license, but there is no money behind it so Intel seemingly doesn't bother to threaten them.


VirtualBox can emulate an x86 if you have VT-x disabled in the BIOS, I 've tried it. VMware couldn't.

Edited 2017-06-12 23:21 UTC

Reply Parent Score: 3

Milan Kerslager Member since:
2009-11-20

VT-x is hardware (ie. CPU based) support for the virtualisation. Without VT-x you may still use software virtualisation based on i386 capabilities and this is just slow, but it works. It could be speeded up by modifications of the virtualised system, but it is impossible for Windows as you have no source code and Microsoft will do nothing to help you. .

Reply Parent Score: 1

galvanash Member since:
2006-01-25

VirtualBox can emulate an x86 if you have VT-x disabled in the BIOS, I 've tried it. VMware couldn't.


Its still not full emulation, it just trap-and-handle on specific instructions and doing some fancy translation of the instruction stream (yes, oversimplified, but mostly accurate). Even with VT-x disabled, you are still passing the vast majority of instructions through to the CPU as is, your just doing fixups of specific instructions before they reach the CPU.

Most Virtualization software stopped supporting this approach ages ago. Even Virtualbox no longer supports it for 64-bit code (VT-x or AMD-V is required for 64-bit guest OS). Its mostly just left in there for people running 32-bit stuff on really old CPUs - VT extensions are significantly faster when available.

Reply Parent Score: 3

Alfman Member since:
2011-01-28

kurkosdr,

VirtualBox can emulate an x86 if you have VT-x disabled in the BIOS, I 've tried it. VMware couldn't.



That's true, virtualbox can use software emulation or VT-x, although I don't believe it supports cross architecture emulation. Qemu does actually support cross architecture emulation: you can run x86 guests on a multitude of host architectures.

This project even dynamically translates x86 code to llvm:
http://infoscience.epfl.ch/record/149975/files/x86-llvm-translator-...
QEMU [1] is a system emulator that can run unmodified
guest operating systems on a host OS, where the guest
and host CPU architecture can be different. For example, QEMU can run x86 guest OSes on a MIPS host
...
We extend the QEMU dynamic binary translator to generate LLVM bitcode from x86 (Figure 2). The translator takes x86 code, disassembles it to micro-operations,
maps the micro-operations to their LLVM counterparts,
and outputs LLVM bitcode.


An interesting side effect of this is that because the recompiled code can be run through an optimizer, you could theoretically get even better performance under emulation than running the original code natively (the original compiler might not have been able to produce as highly optimized code as QEMU). This would be interesting to test in practice.



Back to the topic at hand though, I guess intel's just been turning a blind eye to x86 emulation. I wonder if they'll just go after microsoft x86 emulation or if they might seek to shut down projects like qemu as well.

Reply Parent Score: 2