This is a question received by Intel Software Network Support, along with responses provided by experts within Intel.
Q. Is it possible to turn off the ability to use the SSE instructions -- for example in a server's BIOS? Or are the SSE instructions built into the actual chip?
Multiple physical servers in a VMware VI3 environment require specific CPU compatibilities in order to support a feature called VMotion. VMotion allows you to transfer virtual machine (vm) workloads from one physical server to another without having to power off the vm. One of the specific requirements to support this is all the CPUs in the cluster must support the same version of SSE. If just one server has the wrong version, that server cannot support VMotion.
So I am wondering if it's possible to 'turn it off' or just spend more time in initial planning of server deployment.
A. This issue is well known. Intel is working this issue with VMWare*. It requires changes to VMotion*. There is no end user workaround. See Volume 3A of the Intel 64 and IA-32 Architectures Software Developers Manual for CPL 0 options:
12.1.4 Initialization of the SSE/SSE2/SSE3/SSSE3 Extensions
The operating system or executive should carry out the following steps to set up
SSE/SSE2/SSE3/SSSE3 extensions for use by application programs:
1. Set CR4.OSFXSR[bit 9] = 1. Setting this flag assumes that the operating
system provides facilities for saving and restoring SSE/SSE2/SSE3/SSSE3
states using FXSAVE and FXRSTOR instructions. These instructions are
commonly used to save the SSE/SSE2/SSE3/SSSE3 state during task switches
and when invoking the SIMD floating-point exception (#XF) handler (see
Section 12.4, Saving the SSE/SSE2/SSE3/SSSE3 State on Task or Context
Switches, and Section 12.1.6, Providing an Handler for the SIMD Floating-
Point Exception (#XF), respectively).
If the processor does not support the FXSAVE and FXRSTOR instructions,
attempting to set the OSFXSR flag will cause an exception (#GP)
Here are some additional responses we received to this question:
I don't think you can turn it off, and you certainly would not want to. In fact, if you somehow could, you could not run any 64-bit binaries (these instructions are an integral part of the 64-bit FP model), nor many 32-bit binaries compiled with the Intel compiler in the last several years.
Do you really require the *same* version of SSE? Later versions (there are at least 3, and will be more) are supersets of earlier versions, and the actual registers are the same --the only differences are that later versions add more instructions.
That said, because of this restriction, customers do sometimes stay with older processors to limit the number of virtualization silos they create.
VMotion* does require the same SSE version or more correctly, the same instructions sse or otherwise. The issue is that to the applications and OS running in VMWare*, they do not know they have changed to a new server with a different processor with different instructions. As a result, they can try to execute a command which an earlier processor without that instruction did not understand. To prevent this possibility, VMWare prevents VMotion across these types of processors.
VMWare does allow you to mask the processor capabilities to allow more flexibility, but you can't eliminate it.
Please note thatthis linkwill take you to external web sites. Intel is not responsible for content or availability of these sites.