Intel has released a new version of the Intel SDE (Software Development Emulator) so that customers can start working with upcoming instruction set extensions like AVX-512 for Knights Landing. The SDE can be downloaded after accepting a user agreement and used on Windows, Linux, and OS. It can also be used with the GNU gcc.
The current version is 7.2 released on July 29, 2014. The Intel SDE release notes are here. This major release includes:
- Emulation support for the additional Intel® Advanced Vector Extensions 512 (Intel® AVX-512) instructions present on some future Intel® Xeon® processors scheduled to be introduced after Knights Landing.
- Emulation support for the Intel® Secure Hash Algorithm (Intel® SHA) extensions present on the Intel Goldmont microarchtiecture.
- Emulation support for the Intel® Memory Protection Extensions (Intel® MPX) present on the Intel Skylake microarchitecture and Intel Goldmont microarchitecture.
- Improved support for the OS X* operating system (Mountain Lion and Mavericks).
- A new analysis tool called the dynamic mask profiler can show how the the AVX-512 mask registers are being used.
- Intel® SSE4, AES and PCLMULQDQ and the Intel® AVX
- Intel® AVX2, RTM, BMI1 and BMI2 instructions being introduced on the Intel Haswell microarchitecture.
- The ADOX/ADCX instructions being introduced on the Intel Broadwell microarchitecture.
- Support for Hardware Lock Elision introduced on the Intel Haswell microarchitecture.
- Support for Restricted Transactional Memory introduced on the Intel Haswell microarchitecture.
Intel SDE is built upon the Pin dynamic binary instrumentation system and the XED encoder decoder. Pin controls the execution of an application. Pin examines each static instruction in the application approximately once, as it builds traces for execution. During this process, which is called instrumentation, for each instruction encountered Pin asks Intel SDE if this instruction should be emulated or not. If the instruction is to be emulated, then Intel SDE tells Pin to skip over that instruction and instead branch to the appropriate emulation routine. It also tells Pin how to invoke that emulation function, what arguments to pass, etc.
Intel SDE queries CPUID to figure out what features to emulate. It also modifies the output of CPUID so that compiled applications that check for the emulated features are told that those features exist.
Intel SDE comes with several useful emulator-enabled Pin tools and the XED disassembler:
- The basic emulator
- The mix histogramming tool: This Pin tool can compute histograms by any of: dynamic instructions executed, instruction length, instruction category, and ISA extension grouping. This tool can also display the top N most frequently executed basic blocks and disassemble them.
- The debugtrace ASCII tracing tool: This versatile tool is useful for observing the dynamic behavior of your code. It prints the instructions executed, and also the registers written, memory read and written, etc.
- The footprint tool: This simple tool counts how many unique 16 byte chunks of data were referenced during the execution of the program.
- The XED command line tool which can disassemble PECOFF or ELF binary executables.