Table of Contents
Fetching ...

Transcoding Unicode Characters with AVX-512 Instructions

Robert Clausecker, Daniel Lemire

TL;DR

This work uses a powerful set of instructions capable of processing 512‐bit registers with a single instruction (AVX‐512) to efficiently transcode strings between the most common formats: UTF‐8 and UTF‐16.

Abstract

Intel includes in its recent processors a powerful set of instructions capable of processing 512-bit registers with a single instruction (AVX-512). Some of these instructions have no equivalent in earlier instruction sets. We leverage these instructions to efficiently transcode strings between the most common formats: UTF-8 and UTF-16. With our novel algorithms, we are often twice as fast as the previous best solutions. For example, we transcode Chinese text from UTF-8 to UTF-16 at more than 5 GiB/s using fewer than 2 CPU instructions per character. To ensure reproducibility, we make our software freely available as an open source library. Our library is part of the popular Node.js JavaScript runtime.

Transcoding Unicode Characters with AVX-512 Instructions

TL;DR

This work uses a powerful set of instructions capable of processing 512‐bit registers with a single instruction (AVX‐512) to efficiently transcode strings between the most common formats: UTF‐8 and UTF‐16.

Abstract

Intel includes in its recent processors a powerful set of instructions capable of processing 512-bit registers with a single instruction (AVX-512). Some of these instructions have no equivalent in earlier instruction sets. We leverage these instructions to efficiently transcode strings between the most common formats: UTF-8 and UTF-16. With our novel algorithms, we are often twice as fast as the previous best solutions. For example, we transcode Chinese text from UTF-8 to UTF-16 at more than 5 GiB/s using fewer than 2 CPU instructions per character. To ensure reproducibility, we make our software freely available as an open source library. Our library is part of the popular Node.js JavaScript runtime.
Paper Structure