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 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:
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
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