May 21, 2015 11:00 am

Intel’s contributions in Microsoft Edge: SIMD and other performance enhancements

Microsoft has a long history of collaborating with industry technology leaders to bring the world the best-in-class PC and device experiences.  These efforts  now also extend to enhancements in the web browsing experience as well.  Intel is a great example of a key technology partner who is investing and collaborating with Microsoft to advance the web.

Intel has been contributing to Chakra, the JavaScript engine for Microsoft Edge (and previously Internet Explorer), since 2012, bringing their expertise in web runtime development and JIT code generation. Recently, Intel expanded its efforts by contributing to the larger Microsoft Edge codebase, specifically focused in the areas of graphics and performance optimizations. Intel has been a major contributor to open source browser engines such as WebKit, Blink, and Gecko, and with our expanded collaboration, they are now directly contributing to the Microsoft Edge codebase to deliver an improved browsing experience for Windows 10.

Intel’s contributions in the latest Windows 10 Insider Preview

Over the last few years, Intel has been helping with the analysis of specific performance bottlenecks in the Chakra engine. Intel’s direct contributions to Chakra first landed back in the Windows 8.1 timeframe and are ongoing for Windows 10. Some examples of Intel’s direct contributions to Chakra’s JIT compiler include better instruction selection and scheduling. They’ve also helped us identify opportunities of missed redundant instruction elimination, and inline overhead reduction. All up, these changes have helped Chakra reduce code size and perform better for specific payloads.

As a part of broader collaboration between Intel and Microsoft on Windows 10,  Intel engineers are collaborating with us closely to implement Single Instruction Multiple Data (SIMD), a future ECMAScript proposal, in Chakra and Microsoft Edge. SIMD exploits data level parallelism by utilizing specific SIMD hardware instructions, which are supported in most of the modern chipsets regardless of the architecture types. The SIMD instruction set enables performing the same operation on multiple values simultaneously, thus providing much faster code execution when working on data vectors. For example, two data vectors of size four could be added via a single SIMD instruction as compared to four individual add operations. Apart from the performance benefits, getting more done with less instructions also has a positive impact on battery life.

Single Instruction Single Data: Four add operations to add the values in two vectors single instruction multiple data
Single Instruction Single Data:
Four add operations to add the values in two vectors
Single Instruction Multiple Data:
Single add operation to add values in two vectors

SIMD is extremely useful in scenarios like video processing, multimedia, gaming and others. Combined with technologies like asm.js, SIMD could turbocharge and help JavaScript content run at near native speeds. We recently announced SIMD as “In Development” at Microsoft Edge Platform Status, and as a next step, are now previewing SIMD in Chakra and Microsoft Edge for asm.js scenarios. To enable and experiment with SIMD support in Microsoft Edge, navigate to about:flags in Microsoft Edge and select the “Enable asm.js” flag as below:

Screenshot of about:flags interface to enable asm.js

Once the flag is toggled, SIMD will be enabled for code that uses asm.js. While the SIMD JavaScript APIs are available and can be used outside of asm.js scenarios, the performance benefits of SIMD currently accrue and are limited to scenarios that use asm.js running on x86 and x64 hardware. As the SIMD ECMAScript proposal advances and stabilizes, we plan to expand SIMD support in Chakra and Microsoft Edge across all scenarios and hardware.

To see the demo exposing the benefits that SIMD can provide:

  • Navigate to about:flags in Microsoft Edge
  • Toggle the “Enable asm.js” flag
  • Visit the SIMD Mandelbrot demo
  • Use Start, Stop, Use SIMD buttons to run the demo
SIMD Mandelbrot demo with SIMD disabled SIMD Mandelbrot demo with SIMD enabled

In addition to the partnership on Chakra, Intel has recently started contributing to performance improvements in the graphics, layout, and other subsystems of Microsoft Edge as well. As an example, Intel recently contributed an optimization to improve navigation (load) time for pages containing several inline elements, optimizations to reduce DOM parse times for text-area elements, and participated in investigations and root cause analysis to improve page load/response times for the Microsoft Edge browser on Windows 10. And this is only the beginning.

Congratulations to the Intel Team on their contributions to Microsoft Edge so far! We are looking forward to continue to work closely together to move the Web platform forward! Let us know what you think via @MSEdgeDev or in the comments below.

– Rob Hwacinski, Principal Program Manager Lead, Microsoft Edge
– Gaurav Seth, Principal Program Manager Lead, Chakra
– Juan Rodriguez, Senior Principal Engineer, Windows Operating Systems Division, Intel Corporation

Updated July 6, 2015 4:38 pm

Join the conversation

  1. This is great for the desktop, but on mobile, side by side usage of Edge and IE shows that Edge appears no faster than IE. And pages rendered are slow to be usable making it feel slower.

    Can you bring your optimization gurus to the ARM platform as benchmarks on WP are very slow compared to other mobile platforms and while the rest of WM10 feels fast, Edge currently doesn’t.

    Thanks for the good work though and glad to hear Intel is working to speed up the desktop.