Vector Parallelism in JavaScript: Language and Compiler Support for SIMD

Ivan Jibaja, Peter Jensen, Ningxin Hu, Mohammad R. Haghighat, John McCutchan, Dan Gohman, Stephen M. Blackburn, Kathryn S. McKinley

    Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

    11 Citations (Scopus)

    Abstract

    JavaScript is the most widely used web programming language and is increasingly used to implement sophisticated and demanding applications in such domains as graphics, games, video, and cryptography. The performance and energy usage of these applications can benefit from hardware parallelism, including SIMD (Single Instruction, Multiple Data) vector parallel instructions. JavaScript's current support for parallelism is, however, limited and does not directly utilize SIMD capabilities. This paper presents the design and implementation of SIMD language extensions and compiler support that together add fine-grain vector parallelism to JavaScript. The specification for this language extension is in final stages of adoption by the JavaScript standardization committee and our compiler support is available in two open-source production browsers. The design principles seek portability, SIMD performance portability on various SIMD architectures, and compiler simplicity to ease adoption. The design does not require automatic vectorization compiler technology, but does not preclude it either. The SIMD extensions define immutable fixed-length SIMD data types and operations that are common to both ARM and x86 ISAs. The contributions of this work include type speculation and optimizations that generate minimal numbers of SIMD native instructions from high-level JavaScript SIMD instructions. We implement type speculation, optimizations, and code generation in two open-source JavaScript VMs and measure performance improvements between a factor of 1.7× to 8.9× with an average of 3.3× and average energy improvements of 2.9× on micro benchmarks and key graphics kernels on various hardware, browsers, and operating systems. These portable SIMD language extensions significantly improve compute-intensive interactive applications in the browser, such as games and media processing, by exploiting vector parallelism without relying on automatic vectorizing compiler technology, non-portable native code, or plugins.

    Original languageEnglish
    Title of host publicationProceedings - 24th International Conference on Parallel Architecture and Compilation, PACT 2015
    PublisherInstitute of Electrical and Electronics Engineers Inc.
    Pages407-418
    Number of pages12
    ISBN (Electronic)9781467395243
    DOIs
    Publication statusPublished - 8 Mar 2016
    Event24th International Conference on Parallel Architecture and Compilation, PACT 2015 - San Francisco, United States
    Duration: 18 Oct 201521 Oct 2015

    Publication series

    NameParallel Architectures and Compilation Techniques - Conference Proceedings, PACT
    ISSN (Print)1089-795X

    Conference

    Conference24th International Conference on Parallel Architecture and Compilation, PACT 2015
    Country/TerritoryUnited States
    CitySan Francisco
    Period18/10/1521/10/15

    Fingerprint

    Dive into the research topics of 'Vector Parallelism in JavaScript: Language and Compiler Support for SIMD'. Together they form a unique fingerprint.

    Cite this