Windows Phone 8 SDK was released during the BUILD conference about 3 weeks ago, and an increasing number of developers are actively developing new apps for the new platform. This post focuses on the software and hardware requirements for running the Windows Phone 8 Emulator, and specifically the requirement for hardware Second-Level Address Translation (SLAT) support.
Hyper-V and SLAT
Hyper-V is Microsoft’s virtualization platforms which allows creating, managing and operating virtual machines on top of a host OS. Up until Windows 8, this platform was only available on Windows Server operating systems while the client OS was left with Microsoft Virtual PC. As of Windows 8 (Pro edition), Hyper-V is included as part of the client OS with one minor and important difference – it requires hardware Second-Level Address Translation (SLAT) support in order to operate (as opposed to the server OS version which still does not require it).
SLAT is a virtualization technology incorporated into Intel CPUs via the Extended Page Table (EPT) mechanism beginning from certain Core i7, i5, i3 and Xeon processors; and into AMD CPUs via the Rapid Virtualization Indexing (RVI) technology beginning with third generation Opteron processors.
Windows Phone 8 Emulator and Hyper-V
The Windows Phone 8 Emulator operates as a Hyper-V virtual machine on top of windows, and as a result requires Windows 8 Pro with at least 4 GB of RAM and a SLAT enabled CPU. Note that this rules out running the Windows Phone 8 Emulator on Core 2 Duo and Core 2 Quad processors (even the most advanced ones!). If you have a machine which does not support SLAT, you can still use the SDK to develop Windows Phone 8 apps, but you’ll only be able to test them on an actual device.
Does My Machine Support SLAT?
Checking if your machine supports SLAT is pretty easy:
- Download and extract Sysinternals’ “Coreinfo” utility.
- Run command prompt as an administrator.
- Navigate to the path where you placed Coreinfo and execute the command “coreinfo –v”.
- Your screen should look something like this:
If you have an asterisk (“*”) next to EPT (Intel) or NPT (AMD) then you are good to go. If you don’t have it (like in the example above) – you’re out of luck…
One More Thing – Data Execution Prevention
It is worth noting that Hyper-V also requires hardware Data Execution Prevention (DEP or NX) support. To check for its existence, just run “coreinfo” without any parameters and look for the “NX” line:
If it’s present – you’re all set.
Windows Phone 8 Emulator requires Windows 8 Pro Hyper-V to operate and, in turn, Hyper-V requires some hardware support which your CPU might not have. If this is your case (such as with all Core 2 Duo and Quad CPUs), then you have a choice of debugging with an actual device or upgrading your machine… Don’t you just love new hardware? 😉